All posts by Stephen Darlington

Solo

I don’t normally read “franchise” books. I’ve avoided Star Wars, Star Trek and Doctor Who spin-offs but thought I’d try “Solo” featuring James Bond, mostly as as it was written by William Boyd who is one of my favourite authors.

It was a quick read, some nice twists. It has more gruesome violence than you get in the movies, which surprised me. Fleming purists may argue that it’s not the Bond of the books, but nothing offended me.

Overall not one of Boyd’s more memorable books but enjoyable.

C25k Diary

As it’s the New Year and many people are thinking about reviewing their exercise regime, I thought this might be a good time to write about my experience with Couch to 5K (C25K), a well-known programme for training anyone to be able to run five kilometres.

I should point out that this isn’t a real-time diary. I started it late last year and, as I write this, I have not yet completed a full 5km run. But — spoiler alert — I’m still making progress. There have been a few bumps on the way which, I think, is what makes this worth writing about.

My motivation for writing this is two-fold.

First, most of the advice I’ve seen on the internet about jogging is for people who are already reasonably fit or at least have some idea of what they’re doing. This doesn’t describe me.

Second, by writing this publicly I’ll be more motivated to actually finish!

But, stepping back a little, let’s talk about my background. I have not done much “formal” exercise for around a decade, by which I mean I’ve not been to a gym or done any sports. I’m active, though. By virtue of living in a city and not owning a car, I walk a lot. I did try to do C25K a couple of years ago but managed to hurt my knee so badly that I was literally limping for a couple of weeks. (The advice I’d found at the time suggested pushing past the pain. This was bad advice.)

My motivation for trying again is that I need to do more exercise! And jogging is simple, cheap and needs no specialised equipment. I decided to start indoors, in a gym, because I’m a coward and a realist. I knew that if I could find an excuse for not exercising (like it being cold, raining, dark or a Tuesday), I would use it.

So my strategy was: go to the gym every weekday, straight after dropping the kids off at school. This was because I would already be out of the house and halfway to the gym. No good excuse not to go. I’d do the C25K three days a week and swimming the two others. And I wouldn’t beat myself up if I needed to miss one or two sessions a week.

I used the C25K app. I have quibbles with it but it mostly works as advertised. You tap “Start” and it guides you through the programme, both on screen and with voice instructions. You can play music in the background, but I found that I often tried to jog to the beat rather than the pace I was trying to maintain and switched to listening to podcasts instead.

The first week is pretty simple: “a brisk five-minute warm-up walk. Then alternate between 60 seconds of jogging and 90 seconds of walking for a total of 20 minutes.”

I managed it without too much difficulty. I was pleased that week two was fairly straight-forward too. The third week, however, was a challenge.

“A brisk five-minute warmup walk, then do two repetitions of the following: jog for 90 seconds, walk for 90 seconds, jog for 3 minutes, walk for three minutes.”

Given that I was finding it hard, what should be strategy be? Should I keep going but run more slowly? Should I keep repeating week 3 until I could manage it? Repeat it until I could manage it comfortably?

The app provided no advice. There was no obvious way of repeating previously completed sessions and no FAQ section. Last time I just kept going, but I ended up hurting myself and giving up. I knew what not to do.

I didn’t find much on the web. Mostly the pages were “C25K is an eight-week programme to get you running 5km.” This suggested that I shouldn’t be repeating weeks. Yet, if the daily programme is always about 30 minutes then slowing down clearly wasn’t going to work either — I’d never hit the 5km.

What was the escape valve? Give up and feel like a failure?

In the end, I found a site that advocated repeating weeks, so that’s what I did. I tried hard not to feel like a failure.

I ended up repeating week three three times before I felt happy progressing to the next week. In hindsight, I was probably a little conservative and I could have progressed earlier.

I found that the app does allow you to go back though I didn’t find it entirely obvious. If this is how you’re supposed to do it, calling them weeks is pretty misleading and, I think, doesn’t help people as unfit as myself. If they were called, say, units I wouldn’t feel so bad repeating one.

The takeaway is that even someone pretty unfit lasted a few weeks before struggling and was still able to find a way through. If I can do it, you can!

