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 moreI 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 moreI 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 moreI 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 moreThis 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 moreFor 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 moreTDX 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 moreIf you’re like me there is a box of hard drives sitting in a dusty corner somewhere. Some are mine, some are others’, but they are all in a failed or semi-failed state. So, why have I lugged them around? I’ve been a bit paranoid about throwing them away. Some of the hard drives are encrypted, others aren’t, and the drives from friends certainly aren’t. Although the chances of somebody getting the drive from a landfill and restoring it is minimal, I never wanted to take the chance.
So, I kept lugging a bag of drives through each move.
My friend Clinton has recently returned from Europe, and he brought me a gift: a Swiss-made Victorinox, the ‘CyberTool’. After playing …
Read moreRecently I tried editing my Cisco’s ACL at home on the train. It went something like this:
I logged in I started updating the ACL I hit a blackspot in my 3g coverage My command stops at “router(config)#access-” I get an alert saying my home internet was down Although it is simple enough to just ask her to “flip the switch on the black box”, I still don’t like doing it. Plus, if she’s not home, I’m stuck. This accident immediately reminded me of one of a trait of the ‘reload’ command: it can be scheduled.
Read moreIf you want to use Graphserver to do some analysis with GTFS, you will need to convert GTFS into the database. This is how I did it.
I used the following AMI. If you have enough memory, you don’t need to do this.
ami-7000f019 Lookup and read the GTFSDB INSTALL.txt document
sudo apt-get install mercurial hg clone https://gtfsdb.googlecode.com/hg/ gtfsdb sudo apt-get install python-setuptools sudo easy_install psycopg2 sudo apt-get install build-essential ubuntu@domU-12-31-39-00-5D-B8:/mnt/gtfsdb$ pwd /mnt/gtfsdb sudo python setup.py install sudo wget http://cdn.kelvinism.com/google_transit.zip sudo apt-get install python-psycopg2 EDIT 16-03-2025: I’ve since removed these files.
Read more