Category Archives: Software

Updatable Diagrams with Inkscape and Python

TL;DR: To create diagrams that can be updated from data in a file, I used Inkscape to create the layout, labelled all the diagram elements I want to update, put the data into a CSV file and used some Python code (with the ElementTree XML API) to update the SVG file.

I’ve been experimenting with a new project, (update: now defunct!). It’s a site where I create PDF wall charts that people can download and print out, to help them follow major sporting tournaments. It’s not really a development project, but I still found a way to write some code while working on it recently 🙂


All the text elements on this diagram were typed in by hand…

Continue reading

Rock the Taskbar

When Windows 95 came out, one of the main interface improvements was the taskbar running along the bottom of the screen. Previously, windows just kind of floated around and could get lost if they were hidden behind other windows. The taskbar gave a simple, visual way of seeing all the open windows, even when they were minimised or covered up by another window. And it was an easy, mouse-driven way of switching to a particular window.

Continue reading

Idea: Flexible Timer

This is probably one of those “solution looking for a problem” ideas. I seem to have a lot of those! Anyway, here’s the idea. This tool would allow you to set up a sequence of timed events. Each event has a title, a duration, and a sound to play when the event starts. You can also set the text and background colours for the events. All the events are played in sequence from start to finish. You’d create a timer sequence by dragging new events onto a kind of timeline, and you could drag them around to rearrange them, and edit their properties.

Continue reading

Sticking With Your Stack

In my last post, I mentioned that I’m implementing my current project with some new (to me) technologies, namely Python and Django. I do often seem to find myself doing each new project while simultaneously learning some new language or framework. There’s something very appealing about learning new things. All technology stacks have faults and idiosyncracies and you come to know these as you become familar with them. Unknown tools have the promise (never actually fulfilled) of being perfect. Perhaps there’s also a bit of self-protection involved. If this is “just a learning project” then it doesn’t matter how good it turns out to be. If you’re using technology you already know well, you have to face up to how good your work actually is. Using new tools can also make the experience more challenging and varied. Grunt work is less boring if you’ve never done that particular type of grunt work before.

Continue reading

Building BusyFlag with Python and Django

For most of my career as a software developer I’ve worked with the Microsoft development stack, starting with Visual Basic and then moving to C# when .NET came out, and using ASP.NET and MVC for web projects. But for my own projects, I tend to be drawn to other languages and technologies. I’ve built a couple of things with PHP, have dabbled in Ruby and I’m currently working through SICP using Scheme.Plywood

My current project is BusyFlag, based on the idea I posted a few weeks ago. I’ve decided to implement this in yet another new (to me) language: Python, using Django as the web framework. I feel like I’m pretty late to the Python party! It was first released in 1991, and I first heard about it around 2000 (and completely ignored it until now!)

Continue reading

A Few Quotes About SICP

One of my goals for this year is to work through Structure and Interpretation of Computer Programs (otherwise known as SICP, or the Wizard Book). It’s been on my radar for a while, and I’ve made a few aborted attempts in the past, but in my present state of being happily jobless I actually have enough spare time to give it the attention it deserves. As a form of preparation, I’ve already worked through The Little Schemer and The Seasoned Schemer. At the time of writing, I’m only part of the way through chapter 2 of SICP, so I still have a long way to go!

Continue reading

A Few Notes on Python’s Built-In Container Types

I’ve been learning Python recently, as I’m planning to use it for some future projects. One of the things I’ve initially found a bit confusing is the different types of built-in containers that Python provides: Lists, Tuples, Sets and Dictionaries. So this post is just a few notes for myself on how these work and what they’re useful for. There’s nothing here that you can’t get from the excellent documentation at Continue reading

Idea: BusyFlag

In one section of Peopleware, they talk about how destructive interruptions are to the state of flow, and how important uninterrupted time is for getting work done. They describe what happened at one of their client sites after they started measuring the ratio of uninterrupted hours to time spent in the office (what they call the “E-Factor”):

…there was a nearly organic phenomenon of red bandannas on dowels suddenly sprouting from the desks after a few weeks of E-Factor data collection. No one in power had ever suggested that device as an official Do Not Disturb signal; it just happened by consensus. But everyone soon learned its significance and respected it. Continue reading