My first setback and the solution I found feels like a good place to pause. Come back soon to find how I did on weeks four onwards!

Reading 2017

This is the time when people write lists about the past year and the year coming. Why have original content when you can have listicles? And why should I be the one to miss out? So here, just as I did last year, are a few notes about most of the books I read.

Civil War

I’m a big fan of the Marvel Cinematic Universe and offshoots like their Netflix TV shows, but I’ve never really read the original comic books. I thought I should change that.

I’ve never really read comic books. I was into comic comic books, like the Beano, and loved Oink (kind of like a kids version of Viz) but never the “serious” ones such as Marvel and DC. To ease myself in, I deliberately picked a storyline that I knew from the movies, the idea being I could compare and contrast.

I confess, I thought I’d like it more. I’m not sure if I picked a bad sample or it’s just that I’m not familiar with how to read a comic book, but I don’t think it was my kind of thing.

Becoming Steve Jobs

I hesitated to read another Jobs biography after the disappointing Isaacson “authorised” version. I heard good things about this one and the consensus was broadly correct. (It has been well reviewed and I don’t have much extra to add.)

Speccy Nation

I’ve never been a huge gamer but the time I probably played the most games was in the mid-eighties on a Sinclair Spectrum. That made this the perfect nostalgia book. It has a well chosen selection of classic games and a brief commentary about them.

You could quibble with some of the picks (or absences) but overall it completely hit the mark. If you have fond memories of Kempston joysticks and rubber keyboards, you’ll enjoy this one.

Once Upon A Time In The West… Country

I’ve known about Tony Hawks since at least Morris Minor and the Majors. I’ve read his books, watched his movies and even, on a couple of occasions, drank in the same pub (though I never spoke to him). Which is to say that I was predisposed to like this book, and I did.

The bad news is that it’s really one for the fans. It lacks the comic hook of Around Ireland with a Fridge, or the structure of Playing the Moldovans at Tennis. It’s not even a travelogue. It’s just a bunch of loosely connected stories of “stuff that Tony did,” which is amusing and entertaining enough but makes it far from a classic.

The Good, the Bad and the Smug

As someone who loves Douglas Adams, people often recommend “similar” authors. So it was with Tom Holt. I had no idea what his best material is so this was pretty much picked at random.

I liked it. The whole “new evil” line may age badly (just like H2G2’s obsession with digital watches) but anyone with a sense of humour and a memory of the Blair years would probably enjoy this. I see more Holt books in my future.

Quiet

I’d “heard good things about” this but overall found it a bit disappointing. Huge chunks of the book were telling me that I’m not alone in being an introvert, there are lots of us around and there’s nothing to apologise for.

Sorry, I know that. I wanted to learn how to more effectively use my “quiet power” rather than seek therapy. I wouldn’t say that it absolutely failed on that but I would say that I probably wasn’t the right audience.

Redshirts

This was another “you’re a Douglas Adams fan, you’ll like this” suggestion. And it’s good one. Like, Tom Holt, I wasn’t sure which of John Scalzi’s books are the best but this one I picked based on the premise. While not completely original, the idea that the “redshirts” in a Star Trek-like universe are always the first to die has good comic potential that’s put to good use. Recommended.

Algorithms to Live by

I found it in a bookshop and decided to take a punt because of the first chapter: say you’re looking to buy a house. At what point do you stop looking and make an offer? Buy too soon and you might miss out on something great. Wait too long and you will miss the best available. This book claimed to have the answer.

As a conceit to show practical uses of algorithms it works well. Some of the later chapters feel like they stray from the path a little but it’s still clearly written and mostly enjoyable.

Mainlander

This wins the prize for my most travelled book of the year. For reasons unrelated to the content, I took it on a few trips without ever actually getting the chance to read it.

It starts slowly and builds to a mostly satisfying ending. If you like Will Smiths other work — everything from The Thick of It to Veep — it might be worth picking up a copy (especially if you can get it for a few quid as I did!) but it seems unlikely to be the start of a successful career as a novelist…

The Elephant in the Room

An easy, short read about some of the madness behind the Republican Party. Worth a shot if you’re interested in American politics.

