The Curious Engineer

All blogs / Software / engineering practice

Chris Dzombak

dzombak.com/blog

A Midwestern software developer with objectively too many hobbies.

Software / engineering practiceLinux / UnixAI / MLDevOps / SRE / infrastructure

Posts
288 from 1 Aug 2008 to 27 Apr 2026
Posting
weekly (27 in the last year)
Kind
personal blog
Feed
https://www.dzombak.com/blog/rss/

2026 8

  1. A vLLM Docker Compose recipe for running Qwen 3.6 27B on dual RTX 3090s (+OpenCode configuration)
  2. eztag: GitHub Tag Creator
  3. Linux Desktop Amenities
  4. Things to try if you're new to Claude Code
  5. Birds of Sanibel Island
  6. "Why Does Test-Driven Development Work So Well In 'AI'-assisted Programming?"
  7. A pipeline for getting bird videos from an IP webcam
  8. What software engineers bring to AI-assisted software development

2025 76

  1. Never use Apple gift cards
  2. "Your job is to deliver code you have proven to work"
  3. Why tech companies encourage their software engineers to use LLMs
  4. Introducing two tools for working with Plex media libraries
  5. Letter of Recommendation: Simon Willison's Weblog
  6. noclobber breaks JetBrains IDEs’ ability to read your shell environment
  7. Streamlining my user-level CLAUDE.md
  8. Linux server migration planning
  9. Neat Image noise profiles for the Ricoh WG6
  10. Neat Image noise profiles for the Leica X1
  11. Beavers at work in West Lake Nature Preserve
  12. Using systemd to keep an SMB share mounted
  13. Using systemd to run a Docker container only when an SMB mount is mounted
  14. Beavers in Dexter, MI
  15. Automatically sort trail camera images with trailcamai
  16. pdate.dzdz.cz: A website for pdate
  17. Not everything in your todo list needs to be a proper GTD Next Action
  18. pdate: Date/Time Parsing for Programmers, DevOps, and SRE
  19. AlfredSwitchWindows now supports Ghostty tabs
  20. #latergram: Wild Birds at the Detroit Zoo, April 2024
  21. #latergram: Bird Photos from Kensington Metropark, July 2025
  22. A Tool for Working with Git Worktrees
  23. Getting Good Results from Claude Code: Writing Good Prompts
  24. Setting Up & Testing Spotlight + Samba + Elasticsearch
  25. New Derivative of my Ubiquiti Cloud Key 3.5" HDD Adapter
  26. Ask Claude Code to fix CI
  27. LLM Q&A Technique: Context Priming
  28. LLM + MCP Use Case: GitHub Actions Workflow Updates
  29. Celebrating 250(+) Public GitHub Repositories
  30. Give your LLM Coding Tools Their Own Tools
  31. Teaser for upcoming Claude Code posts
  32. Getting Good Results from Claude Code
  33. Quick Devops Tool: gha-secrets-setup
  34. Navigating and Rewriting Legacy Systems
  35. An improved nginx_ensite script
  36. How I share Bird Buddy photos online
  37. A Lychee photo library tool for titling photos
  38. Avoid unbounded inboxes; avoid stress
  39. Functional Documentation
  40. Announcing the DzSolarized VS Code theme
  41. Recommendation: Microphone Setup for BirdNET-Pi
  42. feedfilter: an RSS feed postprocessing tool
  43. Use Your Type System
  44. I vibe-coded an AI photo organizer for Lychee
  45. CO2 Monitoring and Alerting with Aranet4 + an4mon
  46. Neat Image noise profiles for the Sigma sd Quattro H
  47. Trying to remind myself that I don't have to do everything today.
  48. Setting up a dev env for Lychee
  49. 687999645019130001001e05
  50. A rule of thumb, that I need to keep in mind, is that it will take about the same amount of time to edit photos as I spent shooting them.
  51. for no particular reason other than I think it's fun,
  52. flickr-rss
  53. I've long been worried that Apple will drop support for AppleScript automation in macOS updates, or at least allow it to decay into a horrible broken state.
  54. A new feature, completed —
  55. A new feature, continued —
  56. A new feature appears —
  57. Updated instructions for installing my Debian package repositories
  58. How to rsync with sudo on both sides
  59. Host Inventory for a (not-) Homelab
  60. Tips on Brazing Copper and Stainless Steel
  61. Someone please Photoshop a “Phantom of the Opera” mask onto this grackle for me
  62. Some TODOs for the new site
  63. RIP: Aircraft Radar Skill for Amazon Alexa
  64. Great Moments in Modern Apple User Experience Design
  65. Know Your Birds: Red-Headed Woodpecker
  66. More Severance Michigan Connections
  67. My eBird Profile
  68. A Selection of Complex CSS Selectors
  69. Sunset over Canyonlands National Park, viewed from BLM's Needles Overlook in Utah.
  70. Birds in Moab and Arches & Canyonlands National Parks
  71. Brief Review: Tamron 28-300mm F/3.5-6.3 Di VC PZD
  72. My (Only) Two Complaints about the Canon 10x42 L IS WP Binoculars
  73. A migration to Ghost from Jekyll
  74. Automating Ghost Routes & Redirects Deployment
  75. Dust Caps for Oxygen/Acetylene Hoses
  76. Some new DNS-related tools

