41554 blogs · [ { "id": "01a07df2-73e4-700f-9a31-130f477fb898", "title": "The agent principal-agent problem", "url": "https://crawshaw.io/blog/agent-principal-agent", "published_at": "2026-05-07T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f47f9cd7a", "title": "I am building a cloud", "url": "https://crawshaw.io/blog/building-a-cloud", "published_at": "2026-04-22T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4810dd23", "title": "Eight more months of agents", "url": "https://crawshaw.io/blog/eight-more-months-of-agents", "published_at": "2026-02-08T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f486c84b5", "title": "How I program with Agents", "url": "https://crawshaw.io/blog/programming-with-agents", "published_at": "2025-06-08T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f48fa5670", "title": "How I program with LLMs", "url": "https://crawshaw.io/blog/programming-with-llms", "published_at": "2025-01-06T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f49d2e727", "title": "jsonfile: a quick hack for tinkering", "url": "https://crawshaw.io/blog/jsonfile", "published_at": "2024-02-06T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4a320210", "title": "new year, same plan", "url": "https://crawshaw.io/blog/new-year", "published_at": "2022-12-31T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4abf5c45", "title": "log4j: between a rock and a hard place", "url": "https://crawshaw.io/blog/log4j", "published_at": "2021-12-11T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4b39a1d1", "title": "Software I’m thankful for", "url": "https://crawshaw.io/blog/thankful-for-technology", "published_at": "2021-11-25T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4c1bec81", "title": "Remembering the LAN", "url": "https://crawshaw.io/blog/remembering-the-lan", "published_at": "2020-01-28T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4ceb41f0", "title": "The asymmetry of Internet identity", "url": "https://crawshaw.io/blog/identity-stack", "published_at": "2019-09-29T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4d7a4c02", "title": "Zero Trust Networks", "url": "https://crawshaw.io/blog/zero-trust", "published_at": "2019-09-10T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4d8e15fc", "title": "Go 1.13: xerrors", "url": "https://crawshaw.io/blog/xerrors", "published_at": "2019-04-28T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4db9a114", "title": "Fast compilers for fast programs", "url": "https://crawshaw.io/blog/fast-compilers", "published_at": "2019-04-14T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4e39824f", "title": "UTF-7: a ghost from the time before UTF-8", "url": "https://crawshaw.io/blog/utf7", "published_at": "2018-10-31T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4e7cb646", "title": "One process programming notes (with Go and SQLite)", "url": "https://crawshaw.io/blog/one-process-programming-notes", "published_at": "2018-07-30T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4f1ca16f", "title": "Reasoning with Regret", "url": "https://crawshaw.io/blog/reasoning-with-regret", "published_at": "2018-07-16T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4f88802e", "title": "Searching the Creative Internet", "url": "https://crawshaw.io/blog/searching-the-creative-internet", "published_at": "2018-05-18T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f4fd27d98", "title": "Service Throughput Tradeoffs", "url": "https://crawshaw.io/blog/service-throughput", "published_at": "2018-04-13T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f504a005d", "title": "Sharp-Edged Finalizers in Go", "url": "https://crawshaw.io/blog/sharp-edged-finalizers", "published_at": "2018-04-05T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f50ea6527", "title": "The Tragedy of Finalizers", "url": "https://crawshaw.io/blog/tragedy-of-finalizers", "published_at": "2018-04-04T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f51e2b842", "title": "Go and SQLite: when database/sql chafes", "url": "https://crawshaw.io/blog/go-and-sqlite", "published_at": "2018-04-02T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f521feabc", "title": "Experimentation Adrift", "url": "https://crawshaw.io/blog/experimentation-adrift", "published_at": "2018-03-30T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f52b9d7cc", "title": "Leaving Google", "url": "https://crawshaw.io/blog/leaving-google", "published_at": "2018-03-27T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f53175505", "title": "Less cgo overhead in Go 1.8", "url": "https://crawshaw.io/blog/go1.8-cgo", "published_at": "2017-02-15T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5318d00a", "title": "BBR", "url": "https://crawshaw.io/blog/2017-01-07", "published_at": "2017-01-07T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f53a8e591", "title": "Compiler Bomb", "url": "https://crawshaw.io/blog/2016-10-14", "published_at": "2016-10-14T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5426dcb3", "title": "On recieving the News", "url": "https://crawshaw.io/blog/2016-09-24", "published_at": "2016-09-24T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5469b82a", "title": "Buried by the media", "url": "https://crawshaw.io/blog/2016-09-05", "published_at": "2016-09-05T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f54b300ce", "title": "Smaller Go 1.7 binaries", "url": "https://crawshaw.io/blog/2016-08-19", "published_at": "2016-08-19T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f55ab1e91", "title": "Good business", "url": "https://crawshaw.io/blog/2016-07-27", "published_at": "2016-07-27T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5626fa80", "title": "Everyone a writer", "url": "https://crawshaw.io/blog/2016-07-08", "published_at": "2016-07-08T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5628eac8", "title": "2016-06-29", "url": "https://crawshaw.io/blog/2016-06-29", "published_at": "2016-06-29T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f564a009b", "title": "Transaction oriented collector", "url": "https://crawshaw.io/blog/2016-06-24", "published_at": "2016-06-24T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f56e49d76", "title": "Machining under a microscope", "url": "https://crawshaw.io/blog/2016-06-20", "published_at": "2016-06-20T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f57bea88e", "title": "Limits of Superintelligence", "url": "https://crawshaw.io/blog/2016-05-07", "published_at": "2016-05-07T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f57e2178f", "title": "COPY Relocations", "url": "https://crawshaw.io/blog/2016-04-17", "published_at": "2016-04-17T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5896e4bf", "title": "Atom Feed", "url": "https://crawshaw.io/blog/2016-04-16", "published_at": "2016-04-16T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f58b30c91", "title": "2016-02-10", "url": "https://crawshaw.io/blog/2016-02-10", "published_at": "2016-02-10T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f59967f57", "title": "2016-01-23", "url": "https://crawshaw.io/blog/2016-01-23", "published_at": "2016-01-23T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5a63e30d", "title": "2016-01-18", "url": "https://crawshaw.io/blog/2016-01-18", "published_at": "2016-01-18T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5aa481bf", "title": "2016-01-15", "url": "https://crawshaw.io/blog/2016-01-15", "published_at": "2016-01-15T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5b40ad8d", "title": "2016-01-09", "url": "https://crawshaw.io/blog/2016-01-09", "published_at": "2016-01-09T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5c0a6f6a", "title": "2016-01-07", "url": "https://crawshaw.io/blog/2016-01-07", "published_at": "2016-01-07T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5cf60512", "title": "2016-01-05", "url": "https://crawshaw.io/blog/2016-01-05", "published_at": "2016-01-05T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5d9088f5", "title": "2016-01-04", "url": "https://crawshaw.io/blog/2016-01-04", "published_at": "2016-01-04T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5e4ec883", "title": "2016-01-03", "url": "https://crawshaw.io/blog/2016-01-03", "published_at": "2016-01-03T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5efebf00", "title": "2016-01-02", "url": "https://crawshaw.io/blog/2016-01-02", "published_at": "2016-01-02T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5f2d6666", "title": "2016-01-01", "url": "https://crawshaw.io/blog/2016-01-01", "published_at": "2016-01-01T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5f4fb9b0", "title": "2015-12-29", "url": "https://crawshaw.io/blog/2015-12-29", "published_at": "2015-12-29T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5f5032e0", "title": "Under the heel of the spirit", "url": "https://crawshaw.io/blog/2015-12-28", "published_at": "2015-12-28T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5f642d62", "title": "2015-12-27", "url": "https://crawshaw.io/blog/2015-12-27", "published_at": "2015-12-27T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f5fdd57da", "title": "2015-12-26", "url": "https://crawshaw.io/blog/2015-12-26", "published_at": "2015-12-26T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f60bebcc6", "title": "2015-12-20", "url": "https://crawshaw.io/blog/2015-12-20", "published_at": "2015-12-20T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f61b30e59", "title": "2015-12-15", "url": "https://crawshaw.io/blog/2015-12-15", "published_at": "2015-12-15T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f62a25016", "title": "2015-12-04", "url": "https://crawshaw.io/blog/2015-12-04", "published_at": "2015-12-04T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6387c460", "title": "2015-11-18", "url": "https://crawshaw.io/blog/2015-11-18", "published_at": "2015-11-18T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6423f2b1", "title": "2015-11-16", "url": "https://crawshaw.io/blog/2015-11-16", "published_at": "2015-11-16T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f642c86f8", "title": "2015-10-13", "url": "https://crawshaw.io/blog/2015-10-13", "published_at": "2015-10-13T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f64e834fb", "title": "2015-08-07", "url": "https://crawshaw.io/blog/2015-08-07", "published_at": "2015-08-07T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f652fbb4e", "title": "2015-08-04", "url": "https://crawshaw.io/blog/2015-08-04", "published_at": "2015-08-04T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f655ebd7d", "title": "2015-07-27", "url": "https://crawshaw.io/blog/2015-07-27", "published_at": "2015-07-27T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f65e0e67f", "title": "2015-07-17", "url": "https://crawshaw.io/blog/2015-07-17", "published_at": "2015-07-17T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f668bc8a5", "title": "2015-07-15", "url": "https://crawshaw.io/blog/2015-07-15", "published_at": "2015-07-15T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f66f4df4f", "title": "2015-07-14", "url": "https://crawshaw.io/blog/2015-07-14", "published_at": "2015-07-14T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f67dd5e53", "title": "2015-07-07", "url": "https://crawshaw.io/blog/2015-07-07", "published_at": "2015-07-07T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f67f1f0c2", "title": "2015-06-26", "url": "https://crawshaw.io/blog/2015-06-26", "published_at": "2015-06-26T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f68da693e", "title": "2015-06-24", "url": "https://crawshaw.io/blog/2015-06-24", "published_at": "2015-06-24T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f693fc40c", "title": "2015-06-22", "url": "https://crawshaw.io/blog/2015-06-22", "published_at": "2015-06-22T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f69b2a9da", "title": "2015-06-01", "url": "https://crawshaw.io/blog/2015-06-01", "published_at": "2015-06-01T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6a710d9b", "title": "2015-05-08", "url": "https://crawshaw.io/blog/2015-05-08", "published_at": "2015-05-08T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6b1d91c5", "title": "2015-05-07", "url": "https://crawshaw.io/blog/2015-05-07", "published_at": "2015-05-07T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6bbab394", "title": "2015-04-02", "url": "https://crawshaw.io/blog/2015-04-02", "published_at": "2015-04-02T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6c20b478", "title": "2015-03-10", "url": "https://crawshaw.io/blog/2015-03-10", "published_at": "2015-03-10T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6c7d1147", "title": "2015-03-09", "url": "https://crawshaw.io/blog/2015-03-09", "published_at": "2015-03-09T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6ce6516d", "title": "2015-03-01", "url": "https://crawshaw.io/blog/2015-03-01", "published_at": "2015-03-01T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6dbf84bb", "title": "2015-01-11", "url": "https://crawshaw.io/blog/2015-01-11", "published_at": "2015-01-11T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6dcb94c1", "title": "2015-01-10", "url": "https://crawshaw.io/blog/2015-01-10", "published_at": "2015-01-10T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6ea1dc0f", "title": "2014-12-11", "url": "https://crawshaw.io/blog/2014-12-11", "published_at": "2014-12-11T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6f33e610", "title": "2014-07-28", "url": "https://crawshaw.io/blog/2014-07-28", "published_at": "2014-07-28T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f6f56edb5", "title": "2014-06-13", "url": "https://crawshaw.io/blog/2014-06-13", "published_at": "2014-06-13T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f702a9d6c", "title": "2014-05-14", "url": "https://crawshaw.io/blog/2014-05-14", "published_at": "2014-05-14T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f70e7bc48", "title": "2014-05-06", "url": "https://crawshaw.io/blog/2014-05-06", "published_at": "2014-05-06T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f71a26dc2", "title": "2014-04-18", "url": "https://crawshaw.io/blog/2014-04-18", "published_at": "2014-04-18T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f7256f4a2", "title": "2014-03-08", "url": "https://crawshaw.io/blog/2014-03-08", "published_at": "2014-03-08T00:00:00+00:00" }, { "id": "01a07df2-73e4-700f-9a31-130f729e75bc", "title": "2014-01-17", "url": "https://crawshaw.io/blog/2014-01-17", "published_at": "2014-01-17T00:00:00+00:00" } ] posts Claim your blog
Back to David Crawshaw
Blog · corpus.blog/blogs/crawshaw.io/posts

David Crawshaw

crawshaw.io

2026

2025

2024

2022

2021

2020

2019

2018

2017

7 Jan 2017

2016

2015

2014