{"title":"Pragmatic Bookshelf","description":null,"products":[{"product_id":"9781680502688","title":"Practical Programming","description":"\u003cp\u003eClassroom-tested by tens of thousands of students, this new edition of the bestselling intro to programming book is for anyone who wants to understand computer science. Learn about design, algorithms, testing, and debugging. Discover the fundamentals of programming with Python 3.6--a language that's used in millions of devices. Write programs to solve real-world problems, and come away with everything you need to produce quality code. This edition has been updated to use the new language features in Python 3.6.\u003c\/p\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302065746293,"sku":"9781680502688","price":39.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680502688_773938a7-8006-49b4-8e12-b0a699814839.jpg?v=1786034029"},{"product_id":"9781680502091","title":"Design It!","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302066303349,"sku":"9781680502091","price":33.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680502091_3a93e9bd-e307-4a85-beb4-824c723f5cfa.jpg?v=1786024339"},{"product_id":"9781680502855","title":"Programming Elm","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302066336117,"sku":"9781680502855","price":32.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680502855_ea3e4720-57e2-407b-95b7-1ed006f2006a.jpg?v=1786024350"},{"product_id":"9781680501988","title":"Effective Testing with RSpec 3","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302239646069,"sku":"9781680501988","price":21.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680501988_eb668833-d678-4a3f-9f8e-962452b46a07.jpg?v=1786024338"},{"product_id":"9781680502824","title":"Programming Ecto","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302240727413,"sku":"9781680502824","price":36.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680502824_842ef964-24bb-4cba-a70b-ec7b820034c1.jpg?v=1786024349"},{"product_id":"9781680506983","title":"Software Estimation Without Guessing","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302240956789,"sku":"9781680506983","price":23.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680506983_cea1472e-e803-42bc-b223-62804cc8f8b7.jpg?v=1786024362"},{"product_id":"9781680508468","title":"Effective Go Recipes","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302240989557,"sku":"9781680508468","price":42.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680508468_3f7988c3-093d-45c5-8106-e49f3d2533e8.jpg?v=1786024376"},{"product_id":"9781680502268","title":"Programming Phoenix 1.4","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302837956981,"sku":"9781680502268","price":36.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680502268_644a0c71-6549-4da9-ad79-41016e019bb8.jpg?v=1786024340"},{"product_id":"9781680505467","title":"Rediscovering JavaScript","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302838088053,"sku":"9781680505467","price":36.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680505467_452c72c6-986d-44d0-865f-ad16bcb0262b.jpg?v=1786024353"},{"product_id":"9781680508598","title":"Portable Python Projects","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302838350197,"sku":"9781680508598","price":36.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680508598_ab38203e-33c6-47f4-9561-3b3a9df06c3c.jpg?v=1786024376"},{"product_id":"9781680506600","title":"Programming Machine Learning","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302838382965,"sku":"9781680506600","price":38.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680506600_de2fb332-9732-428b-804b-93aa31c45a15.jpg?v=1786024356"},{"product_id":"9781680507225","title":"A Common–Sense Guide to Data Structures and Algorithms, 2e","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302838448501,"sku":"9781680507225","price":36.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680507225_e8cd33b8-1944-4d1f-b3a9-bb503c045b33.jpg?v=1786024363"},{"product_id":"9781680509830","title":"Creating Software with Modern Diagramming Techniques","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56302838808949,"sku":"9781680509830","price":23.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680509830_611ebb10-dc33-44c1-b1de-dc1d36d87b93.jpg?v=1786024384"},{"product_id":"9781680506969","title":"Powerful Command-Line Applications in Go","description":"\u003cp\u003eWhether you want to automate tasks, analyze data, parse logs, talk to network services, or address other systems requirements, writing your own command-line tool may be the fastest - and perhaps the most fun - way to do it. The Go programming language is a great choice for developing tools that are fast, reliable, and cross-platform. Create command-line tools that work with files, connect to services, and even manage external processes, all while using tests and benchmarks to ensure your programs are fast and correct.\u003c\/p\u003e\u003cp\u003eWhen you want to develop cross platform command-line tools that are fast and reliable, use Go, a modern programming language that combines the reliability of compiled languages with the ease of use and flexibility of dynamic typed languages. Work through practical examples to develop elegant and efficient tools by applying Go's rich standard library, its built in support for concurrency, and its expressive syntax. Use Go's integrated testing capabilities to automatically test your tools, ensuring they work reliably even across code refactoring.\u003c\/p\u003e\u003cp\u003eDevelop CLI tools that interact with your users by using common input\/output patterns, including environment variables and flags. Handle files to read or persist data, and manipulate paths consistently in cross-platform scenarios. Control processes and handle signals, and use a benchmark driven approach and Go's concurrency primitives to create tools that perform well. Use powerful external libraries such as Cobra to create modern and flexible tools that handle subcommands, and develop tools that interact with databases, APIs, and network services. Finally, leverage what you learned by tackling additional challenges at the end of each chapter.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003eGo 1.8 or higher, an internet connection to download the example files and additional libraries, and a text editor to write your programs.","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303286485365,"sku":"9781680506969","price":36.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680506969_0d014f52-3a1c-4d9a-8fe5-c44f6fea1bf1.jpg?v=1786024361"},{"product_id":"9781680508611","title":"Pythonic Programming","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303286681973,"sku":"9781680508611","price":21.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680508611_e2b1898b-046e-4de3-b63e-c1f0d4265d8c.jpg?v=1786024378"},{"product_id":"9781680509816","title":"Cruising Along with Java","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303286714741,"sku":"9781680509816","price":42.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680509816_4074de9f-101c-4a66-9419-6dc89281e97e.jpg?v=1786024382"},{"product_id":"9781680509793","title":"Functional Programming in Java","description":"\u003cp\u003eImagine writing Java code that reads like the problem statement, code that's highly expressive, concise, easy to read and modify, and has reduced complexity. With the functional programming capabilities in Java, that's not a fantasy. This book will guide you from the familiar imperative style through the practical aspects of functional programming, using plenty of examples. Apply the techniques you learn to turn highly complex imperative code into elegant and easy-to-understand functional-style code. Updated to the latest version of Java, this edition has four new chapters on error handling, refactoring to functional style, transforming data, and idioms of functional programming.\u003c\/p\u003e\u003cp\u003eDon't struggle with the limitations of the imperative style; instead learn to combine object-oriented programming with the functional style to reduce the accidental complexity. Harness the functional programming capabilities of Java to create applications where the program reveals its intentions and your team can quickly understand and modify code to align with changing business requirements. Unlock the power of lambda expressions and the Streams API to turn the oft-written spaghetti code into highly concise, expressive, elegant, and maintainable code. See how Streams make the arduous task of parallelizing code as easy as flipping a switch when superior speed is necessary.\u003c\/p\u003e\u003cp\u003eApply design patterns built around lambda expressions, safely manage resource allocations, use memoization, and learn to transform data into different forms, all while honoring immutability, and providing thread safety to leverage lazy evaluation for efficiency and parallel execution for performance. Move beyond the basics, explore the idioms for writing functional programs. Learn to think functionally by refactoring legacy code into the functional style. And, if your code runs aground due to failures, learn to properly handle errors the functional way.\u003c\/p\u003e\u003cp\u003eDon't drown in theory; instead learn the practical functional programming techniques to create superior Java code.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003eJava version 8 or newer.\u003c\/p\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303286845813,"sku":"9781680509793","price":42.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680509793_dde1bc59-ca64-4fa2-a29a-adc76cb75693.jpg?v=1786024381"},{"product_id":"9781680506358","title":"Programming Kotlin","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303287533941,"sku":"9781680506358","price":41.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680506358_7334974f-e3ae-4654-8b93-1be40fe274a0.jpg?v=1786024354"},{"product_id":"9781680502466","title":"Programming Clojure","description":"\u003cp\u003eDrowning in unnecessary complexity, unmanaged state, and tangles of spaghetti code? In the best tradition of Lisp, Clojure gets out of your way so you can focus on expressing simple solutions to hard problems. Clojure cuts through complexity by providing a set of composable tools--immutable data, functions, macros, and the interactive REPL. Written by members of the Clojure core team, this book is the essential, definitive guide to Clojure. This new edition includes information on all the newest features of Clojure, such as transducers and specs.\u003c\/p\u003e\u003cp\u003eClojure joins the flexibility and agility of Lisp with the reach, stability, and performance of Java. Combine Clojure's tools for maximum effectiveness as you work with immutable data, functional programming, and safe concurrency to write programs that solve real-world problems.\u003c\/p\u003e\u003cp\u003eStart by reading and understanding Clojure syntax and see how Clojure is evaluated. From there, find out about the sequence abstraction, which combines immutable collections with functional programming to create truly reusable data transformation code. Clojure is a functional language; learn how to write programs in a functional style, and when and how to use recursion to your advantage. Discover Clojure's unique approach to state and identity, techniques for polymorphism and open systems using multimethods and protocols, and how to leverage Clojure's metaprogramming capabilities via macros. Finally, put all the pieces together in a real program.\u003c\/p\u003e\u003cp\u003eNew to this edition is coverage of Clojure's spec library, one of the most interesting new features of Clojure for describing both data and functions. You can use Clojure spec to validate data, destructure data, explain invalid data, and generate large numbers of tests to verify the correctness of your code.\u003c\/p\u003e\u003cp\u003eWith this book, you'll learn how to think in Clojure, and how to take advantage of its combined strengths to build powerful programs quickly.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003e\u003cli\u003eJava 6 or higher\u003c\/li\u003e\u003cli\u003eClojure 1.9\u003c\/li\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303390589301,"sku":"9781680502466","price":39.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680502466_ac7934e0-863e-4709-b4f8-32958e50f8f4.jpg?v=1786024344"},{"product_id":"9781680500745","title":"Clojure Applied","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303390654837,"sku":"9781680500745","price":30.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680500745_d7d9ae9d-97cc-4ab2-99e2-4e3f69e1169a.jpg?v=1786024333"},{"product_id":"9781680502879","title":"Java by Comparison","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303390753141,"sku":"9781680502879","price":32.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680502879_289fb017-57c1-4acd-b8b7-44415dcf48fb.jpg?v=1786024350"},{"product_id":"9781680507232","title":"Competing with Unicorns","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303390818677,"sku":"9781680507232","price":21.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680507232_7085e5d7-3108-4e7f-9e44-258f79cf999a.jpg?v=1786024364"},{"product_id":"9781680507829","title":"Testing Elixir","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303390982517,"sku":"9781680507829","price":36.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680507829_fbfcd72c-0868-4f6e-8085-cf70f028baf1.jpg?v=1786024367"},{"product_id":"9781680506457","title":"Practical Microservices","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303391179125,"sku":"9781680506457","price":36.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680506457_dc55266a-e4a9-4d67-a2cf-4676d338c3c4.jpg?v=1786024355"},{"product_id":"9781680509823","title":"Programming Ruby 3.3","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303391211893,"sku":"9781680509823","price":52.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680509823_d09afb40-8d3c-42df-9e6d-542792d0df5f.jpg?v=1786024383"},{"product_id":"9781680502534","title":"Seven Databases in Seven Weeks","description":"\u003cp\u003eData is getting bigger and more complex by the day, and so are your choices in handling it. Explore some of the most cutting-edge databases available - from a traditional relational database to newer NoSQL approaches - and make informed decisions about challenging data storage problems. This is the only comprehensive guide to the world of NoSQL databases, with in-depth practical and conceptual introductions to seven different technologies: Redis, Neo4J, CouchDB, MongoDB, HBase, Postgres, and DynamoDB. This second edition includes a new chapter on DynamoDB and updated content for each chapter.\u003c\/p\u003e\u003cp\u003eWhile relational databases such as MySQL remain as relevant as ever, the alternative, NoSQL paradigm has opened up new horizons in performance and scalability and changed the way we approach data-centric problems. This book presents the essential concepts behind each database alongside hands-on examples that make each technology come alive.\u003c\/p\u003e\u003cp\u003eWith each database, tackle a real-world problem that highlights the concepts and features that make it shine. Along the way, explore five database models - relational, key\/value, columnar, document, and graph - from the perspective of challenges faced by real applications. Learn how MongoDB and CouchDB are strikingly different, make your applications faster with Redis and more connected with Neo4J, build a cluster of HBase servers using cloud services such as Amazon's Elastic MapReduce, and more. This new edition brings a brand new chapter on DynamoDB, updated code samples and exercises, and a more up-to-date account of each database's feature set.\u003c\/p\u003e\u003cp\u003eWhether you're a programmer building the next big thing, a data scientist seeking solutions to thorny problems, or a technology enthusiast venturing into new territory, you will find something to inspire you in this book.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003eYou'll need a *nix shell (Mac OS or Linux preferred, Windows users will need Cygwin), Java 6 (or greater), and Ruby 1.8.7 (or greater). Each chapter will list the downloads required for that database.","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303391342965,"sku":"9781680502534","price":38.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680502534_04ee9809-18bc-4af2-90c8-a7d65efb8fa9.jpg?v=1786024345"},{"product_id":"9781680502886","title":"Simplifying JavaScript","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303412707701,"sku":"9781680502886","price":38.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680502886_b8892967-019d-43c7-b771-965d2d99a10f.jpg?v=1786024351"},{"product_id":"9781680507201","title":"Quantum Computing","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303413592437,"sku":"9781680507201","price":36.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680507201_e8fdfcba-5d17-4d06-93a8-aef9870c432d.jpg?v=1786024363"},{"product_id":"9781680502541","title":"Domain Modeling Made Functional","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303683699061,"sku":"9781680502541","price":38.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680502541_810ab896-b8d9-40d9-bee3-46070ba53108.jpg?v=1786024346"},{"product_id":"9781680502558","title":"Craft GraphQL APIs in Elixir with Absinthe","description":"\u003cbr\u003eBinding: Paperback \/ softback","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303684092277,"sku":"9781680502558","price":38.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680502558_349c8042-7e05-49ea-a5b7-5baf7724b237.jpg?v=1786024346"},{"product_id":"9781680508604","title":"Python Testing with pytest","description":"\u003cp\u003eTest applications, packages, and libraries large and small with pytest, Python's most powerful testing framework. pytest helps you write tests quickly and keep them readable and maintainable. In this fully revised edition, explore pytest's superpowers - simple asserts, fixtures, parametrization, markers, and plugins - while creating simple tests and test suites against a small database application. Using a robust yet simple fixture model, it's just as easy to write small tests with pytest as it is to scale up to complex functional testing. This book shows you how.\u003c\/p\u003e\u003cp\u003epytest is undeniably the best choice for testing Python projects. It's a full-featured, flexible, and extensible testing framework. pytest's fixture model allows you to share test data and setup procedures across multiple layers of tests. The pytest framework gives you powerful features such as assert rewriting, parametrization, markers, plugins, parallel test execution, and clear test failure reporting - with no boilerplate code.\u003c\/p\u003e\u003cp\u003eWith simple step-by-step instructions and sample code, this book gets you up to speed quickly on this easy-to-learn yet powerful tool. Write short, maintainable tests that elegantly express what you're testing. Speed up test times by distributing tests across multiple processors and running tests in parallel. Use Python's builtin assert statements instead of awkward assert helper functions to make your tests more readable. Move setup code out of tests and into fixtures to separate setup failures from test failures. Test error conditions and corner cases with expected exception testing, and use one test to run many test cases with parameterized testing. Extend pytest with plugins, connect it to continuous integration systems, and use it in tandem with tox, mock, coverage, and even existing unittest tests.\u003c\/p\u003e\u003cp\u003eWrite simple, maintainable tests quickly with pytest.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003eThe examples in this book were written using Python 3.10 and pytest 7. pytest 7 supports Python 3.5 and above.\u003c\/p\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56303687401845,"sku":"9781680508604","price":36.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9781680508604_df5eed03-ddf0-459f-a9b7-56b06cb51bf4.jpg?v=1786024377"},{"product_id":"9798888650769","title":"Server-Driven Web Apps with htmx","description":"\u003cp\u003ehtmx is a library that adds logic and server interaction to HTML; you get the effect of using a front-end SPA framework without writing front-end code. Use any server-side programming language and framework to build server applications with endpoints that simply return snippets of HTML. Dynamically update portions of the current web page from HTTP responses. Add interactivity with JavaScript and libraries such Alpine and _hyperscript. Make your apps more secure by escaping user-supplied content and specifying a Content Security Policy. Go beyond basic HTTP requests with WebSockets and server-sent events.\u003c\/p\u003e\u003cp\u003eThe htmx JavaScript library gives you a new way to craft web applications. The htmx approach differs significantly from that of the currently popular single-page application (SPA) frameworks; rather than write a bunch of JavaScript, you simply annotate HTML elements before you send them to the browser. The resulting code is easier to understand and modify, and because it downloads less to the browser and doesn't need JSON creation and parsing, you'll find it performs better, too.\u003c\/p\u003e\u003cli\u003eRethink web application design; write code in any language that simply responds to requests with htmx snippets.\u003c\/li\u003e\u003cli\u003eDynamically update portions of the current web page directly from the server.\u003c\/li\u003e\u003cli\u003eImplement common patterns such as lazy loading, input validation, CSS transitions, active search, optimistic updates, pagination, infinite scroll, polling, and click-to-edit.\u003c\/li\u003e\u003cli\u003eAdd interactivity with JavaScript and libraries such as Alpine and _hyperscript.\u003c\/li\u003e\u003cli\u003eUse the htmx JavaScript API to simplify DOM operations.\u003c\/li\u003e\u003cli\u003eMake your web apps more secure: escape user-supplied content, use Subresource Integrity hashes, and enforce a Content Security Policy.\u003c\/li\u003e\u003cli\u003eGo beyond the basic HTTP request\/response pattern with WebSockets and server-sent events.\u003c\/li\u003e\u003cp\u003eDiscover a simpler way to implement web applications that emphasizes web fundamentals.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003e\u003cli\u003eA modern web browser and the ability to build and run a local HTTP server using the server-side language and framework of your choice.\u003c\/li\u003e\u003cli\u003eThe code examples are fully compatible with htmx 2.0.\u003c\/li\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56310943187317,"sku":"9798888650769","price":28.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9798888650769_627e4ef8-4a47-43cb-b3e8-95518d667d3a.jpg?v=1786033073"},{"product_id":"9798888650677","title":"Engineering Elixir Applications","description":"\u003cp\u003eThe days of separate dev and ops teams are over - knowledge silos and the \"throw it over the fence\" culture they create are the enemy of progress. As an engineer or developer, you need to confidently own each stage of the software delivery process. This book introduces a new paradigm, \u003ci\u003eBEAMOps,\u003c\/i\u003e that helps you build, test, deploy, and debug BEAM applications. Create effective development and deployment strategies; leverage continuous improvement pipelines; and ensure environment integrity. Combine operational orchestrators such as Docker Swarm with the distribution, fault tolerance, and scalability of the BEAM, to create robust and reliable applications.\u003c\/p\u003e\u003cp\u003eBEAMOps starts by building a solid foundation for your project. On the infrastructure side, see how to use Terraform before you even start coding to automate your deployment and operations. On the project management side, we show you how to use issues and milestones to simplify tracking; you'll use this foundation as you go through the book, implementing each of the steps required to deploy a scalable Elixir application.\u003c\/p\u003e\u003cp\u003eNow that you have a foundation, you can start building. Create a Phoenix LiveView application and explore mix releases. Make your deployments reliable with Docker. Continuously improve your codebase by implementing an efficient continuous deployment\/integration pipeline with GitHub Actions. Scale the Phoenix LiveView application and operate a distributed BEAMsystem in production using AWS EC2 nodes, AWS load balancers, and a remote Docker swarm. Recognize which application metrics should be collected and monitored, and set alerts when certain thresholds are met to ensure that your application auto-scales. Ship less code more often, and ensure it works!\u003c\/p\u003e\u003cp\u003eThe pragmatic BEAMOps approach that we teach in this book - an extension of the well-known DevOps paradigm - will help you become a multidisciplinary developer who is empowered to own each stage of the software delivery process. After reading this book, you'll understand how to apply the BEAMOps principles in your daily work, creating reliable, scalable, and easy to understand applications in a cooperative team environment.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003e\u003cli\u003eElixir 1.16.0 (compiled with Erlang\/OTP 26)\u003c\/li\u003e\u003cli\u003ePhoenix framework 1.7.0\u003c\/li\u003e\u003cli\u003eErlang 26.2.1\u003c\/li\u003e\u003cli\u003eTerraform v1.7.1\u003c\/li\u003e\u003cli\u003eDocker v20.10.22\u003c\/li\u003e\u003cli\u003ePacker v1.9.0\u003c\/li\u003e\u003cli\u003eDocker Compose v2.21.0\u003c\/li\u003e\u003cli\u003eSOPS 3.8.1\u003c\/li\u003e\u003cli\u003eAge 1.1.1\u003c\/li\u003e\u003cli\u003eAn AWS account\u003c\/li\u003e\u003cli\u003eAWS CLI v2.15.15\u003c\/li\u003e\u003cli\u003eA GitHub account\u003c\/li\u003e\u003cli\u003eGitHub CLI v2.42.1\u003c\/li\u003e\u003cli\u003ejq v1.7\u003c\/li\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56311352131957,"sku":"9798888650677","price":49.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9798888650677_0ca7e864-7252-443a-8399-3b94b439483a.jpg?v=1786033071"},{"product_id":"9798888650318","title":"From Ruby to Elixir","description":"\u003cp\u003eElixir will change the way you think about programming. Use your Ruby experience to quickly get up to speed so you can see what all of the buzz is about. Go from zero to production applications that are reliable, fast, and scalable. Learn Elixir syntax and pattern matching to conquer the basics. Then move onto Elixir's unique process model that offers a world-class way to go parallel without fear. Finally, use the most common libraries like Ecto, Phoenix, and Oban to build a real-world SMS application. Now's the time. Dive in and learn Elixir.\u003c\/p\u003e\u003cp\u003eWhether you're a seasoned Ruby developer looking to expand your skill set or a programming beginner looking for a solid foundation in Elixir, this book has what you need to get up to speed quickly. Elixir is a functional language with a fairly small footprint. This makes it easier to learn and put into production than other languages. Plus, it's built on forty-year-old foundations that give your applications rock-solid stability.\u003c\/p\u003e\u003cp\u003eThe first part of this book is all about developing expertise in the language. Learn about the core data types, build application data structures, enumerate over data, and use pattern matching to control the flow of an application. Elixir has an amazing process model that allows for (actually) easy parallel processing. Learn how to tap into this process model so you can leverage that power yourself.\u003c\/p\u003e\u003cp\u003eThe second part of this book builds a real-world application using the most important libraries in a web developer's toolbox. Each library is compared to its similar Ruby library so you'll quickly see similarities and differences. We'll use Ecto, Phoenix, and Oban to build a SMS application powered by Twilio.\u003c\/p\u003e\u003cp\u003eWhat are you waiting for? Tap into your Ruby knowledge and start building scalable Elixir applications today.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003eYou'll need Elixir 1.14+ and Erlang\/OTP 24+ installed on a Mac OS X, Linux, or Windows machine.\u003c\/p\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56311352164725,"sku":"9798888650318","price":38.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9798888650318_d4056521-9607-4f0f-a0b8-cc9d90f1f6dd.jpg?v=1786033055"},{"product_id":"9798888650387","title":"High Performance PostgreSQL for Rails","description":"\u003cp\u003eBuild faster, more reliable Rails apps by taking the best advanced PostgreSQL and Active Record capabilities, and using them to solve your application scale and growth challenges. Gain the skills needed to comfortably work with multi-terabyte databases, and with complex Active Record, SQL, and specialized Indexes. Develop your skills with PostgreSQL on your laptop, then take them into production, while keeping everything in sync. Make slow queries fast, perform any schema or data migration without errors, use scaling techniques like read\/write splitting, partitioning, and sharding, to meet demanding workload requirements from Internet scale consumer apps to enterprise SaaS.\u003c\/p\u003e\u003cp\u003eDeepen your firsthand knowledge of high-scale PostgreSQL databases and Ruby on Rails applications with dozens of practical and hands-on exercises. Unlock the mysteries surrounding complex Active Record. Make any schema or data migration change confidently, without downtime. Grow your experience with modern and exclusive PostgreSQL features like SQL Merge, Returning, and Exclusion constraints. Put advanced capabilities like Full Text Search and Publish Subscribe mechanisms built into PostgreSQL to work in your Rails apps. Improve the quality of the data in your database, using the advanced and extensible system of types and constraints to reduce and eliminate application bugs. Tackle complex topics like how to improve query performance using specialized indexes. Discover how to effectively use built-in database functions and write your own, administer replication, and make the most of partitioning and foreign data wrappers. Use more than 40 well-supported open source tools to extend and enhance PostgreSQL and Ruby on Rails. Gain invaluable insights into database administration by conducting advanced optimizations - including high-impact database maintenance - all while solving real-world operational challenges.\u003c\/p\u003e \u003cp\u003eTake your new skills into production today and then take your PostgreSQL and Rails applications to a whole new level of reliability and performance.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eA computer running macOS, Linux, or Windows and WSL2\u003c\/li\u003e\n\u003cli\u003ePostgreSQL version 16, installed by package manager, compiled, or running with Docker\u003c\/li\u003e\n\u003cli\u003eAn Internet connection\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56311352492405,"sku":"9798888650387","price":51.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9798888650387_804260b5-4d48-4e4c-b6f0-432768bbbb3f.jpg?v=1786033060"},{"product_id":"9798888650486","title":"C Brain Teasers","description":"\u003cp\u003eYou thought you knew C, but can you solve 25 puzzles in this popular programming language? Noted C programmer and author Dan Gookin provides a series of pointed questions, puzzles, and problems to keep your C programming skills sharp. Each one will provide insight into various aspects of handling strings, numeric operations, and other activities, giving you techniques to take the best advantage of all C has to offer. Challenge yourself, and get to know some powerful tricks and details for writing better, faster, more accurate C code.\u003c\/p\u003e\u003cp\u003eMost C programming books present the information sequentially, teaching you the right way to code and only rarely describing what could go wrong. In this book, the goal is to find out what did go wrong - or what potentially goes right. Explore interesting and unusual programming concepts and approaches with small, to-the-point, programs and exercises. Hone your C programming skills and expand your knowledge.\u003c\/p\u003e\u003cp\u003eBy working through the brain teasers in this book, you'll fill in gaps in your knowledge and work with advanced concepts such as pointers and recursion. All of the teaser topics were selected to give you food for thought, explaining the technical details behind each puzzle. Look at a code sample and try to guess what output it will give. Code it yourself and see the result. Is it what you expected? Then read the author's lighthearted explanation of exactly why the language does what it does, and how you can take advantage of it. You'll come away with a much better understanding of how the language works, and how to use it for efficient and effective programming.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003eYou need to know the basics of coding in C, and have an environment for compiling and executing your C code. Any Windows, MacOS, or Linux system with a C compiler does the job. Use the terminal window for traditional C programming. Or obtain an Integrated Development Enviornment (IDE) such as Visual Studio Code, which contains all the software tools you need: Editor, Compiler, and Output.\u003c\/p\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56311454564725,"sku":"9798888650486","price":26.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9798888650486_fe61f4c0-12f3-4d14-90e1-432049b036ca.jpg?v=1786033060"},{"product_id":"9798888650509","title":"Automate Your Home Using Go","description":"\u003cp\u003eTake control of your home and your data with the power of the Go programming language. Build extraordinary and robust home automation solutions that rival much more expensive, closed commercial alternatives, using the same tools found in high-end enterprise computing environments. Best-selling Pragmatic Bookshelf authors Ricardo Gerardi and Mike Riley show how you can use inexpensive Raspberry Pi hardware and excellent, open source Go-based software tools like Prometheus and Grafana to create your own personal data center.  Using the step-by-step examples in the book, build useful home automation projects that you can use as a blueprint for your own custom projects.\u003c\/p\u003e\u003cp\u003eWith just a Raspberry Pi and the Go programming language, build your own personal data center that coordinates and manages your home automation, leveraging the same high-powered software used by large enterprises. The projects in this book are easy to assemble, no soldering or electrical engineering expertise required.\u003c\/p\u003e\u003cp\u003eBuild a temperature monitor that can send alerts any time defined thresholds are exceeded and report the temperature readings on a time-based series chart. Change the color of lights to visually indicate the current outdoor weather status. Create a networked motion detector that triggers an alert any time motion is detected, such as a door opening or closing, a pet wandering around, or deliveries or visitors arriving on your front porch. Even have these triggers initiate a more complex Go-based automation sequence. Integrate a small, high-resolution camera into a bird feeder that takes excellent, up-close photos whenever a bird perches at the feeder, and broadcasts them to your Discord server where your family and friends can see these wildlife captures in real time.\u003c\/p\u003e\u003cp\u003eControl your home with hardware you configure, and manage it with Go code that you create and modify any time you want to enhance your home automation capabilities.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003eReaders should be familiar with the Go programming language and have working knowledge of Linux. Free, open source Go-based libraries and utilities are available for download from the Internet. Readers will also need a working Raspberry Pi 3+ or higher, and a Pi Pico W microcontroller. Several other inexpensive electronic parts (touch sensors, motion detectors) are also needed for some of the projects. A Philips Hue base lighting system is also needed for the weather monitor project.\u003c\/p\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56311454826869,"sku":"9798888650509","price":32.95,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9798888650509_f0a2637d-fd3a-4b84-b71c-9945f2d236c2.jpg?v=1786033063"},{"product_id":"9798888650356","title":"A Common-Sense Guide to Data Structures and Algorithms in Python, Volume 1","description":"p\u0026gt;If you thought data structures and algorithms were all just theory, you're missing out on what they can do for your Python code. Learn to use Big O notation to make your code run faster by orders of magnitude. Choose from data structures such as hash tables, trees, and graphs to increase your code's efficiency exponentially. With simple language and clear diagrams, this book makes this complex topic accessible, no matter your background. Every chapter features practice exercises to give you the hands-on information you need to master data structures and algorithms for your day-to-day work.\u003cp\u003eAlgorithms and data structures are much more than abstract concepts. Mastering them enables you to write code that runs faster and more efficiently, which is particularly important for today's web and mobile apps. Take a practical approach to data structures and algorithms, with techniques and real-world scenarios that you can use in your daily production code. The Python edition uses Python exclusively for all code examples, exercise, and solutions.\u003c\/p\u003e\u003cp\u003eUse Big O notation to measure and articulate the efficiency of your code, and modify your algorithm to make it faster. Find out how your choice of arrays, linked lists, and hash tables can dramatically affect the code you write. Use recursion to solve tricky problems and create algorithms that run exponentially faster than the alternatives. Dig into advanced data structures such as binary trees and graphs to help scale specialized applications such as social networks and mapping software. You'll even encounter a single keyword that can give your code a turbo boost. Practice your new skills with exercises in every chapter, along with detailed solutions.\u003c\/p\u003e\u003cp\u003eUse these techniques today to make your Python code faster and more scalable.\u003c\/p\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56311454892405,"sku":"9798888650356","price":46.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9798888650356_c031e863-78ef-4a7a-b1ce-9e26a443c374.jpg?v=1786033058"},{"product_id":"9798888651018","title":"The Stress Equation","description":"\u003cp\u003eWorkplace stress is not the weakness of individuals; it's caused by systemic problems. Armed with the insights in this book, you can identify, analyze, and systematically reduce the factors that lead to poor health, low productivity, and personal burnout. This book gives you a framework for understanding stress, and a vocabulary to make it easier to discuss it among colleagues. Stress can be fixed; find out how.\u003c\/p\u003e\u003cp\u003eThe interviewer asks, \"How well do you cope with stress?\" Your response should be, \"Let's fix your environment so we don't have to.\"\u003c\/p\u003e\u003cp\u003eWork-related stress is one of the leading causes of mental illness among white-collar workers. It hurts companies, projects, and (most importantly) people! Stress is a burden that's created when teams stop working well. \u003ci\u003eThe Stress Equation\u003c\/i\u003e is a model and a tool to help talk about stress as a systemic issue. By exploring how pressure, complexity, and security interact in software teams, we move focus away from the individual, so that we can talk about stress from a team and organizational perspective. By exploring external factors, we discuss how to solve problems rather than cope with the consequences. Whether you're an individual feeling stressed or a manager who can help, you'll learn the causes of, fixes for, and how to talk about stress. We regulate pressure by how we decide how much work we have to do and when it needs to be finished. Complexity is decided by how we handle our product and organization design. Our security is less about our pay and benefits, and more about the support and trust we feel.\u003c\/p\u003e\u003cp\u003eStress should not be a given. Instead, it's a symptom of a diseased organization. With this book, you can begin the healing process.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003e\u003cp\u003eNo special requirements.\u003c\/p\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":56311490019701,"sku":"9798888651018","price":28.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9798888651018_adfb28ff-ea07-4cdd-89a8-1c6d8d0e460a.jpg?v=1786033074"},{"product_id":"advanced-hands-on-rust","title":"Advanced Hands-on Rust","description":"\u003cp\u003eAccelerate your Rust development with reusable libraries, and build a game development toolkit that helps you quickly create games using the Bevy Engine. Improve your code with testing, benchmarking, and optimization. Unlock Rust's trait and generic metaprogramming systems to develop code that adapts to fit your needs. Customize libraries with feature flags, and customize language syntax with macros. Master concurrency with threads and asynchronous programming. Structure your programs with reusable state management, menus, user interface elements, and asset management. Quickly build games with reusable physics and collision detection. Make your games pop with animations, particles, and rendering tricks, including parallax layering.\u003c\/p\u003e\u003cp\u003eAccelerate your Rust development with intermediate to advanced concepts. Build reusable libraries; unleash generics, traits, macros, and more as you level up your Rust skills. Apply your skills to build a game development toolkit that helps you quickly build 2D games without reinventing the wheel when you start a new project.\u003c\/p\u003e\u003cp\u003eEach chapter in this book includes hands-on, practical development using intermediate through advanced Rust. Make learning fun by building games as you apply language concepts. Develop several games and build the tools you need to unleash your creativity or apply the concepts to your own Rust projects.\u003c\/p\u003e\u003cp\u003eImprove your code with testing, benchmarking, and optimization. Unlock the power of Rust's trait and generic metaprogramming systems to create code that adapts to fit your needs. Customize libraries with feature flags, and customize language syntax with macros. Structure your code with reusable state management, menus, user interface elements, and asset management. Quickly build games with reusable physics and collision detection. Make your games pop with animations, particles, and rendering tricks, including parallax layering.\u003c\/p\u003e\u003cp\u003eThis book is the ideal follow-up to take the skills you gained in \u003ci\u003eHands-on Rust\u003c\/i\u003e to the next level - or it can be read stand-alone once you've mastered basic Rust.\u003c\/p\u003e\u003cp\u003e\u003cb\u003eWhat You Need:\u003c\/b\u003e\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eA computer running Windows, Mac OS, or Linux.\u003c\/li\u003e \u003cli\u003eA reasonably modern video card capable of running Vulkan, Metal, or DirectX 12.\u003c\/li\u003e\n\u003cli\u003eAn installed Rust development system.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Gardners","offers":[{"title":"Default Title","offer_id":57495336976757,"sku":"9798888650721","price":48.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0612\/7193\/3106\/files\/9798888650721.jpg?v=1786618020"}],"url":"https:\/\/backstory.london\/collections\/publisher-pragmatic-bookshelf.oembed","provider":"Backstory","version":"1.0","type":"link"}