Skip to content
- Platform Engineering as a Service (11/14/2024)
- Deployment-Driven Development (11/11/2024)
- Automating Infrastructure as Code with Vertex AI (11/5/2024)
- Understanding Konfig’s Opinionation (6/11/2024)
- No assembly required: the benefits of an opinionated platform (5/23/2024)
- How Konfig provides an enterprise platform with GitLab and Google Cloud (4/29/2024)
- Security, Maintainability, Velocity: Choose One (4/17/2024)
- Introducing Konfig: GitLab and Google Cloud preconfigured for startups and enterprises (4/4/2024)
- Choosing Good SLIs (2/19/2024)
- Cloud without Kubernetes (2/12/2024)
- Meeting notes lose value the moment you finish writing them—and it’s time to fix that (6/10/2022)
- SRE Doesn’t Scale (10/6/2021)
- Structuring a Cloud Infrastructure Organization (12/7/2020)
- We suck at meetings (11/10/2020)
- Getting big wins with small teams on tight deadlines (11/2/2020)
- Continuous Deployment for AWS Glue (10/15/2020)
- Implementing ETL on GCP (7/15/2020)
- Using Google-Managed Certificates and Identity-Aware Proxy With GKE (6/24/2020)
- Zero-Trust Security on GCP With Context-Aware Access (6/22/2020)
- Liftbridge 1.0 (4/28/2020)
- Digitally Transformed: Becoming a Technology Product Company (2/5/2020)
- Microservice Observability, Part 2: Evolutionary Patterns for Solving Observability Problems (1/3/2020)
- Microservice Observability, Part 1: Disambiguating Observability and Monitoring (10/3/2019)
- What’s Going on with GKE and Anthos? (9/17/2019)
- Serverless on GCP (8/20/2019)
- Planting Perennials Next to Potholes (4/26/2019)
- Security by Happenstance (3/26/2019)
- Authenticating Stackdriver Uptime Checks for Identity-Aware Proxy (1/29/2019)
- API Authentication with GCP Identity-Aware Proxy (1/25/2019)
- Operations in the World of Developer Enablement (1/24/2019)
- How to Level up Dev Teams (1/3/2019)
- Multi-Cloud Is a Trap (9/14/2018)
- The Observability Pipeline (9/12/2018)
- Introducing Liftbridge: Lightweight, Fault-Tolerant Message Streams (7/27/2018)
- GCP and AWS: What’s the Difference? (7/17/2018)
- Scaling DevOps and the Revival of Operations (4/18/2018)
- More Environments Will Not Make Things Easier (4/11/2018)
- There and Back Again: Why PaaS Is Passé (And Why It’s Not) (2/6/2018)
- Plant Trees Before You Need the Shade (1/29/2018)
- Building a Distributed Log from Scratch, Part 5: Sketching a New System (1/23/2018)
- Building a Distributed Log from Scratch, Part 4: Trade-Offs and Lessons Learned (1/18/2018)
- Building a Distributed Log from Scratch, Part 3: Scaling Message Delivery (1/8/2018)
- Building a Distributed Log from Scratch, Part 2: Data Replication (12/27/2017)
- Building a Distributed Log from Scratch, Part 1: Storage Mechanics (12/21/2017)
- Thrift on Steroids: A Tale of Scale and Abstraction (11/30/2017)
- Software Is About Storytelling (10/4/2017)
- FIFO, Exactly-Once, and Other Costs (8/2/2017)
- Are We There Yet: The Go Generics Debate (7/24/2017)
- You Cannot Have Exactly-Once Delivery Redux (6/30/2017)
- Smart Endpoints, Dumb Pipes (6/29/2017)
- Engineering Empathy (6/3/2017)
- The Future of Ops (5/3/2017)
- Pain-Driven Development: Why Greedy Algorithms Are Bad for Engineering Orgs (4/7/2017)
- Decision Impact (4/5/2017)
- Fast Topic Matching (12/28/2016)
- Take It to the Limit: Considerations for Building Reliable Systems (12/20/2016)
- Benchmarking Commit Logs (11/27/2016)
- You Are Not Paid to Write Code (11/16/2016)
- Shit Rolls Downhill (4/14/2016)
- Abstraction Considered Harmful (2/27/2016)
- So You Wanna Go Fast? (2/24/2016)
- Benchmarking Message Queue Latency (2/13/2016)
- From the Ground Up: Reasoning About Distributed Systems in the Real World (1/1/2016)
- Breaking and Entering: Lose the Lock While Embracing Concurrency (12/27/2015)
- Infrastructure Engineering in the 21st Century (12/15/2015)
- Everything You Know About Latency Is Wrong (12/12/2015)
- Probabilistic algorithms for fun and pseudorandom profit (12/6/2015)
- You Own Your Availability (9/22/2015)
- What You Want Is What You Don’t: Understanding Trade-Offs in Distributed Messaging (8/23/2015)
- Designed to Fail (7/21/2015)
- Service-Disoriented Architecture (6/7/2015)
- Distributed Systems Are a UX Problem (6/3/2015)
- Go Is Unapologetically Flawed, Here’s Why We Use It (5/20/2015)
- Product Development is a Trust Fall (5/5/2015)
- CAP and the Illusion of Choice (4/18/2015)
- Writing Good Code (4/7/2015)
- You Cannot Have Exactly-Once Delivery (3/25/2015)
- If State Is Hell, SOA Is Satan (3/8/2015)
- Stream Processing and Probabilistic Methods: Data at Scale (2/13/2015)
- On Hireability and Recruiting (2/1/2015)
- CS Literature of the Day (1/18/2015)
- Fast, Scalable Networking in Go with Mangos (1/10/2015)
- Benchmark Responsibly (1/2/2015)
- Not Invented Here (12/6/2014)
- Sometimes Kill -9 Isn’t Enough (11/12/2014)
- From Mainframe to Microservice: An Introduction to Distributed Systems (11/1/2014)
- Scaling Shared Data in Distributed Systems (10/21/2014)
- Understanding Consensus (9/24/2014)
- The Sharing Economy: A Race to the Bottom (8/28/2014)
- Iris Decentralized Cloud Messaging (7/22/2014)
- Dissecting Message Queues (7/7/2014)
- A Look at Nanomsg and Scalability Protocols (Why ZeroMQ Shouldn’t Be Your First Choice) (6/29/2014)
- Distributed Messaging with ZeroMQ (6/11/2014)
- Using Make with React and RequireJS (5/27/2014)
- Building User Interfaces with React (5/21/2014)
- Real-Time Client Notifications Using Redis and Socket.IO (3/8/2014)
- No More Ninjas (12/9/2013)
- The Art of Software (9/7/2013)
- Discipline in Prototyping (6/10/2013)
- Productivity Over Process (6/9/2013)
- How is Software Valued? (6/8/2013)
- Bluetooth Blues (3/19/2013)
- Implementing Spring-like Classpath Scanning in Android (1/5/2013)
- Introducing InfinitumFramework.com (1/4/2013)
- He Sed, She Sed (1/1/2013)
- Modularizing Infinitum: A Postmortem (12/27/2012)
- The Importance of Being Idle (12/19/2012)
- Dalvik Bytecode Generation (12/17/2012)
- Proxies: Why They’re Useful and How They’re Implemented (12/17/2012)
- A Look at Spring’s BeanFactoryPostProcessor (12/4/2012)
- Probabilistic Primality Testing (12/2/2012)
- Solving the Referential Integrity Problem (12/1/2012)