T-30: An Epiphany: Use Java
T - 30 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X
I'm good at programming in Java. I've been doing it for 15 years. Java is about to release version 8; I've been using it since version 1.1.8. I can do most programming tasks in Java rapidly. I know its strengths. I know its weakness. I know its gotchas and how to work around them. But it's lousy for making desktop apps for Mac, which is what I currently do for a living. One is supposed to use Objective-C. But I don't like Objective-C and I'm not good at it. I'd need to use Objective-C daily for at least six months before I'd feel reasonably good and productive with it. I've tried a couple of times to do that, but my distaste for its programming style and its chaotic mixture of three languages in one (C, C++, Objective-C) makes me lose interest quickly. Mastering Objective-C, however, is critical if I want to produce the best possible Mac desktop apps.
That's what I thought until two weeks ago. Then, for reasons I can't remember now, I realised that although Java isn't a great language for creating desktop Mac apps, it is good enough. I know how to solve the problems with this mismatch. I enjoy using Java. There's really no reason to shun it.
So now, the apps I've been trying to make, but for which my motivation drops off quickly, will not be written in Objective-C. They'll be in Java, starting with SeeingStars. SeeingStars is a Mac app for which I created a prototype in Objective-C a year ago. It is for online pokers who don't want or need the complexity of Poker Copilot. They just want to know - and learn - the odds in Poker in real time.
So starting today, I'll be aiming to resurrect SeeingStars, but this time in Java. My aim is to work on it for 2 hours, every day, for the next 30 days, at which point I hope to release a version 1.0 product. Read along in this blog every day for the next 30 days.