Author Archives: Graham

About Graham

I make it faster and easier for you to create high-quality code.

Does that thing you like doing actually work?

Genuine question. I’ve written before about Test-Driven Development, and I’m sure some of you practice it: can you show evidence that it’s better than (or, for that matter, evidence that it’s worse than) some other practice? Statistically significant evidence? How … Continue reading

Posted in advancement of the self, documentation, software-engineering | Comments Off on Does that thing you like doing actually work?

I made a web!

That is, I made a C program using the literate programming tool, CWEB. The product it outputs is, almost by definition, self-documenting, so find out about the algorithm and how I built it by reading the PDF. This post is … Continue reading

Posted in code-level, documentation, tool-support | Comments Off on I made a web!

A brief history of talking on the interwebs (or: why I’m not on app.net)

When I first went to university, I was part of an Actual September, though it took place in October. Going from a dial-up internet service shared with the telephone line to the latest iteration of SuperJANET with its multi-megabit connection … Continue reading

Posted in Twitter, user-error | 2 Comments

What’s a software architect?

After a discussion on the twitters with Kellabyte and Iris Classon about software architects, I thought I’d summarise my position. Feel welcome to disagree. What does a software architect do? A software architect is there to identify risks that affect … Continue reading

Posted in Responsibility, software-engineering | 2 Comments

On free apps

This post is sort-of a follow-on to @daveaddey’s post on the average app; although in reality it’s a follow-on to the response that comes out every time a post on app store revenue is written. Events go like this: Some … Continue reading

Posted in AAPL, Business | Comments Off on On free apps

Inheritance is old and busted

Back when I started reading about Object-Oriented Programming (which was when Java was new, I was using Delphi and maybe the ArcGIS scripting language, which also had OO features) the entire hotness was inheritance. Class hierarchies as complicated as biological … Continue reading

Posted in code-level, OOP, software-engineering | Comments Off on Inheritance is old and busted

On Null Objects

I’ve said before, NSNull is an anti-pattern. It’s nice that we have the nil object, which allows us to have a stand-in for any object that doesn’t do anything. Unfortunately, it’s not a universal stand-in. You can’t add nil to … Continue reading

Posted in code-level, OOP, software-engineering | 3 Comments

Illuminative-C

In addition to being a mildly accomplished software engineer, I’ve done some studying and armchair research in the field of ancient languages and palaeography. What happens if we smoosh those fields together? In a very slight way, art historian and … Continue reading

Posted in advancement of the self, books, code-level, documentation, PCAS, software-engineering, UI | Comments Off on Illuminative-C

On community

This is a post that had been boiling for a while; I talked a little about the topic when I was in Appsterdam earlier this year, and had a few more thoughts which were completely supplanted and rearranged by watching

Posted in AAPL, advancement of the self, books, Business, iDeveloper.TV, iPhone, Mac, NSConf, OOP, Responsibility, software-engineering, Talk, WebObjects | Comments Off on On community

Password checking with CommonCrypto

I previously described a system for storing and checking credentials on Mac OS and iOS based on using many rounds of a hashing function to generate a key from the password. Time has moved on, and Apple has extended the … Continue reading

Posted in Authentication, code-level, Crypto, password | 1 Comment