2024 38

  1. Everything I know about the YK-1000H NTP Server
  2. Making a Docker container depend on a disk being mounted
  3. Letter of Recommendation: Quality Binoculars
  4. Cloning Raspberry Pi SD cards
  5. Faking the fan rotor lock signal in a Tripp Lite SU1000RTXLCD2U UPS
  6. Freeing disk space on GitHub Actions runners
  7. Fixing Ego batteries in a low-voltage "defective" state
  8. Improved low-battery shutoff for my DIY Ego-powered 12V supply
  9. Moving fake-hwclock to a separate partition on a read-only Raspberry Pi
  10. Raspberry Pi Use Cases
  11. Alfred workflows for searching Bear notes and Docker Hub images
  12. Keeping a SMB share mounted on macOS (version 2)
  13. Letter of Recommendation: Where to start with Alastair Reynolds
  14. Monitoring for NAS data corruption on ext4 with cshatag
  15. Photographing an unusual aurora in southeastern Michigan
  16. Linux: start an mdraid check even though bash's noclobber is set
  17. The 12v portable power supply Ego needs to make
  18. Pi Reliability: Reduce writes to your SD card
  19. Some recent bird photos
  20. Running a Raspberry Pi with a read-only root filesystem
  21. Keeping a SMB share mounted on macOS (and alerting when it does down)
  22. Setting net.netfilter.nf_conntrack_max on Ubuntu 22.04
  23. Pi Reliability over WiFi: 'Temporary failure in name resolution'
  24. OpenList is no longer available in the Chrome Web Store
  25. Socket organizers, end caps, and 3D-printed friction fits
  26. Reliable WiFi for the Bambu X1C 3D printer
  27. More Koyaanisqatsi desktop wallpaper (sunrise clouds this time)
  28. Making 3D-printed end caps for sharp aluminum extrusions
  29. Blocking disposable email domains in Mastodon
  30. Desert stills from Koyaanisqatsi as desktop wallpaper
  31. Automated generator load-shedding for the house
  32. Setting up KVM virtual machines using a bridge network on an Ubuntu host
  33. Fixing bad design with a label maker
  34. Setting up a secondary Pi-Hole on my home network
  35. Recycling a pallet into an Adirondack-ish-style footrest
  36. RIP: OpenList Chrome Extension
  37. RIP: SaveTabs Chrome Extension
  38. How to move Docker's data directory from /var/lib

