54,302 blogs · [ { "id": "01a0d802-d35d-700c-9ba6-4835b9dcf24b", "title": "fibre broadband anticlimax", "url": "https://dotat.at/@/2026-09-16-fibre.html", "published_at": "2026-09-17T00:08:33+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3642b462e04", "title": "Counting the days, revisited", "url": "https://dotat.at/@/2026-08-09-rata-die.html", "published_at": "2026-08-09T02:29:48+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3642bc53100", "title": "poached eggs", "url": "https://dotat.at/@/2026-03-14-eggs.html", "published_at": "2026-03-14T18:50:11+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3642cbcadd6", "title": "nsnotifyd-2.4 released", "url": "https://dotat.at/@/2026-02-24-nsnotifyd-2-4-released.html", "published_at": "2026-02-24T20:08:07+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3642d1db231", "title": "One page of async Rust", "url": "https://dotat.at/@/2026-02-16-async.html", "published_at": "2026-02-17T19:34:20+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3642dbbc0ce", "title": "GCRA vs leaky / token buckets", "url": "https://dotat.at/@/2026-01-15-gcra.html", "published_at": "2026-01-15T20:23:39+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3642e742eba", "title": "HTTP RateLimit headers", "url": "https://dotat.at/@/2026-01-13-http-ratelimit.html", "published_at": "2026-01-14T02:34:22+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3642ecf9a12", "title": "hybrid quota-linear rate limiter", "url": "https://dotat.at/@/2026-01-12-hqlr.html", "published_at": "2026-01-13T00:12:01+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3642f65f91d", "title": "doubly dual shuffles", "url": "https://dotat.at/@/2025-12-25-shuffle.html", "published_at": "2025-12-25T23:45:02+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3642ffdefac", "title": "how to draw a tetrapod", "url": "https://dotat.at/@/2025-10-24-tetrapod.html", "published_at": "2025-10-24T21:40:51+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3643031e16e", "title": "a few notes on ratelimiting", "url": "https://dotat.at/@/2025-09-14-ratelimit.html", "published_at": "2025-09-14T03:30:44+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a364306ecb5f", "title": "first-class merges and cover letters", "url": "https://dotat.at/@/2025-09-11-cover-letter.html", "published_at": "2025-09-11T01:26:47+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3643091f004", "title": "strongly typed?", "url": "https://dotat.at/@/2025-08-28-strongly-typed.html", "published_at": "2025-08-28T01:33:05+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a36430a2dd33", "title": "p-fast trie, but smaller", "url": "https://dotat.at/@/2025-08-06-p-fast-trie.html", "published_at": "2025-08-06T17:19:09+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3643174fc6e", "title": "p-fast trie: lexically ordered hash map", "url": "https://dotat.at/@/2025-08-04-p-fast-trie.html", "published_at": "2025-08-04T20:52:21+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3643224490d", "title": "clamp / median / range", "url": "https://dotat.at/@/2025-07-02-cmp.html", "published_at": "2025-07-02T01:33:08+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a364328ca459", "title": "Golang and Let's Encrypt: a free software story", "url": "https://dotat.at/@/2025-06-28-boulder.html", "published_at": "2025-06-26T01:41:49+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a36432da3c2c", "title": "performance of random floats", "url": "https://dotat.at/@/2025-06-08-floats.html", "published_at": "2025-06-08T02:08:35+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a364336da52f", "title": "moka pot notes", "url": "https://dotat.at/@/2025-06-01-bialetti.html", "published_at": "2025-06-01T15:56:02+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a36434597fa2", "title": "the algebra of dependent types", "url": "https://dotat.at/@/2025-05-28-types.html", "published_at": "2025-05-29T00:07:51+00:00" }, { "id": "01a07dab-f8e1-72cf-a144-a3643514d501", "title": "the penultimate conditional syntax", "url": "https://dotat.at/@/2025-05-13-if-is.html", "published_at": "2025-05-13T21:49:41+00:00" } ] posts Claim your blog
Back to Tony Finch
Blog · corpus.blog/blogs/dotat.at/posts

Tony Finch

dotat.at

2026

2025