Abstract Classes versus Interfaces

These are two things I think about every once-in-awhile. Usually late at night. While drinking. Heavily.

Also I think about them while writing code. And typically, when I have to make a decision between one or the other, I choose the wrong one. Probably because I’ve never deeply thought about them in an IS-A versus CAN-DO relationship as outlined here.  Which, despite the broken English, is the best overview I’ve ever read on the difference between the two.

Kanji Fuda

Well, what was supposed to be a quick weekend project back in March is finally on it’s way to the iPhone App Store; and for the second time no less.

“Kanji Fuda” is a simple Japanese kanji learning game reminiscent of ComCul’s excellent Kanji for Fun. Between work and baby management, I’ve been cobbling it together in fits and starts over the last couple of months. Even have the fancy shmancy website that seems to be prerequisite for releasing any kind of mobile app.

Now that the basic version is done and “released” — assuming that I am able to get it by the App Store gate keepers — I’m working on an advanced version specifically to help study for the year-end Japanese Language Proficiency Test (JLPT). I’ve always wanted to go after Level One, but given how little I actually use my Japanese these days, it’s going to be a stretch… hence Kanji Fuda.

Where did my older “Active SDK” settings go??

Apparently Apple really really wants us to be building for only OS3. Xcode in the iPhone 3.0 beta 5 SDK goes to the trouble of actually hiding older Active SDK settings as soon as you do a build for 3.0.

To get the older settings back, hold down the Option key while choosing Project -> Set Active SDK. The original list magically reappears.

Shoe In

Why don’t we all go down to Washington D.C. and throw our shoes at the White House?

Shoes or, creme pies.

Best quote from the Huffington Post comment board:

“Did you see how well he dodged those shoes?? Decades of dodging responsibility sure paid off!”

Indeed.

SVN File Status Flags

More SVN stuff I can never completely remember.  As seen from running svn update, svn switch, or svn merge. “G” always throws me. See $ svn status help for details.

U filename = item (U)pdated to repository version
G filename = item’s local changes mer(G)ed with repository
C filename = item’s local changes (C)onflicted with repository
D filename = item (D)eleted from working copy
A filename = item (A)dded to working copy
~ filename = item (S)ubstitution; for example local file update obstructed by substitution of a symlink with the same name in the repository (I think of this as a sideways/backwards “S”)

Also note that a real “S” flag means that something has gone horribly wrong with a switch and that the operation was not fully completed. Hopefully you’ll never see this.

Testing J2ME Timers

And I thought developing against cron was bad.

In J2ME, at least on BlackBerry devices, one cannot test Timer and TimerTask objects by simply changing the device clock. J2ME apps seems to remember the time at which they were launched, rather than pinging what the clock on the device says.

Testing involves shutting down the app, resetting the clock, and starting the app back up. Time consuming if you’re working on an app with some heavy startup / shutdown overhead.

Running the BlackBerry Simulator on Vista

BlackBerry Simulator mysteriously dying every time you try to fire it up on Vista?  Same here. It’s a good thing I’ve become a compulsive reader of release notes. From the the latest JDE 4.6.0 docs:

If you install the BlackBerry® Java® Development Environment on a computer with Windows Vista™, if Use Account Control is turned on, launching the BlackBerry® Smartphone simulator might produce error messages and the simulator might not start.

Translation:  Simulator will definitely. not. start.  And of course they mean User Access Control. How-To Geek has an easy way to kill UAC here.