41554 blogs · [ { "id": "01a08c67-13d5-7086-8638-7a828f19217a", "title": "AI token streaming isn't about SSE vs WebSockets", "url": "https://zknill.io/posts/ai-token-streaming-isnt-about-sse-vs-websockets/", "published_at": "2026-05-21T07:37:17+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829002783e", "title": "Generations of AI applications: conversational, delegative, and collaborative", "url": "https://zknill.io/posts/generations-of-ai-applications/", "published_at": "2026-05-18T15:53:50+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a8290870f47", "title": "LLMs are breaking 20 year old system design", "url": "https://zknill.io/posts/llms-are-breaking-20-year-old-system-design/", "published_at": "2026-05-13T09:27:54+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a8291177d6a", "title": "How to make SSE token streams resumable, cancellable, and multi-device", "url": "https://zknill.io/posts/everyone-said-sse-token-streaming-was-easy/", "published_at": "2026-04-23T09:32:52+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82912f9eac", "title": "All your agents are going async", "url": "https://zknill.io/posts/all-your-agents-are-going-async/", "published_at": "2026-04-20T10:45:14+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829191da38", "title": "You are the bottleneck", "url": "https://zknill.io/posts/you-are-the-bottleneck/", "published_at": "2026-02-28T21:33:24+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82927ac0fb", "title": "If code is cheap, intent is the currency", "url": "https://zknill.io/posts/commit-message-intent/", "published_at": "2026-02-24T09:15:57+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82935c9d78", "title": "A chatbot's worst enemy is page refresh", "url": "https://zknill.io/posts/chatbots-worst-enemy-is-page-refresh/", "published_at": "2026-02-11T15:23:34+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a8293defdec", "title": "Only use agents for tasks you already know how to do", "url": "https://zknill.io/posts/only-ai-tasks-you-know-how-to-do/", "published_at": "2026-02-09T10:57:48+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a8293f97122", "title": "SSE sucks for transporting LLM tokens", "url": "https://zknill.io/posts/sse-sucks-for-transporting-llm-tokens/", "published_at": "2025-11-27T16:12:48+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a8294c7fb68", "title": "So you want to build AI agent group chat?", "url": "https://zknill.io/posts/how-to-build-ai-group-chat/", "published_at": "2025-11-15T13:50:14+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829515900b", "title": "Patterns for building realtime features", "url": "https://zknill.io/posts/patterns-for-building-realtime/", "published_at": "2025-02-06T16:33:33+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a8295365815", "title": "Phone call asymmetry", "url": "https://zknill.io/posts/phone-call-asymmetry/", "published_at": "2024-05-03T11:08:15+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829579f3f5", "title": "Every programmer should know", "url": "https://zknill.io/posts/every-programmer-should-know/", "published_at": "2024-04-30T10:41:27+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a8295822f4e", "title": "How to adopt Realtime updates in your app", "url": "https://zknill.io/posts/how-to-adopt-realtime/", "published_at": "2023-11-23T15:27:10+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82958d69e2", "title": "You don't need CRDTs for collaborative experiences", "url": "https://zknill.io/posts/collaboration-no-crdts/", "published_at": "2023-11-16T12:00:06+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82961a4bfd", "title": "Giving up my smartphone - Duoqin F22 Pro", "url": "https://zknill.io/posts/duoqin-f22-pro/", "published_at": "2023-11-04T09:23:10+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82964a0fa0", "title": "Do developers really want to give over their data?", "url": "https://zknill.io/posts/do-you-want-to-give-over-your-data/", "published_at": "2023-10-20T06:28:42+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829730d3cf", "title": "So you want to build Miro and Figma style collaboration?", "url": "https://zknill.io/posts/ephemeral-collaboration/", "published_at": "2023-10-05T18:18:40+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829747eec8", "title": "Streaming data aggregation", "url": "https://zknill.io/posts/streaming-data-aggregation/", "published_at": "2023-08-23T09:12:37+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a8297de501e", "title": "The egg test: a model for reversible and irreversible decision making", "url": "https://zknill.io/posts/egg-test/", "published_at": "2023-08-17T09:34:06+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82988d6231", "title": "Standard lib structured logging in Go 1.21", "url": "https://zknill.io/posts/go-1-21-slog/", "published_at": "2023-08-08T16:05:20+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82995d511a", "title": "SQLedge - Postgres on the edge", "url": "https://zknill.io/projects/sqledge/", "published_at": "2023-08-01T13:01:24+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829996ea52", "title": "So, you want to deploy on the edge?", "url": "https://zknill.io/posts/edge-database/", "published_at": "2023-07-31T07:33:58+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829a14eab0", "title": "Theory of a program", "url": "https://zknill.io/posts/theory-of-program/", "published_at": "2023-07-10T09:21:34+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829ad88060", "title": "Push stick drop - dog training", "url": "https://zknill.io/projects/pushstickdrop/", "published_at": "2023-06-30T17:01:24+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829b3ca69c", "title": "Radical and incremental change", "url": "https://zknill.io/posts/radical-incremental-change/", "published_at": "2023-04-03T12:25:14+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829c35cbf3", "title": "Writing confidently with ChatGPT", "url": "https://zknill.io/posts/writing-confidently-with-chatgpt/", "published_at": "2023-02-17T15:25:50+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829cb07145", "title": "PackageMap - a tool to build a map of your code", "url": "https://zknill.io/projects/packagemap/", "published_at": "2022-12-02T17:01:24+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829d7dfc35", "title": "Backend for the Frontend, and incentives", "url": "https://zknill.io/posts/backend-for-the-frontend/", "published_at": "2022-11-22T08:36:46+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829d898936", "title": "Aggregates: one piece of code design", "url": "https://zknill.io/posts/aggregate-design/", "published_at": "2022-10-10T07:59:43+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829dcad627", "title": "Please don't write \"point of view\"", "url": "https://zknill.io/posts/writing-point-of-view/", "published_at": "2022-08-02T12:21:34+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829e42b8b6", "title": "Debugging Linkerd for mislabelled route metrics", "url": "https://zknill.io/posts/debugging-linkerd-mislabelled-routes/", "published_at": "2022-07-29T08:54:25+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829e46e8ba", "title": "Addicted to on-call", "url": "https://zknill.io/posts/addicted-to-oncall/", "published_at": "2022-06-25T09:39:42+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829f0fa16c", "title": "Tragedy of the codebase commons", "url": "https://zknill.io/posts/tragedy-of-the-codebase-commons/", "published_at": "2022-06-20T09:52:00+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829f287be7", "title": "visualise java class imports using graphviz", "url": "https://zknill.io/projects/java-graphviz/", "published_at": "2022-06-13T11:43:00+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a829fcad24c", "title": "Consistently executable interviews", "url": "https://zknill.io/posts/consistently-executable-interviews/", "published_at": "2022-06-09T06:13:23+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a02e85eb", "title": "usable java setup vim", "url": "https://zknill.io/posts/usable-java-setup-vim/", "published_at": "2022-05-19T16:19:20+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a0e8cfb1", "title": "docker login error on m1", "url": "https://zknill.io/posts/docker-credstore-m1/", "published_at": "2022-05-12T10:51:25+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a177b3ff", "title": "power distance in comms", "url": "https://zknill.io/posts/power-distance-comms/", "published_at": "2022-05-03T08:03:01+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a1d4c0d1", "title": "penduluming", "url": "https://zknill.io/posts/penduluming/", "published_at": "2022-04-27T18:32:01+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a288ce05", "title": "santander cycles app", "url": "https://zknill.io/posts/santander-cycles-app/", "published_at": "2022-04-25T11:59:39+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a2e218a5", "title": "email workflow", "url": "https://zknill.io/posts/email-workflow/", "published_at": "2022-03-18T16:59:06+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a2fb8ac1", "title": "change the battlefield", "url": "https://zknill.io/posts/change-the-battlefield/", "published_at": "2022-01-31T16:21:28+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a316b317", "title": "focus on what is, then what to do about it", "url": "https://zknill.io/posts/focus-on-what-is/", "published_at": "2022-01-18T16:59:09+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a3b61c5f", "title": "when to share your mental model", "url": "https://zknill.io/posts/when-to-share-your-mental-model/", "published_at": "2022-01-14T09:54:08+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a3c0e828", "title": "zknill/vending-machine: vending machine in go", "url": "https://zknill.io/projects/vending-machine/", "published_at": "2022-01-14T09:43:00+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a49e93d8", "title": "who wrote this shit?", "url": "https://zknill.io/posts/who-wrote-this-shit/", "published_at": "2022-01-10T14:13:26+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a4afdd39", "title": "connecting the dots requires listening", "url": "https://zknill.io/posts/connect-the-dots/", "published_at": "2022-01-05T09:53:04+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a59aa596", "title": "product ideation is dysfunctional", "url": "https://zknill.io/posts/dysfunctional-product-ideation/", "published_at": "2021-12-21T14:39:36+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a5ba008c", "title": "bridge the gap in differences, with the right language", "url": "https://zknill.io/posts/language-to-solve-problems/", "published_at": "2021-11-23T21:36:49+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a5da02f6", "title": "positive and negative freedoms", "url": "https://zknill.io/posts/freedoms/", "published_at": "2021-10-29T09:24:56+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a6936a4f", "title": "failure demand", "url": "https://zknill.io/posts/failure-demand/", "published_at": "2021-10-21T12:27:44+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a6a4ae3d", "title": "don't design a system to avoid a component you don't understand", "url": "https://zknill.io/posts/dont-design-dont-understand/", "published_at": "2021-10-18T14:38:11+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a7822202", "title": "vuepress search h4", "url": "https://zknill.io/posts/vuepress-search-h4/", "published_at": "2021-10-07T09:30:38+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a829bf1d", "title": "know your frogs 🐸", "url": "https://zknill.io/posts/frogs/", "published_at": "2021-09-24T07:38:22+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a883d9c3", "title": "habit tracker", "url": "https://zknill.io/posts/habit-tracker/", "published_at": "2021-09-06T19:04:35+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a8f543b9", "title": "explain using analogies", "url": "https://zknill.io/posts/explain-using-analogies/", "published_at": "2021-05-25T12:11:43+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a93459c0", "title": "prefer regular adhoc meetings", "url": "https://zknill.io/posts/adhoc-recurring-meetings/", "published_at": "2021-03-15T14:25:30+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82a9f3af9e", "title": "notion: set full width off 🙏", "url": "https://zknill.io/posts/notion-wide/", "published_at": "2021-03-02T14:17:47+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82aa077c44", "title": "wireguard: private network, roaming", "url": "https://zknill.io/projects/wireguard-private-network/", "published_at": "2021-03-02T09:43:00+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82aad18f70", "title": "object storage pricing", "url": "https://zknill.io/posts/object-storage-pricing/", "published_at": "2021-02-16T17:40:30+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82ab64bfb2", "title": "time complexity", "url": "https://zknill.io/posts/time-complexity/", "published_at": "2021-02-12T13:27:24+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82abe02b98", "title": "raspberry pi 4: nas and home server", "url": "https://zknill.io/projects/raspberry-pi-4/", "published_at": "2021-01-30T17:43:51+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82ac9f802c", "title": "custom annotation naming", "url": "https://zknill.io/posts/custom-annotation-naming/", "published_at": "2021-01-05T13:24:29+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82ad0f0006", "title": "estimate, predict, forecast", "url": "https://zknill.io/posts/forecast/", "published_at": "2021-01-04T13:18:01+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82ad4905c5", "title": "mfa key recovery", "url": "https://zknill.io/posts/mfa-key-recovery/", "published_at": "2020-12-08T15:29:27+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82ae43ce21", "title": "inclusion", "url": "https://zknill.io/posts/inclusion/", "published_at": "2020-12-04T10:04:00+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82af4381fb", "title": "naming is hard", "url": "https://zknill.io/posts/naming-is-hard/", "published_at": "2020-10-05T08:27:26+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82af5a036e", "title": "syncthing", "url": "https://zknill.io/posts/syncthing/", "published_at": "2020-05-28T05:47:40+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82af678971", "title": "hyperoptic ipv6", "url": "https://zknill.io/posts/hyperoptic-ipv6/", "published_at": "2020-04-15T10:35:17+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82afe94996", "title": "video conferencing", "url": "https://zknill.io/posts/video-conferencing/", "published_at": "2020-04-09T14:52:35+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b05cdaed", "title": "what makes a good software engineer?", "url": "https://zknill.io/posts/good-software-engineer/", "published_at": "2020-03-26T07:58:05+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b0f25f1a", "title": "pr checklist", "url": "https://zknill.io/posts/pr-checklist/", "published_at": "2020-03-22T19:50:06+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b1a1e1f3", "title": "mvp service level objectives", "url": "https://zknill.io/posts/mvp-slo/", "published_at": "2020-03-02T14:54:38+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b23becfa", "title": "beware anecdotal evidence", "url": "https://zknill.io/posts/beware-anecdotal-evidence/", "published_at": "2020-02-17T11:51:55+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b26765be", "title": "data modelling in saas apps", "url": "https://zknill.io/posts/data-modelling-saas/", "published_at": "2020-01-29T15:19:49+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b2e6b784", "title": "effectiveness as an engineer", "url": "https://zknill.io/posts/effectiveness-as-an-engineer/", "published_at": "2020-01-20T08:15:42+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b39b8995", "title": "brooks law, hierarchy, and async comms", "url": "https://zknill.io/posts/brooks-law-hierarchy-async-comms/", "published_at": "2020-01-16T08:08:35+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b3fd95ff", "title": "experienced engineers pattern match", "url": "https://zknill.io/posts/experienced-engineer-pattern-matching/", "published_at": "2019-12-11T12:25:17+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b4070560", "title": "short vs. long lifetime structs", "url": "https://zknill.io/posts/struct-lifetime/", "published_at": "2019-11-26T16:51:49+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b42ba2b8", "title": "go 1.13: errors.As(...)", "url": "https://zknill.io/posts/errors-as/", "published_at": "2019-10-27T09:32:51+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b51b84ad", "title": "cube2222/octosql: query tool", "url": "https://zknill.io/projects/octosql/", "published_at": "2019-07-19T05:41:26+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b5baa3ad", "title": "the power and danger of consistency", "url": "https://zknill.io/posts/consistency/", "published_at": "2019-06-20T07:02:49+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b5ebd4e9", "title": "high performing teams burnout together", "url": "https://zknill.io/posts/team-burnout/", "published_at": "2019-05-02T07:07:51+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b6700ea3", "title": "metrics for team contributions", "url": "https://zknill.io/posts/metrics-github-search/", "published_at": "2019-04-29T05:41:09+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b6ca2aa5", "title": "kubernetes generated names", "url": "https://zknill.io/posts/kubernetes-generated-names/", "published_at": "2019-04-26T08:26:38+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b7094fb8", "title": "docs requirements", "url": "https://zknill.io/posts/docs/", "published_at": "2019-04-11T08:29:38+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b726dbb7", "title": "Evolution of application monitoring: Linkerd2", "url": "https://zknill.io/talks/evolution-of-monitoring-linkerd2/", "published_at": "2019-04-11T07:18:34+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b790d8b5", "title": "git: co-authored by", "url": "https://zknill.io/posts/git-co-authored-by/", "published_at": "2019-03-29T08:19:47+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b82afdb5", "title": "linkerd: a conversation with real platform owners", "url": "https://zknill.io/talks/linkerd2-webinar/", "published_at": "2019-03-28T22:14:04+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b8eed140", "title": "linkerd/linkerd2: support for daemonsets", "url": "https://zknill.io/projects/linkerd2/", "published_at": "2019-03-25T21:53:56+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82b9aed07a", "title": "micromanagement", "url": "https://zknill.io/posts/micromanagement/", "published_at": "2019-03-25T17:04:14+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82baadf0a9", "title": "go get private repo", "url": "https://zknill.io/posts/go-get-private-repo/", "published_at": "2019-03-25T16:43:38+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82bb7e584e", "title": "Keeping a logbook with vim", "url": "https://zknill.io/posts/vim-logbook/", "published_at": "2019-03-20T17:43:44+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82bbf5577e", "title": "2018: reading list", "url": "https://zknill.io/posts/2018-books/", "published_at": "2018-12-16T14:17:57+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82bc48ff09", "title": "the cost of extrinsic motivators", "url": "https://zknill.io/posts/extrinsic-motivators/", "published_at": "2018-11-25T13:19:48+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82bcd07598", "title": "options make decisions", "url": "https://zknill.io/posts/options-make-decisions/", "published_at": "2018-10-27T16:01:30+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82bce73a5a", "title": "Limitations of EKS", "url": "https://zknill.io/posts/eks-limitations/", "published_at": "2018-09-20T12:38:08+00:00" }, { "id": "01a08c67-13d5-7086-8638-7a82bd523abb", "title": "go concurrency correctness", "url": "https://zknill.io/posts/go-concurrency-correctness/", "published_at": "2018-09-04T05:51:47+00:00" } ] posts Claim your blog
Back to Posts — /dev/knill
Blog · corpus.blog/blogs/zknill.io/posts

Posts — /dev/knill

zknill.io

2026

2025

2024

2023

2022

2021

2020

2019

2018