Turning Spreadsheet Data into an Array: with or without scriptingScripting is often part of our jobs, and the data we’re using in our scripts is regularly provided to us in spreadsheets. There are a…Jun 24, 20215Jun 24, 20215
OOP: Composition & Inheritance in PHPInheritance is one of the primary tenets of object-oriented programming languages, but each language implements it at least slightly…Jun 7, 2021231Jun 7, 2021231
Django: At Scale in ProductionIf you’re being blocked by Medium’s paywall, this article and all its links are also available here.Jan 1, 2021264Jan 1, 2021264
Published inThe StartupAn Introduction to the Advanced Encryption Standard (AES)Encryption is a huge part of modern software engineering. This is true both of data within our own systems, but also encryption of data we…Oct 16, 20201092Oct 16, 20201092
What does “Idempotent” mean in software?I had never heard the word “idempotent” when I started at my first software job. I had a liberal arts education and had been working in…Oct 11, 202017Oct 11, 202017
Thinking & Building Distributed FirstWhen many of us are first taught to program, we’re told something along the lines of “programming is a set of very specific instructions…Oct 9, 202011Oct 9, 202011
Published inPython in Plain EnglishSetting, Deleting, and Accessing Cookies in Django(+ some common gotchas!)Sep 25, 202065Sep 25, 202065
Django Rest Framework — Writing Serializers that Differ From Your Internal Data ModelNo matter how hard we try to get our data model correct (and even if we’ve done so!) sometimes by the time we need to use it, either for a…Sep 22, 202010Sep 22, 202010
Using Connection Strings to Connect to Cloud ServicesUnless a website is static, it almost certainly connects to other cloud services such as databases or caches that are hosted on servers…Jul 29, 2020Jul 29, 2020
Django Model Definitions: How They Differ From the Generated Database SchemaModels are the way we tell Django what we want our database schema to look like, and are the things through which we interact with rows…Jul 10, 2020Jul 10, 2020
Published inThe StartupHow We Talk About Code: What We Say & What They HearAs engineers, code is the product we’re paid to produce. A lot of energy goes into writing it well, maintaining it, testing it. These are…Jun 13, 2020Jun 13, 2020
Published inPython in Plain EnglishTuples in PythonWhy you should use them, and how you might create them on accident!May 28, 2020May 28, 2020
Django: making backfills in migrations backward compatibleAs teams and codebases grow, things that seem straightforward can become more complex. For example, a series of database schema changes…May 9, 2020May 9, 2020
Distributed Systems: an introduction to Publish-Subscribe (pub/sub)More and more of the web is moving to microservice architecture, which allows for loosely-coupled services to work together to provide…May 2, 2020May 2, 2020
Python’s NotImplementedError for Documenting InheritanceInheritance in Python, like in most other Object Oriented languages, allows us to re-use shared behavior, and allow us to abstract it away…Apr 24, 2020Apr 24, 2020
Published inPython in Plain EnglishExceptions in Python: catching, raising, customizing, and loggingWe all do our best to make sure that our code handles edge cases and doesn’t throw errors, but since we write software for humans…Apr 4, 2020Apr 4, 2020
Role-Based Access Control (RBAC): Permissions vs. RolesOnce we’ve determined that a user is who they say they are (authentication), we next need to determine whether they can access the page or…Feb 19, 20201Feb 19, 20201
Change Data Capture (CDC) vs. Business Event PipelinesAs more and more of software is shifting to rely on large amounts of data, and relying less and less solely on the request-response cycle…Feb 2, 2020Feb 2, 2020