Sticky: Welcome to Extelligent Cocoa (version 3)

Terry Pratchett uses the term ‘Extelligence’ for the habit of storing information outside oneself. This Blog mainly exists to stand on the shoulders of giants and to store information in an accessible manner so that once I have solved a problem, I do not have to solve it again. ‘And because WordPress is a decent content management system and I need to keep this somewhere, I might as well put it up on the web’, I said optimistically in the first half of 2014,

… and not a week later, Apple announced a new programming language.

(The rest, as we know, is history. Swift has come a long way since I first posted this. I love it more than I loved it in June 2016, and I have never regretted taking the time to get on board with this newfangled, semicolon-and-squareBracket-less language.)

… and then my blog got hacked, so I resolved to restore all of the content from backups. And then came the Christmas holidays with lots of programming time, so that I ended up posting almost exclusively new content and only a couple of posts from the past.

… and then my blog got hacked AGAIN despite me doubling down as much as a non-Wordpress guru can (I’ve changed providers since then) and I decided to pull it rather than leave it wide open for someone to hijack my server, but this time, I feared that the backups were corrupted to a degree that meant I resolved to rebuild from the ground up. (I write my posts offline in a blog client that can push content easily.)

While version 2.0 of this blog promised Legacy ObjectiveC examples (in the end, I published exactly 1), version 2.5 went pure Swift, and I gave up writing ObjectiveC in June 2015 after trying to set up a trivial project to see whether it would help me solve a problem – it ended up being so complex and so tedious that I shed ObjectiveC and have never looked back.

Swift, as a language, evolves. The Cocoa frameworks evolve. And this means that rather than simply pushing all of my old articles to this blog, I will update them to the the current (or at least relatively recent) macOS/xCode combo, and follow the instructions from scratch to ensure that they are still working. (This is not just hypothetical – I had a lot of fun with NSCollectionView a couple of days ago: legacy projects converted to Swift3/10.11 worked, new projects following the same steps did not.)