The Three-Body Problem

Despite the awards and praise, I didn’t rate this book. Large parts feel like monologues rather than storytelling, which is a shame as there are some nice ideas and the scale is impressive. I also found the characters to be thin and unsympathetic. But if you values ideas over storytelling I wouldn’t say you shouldn’t read it.

The Soul of the New Machine

This is one of those classic pop-science computer books that I never got around reading until now. And… I like the idea. Focusing on the people behind the new machine is still pretty rare, and the descriptions of technical subjects are clear and without significant loss of accuracy. But there’s something about it that doesn’t quite work for me. I can’t quite put my finger on exactly why. I’m glad I read it but it took a while to get through.

Everything else

I read or skimmed quite a few other books:

  • Brexit: What the hell happens now? I re-read this to find out how much remain-ers could say “I told you so.” Quite a lot it turns out.
  • The Diversity Illusion. I tried to learn about “the other side” of the Brexit debate but this book was awful. He spends more time writing about how you can’t talk about immigration than actually writing about it. When he does write about it, he often contradicts himself within a few paragraphs. For instance, he notes that a robust immigration policy is not necessarily racist (true) but then immediately starts talking about people who are visibly different or non-white (which is). Maybe there are good arguments against diversity and immigration but you won’t find them here.
  • Managing Humans. I read the first edition of this a few years ago and thought it might be worth catching up with the new edition. As before, Rands has some great advice wrapped in relatable anecdotes. If you’re in IT and work in a leadership or management role, it’s worth a read.
  • Speccy Nation, Volume 2: The digital decade. I enjoyed the first book, but this one didn’t quite work. The first book let the games do the talking, but in this the author did a lot of introspection and all the most memorable games had already been covered in the first book.

Send in the clones!

So here’s the thing that drives me crazy.

Having had a hard disk die on me a few years ago, I’m a little paranoid about backups. I have three:

  1. Time Machine, over WiFi to a Synology NAS
  2. Backblaze, “cloud” backup over the internet
  3. SuperDuper clone to an infrequently connected USB hard disk

Time Machine and Backblaze run all the time, nice, seamless and hopefully pretty complete. I do the SuperDuper clone occasionally and every few months I try to reboot and check that the clone actually works.

And that’s where the problems start.

If I forget to turn off WiFi — which I almost always do — then when the clone starts up, it immediately connects to WiFi and starts to back up to Time Machine. I panic and stop it as soon as I realise.

But then I boot back to my main disk and… Time Machine decides it needs to do a full backup. Which. Takes. Forever. (Backblaze is also doing a huge backup, presumably for the same reason.)

What’s the answer to this? Is there a way to switch off WiFi on the clone automatically? Only start when the boot disk has a specific name? I don’t know! It’s hard to search for because I can’t think what the answer might be.

iOS 11

As I’ve done for the last few years, here are a few quick thoughts about today’s new iOS release, version 11.

I’ve been using the iPad version since the beginning of August and the iPhone version for only a couple of week but I think I have reasonable picture of what you’re going to see. 

Good

  • Multi-app support on the iPad. Wow! It’s quite different. You might need to give it a while before you get used to it. I also found that I needed to rearrange my dock so that apps I use to multitask are quickly available
  • “Swipe up on the iPad keyboard to get symbol characters.” Such a time saver
  • The voice synthesis of Siri is way better. But I agree with Gruber, if I could have dedicated engineering resources to Siri that wouldn’t have been where I would put them
  • iCloud sync for Photos. No more training each device to receognise each person!
  • Lots of nice, minor changes. The “Now playing” lock screen widget, the “play” button at the top of playlists/albums in the music app
  • Control Center is improved (but see first item in the “ugly” section below)

Bad

  • I’m guessing this has something to do with the iPhone X, but the one 3D Touch gesture I used all the time was the hard-press on the left side of the screen to trigger the app switcher. That’s gone in iOS 11. This is going to take a lot of getting used to
  • It won’t work on older devices. I get the “why” but it always sucks when they get left behind

Ugly

  • Why did the WiFi button is Control Center change to be “disconnect” rather than “switch off”?!
  • Not sure about some of the animations, especially on iPhone. 

