Author Archives: Graham

About Graham

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

I do the stupid so you don’t have to

So you want to use bc for some hexadecimal maths. You set the input base: ibase=16 and the output base: obase=16 Oops! I just set it to output in base 22. I’d already set it to think numbers were input … Continue reading

Posted in UNIX | Comments Off on I do the stupid so you don’t have to

Meta-writing

Barely 4,000 years ago, documents were written on heavy, clay tablets. The Epic of Gilgamesh, one of the earliest known works of fiction, was written on 11 such tablets with a 12th added later. There was only one thing you … Continue reading

Posted in books, documentation, Talk | Leave a comment

Shell scripts and Xcode

Back in 2009 at the first NSConf, Scotty asked some of the speakers for an Xcode Quick Tip. I’m still using mine today. When your target needs a “Run Shell Script” build phase, don’t write the script into the box … Continue reading

Posted in code-level, tool-support | Comments Off on Shell scripts and Xcode

APPropriate Behaviour is complete!

APPropriate Behaviour, the book on things programmers do that aren’t programming, is now complete! The final chapter – a philosophy of software making – has been added, concluding the book. Just because it’s complete, doesn’t mean it’s finished: as my … Continue reading

Posted in advancement of the self, books, Responsibility, social-science, software-engineering | Leave a comment

When single responsibility isn’t possible

This posted was motivated by Rob Rix’s bug report on NSObject, “Split NSObject protocol into logical sub-protocols”. He notes that NSObject provides multiple responsibilities[*]: hashing, equality checking, sending messages, introspecting and so on. What that bug report didn’t look at … Continue reading

Posted in Foundation, Java, ruby | Leave a comment

More security processes go wrong

I just signed a piece of card so that I could take a picture of it, clean it up and attach it to a document, pretending that I’d printed the document out, signed it, and scanned it back in. I … Continue reading

Posted in Authentication, Vulnerability | Comments Off on More security processes go wrong

Could effortless lecturers make everything seem too easy?

From the British Psychological Society blog: Engaging lecturers can breed overconfidence. The students who’d seen the smooth lecturer thought they would do much better than did the students who saw the awkward lecturer, consistent with the idea that a fluent … Continue reading

Posted in psychology, Talk | Comments Off on Could effortless lecturers make everything seem too easy?

Objective-C, dependencies, linking

In the most recent episode of Edge Cases, Wolf and Andrew discuss dependency management, specifically as it pertains to Objective-C applications that import libraries using the Cocoapods tool. In one app I worked on a few years ago, two different … Continue reading

Posted in code-level, tool-support | Leave a comment

When security procedures go bad

My password with my bank may as well be “I can’t remember, can we go through the security questions please?” That’s my answer so many times when they ask, and every time it gets me in via a slightly tedious … Continue reading

Posted in Uncategorized | Comments Off on When security procedures go bad

Specifications for interchanging objects

One of the interesting aspects of Smalltalk and similar languages including Objective-C and Ruby is that while the object model exposes a hierarchy of classes, consumers of objects in these environments are free to ignore the position of the object … Continue reading

Posted in documentation, OOP, software-engineering, TDD, tool-support | 1 Comment