20 Years of XRG

Today hits an important milestone for one of my apps: it has been 20 years since I published the first public release of XRG. XRG 0.1.1 was released on October 24, 2002 and was built for OS X 10.2, but also supposedly worked on OS X 10.1. The release DMG file was a whopping 169 KB.

XRG was the project I used to teach myself how to develop Cocoa apps using Objective-C. Over the years, the code has been refactored several times over, but I’m sure there is still some original code scattered about the project. When XRG was introduced, modern Objective-C features didn’t exist yet. Garbage Collection was a fad that I was thankful to never use, and ARC wasn’t even a figment of anyone’s imagination, so retain/release calls were everywhere. Of course I switched to ARC when it became available, and I’ve also refactored the code over the years to use Objective-C literals, dot notation for method calls, auto-synthesized object parameters, and object subscripting.

The one thing I haven’t done is add any Swift code to the project. I decided years ago that XRG will remain my love letter to the Objective-C language. Objective-C was the perfect language for the OS X versions of the day, and there’s just something about writing Obj-C code that feels comforting. I certainly wouldn’t use it for a new codebase for a multitude of reasons, but keeping XRG written entirely in Objective-C helps keep me proficient in the language, and also avoids all the headaches of a hybrid Obj-C/Swift codebase. To be honest, as long as Objective-C remains a first class citizen on macOS, I’m not sure I ever will refactor it in Swift.

Most importantly, I can thank XRG for jump-starting my career in Mac and iOS development. If I hadn’t created XRG, I wouldn’t have been introduced to the Indie developer scene that inspired me to create Seasonality. If I hadn’t created Seasonality, it’s very likely I wouldn’t be an iOS developer today. It just boggles my mind to consider what path I’d be on if I hadn’t started working on XRG.

Twenty years later, and it’s still the first app I install on a new Mac. Since I use it all the time, I’ve continued to maintain and improve it when time allows. It has been an amazing ride…here’s to the next decade.