Writing
Below is a list of all posts from this site.
Using llm
and files-to-prompt
to run a TDD loop.
A reference of how I have things configured.
Two recommendations for using Copilot effectively.
Using OpenAI and some simple scripting to generate artful pull requests
A Git scraper that tracks Ocado product prices.
Using GPT3 to generate poems from your Git history.
A memorable dialogue from David Mitchell’s 2014 book.
A few how-to guides on auditing 1Password team accounts.
A list of test anti-patterns that lead to flakiness.
Record your explanations somewhere permanent.
A reference post of Vim’s lists and tips on using them effectively.
A useful cnoremap
for Python development.
A note to self.
Using dynamic blocks to implement a maintenance mode.
HCL allows comments, which is useful.
A super-useful Vim mapping for grabbing Github URLs.
Topics: code smells, pop-culture, blogging and work habits.
Some collected tips from over the years.
Topics: development, tools and effective teams.
The nouns of your Vim thought stream.
A series of short stories.
It can generate unnecessary database operations.
The simplest way to run both in a project.
A common, frustrating problem.
Write-up of a painful morning.
The overarching principle for writing maintainable code.
Using the API to pull simple reports.
Working notes based on reviewing several thousand pull requests.
Some quick ways to hide the clutter.
A note-to-self on avoiding DST issues when joining between tables.
A curated collection of words-of-the-day.
A Sentry tip from the Octopus Energy tech blog.
A tongue-in-cheek list.
Two tips for better debugging of Bash scripts.
Two gotchas that I wasted time on.
An easy way to remember the order arguments get injected.
A useful metaphor for the maintainability of a codebase.
Using the Github API to quickly jump to a PR detail page.
Another note-to-self on how to use JQ.
A podcast on django-oscar.
This is really just a reference on how to combine JQ’s select filters.
Programmers lie constantly.
Migrating a Django site to Hugo.
A post on the Octopus Energy tech blog
A post on the new Octopus Energy tech blog
A modern, high-tech energy supplier
A simple heuristic for preferring the imperative mood
Quick tip on tweaking the output of psql
Slightly useful tip for SSHing onto EC2 instances
A new owner
Quick tip on avoiding accidental data loss
A simple Travis test to avoid frustration
Using postmkvirtualenv to prime postactivate
A simple how-to for feeding Django metrics into Zabbix
Git aliases for grabbing Github links
Using CI to avoid pain for new team members
Lightning-fast :grep searching in Vim
A plan for 2014
Git tips for writing release notes
Another note-to-self
Commit message pedantry taken to a new level
Harder than it should be
Matching the RFC using Nose’s test generators
Using a setting to control where file logs go
Radio buttons can be tamed
Shiny badges using crate.io
Cleaning up after yourself
A decorator for the testing puritan
Because I have to look this up every time
A better workflow using Hub
Using ‘USING’ to cast correctly
The recommended way of debugging SQL problems
A pithy footnote from SICP
Notes from an internal git workshop
Allowing external parties to sFTP securely
Superior functional tests for Django
A simple caching library that uses Celery to refresh stage cache items
Using models for audit and clarity
Using macros to automate the boring stuff
No more embarrassing emails from example.com
Encoded slashes have a hard time getting through to Django
An immutable URL class designed for easy inspection and manipulation
Using ’extra_tags’ to flag up HTML-safe messages
Scratching a CSV itch
A rare sighting of the ‘reload’ function in the wild
Using dynamic imports to leverage Django’s localflavor
Using Python to fetch and convert YouTube videos for syncing to iPhone
Yet another git tips article
Two talks from the Python stream
Spoofing a HTTPS request using the Django test client
South provides a better way
Using Fabric with git-flow
MySQL’s DNS lookups can cause serious problems
Keeping your tabs organised
A simple module for making XPath assertions
Yet another RST blog
This doesn’t stick in my head
Always get the latest version
Undocumented option required to avoid STDERR
Use the source
Using node.js to copy a file to multiple remote hosts
Providing simple coloured feedback
A lightweight implementation of the Data Mapper for PHP 5.3
Link to slides available here
A bad joke told in Python
A URL value object for node.js
Using the fu to enhance mysqldump
Trickier than you might think
Using the fu with with phing to prevent further embarassments
Returning false to indicate an error is wrong
Structuring a javascript file for repeating use and customisation
A cringe-worth and divisive recruitment technique
A phing pattern for deploying cron scripts
A lazy way of generating an FAQ
Simple introspection methods
Using Phing to command a Nabaztag
An element Lambda employment
Using a filterchain to set a cache-busting query parameter
Big productivity boost from using readline
Creating a site for sharing commands
Sending messages
Simple PHP extension to Phing for Tweeting
Using Phing’s FtpDeployTask to good effect
A simple bash script for pushing MySQL stats in Ganglia
A short review
Using the commandline to build a string of CHECK commands
Simple class-based wrapper to using cookies
Using mod_rewrite to redirect based on the date
Using PHP’s DomDocument to create large XML files
watching mysqladmin ftw
Simple trick to watch progressive updates to a file
A short guide to getting things to look nice
An introduction to this well-known equation.