The Curious Engineer

All blogs / Distributed systems / cloud

Zak Knill on /dev/knill

zknill.io

Writing about distributed systems, building teams, and how software actually gets built.

Distributed systems / cloudSoftware / engineering practiceEngineering management / careers

’05’10’15’20’25
Posts
132 from 1 Jan 2001 to 21 May 2026
Posting
monthly (11 in the last year)
Kind
personal blog
Feed
https://zknill.io/index.xml

2026 9

  1. AI token streaming isn't about SSE vs WebSockets
  2. Generations of AI applications: conversational, delegative, and collaborative
  3. LLMs are breaking 20 year old system design
  4. How to make SSE token streams resumable, cancellable, and multi-device
  5. All your agents are going async
  6. You are the bottleneck
  7. If code is cheap, intent is the currency
  8. A chatbot's worst enemy is page refresh
  9. Only use agents for tasks you already know how to do

2025 3

  1. SSE sucks for transporting LLM tokens
  2. So you want to build AI agent group chat?
  3. Patterns for building realtime features

2024 2

  1. Phone call asymmetry
  2. Every programmer should know

2023 14

  1. How to adopt Realtime updates in your app
  2. You don't need CRDTs for collaborative experiences
  3. Giving up my smartphone - Duoqin F22 Pro
  4. Do developers really want to give over their data?
  5. So you want to build Miro and Figma style collaboration?
  6. Streaming data aggregation
  7. The egg test: a model for reversible and irreversible decision making
  8. Standard lib structured logging in Go 1.21
  9. SQLedge - Postgres on the edge
  10. So, you want to deploy on the edge?
  11. Theory of a program
  12. Push stick drop - dog training
  13. Radical and incremental change
  14. Writing confidently with ChatGPT

2022 21

  1. PackageMap - a tool to build a map of your code
  2. Backend for the Frontend, and incentives
  3. Aggregates: one piece of code design
  4. Please don't write "point of view"
  5. Debugging Linkerd for mislabelled route metrics
  6. Addicted to on-call
  7. Tragedy of the codebase commons
  8. visualise java class imports using graphviz
  9. Consistently executable interviews
  10. usable java setup vim
  11. docker login error on m1
  12. power distance in comms
  13. penduluming
  14. santander cycles app
  15. email workflow
  16. change the battlefield
  17. focus on what is, then what to do about it
  18. when to share your mental model
  19. zknill/vending-machine: vending machine in go
  20. who wrote this shit?
  21. connecting the dots requires listening

2021 17

  1. product ideation is dysfunctional
  2. bridge the gap in differences, with the right language
  3. positive and negative freedoms
  4. failure demand
  5. don't design a system to avoid a component you don't understand
  6. vuepress search h4
  7. know your frogs 🐸
  8. habit tracker
  9. explain using analogies
  10. prefer regular adhoc meetings
  11. notion: set full width off 🙏
  12. wireguard: private network, roaming
  13. object storage pricing
  14. time complexity
  15. raspberry pi 4: nas and home server
  16. custom annotation naming
  17. estimate, predict, forecast

2020 13

  1. mfa key recovery
  2. inclusion
  3. naming is hard
  4. syncthing
  5. hyperoptic ipv6
  6. video conferencing
  7. what makes a good software engineer?
  8. pr checklist
  9. mvp service level objectives
  10. beware anecdotal evidence
  11. data modelling in saas apps
  12. effectiveness as an engineer
  13. brooks law, hierarchy, and async comms

2019 16

  1. experienced engineers pattern match
  2. short vs. long lifetime structs
  3. go 1.13: errors.As(...)
  4. cube2222/octosql: query tool
  5. the power and danger of consistency
  6. high performing teams burnout together
  7. metrics for team contributions
  8. kubernetes generated names
  9. docs requirements
  10. Evolution of application monitoring: Linkerd2
  11. git: co-authored by
  12. linkerd: a conversation with real platform owners
  13. linkerd/linkerd2: support for daemonsets
  14. micromanagement
  15. go get private repo
  16. Keeping a logbook with vim

2018 12

  1. 2018: reading list
  2. the cost of extrinsic motivators
  3. options make decisions
  4. Limitations of EKS
  5. go concurrency correctness
  6. proverb driven development
  7. go's anonymous functions in loops
  8. programming mental models
  9. working with me
  10. go ast got visitor pattern wrong
  11. libraries considered harmful
  12. Delivering Language Agnostic Microservices

2017 18

  1. slack @here is bad for your team
  2. zknill/builder: java builder class code generator
  3. Delivering Go Services
  4. mastering golang taught me java
  5. masterminds/semver: work with semantic versions in go
  6. on meetup talks
  7. Go Microservices: Proof of Concept to Production
  8. building blocks of go services
  9. golang/dep: dependency management tool
  10. function as an interface
  11. golang gotchas
  12. structs and named types
  13. deepend
  14. patterns in go
  15. developer abc
  16. downtime
  17. don't fear the junior engineer
  18. hello world

2016 1

  1. zknill/points: a slack and cli leaderboard!

2001 5

  1. — /dev/knill
  2. — /dev/knill
  3. — /dev/knill
  4. — /dev/knill
  5. License

Undated 1

  1. everything →