The Curious Engineer

All blogs / Other languages

Will Richardson

willhbr.net

Computers, photography, and related matters.

Other languagesDev tools / editors / IDEsLinux / UnixGeneral

Posts
161 from 4 Sep 2014 to 25 Oct 2026
Posting
weekly (27 in the last year)
Kind
personal blog
Feed
https://willhbr.net/feed.xml

2026 16

  1. What Can You Do for Your Compiler?
  2. Inevitably, NixOS
  3. Owning My Streaming With Navidrome
  4. Running Code in the Crystal Type System
  5. HTML-Safe String Interpolation
  6. Type-Checking SQL Queries With Crystal Macros
  7. Backups With Restic
  8. All Buttons Could Be Action Buttons
  9. Language Models for Programming
  10. From Vim to Helix
  11. Language Servers in Containers
  12. Async Programming Is Just @Inject Time
  13. Ruby Scripting Utilities
  14. Building Dependency Injection with Crystal Macros
  15. Why Containers?
  16. Upgrading to Jekyll 4.4

2025 28

  1. Help I'm Stuck in a Photo Management Factory and I Can't Get Out
  2. My Website Broke and You Won't Believe Why
  3. Add a Signature to Your Website
  4. Programming With tmux for Beginners
  5. Why Do Containers on Alpine Forget My Tailnet? November 30
  6. More Commands in the JJ Toolbox November 22
  7. Hot ECR Reloading in Your Area November 17
  8. HTML-Safe ECR Templates November 13
  9. Tracking Down Progressively-Enhanceable APIs November 7
  10. Recklessly Smashing mruby Into Zsh November 1
  11. Unlocking the Full Speed of the tmux Interpreter October 25
  12. Light Mode InFFFFFFlation October 20
  13. The 6.2nd Stage of Swift on Linux October 13
  14. It Wasn't a Virus, It Was Just TLS October 5
  15. Now Codeberg Is My New Best Friend August 16
  16. Rewriting Pod With Two Years of Wisdom July 25
  17. GIF: The Git Interchange Format June 16
  18. Using Ruby in Shell Pipelines June 8
  19. Writing in Crystal, Rewriting in Rust April 26
  20. Building NZ Topomap of the Day March 28
  21. Snakes in a Pane: Building Snake Entirely Within a tmux Config File March 20
  22. Playing Video With 5,170 tmux Windows March 17
  23. Endash, a Lightweight Container Dashboard March 10
  24. A Slim Home Server with Alpine Linux March 9
  25. What Happened to the Future of Computing? March 2
  26. Configure Rootless Podman Remote on Alpine Linux January 18
  27. How Did I Miss run -C? January 10
  28. Lazy Load Command Completions for a Faster Shell Startup January 6

2024 37

  1. Solving Sudoku with tmux December 27
  2. Going Gigabit December 16
  3. HTTP Router for Crystal December 6
  4. Appreciating the Fine Art of Phone Photography December 2
  5. Why Does Delta Take 400ms to Show Diffs? November 23
  6. Web Gardening October 3
  7. When Does an API Become a DSL? September 28
  8. Mockito, Type Checking, and the Perils of DSL Design September 27
  9. Copy the Output of the Last Command Using tmux September 26
  10. Grabbing GitHub Release Assets Using JQ September 22
  11. Implicit Lifetimes and Undroppable Types September 5
  12. Horrifying Volume Control Interface September 2
  13. Understanding Revsets for a Better JJ Log Output August 18
  14. A New Home for My Photos July 20
  15. Lazy Jekyll Hacks for More Accurate Publication Times July 18
  16. Upsetting the Apricot Cart July 17
  17. Merging JJ Repos July 11
  18. Interoperability Tier List July 10
  19. A Critique of Closure Syntaxes June 28
  20. Apple Watch Running Apps June 18
  21. Repairing My Roborock S6 June 15
  22. Using JJ for the Version Control Operation Audit June 9
  23. The Version Control Operation Audit June 7
  24. Some Hot JJ Tips May 26
  25. Happy Birthday to Website May 5
  26. Glory Is an Indeterminate Amount of Bandwidth Away April 19
  27. Blogroll: Early 2024 April 11
  28. It's Not Me, It's Git April 1
  29. Further Adventures in tmux Code Evaluation March 16
  30. Making a Compiler to Prove tmux Is Turing Complete March 15
  31. tmux.conf, With Commentary March 6
  32. Optimising for Modification February 28
  33. A Successful Experiment in Self-Hosted RSS Reading February 21
  34. Scalability and Capability February 8
  35. 40th Anniversary Macs January 28
  36. The Code-Config Continuum January 18
  37. I'm Dumbfounded by Discord January 13