2023 15

  1. Considerations for a long-running Raspberry Pi
  2. Disable or remove unneeded services and software to help keep your Raspberry Pi online
  3. Consider the risks before making any dramatic changes to your Raspberry Pi setup
  4. Remote logging for easier Raspberry Pi debugging
  5. Stop using the Raspberry Pi's SD card for swap
  6. Keep your software up and running on the Raspberry Pi
  7. Mitigating hardware/firmware/driver instability on the Raspberry Pi
  8. Raspberry Pi SD cards: fsck them often
  9. Maintaining a solid WiFi connection on Raspberry Pi
  10. Choosing the right SD card for your Pi
  11. Fixing excessive Pi-hole lighttpd access log size when Netdata is installed
  12. RIP: garagedoorctl
  13. A complete table of Nikon 1 system battery compatibility
  14. From Pinboard to Raindrop
  15. Photo sequence of Bald Eagles hunting, from Nov. 2022

2022 4

  1. A simple, reasonably verbose URL shortener.
  2. Thinking about cardboard
  3. New IDs resulted in many “new” posts in Ann Arbor FOIA RSS feed
  4. Hacking slightly better sum types without Go generics

2021 45

  1. Building the atomic clock I’ve always wanted
  2. Reconsidering Netdata
  3. 3D Printing Recommendation: Plasti-Dip Spray Rubberized Coating
  4. TDS220 Oscilloscope Refurbishment: Rotary Encoders & Backlight
  5. 3d printing project tiny trays for screws etc
  6. Reducing SD Card Wear on a Raspberry Pi or Armbian Device
  7. Expanding the Ubiquiti Cloud Key Gen 2+ with a 3.5” Hard Drive
  8. Pikvm build
  9. Macos scripting how to tell if the terminal app has full disk access
  10. Thermal camera photos of wemos d1 mini esp8266 board
  11. Patron only fatal error episodes are becoming public
  12. Embracing a ruthless approach to email spam
  13. Log your ecobee data in influxdb with ecobee influx connector
  14. Raspberry pi environmental data logging to influxdb using bme280 am2301 sensors
  15. Small commands big consequences
  16. Esp8266 how to enable debug logging for arduino s esp8266httpclient with platformio
  17. Https requests with a root certificate store on esp8266 arduino
  18. Esp8266 platformio serial console monitoring with exception decoding
  19. Shipping data to influxdb using arduino esp8266
  20. Checking in on ios 15 bugs as of 15 0 2
  21. Initial impressions of esp8266 arduino
  22. Https requests with a small set of root certificates on esp8266 arduino
  23. Reusing an esp8266httpclient
  24. Debugging an intermittent arduino esp8266 isr crash
  25. Working around the untrusted developer bug on ios 15
  26. I wrote hosts timer to help quit my desktop twitter and facebook habits
  27. Tiny side project lofi cafe app
  28. I got into 3d printing and it feels like magic
  29. Ios 15 safari 15
  30. Integrating urls into the finder file browsing experience
  31. More bugs in iphone 13 ios 15
  32. LAKE.app
  33. LAKE.app GitHub repository
  34. Michigan covid vaccine links
  35. Deferred tasks project templates and more customizing things with applescript
  36. Securing my personal SSH infrastructure with Yubikeys
  37. Letters of Recommendation: Where to start with Peter F. Hamilton, Mastodon iPhone apps, and Domain Registrars
  38. Redirecting Hacker News traffic away from your site via Nginx configuration
  39. Using flickr again
  40. Ship electricity usage data from an energy bridge to influxdb
  41. Now jan 2021
  42. Replacing itunes music app and itunes match and icloud music library
  43. Why i use arq instead of restic for macos backups
  44. Now feb 2021
  45. A lightweight service health check tool written in bash

2020 2

  1. Simple programs that make Things.app better
  2. Introducing runner a lightweight wrapper for cron jobs

2018 6

  1. Letter to ann arbor city council regarding the failed y lot vote
  2. Ann arbor iphone x wallpaper
  3. Dashcam crash report from march 2017 aapd diag crash
  4. Takeaways from vox s post on malicious ads
  5. Reading list meltdown and spectre
  6. Deploying let s encrypt with nginx on ubuntu 16 04

