Category Archives: Computing

Articles about computers and the IT industry.

Factfulness

I didn’t mean to immediately buy Hans Rosling’s “Factfulness“. I saw it in a “recommended reads” list (both Bill Gates and Barak Obama suggested it, if I remember correctly), thought it sounded interesting and went to Amazon to add it to my wish list. Fat fingers meant that I tapped the “buy” button instead.

Anyway. As an antidote to all the bad news around at the moment, I decided to read it right away. The narrative that the world is getting worse by many measures, this book argues, is false. I want to believe that we’re progressing but the pictures on TV of Trump and Brexit, famine and war make it hard to accept.

It starts with a questionnaire and, without wishing to steal the book’s thunder, most people will do incredibly badly at it. Worse, in fact, than merely picking answers at random, or “the chimps” as the book calls it.

I’d like to think that I’m better informed than many, if not than the general public than some chimps, but I still did badly!

The book continues with a list of errors that we all make, examples of them and how to spot and avoid them in the future. It sounds dry but it isn’t. Hans Rosling is humble, keen to draw attention both to where he made mistakes and where he made a difference. If anything, his modesty often sounds misplaced. I think it’s fair to say that he had more achievements than failures.

“I don’t tell you not to worry. I tell you to worry about the right things.”

The curse of this book, if there is one, is that we all think we’re well informed and that we don’t need to read it. The numbers show that we’re wrong. I hope that doesn’t make it the least read, most important book I’ve picked this year!

iOS 12

As I’ve done for the past few years, here are a few thoughts on the new version of iOS that will be heading to your phone in a few days. Usual caveats: my usage patterns are probably different to yours, I have a 6s and iPad mini, not whatever weird and wonderful hardware you have. I’ve been using the beta on my iPad since early August and on my iPhone since late August.

The good

  • Stable. I’ve had a couple of minor glitches but, honestly, there have been worse release versions. (They have been fixing new APIs and suchlike so I’m not saying they should have released earlier. But I am saying that the GM version should be pretty solid.)
  • Performance. As advertised, it works well on my far-from-new devices, probably better than iOS 11. I didn’t buy into the whole battery-gate scandal but if this is the result I’m happy with it.
  • Siri suggestions. I’ve not seen the full benefits yet, since I’ve not finished writing my own and haven’t been running anyone else’s beta software. But even just with Apple’s suggestions it’s nice. I go to the gym and it suggests my “gym” notes document. I think this is going to be big when more apps support it.
  • Do not disturb. I already used it a lot and now it’s better. DND until the current meeting and DND until I leave the current location are both super useful.

The bad

  • Nothing. Really. Sure, there are things that I would change or do differently, but there’s nothing that I would really look at and say “That’s worse than iOS 11.” If you’re okay with iOS 11 there’s no good reason not to update.

The ugly

  • What’s with the time and battery indicator being jammed in the very top left and right of the iPad screen? What a waste of space.

Final words

You’ll note that “Screentime,” Apple’s answer to the accusations that people are spending too much time on their devices, is not on the list. I don’t have anything bad to say about it, but I didn’t find it very useful. I have my smartphone addiction under control. I could stop any time I want to…

Pro is not a useful label

Here is goes again. Apple announces new MacBook Pros (or there are rumours about a new Mac mini pro) and the hoards pile on it saying it’s not a “Pro” machine. But what does that actually mean?

Traditionally the label “pro” is short for professional and is used to describe people who make their living using the tool. Sadly that definition is so ridiculously broad that it’s not terribly useful. What does a video editor, a writer, a 3D modeller and a software developer have in common?

Nothing.

Some need a fast CPU, others lots of memory, or storage or ports or GPU. Others just like the “best.”

And that’s the problem. We have to stop fixating on it being short for “professional.” It’s a marketing term, nothing more. It doesn’t mean anything beyond “expensive.” Just because it’s missing a feature that you’ve grown accustomed to does not mean that it’s not usable by professionals. Maybe it makes it unusable by you but that’s not the same thing at all.

If you work on a computer, buy the one the best meets your current and anticipated future needs. Whether that’s a MacBook or a Mac Pro, a Mac mini or an iMac Pro, even a Windows PC, the name doesn’t matter.

And if none of the computers in Apple’s current line up meet your requirements, that might legitimately be a problem. But, it’s not a new problem — Apple has had a relatively limited range since at least the late 90’s — and that still has nothing to do with the name.

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.

Nintendo Switch

This was all set to be a story of how much the whole family were enjoying the Nintendo Switch. While that’s true, there’s another side. We’ll get to that but let’s start with the good stuff.

