Code + Product

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.

Principles for Code Reviews

Sep 2nd, 2017 in Product

Some thoughts on what code reviews are and are not.

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 PythonTools

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.

Running Metabase locally as a service

May 29th, 2017 in ProductServers and ScalingTools

Want the power of Periscope or Tableau, without the big monthly bill? Setup Metabase to run locally on your CentOS server.

Shared filesystem between servers using NFS

Mar 30th, 2017 in Servers and Scaling

Mount a directory to be shared between multiple servers using Network File System (NFS).

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.

Create a custom Alexa Skill with AWS Lambda - Part 3 (Lambda)

Dec 18th, 2016 in ProductServers and Scaling

Configuring your Lambda function for use with an Alexa skill.