Insightful articles and examples to help you become a better software developer
- tef - how (not) to write a pipeline
- Jamie Brandon - Coding
- Jamie Brandon - The shape of data
- Your "Simulation" Might Not Need State
- Gary Bernhardt - Boundaries
- How to Test
- Learnings from 5 years of tech startup code audits
- The Hitchhiker's Guide to the Unexpected
- What "Worse is Better vs The Right Thing" is really about
- The most important thing to understand about queues
- Files are fraught with peril
- Rethinking Programming: Automated Observability
- Bug analytics
- A brief history of the UUID
- Centrifuge: a reliable system for delivering billions of events per day
- Lessons from 6 software rewrite storieshqRLJfPzXab7vUUxRFrbQscF
- Specific vs. general: Which is better?
- Why do config changes keep coming up in major incidents?
- I test in prod
- What is your take on checking return values?
- Repeat yourself, do more than one thing, and rewrite everything
- Scaling in the presence of errors—don’t ignore them
- Write code that is easy to delete, not easy to extend.
- A primer on functional architecture
- The Value of Values
- In space, no one can hear you kernel panic
- Observations on Observability
- The Passport: A Tool for Better Metrics
- Cybernetics Versus Informatics: Understanding the Type Wars
- Taming Complexity with Reversibility
- SRE as a Lifestyle Choice
- A freemium model for scheduling
- John Hughes - Testing the Hard Stuff and Staying Sane
- Say NO to Venn Diagrams When Explaining JOINs
- How Dark deploys code in 50ms
- STAMPing on event-stream
- Waste – An ever evolving struggle against waste
- Boundaries
- Lessons Learned while Working on Large-Scale Server Software
- Property-Based Testing Basics
- Metamorphic Testing
- Microservices versus Lean
- What programming is like
- Our Software Dependency Problem - Russ Cox
- The Perils of Semantic Coupling
- Faceted Identities
- Spectrum of Change
- Give Them The Button!
- Some Useful Techniques From Bygone Eras
- Operable Software
- Stability Patterns and Antipatterns, Michael Nygard
- Michael Nygard - Grinding the Monolith
- Components and Glue
- The Fear Cycle
- Stuart Halloway - Narcissistic Design
- Architecture Without an End State • Michael Nygard
- Uncoupling • Michael Nygard
- Turning the database inside-out with Apache Samza
- Designing an email-only Slack interface
- Education of a Programmer
- The Yoda of Silicon Valley
- Keep Ruby Weird 2018 - Closing Keynote by Avdi Grimm
- Maybe Not - Rich Hickey
- Stack Overflow: How We Do Monitoring - 2018 Edition
- Distributed Systems and the End of the API
- Design for security
- Post-mortems to the rescue
- Lone Star RubyConf 2009 - Something Interesting by Dave Thomas
- Indirection Is Not Abstraction
- Against software development
- Lean Testing or Why Unit Tests are Worse than You Think
- Open Source Language Design in Rust and Node.js by Ashley Williams
- Sam Aaron - Communicative Programming
- Systems at Scale 2018 – Rebuilding the Inbox: The Corporate and Cultural Adventures of Modernizing Yahoo Mail
- Documenting Architecture Decisions
- The Power of Living Systems
- Mike Bostock - Design is a Search Problem
- Only One Deliverable Matters
- Writing system software: code comments.
- Apathy of the Commons
- Hammock Driven Development - Rich Hickey
- Building a team: Agile!
- Good, Cheap, and Fast - PC3
- We shouldn't let people get used to the idea that software fails
- Unconditional Code - Michael Feathers
- Cutting through to what matters
- On Engineers and Influence
- The power of embedded developers
- Exploding Software-Engineering Myths
- Observability: the hard parts
- How I use Wireshark
- UTC is Enough for Everyone, Right?
- André Staltz - Open source without maintainers
- Ted Nelson -- Computers for Cynics
- Agile is Dead • Pragmatic Dave Thomas
- Past , Present and Future of JSON API
- What keeps Apache Kafka from eating the world?
- Hints for writing Unix tools
- END-TO-END ARGUMENTS IN SYSTEM DESIGN
- Two Perspectives on the End-to-End Principle
- The Law of Leaky Abstractions
- Joe Armstrong - The Forgotten Ideas in Computer Science
- Baron Schwartz - Business Observability Matters Too
- Prometheus - A Whirlwind Tour by Cindy Sridharan
- The How and Why of Fitting Things Together - Joe Armstrong
- From Kafka to ZeroMQ for real-time log aggregation
- Type Systems - The Good, Bad and Ugly by Paul Snively and Amanda Laucher
- Nathan Sorenson - Domain Specific Type Systems
- Look for the duct tape
- What makes a good REPL?
- Effective Engineer - Notes
- Antics, drift, and chaos by Lorin Hochstein
- Organizational Skills Beat Algorithmic Wizardry
- Let’s talk about usernames
- What I learnt from building 3 high traffic web applications on an embedded key value store.
- Introduction to Contract Programming
- ZeroMQ RFC 42/C4 - Collective Code Construction Contract
- Pieter Hintjens - How Conway's Law is eating your job?
- How is a Class like a Microservice?
- The best software engineering paper you haven't read
- Pieter Hintjens - ZMQ, tech, ideas, community, writing and life
- Data Driven Products Now!
- Choose Boring Technology
- What the Four Color Theorem can Teach Us About Writing Software
- Pieter Hintjens - Our decentralized future
- Greg Young - Developers are strange creatures
- Greg Young - Stop Over-Engenering
- Ideology
- Toward a Functional Programming Analogy for Microservices
- Growing Your Tech Stack: When to Say No
- Idée Fixe - David Nolen
- The Language of the System - Rich Hickey
- How do groups work on Linux?
- Clojure, Made Simple - Rich Hickey
- Safety-Critical Systems - Professor Martyn Thomas
- How Can Software Be So Hard? - Professor Martyn Thomas
- Just Say No to More End-to-End Tests
- Software Is About Storytelling
- Smart Endpoints, Dumb Pipes
- You Cannot Have Exactly-Once Delivery
- Martin Fowler - Event Sourcing
- Ashley Williams - A brief history and mishistory of modularity
- How do you cut a monolith in half?
- Best practices for staging environments
- Clojure vs. The Static Typing World
- Designing for Reliability
- Scaling Unsplash with a small team
- Metrics: not the observability droids you're looking for
- Monitoring in the time of Cloud Native
- Everyone is not Ops
- My Philosophy on Alerting
- An Introduction to Raft by Diego Ongaro, creator of Raft
- Effective Programs - 10 Years of Clojure - Rich Hickey
- "Managing Containers at Scale with CoreOS and Kubernetes" by Kelsey Hightower
- HTTPS on Stack Overflow
- The Million Dollar Engineering Problem
- make tutorial
- Why Microservices Work For Us
- Rebuilding Our Infrastructure with Docker, ECS, and Terraform
- Where Is Our “Package Manager for the Cloud?”
- Dark corners of Unicode
- Testing in production
- Greg Young - The art of destroying software
- OK Log
- Starbucks should really make their APIs public.
- Tyler McMullen - Load Balancing is Impossible
- Is it unethical for me to not tell my employer I’ve automated my job?
- Hyperproductive development
- What can developers learn from being on call?
- The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets
- Ten Rules for Open Source Success
- Network protocols - For everyone who knows a programming language
- Every Server Is A Kind Of Honeypot
- Docs, Docs, Docs!
- Elixir Should Take Over the World by Jessica Kerr
- Lessons From A Lifetime Of Being A Programmer
- Joe Armstrong interviews Alan Kay
- In Pursuit of Production Minimalism
- Linux utils that you might not know
- Surviving In Open-Source
- Reducing test cases for JavaScript tooling
- Good comments explain WHY, not WHAT, and 3 more rules on writing good comments
- Understand Go pointers in less than 800 words or your money back
- Search the git log from the command line
- A Note About Git Commit Messages
- Readability Matters More Than Correctness
- No feigning surprise
- The Silver Bullet Syndrome by Hadi Hariri
- Latency Numbers Every Programmer Should Know
- Promoting reliability in web software companies
- Git in six hundred words
- Three Attitudes that Lead to Maintainable Code
- Why Use Make
- File crash consistency and filesystems are hard
- How many floating-point numbers are in the interval [0,1]?
- A Programmer’s Introduction to Unicode
- Design Better Data Tables
- /usr/bin/time: not the command you think you know
- The mythical 10x programmer
- Normalization of deviance in software: how broken practices become standard
- A case for microservices
- A few drawings about Linux
- What Does an Idle CPU Do?
- 15 Fundamental Laws of Software Development
- The MIT License, Line by Line
- Diving into concurrency: trying out mutexes and atomics
- The Twelve-Factor App
- Applying the Linus Torvalds “Good Taste” Coding Requirement
- Logging v. instrumentation
- Segmenting and refining images with SharpMask
- Unix philosophy
- Hints for writing Unix tools
- How To Become A Hacker
- Writing Less Damn Code
- It's The Future
- Web Design in 4 minutes
- Taking The Robots To Design School
- Joe Armstrong - Erlang and other stuff
- Should you be scared of Unix signals?
- Recovering files using /proc
- Debug your programs like they're closed source!
- What Makes Software Good?
- Teaching Robots to Feel: Emoji & Deep Learning
- How to Fold a Julia Fractal
- Have Software Developers Given Up?
- I/O matters.
- How I got better at debugging
- All I Need To Know To Be A Better Programmer I Learned In Kindergarten
- Programming Is a Dead End Job
- How the Sunk Cost Fallacy Makes You Act Stupid
- My Biggest Regret As A Programmer
- I stayed in a hotel with Android lightswitches and it was just as bad as you'd imagine
- Man Combines Random People’s Photos Using Neural Networks And The Results Are Amazing
- Everything is broken
- The worst part about programming
- Things I’ve Stopped Saying
- You can't parse HTML with RegEx
- Why you should understand a little about TCP
- Effluents influence affluence : Butterick’s Practical Typography
- Why You Should Choose Your Own HTTPS.
- Docker Containers on the Desktop
- Everything Is Broken
- The Humble Programmer
- Instagram's Million Dollar Bug
- The web accessibility basics
- The Website Obesity Crisis
- The Making Of 'In Pieces'
- Unidirectional User Interface Architectures
- 'Inside the Wolfram Language' by Stephen Wolfram
- 'The Mess We're In' by Joe Armstrong
- Alan Kay - Power of Simplicity
- Five Things Old Programmers Should Remember
- A tr Primer
- Graphical thinking - optimisation through functional programming
- The best icon is a text label
- Bash One-Liners Explained - Redirections
- The Value of Values - Rich Hickey
- What is your most productive shortcut with Vim?
- The Story Behind How Pocket Hit 20M Users with 20 People
- Fighting spam with Haskell
- Web Design : The First 100 Years
- Dropdowns Should be the UI of Last Resort
- Pure UI
- Building SVG Icons with React
- You’re Missing the Point of React
- You Might Need Flux
- Not Just Code Monkeys - Martin Fowler
- Rob Pike's 5 Rules of Programming
- 9 Anti-Patterns Every Programmer Should Be Aware Of
- Running A Software Business On 5 Hours A Week
- FizzBuzz In Too Much Detail — Tom Dalling
- The sad state of sysadmin in the age of containers
- The Beauty of Code
- Process substitution
- Reverse Engineering Regular Expressions
- What I’ve learned so far about software development
- Project managers, ducks, and dogs marking territory
- What I Wish I Knew When Starting Out as a Software Developer
- On Being A Senior Engineer
- Is it really 'Complex'? Or did we just make it 'Complicated'?
- Move fast & break nothing
- Pipes and Filters
- How I got a medal from the Army for writing code
- Math For Programmers