Author Archives: Graham

About Graham

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

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

Sound bites considered harmful

Knuth said: premature optimization is the root of all evil. Only, what he actually said was: There is no doubt that the grail of efficiency leads to abuse. Programmers waste enormous amounts of time thinking about, or worrying about, the … Continue reading

Posted in software-engineering | 1 Comment

How people learn

Don’t you hate those times when you go to a talk or article that says “you should be doing this”, but then doesn’t explain how to do that? I just wrote one. In “Coding. Standards.” I explained that what software … Continue reading

Posted in advancement of the self, books, Talk | Comments Off on How people learn

Coding. Standards.

I just realised that this month marks the 10th anniversary of my first payment for writing software (on, of all the weird things to be writing software on in 2002, a NeXTstation)! What have I learned from those ten years? … Continue reading

Posted in advancement of the self, Business, code-level, OOP, software-engineering | 2 Comments

Objective-C literals and subscripts

If you’re using clang from their website instead of sticking with Apple’s release, you get support for Objective-C literals and object subscripting. I thought I’d take the BrowseOverflow app and apply this new syntax to it. Notice that the code … Continue reading

Posted in code-level, OOP | 2 Comments

Supporting both ARC and MRC build settings

Let’s face it, people don’t read `README`s. If you write library code that people are going to use in their own projects, you can’t rely on that bit at the bottom of the documentation that tells people to do -fobjc-arc … Continue reading

Posted in Uncategorized | 2 Comments