What do you know?

How do you interview people for developer and technical jobs? This is an enduring question, and one with many angry factions.

It’s too big a subject to tackle in its entirety and I have no intention of trying. Instead, I want to talk about one aspect: should you ask Computer Science questions or not?

In one corner are the people who argue that you never need to implement a linked list or write Quick Sort in real life, so asking you to do that in an interview is unreasonable and excludes good candidates. They argue that there are more important things to consider, such as the use of applications frameworks or design or working with other people.

In the other are those who say that algorithms are a fundamental part of writing software and, while you may not need to write a Quick Sort, you do need to understand it and to be able to explain it.

The first group calls the second elitist. The second calls the first naive. Who’s right?

Of course, I come at this with my own bias. I have a Computer Science degree but I did it some time ago and don’t have perfect recall on this stuff. Ask me the Big O notation for Quick Sort and I’ll understand the question and maybe make a stab at the answer, but I’m not going to pretend I’m 100% sure.

There are two main angles I want to consider: the intent of the interviewer; and the knowledge a developer actually needs to do the job.

Let’s start with the former.

So, your interviewer asks you to implement a linked list on a whiteboard. Why? What are they hoping to find out about you?

If the answer is… well, the answer, then I’m very firmly with the “you don’t need to know this stuff” crowd. People tend to want a specific answer when either they want a cookie cutter computer science graduate or they wouldn’t understand the answer.

Alternatively they might be trying to see how you think; how you’d start with a simple solution and build up; how you’d test it. In these cases, the answer is less important than how you got there.

Another thing to consider is that, as an interviewer, you want to get the most information in the least amount of time. Starting with a “real” business problem might require too much context to be explained before you could really start. But the candidate hopefully already know what a linked list does, even if they’ve never had to write one.

Of course, sat in a conference room with a stranger it’s very hard to tell which of the two camps your interviewer falls into (and practically impossible if they’re on the phone).

So that’s pretty inconclusive. There are good reasons to ask but you can’t tell whether that’s the case for your interviewer.

So how about job requirements?

This angle is easier. Most jobs don’t require standard algorithms that you’d come across in a computer science or software engineering degree. A knowledge of user interface frameworks probably is more useful for many projects.

But what about the rest? There are jobs where knowing algorithms is important. On projects where low-level or performance intensive code is required understanding the fundamentals can be important. Maybe you’ll be writing a game or something with very low latency requirements or an engine that processes vast amounts of data.

In my last project I deliberately avoided using the system provided Quick Sort and implemented my own Heap Sort. I may not have been able to tell you the Big O notation for heap sort and quick sort, but I do know that quick sorts’ Achilles heel is that it works poorly on already sorted data. (It’s only fair to note that they didn’t ask me about algorithms when I interviewed for that position. In fact, they didn’t ask me much of anything! That’s a long story for another time.)

I’m not saying that you need a Computer Science degree to know those things. I’m not saying that the project would have failed without that background (though the fact that someone knew saved tens of thousands of pounds in hardware costs). And, most importantly, I’m not saying that the kinds of projects that you do are anything like mine. I am saying that the people who say this stuff isn’t useful or important are wrong.

So what do we conclude?

Well, firstly, and most importantly, no one size fits all. Your interview process needs to be tuned for the kinds of position you’re trying to fill.

Secondly, if the only questions are about linked lists and sort algorithms, that’s a big red flag. These aren’t the only interesting subjects for any job. If you’re not at least asked about how you work in teams, you should be worried.

Finally, having said all that, you can’t escape from the fact that programming is about algorithms. According to Wikipedia:

Programming involves activities such as analysis, developing understanding, generating algorithms

You should be expected to understand and to be able to explain algorithms.

But you should also understand team work, several programming languages, relevant frameworks, user interface design, source control, your IDE, the Unix command line, security, Linux, web servers, leadership and management, the film that the line “pop quiz, hotshot” comes from and know the correct answers to “tabs or spaces?” Developing software is hard and has many facets.

Focusing on any one aspect to the exclusion of others is a mistake. And that’s true both for you as an individual and you as an employer.