Most of my writing is a catalogue of tips - things that I have found useful.
A reference of how I have things configured.
Two recommendations for using Copilot effectively.
A few how-to guides on auditing 1Password team accounts.
Record your explanations somewhere permanent.
A reference post of Vim’s lists and tips on using them effectively.
cnoremap for Python development.
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.
Topics: development, tools and effective teams.
The nouns of your Vim thought stream.
A series of short stories.
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.
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.
This is really just a reference on how to combine JQ’s select filters.
A simple heuristic for preferring the imperative mood
Quick tip on tweaking the output of psql
Slightly useful tip for SSHing onto EC2 instances
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
Git tips for writing release notes
Commit message pedantry taken to a new level
Harder than it should be
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
Notes from an internal git workshop
Allowing external parties to sFTP securely
Superior functional tests for Django
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
Using ’extra_tags’ to flag up HTML-safe messages
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
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
This doesn’t stick in my head
Always get the latest version
Undocumented option required to avoid STDERR
Use the source
Providing simple coloured feedback
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
A phing pattern for deploying cron scripts
A lazy way of generating an FAQ
Simple introspection methods
Using Phing to command a Nabaztag
Using a filterchain to set a cache-busting query parameter
Big productivity boost from using readline
Simple PHP extension to Phing for Tweeting
Using Phing’s FtpDeployTask to good effect
A simple bash script for pushing MySQL stats in Ganglia
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