Category Archives: life

On the value of helpful error messages

So I bought a Withings Bodyscale recently. It’s a good scale (does body fat as well as weight), but obviously its killer feature is that it records your weight on the Withings site.

Why? Well, because while I’m far from obese I could definitely stand to shed a few kilos (or at least convert a few kilos from fat to muscle), and my new mantra of “Strategies, not promises” tells me that I should pay attention to my past failure to actually keep up with exercise programs and do things to modify my behaviour rather than promising to do better. Additionally, I’m a firm believer that you can’t change what you can’t track, and this seems like a good way to track it.

Anyway, sales pitch over. That’s not the point of this post.

The point of this post is that I bought the weighing scale and it didn’t work. Initially I thought it didn’t work at all, but on further investigation it worked fine as long as it wasn’t hooked up to a computer via USB.

The USB thing is just for the initial calibration – it’s totally unimportant once you’ve set up what wifi network it should use – but unfortunately initial calibration is vital. This meant that the device in question was completely useless for what I actually bought it for, which was sad.

The symptoms were pretty dire too: It didn’t show up as a device at all under windows. Under my main linux system it gave a slew of unhelpful warnings in dmesg. If you tried to boot a windows machine while it was plugged in the entire system would scream in panic and send you into recovery and repair mode.

I was about to send a really shirty email to Withings (I’d already made them aware of the problem and hadn’t exactly received a lot of help back) when I thought I’d just try it on the teeny tiny ubuntu computer I use to drive my TV.

Behaviour was identical to on my laptop, no surprise there. Except when I looked at the dmesg output it said “Maybe bad USB cable?”

“Huh”, I thought. “You know, I haven’t tried that…”

So I went out and bought a new mini-usb cable (I have plenty of micro, but no mini. Seriously guys: Why in the name of bob are there 6 different connectors for an ostensibly universal standard?), and sure enough: The mini-USB cable they sent with the system was the culprit. System works fine when I use a different one.

So this turned out to be a really easy fix once I knew what to try, but I undoubtedly would have completely failed to suspect the cable, and would have created a great deal of hassle for both myself and Withings in the course of replacing the “broken” scale, if it weren’t for that teeny little piece of advice dmesg helpfully provided me with.

This entry was posted in life on by .

An open letter to thames clippers

The following is a copy of an email I’ve just sent to Thames Clippers

Tour Guides on a Commute

Hi,

Imagine, if you will, taking the tube. Imagine that as you travelled on the tube, every stop came with a little story. “This is Baker’s street, known for the fictional character of Sherlock holmes, and then you will shortly be arriving at blah di blah station particularly notable for the quality of the melons found in the nearby markets. A funny story about melons…”

Curiously, I’ve just found myself in a remarkably analagous situation.

What situation is this, I hear you ask? Well, it seems someone at Thames Clippers has decided that it would be a really good idea to permit or partner with a company connected to the Olympic games who will delight and entertain us as we travel along the river with a constant narrative full of fascinatingly trivial and banal information about the places we pass.

The curious thing about tourist tracks is that they’re only even slightly tolerable if you are, in fact, a tourist. If you are a Londoner, and indeed someone who takes that boat as a regular part of their commute, they are extremely painful. Given that this is the situation that I and (as near as I could estimate) more than half of the other people on the boat with me at the time found ourselves in, I was not best pleased. Judging by the exasperated looks around me and
the desperate but futile attempt to raise the volume of conversation above the sound of the announcement system it seems vanishingly unlikely that I was alone in this.

Unfortunately when you’re on a boat with a PA system bombarding you with this narrative there is absolutely no escape from it. This has the consequence of taking what was previously by far the most pleasant way of commuting in the city and making it utterly unbearable. If this happens on any sort of regular basis I’m going to be forced to commute via an alternative method. Given that I’ve paid a rather large amount of money up front for a season ticket, and that besides I would much rather be taking the Thames Clipper, this possibility fails to delight.

Hoping this can be resolved.

Regards,
David R. MacIver

This entry was posted in life and tagged , , on by .

On hiring (developers)

First off, we’re hiring. You should apply. Even if you don’t apply, check out the spec. This post will make more sense if you do, and I’d love it if you were to forward it to anyone you know who would fit.

We’ve yet to see if it will produce the right results, but one interesting thing has emerged from writing this job spec is that we’ve not done it as a collective. It’s largely been my doing, with editorial feedback from the rest of the team.

There are a couple consequences of this. Some good, some bad, some still in a superposition of the two.

we’re looking to hire someone who can do this job better than me

The part of it I especially liked is that the way the job requirements (both in the spec and as we’re viewing it) is that we’re looking at the person who currently is doing / would do the job and saying “You need to do the job better than him”. We’ve done this a bit less formally previously when hiring our new sysadmin, and it just sortof emerged naturally this time as a result of the fact that I was the one pushing the hardest to get this job spec done and posted. Whatever happens, I would very much want to retain this aspect of the process: Pick a person in the company who would do the job if you don’t hire for this role, make them responsible for speccing out the job and make them the primary decision maker on whether the person gets hired – other people get to veto, but they’re the one doing the initial approval by saying “Yes, I would rather have this job done by this candidate than done by (a perfect clone of) me”. I think this is very much the right way to do it.

