Practicing the Basics
Sun Oct 02 2022
As a kid, I was fortunate enough to have role models in Senseis Judy and Reese Rigby. At their dojo, I learned the importance of practicing the “basics” - beginner katas, simple controlled motions, proper stance, breathing, calisthenics.
Testing and Epistemology
Sun Dec 19 2021
I find it interesting to think about software testing in terms of epistemology. We might think of a test suite as a set of knowledge claims about the behavior of our software. At the level of end-to-end tests, such knowledge claims may often correspond to user stories.
Private Methods are often a Smell
Sun Oct 18 2020
One of the reasons objects are powerful - in the OOP sense - is because we can write and reason about them as anthropomorphic collaborators.* I realize that such a characterization of objects is not to everyone's liking, but I'd like to use this notion to set the context for the following observations about how private methods are a sign of incomplete design.
Multiprocessing in Python
Sat Sep 12 2020
Much has been written about Python's GIL (global interpreter lock), which constrains a Python process to a single
processor at a time. At a high level, it's important to remember that if your Python
program is I/O bound, use threading
, and if it's CPU-bound, use multiprocessing
.
Serverless Stripe Webhooks Integration
Thu Aug 20 2020
A few weeks ago, I set up a Stripe integration for a job board for entry-level engineers I launched. The project is cloud-native, comprising a combination of API Gateway, Lambda, and DynamoDB on the back end.
CloudFormation Template Syntax
Tue Dec 03 2019
Quick reference for basic CF template syntax, the use of parameters, mappings, resources, and outputs
Useful Unix Commands
Thu Nov 28 2019
This is a bookmark-able reference to commonly used commands in Unix-like environments.
Malformed Data Parsing in Postgres
Mon Aug 19 2019
Sometimes the trickiest part of an ETL problem is transforming the raw data you have into a useful format.