Migrating To Github Pages

I started this website 20 years ago as a means to learn Django, which made sense, as at the time I wished to do everything myself: website and hosting, running my own mail server, dns server, and probably something else, too. Over time my desire to spend time on these activities dwindled, and I move my content to blogger. Year by year I wrote fewer articles, and then it became years since I wrote anything. Perhaps it was the UI for blogger or the niggling feeling that Google could kill it off at any time, or perhaps it was having a kid. Eventually the libraries were no longer maintained. This weekend I opted to:
Read Migrating To Github Pages

Geocoding Photos (Mac)

I’ve recently started using OSX (again), and am really enjoying it (again). One Windows-only tool that I found really useful is Geosetter, which allows you to add geo coordinates into photos. There don’t appear to be any free geocoding tools that work to my satisfaction to do this, so the next best thing was geocode like you would using Linux. Here’s how. We’re going to use the command line program ExifTool (by Phil Harvey) to extract coordinates from a gpx file and embed them in a directory of images.
Read Geocoding Photos (Mac)

Snap-CI Deploy to OpenShift

There are some wonderful CI / CD tools out there right now, and some of them have very usable free tiers. A few good examples include Shippable, Wercker, CloudBees, and Snap-CI. There are others, of course, but these all allow at least one private project to get started. I have recently moved my projects to Snap, and my hack for the day needed to be deployed to OpenShift. Although Snap has built in integrations for some providers, no such integration currently exists for OpenShift (yet!). However, it takes less than 10 minutes to configure a Deploy step to OpenShift, and here’s how.
Read Snap-CI Deploy to OpenShift

Solved: slow build times from Dockerfiles with Python packages (pip)

I have recently had the opportunity to begin exploring Docker, the currently hip way to build application containers, and I generally like it. It feels a bit like using Xen back in 2005, when you still had to download it from cl.cam.ac.uk, but there is huge momentum right now. I like the idea of breaking down each component of your application into unique services and bundling them up - it seems clean. The next year is going to be very interesting with Docker, as I am especially looking forward to seeing how Google’s App Engine allows Docker usage, or what’s in store for the likes of Flynn, Deis, CoreOS, or Stackdock.
Read Solved: slow build times from Dockerfiles with Python packages (pip)

TLS Module In SaltStack Not Available (Fixed)

I was trying to install HALite, the WebUI for SaltStack, using the provided instructions. However, I kept getting the following errors when trying to create the certificates using Salt: 'tls.create_ca_signed_cert' is not available. 'tls.create_ca' is not available. Basically, the ’tls’ module in Salt simply didn’t appear to work. The reason for this is detailed on intothesaltmind.org: Note: Use of the tls module within Salt requires the pyopenssl python extension. That makes sense. We can fix this with something like:
Read TLS Module In SaltStack Not Available (Fixed)

Error opening /dev/sda: No medium found

I have had this issue before, solved it, and had it again. Let’s say you plug in a USB drive into a Linux machine, and try to access it (mount it, partition it with fdisk/parted, or format it), and you get the error Error opening /dev/sda: No medium found Naturally the first thing you will do is ensure that it appeared when you plugged it in, so you run ‘dmesg’ and get:
Read Error opening /dev/sda: No medium found

Finding The Same (Misspelled) Name Using Python/NLTK

I have been meaning to play around with the Natural Language Toolkit for quite some time, but I had been waiting for a time when I could experiment with it and actually create some value (as opposed to just play with it). A suitable use case appeared this week: matching strings. In particular, matching two different lists of many, many thousands of names. To give you an example, let’s say you had two lists of names, but with the name spelled incorrectly in one list:
Read Finding The Same (Misspelled) Name Using Python/NLTK

Mapping Mesh Blocks with TileMill

This quick tutorial will detail how to prepair the ABS Mesh Blocks to be used with MapBox’s TileMill. Beyond scope is how to install postgresql, postgis and TileMill. There is a lot of documentation how to do these tasks. First, we create a database to import the shapefile and population data into: Using ‘psql’ or ‘SQL Query’, create a new database: CREATE DATABASE transport WITH TEMPLATE postgis20 OWNER postgres; # Query returned successfully with no result in 5527 ms. It is necessary to first import the Mesh Block spatial file using something like PostGIS Loader.
Read Mapping Mesh Blocks with TileMill

Migrate Custom Blog to Blogger

For the last ten years I have run this website from various systems. First it was on Wordpress, then Mambo, then Joomla, and since early 2006 it has been running on custom code written using Django. I used this site as a learning tool for Django, re-wrote it after gaining more knowledge of Django, and then re-wrote it again when Google released App Engine. However, I recently realised that for the last few years I have spent more time writing little features than actually writing. I have entire trips that I never wrote because I was too busy writing code.
Read Migrate Custom Blog to Blogger

How to convert 131500 TDX to GTFS

TDX data has been available for a number of years on 131500.info, but many tools are GTFS specific. I also find GTFS easier to work with. Luckily, converting from TDX to GTFS is not overly difficult, and below are some instructions. This howto is a bit old, as I am only now copying it from my “Notes” folder to put online to help others. Note: You can now directly download GTFS from the TransportInfo website: https://tdx.131500.com.au
Read How to convert 131500 TDX to GTFS