15 years of BBQML

The fact that I wrote it brings with it a certain authorial style. This is both good and bad. If you’re reading this blog you probably are familiar with that style by now – whimsical, fairly abrasive and decidedly non-traditional. All of that comes through in the job posting.

Personally, I think that’s ok. Everyone in the company seems to have liked the posting (Well, they laughed. That’s good, right?), so enjoying the style is probably a good sign of a compatible personality. On the other hand it may turn out to be a bad thing – it may scare off some people who would actually work well for the role (I have at least one friend who is giving me a hard time because he thinks the posting is unprofessional and makes me sound like a wanker), on the other hand it may attract too many people who self-describe as rockstar ninja cyborg artist programmers.

If it turns out not to work, I will modify my style for postings in future, but I am hopeful.

we don’t want yet another [REDACTED]

The biggest feature of this posting that may or may not work in our favour is its honesty. It’s very much “This is who we are, this is what we’re looking for”. There are some tensions you can see behind it as a result. Will they scare people off? I hope not. As a company, we’re very much not perfect. No one is, and if you expect the company you’re applying to to be perfect then you’re in for a bit of a shock whomever they are. I hope that being up front about this is a good thing, and a nice departure from the whitewashed corporate-speak you get in a lot of job postings.

and…?

All in all, it’s been an interesting experiment. I look forward to seeing the results.

Let me know what you think.

This entry was posted in life, programming, Writing on by .

Teaching

Another IRC conversation. alaric is Alaric Snell-Pym.

20:27 <@alaric> I am a dark master at taking a bespoke requirement, and coming up with a generic yet easily-implemented solution to it, that can be resold in future
20:27 <@DRMacIver> Teach me your ways, master alaric
20:27 <@alaric> I’ve been wondering how to do that, actually
20:28 <@alaric> Most of my software design-fu is intuition, but I know it should be extractable into a series of principles
20:28 <@alaric> So I’ve been wondering what they are…
20:29 <@DRMacIver> Extracting things into a set of principles is the wrong way to teach something anyway.
20:30 <@DRMacIver> You’re taking a thought process, creating a set of steps that you don’t actually use in that thought process, and then expecting people on the other end to somehow recreate the original process
20:31 <@alaric> Agreed, but in order to teach something, you need to know what it is
20:31 <@DRMacIver> Disagreed.
20:31 <@alaric> And my issue right now is that I have these Intuitions, which aren’t very communicable
20:31 <@DRMacIver> Knowledge is a very overrated feature for teaching and learning.
20:31 <@alaric> The best I could do right now is to set people a design exercise, look at their solutions, and point out how they could be done better
20:32 <@alaric> Which would get the point across eventually, but it’d take a while
20:32 <@alaric> Or I could list examples from my past
20:34 <@DRMacIver> Both of those sound more useful than a set of principles.
20:35 <@DRMacIver> I think interactive learning is really the best way though. Either set someone a problem or have them work on their own ones and interact with them as they do – ask and answer questions, point out alternatives, etc.
20:35 <@DRMacIver> Of course this is very time consuming.
20:36 <@DRMacIver> Which is why no one is never taught anything properly and has to learn it for themselves.
20:37 <@DRMacIver> There might be good ways to parallelise this though: e.g. give twopeople two different lessons, stick them in a room together and tell them to solve the problem together.
20:38 <@DRMacIver> This of course only works on motivated students.
20:38 <@DRMacIver> But unmotivated students can fuck off as far as I’m concerned :)
21:39 <@alaric> I’d like to figure out what principles I use, though, even if only to make sure that exercises I set end up covering them all
21:42 <@DRMacIver> Teaching people is also a good way to codify your knowledge I think.
21:42 <@DRMacIver> i have a friend who refers to my rules of interviewing.
21:42 <@DRMacIver> Thing is… I don’t *have* any rules of interviewing. I have a general body of advice and knowledge, which upon relating has become slightly more formalised.
21:43 <@alaric> Yes
21:43 <@alaric> That is a valid process, IMHO
21:43 <@DRMacIver> Agreed.

This entry was posted in life on by .

The role of a CTO

IRC conversation with Al Davidson

< DRMacIver> I must admit to only having a relatively vague idea of what a CTO job involves (and a much stronger conviction that I don’t want one any time soon).
< DRMacIver> As I’m fairly sure that craig isn’t typical of the role.
< al_> i think you’re right on that score
< DRMacIver> My impression is that it seems to be somewhere more in the realm of “You’re supposed to get to work on the fun stuff but so much of your time is taken up by boring administrative crap that you don’t get to, but it’s still your fault if it goes wrong”
< al_> bingo
< DRMacIver> I see the old chestnut of “take rosy eyed view of the world and apply cynicism until it starts to weep” still works.
< al_> david, i think you just described the human experience in a nutshell

This entry was posted in life, programming on by .