# 2022 Blog Reboot

March 25, 2022

After several years of silence we're firing up the blog engines again.
In order to give the reboot some structure around what to write about,
I'm going to write a post on each of the public OSS projects that we
currently maintain and use in our live platform. There are 27 that we
maintain, and a further 6 that we . . .

# Automating Github with Glitch

April 01, 2018

Here's the story: After a year in beta, @Glitch opens up today, ready for you to build and launch real, live apps. And the app that runs http://glitch.com itself is now open source, so you can directly help shape Glitch's features and future.
@anildash

On this, the day after @anildash's announcement, I . . .

# Packaging Python3 AWS Lambda Functions

October 05, 2017

This is part one of a two part post on how to set up transfer data from Redshift to an SFTP server, using S3 as transient storage, and Lambda as the processing function. Part two will deal with the S3/Lambda configuration and permissions (IAM). This first part deals with how to package and deploy a Lambda expression, written in Python3, with . . .

# Migrating to Python3: part 1

### One small commit for a man, one giant leap for a team

July 18, 2017

We are now running on the Python 3.6 runtime. This has been a significant challenge - we have 170k lines of python code, and we'd paid no attention to the upgrade path before we decided to tackle it. We'll write a full technical post on how we did it, but in the meantime, I'd like to say a big thank you to those involved . . .

# Taming Django Side Effects

April 30, 2017

First off, a definition: if you came here hoping for a lesson in functional programming, I apologise for my loose use of terminology - I'm not talking about those side effects.The side effects I am referring to are what I would term external side effects - which we are defining as those that effect systems outside of the Django . . .

# Handling Django choices and migrations

February 15, 2017

If you are using Django's choices option on a model field, you have probably come across the situation where adding / updating a choice generates a new migration. If you are using choices liberally for things that are variable over time (e.g. "where did you hear about us?") this can generate a lot of unnecessary migrations.

. . .

# The MVP is dead; long live the MVP

### Timing the switch from "minimum viable" to "maximum value".

January 25, 2016

J-Class yacht "Lionheart" - 'minimum viable' was never part of the brief

Before we started building YunoJuno I invited my two co-founders to join me at the London leg of Eric Ries' launch promotion for "The Lean Startup". They both went to the wrong venue, so never got to see Mr Ries, but . . .