Welcome to my blog!
But yield who will to their separation,
My object in living is to unite
My avocation and my vocation
As my two eyes make one in sight.
Only where love and need are one,
And the work is play for mortal stakes,
Is the deed ever really done
For Heaven and the future’s sakes.
— Robert Frost, Two Tramps in Mud Time
I have a (mostly) technical blog where I write about things I’m learning or working on. These are all things that have interested me enough to write about them. I hope you find something useful here!
Choice cuts:
- Ring the Bell - My first (and only, so far) hardware project: Building a bell that rings when a new customer signs up.
- Software Engineering and Risk Management. Why better software hygiene + faster release cycles = less risk.
All Blog Posts
2024
-
—
Who Should Cache?
A discussion on where to cache authorization results in a microservices architecture.
-
—
Graceful Gunicorn Pod Shutdowns
How to gracefully shut down Gunicorn pods in Kubernetes to avoid 500s during deployments.
-
—
Detecting API Pressure in Gunicorn Backends
How to detect API pressure in single-threaded backends and scale out.
-
—
MySQL Read Replicas and Read-After-Write Semantics
A MySQL cluster scales by adding read replicas. How do you route traffic to them? I explore this, propose, and implement a solution.
-
—
Redshift ra3 vs. dc2 Performance
Evaluating the performance of Redshift's COPY command with different node types and data sizes.
2023
-
—
Proxy User IDs
How to share user data with third-party services while respecting user privacy.
-
—
AWS Support Pricing
AWS's multi-account support pricing is hypocritical and expensive.
-
—
Software Engineering and Risk Management
A discussion on how engineering hygiene and risk management are intertwined.
-
—
The Microwave Manifesto
My coworker outlines his manifesto for microwaves.
-
—
Bootstrapping Trust on Kubernetes
How to bootstrap trust between pods on Kubernetes.
2022
-
—
Simulating Queue Delay
Simulating queue delay in background jobs to see what our system is like under load
-
—
Serializing CircleCI
A rant about the lack of serialization in CircleCI.
-
—
Blameless Postmortems
A discussion on the importance of postmortems and how to make them better.
-
—
Ring the Bell Goes IRL
A fun project to ring a bell in the office when we get a new customer.
-
—
HGym: Writing My Gym App
Dipping my toes into Mobile Development with Flutter and Dart.
2021
-
—
SQS's Slow Tail Latency
A deep dive into the tail latency of AWS Simple Queue Service (SQS).
-
—
SQS Performance (II)
SQS performance is still slow. We investigate further.
2020
-
—
MySQL Proxies
A discussion of MySQL proxies and how they can help you manage MySQL connections.
-
—
Athena 2 Cloudtrail "HIVE_BAD_DATA: Line too long"
Athena 2 has a bug that causes it to throw "HIVE_BAD_DATA: Line too long" errors on compressed files.
2019
-
—
Rate Limiting
How we implemented rate limiting in our Django application.
-
—
AWS Global Accelerator
A review of AWS Global Accelerator and its performance benefits.
2018
-
—
AWS Cognito Limitations
A rant about the limitations of AWS Cognito.