corpus.blog
Most cited
Talked about
Blogs
41554 blogs · [ { "id": "01a0e214-9505-7222-8efa-0d890dc872b0", "title": "Running Code in the Crystal Type System", "url": "https://willhbr.net/2026/09/25/crystal-type-system-code/", "published_at": "2026-09-25T10:46:20+00:00" }, { "id": "01a08c62-b9d9-710e-9fa1-330d4d2a1902", "title": "HTML-Safe String Interpolation", "url": "https://willhbr.net/2026/08/17/html-safe-string-interpolation/", "published_at": "2026-08-16T14:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c4430bc558", "title": "Type-Checking SQL Queries With Crystal Macros", "url": "https://willhbr.net/2026/08/15/crystal-macro-sql-type-checking/", "published_at": "2026-08-14T14:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c4432c6c51", "title": "Backups With Restic", "url": "https://willhbr.net/2026/07/19/backups-with-restic/", "published_at": "2026-07-18T14:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c443d0d185", "title": "All Buttons Could Be Action Buttons", "url": "https://willhbr.net/2026/07/12/all-buttons-could-be-action-buttons/", "published_at": "2026-07-11T14:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c444738390", "title": "Language Models for Programming", "url": "https://willhbr.net/2026/06/09/language-models-for-programming/", "published_at": "2026-06-08T14:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c444f881e6", "title": "From Vim to Helix", "url": "https://willhbr.net/2026/06/03/from-vim-to-helix/", "published_at": "2026-06-02T14:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c445e84115", "title": "Language Servers in Containers", "url": "https://willhbr.net/2026/03/13/language-servers-in-containers/", "published_at": "2026-03-12T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c446be4b28", "title": "Async Programming Is Just @Inject Time", "url": "https://willhbr.net/2026/03/02/async-inject-and-effects/", "published_at": "2026-03-01T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c447ac8452", "title": "Ruby Scripting Utilities", "url": "https://willhbr.net/2026/02/08/ruby-scripting-utilities/", "published_at": "2026-02-07T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c4486fe4f3", "title": "Building Dependency Injection with Crystal Macros", "url": "https://willhbr.net/2026/01/31/crystal-dependency-injection/", "published_at": "2026-01-30T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c449652349", "title": "Why Containers?", "url": "https://willhbr.net/2026/01/15/why-containers/", "published_at": "2026-01-14T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c449a3b4c3", "title": "Upgrading to Jekyll 4.4", "url": "https://willhbr.net/2026/01/03/upgrading-to-jekyll-4-4/", "published_at": "2026-01-02T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c449c5b1b5", "title": "Help I'm Stuck in a Photo Management Factory and I Can't Get Out", "url": "https://willhbr.net/2025/12/26/stuck-in-a-photo-management-factory/", "published_at": "2025-12-25T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c44a91b3c3", "title": "My Website Broke and You Won't Believe Why", "url": "https://willhbr.net/2025/12/24/my-website-broke-and-you-wont-believe-why/", "published_at": "2025-12-23T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c44ab81375", "title": "Add a Signature to Your Website", "url": "https://willhbr.net/2025/12/14/add-a-signature-to-your-website/", "published_at": "2025-12-13T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c44bb1b431", "title": "Programming With tmux for Beginners", "url": "https://willhbr.net/2025/12/13/programming-with-tmux-for-beginners/", "published_at": "2025-12-12T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c44bc3882c", "title": "Why Do Containers on Alpine Forget My Tailnet?", "url": "https://willhbr.net/2025/11/30/alpine-containers-forget-tailnet/", "published_at": "2025-11-29T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c44c500a52", "title": "More Commands in the JJ Toolbox", "url": "https://willhbr.net/2025/11/22/more-commands-in-the-jj-toolbox/", "published_at": "2025-11-21T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c44c6600be", "title": "Hot ECR Reloading in Your Area", "url": "https://willhbr.net/2025/11/17/hot-ecr-reloading-in-your-area/", "published_at": "2025-11-16T13:00:00+00:00" }, { "id": "01a08c62-b9da-71cb-8d8a-e2c44d1bf10d", "title": "HTML-Safe ECR Templates", "url": "https://willhbr.net/2025/11/13/html-safe-ecr-templates/", "published_at": "2025-11-12T13:00:00+00:00" } ] posts
Claim your blog
Back to Will Richardson
Blog · corpus.blog/blogs/willhbr.net/posts
Will Richardson
willhbr.net
2026
Running Code in the Crystal Type System
original ↗
25 Sept 2026
HTML-Safe String Interpolation
original ↗
16 Aug 2026
Type-Checking SQL Queries With Crystal Macros
original ↗
14 Aug 2026
Backups With Restic
original ↗
18 Jul 2026
All Buttons Could Be Action Buttons
original ↗
11 Jul 2026
Language Models for Programming
original ↗
8 Jun 2026
From Vim to Helix
original ↗
2 Jun 2026
Language Servers in Containers
original ↗
12 Mar 2026
Async Programming Is Just @Inject Time
original ↗
1 Mar 2026
Ruby Scripting Utilities
original ↗
7 Feb 2026
Building Dependency Injection with Crystal Macros
original ↗
30 Jan 2026
Why Containers?
original ↗
14 Jan 2026
Upgrading to Jekyll 4.4
original ↗
2 Jan 2026
2025
Help I'm Stuck in a Photo Management Factory and I Can't Get Out
original ↗
25 Dec 2025
My Website Broke and You Won't Believe Why
original ↗
23 Dec 2025
Add a Signature to Your Website
original ↗
13 Dec 2025
Programming With tmux for Beginners
original ↗
12 Dec 2025
Why Do Containers on Alpine Forget My Tailnet?
original ↗
29 Nov 2025
More Commands in the JJ Toolbox
original ↗
21 Nov 2025
Hot ECR Reloading in Your Area
original ↗
16 Nov 2025
HTML-Safe ECR Templates
original ↗
12 Nov 2025