Long story short: after just over a week, we’re all getting a lot out of it. The games are fun, even my three year old gets a kick driving Princess Peach around what looks like Sugar Rush from Wreck-It Ralph.

I should probably qualify our enthusiasm. I’ve never owned a games console before. I play Real Racing 3 and Monument Valley on my iPad; I have played Worms (a lot) and various others going back to Bomb Jack on my Sinclair Spectrum. I’m not on the same page as the people comparing frame rates and polygons per second unfavourably with the Xbox and PS4.

What I do care about are fun games, preferably multiplayer — sat around the TV rather than online — that can be played by all ages without requiring much effort to get started.

We’ve mostly played Mario Kart connected to the TV, using the steering wheel accessory, in two player mode. I was tempted to get a couple more joycons so all four of us could play together until I saw how much they cost!

Overall it Just Works. Even a software update was quick and simple. (Top tip: when setting it up, do it handheld rather than docked with the TV. That way you can enter your Wifi and account passwords with the touchscreen keyboard.) The graphics are beautiful (probably more a function of Nintendo’s designers than hardware prowess) and the sound adds to the experience, in contrast to many iOS games where it’s irritating or distracting.

Away from the TV, the screen size is great for handheld play though the console is a little thick and heavy compared with an iPad. I found that it’s a little too small to comfortably play multi-user but it does work and when the TV is in use it’s good enough. Maybe that’s to be expected but you can’t blame me for thoroughly play testing it!

For the first week problems I saw were largely quibbles or recent launch issues.

In the “quibbles” column is the little door that covers the cartridge slot. While the rest of the console feels well made, the door feel loose and cheap. Worse, if you pull out the cartridge without first quitting the game it complains, just like a Mac does when you yank a USB drive out. Since Nintendo have control over both the hardware and software you’d think there might be a better solution.

Also, the dock is, if not wrong, then at least a bit odd. It’s the same height of the console itself which means that when you put the machine in it, the top sticks out by a couple of centimetres. It’s not broken since it’s fully functional, it just doesn’t seem very elegant.

Under “recent launch” I’d put some of the pairing issues I’ve seen with the joycons, especially when trying to use the sticks separately in Mario Kart. I’m hoping, presuming, that this is a fixable software glitch.

As I hinted at in the first paragraph, in the second week things took a turn for the worse. I fired up ARMS but couldn’t start it.

After a while debugging, I figured out that the L button on the left joycon no longer worked. I was pretty relaxed about it initially, assuming it was a software glitch that could be fixed by some combination of fiddling around and searching the internet.

I tried re-pairing the joycons. Disconnecting and reconnecting. Restarting the Switch. Checking for software updates. I tried resetting the Switch back to Factory Defaults. Nothing.

Scouring the internet, I found that this was quite a common problem with early units and that people were having to return them. This sucked.

As I hate call centres, I fired off a quick email to support. In hindsight this was the wrong approach. It took nearly a week for them to respond and when they did they said it would cost £35 to repair. Not only was this poor service but it goes against consumer protection laws!

I picked up the phone and called support, girding myself for a long call and a fight. Neither materialised, thankfully.

The call was picked up straight away and was answered by someone not religiously following a script. She connected the dots to my email and, after prompting, explained that the email meant that if I’d dropped the joycon and broke it that way I might have to pay; it was CYA text masquerading as the main message.

Then she volunteered that, so soon after purchase, I might be better just returning to the retailer. (I knew that this was the correct process but I had still been hoping that you could control-alt-delete the joycon and magically get it working again without sending it anywhere. Anyway, it’s good that I didn’t have to press for this.)

Amazon, of course, had no difficulty accepting a return. However they did have a problem sending a replacement unit, indeed they contacted me to say they had no idea when they would get any in stock.

The perils of being an early adaptor of an in-demand product I guess.

This whole experience has also shown an odd shortcoming in the software that I’d not previously noticed: there is no way to back up your game progress. The Switch is internet enabled (obviously) and is quite insistent that you create a Nintendo account, but nothing gets saved to the cloud.

The Switch also has an SD card slot but there’s no way to copy state over, just screenshots as far as I can tell. (Maybe I’m too old but I’m not sure I get the importance of game screen shots. Why is there a hardware button dedicated to it?!)

As of yesterday, there’s a happy ending to my first few weeks with the device. Amazon got a new batch of Switches in stock sooner than they were expecting so, until I get around to returning the original unit, we currently have two machines.

We spent a while last night, er, testing the new joycons with ARMS and I can confirm that they work as expected. This morning we combined the joycons from the new console with the working one from the old and had a three-player game of Mario Kart. This pushes me ever so closer to buying that second set of joycons…

So despite the problems, we all still like it. That, I think, says a lot.