2017 12

  1. Ali ramlawi and the library lot development
  2. Api design reading list
  3. Failing actors reading series
  4. Recommended equifax breach resources
  5. Alprs in ann arbor
  6. Quick ads b monitoring on os x
  7. Drying up duplicate code into helper functions
  8. Monitoring aircraft via ADS-B on OS X
  9. Fatal error season 2
  10. Parent child communication in a coordinator view model application
  11. Choosing a version number for a cocoapod with updated dependencies
  12. Statically typechecked duck types in swift

2016 13

  1. Fatal error
  2. The hard problem in decentralized social networks
  3. Why comcast injecting messages into web traffic is dangerous
  4. Let s encrypt vs itunes anatomy of an error delivering fatal error
  5. Fixing storyboard segues only apple can do this
  6. Radio in ann arbor scanning karb
  7. Over reactive
  8. A brief index of many neat ann arbor things
  9. Ad networks in their current incarnation are too dangerous to be allowed to exist
  10. Modeling polymorphic relationships in swift spoiler enums seem pretty cool
  11. Ad light malware heavy
  12. Does everything need to be https
  13. App transport security what why how

2015 20

  1. Quotes
  2. String is not a sufficient type how using your type system can help you make better software
  3. Obviously super complex evaluating software architecture as simple vs easy
  4. Writing good commit messages
  5. Working with custom uiview designated initializers
  6. Why i m selling my apple watch
  7. Ad blockers aren t killing the web ad networks are killing the web
  8. Nobody is using app transport security what s next
  9. Multiple inheritance vs traits or protocol extensions
  10. Cocoa s mutable subclass pattern is an antipattern
  11. Be proactive use reactive
  12. Casting in swift 1 2 a brief summary
  13. Subjective c i use property dot syntax liberally
  14. Iboutlet declarations in swift
  15. Why use github wikis
  16. Tiny swift idioms in objc
  17. A list of auto layout dsls categories etc
  18. Why non engineers should care about technical debt
  19. The problems with due process compatible cryptography
  20. Why reactive programming techniques are valuable

2014 20

  1. Notes on initialization on swift
  2. Physics in interstellar
  3. Ios 8 extensions roundup
  4. Real world singleton design
  5. Greg titus on nsfilecoordination and extensions
  6. Back buttons for web view controllers
  7. Code optional
  8. Tech debt
  9. Let s talk about optionals
  10. Benefits of cocoa still here in swift
  11. It s not exploitable
  12. Explicit programming
  13. ↗ Avoiding Singleton Abuse
  14. Follow me on Pinboard
  15. Singletons
  16. Quick singletons followup
  17. Including pods in source control
  18. Objective c
  19. The value of reactivecocoa
  20. Serving dropbox via nginx

2013 7

  1. I FOIA'd Myself with the FBI
  2. Do programmers use serial commas more often than other people? (No.)
  3. Arborwx
  4. Cdzlinkopenmanager
  5. Cdzpinger
  6. Airplane playground
  7. The ugli

2012 4

  1. Elegant uitableview selection edit state
  2. Collaborating with git
  3. Umich magicbus data
  4. Shooting theatre dance music

2011 11

  1. UMich Google Calendar Updated for Winter 2012
  2. Fixing corrupted mac on input error
  3. Capturing Lightning
  4. UMich Google Calendar Updated for Fall 2011
  5. Rdio spotify
  6. Remove att mobile bookmark android
  7. Making private gist public
  8. Twitter busyness average
  9. Shooting concerts with strobes
  10. Find open caen computers using your phone
  11. Moving from wordpress to jekyll

2010 3

  1. UMich Google Calendar Updated for Winter 2011
  2. Michigan Asst. AG Shirvell appeared at protest in May to defame Armstrong
  3. Datasheet for radioshack phototransistor

2009 3

  1. Perfect viewvc on dreamhost
  2. University of Michigan Google Calendar
  3. Very simple dynamic dns client

2008 1

  1. ↗ Singletons are Pathological Liars