2023 32

  1. Build and Install Tools Using Containers December 29
  2. Jekyll Blog Tips December 2
  3. Parsing Flags is Surprisingly Hard November 12
  4. How I Learned to Stop Worrying and Love Concurrency October 31
  5. Improvements for Initialising Pod Projects October 19
  6. The Best Reading App September 25
  7. The Five Stages of Swift on Linux August 23
  8. Warp Terminal August 2
  9. The Curse of Knowledge July 31
  10. Helicopter Tracking for Safer Drone Flights July 29
  11. Simple Home Server Monitoring with Prometheus in Podman July 16
  12. Limited Languages Foster Obtuse APIs July 9
  13. Why Modernising Shells is a Sisyphean Effort July 6
  14. Picking a Synology July 3
  15. Why Crystal is the Best Language Ever June 24
  16. Interfaces of Spatial Photo Editing June 18
  17. DJI Mini 3 Pro June 11
  18. Overcoming a Fear of Containerisation June 8
  19. pod, the container manager June 8
  20. Photomator for MacOS May 24
  21. Complicated Solutions to Photo Publishing May 22
  22. DJI DNG Rendering Broken on Ventura May 10
  23. Hardening with ssh-audit May 9
  24. Setting up podman-remote May 5
  25. @willhbr: Origins May 4
  26. Making a Website for the Open Web March 13
  27. Installing rsnapshot on Synology DS420j March 7
  28. Geode: More Functions for Crystal March 2
  29. HOT NEW MARKDOWN EDITOR FOR MACOS February 10
  30. Dismissable Popup Shell in tmux February 7
  31. Adding OpenGraph previews to Jekyll February 4
  32. Create a Mastodon alias using GitHub Pages January 24

2022 2

  1. Shortcuts is a Cursed Minefield April 22
  2. The Good & Bad of Photos for MacOS March 20

2021 1

  1. Configure Nebula VPN on iOS/Android June 22

2019 1

  1. Impracticalities of iOS Photo Management for Photographers November 2

2018 4

  1. Compiling for Shortcuts December 26
  2. Learning Software Engineering July 17
  3. iOS Should Not Have a Command Line June 21
  4. Writing Macros in Crystal June 18

2017 11

  1. Scrutinising a Scalable Programming Language November 21
  2. A Downgrade October 22
  3. Top Tips for iOS 11 September 24
  4. Pug: An Abomination of Shell Scripting August 21
  5. Learn Enhancer Reaches Version 2.0 July 21
  6. Using tmux in the Real World July 11
  7. Metaprogramming and Macros for Server-Side Swift July 4
  8. Needless complexity: Generalising a Scheme for Aikido Training June 18
  9. More Fun With Generics in Kotlin May 23
  10. Templates, Code Generation, and Macros May 1
  11. Conditionals in SH January 11

2016 9

  1. Tested: Apple Won't Make a Touch MacBook October 30
  2. Bluetooth is Great, Until it's Not October 27
  3. Basics of Functional Programming July 28
  4. Making Slackbots July 11
  5. Why I Dislike ATDD March 29
  6. Why I use Nginx March 3
  7. Enumerating The Ways I Love Swift Enumerations February 28
  8. Testing GitLab CI February 12
  9. 4K Video Editing on a 12" MacBook? January 8

2015 13

  1. Welcome to Swift.org December 4
  2. Life with Swift November 28
  3. Not Enough Magic October 22
  4. OS X El Capitan October 2
  5. Absurd infinitum: Deliberately misunderstanding Steve Jobs September 13
  6. Learn Enhancer 1.6 June 8
  7. The OnePlus One May 11
  8. Nexus 6.5 April 12
  9. Samsung Copying Culture April 6
  10. Valve: Give me a Steam Machine March 24
  11. Pebble Time March 6
  12. I made a thing February 16
  13. Smartwatch!? January 25

2014 7

  1. How to: Pull an app database from android app November 22
  2. How to: Yosemite Dark Mode Terminal October 27
  3. howto: SQL Triggers October 5
  4. Advanced Phone Maths September 27
  5. RE: standards September 19
  6. I Want Standards and Control September 10
  7. Hello September 4