Code + Product

Primer to Python multiprocessing, multithreading, and asyncio

Oct 24th, 2018 in Python

Basic overview of parallel / concurrent programming, including comparisons between multiprocessing, multithreading, and asyncio (coroutines) in Python.

Method delegation in Python

Jul 11th, 2018 in Python

Using Python, a short example on how to delegate specified methods to another object, as compared to composition and inheritance.

Using Python enums in SQLAlchemy models

May 16th, 2018 in SQLAlchemyMySQLPython

How to use enums in your models to enforce value consistency.

Python command-line scripts with argparse

Feb 15th, 2018 in Python

A template file for using conditional arguments when running Python scripts from the command line.

SQLAlchemy commit(), flush(), expire(), refresh(), merge() - what's the difference?

Nov 2nd, 2017 in Python

I've always struggled to remember between these very similar methods in the SQLALchemy ORM - so I took some time out to research these and write it down.

Prioritized Code Review Checklist - what to look for first, second, and last

Sep 21st, 2017 in ProductPython

A few notes on the code review process, and the steps I go through when reviewing.

Many to many relationships in SQLAlchemy models (Flask)

Jul 28th, 2017 in Python

Building model definitions for many-to-many relationships via a secondary table.

Bash script to relink alembic migrations

Jun 12th, 2017 in PythonToolsBashMySQLSQLAlchemy

Sick of `alembic merge heads` slowing down your builds? Here's a short bash script I wrote to rename your migration files and update its down revision.

Using model callbacks in SQLAlchemy to generate slugs

Feb 7th, 2017 in Python

Dive into SQLAlchemy's little known `event.listen` method to automatically generate slugs when saving a model instance.

Overriding default Jinja dictionary attributes in Python view templates

Jan 29th, 2017 in Python

How to use the `do` Jinja extension to modify an existing dictionary in your view template.