Writing
A chronological archive of writing with short summaries and topic labels for faster skimming.
Unexpected AirPlay Interference
Debug a surprising macOS development issue caused by AirPlay Receiver listening on port 5000 instead of the local app.
- debugging
- macos
- airplay
- onboarding
Origin Story
A personal story about finding a path into computer science, struggling through the early years, and persevering anyway.
- career
- education
- personal
- engineering
Parsing Data in Rust with Nom
Parse Advent of Code input in Rust with nom and use the exercise to learn a parser combinator workflow.
- rust
- parsing
- nom
- advent-of-code
Every Other Friday Off Work Schedule
Break down a 9/80 schedule and show one concrete way to organize the hours that lead to every other Friday off.
- schedule
- work-life
- productivity
- career
Turning Lemons into Topologically Sorted Lemonade
Revisit a difficult interview problem and solve it with topological sorting, step by step, in Python.
- python
- algorithms
- interviews
- graph-theory
Twelve-Factor Methodology Applied to a Django App
Apply the Twelve-Factor App methodology to a Django project and translate the principles into concrete operational guidance.
- django
- python
- cloud-native
- architecture
Leaving Comments on My Own Pull Requests
Explain why leaving comments on your own pull requests can improve onboarding, review context, and documentation.
- github
- pull-requests
- collaboration
- documentation
How I Make Slack Work for Me
A practical set of Slack habits and features that make day-to-day collaboration more manageable and less noisy.
- slack
- productivity
- communication
- leadership
Creating Go Application Releases with GoReleaser
Automate releases for a Go command-line tool with GoReleaser after modernizing the build environment.
- go
- releases
- automation
- cli
Validating Data in Python with Cerberus
Use Cerberus to model and validate structured Python data, illustrated with an Advent of Code passport problem.
- python
- validation
- cerberus
- advent-of-code
Centralized Scala Steward with GitHub Actions
Run Scala Steward centrally with GitHub Actions so unsupported ecosystems still get automated dependency updates.
- scala
- github-actions
- dependencies
- automation
A Useful Framework for Interpreting Success Stories
Use the emic and etic lens to interpret engineering success stories more carefully and avoid shallow takeaways.
- leadership
- communication
- career
- reflection
Scheduling Lambda Functions with AWS SAM
Explain the AWS SAM template pieces and CLI steps needed to schedule a recurring Go-based Lambda function.
- aws
- lambda
- sam
- serverless
- go
Haskell Code Katas: Counting Duplicates
Work through a Codewars duplicate-counting kata in Haskell and unpack the thinking behind the final solution.
- haskell
- algorithms
- functional-programming
- codewars
Installing Tor on FreeBSD 11
Install and configure Tor on FreeBSD 11 with a practical walkthrough and pointers for understanding what the software does.
- freebsd
- tor
- networking
- privacy
Raft Leader Election in Consul
Follow Raft leader election in a small Consul demo and connect the paper's concepts to real log output.
- consul
- raft
- distributed-systems
- debugging
Updating the Amazon RDS Certificate Bundle
Roll out the updated Amazon RDS certificate bundle ahead of a CA rotation so database clients keep connecting securely.
- aws
- rds
- tls
- operations
Preparing EC2 Instance Store with cloud-init
Prepare EC2 instance store volumes automatically with cloud-init so temporary storage is formatted and mounted at boot.
- aws
- ec2
- cloud-init
- storage
Sending E-Mail via Amazon SES over SMTP with IAM Roles
Document the limits of sending mail through Amazon SES over SMTP with IAM role credentials and the failure mode to expect.
- aws
- ses
- smtp
- iam
Using Docker to Manage Erlang Environments for Riak
Use Docker to isolate Erlang environments so working with Riak and Riak CS does not require reshaping a local machine each time.
- docker
- erlang
- riak
- development
Bootstrapping Private Subnet Instances In A VPC with Knife
Walk through bootstrapping instances inside a private Amazon VPC subnet with Chef Knife and the network path needed to reach them.
- aws
- vpc
- chef
- networking
Preseeding Ubuntu Server and Static IP Addresses
Automate Ubuntu Server installs with preseeding while still assigning static IP addresses during the initial setup.
- ubuntu
- provisioning
- linux
- networking
Testing Command-line Applications with Aruba
Learn how to test command-line applications with Aruba using a Cucumber-style workflow for features, steps, and assertions.
- ruby
- testing
- cli
- cucumber