Author Archives: Graham

About Graham

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

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

App security consultancy from your favourite boffin

I’m very excited to soon be joining the ranks of Agant Ltd, working on some great apps with an awesome team of people. I’ll be bringing with me my favourite title, Smartphone Security Boffin. Any development team can benefit from … Continue reading

Posted in Business, ssl, threatmodel | Comments Off on App security consultancy from your favourite boffin

Class clusters, placeholder objects, value-oriented programming, and all that good stuff.

Have you ever seen this exception in your crash log? 2012-05-29 17:55:37.240 Untitled 2[5084:707] *** Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘*** -length only defined for abstract class. Define -[NSPlaceholderString length]!’ What’s that NSPlaceholderString class? Leaving aside NSMutableString … Continue reading

Posted in code-level, Foundation, software-engineering | Comments Off on Class clusters, placeholder objects, value-oriented programming, and all that good stuff.

Is privacy a security feature?

I’ve spoken a lot about privacy recently: mainly because it’s an important problem. Important enough to hit the headlines; important enough for trade associations and independent developers alike to make a priority. Whether it’s talks at conferences, or guiding people … Continue reading

Posted in Privacy, software-engineering | Leave a comment

Thoughts on Tech Conferences

This post is being, um, posted from the venue for GOTO Copenhagen 2012. It’s the end result of a few months of reflection on what I get out of conferences, what I want to get out of conferences, what I … Continue reading

Posted in advancement of the self, books, Business, NSConf, Talk, WWDC | Leave a comment