| 08-30-25 | Using Claude Code from Anywhere |
| 11-26-23 | Drawbacks of Moving to the Edge |
| 11-03-23 | Lessons from llama.cpp |
| 10-29-23 | On Mixing Client and Server |
| 10-28-23 | Infrastructure as Code Will be Written by AI |
| 10-22-23 | Retrieval Augmented Generation |
| 10-20-23 | Pitfalls of File-based Routing |
| 10-17-23 | The Inner-Platform Effect |
| 10-15-23 | Why Is the Frontend Stack So Complicated? |
| 10-12-23 | Nagle's Algorithm |
| 10-07-23 | Incentives Behind Programming Languages |
| 10-03-23 | Pitfalls of Database Migrations |
| 10-01-23 | Lessons From Debugging |
| 09-27-23 | Is Data Still a Moat? |
| 09-22-23 | Good Enough Abstractions |
| 09-21-23 | Automate (But Automate Last) |
| 09-07-23 | Raft: The Distributed Systems Algorithm |
| 09-03-23 | Technical Metrics to Track in Engineering Orgs |
| 09-02-23 | TypeScript Type System Hacks |
| 08-23-23 | Copy and Paste Libraries |
| 08-14-23 | Why Tailwind CSS Won |
| 08-07-23 | Majority Rule Developers |
| 08-02-23 | Data Versioning |
| 07-29-23 | Git Merge Strategies and Algorithms |
| 07-15-23 | Scale to Zero for AI Workloads |
| 07-14-23 | Stop Overengineering |
| 07-11-23 | Why Frameworks Fail |
| 07-05-23 | Avoiding Footguns |
| 07-03-23 | Myths About ORMs |
| 06-26-23 | Platform Engineering vs. DevOps |
| 06-23-23 | What Comes After Kubernetes? |
| 06-19-23 | Merge Queues |
| 06-02-23 | Practical Dependency Management for Developers |
| 05-30-23 | Templating Magic Isn't Free |
| 05-27-23 | Prompt Engineering is Configuration Engineering |
| 05-23-23 | The Local Development Story |
| 05-21-23 | The New Tax on Engineering Against the Grain |
| 05-09-23 | Why Declarative Build Systems Aren’t Popular |
| 05-07-23 | On-Demand Package Manager |
| 05-05-23 | ReLLM: Exact Structure for Large Language Model Completions |
| 05-04-23 | llm.ts |
| 05-03-23 | The Python Family of Languages |
| 05-02-23 | WebGPU and the New OS |
| 04-29-23 | React Component as the API |
| 04-25-23 | 16 Lessons from the Tanenbaum–Torvalds Debates |
| 04-24-23 | Tanenbaum–Torvalds Debates, Part 1 |
| 04-23-23 | The ptrace syscall |
| 04-22-23 | Building a Kernel From Scratch |
| 04-08-23 | The Path Dependence of YAML |
| 03-31-23 | Reflections on 10,000 Hours of DevOps |
| 03-28-23 | Kubernetes as a Dev Tool |
| 03-20-23 | Framework-Defined Infrastructure |
| 03-19-23 | The Missing Semester of CS |
| 03-16-23 | On OpenAI's Kubernetes Cluster |
| 03-13-23 | On Prompt Injection |
| 03-12-23 | Local LLaMA on a Mac M1 |
| 03-06-23 | Applications, Services, and Workflows Overload |
| 02-21-23 | Why DSLs Fail |
| 02-17-23 | Interfaces for Uncertainty |
| 02-13-23 | Blurring Language Boundaries |
| 02-07-23 | Docker Without Docker |
| 02-06-23 | Applications of Gall's Law |
| 02-04-23 | Stack Shift |
| 01-30-23 | The Frontend Bundling Cycle |
| 01-29-23 | Type-Safe API Calls: tRPC vs. gRPC |
| 01-26-23 | What Doesn't Fit in Git |
| 01-24-23 | Workflow Engine Paradigms |
| 01-23-23 | Prompt Engineering Shouldn't Exist |
| 01-21-23 | How to Version an API |
| 01-18-23 | Rebuilding in Rust |
| 01-16-23 | The Problem with Drag-n-Drop Infrastructure |
| 01-08-23 | Fine-Tuning an OCR Model |
| 12-22-22 | Backward Compatibility |
| 12-18-22 | Vector Search |
| 12-16-22 | Docker as a DevTool Platform |
| 12-14-22 | LAION, The Pile, and more datasets |
| 12-13-22 | Abstracting the Infrastructure |
| 12-10-22 | An Ideal CI/CD System |
| 12-04-22 | The Frontend Ouroboros |
| 11-30-22 | Do Cold Starts Matter? |
| 11-29-22 | Sharing a Notebook |
| 11-28-22 | Fuzzy Databases |
| 11-26-22 | Technical Posts Overview and Roundup |
| 11-22-22 | Why Do Configuration Changes Cause Outages? |
| 11-17-22 | Windows Subsystem for Linux |
| 11-13-22 | LLMs for Code |
| 11-12-22 | What is a Token? A Technical Explanation |
| 11-09-22 | What are Containers? |
| 11-04-22 | Mastering the Command Line |
| 10-29-22 | Deploy Early, Deploy Often |
| 10-27-22 | The Inner Dev Loop |
| 10-24-22 | Kubernetes Interfaces |
| 10-22-22 | Exploiting Protocols for Fun |
| 10-19-22 | AI Scaling Laws |
| 10-11-22 | Why Is NixOS Popular Again? |
| 10-10-22 | Where Logic Lives |
| 10-07-22 | eBPF File Watching |
| 10-06-22 | Reentrancy Attacks |
| 10-05-22 | Perceptual Hashing |
| 10-01-22 | The Promise of Write Once, Run Anywhere |
| 09-29-22 | Thoughts on GitHub Actions |
| 09-23-22 | Infrastructure Defined Software |
| 09-22-22 | Tree Shaking |
| 09-21-22 | Rust, C++, or Carbon? |
| 09-20-22 | It's Just a Tarball |
| 09-17-22 | Google Infra For Everyone Else in 2022 |
| 09-15-22 | When To Roll Your Own X |
| 09-13-22 | GraphQL Trades Complexity |
| 09-12-22 | TensorFlow vs. PyTorch |
| 09-11-22 | Recursive-length Prefix (RLP)/Simple Serialize (SSZ) |
| 09-10-22 | SQLite Doesn't Use Git |
| 09-09-22 | Materializing Results |
| 09-08-22 | The Lost Art of System Administration |
| 09-07-22 | Performance Comes Last |
| 09-06-22 | Two Approaches to Prompt Engineering |
| 09-05-22 | WASI vs. WASM |
| 09-04-22 | Libraries > Languages |
| 08-30-22 | The Commoditization of Large Language Models: Part 2 |
| 08-27-22 | It's Harder to Read Code Than Write It |
| 08-26-22 | Developer Platform Table Stakes |
| 08-20-22 | Webhooks Aren't So Bad |
| 08-19-22 | The Issues with Buildpacks |
| 08-17-22 | Tradeoffs in API Design |
| 08-15-22 | Cloud Native Localhost |
| 08-14-22 | Towards Granular Compute |
| 08-12-22 | The Unreasonable Effectiveness of Makefiles |
| 08-10-22 | Developers Should Deploy Their Own Code |
| 08-07-22 | Component-driven Markup |
| 08-05-22 | Will v8 Isolates Coexist With Containers? |
| 08-04-22 | The End-to-End Principle in System Design |
| 08-02-22 | Open-Source and Quadratic Funding |
| 08-01-22 | The New Wave Frontend Toolchain |
| 07-30-22 | A First-Class Language Package Manager |
| 07-27-22 | Lisp and Spreadsheets |
| 07-25-22 | Defensible Machine Learning Model Naming |
| 07-24-22 | Fault-Tolerant Design |
| 07-23-22 | Non-Obvious Docker Uses |
| 07-22-22 | Pull Request is Now the Unit of Review |
| 07-21-22 | Presentation Next to Code |
| 07-19-22 | The Quick Uptake of ARM on Cloud |
| 07-18-22 | Stacked Pull Requests |
| 07-14-22 | The Story of CP/M |
| 07-11-22 | The Remix IDE |
| 07-10-22 | SSH: Less Relevant In the Cloud |
| 07-08-22 | Smart Contract Immutability |
| 07-06-22 | How Kubernetes Broke Git |
| 07-05-22 | Commoditization of Large Language Models |
| 07-04-22 | What Comes After Git |
| 07-03-22 | A Look Into My Development Stack |
| 06-29-22 | 16 Bell-Curve Opinions on Engineering |
| 06-28-22 | History of Version Control Systems: Part 3 |
| 06-27-22 | History of Version Control Systems: Part 2 |
| 06-26-22 | History of Version Control Systems |
| 06-22-22 | How to Use GitHub Copilot Effectively |
| 06-21-22 | Least Common Denominator APIs |
| 06-20-22 | Every Sufficiently Advanced Configuration Language is Wrong |
| 06-18-22 | Plaintext Protocols |
| 06-17-22 | Thoughts on RSS |
| 06-14-22 | Don't Use Kubernetes, Yet |
| 06-09-22 | Are Platform Teams Dead? |
| 06-05-22 | Fallacies of Distributed Systems |
| 06-02-22 | A Napkin Architecture of Ethereum Interfaces for Developers |
| 05-31-22 | Programming to the Interface |
| 05-27-22 | ETL vs. Platform Extensibility |
| 05-25-22 | Text to Image Diffusion Models |
| 05-23-22 | A Universal Package Manager |
| 05-22-22 | Smart Contract Language Runtimes |
| 05-21-22 | A Short Primer on eBPF |
| 05-17-22 | SQLite Renaissance |
| 05-16-22 | PaaS Design Principles |
| 05-15-22 | The Problem of Sharing Code |
| 05-12-22 | Null Programming Philosophy |
| 05-11-22 | Future of Passwords |
| 05-10-22 | Request for Product: Typescript Docker Construct |
| 05-08-22 | Code Managed Service is Coming For Static Sites |
| 05-07-22 | Taking on Good Technical Debt |
| 05-06-22 | Elevator Data Structures and Algorithms |
| 05-03-22 | Miner Extractable Value |
| 05-02-22 | {Java,Py}Script |
| 04-25-22 | Merkle Trees |
| 04-20-22 | Serverside, or Clientside WASM? |
| 04-15-22 | Schema-driven Development |
| 04-13-22 | Accidentally Turing Complete |
| 04-12-22 | Why So Many Outages? |
| 04-11-22 | Language Server Protocols |
| 04-10-22 | Plan9: Everything is (Really) a File |
| 04-05-22 | Scaling Ethereum: Horizontal/Vertical |
| 04-04-22 | Zero Knowledge Proofs |
| 04-03-22 | Configuration-to-Code |
| 04-02-22 | Engineering Against the Grain |
| 03-31-22 | $ make docker |
| 03-27-22 | Elliptic Curve Cryptography for Beginners |
| 03-25-22 | Build-as-Code |
| 03-23-22 | SaaS is the New Microservices |
| 03-20-22 | Embrace. Extend. Extinguish. |
| 03-18-22 | Developer Velocity |
| 03-17-22 | API Warfare |
| 03-15-22 | GitHub Isn't About Code |
| 03-14-22 | youtube-dl and Google |
| 03-12-22 | Blockchain Trade-offs: Part 3 – Incentives |
| 03-11-22 | Blockchain Trade-offs: Part 2 - Privacy |
| 03-10-22 | Blockchain Trade-offs |
| 03-07-22 | Environment Parity |
| 03-06-22 | Wire Protocols and APIs |
| 03-05-22 | SPAs weren't a mistake |
| 03-04-22 | Latency Numbers You Should Know (2022) |
| 02-28-22 | Year 2038 Problem |
| 02-27-22 | Software Convention in Consistency |
| 02-25-22 | Squash, Merge, or Rebase? |
| 02-18-22 | Spectrum of Reproducibility |
| 02-17-22 | Shodan and Port-Knocking |
| 02-15-22 | Compiled Configuration Stack |
| 02-12-22 | Algorithmic Fairness |
| 02-11-22 | Why TypeScript for Infrastructure? |
| 02-09-22 | Optimization is Fragile |
| 01-29-22 | Software Half-Life |
| 01-26-22 | Source Code Generation |
| 01-25-22 | The Declarative Trap |
| 01-22-22 | Software Mullets |
| 01-21-22 | Embedded DevOps Teams |
| 01-19-22 | Technical Perfection and Irrelevance |
| 01-18-22 | Layer Above, Layer Below |
| 01-14-22 | Code or Issues in DevOps Platform(s)? |
| 01-13-22 | AWS is Not a Dumb Pipe |
| 01-05-22 | VPN as a Dev Tool |
| 01-03-22 | Pair Programming Doesn't Scale |
| 01-02-22 | Increasing Bus Factor |
| 12-27-21 | Developer Network Effects |
| 12-23-21 | Lost Art of Arch Linux |
| 12-22-21 | Hunting Bugs with Bisect |
| 12-19-21 | The Real Fix for Log4j Isn't a Patch. |
| 12-18-21 | Next-Gen Terminals |
| 12-12-21 | Is Open Source Free Riding Bad? |
| 12-11-21 | U-Shaped Utility of Monorepos |
| 12-09-21 | Toolchain Sprawl |
| 12-04-21 | If It Can Be Compiled, It Will Be |
| 12-03-21 | Every DevOps Company is an Observability Company |
| 11-30-21 | On Centralization |
| 11-26-21 | Netlify, Vercel, and AWS Amplify |
| 11-23-21 | Shortcomings of Diff3 |
| 11-22-21 | How Git Merges |
| 11-20-21 | How to Comment Your Code |
| 11-19-21 | The Terrible UX of Git |
| 11-17-21 | GitHub's Missing Package Manager |
| 11-16-21 | The Collision Course of Databricks and Snowflake |
| 11-12-21 | A Browser for Developers |
| 11-10-21 | Open Infrastructure |
| 11-09-21 | Open-sourced GPT-J |
| 11-07-21 | Where is the Edge? |
| 11-05-21 | The Next Design Systems |
| 10-27-21 | Data Planes and Control Planes |
| 10-22-21 | Scoping Developer Tools |
| 10-21-21 | IDE as a Platform |
| 10-20-21 | Agent vs. Agentless Future |
| 10-19-21 | A Short History of the M1 Chip |
| 10-17-21 | Alternative Data on Developer Products |
| 10-16-21 | Top-Down JAMStack vs. Cloud |
| 10-15-21 | The GitLab Upgrade |
| 10-14-21 | Takeaways From JetBrain's Developer Survey 2021 |
| 10-13-21 | Templating: When to Move Along the Heptagon |
| 10-12-21 | Kubernetes in the Data Stack |
| 10-10-21 | The Tarpit |
| 10-09-21 | The Changelog Podcast #463 |
| 10-08-21 | Open Source Reckoning |
| 10-06-21 | What is BGP? |
| 10-05-21 | The Birth & Death of JavaScript |
| 09-30-21 | What is RISC-V? |
| 09-26-21 | Developer Experience |
| 09-25-21 | Knuth and McIlroy Approach a Problem |
| 09-22-21 | The Unbundling of the Software Developer |
| 09-21-21 | The Problems with "Cloud-Prem" |
| 09-19-21 | Remote Developer Environments are Cool Again (Kind of) |
| 09-18-21 | Laws of Software Evolution |
| 09-17-21 | Infrastructure as SQL |
| 09-16-21 | The Data Stack As a Snowflake |
| 09-15-21 | How to Calculate a CIDR |
| 09-12-21 | Frustrations of Modern Development |
| 09-11-21 | Software Treadmills |
| 09-10-21 | The End of CI |
| 09-09-21 | Ten Things I Look For In a Code Review |
| 09-07-21 | As We Thought |
| 09-01-21 | An Overview of Docker Desktop Alternatives |
| 08-31-21 | Your Integration Tests are Too Long |
| 08-30-21 | SaaS Isolation Patterns |
| 08-29-21 | Buying IPv4 Addresses |
| 08-26-21 | Incremental Compilation in Build Systems |
| 08-24-21 | What Low-Code Lacks |
| 08-23-21 | Keep Your API Surface Small |
| 08-22-21 | Nine Circles of Dependency Hell |
| 08-19-21 | Tracking Cyclomatic Complexity |
| 08-17-21 | One Month of Using GitHub Copilot |
| 08-16-21 | DRY Considered Harmful |
| 08-15-21 | Yak Shaving |
| 08-11-21 | Growing Your Open Source Project: Part 3 – Users |
| 08-10-21 | Growing Your Open Source Project: Part 2 – Community |
| 08-09-21 | Growing Your Open Source Project: Part 1 – Contributors |
| 08-08-21 | Service Reliability Math that Every Engineer Should Know |
| 08-07-21 | Coding Classical Latin |
| 08-06-21 | Confessions of an Internal Tool Builder |
| 08-05-21 | Unexpected Developer Trends |
| 08-02-21 | Reflections on 10,000 Hours of Programming |
| 07-30-21 | How Multiplayer Data Structures Work |
| 07-27-21 | Kubernetes Maximalism |
| 07-25-21 | The IKEA Effect in Software Development |
| 07-23-21 | Functions as a Service |
| 07-20-21 | Open-Source and Firm-Specific Training |
| 07-19-21 | In Defense of the Jupyter Notebook |
| 07-18-21 | Code Poems |
| 07-17-21 | Ship Thesean Software |
| 07-15-21 | A Personal Internet |
| 07-14-21 | Everything is a Graph |
| 07-12-21 | Package Managers and Developer Productivity |
| 07-10-21 | GitHub Copilot |
| 07-04-21 | Makers of Patterns: Part 2 |
| 07-03-21 | Maker of Patterns: Part 1 |
| 07-02-21 | What is WebAssembly? |
| 07-01-21 | What is MicroSaaS? |
| 06-30-21 | Jevons Paradox and Software Efficiency |
| 06-27-21 | Code Transparency |
| 06-26-21 | Machine Learning Operations (MLOps), Convergent or Divergent? |
| 06-23-21 | Live Programming |
| 06-19-21 | The End of Per-node Pricing |
| 06-18-21 | Software Wants to be Simple |
| 06-15-21 | Declarative vs. Imperative |
| 06-14-21 | Diseconomies of Scale at Google |
| 06-05-21 | The Developer Economy |
| 06-04-21 | APIs Will Disrupt Rpa. This Is Obvious to Engineers. |
| 06-03-21 | Organic Cloud Infrastructure |
| 06-01-21 | Docker Is a Compiler |
| 03-14-21 | ScapeNet: Real-time object detection in RuneScape |
| 02-03-21 | Docker Merge |
| 07-08-20 | Virgo: a Graph-based Configuration Language |
| 02-22-19 | 6 Open Source Licenses That You Shouldn't Use |
| 01-10-19 | An Alternative to the Dockerfile |
| 01-01-19 | The Heptagon of Configuration |
| 10-22-18 | Should Your Developers Work in the Cloud? |
| 10-11-18 | Fast Kubernetes Development with File Sync and Smart Rebuilds |
| 10-06-18 | Unit Testing with the Kubernetes Client Library |