41554 blogs · [ { "id": "01a087bd-bc3a-7031-ba26-d410867ad401", "title": "make-bookmarklets.com", "url": "https://paul.af/mkbkmk", "published_at": "2026-03-05T02:01:00+00:00" }, { "id": "01a087bd-bc3a-7031-ba26-d4108715c86e", "title": "Restaurant Week: Winter 2026 Edition", "url": "https://paul.af/restaurant-week-winter-2026", "published_at": "2026-01-29T13:32:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca6a4d0f46", "title": "“Skip Level” Interview Questions", "url": "https://paul.af/skip-level", "published_at": "2026-01-23T22:24:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca6b463807", "title": "On Being a Top Dumpling", "url": "https://paul.af/top-dumpling", "published_at": "2026-01-15T20:23:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca6ba5a3ef", "title": "Weeknotes for 2026-W02", "url": "https://paul.af/2026-w02", "published_at": "2026-01-12T14:00:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca6bca2024", "title": "K, M, G, T vs. Ki, Mi, Gi, Ti", "url": "https://paul.af/kmgt", "published_at": "2026-01-08T14:06:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca6c3a573d", "title": "DevFestMN 2025", "url": "https://paul.af/devfestmn-2025", "published_at": "2025-12-06T23:44:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca6cdc932b", "title": "You Should Index Your To-Go Cup Lid", "url": "https://paul.af/index-your-lid", "published_at": "2025-11-17T01:00:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca6db7bbf1", "title": "Re: Chiseling: The Art of Polishing Vibe Code", "url": "https://paul.af/chiseling", "published_at": "2025-11-06T02:00:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca6df6aa49", "title": "ProTip™: Rollback a Homebrew Package", "url": "https://paul.af/brew-rollback", "published_at": "2025-08-07T13:07:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca6edc2ba5", "title": "Tmux 101: A Crash Course", "url": "https://paul.af/tmux-101", "published_at": "2025-02-13T14:06:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca6f8805a2", "title": "I #100DaysToOffload’d", "url": "https://paul.af/100daystooffload-finish-line", "published_at": "2025-01-13T14:06:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7015b341", "title": "Reimplementing Unsplash Source", "url": "https://paul.af/reimplementing-unsplash-source", "published_at": "2025-01-13T05:29:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7043c11d", "title": "!mdnio", "url": "https://paul.af/bang-mdnio", "published_at": "2025-01-12T05:28:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7127d71d", "title": "JWCC: JSON With Comments & (Trailing) Commas", "url": "https://paul.af/jwcc", "published_at": "2025-01-11T04:32:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca71491ca5", "title": "Mils", "url": "https://paul.af/mils", "published_at": "2025-01-07T00:42:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca714c535d", "title": "Why Tabs Are Better Than Spaces", "url": "https://paul.af/rip-tab-1963-2020", "published_at": "2024-12-30T23:30:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca723e71b5", "title": "I Read Approachable Open Source", "url": "https://paul.af/approachable-open-source", "published_at": "2024-12-24T14:06:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca730cf176", "title": "You Deserve a Tech Bookclub", "url": "https://paul.af/you-deserve-a-bookclub", "published_at": "2024-12-23T20:09:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca73cb4785", "title": "CodePen 2.0", "url": "https://paul.af/codepen-two-point-oh", "published_at": "2024-12-21T02:37:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca74027ee7", "title": "My Bash Script Preamble Boilerplate", "url": "https://paul.af/bash-script-preamble-boilerplate", "published_at": "2024-12-18T18:08:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca746454a0", "title": "Re: “Rules” that terminal programs follow", "url": "https://paul.af/terminal-rules", "published_at": "2024-12-17T17:05:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca74a7a4ef", "title": "Flexbox Is Hard (Sometimes)", "url": "https://paul.af/flexbox-is-hard", "published_at": "2024-12-08T15:06:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca755486c8", "title": "DevFestMN 2024", "url": "https://paul.af/devfestmn-2024", "published_at": "2024-12-07T23:44:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca75b4bc7d", "title": "Black Friday / Cyber Monday 2024 Retro", "url": "https://paul.af/bfcm-2024", "published_at": "2024-12-04T14:06:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca75bef83a", "title": "CM-24 1/4” Hex to 1/4” Square Adapter", "url": "https://paul.af/cm-24-hex-to-square-adapter", "published_at": "2024-11-27T14:06:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca761267aa", "title": "Green Day Driven Development", "url": "https://paul.af/gddd", "published_at": "2024-11-20T14:06:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca76f3fa0a", "title": "TIL 6GHz WiFi Is a Thing", "url": "https://paul.af/six-gigahertz", "published_at": "2024-11-14T14:06:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca775c2350", "title": "“Secret” GitHub Gists Are Unlisted, Not Private", "url": "https://paul.af/gist-complaints", "published_at": "2024-11-11T17:42:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca77c32be5", "title": "The `List-Unsubscribe-Post` Email Header", "url": "https://paul.af/list-unsubscribe-post", "published_at": "2024-11-07T14:52:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7844996f", "title": "GPS Time Distance Intersection", "url": "https://paul.af/time-distance-intersection", "published_at": "2024-11-05T15:06:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca78a095f9", "title": "InsightFest 2024", "url": "https://paul.af/insightfest-2024", "published_at": "2024-11-03T19:27:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7920e2dd", "title": "Re: Version 1 is for you", "url": "https://paul.af/mpv1", "published_at": "2024-11-01T15:32:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca79960c5f", "title": "TIL `.git-blame-ignore-revs`", "url": "https://paul.af/git-blame-ignore-revs", "published_at": "2024-11-01T00:34:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca799db2a6", "title": "Technical Writing One", "url": "https://paul.af/technical-writing-one", "published_at": "2024-10-25T15:25:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7a3c146f", "title": "ccTLD Concerns: .io and .af", "url": "https://paul.af/af-io-concerns", "published_at": "2024-10-22T13:42:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7b190a44", "title": "Weeknotes for 2024-W42 (and W41)", "url": "https://paul.af/2024-w42", "published_at": "2024-10-21T15:21:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7bfd2c1f", "title": "Escaping In-App Browsers, Revisited", "url": "https://paul.af/in-app-browsers-revisited", "published_at": "2024-10-16T22:27:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7cacd216", "title": "TIL Slash Pages", "url": "https://paul.af/slash-pages", "published_at": "2024-10-07T20:18:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7d56c30f", "title": "Weeknotes for 2024-W40", "url": "https://paul.af/2024-w40", "published_at": "2024-10-07T15:59:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7d8ab633", "title": "The Email That Got Me My First (Tech) Job", "url": "https://paul.af/first-tech-job", "published_at": "2024-10-04T13:04:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7daa0009", "title": "TIL Djot", "url": "https://paul.af/djot", "published_at": "2024-10-01T14:06:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7dea7a08", "title": "Weeknotes for 2024-W39", "url": "https://paul.af/2024-w39", "published_at": "2024-09-30T14:30:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7ea4e6af", "title": "TIL The Interop Project", "url": "https://paul.af/interop-project", "published_at": "2024-09-29T12:47:00+00:00" }, { "id": "01a087bd-bc3b-7371-a01b-14ca7f6a5fbd", "title": "ProTip™: Async/Await IIFEs for Background Tasks", "url": "https://paul.af/async-iife", "published_at": "2024-09-28T12:37:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f06fc82503", "title": "ProTip™: Decouple Building & Deploying in Your GitHub Actions Pipeline", "url": "https://paul.af/decouple-github-actions-pipeline", "published_at": "2024-09-26T14:50:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f06fe7e48d", "title": "Weeknotes for 2024-W38", "url": "https://paul.af/2024-w38", "published_at": "2024-09-23T14:23:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0705865f8", "title": "Weeknotes for 2024-W37", "url": "https://paul.af/2024-w37", "published_at": "2024-09-16T14:16:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f070b4af59", "title": "ProTip™: Installing Legacy Node Versions on Apple Silicon", "url": "https://paul.af/install-legacy-node-on-apple-silicon", "published_at": "2024-09-10T14:10:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0716b08ea", "title": "Weeknotes for 2024-W36", "url": "https://paul.af/2024-w36", "published_at": "2024-09-09T14:09:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0725b9e76", "title": "Weeknotes: An Intention", "url": "https://paul.af/trying-weeknotes", "published_at": "2024-09-07T20:51:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0730abfdc", "title": "I Wrote a Static Site Generator in Bash", "url": "https://paul.af/bash-ssg", "published_at": "2024-09-06T14:06:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f073573f3e", "title": "“Approachable Open Source” Available for Preorder", "url": "https://paul.af/preorder-approachable-open-source", "published_at": "2024-09-03T22:02:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f073dcc3f1", "title": "Subscribe by Email via FeedMail", "url": "https://paul.af/feedmail", "published_at": "2024-09-01T14:01:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f073f7e72e", "title": "/ai Manifesto", "url": "https://paul.af/slash-ai", "published_at": "2024-08-31T21:43:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0743a5859", "title": "Re: I Read “The Tech Resume Inside Out” and Updated My Resume", "url": "https://paul.af/on-rewriting-my-resume", "published_at": "2024-08-23T14:14:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0749652ba", "title": "TIL Node’s `–watch` flag", "url": "https://paul.af/node-watch", "published_at": "2024-08-22T19:02:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f074f17095", "title": "Fixing Twitch’s Broken iCal Feeds", "url": "https://paul.af/twitch-ical", "published_at": "2024-08-21T13:21:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07568fa68", "title": "Re: LinkedIn Profile Roaster", "url": "https://paul.af/linkedin-roaster", "published_at": "2024-08-20T22:16:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07654e14e", "title": "SRCCON 2024", "url": "https://paul.af/srccon-2024", "published_at": "2024-08-19T21:52:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f076b7e567", "title": "Re: q What do I title this article?", "url": "https://paul.af/quick-question", "published_at": "2024-08-16T13:16:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f077508216", "title": "Middleware for Kagi’s Small Web RSS Feed", "url": "https://paul.af/small-web", "published_at": "2024-08-16T04:07:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f077b83661", "title": "Rote Learning HTML & CSS", "url": "https://paul.af/rote-learning", "published_at": "2024-08-15T04:02:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f077f65b4f", "title": "Re: Your API Shouldn’t Redirect HTTP to HTTPS", "url": "https://paul.af/no-http-api", "published_at": "2024-08-13T13:13:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0783b005d", "title": "TIL `docker init`", "url": "https://paul.af/docker-init", "published_at": "2024-08-09T19:00:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0789c8516", "title": "Devopsdays MSP 2024", "url": "https://paul.af/devopsdays-msp-2024", "published_at": "2024-08-08T13:08:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f078a2c2e4", "title": "Re: GitHub Praise", "url": "https://paul.af/github-praise", "published_at": "2024-08-05T15:58:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0794f9d91", "title": "On Man-Months & Silver Bullets", "url": "https://paul.af/mythical-man-month", "published_at": "2024-08-05T13:05:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f079787336", "title": "Re: GitHub Roaster", "url": "https://paul.af/github-roaster", "published_at": "2024-08-03T15:58:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07a66c2f7", "title": "Wavefront 2024", "url": "https://paul.af/wavefront-2024", "published_at": "2024-08-02T13:00:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07b4d8c7b", "title": "Breaking Changes: URI Fragments", "url": "https://paul.af/breaking-fragments", "published_at": "2024-07-31T13:00:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07bee17e7", "title": "ProTip™: `nvm install` Your `.nvmrc`", "url": "https://paul.af/nvm-install", "published_at": "2024-07-29T20:07:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07c88d599", "title": "Val Town", "url": "https://paul.af/val-town", "published_at": "2024-07-25T13:02:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07d03430e", "title": "Re: CSS One-Liners to Improve (Almost) Every Project", "url": "https://paul.af/css-one-liners", "published_at": "2024-07-23T14:27:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07d6a36d4", "title": "HOWTO: Escape In-App Browsers on Android & iOS", "url": "https://paul.af/escape-in-app-browsers", "published_at": "2024-07-22T21:42:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07d803b6e", "title": "TIL “The Tech Resume” Is Free If Jobless", "url": "https://paul.af/tech-resume", "published_at": "2024-07-19T22:03:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07de27e8f", "title": "In-App Browsers on Frontend Masters Boost", "url": "https://paul.af/boost-in-app-browsers", "published_at": "2024-07-17T17:07:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07e20d519", "title": "#100DaysToOffload 6-Month Retrospective", "url": "https://paul.af/100daystooffload-halftime", "published_at": "2024-07-17T13:00:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07f10d269", "title": "TIL You Can Deeplink to Specific PDF Pages", "url": "https://paul.af/deeplink-pdf", "published_at": "2024-07-15T14:52:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f07fcb1cbe", "title": "HN Who’s Hiring Historical Stats", "url": "https://paul.af/whoishiring", "published_at": "2024-07-12T13:00:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f080ab0f8d", "title": "HTMX + FastAPI on TestDriven.io", "url": "https://paul.af/testdriven-fastapi-htmx", "published_at": "2024-07-10T12:10:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0812efcf1", "title": "ProTip™: Use Bruno with an Existing `.env`", "url": "https://paul.af/bruno-dotenv", "published_at": "2024-07-09T14:07:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f081f22c40", "title": "Dailying Visual Studio Code Insiders", "url": "https://paul.af/vscode", "published_at": "2024-07-07T12:07:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0825fe840", "title": "Open, Source-Available", "url": "https://paul.af/open-comma-source-available", "published_at": "2024-07-06T12:06:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f082fe33c9", "title": "RIP Unsplash Source", "url": "https://paul.af/rip-unsplash-source", "published_at": "2024-07-03T16:47:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0831d0d72", "title": "ProTip™: Nuke a File from Git History", "url": "https://paul.af/git-remove-file-from-history", "published_at": "2024-07-01T18:37:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f083a966de", "title": "Maxims of 1st Gen (ZE1) Honda Insight Ownership", "url": "https://paul.af/ze1-maxims", "published_at": "2024-06-17T13:55:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0846f8cb3", "title": "Re: Affirmations for bloggers", "url": "https://paul.af/affirmations-for-bloggers", "published_at": "2024-06-12T21:00:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f0852e10a1", "title": "Open Source North 2024", "url": "https://paul.af/osn2024", "published_at": "2024-06-06T13:00:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f085ed221a", "title": "Humane Alphabets", "url": "https://paul.af/humane-alphabets", "published_at": "2024-06-03T17:00:00+00:00" }, { "id": "01a087bd-bc3c-70d1-ab8f-57f085f52806", "title": "TIL `github` CLI & Public Suffix List", "url": "https://paul.af/github-cli-and-public-suffix-list", "published_at": "2024-05-31T19:00:00+00:00" }, { "id": "01a087bd-bc3d-7095-9357-da94b3201289", "title": "Buying a $2,500 Car and Driving It Home 2,000 Miles (Part 2)", "url": "https://paul.af/insight-roadtrip-part-2", "published_at": "2024-04-25T13:06:00+00:00" }, { "id": "01a087bd-bc3d-7095-9357-da94b324fb21", "title": "Minnebar 18", "url": "https://paul.af/minnebar18", "published_at": "2024-04-23T13:00:00+00:00" }, { "id": "01a087bd-bc3d-7095-9357-da94b363b164", "title": "Buying a $2,500 Car and Driving It Home 2,000 Miles (Part 1)", "url": "https://paul.af/insight-roadtrip-part-1", "published_at": "2024-04-08T14:06:00+00:00" }, { "id": "01a087bd-bc3d-7095-9357-da94b3f4d942", "title": "TIL VS Code Has a Builtin Web Browser", "url": "https://paul.af/simple-browser", "published_at": "2024-03-31T13:00:00+00:00" }, { "id": "01a087bd-bc3d-7095-9357-da94b46331ec", "title": "Alembic Migrations on TestDriven.io", "url": "https://paul.af/testdriven-alembic", "published_at": "2024-03-29T14:03:00+00:00" }, { "id": "01a087bd-bc3d-7095-9357-da94b501de5d", "title": "Measuring TDS and EXT% of Coffee by Hand", "url": "https://paul.af/minmaxing-coffee", "published_at": "2024-03-27T12:02:00+00:00" }, { "id": "01a087bd-bc3d-7095-9357-da94b51ab05e", "title": "Tracking Hand Ground Coffee Size", "url": "https://paul.af/dialing-in", "published_at": "2024-03-18T13:00:00+00:00" }, { "id": "01a087bd-bc3d-7095-9357-da94b5abf825", "title": "Re: Where I’m at on the whole CSS-Tricks thing", "url": "https://paul.af/chris-coyier-on-css-tricks", "published_at": "2024-03-02T15:06:00+00:00" }, { "id": "01a087bd-bc3d-7095-9357-da94b5d84a41", "title": "Sign the PWA Open Letter to Apple", "url": "https://paul.af/pwa-open-letter", "published_at": "2024-03-01T13:57:00+00:00" } ] posts Claim your blog
Back to Howdy - Paul's Weblog
Blog · corpus.blog/blogs/paul.af/posts

Howdy - Paul's Weblog

paul.af

2026

2025

2024