41554 blogs · [ { "id": "01a0871f-a73c-7007-b15c-900facde3b3e", "title": "The best – but not good – way to limit string length", "url": "https://adam-p.ca/blog/2025/04/string-length/", "published_at": "2025-04-28T18:13:48+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fad036431", "title": "Bug story: Sorting by timestamp", "url": "https://adam-p.ca/blog/2023/12/sort-by-timestamp/", "published_at": "2023-12-23T15:22:41+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fae025d34", "title": "Inexpert Parenting Tips", "url": "https://adam-p.ca/blog/2023/06/parenting-tips/", "published_at": "2023-06-03T10:17:56+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fae3bcd7a", "title": "More Than a Password", "url": "https://adam-p.ca/blog/2022/10/password-plus-plus/", "published_at": "2022-10-14T20:31:07+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fae85d694", "title": "Forwarded Header Sabotage", "url": "https://adam-p.ca/blog/2022/03/forwarded-header-sabotage/", "published_at": "2022-03-30T13:37:14+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900faed74e15", "title": "Symbol and text labels", "url": "https://adam-p.ca/inco/2022/03/symbol-and-text-labels/", "published_at": "2022-03-28T14:54:16+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900faf5d64b3", "title": "Should you strip the IPv6 zone?", "url": "https://adam-p.ca/blog/2022/03/strip-ipv6-zone/", "published_at": "2022-03-22T22:32:38+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fafa16bfb", "title": "A tiny flaw in Go's netip design", "url": "https://adam-p.ca/blog/2022/03/go-netip-flaw/", "published_at": "2022-03-21T22:30:38+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900faff7a0c3", "title": "The perils of the “real” client IP", "url": "https://adam-p.ca/blog/2022/03/x-forwarded-for/", "published_at": "2022-03-04T18:20:10+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb064013e", "title": "The scary state of IPv6 rate-limiting", "url": "https://adam-p.ca/blog/2022/02/ipv6-rate-limiting/", "published_at": "2022-02-20T18:44:57+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb08a9fa4", "title": "Git Submodule vs Subtree", "url": "https://adam-p.ca/blog/2022/02/git-submodule-subtree/", "published_at": "2022-02-18T02:35:37+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb0d1e614", "title": "Diving into Go's HTTP server timeouts", "url": "https://adam-p.ca/blog/2022/01/golang-http-server-timeouts/", "published_at": "2022-01-15T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb1bbe9c4", "title": "The Ethics of Driving Speed in Travel Time Estimation", "url": "https://adam-p.ca/blog/2021/11/ethics-travel-time/", "published_at": "2021-11-28T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb25e7f55", "title": "Instructions on the ceiling", "url": "https://adam-p.ca/inco/2021/11/ftnu/", "published_at": "2021-11-27T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb3467dbf", "title": "Timing attack mitigation must exclude network", "url": "https://adam-p.ca/blog/2021/11/constant-time-network/", "published_at": "2021-11-27T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb3e04a0a", "title": "My Baby Advice for Fathers", "url": "https://adam-p.ca/blog/2021/07/baby-advice/", "published_at": "2021-07-14T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb45acf16", "title": "Make sure you have a backup Yubikey", "url": "https://adam-p.ca/blog/2021/06/backup-yubikey/", "published_at": "2021-06-25T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb4dbcbe9", "title": "Dev Story: Unicode URL length limit blues", "url": "https://adam-p.ca/blog/2021/06/unicode-url-length/", "published_at": "2021-06-07T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb59c2639", "title": "The short happy life of the Breached extension", "url": "https://adam-p.ca/blog/2019/05/breached/", "published_at": "2019-05-27T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb5dac2b7", "title": "First Post: someone's last post", "url": "https://adam-p.ca/inco/2017/01/first-post/", "published_at": "2017-01-05T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb68a2f57", "title": "Markdown Here: Splitting the Firefox and Thunderbird Extension", "url": "https://adam-p.ca/blog/2016/07/mdh-dividing-firefox-and-thunderbird/", "published_at": "2016-07-14T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb7766d79", "title": "Android Non-Vulnerability: Steal a Device and Keep it Unlocked", "url": "https://adam-p.ca/blog/2016/05/smart-lock-mock-location/", "published_at": "2016-05-11T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb79e6a5b", "title": "Why and How to Use a Contributor License Agreement", "url": "https://adam-p.ca/blog/2015/02/contributor-license-agreement/", "published_at": "2015-02-17T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb7e280e0", "title": "Test post: Markdown Here in Disqus", "url": "https://adam-p.ca/blog/2013/10/mdh-disqus-test/", "published_at": "2013-10-18T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb88a0f83", "title": "Safari Extensions Gallery: half-baked", "url": "https://adam-p.ca/blog/2013/06/safari-extensions-gallery-half-baked/", "published_at": "2013-06-25T00:00:00+00:00" }, { "id": "01a0871f-a73c-7007-b15c-900fb8c0928f", "title": "No One Knows to Click on a Page Action", "url": "https://adam-p.ca/blog/2013/03/pageaction-interaction/", "published_at": "2013-03-24T00:00:00+00:00" } ] posts Claim your blog
Back to Adam Pritchard's blog and miscellany
Blog · corpus.blog/blogs/adam-p.ca/posts

Adam Pritchard's blog and miscellany

adam-p.ca

2025

2023

2022

2021

2019

2017

2016

2015

2013