I'm interested mostly in using this space to record thoughts about the experience of being an engineer and to log explorations of interesting problems. Any thoughts expressed in these posts are my own.

"I see that I am like a wave on the surface of the ocean. I see myself in all the other waves, and I see all the other waves in me. The manifestation or the disappearance of the waves does not lessen the presence of the ocean." - Thich Nhat Hanh

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.

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.

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.

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.

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.

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.

Sometimes the trickiest part of an ETL problem is transforming the raw data you have into a useful format.