54,302 blogs · [ { "id": "01a07df4-9c85-71c8-ab33-a935c2f6ffd9", "title": "Practical Programming, Fourth Edition (4th edition)", "url": "https://pragprog.com/titles/gwpy4/practical-programming-fourth-edition-4th-edition/", "published_at": "2026-07-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c3e0be9f", "title": "You Gotta Be Freakin' Kidding Me!", "url": "https://pragprog.com/news/you-gotta-be-freakin-kidding-me/", "published_at": "2026-07-08T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c48120af", "title": "Outsourcing and AI", "url": "https://pragprog.com/news/outsourcing-and-ai/", "published_at": "2026-06-24T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c50a2bfe", "title": "Katamari Development", "url": "https://pragprog.com/news/katamari-development/", "published_at": "2026-06-17T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c5ccbf83", "title": "Programming Ruby 4 (6th edition)", "url": "https://pragprog.com/titles/ruby6/programming-ruby-4-6th-edition/", "published_at": "2026-06-13T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c5eca23e", "title": "Eloquent Ruby, Second Edition", "url": "https://pragprog.com/titles/eruby2/eloquent-ruby-second-edition/", "published_at": "2026-06-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c68dcc67", "title": "Process Over Magic: Beyond Vibe Coding", "url": "https://pragprog.com/titles/ubaidev/process-over-magic-beyond-vibe-coding/", "published_at": "2026-06-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c768cfb1", "title": "Spring Forward Sale - Keep Growing", "url": "https://pragprog.com/news/spring-forward-sale-keep-growing/", "published_at": "2026-06-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c79df447", "title": "Spring Forward Sale - The Human Side", "url": "https://pragprog.com/news/spring-forward-sale-the-human-side/", "published_at": "2026-06-03T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c816190d", "title": "Spring Forward Sale Continues!", "url": "https://pragprog.com/news/spring-forward-sale-continues/", "published_at": "2026-05-20T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c8e191a9", "title": "Spring Forward - Week Two", "url": "https://pragprog.com/news/spring-forward-week-two/", "published_at": "2026-05-13T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c9208580", "title": "Debugging TypeScript Applications", "url": "https://pragprog.com/titles/aodjs/debugging-typescript-applications/", "published_at": "2026-05-12T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c9246e87", "title": "A Common-Sense Guide to AI Engineering", "url": "https://pragprog.com/titles/jwpaieng/a-common-sense-guide-to-ai-engineering/", "published_at": "2026-05-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935c98a0cfc", "title": "Programming Clojure, Fourth Edition", "url": "https://pragprog.com/titles/shcloj4/programming-clojure-fourth-edition/", "published_at": "2026-05-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ca896778", "title": "Spring Forward", "url": "https://pragprog.com/news/spring-forward/", "published_at": "2026-05-07T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cac29444", "title": "Debugging TypeScript Applications in Print", "url": "https://pragprog.com/news/debugging-typescript-applications-in-print/", "published_at": "2026-05-05T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cbb3e8e9", "title": "Process Over Magic: Beyond Vibe Coding - Now in Print", "url": "https://pragprog.com/news/process-over-magic-beyond-vibe-coding-now-in-print/", "published_at": "2026-04-29T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cbc02663", "title": "A Common-Sense Guide to AI Engineering", "url": "https://pragprog.com/news/a-common-sense-guide-to-ai-engineering/", "published_at": "2026-04-15T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cbd4a30d", "title": "Haskell Brain Teasers", "url": "https://pragprog.com/titles/haskellbt/haskell-brain-teasers/", "published_at": "2026-04-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cc311b73", "title": "Accelerated Project Lifecycles", "url": "https://pragprog.com/news/accelerated-project-lifecycles/", "published_at": "2026-04-08T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cc6707e5", "title": "Programming Clojure in Print", "url": "https://pragprog.com/news/programming-clojure-in-print/", "published_at": "2026-04-01T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cc73af35", "title": "It's Programming, and It's Fun", "url": "https://pragprog.com/news/it-s-programming-and-it-s-fun/", "published_at": "2026-03-25T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cce88517", "title": "Haskell Brain Teasers", "url": "https://pragprog.com/news/haskell-brain-teasers/", "published_at": "2026-03-18T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cd0c6311", "title": "More SQL Antipatterns", "url": "https://pragprog.com/titles/bksap2/more-sql-antipatterns/", "published_at": "2026-03-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cd3b8301", "title": "Risk-First Software Development", "url": "https://pragprog.com/news/risk-first-software-development/", "published_at": "2026-03-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cdcc560c", "title": "Programming Phoenix LiveView", "url": "https://pragprog.com/news/programming-phoenix-liveview/", "published_at": "2026-03-04T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ce7d4f25", "title": "Be a Luddite - Embrace AI", "url": "https://pragprog.com/news/be-a-luddite-embrace-ai/", "published_at": "2026-02-25T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ceb951a3", "title": "Programming is (still) mostly editing", "url": "https://pragprog.com/news/programming-is-still-mostly-editing/", "published_at": "2026-02-18T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cf74fe29", "title": "2026-01-29 Cold snap", "url": "https://pragprog.com/news/2026-01-29-cold-snap/", "published_at": "2026-01-29T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cfe6ceee", "title": "Advanced Functional Programming with Elixir", "url": "https://pragprog.com/titles/jkelixir/advanced-functional-programming-with-elixir/", "published_at": "2026-01-15T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935cff95ba5", "title": "Programming Phoenix LiveView", "url": "https://pragprog.com/titles/liveview/programming-phoenix-liveview/", "published_at": "2026-01-15T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d0ac89c6", "title": "More SQL Antipatterns: Now in Beta", "url": "https://pragprog.com/news/more-sql-antipatterns-now-in-beta/", "published_at": "2026-01-14T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d0df0eb2", "title": "The Healthy Programmer, 2nd edition in print", "url": "https://pragprog.com/news/the-healthy-programmer-2nd-edition-in-print/", "published_at": "2026-01-11T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d1dceafa", "title": "Build, Tune, Explore with OpenWebRX+", "url": "https://pragprog.com/titles/rmwebrx/build-tune-explore-with-openwebrx/", "published_at": "2026-01-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d2745e15", "title": "Risk-First Software Development, Second Edition", "url": "https://pragprog.com/titles/rmrfsd/risk-first-software-development-second-edition/", "published_at": "2026-01-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d2e384df", "title": "Practical Programming, 4th edition", "url": "https://pragprog.com/news/practical-programming-4th-edition/", "published_at": "2026-01-07T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d39cc9ff", "title": "Insight, Intuition, Inspiration", "url": "https://pragprog.com/news/insight-intuition-inspiration/", "published_at": "2025-12-31T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d3dc9dc0", "title": "The Giver Who Keeps On Gifting", "url": "https://pragprog.com/news/the-giver-who-keeps-on-gifting/", "published_at": "2025-12-25T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d4ae2461", "title": "Write Better with Vale", "url": "https://pragprog.com/titles/bhvale/write-better-with-vale/", "published_at": "2025-12-18T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d58b04fb", "title": "Web-Connected Software-Defined Radio Made Simple", "url": "https://pragprog.com/news/web-connected-software-defined-radio-made-simple/", "published_at": "2025-12-16T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d6891eb3", "title": "The Healthy Programmer, Second Edition", "url": "https://pragprog.com/titles/jkthp2/the-healthy-programmer-second-edition/", "published_at": "2025-12-14T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d6d88a42", "title": "Debugging TypeScript Applications", "url": "https://pragprog.com/news/debugging-typescript-applications/", "published_at": "2025-12-04T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d783237b", "title": "Save 50% at the Pragmatic Bookshelf", "url": "https://pragprog.com/news/save-50-at-the-pragmatic-bookshelf/", "published_at": "2025-11-19T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d7b04987", "title": "The Human Touch", "url": "https://pragprog.com/news/the-human-touch/", "published_at": "2025-11-12T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d7b5bd4c", "title": "Advanced Functional Programming with Elixir", "url": "https://pragprog.com/news/advanced-functional-programming-with-elixir/", "published_at": "2025-11-04T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d7c274b3", "title": "Common Sense Guide to AI Engineering", "url": "https://pragprog.com/news/common-sense-guide-to-ai-engineering/", "published_at": "2025-10-29T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d8662e6f", "title": "Announcing Programming Clojure #4", "url": "https://pragprog.com/news/announcing-programming-clojure-4/", "published_at": "2025-10-22T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d8fa5d44", "title": "Advanced Hands-on Rust", "url": "https://pragprog.com/news/advanced-hands-on-rust/", "published_at": "2025-10-14T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935d999273a", "title": "Advanced Hands-on Rust", "url": "https://pragprog.com/titles/hwmrust/advanced-hands-on-rust/", "published_at": "2025-10-14T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935da0ecfea", "title": "Kotlin Brain Teasers", "url": "https://pragprog.com/titles/kotlinbt/kotlin-brain-teasers/", "published_at": "2025-10-10T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935da9d77a3", "title": "Haskell Brain Teasers, in beta", "url": "https://pragprog.com/news/haskell-brain-teasers-in-beta/", "published_at": "2025-10-02T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935db96af5d", "title": "The Stress Equation", "url": "https://pragprog.com/titles/a-stresseq/the-stress-equation/", "published_at": "2025-09-30T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935dc3d19bf", "title": "The Stress Equation (audio book)", "url": "https://pragprog.com/news/the-stress-equation-audio-book/", "published_at": "2025-09-30T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935dcf3dcdc", "title": "Vector Search with JavaScript", "url": "https://pragprog.com/titles/bgvector/vector-search-with-javascript/", "published_at": "2025-09-25T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935dd033e08", "title": "Vector Search with JavaScript, in print", "url": "https://pragprog.com/news/vector-search-with-javascript-in-print/", "published_at": "2025-09-25T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935dd174cfa", "title": "A Common-Sense Guide to Data Structures and Algorithms in Python, Volume 2", "url": "https://pragprog.com/titles/jwpython2/a-common-sense-guide-to-data-structures-and-algorithms-in-python-volume-2/", "published_at": "2025-09-23T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ddbbbbcc", "title": "A Common-Sense Guide to Data Structures and Algorithms in Python, Volume 2, in print", "url": "https://pragprog.com/news/a-common-sense-guide-to-data-structures-and-algorithms-in-python-volume-2-in-print/", "published_at": "2025-09-23T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935de193aaf", "title": "Kotlin Brain Teasers, in print", "url": "https://pragprog.com/news/kotlin-brain-teasers-in-print/", "published_at": "2025-09-16T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935df0a3240", "title": "Hotwire Native for Rails Developers, in print", "url": "https://pragprog.com/news/hotwire-native-for-rails-developers-in-print/", "published_at": "2025-09-11T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935dffbed2c", "title": "Write Better with Vale, in beta", "url": "https://pragprog.com/news/write-better-with-vale-in-beta/", "published_at": "2025-09-09T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e0e0f9b2", "title": "Risk-First Software Development, Second Edition, in beta", "url": "https://pragprog.com/news/risk-first-software-development-second-edition-in-beta/", "published_at": "2025-09-04T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e18d20e2", "title": "Ash: a better structure for your apps", "url": "https://pragprog.com/news/ash-a-better-structure-for-your-apps/", "published_at": "2025-09-02T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e1ba31e6", "title": "Hotwire Native for Rails Developers", "url": "https://pragprog.com/titles/jmnative/hotwire-native-for-rails-developers/", "published_at": "2025-09-01T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e2358958", "title": "Android Studio Narwhal Essentials-Java Edition", "url": "https://pragprog.com/news/android-studio-narwhal-essentials-java-edition/", "published_at": "2025-08-28T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e283c55d", "title": "Android Studio Narwhal Essentials-Java Edition", "url": "https://pragprog.com/titles/d-nsnarwhal/android-studio-narwhal-essentials-java-edition/", "published_at": "2025-08-28T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e34faa62", "title": "Experiment Effectively", "url": "https://pragprog.com/news/experiment-effectively/", "published_at": "2025-08-26T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e3bea488", "title": "Network Programming in Elixir and Erlang", "url": "https://pragprog.com/titles/alnpee/network-programming-in-elixir-and-erlang/", "published_at": "2025-08-21T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e3db9d6a", "title": "There's more to networking than HTTP.", "url": "https://pragprog.com/news/there-s-more-to-networking-than-http/", "published_at": "2025-08-21T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e4127c6f", "title": "Advanced Functional Programming with Elixir, in beta", "url": "https://pragprog.com/news/advanced-functional-programming-with-elixir-in-beta/", "published_at": "2025-08-19T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e41595f1", "title": "Ash Framework", "url": "https://pragprog.com/titles/ldash/ash-framework/", "published_at": "2025-08-15T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e49424b8", "title": "No Wires, No Limits", "url": "https://pragprog.com/news/no-wires-no-limits/", "published_at": "2025-08-14T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e56a5590", "title": "Jetpack Compose 1.8 Essentials", "url": "https://pragprog.com/news/jetpack-compose-1-8-essentials/", "published_at": "2025-08-12T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e5f1c388", "title": "Jetpack Compose 1.8 Essentials", "url": "https://pragprog.com/titles/d-nsjetpack18/jetpack-compose-1-8-essentials/", "published_at": "2025-08-12T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e65e420d", "title": "Kotlin Coroutine Confidence, in print", "url": "https://pragprog.com/news/kotlin-coroutine-confidence-in-print/", "published_at": "2025-08-07T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e6dc07ac", "title": "Newsletter: Classes With No State Are Not Classes", "url": "https://pragprog.com/news/newsletter-classes-with-no-state-are-not-classes/", "published_at": "2025-08-05T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e77b997b", "title": "Classless Can Be Classy", "url": "https://pragprog.com/news/classless-can-be-classy/", "published_at": "2025-07-29T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e8324ca0", "title": "Real-World Kanban, Second Edition", "url": "https://pragprog.com/titles/mskanban2/real-world-kanban-second-edition/", "published_at": "2025-07-24T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e864433c", "title": "Real-World Kanban, Second Edition, in print", "url": "https://pragprog.com/news/real-world-kanban-second-edition-in-print/", "published_at": "2025-07-24T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e8c67d76", "title": "Kotlin Coroutine Confidence", "url": "https://pragprog.com/titles/sckotlin/kotlin-coroutine-confidence/", "published_at": "2025-07-20T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e90ed66c", "title": "In the end, it's about people", "url": "https://pragprog.com/news/in-the-end-it-s-about-people/", "published_at": "2025-07-17T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935e93d65eb", "title": "Vector Search with JavaScript, in beta", "url": "https://pragprog.com/news/vector-search-with-javascript-in-beta/", "published_at": "2025-07-09T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ea0f7637", "title": "Agile Web Development with Rails 8, in print", "url": "https://pragprog.com/news/agile-web-development-with-rails-8-in-print/", "published_at": "2025-07-02T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ea3b854f", "title": "More OCaml", "url": "https://pragprog.com/news/more-ocaml/", "published_at": "2025-06-25T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ea9a9e94", "title": "More OCaml", "url": "https://pragprog.com/titles/d-jwocaml/more-ocaml/", "published_at": "2025-06-25T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935eb2eccc3", "title": "Agile Web Development with Rails 8", "url": "https://pragprog.com/titles/rails8/agile-web-development-with-rails-8/", "published_at": "2025-06-20T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ec0a7ec7", "title": "simplicity", "url": "https://pragprog.com/titles/dtcode/simplicity/", "published_at": "2025-06-15T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ec1f9d23", "title": "Next-Level A/B Testing", "url": "https://pragprog.com/titles/abtestprac/next-level-a-b-testing/", "published_at": "2025-06-11T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ecad7380", "title": "Next-Level A/B Testing, in print", "url": "https://pragprog.com/news/next-level-a-b-testing-in-print/", "published_at": "2025-06-11T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ed589139", "title": "Rails Scales! in print", "url": "https://pragprog.com/news/rails-scales-in-print/", "published_at": "2025-06-05T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ed6a4f23", "title": "Kotlin Brain Teasers, in beta", "url": "https://pragprog.com/news/kotlin-brain-teasers-in-beta/", "published_at": "2025-05-29T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ed7d99d2", "title": "40% Off! Spring Sale 2025 Last Chance", "url": "https://pragprog.com/news/40-off-spring-sale-2025-last-chance/", "published_at": "2025-05-27T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ee2aa3dc", "title": "Cruising Along with Java, in print", "url": "https://pragprog.com/news/cruising-along-with-java-in-print/", "published_at": "2025-05-22T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ee7f78a9", "title": "Cruising Along with Java", "url": "https://pragprog.com/titles/vscajava/cruising-along-with-java/", "published_at": "2025-05-20T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ef2d39b1", "title": "Elixir Patterns", "url": "https://pragprog.com/news/elixir-patterns/", "published_at": "2025-05-20T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ef3e26bc", "title": "Elixir Patterns", "url": "https://pragprog.com/titles/d-akelixir/elixir-patterns/", "published_at": "2025-05-20T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935ef3e46b6", "title": "Northwind Elixir Traders", "url": "https://pragprog.com/news/northwind-elixir-traders/", "published_at": "2025-05-15T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935f026e62b", "title": "Northwind Elixir Traders", "url": "https://pragprog.com/titles/d-itnet/northwind-elixir-traders/", "published_at": "2025-05-15T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935f0bbcca2", "title": "Rails Scales!", "url": "https://pragprog.com/titles/cprpo/rails-scales/", "published_at": "2025-05-15T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935f0bdd7b3", "title": "40% Off! Spring Sale Week Six", "url": "https://pragprog.com/news/40-off-spring-sale-week-six/", "published_at": "2025-05-13T00:00:00+00:00" }, { "id": "01a07df4-9c85-71c8-ab33-a935f0d4cd3b", "title": "Become an Effective Software Engineering Manager (audio book)", "url": "https://pragprog.com/news/become-an-effective-software-engineering-manager-audio-book/", "published_at": "2025-05-08T00:00:00+00:00" } ] posts Claim your blog
Back to Pragmatic Bookshelf Blog
Blog · corpus.blog/blogs/pragprog.com/posts

Pragmatic Bookshelf Blog

pragprog.com

2026

2025