Search results for ""The Pragmatic Programmers""
The Pragmatic Programmers Explore It!
Uncover surprises, risks, and potentially serious bugs with exploratory testing. Rather than designing all tests in advance, explorers design and execute small, rapid experiments, using what they learned from the last little experiment to inform the next. Learn essential skills of a master explorer, including how to analyze software to discover key points of vulnerability, how to design experiments on the fly, how to hone your observation skills, and how to focus your efforts. Software is full of surprises. No matter how careful or skilled you are, when you create software it can behave differently than you intended. Exploratory testing mitigates those risks. Part 1 introduces the core, essential skills of a master explorer. You'll learn to craft charters to guide your exploration, to observe what's really happening (hint: it's harder than it sounds), to identify interesting variations, and to determine what expected behavior should be when exercising software in unexpected ways. Part 2 builds on that foundation. You'll learn how to explore by varying interactions, sequences, data, timing, and configurations. Along the way you'll see how to incorporate analysis techniques like state modeling, data modeling, and defining context diagrams into your explorer's arsenal. Part 3 brings the techniques back into the context of a software project. You'll apply the skills and techniques in a variety of contexts and integrate exploration into the development cycle from the very beginning. You can apply the techniques in this book to any kind of software. Whether you work on embedded systems, Web applications, desktop applications, APIs, or something else, you'll find this book contains a wealth of concrete and practical advice about exploring your software to discover its capabilities, limitations, and risks.
£20.69
The Pragmatic Programmers Pomodoro Technique Illustrated: Can You Focus - Really Focus - for 25 Minutes?
You have so much you need to accomplish today. Your list is a mile long and you find yourself getting interrupted every other minute. You'd like to tell everyone to leave you alone, but most of the interruptions are coming from you! You think of a phone call you need to make or a web site you need to check and before you know it you're answering email, checking twitter, and finding a million other things to occupy your time. You need to focus - really focus. "The Pomodoro Technique" puts you back in charge of your day. You'll apply successful techniques from software engineering to identify what you should be doing today and to help you achieve your goals. Your mind won't wander when it is fully engaged in short bursts of focused activity. Learn to work less and accomplish more using nothing more than paper, pencil, and a simple kitchen timer. Set the timer and start on your next Pomodoro. When the bell rings take a break. This personal approach to timeboxing is at the core of the Pomodoro technique and this book is filled with advice on how get started and how to tailor it to your own needs.
£17.99
The Pragmatic Programmers Designing Data Governance from the Ground Up: Six Steps to Build a Data-Driven Culture
Businesses own more data than ever before, but it's of no value if you don't know how to use it. Data governance manages the people, processes, and strategy needed for deploying data projects to production. But doing it well is far from easy: Less than one fourth of business leaders say their organizations are data driven. In Designing Data Governance from the Ground Up, you'll build a cross-functional strategy to create roadmaps and stewardship for data-focused projects, embed data governance into your engineering practice, and put processes in place to monitor data after deployment. In the last decade, the amount of data people produced grew 3,000 percent. Most organizations lack the strategy to clean, collect, organize, and automate data for production-ready projects. Without effective data governance, most businesses will keep failing to gain value from the mountain of data that's available to them. There's a plethora of content intended to help DataOps and DevOps teams reach production, but 90 percent of projects trained with big data fail to reach production because they lack governance. This book shares six steps you can take to build a data governance strategy from scratch. You'll find a data framework, pull together a team of data stewards, build a data governance team, define your roadmap, weave data governance into your development process, and monitor your data in production Whether you're a chief data officer or individual contributor, this book will show you how to manage up, get the buy-in you need to build data governance, find the right colleagues to co-create data governance, and keep them engaged for the long haul.
£21.59
The Pragmatic Programmers Concurrent Data Processing in Elixir: Fast, Resilient Applications with OTP, GenStage, Flow, and Broadway
Learn different ways of writing concurrent code in Elixir and increase your application's performance, without sacrificing scalability or fault-tolerance. Most projects benefit from running background tasks and processing data concurrently, but the world of OTP and various libraries can be challenging. Which Supervisor and what strategy to use? What about GenServer? Maybe you need back-pressure, but is GenStage, Flow, or Broadway a better choice? You will learn everything you need to know to answer these questions, start building highly concurrent applications in no time, and write code that's not only fast, but also resilient to errors and easy to scale. Whether you are building a high-frequency stock trading application or a consumer web app, you need to know how to leverage concurrency to build applications that are fast and efficient. Elixir and the OTP offer a range of powerful tools, and this guide will show you how to choose the best tool for each job, and use it effectively to quickly start building highly concurrent applications. Learn about Tasks, supervision trees, and the different types of Supervisors available to you. Understand why processes and process linking are the building blocks of concurrency in Elixir. Get comfortable with the OTP and use the GenServer behaviour to maintain process state for long-running jobs. Easily scale the number of running processes using the Registry. Handle large volumes of data and traffic spikes with GenStage, using back-pressure to your advantage. Create your first multi-stage data processing pipeline using producer, consumer, and producer-consumer stages. Process large collections with Flow, using MapReduce and more in parallel. Thanks to Broadway, you will see how easy it is to integrate with popular message broker systems, or even existing GenStage producers. Start building the high-performance and fault-tolerant applications Elixir is famous for today. What You Need: You'll need Elixir 1.9+ and Erlang/OTP 22+ installed on a Mac OS X, Linux, or Windows machine.
£28.76
The Pragmatic Programmers From Objects to Functions: Build Your Software Faster and Safer with Functional Programming and Kotlin
Build applications quicker and with less effort using functional programming and Kotlin. Learn by building a complete application, from gathering requirements to delivering a microservice architecture following functional programming principles. Learn how to implement CQRS and EventSourcing in a functional way to map the domain into code better and to keep the cost of change low for the whole application life cycle. If you're curious about functional programming or you are struggling with how to put it into practice, this guide will help you increase your productivity composing small functions together instead of creating fat objects. Switching to the functional paradigm isn't easy when you're used to object-oriented programming. You need more than just lambdas and mapping over collections to get a declarative style and disentangle the state from the computations. Use transformations and compositions to help you write less code with better results. Boost your productivity and harness the power of functional programming by creating real-world applications rather than focusing on theoretical concepts. Work through a series of short exercises to find and compose pure functions, and create data structures that work like algebra. Get rid of mutable state in your software to eliminate the main source of bugs. Apply CQRS and EventSourcing patterns to translate stakeholder requirements into functional design and then into code. See how Kotlin's easy-to-learn syntax and functional-friendly approach make it a great option for a pragmatic language that integrates well with existing Java code and libraries. Leverage functional programming to build and deliver robust applications in less time and with fewer defects. What You Need: The code in this book is designed to allow you to build your application from scratch on Windows, Mac and Linux. You will need a recent IDE, we recommend IntelliJ Community Edition, and Kotlin 1.3.x or later.
£34.65
The Pragmatic Programmers Modern Vim
Turn Vim into a full-blown development environment using Vim 8's new features and this sequel to the beloved bestseller Practical Vim. Integrate your editor with tools for building, testing, linting, indexing, and searching your codebase. Discover the future of Vim with Neovim: a fork of Vim that includes a built-in terminal emulator that will transform your workflow. Whether you choose to switch to Neovim or stick with Vim 8, you'll be a better developer. A serious tool for programmers and web developers, no other text editor comes close to Vim for speed and efficiency. Make Vim the centerpiece of a Unix-based IDE as you discover new ways to work with Vim 8 and Neovim in more than 20 hands-on tips. Execute tasks asynchronously, allowing you to continue in Vim while linting, grepping, building a project, or running a test suite. Install plugins to be loaded on startup - or on-demand when you need them - with Vim 8's new package support. Save and restore sessions, enabling you to quit Vim and restart again while preserving your window layout and undo history. Use Neovim as a drop-in replacement for Vim - it supports all of the features Vim 8 offers and more, including an integrated terminal that lets you quickly perform interactive commands. And if you enjoy using tmux and Vim together, you'll love Neovim's terminal emulator, which lets you run an interactive shell in a buffer. The terminal buffers fit naturally with Vim's split windows, and you can use Normal mode commands to scroll, search, copy, and paste. On top of all that: Neovim's terminal buffers are scriptable. With Vim at the core of your development environment, you'll become a faster and more efficient developer. What You Need: You'll need a Unix-based environment and an up-to-date release of Vim (8.0 or newer). For the tips about running a terminal emulator, you'll need to install Neovim.
£28.79
The Pragmatic Programmers Mazes for Programmers
Unlock the secrets to creating random mazes! Whether you're a game developer, an algorithm connoisseur, or simply in search of a new puzzle, you're about to level up. Learn algorithms to randomly generate mazes in a variety of shapes, sizes, and dimensions. Bend them into Moebius strips, fold them into cubes, and wrap them around spheres. Stretch them into other dimensions, squeeze them into arbitrary outlines, and tile them in a dizzying variety of ways. From twelve little algorithms, you'll discover a vast reservoir of ideas and inspiration. From video games to movies, mazes are ubiquitous. Explore a dozen algorithms for generating these puzzles randomly, from Binary Tree to Eller's, each copiously illustrated and accompanied by working implementations in Ruby. You'll learn their pros and cons, and how to choose the right one for the job. You'll start by learning six maze algorithms and transition from making mazes on paper to writing programs that generate and draw them. You'll be introduced to Dijkstra's algorithm and see how it can help solve, analyze, and visualize mazes. Part 2 shows you how to constrain your mazes to different shapes and outlines, such as text, circles, hex and triangle grids, and more. You'll learn techniques for culling dead-ends, and for making your passages weave over and under each other. Part 3 looks at six more algorithms, taking it all to the next level. You'll learn how to build your mazes in multiple dimensions, and even on curved surfaces. Through it all, you'll discover yourself brimming with ideas, the best medicine for programmer's block, burn-out, and the grayest of days. By the time you're done, you'll be energized and full of maze-related possibilities! What You Need: The example code requires version 2 of the Ruby programming language. Some examples depend on the ChunkyPNG library to generate PNG images, and one chapter uses POV-Ray version 3.7 to render 3D graphics
£27.45
The Pragmatic Programmers CoffeeScript, 2e
Over the last five years, CoffeeScript has taken the web development world by storm. With the humble motto It's just JavaScript, CoffeeScript provides all the power of the JavaScript language in a friendly and elegant package. This extensively revised and updated new edition includes an all-new project to demonstrate CoffeeScript in action, both in the browser and on a Node.js server. There's no faster way to learn to write a modern web application.This new edition has been extensively revised and updated to reflect the current state and features of CoffeeScript. Every chapter has been revised and refactored, and new sections and a new chapter on testing have been added. If you already know JavaScript, this book will make your transition to CoffeeScript easy. If you're new to JavaScript, it's a great place to start.New in this edition: Automating setup with the Grunt task runner Using CoffeeScript classes with the Backbone framework Using CoffeeScript's simple callback syntax to interact with the Express framework A new chapter on client-side and server-side testing with Intern* A new project that gives you hands-on experience with browser-side and server-side CoffeeScriptCoffeeScript is every bit as portable and effective as JavaScript. It aids development by adding a bevy of features, such as classes, splats, list comprehensions, and destructuring. These features make it easier to write clear, readable code, and by learning how these features work, you'll deepen your understand of JavaScript as well. This book is your complete guide to writing better JavaScript code, faster.
£20.69
The Pragmatic Programmers Dart 1 for Everyone
Psst! You're not stuck with JavaScript anymore. Google's Dart language makes programming for the Web simpler, faster, and more powerful. With version 1.0 in 2013 and an ECMA standard in 2014, Dart is ready to radically change web development for the better. And Dart 1 for Everyone has got you covered. Completely updated for Dart 1 and the ECMA standard, with new sections on new Dart features like method cascades, event streams, and class constructor syntax, this book wastes no time in immersing you in the finer points of this powerful and surprisingly beautiful language.Dart has changed significantly since the first printing of this book and Dart 1 for Everyone has kept up. Every chapter has been revised and some chapters have been almost completely rewritten since the first printing. The MVC project chapters dumped the old JavaScript-like event handlers for the sleek new streams interface, and the chapter on testing reflects the extensive changes in testing now available in Dart.Brand-new sections explore some of Dart's beautiful new features, such as: Method cascades: Improve code readability dramatically. Event streams: Simplified event handling, consistent with virtually every other asynchronous interaction in Dart. Library parts: Yet another way Dart promotes code organization. New class constructor syntax: Dart supports a nice variety of surprisingly expressive and concise ways to declare constructors.* Building your own packages: Quickly share your work with the world.You'll start writing Dart code on page 1, and throughout the book, you'll refactor that code to explore Dart's features: OOP, real libraries and packages, testing, and more. You'll learn how to write beautiful, maintainable application code that just works in all modern browsers. Caution: after reading you may develop an intense attachment to structured code and skinny jeans.What You Need: You will need the Dart SDK, which is freely available from https: //dartlang.org. Most of the book works with Dartium, a preview release of Chrome that is included in the SDK and has the Dart VM built-in. Some of the examples use either the dart2js tool or the Dart Editor to compile Dart down into JavaScript - both are part of the SDK.
£17.09
The Pragmatic Programmers Remote Pairing
You've heard about pair programming's benefits: fewer bugs, improved skills, and faster delivery. But what happens when you want to pair with someone in another city, country, or even hemisphere? With the right tools, you won't have to relocate to refactor. In this book, you'll learn techniques used by the most productive remote programmers in the industry to pair with anyone on the globe on any kind of project. You'll use collaborative editors, screen sharing, secure networking, and virtualization to create a remote pairing environment that feels as if your partner is sitting right next to you. Two heads are better than one, but only if they're working on the same problem. When pairing remotely, this requires a specialized environment that you'll learn how to create. We'll use the same open-source tools as the pros to improve collaboration and increase productivity. You'll learn techniques, patterns, and best practices you can apply to projects of all kinds. These tools are so effective that many co-located programmers use them despite sitting side-by-side--you don't have to work outside of an office for this book to improve your programming techniques. We'll start by creating a secure collaborative editing environment capable of handling the low-bandwidth networks at some coffee shops. Then we'll share your screen using free open source tools and protocols. We'll deploy all of this to a server in the cloud so you can access your development environment from anywhere. Then we'll use one of the most advanced integrated development environments to collaborate, sketch on a virtual whiteboard, and resolve conflicts. Finally, we'll talk with programmers at Pivotal Labs, Big Nerd Ranch, and other top-notch distributed development firms to learn how they handle the challenges of remote pairing on a daily basis. With their help and advice, you can be productive from any location on the planet. What You Need: Many of the examples in this book require an internet connection. You'll only need one computer for most of the exercises, and you can run them by yourself. But having a second computer and even a second person may improve the experience.
£13.50
The Pragmatic Programmers Practical Programming: An Introduction to Computer Science Using Python 3
This book is for anyone who wants to understand computer programming. You'll learn to program in a language that' s used in millions of smartphones, tablets, and PCs. You'll code along with the book, writing programs to solve real-world problems as you learn the fundamentals of programming using Python 3. You'll learn about design, algorithms, testing, and debugging, and come away with all the tools you need to produce quality code. In this second edition, we've updated almost all the material, incorporating the lessons we've learned over the past five years of teaching Python to people new to programming. You don't need any programming experience to get started. First, you'll get a detailed introduction to Python and to programming. You'll find out exactly what happens when your programs are executed. Through real-world examples, you'll learn how to work with numbers, text, big data sets, and files. Then you'll see how to create and use your own data types. The incremental examples show you the steps and missteps that happen while developing programs, so you know what to expect when you tackle a problem on your own. Inspired by "How to Design Programs" (HtDP), you'll learn a six-step recipe for designing functions, which helps you as you start to learn the concepts--and becomes an integral part of writing programs by the end. As you learn to use the fundamental programming tools in the first half of the book, you'll see how to document and organize your code so that you and other programmers can more easily read and understand it. Beyond the basics, you'll learn how to ensure that your programs are reliable, and how to work with databases, download data from the web automatically, and build user interfaces. Most importantly, you'll learn how to think like a professional programmer. You'll need to download Python 3, available from "python.org":https://python.org. With that download comes IDLE, the editor we use for writing and running Python programs. (If you use Linux, you may need to install Python 3 and IDLE separately.)
£27.45
The Pragmatic Programmers Async JavaScript
With the advent of HTML5, front-end MVC, and Node.js, JavaScript is ubiquitous--and still messy. This book will give you a solid foundation for managing async tasks without losing your sanity in a tangle of callbacks. It's a fast-paced guide to the most essential techniques for dealing with async behavior, including PubSub, evented models, and Promises. With these tricks up your sleeve, you'll be better prepared to manage the complexity of large web apps and deliver responsive code. With Async JavaScript, you'll develop a deeper understanding of the JavaScript language. You'll start with a ground-up primer on the JavaScript event model--key to avoiding many of the most common mistakes JavaScripters make. From there you'll see tools and design patterns for turning that conceptual understanding into practical code. The concepts in the book are illustrated with runnable examples drawn from both the browser and the Node.js server framework, incorporating complementary libraries including jQuery, Backbone.js, and Async.js. You'll learn how to create dynamic web pages and highly concurrent servers by mastering the art of distributing events to where they need to be handled, rather than nesting callbacks within callbacks within callbacks. Async JavaScript will get you up and running with real web development quickly. By the time you've finished the Promises chapter, you'll be parallelizing Ajax requests or running animations in sequence. By the end of the book, you'll even know how to leverage Web Workers and AMD for JavaScript applications with cutting-edge performance. Most importantly, you'll have the knowledge you need to write async code with confidence. What You Need: Basic knowledge of JavaScript is recommended. If you feel that you're not up to speed, see the "Resources for Learning JavaScript" section in the preface.
£13.50
The Pragmatic Programmers Pragmatic Guide to Git
Get up to speed on Git right now with Pragmatic Guide to Git. Task-oriented two-page spreads get you up and running with minimal fuss. Each left-hand page dives into the underlying implementation for each task. The right-hand page contains commands that focus on the task at hand, and cross references to other tasks that are related. You'll find what you need fast. Git is rapidly becoming the de-facto standard for the open source community. Its excellent merging capabilities, coupled with its speed and relative ease of use, make it an indispensable tool for any developer. New Git users will learn the basic tasks needed to work with Git every day, including working with remote repositories, dealing with branches and tags, exploring the history, and fixing problems when things go wrong. If you're already familiar with Git, this book will be your go-to reference for Git commands and best practices. You won't find a more practical approach to learning Git than Pragmatic Guide to Git.
£17.99
The Pragmatic Programmers Modern Front-End Development for Rails, Second Edition: Hotwire, Stimulus, Turbo, and React
Improve the user experience for your Rails app with rich, engaging client-side interactions. Learn to use the Rails 7 tools and simplify the complex JavaScript ecosystem. It's easier than ever to build user interactions with Hotwire, Turbo, and Stimulus. You can add great front-end flair without much extra complication. Use React to build a more complex set of client-side features. Structure your code for different levels of client-side needs with these powerful options. Add to your toolkit today! It's hard to have a Rails application without integrating some client-side logic. But client-side coding tools, and the Rails tools for integrating with them, all change continuously. Rails 7 simplifies client-side integration with the Hotwire gem. It's a great way to build client interaction with server-side HTML and a small amount of JavaScript. In the latest edition of this book, learn how to use Rails 7 and its front-end bundling tools to build rich front-end logic into your Rails applications. The job is even easier with Stimulus, a library that brings Rails conventions to JavaScript tools. And you can also add in React, a larger framework that automatically updates the browser when your data changes. Learn the basics of Turbo, Stimulus, and TypeScript, and add pizazz to your application. Structure your web application to best manage your state. Learn how to interact with data on the server while still keeping the user experience interactive. Use the type system in TypeScript to expand on JavaScript and help prevent error conditions. Debug and test your front-end application with tools specific to each framework. There are a lot of ways to do client-side coding, and Rails is here to help. What You Need: This book requires Ruby on Rails 7.0 or later, React 17.0.0 or later. Other dependencies will be added by Rails.
£40.49
The Pragmatic Programmers Help Your Boss Help You: Convert Conflict Into Opportunities
Develop more productive habits in dealing with your manager. As a professional in the business world, you care about doing your job the right way. The quality of your work matters to you, both as a professional and as a person. The company you work for cares about making money and your boss is evaluated on that basis. Sometimes those goals overlap, but the different priorities mean conflict is inevitable. Take concrete steps to build a relationship with your manager that helps both sides succeed. Guide your manager to treat you as a vital member of the team who should be kept as happy and productive as possible. When your manager insists on a course of action you don't like, most employees feel they have only two options: you can swallow your objections, or you can leave. Neither option gets you what you want, which is for your manager to consider your interests when making decisions. Challenging your boss directly is risky, but if you understand what really matters to your manager, you can build a balanced relationship that works for both sides. Provide timely "good enough" answers that satisfy the immediate need of the boss to move forward. Use a productive solution to the Iterated Prisoner's Dilemma to structure your interactions with management, going along when necessary and pushing back where appropriate, without threatening the loyalty relationship. Send the two most important messages to your boss: "I got this" and "I got your back," to prove your value to the boss and the organization. Analyze your manager's communication preferences so you can express your arguments in a way most likely to be heard and understood. Avoid key traps, like thinking of the boss as your friend or violating the chain of command unnecessarily.
£19.35
The Pragmatic Programmers Hands-on Rust: Effective Learning through 2D Game Development and Play
Rust is an exciting new programming language combining the power of C with memory safety, fearless concurrency, and productivity boosters - and what better way to learn than by making games. Each chapter in this book presents hands-on, practical projects ranging from "Hello, World" to building a full dungeon crawler game. With this book, you'll learn game development skills applicable to other engines, including Unity and Unreal. Rust is an exciting programming language combining the power of C with memory safety, fearless concurrency, and productivity boosters. With Rust, you have a shiny new playground where your game ideas can flourish. Each chapter in this book presents hands-on, practical projects that take you on a journey from "Hello, World" to building a full dungeon crawler game. Start by setting up Rust and getting comfortable with your development environment. Learn the language basics with practical examples as you make your own version of Flappy Bird. Discover what it takes to randomly generate dungeons and populate them with monsters as you build a complete dungeon crawl game. Run game systems concurrently for high-performance and fast game-play, while retaining the ability to debug your program. Unleash your creativity with magical items, tougher monsters, and intricate dungeon design. Add layered graphics and polish your game with style. What You Need: A computer running Windows 10, Linux, or Mac OS X. A text editor, such as Visual Studio Code. A video card and drivers capable of running OpenGL 3.2.
£34.65
The Pragmatic Programmers Kotlin and Android Develoment featuring Jetpack: Build Better, Safer Android Apps
Start building native Android apps the modern way in Kotlin with Jetpack's expansive set of tools, libraries, and best practices. Learn how to create efficient, resilient views with Fragments and share data between the views with ViewModels. Use Room to persist valuable data quickly, and avoid NullPointerExceptions and Java's verbose expressions with Kotlin. You can even handle asynchronous web service calls elegantly with Kotlin coroutines. Achieve all of this and much more while building two full-featured apps, following detailed, step-by-step instructions. With Kotlin and Jetpack, Android development is now smoother and more enjoyable than ever before. Dive right in by developing two complete Android apps. With the first app, Penny Drop, you create a full game complete with random die rolls, customizable rules, and AI opponents. Build lightweight Fragment views with data binding, quickly and safely update data with ViewModel classes, and handle all app navigation in a single location. Use Kotlin with Android-specific Kotlin extensions to efficiently write null-safe code without all the normal boilerplate required for pre-Jetpack + Kotlin apps. Persist and retrieve data as full objects with the Room library, then display that data with ViewModels and list records in a RecyclerView. Next, you create the official app for the Android Baseball League. It's a fake league but a real app, where you use what you learn in Penny Drop and build up from there. Navigate all over the app via a Navigation Drawer, including specific locations via Android App Links. Handle asynchronous and web service calls with Kotlin Coroutines, display that data smoothly with the Paging library, and send notifications to a user's phone from your app. Come build Android apps the modern way with Kotlin and Jetpack! What You Need: You'll need the Android SDK, a text editor, and either a real Android device or emulator for testing. While not strictly required, it's assumed you're using Android Studio, which comes with the Android SDK and simplifies creating an emulator. Also, a few examples require JDK 1.8 or later, though all of these pieces can be completed in other ways when using JDK 1.6.
£35.99
The Pragmatic Programmers Genetic Algorithms in Elixir
From finance to artificial intelligence, genetic algorithms are a powerful tool with a wide array of applications. But you don't need an exotic new language or framework to get started; you can learn about genetic algorithms in a language you're already familiar with. Join us for an in-depth look at the algorithms, techniques, and methods that go into writing a genetic algorithm. From introductory problems to real-world applications, you'll learn the underlying principles of problem solving using genetic algorithms. Evolutionary algorithms are a unique and often overlooked subset of machine learning and artificial intelligence. Because of this, most of the available resources are outdated or too academic in nature, and none of them are made with Elixir programmers in mind. Start from the ground up with genetic algorithms in a language you are familiar with. Discover the power of genetic algorithms through simple solutions to challenging problems. Use Elixir features to write genetic algorithms that are concise and idiomatic. Learn the complete life cycle of solving a problem using genetic algorithms. Understand the different techniques and fine-tuning required to solve a wide array of problems. Plan, test, analyze, and visualize your genetic algorithms with real-world applications. Open your eyes to a unique and powerful field - without having to learn a new language or framework. What You Need: You'll need a macOS, Windows, or Linux distribution with an up-to-date Elixir installation.
£28.79
The Pragmatic Programmers Web Development with Clojure: Build Large, Maintainable Web Applications Interactively
Today, developers are increasingly adopting Clojure as a web-development platform. See for yourself what makes Clojure so desirable, as you create a series of web apps of growing complexity, exploring the full process of web development using a modern functional language. This fully updated third edition reveals the changes in the rapidly evolving Clojure ecosystem and provides a practical, complete walkthrough of the Clojure web-stack. Stop developing web apps with yesterday's tools. Today, developers are increasingly adopting Clojure as a web-development platform. See for yourself what makes Clojure so desirable, as you work hands-on with Clojure and build a series of web apps of increasing size and scope, culminating in a professional grade web app using all the techniques you've learned along the way. This fully updated third edition will get you up to speed on the changes in the rapidly evolving Clojure ecosystem - the many new libraries, tools, and best practices. Build a fully featured SPA app with re-frame, a popular front-end framework for ClojureScript supporting a functional style MVC approach for managing the UI state in Single-Page Application-style applications. Gain expertise in the popular Ring/Compojure stack using the Luminus framework. Learn how Clojure works with databases and speeds development of RESTful services. See why ClojureScript is rapidly becoming a popular front-end platform, and use ClojureScript with the popular re-frame library to build single-page applications. Whether you're already familiar with Clojure or completely new to the language, you'll be able to write web applications with Clojure at a professional level.
£34.65
The Pragmatic Programmers Creating Great Teams
People are happiest and most productive if they can choose what they work on and who they work with. Self-selecting teams give people that choice. Build well-designed and efficient teams to get the most out of your organization, with step-by-step instructions on how to set up teams quickly and efficiently. You'll create a process that works for you, whether you need to form teams from scratch, improve the design of existing teams, or are on the verge of a big team re-shuffle. Discover how New Zealand's biggest e-commerce company completely restructured their business through Self-Selection. In the process, find out how to create high-performing groups by letting people self-organize into small, cross-functional teams. Step-by-step guides, easy-to-follow diagrams, practical examples, checklists, and tools will enable you to run a Self-Selection process within your organization.If you're a manager who wants to structure your organization into small teams, you'll discover why Self-Selection is the fastest and safest way to do so. You'll prepare for and organize a Self-Selection event and make sure your Self-Selection participants and fellow managers are on board and ready.If you're a team member, you'll discover what it feels like to be part of a Self-Selection process and what the consequences are for your daily work. You'll learn how to influence your colleagues and bosses to be open to the idea of Self-Selection. You'll provide your manager with a plan for how to facilitate a Self-Selection event, and with evidence that the system works.If you're feeling the pain and chaos of adding new people to your organization, or just want to ensure that your teams have the right people with the right skills, Self-Selection will help you create the effective teams you need.
£13.50
The Pragmatic Programmers Functional Web Development with Elixir, OTP and Phoenix
Elixir and Phoenix are generating tremendous excitement as an unbeatable platform for building modern web applications. Make the most of them as you build a stateful web app with Elixir and OTP. Model domain entities without an ORM or a database. Manage server state and keep your code clean with OTP Behaviours. Layer on a Phoenix web interface without coupling it to the business logic. Open doors to powerful new techniques that will get you thinking about web development in fundamentally new ways. Elixir and OTP give us exceptional tools to build stateful back-end applications that really scale, with rock-solid reliability. In this book, you'll build a web application in ways that are radically different from the norm. The back end will be stateful, not stateless. Use persistent connections with Phoenix Channels instead of HTTP's request-response, and create the full application in distinct, decoupled layers. In Part 1, start by building the business logic as a separate application, without Phoenix. Model the application domain with Elixir Agents and simple data structures. By keeping state in memory instead of a database, you can reduce latency and simplify your code. Then add OTP Behaviours such as gen_server and gen_fsm that make managing in-memory state a breeze. Create a supervision tree to boost fault tolerance while separating error handling from business logic. Phoenix is a modern web framework you can layer on top of business logic while keeping the two completely decoupled. In Part 2, you'll do exactly that as you build a web interface with Phoenix. Bring in the application from Part 1 as a dependency to a new Phoenix project. Then use ultra-scalable Phoenix Channels to establish persistent connections between the stateful server and a stateful front-end client. You're going to love this way of building web apps! What You Need: You'll need a computer that can run Elixir version 1.3 or higher and Phoenix 1.2 or higher. Some familiarity with Elixir and Phoenix is recommended.
£33.29
The Pragmatic Programmers Programming Erlang 2ed
A multi-user game, web site, cloud application, or networked database can have thousands of users all interacting at the same time. You need a powerful, industrial-strength tool to handle the really hard problems inherent in parallel, concurrent environments. You need Erlang. In this second edition of the bestselling Programming Erlang, you'll learn how to write parallel programs that scale effortlessly on multicore systems. Using Erlang, you'll be surprised at how easy it becomes to deal with parallel problems, and how much faster and more efficiently your programs run. That's because Erlang uses sets of parallel processes-not a single sequential process, as found in most programming languages. Joe Armstrong, creator of Erlang, introduces this powerful language in small steps, giving you a complete overview of Erlang and how to use it in common scenarios. You'll start with sequential programming, move to parallel programming and handling errors in parallel programs, and learn to work confidently with distributed programming and the standard Erlang/Open Telecom Platform (OTP) frameworks. You need no previous knowledge of functional or parallel programming. The chapters are packed with hands-on, real-world tutorial examples and insider tips and advice, and finish with exercises for both beginning and advanced users. The second edition has been extensively rewritten. New to this edition are seven chapters covering the latest Erlang features: maps, the type system and the Dialyzer, WebSockets, programming idioms, and a new stand-alone execution environment. You'll write programs that dynamically detect and correct errors, and that can be upgraded without stopping the system. There's also coverage of rebar (the de facto Erlang build system), and information on how to share and use Erlang projects on github, illustrated with examples from cowboy and bitcask. Erlang will change your view of the world, and of how you program.
£30.15
The Pragmatic Programmers Language Implementation Patterns
Knowing how to create domain-specific languages (DSLs) can give you a huge productivity boost. Instead of writing code in a general-purpose programming language, you can first build a custom language tailored to make you efficient in a particular domain. The key is understanding the common patterns found across language implementations. "Language Design Patterns" identifies and condenses the most common design patterns, providing sample implementations of each. The pattern implementations use Java, but the patterns themselves are completely general. Some of the implementations use the well-known ANTLR parser generator, so readers will find this book an excellent source of ANTLR examples as well. But this book will benefit anyone interested in implementing languages, regardless of their tool of choice. Other language implementation books focus on compilers, which you rarely need in your daily life. Instead, "Language Design Patterns" shows you patterns you can use for all kinds of language applications. You'll learn to create configuration file readers, data readers, model-driven code generators, source-to-source translators, source analyzers, and interpreters. Each chapter groups related design patterns and, in each pattern, you'll get hands-on experience by building a complete sample implementation. By the time you finish the book, you'll know how to solve most common language implementation problems.
£25.19
The Pragmatic Programmers Test Driven Development in C: Building Hihg Quality Embedded Software
Did you write C code last week? Does your code work? Is your design clean? If you answered yes to the first question but got queasy over the second two, you need to know about Test Driven Development. TDD helps you write code that works the first time, and then helps you keep it running as the code evolves to meet new needs. In Test Driven Development for Embedded C, author James W. Grenning shows embedded software developers how to bring the benefits of TDD to embedded C. In the book, you'll see how to apply TDD to C and the world of embedded software development. Learn how to break key dependencies, allowing code to be tested thoroughly. Explore how to test-drive your product's core logic, exploiting the power of your development environment to deliver better software. In fact, as the book shows, you can test-drive a device driver before you even have the device soldered into a circuit board. Avoid the natural delays when testing on the target by using the tailored TDD Microcycle, employing off-target tests and dual-targeted code. Learn how to make code testable and more flexible, better able to handle the inevitable changes demanded by the market. The tests drive development and then serve as an executable specification, keeping track of the critical details and assumptions baked into the code. In Test Driven Development for Embedded C, you'll find that TDD is a different way to program-unit tests are written in a tight feedback loop with the production code, producing testable code and greatly reducing wasteful debugging. TDD also influences design. When tests are considered part of design, you create modular and loosely coupled code, the hallmarks of a good design. With Test Driven Development for Embedded C, C developers-even embedded C developers-can finally write cleaner, testable code with TDD.
£25.19
The Pragmatic Programmers Modern CSS with Tailwind, 2e
This new edition of the book covers Tailwind 3.0, which changes the way Tailwind generates its CSS. Tailwind 3.0 has a large number of new features powered by the new system, including the ability to use arbitrary values with most Tailwind class patterns, and a new syntax for combining color and opacity in a single class. This book also covers the new standalone command-line tools for Tailwind. With CSS, you can do amazing things to the basic text and images on your website, and with just a little bit of client-side code to add and remove CSS classes, you can do exponentially more. In the latest edition of this book, you'll learn how to use Tailwind 3.0 and the new way it generates CSS. You'll code your way through Tailwind's newest features, including the ability to use arbitrary values with most Tailwind class patterns and a new syntax for combining color and opacity in a single class. You'll even dive into the new standalone command-line tools for Tailwind. The Tailwind setup is extremely explicit and makes it possible to understand the display just by looking at the HTML markup. Start by designing the typographic details of the individual elements, then placing and manipulating those elements in the box using a flexbox or grid design. Finally, move those elements around the page with helpful small animations and transitions. With Tailwind, it's easy to prototype, iterate, and customize your display, use prefixes to specify behavior, change defaults, add new behavior, and integrate with legacy CSS. Use Tailwind to make extraordinary web designs without extraordinary effort. What You Need: This book is about Tailwind 3.0. You should have a basic knowledge of CSS and HTML.
£21.59
The Pragmatic Programmers Go Brain Teasers: Exercise Your Mind
This book contains 25 short programs that will challenge your understanding of Go. Like any big project, the Go developers had to make some design decisions that at times seem surprising. This book uses those quirks as a teaching opportunity. By understanding the gaps in your knowledge, you'll become better at what you do. Some of the teasers are from the author's experience shipping bugs to production, and some from others doing the same. Teasers and puzzles are fun, and learning how to solve them can teach you to avoid programming mistakes and maybe even impress your colleagues and future employers. Programmers love the Go (golang) programming language because of its efficiency and simple tooling. But that doesn't mean programming in Go is without challenges, like hidden dependencies that trip up the compiler and interesting string type conversions that differ from languages like Python. Work your way through 25 short brain teasers, and learn the nuances of Go in one of the most fun and creative ways around. Challenge yourself and challenge your assumptions to gain a more in-depth understanding of integers, strings, Unicode, compiler behavior, and a variety of subtle programming gotchas that might otherwise trip you up. Just read a short program written in Go, try to guess the output, run the code yourself, and then go to the next page for an explanation of the solution. By working through these brain teasers, you'll tighten up your Go programming skills and have lots of fun at the same time. Taken from real-world, programming problems, conference talks, and meetup quizzes, these brain teasers provide an effective learning tool that's as enjoyable as it is educational. What You Need: This book assumes you know Go at some level and have experience programming with it. *NOTE:* We use Go version 1.14.1 to run the code; the output might change in future versions. You will need a working Go environment, you can download it from https://golang.org/dl. You will probably want a good IDE for Go, two of the most popular ones are Visual Studio Code and GoLand.
£13.49
The Pragmatic Programmers Essential 555 IC: Design, Configure, and Create Clever Circuits
Learn how to create functional gadgets using simple but clever circuits based on the venerable "555." These projects will give you hands-on experience with useful, basic circuits that will aid you across other projects. These inspiring designs might even lead you to develop the next big thing. The 555 Timer Oscillator Integrated Circuit chip is one of the most popular chips in the world. Through clever projects, you will gain permanent knowledge of how to use the 555 timer will carry with you for life. With this book you'll build a series of unique and useful projects. Each one gets more and more complicated, and you'll learn more as you go along. Start off with a basic 555 timer IC design concept to build a simple project. Learn how to create a simple form of digital memory that can store data, the basis of every computer system ever created. Build a collection of lighting effect circuits that will flash and animate LEDs in different ways. Use a simple configuration of the 555 timer IC to create a complex traffic light system. You'll even create sound with an audio synthesizer! No programming is needed to make startlingly functional electronic devices. Get started today building the next big thing. Or even the next small thing. But build some thing! What You Need: The only physical things people need are the parts to build the projects, which are labeled out with part numbers in the beginning of each project. Otherwise, only an hour here or there is needed to build these projects. Only some familiarity with electrical components is necessary in regards to purchasing for each project.
£14.39
The Pragmatic Programmers Distributed Services with Go: Your Guide to Reliable, Scalable, and Maintainable Systems
This is the book for Gophers who want to learn how to build distributed systems. You know the basics of Go and are eager to put your knowledge to work. Build distributed services that are highly available, resilient, and scalable. This book is just what you need to apply Go to real-world situations. Level up your engineering skills today. Take your Go skills to the next level by learning how to design, develop, and deploy a distributed service. Start from the bare essentials of storage handling, then work your way through networking a client and server, and finally to distributing server instances, deployment, and testing. All this will make coding in your day job or side projects easier, faster, and more fun. Create your own distributed services and contribute to open source projects. Build networked, secure clients and servers with gRPC. Gain insights into your systems and debug issues with observable services instrumented with metrics, logs, and traces. Operate your own Certificate Authority to authenticate internal web services with TLS. Automatically handle when nodes are added or removed to your cluster with service discovery. Coordinate distributed systems with replicated state machines powered by the Raft consensus algorithm. Lay out your applications and libraries to be modular and easy to maintain. Write CLIs to configure and run your applications. Run your distributed system locally and deploy to the cloud with Kubernetes. Test and benchmark your applications to ensure they're correct and fast. Dive into writing Go and join the hundreds of thousands who are using it to build software for the real world. What You Need: Go 1.13+ and Kubernetes 1.16+
£33.29
The Pragmatic Programmers Become an Effective Software Engineering Manager: How to Be the Leader Your Development Team Needs
Software startups make global headlines every day. As technology companies succeed and grow, so do their engineering departments. In your career, you'll may suddenly get the opportunity to lead teams: to become a manager. But this is often uncharted territory. How can you decide whether this career move is right for you? And if you do, what do you need to learn to succeed? Where do you start? How do you know that you're doing it right? What does "it" even mean? And isn't management a dirty word? This book will share the secrets you need to know to manage engineers successfully. Going from engineer to manager doesn't have to be intimidating. Engineers can be managers, and fantastic ones at that. Cast aside the rhetoric and focus on practical, hands-on techniques and tools. You'll become an effective and supportive team leader that your staff will look up to. Start with your transition to being a manager and see how that compares to being an engineer. Learn how to better organize information, feel productive, and delegate, but not micromanage. Discover how to manage your own boss, hire and fire, do performance and salary reviews, and build a great team. You'll also learn the psychology: how to ship while keeping staff happy, coach and mentor, deal with deadline pressure, handle sensitive information, and navigate workplace politics. Consider your whole department. How can you work with other teams to ensure best practice? How do you help form guilds and committees and communicate effectively? How can you create career tracks for individual contributors and managers? How can you support flexible and remote working? How can you improve diversity in the industry through your own actions? This book will show you how. Great managers can make the world a better place. Join us.
£33.29
The Pragmatic Programmers iOS Unit Testing by Example: XCTest Tips and Techniques Using Swift
Fearlessly change the design of your iOS code with solid unit tests. Use Xcode's built-in test framework XCTest and Swift to get rapid feedback on all your code - including legacy code. Learn the tricks and techniques of testing all iOS code, especially view controllers (UIViewControllers), which are critical to iOS apps. Learn to isolate and replace dependencies in legacy code written without tests. Practice safe refactoring that makes these tests possible, and watch all your changes get verified quickly and automatically. Make even the boldest code changes with complete confidence. Manual code and UI testing get slower the deeper your navigation hierarchy goes. It can take several taps just to reach a particular screen, never mind the actual workflow tests. Automatic unit testing offers such rapid feedback that it can change the rules of development. Bring testing to iOS development, even for legacy code. Use XCTest to write unit tests in Swift for all your code. iOS developers typically reserve unit tests for their model classes alone. But that approach skips most of the code common to iOS apps, especially with UIViewControllers. Learn how to unit test these view controllers to expand your unit testing possibilities. Since good unit tests form the bedrock for safe refactoring, you're empowered to make bold changes. Learn how to avoid the most common mistakes Swift programmers make with the XCTest framework. Use code coverage to find holes in your test suites. Learn how to identify hard dependencies. Reshape the design of your code quickly, with less risk and less fear.
£34.65
The Pragmatic Programmers Complex Network Analysis in Python
Construct, analyze, and visualize networks with networkx, a Python language module. Network analysis is a powerful tool you can apply to a multitude of datasets and situations. Discover how to work with all kinds of networks, including social, product, temporal, spatial, and semantic networks. Convert almost any real-world data into a complex network--such as recommendations on co-using cosmetic products, muddy hedge fund connections, and online friendships. Analyze and visualize the network, and make business decisions based on your analysis. If you're a curious Python programmer, a data scientist, or a CNA specialist interested in mechanizing mundane tasks, you'll increase your productivity exponentially. Complex network analysis used to be done by hand or with non-programmable network analysis tools, but not anymore! You can now automate and program these tasks in Python. Complex networks are collections of connected items, words, concepts, or people. By exploring their structure and individual elements, we can learn about their meaning, evolution, and resilience. Starting with simple networks, convert real-life and synthetic network graphs into networkx data structures. Look at more sophisticated networks and learn more powerful machinery to handle centrality calculation, blockmodeling, and clique and community detection. Get familiar with presentation-quality network visualization tools, both programmable and interactive--such as Gephi, a CNA explorer. Adapt the patterns from the case studies to your problems. Explore big networks with NetworKit, a high-performance networkx substitute. Each part in the book gives you an overview of a class of networks, includes a practical study of networkx functions and techniques, and concludes with case studies from various fields, including social networking, anthropology, marketing, and sports analytics. Combine your CNA and Python programming skills to become a better network analyst, a more accomplished data scientist, and a more versatile programmer. What You Need: You will need a Python 3.x installation with the following additional modules: Pandas (>=0.18), NumPy (>=1.10), matplotlib (>=1.5), networkx (>=1.11), python-louvain (>=0.5), NetworKit (>=3.6), and generalizesimilarity. We recommend using the Anaconda distribution that comes with all these modules, except for python-louvain, NetworKit, and generalizedsimilarity, and works on all major modern operating systems.
£26.09
The Pragmatic Programmers Practices of an Agile Developer - Working in the Real World
The practices that make a software project successful are usually missing in those projects that fail. These are the practices, habits, ideas and approaches that make that critical difference between success and failure. By following these better practices you can show yourself, your teammates and your managers real results, and begin to effect a broader change for your whole project. This book covers practices in five areas: Development Process While Coding Developer Attitude Project and Team Management Iterative and Incremental Learning These practices provide guidelines that will help you succeed in delivering and meeting the user's expectations, even if the domain is unfamiliar. You'll be able to keep normal project pressure from turning into disastrous stress while writing code, and see how to effectively coordinate mentors, team leads, and developers in harmony. The one wealth that grows as we give is knowledge. But this is also the one wealth that may be hardest to obtain. It takes effort, especially in a field as dynamic as software development. This book shows you why keeping up with change is important, and provides options to make it work for you.
£21.59
The Pragmatic Programmers Pragmatic Unit Testing in Java 8 with Junit
The Pragmatic Programmers classic is back! Freshly updated for modern software development, Pragmatic Unit Testing in Java 8 With JUnit teaches you how to write and run easily maintained unit tests in JUnit with confidence. You'll learn mnemonics to help you know what tests to write, how to remember all the boundary conditions, and what the qualities of a good test are. You'll see how unit tests can pay off by allowing you to keep your system code clean, and you'll learn how to handle the stuff that seems too tough to test. Pragmatic Unit Testing in Java 8 With JUnit steps you through all the important unit testing topics. If you've never written a unit test, you'll see screen shots from Eclipse, IntelliJ IDEA, and NetBeans that will help you get past the hard part--getting set up and started. Once past the basics, you'll learn why you want to write unit tests and how to effectively use JUnit. But the meaty part of the book is its collected unit testing wisdom from people who've been there, done that on production systems for at least 15 years: veteran author and developer Jeff Langr, building on the wisdom of Pragmatic Programmers Andy Hunt and Dave Thomas.You'll learn: How to craft your unit tests to minimize your effort in maintaining them. How to use unit tests to help keep your system clean. How to test the tough stuff. Memorable mnemonics to help you remember what's important when writing unit tests. How to help your team reap and sustain the benefits of unit testing. You won't just learn about unit testing in theory--you'll work through numerous code examples. When it comes to programming, hands-on is the only way to learn!
£21.59
The Pragmatic Programmers Seven More Languages in Seven Weeks
Great programmers aren't born--they're made. The industry is moving from object-oriented languages to functional languages, and you need to commit to radical improvement. New programming languages arm you with the tools and idioms you need to refine your craft. While other language primers take you through basic installation and "Hello, World," we aim higher. Each language in Seven More Languages in Seven Weeks will take you on a step-by-step journey through the most important paradigms of our time. You'll learn seven exciting languages: Lua, Factor, Elixir, Elm, Julia, MiniKanren, and Idris. Learn from the award-winning programming series that inspired the Elixir language. Hear how other programmers across broadly different communities solve problems important enough to compel language development. Expand your perspective, and learn to solve multicore and distribution problems. In each language, you'll solve a non-trivial problem, using the techniques that make that language special. Write a fully functional game in Elm, without a single callback, that compiles to JavaScript so you can deploy it in any browser. Write a logic program in Clojure using a programming model, MiniKanren, that is as powerful as Prolog but much better at interacting with the outside world. Build a distributed program in Elixir with Lisp-style macros, rich Ruby-like syntax, and the richness of the Erlang virtual machine. Build your own object layer in Lua, a statistical program in Julia, a proof in code with Idris, and a quiz game in Factor. When you're done, you'll have written programs in five different programming paradigms that were written on three different continents. You'll have explored four languages on the leading edge, invented in the past five years, and three more radically different languages, each with something significant to teach you
£27.45
The Pragmatic Programmers Seven Web Frameworks in Seven Weeks: Adventures in Better Web Apps
Whether you need a new tool or just inspiration, Seven Web Frameworks in Seven Weeks explores modern options, giving you a taste of each with ideas that will help you create better apps. You'll see frameworks that leverage modern programming languages, employ unique architectures, live client-side instead of server-side, or embrace type systems. You'll see everything from familiar Ruby and JavaScript to the more exotic Erlang, Haskell, and Clojure. The rapid evolution of web apps demands innovative solutions: this survey of frameworks and their unique perspectives will inspire you and get you thinking in new ways to meet the challenges you face daily. This book covers seven web frameworks that are influencing modern web applications and changing web development: Sinatra, CanJS, AngularJS, Ring, Webmachine, Yesod, Immutant. Each of these web frameworks brings unique and powerful ideas to bear on building apps. Embrace the simplicity of Sinatra, which sheds the trappings of large frameworks and gets back to basics with Ruby. Live in the client with CanJS, and create apps with JavaScript in the browser. Be declarative with AngularJS; say what you want, not how to do it, with a mixture of declarative HTML and JavaScript. Turn the web into data with Ring, and use Clojure to make data your puppet. Become a master of advanced HTTP with Webmachine, and focus the power of Erlang. Prove web theorems with Yesod; see how Haskell's advanced type system isn't just for academics. Develop in luxury with Immutant, an enlightened take on the enterprise framework. Seven Web Frameworks will influence your work, no matter which framework you currently use. Welcome to a wider web. What You Need: You'll need Windows, MacOS X or Linux, along with your favorite web browser. Each chapter will cover what you need to download and which language versions are required.
£27.45
The Pragmatic Programmers Programming Ruby 1.9 & 2.0 4ed
Ruby is the fastest growing and most exciting dynamic language out there. If you need to get working programs delivered fast, you should add Ruby to your toolbox. This book is the only complete reference for both Ruby 1.9 and Ruby 2.0, the very latest version of Ruby. 2013 marks the 20th anniversary of the Ruby language. We're proud that throughout its history, we've continued to cover the latest version of Ruby. Would you like to go from first idea to working code much, much faster? Do you currently spend more time satisfying the compiler instead of your clients or end users? Are you frustrated with demanding languages that seem to get in your way, instead of getting the work done? Are you using Rails, and want to dig deeper into the underlying Ruby language? If so, then we've got a language and book for you! Ruby is a fully object-oriented language, much like the classic object-oriented language, Smalltalk. Like Smalltalk, it is dynamically typed (as opposed to Java or C++), but unlike Smalltalk, Ruby features the same conveniences found in modern scripting languages such as Perl and Python. The combination of the power of a pure object-oriented language with the convenience of a scripting language makes Ruby a favorite tool of intelligent, forward-thinking programmers. The Pickaxe contains four major sections: * An acclaimed tutorial on using Ruby. * The definitive reference to the language. * Complete documentation of all built-in classes, modules, and methods. * Complete descriptions of all 97 standard libraries. This is the reference manual for Ruby, including a description of all the standard library modules, a complete reference to all built-in classes and modules (including all the new and changed methods introduced by Ruby 1.9, 1.9.2, 1.9.3, and 2.0). It also includes all the new and changed syntax and semantics introduced since Ruby 1.8. Learn about the new parameter passing rules, local variable scoping in blocks, fibers, and the new block declaration syntax, among other exciting new features. About Ruby 2.0 Ruby 2.0 is a minor update to Ruby 1.9, unlike the more major updates from Ruby 1.8 to Ruby 1.9. The major language changes in Ruby 2.0 are the addition of keyword arguments and the change to use UTF-8 as the default source file encoding. There are a number of additions to the standard library, including: * @Enumerator::Lazy@, which adds support for lazy access to potentially infinite lists. * Refinements allow you to encapsulate changes to third-party classes, and scope their application to individual source files, preventing your changes from polluting the global application. You'll also find that Ruby 2 is faster, and has memory management improvements that make it more server-friendly. All told, there are over 110 sections of the book that have been flagged and cross-linked to indicate 2.0 content. What You Need * This book assumes you have a basic understanding of object-oriented programming. * In general, Ruby programmers tend to favor the the command line for running their code, and they tend to use text editors rather than IDEs.
£35.99
The Pragmatic Programmers Agile Web Development with Rails Revised
Rails just keeps on changing. Both Rails 3 and 4, as well as Ruby 1.9 and 2.0, bring hundreds of improvements, including new APIs and substantial performance enhancements. The fourth edition of this award-winning classic has been reorganized and refocused so it's more useful than ever before for developers new to Ruby and Rails. Rails 4 introduces a number of user-facing changes, and the ebook has been updated to match all the latest changes and new best practices in Rails. This includes full support for Ruby 2.0, controller concerns, Russian Doll caching, strong parameters, Turbolinks, new test and bin directory layouts, and much more. Ruby on Rails helps you produce high-quality, beautiful-looking web applications quickly. You concentrate on creating the application, and Rails takes care of the details. Tens of thousands of developers have used this award-winning book to learn Rails. It's a broad, far-reaching tutorial and reference that's recommended by the Rails core team. If you're new to Rails, you'll get step-by-step guidance. If you're an experienced developer, this book will give you the comprehensive, insider information you need. Rails has evolved over the years, and this book has evolved along with it. We still start with a step-by-step walkthrough of building a real application, and in-depth chapters look at the built-in Rails features. This edition now gives new Ruby and Rails users more information on the Ruby language and takes more time to explain key concepts throughout. Best practices on how to apply Rails continue to change, and this edition keeps up. Examples use Concerns, Russian Doll caching, and Turbolinks, and the book focuses throughout on the right way to use Rails. Additionally, this edition now works on Ruby 2.0, a new release of Ruby with substantial functional and performance improvements. This edition is for Rails4.0 and beyond.
£31.49
The Pragmatic Programmers OpenGL ES 2 for Android
Android is booming like never before, with millions of devices shipping every day. It's never been a better time to learn how to create your own 3D games and live wallpaper for Android. You'll find out all about shaders and the OpenGL pipeline, and discover the power of OpenGL ES 2.0, which is much more feature-rich than its predecessor. If you can program in Java and you have a creative vision that you'd like to share with the world, then this is the book for you. This book will teach you everything you need to know to create compelling graphics on Android. You'll learn the basics of OpenGL by building a simple game of air hockey, and along the way, you'll see how to initialize OpenGL and program the graphics pipeline using shaders. Each lesson builds upon the one before it, as you add colors, shading, 3D projections, touch interaction, and more. Then, you'll find out how to turn your idea into a live wallpaper that can run on the home screen. You'll learn about more advanced effects involving particles, lighting models, and the depth buffer. You'll understand what to look for when debugging your program, and what to watch out for when deploying to the market. OpenGL can be somewhat of a dark art to the uninitiated. As you read this book, you'll learn each new concept from first principles. You won't just learn about a feature; you'll also understand how it works, and why it works the way it does. Everything you learn is forward-compatible with the just-released OpenGL ES 3, and you can even apply these techniques to other platforms, such as iOS or HTML5 WebGL.
£27.45
The Pragmatic Programmers 101 Design Ingredients to Solve Big Tech Problems
Tough technology and business challenges face you at every stage of a project. The one-page ingredients in 101 Design Ingredients show you how to solve problems using practical examples you can apply right away. Case studies explain how leading companies combined these ingredients into their own unique recipes to catapult their businesses, and how you can too. One page, one ingredient. 101 reasons to become more successful at solving those big technology problems. 101 Design Ingredients will help your technology team identify problems, share responsibilities, and work better together. In part 1, you'll see case studies of how companies such as Facebook and Dropbox blended ingredients from this book to create recipes to solve specific business requirements for investment, innovation, leadership, and more. Each recipe shows how the company fine-tuned six of the ingredients to build their own unique solution. You'll learn how to mix and match ingredients to create your own recipes for success, tailored to your company's needs. In part 2, you'll find 101 problem-solving ingredients grouped into project stages, to help you apply the right ingredient at the right time. Start at any point and page through the humorously illustrated ingredients until you find one that matches your needs best. The ingredients cover the spectrum your business needs to be successful, with tips on team-building, creating a business model, product launch, productivity, and much more. Each ingredient includes three practical suggestions to get you started right away. The ingredients and recipes in this book can be applied by beginners starting out on their first technology project, as well as seasoned professionals who have been tackling the same big problems for years and need a fresh new approach to problem solving.
£26.09
The Pragmatic Programmers Programming Groovy 2.0
Groovy brings you the best of both worlds: a flexible, highly productive, agile, dynamic language that runs on the rich framework of the Java Platform. Groovy preserves the Java semantics and extends the JDK to give you true dynamic language capabilities. Programming Groovy will help you, the experienced Java developer, learn and take advantage of the latest version of this rich dynamic language. You'll go from the basics of Groovy to the latest advances in the language, including options for type checking, tail-call and memoization optimizations, compile time metaprogramming, and fluent interfaces to create DSLs. The strength of Java is no longer in the language. It's in the Java Platform--the JVM, JDK, and rich frameworks and libraries. You don't have to leave the rich Java Platform to take advantage of dynamic languages such as Groovy. Groovy preserves the Java semantics and extends the JDK, so programming in Groovy feels like the Java language has been augmented; it's like working with a lighter, more elegant Java. If you're an experienced Java developer who wants to learn how Groovy works, you'll find exactly what you need in this book. You'll start with the fundamentals of programming in Groovy and how it works with Java, and then you'll explore advanced concepts such as unit testing with mock objects, using Builders, working with databases and XML, and creating DSLs. This book will help you quickly learn the new features in Groovy 2 so you can readily apply them on your next project. In addition, you'll master Groovy's powerful yet complex run-time and compile-time metaprogramming features. Everything's up to date and waiting for you to dig in!
£25.19
The Pragmatic Programmers Cucumber Recipes
You can test just about anything with Cucumber. We certainly have, and in Cucumber Recipes we'll show you how to apply our hard-won field experience to your own projects. Once you've mastered the basics, this book will show you how to get the most out of Cucumber--from specific situations to advanced test-writing advice. With over forty practical recipes, you'll test desktop, web, mobile, and server applications across a variety of platforms. This book gives you tools that you can use today to automate any system that you encounter, and do it well. The Cucumber Book showed you how your team can work together to write executable specifications--documents that tell a clear story and also happen to be working test code. We'll arm you with ready-rolled solutions to real-world problems: your tests will run faster, read more clearly, and work in any environment. Our first tips will help you fit Cucumber into your workflow. Powerful filters will tame tables full of test data, transforming them into the format your application needs. Custom output formatters will generate reports for any occasion. Continuous Integration servers will run your Cucumber tests every time the code changes. Next, you'll find recipes tailored to the platform you're running on. Ever wanted to know how to test a Grails app from Cucumber? Need to put a Windows program through its paces? How about a mobile app running on Android or iOS? We'll show you how to do all of these. Throughout the book, you'll see how to make Cucumber sing as you interoperate with different platforms, languages, and environments. From embedded circuits to Python and PHP web apps, Cucumber has something for you. What You Need: You'll need basic working knowledge of Cucumber and Ruby. Individual recipes may have additional requirements; for example, a recipe on Windows automation might pull in an open source GUI driver. We've written the recipes for compatibility with Ruby 1.9.3 and 1.8.7, plus Cucumber 1.1.4. Other versions may work as well, but these are the ones we test with.
£23.85
The Pragmatic Programmers Driving Technical Change
Finding cool languages, tools, or development techniques is easy-new ones are popping up every day. Convincing co-workers to adopt them is the hard part. The problem is political, and in political fights, logic doesn't win for logic's sake. Hard evidence of a superior solution is not enough. But that reality can be tough for programmers to overcome. In Driving Technical Change: Why People On Your Team Don't Act on Good Ideas, and How to Convince Them They Should, Adobe software evangelist Terrence Ryan breaks down the patterns and types of resistance technologists face in many organizations. You'll get a rich understanding of what blocks users from accepting your solutions. From that, you'll get techniques for dismantling their objections-without becoming some kind of technocratic Machiavelli. In Part I, Ryan clearly defines the problem. Then in Part II, he presents "resistance patterns"-there's a pattern for each type of person resisting your technology, from The Uninformed to The Herd, The Cynic, The Burned, The Time Crunched, The Boss, and The Irrational. In Part III, Ryan shares his battle-tested techniques for overcoming users' objections. These build on expertise, communication, compromise, trust, publicity, and similar factors. In Part IV, Ryan reveals strategies that put it all together-the patterns of resistance and the techniques for winning buy-in. This is the art of organizational politics. In the end, change is a two-way street: In order to get your co-workers to stretch their technical skills, you'll have to stretch your soft skills. This book will help you make that stretch without compromising your resistance to playing politics. You can overcome resistance-however illogical-in a logical way.
£23.85
The Pragmatic Programmers Agile Coaching
To lead change, you need to expand your toolkit, and this book gives you the tools you need to make the transition from agile practitioner to agile coach. "Agile Coaching" is all about working with people to create great agile teams. You'll learn how to build a team that produces great software and has fun doing it. In the process, you'll grow a team that's self-sufficient and skillful. This book provides you with deeper knowledge of how agile practices work and how to inspire your team to improve. Discover how to coach your team through the agile life cycle, from planning to writing software. Learn the secrets of running effective agile meetings and how to get your team following a consistent approach to creating software. You'll find chapters dedicated to introducing Test-Driven Development, designing Retrospectives, and making progress visible. Find out what works and what to avoid when introducing agile practices to your team. Throughout the book the authors share their personal coaching stories from experience with real teams, giving you insights into what works and what to avoid. Each chapter also covers hurdles that you and your team may face and what to do to clear them.
£25.19
The Pragmatic Programmers Pragmatic Version Control Using Git
Whether you're making the switch from a traditional centralized version control system or are a new programmer just getting started, this book prepares you to start using Git in your everyday programming. "Pragmatic Version Control Using Git" starts with an overview of version control systems, and shows how being distributed enables you to work more efficiently in our increasingly mobile society. It then progresses through the basics necessary to get started using Git. You'll get a thorough overview of how to take advantage of Git. By the time you finish this book you'll have a firm grounding in how to use Git, both by yourself and as part of a team. Learn how to use how to use Git to protect all the pieces of your project. Work collaboratively in a distributed environment. Learn how to use Git's cheap branches to streamline your development. Install and administer a Git server to share your repository.
£25.19
The Pragmatic Programmers Build a Binary Clock with Elixir and Nerves
Want to get better at coding Elixir? Write a hardware project with Nerves. As you build this binary clock, you'll build in resiliency using OTP, the same libraries powering many commercial phone switches. You'll attack complexity the way the experts do, using a layered approach. You'll sharpen your debugging skills by taking small, easily verified steps toward your goal. When you're done, you'll have a working binary clock and a good appreciation of the work that goes into a hardware system. You'll also be able to apply that understanding to every new line of Elixir you write. Combining software with hardware can be frustrating, but you can become proficient in no time by taking a simple, logical approach. Blinking a single LED is the traditional hello-world of embedded systems. Building your own binary clock is the logical next step. It blinks groupings of LEDs based on the system time. This guide walks you through a working project using the techniques used by experts who build software for hardware every day. This common sense project moves forward in tiny, logical steps. As you progress, you can verify each step before moving on to the next. You don't have to be a Nerves novice to benefit from this project. Become a better Elixir programmer as you build your own desktop showpiece. With a layered approach to software design, you'll learn to control the complexity of your programs the way the experts do by focusing on one small slice of your system at a time. When you're done, you'll have your own binary clock, and also more of the tools you need to design and build your own Nerves and Elixir projects. You'll also be a better programmer with a deeper appreciation of layering techniques for controlling complexity. What You Need: This project is for Elixir developers who want to get started with Nerves, or improve their skills. The project is designed for Elixir 1.11 and Nerves 1.7, but later versions will probably work as well with slight modifications. The project uses a Raspberry Pi zero with a set of components. With slight modifications, you can make this book work with other components as well.
£21.59
The Pragmatic Programmers Programming WebRTC: Build Real-Time Streaming Applications for the Web
Build your own video chat application - but that's just the beginning. With WebRTC, you'll create real-time applications to stream any kind of user media and data directly from one browser to another, all built on familiar HTML, CSS, and JavaScript. Power real-time activities like text-based chats, secure peer-to-peer file transfers, collaborative brainstorming sessions - even multiplayer gaming. And you're not limited to two connected users: an entire chapter of the book is devoted to engineering multipeer WebRTC apps that let groups of people communicate in real time. You'll create your own video conferencing app. It's all here. WebRTC is an API exposed in all modern web browsers. After almost a decade of development, the WebRTC specification was finalized, and this book provides faithful coverage of that finalized specification. You'll start by building a basic but complete WebRTC application for video chatting. Chapter by chapter, you'll refine that app and its core logic to spin up new and exciting WebRTC-powered apps that will have your users sharing all manner of data with one another, all in real time. No third-party libraries or heavy downloads are required for you or your users: you'll be writing and strengthening your knowledge of vanilla JavaScript and native browser APIs. You'll learn how to directly connect multiple browsers over the open internet using a signaling channel. You will gain familiarity with a whole set of Web APIs whose features bring WebRTC to life: requesting access to users' cameras and microphones; accessing and manipulating arbitrary user files, right in the browser; and web storage for persisting shared data over the life of a WebRTC call. Like any Web API, WebRTC doesn't enjoy a perfect implementation in any browser. But this book will guide you in writing elegant code to the specification, with backward-compatible fallback code for use in almost all modern browsers. Use WebRTC to build the next generation of web applications that stream media and data in real time, directly from one user to another - all by working in the browser. What You Need: Readers need a text editor, an up-to-date copy of Chrome or Firefox, and a POSIX-style command-line shell. They'll also need to install a little bit of open-source software, especially Node.js. All necessary setup is covered in full in the book's introductory chapter.
£33.29
The Pragmatic Programmers Exploring Graphs with Elixir: Connect Data with Native Graph Libraries and Graph Databases
Data is everywhere - it's just not very well connected, which makes it super hard to relate dataset to dataset. Using graphs as the underlying glue, you can readily join data together and create navigation paths across diverse sets of data. Add Elixir, with its awesome power of concurrency, and you'll soon be mastering data networks. Learn how different graph models can be accessed and used from within Elixir and how you can build a robust semantics overlay on top of graph data structures. We'll start from the basics and examine the main graph paradigms. Get ready to embrace the world of connected data! Graphs provide an intuitive and highly flexible means for organizing and querying huge amounts of loosely coupled data items. These data networks, or graphs in math speak, are typically stored and queried using graph databases. Elixir, with its noted support for fault tolerance and concurrency, stands out as a language eminently suited to processing sparsely connected and distributed datasets. Using Elixir and graph-aware packages in the Elixir ecosystem, you'll easily be able to fit your data to graphs and networks, and gain new information insights. Build a testbed app for comparing native graph data with external graph databases. Develop a set of applications under a single umbrella app to drill down into graph structures. Build graph models in Elixir, and query graph databases of various stripes - using Cypher and Gremlin with property graphs and SPARQL with RDF graphs. Transform data from one graph modeling regime to another. Understand why property graphs are especially good at graph traversal problems, while RDF graphs shine at integrating different semantic models and can scale up to web proportions. Harness the outstanding power of concurrent processing in Elixir to work with distributed graph datasets and manage data at scale. What You Need: To follow along with the book, you should have Elixir 1.10+ installed. The book will guide you through setting up an umbrella application for a graph testbed using a variety of graph databases for which Java SDK 8+ is generally required. Instructions for installing the graph databases are given in an appendix.
£34.65
The Pragmatic Programmers Design and Build Great Web APIs: Robust, Reliable, and Resilient
APIs are transforming the business world at an increasing pace. Gain the essential skills needed to quickly design, build, and deploy quality web APIs that are robust, reliable, and resilient. Go from initial design through prototyping and implementation to deployment of mission-critical APIs for your organization. Test, secure, and deploy your API with confidence and avoid the "release into production" panic. Tackle just about any API challenge with more than a dozen open-source utilities and common programming patterns you can apply right away. Good API design means starting with the API-First principle - understanding who is using the API and what they want to do with it - and applying basic design skills to match customers' needs while solving business-critical problems. Use the Sketch-Design-Build method to create reliable and scalable web APIs quickly and easily without a lot of risk to the day-to-day business operations. Create clear sequence diagrams, accurate specifications, and machine-readable API descriptions all reviewed, tested, and ready to turn into fully-functional NodeJS code. Create reliable test collections with Postman and implement proper identity and access control security with AuthO-without added cost or risk to the company. Deploy all of this to Heroku using a continuous delivery approach that pushes secure, well-tested code to your public servers ready for use by both internal and external developers. From design to code to test to deployment, unlock hidden business value and release stable and scalable web APIs that meet customer needs and solve important business problems in a consistent and reliable manner.
£33.29