Author Archives: simonveal

What I Like About F1

In the last few years, I’ve started watching Formula One. I wouldn’t call myself a fanatic, but I do try and watch all the qualifying sessions and races on TV, and I find it a fascinating sport to follow. There are a number of people who claim that F1 is boring. I think what they mean when they say this is that there isn’t as much “wheel-to-wheel” action as there is in other types of motorsport, and that it’s not as exciting as other sports they might prefer watching, such as football or tennis. And they’re right. F1 races can become a bit of a procession sometimes, with the fastest car at the front all race and not much overtaking. (The recent Bahrain Grand Prix was a bit of an exception, with the lead changing hands several times, although no-one really doubted that it would be one of the Mercedes cars crossing the finish line first.)


The key to enjoying F1 is to realise that it’s not really a sport. It’s actually a global engineering competition, disguised as a sport.

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

Code Coverage with QUnit and Blanket.js

I’m a big fan of automated unit testing. I don’t always develop test-first, but I do always try to make sure I end up with a good set of tests for whatever code I’m writing. For JavaScript (in the browser), I’ve settled on QUnit as my unit testing framework of choice. It’s easy to use and works well.

Ideally, you’ll have tests that cover every part of the code. For some projects, it’s pretty easy to tell when this is the case. But if you find yourself writing tests for a complex piece of code that didn’t have many (or any) tests beforehand, as I did recently, then it can be good to know exactly how much of the code is being tested, and which bits still need to be exercised through tests. This is where a code coverage tool comes in. Continue reading

Idea: Smart Paste Tool

One of the first things I install whenever I find myself in front of a new Windows PC is PureText. It basically gives you a shortcut keyboard combination for “Paste Special -> Unformatted Text” which is something I find myself doing quite a lot. I hate pasting from one application into another and having all the formatting come with the text, and PureText solves that problem really easily. I now use it just about every time I paste. I think of paste as Windows-V now, instead of Ctrl-V. I felt a bit lost when I got Windows 8 at work and PureText didn’t work at first (it’s been updated now!)


PureText works by modifying the contents of the clipboard before pasting. This got me thinking about how else you could manipulate the clipboard when pasting. I thought it might be useful to have a utility which allowed you to set up a list of items. Each time you paste, the next item from the list would be placed into the clipboard ready for the next paste. Instead of lists, you could also set up expressions which the tool uses to create the next item, with some useful variables available, such as the index (the number of pastes you’ve done so far). Continue reading

Time Management

I’ve read a few time management and productivity books, such as those by David Allen and Mark Forster. And there are a lot more out there I haven’t read, as well as lots of blog posts and other articles. I think these books have a lot of value and useful ideas for so-called “knowledge workers”, but I also think it’s a specific type of knowledge work that they are most useful for, and I’ve never found them to be completely applicable to the work that I do.

To-do list

Often these books contain the subtle (or not so subtle) message that theirs is the One True Way of managing your time and tasks. It’s easy to get really enthusiastic while reading these books and think that you need to throw out what you’ve been doing and implement the new system to solve all your problems! Continue reading

Fixing Marginal Issues

Sometimes when you’re programming (or working on any project, really) you’ll discover some feature or issue that requires a lot of work to do properly. It’s often something that you completely overlooked during your initial design work, a tricky bug that came up during testing, or a use case that only some users will find.

A few months ago I made a simple Rubik’s Cube page and put it up on the web. More recently, I discovered it had a bug; a pretty serious bug that meant it wasn’t doing at all what it was supposed to be doing, namely simulating an actual Rubik’s Cube. Fixing it was hard. It meant rethinking the entire design of my code. I spent more time fixing this bug than I did on the entire first version of the project. At the moment I’m wrestling with a similar issue on my current project. To make it work well in 100% of all possible use cases is taking considerably longer than it took to make it work 80% right. Programming projects are full of these types of issues that look simple until you start working on them and realise they’re not. Continue reading

Tea Drinkers of the World Unite!

In London, there are now more coffee shops than people. The rise of the coffee shop has been very good for coffee drinkers of course, and every effort is made to cater to their whims and desires. There are now 237 different ways of introducing beans to hot (not boiling) water, all of them requiring different equipment and all of them tasting exactly the same. It’s now trendy to complain about the coffee in well-known chains; the same coffee that a couple of years ago was being hailed as a vast improvement on the instant coffee and vending machine coffee that most people were used to. Now, apparently, good coffee can only be found in independent coffee shops, not in chains. It’s as though the coffee in one place instantly goes bad as soon as another shop with the same name opens somewhere else.Coffee Grinder

For the tea drinker though, the rise of the coffee shop has been a bit of a mixed bag. We tea drinkers still get to sneak out of the office, returning triumphantly, clutching our branded paper cup (if you keep the lid on, no-one will know what’s in there). And we still get to ostentatiously use our MacBooks in public. But it can feel like you’re a second class citizen when you order tea in a specialist coffee shop. And the same fetishization has not happened for tea as it has for coffee. Continue reading

The Little Schemer and The Seasoned Schemer

I’ve been working through these two programming books, on and off, since some time last year. I’ve just finished the second of the two, so it’s time for a book review. I’m considering them as a single book because they are both fairly small, and one continues right after the other; even the chapter numberings continue across the two books, and functions from the first book appear in the second one. I took a few months gap between the two books, but it’s probably better to continue straight on so the concepts from the first book are fresh in your mind.

The Little Schemer book coverThe books use the programming language Scheme to teach certain interesting programming concepts. They’re not designed to actually teach you the language, although I’m sure the material covered will be useful when I do go on to learn Scheme from a more practical point of view. The first book, The Little Schemer, is all about learning to think recursively, while The Seasoned Schemer is more about functions, and also covers state and continuations. Continuations in particular were a new concept for me before I started the book. Continue reading