Tuesday, September 23, 2008

Apples and Nuts

15 days into the tracking, patching, testing, cussing loop from hell. Familiar whining this. It pretty much epitomizes the life of a hacker.

The iPod Touch remains in its original box, untouched, waiting for the next (Palm OS) release of ninerpad (will it? ever?).

But I like to peek. So I waded, again, through the iPhone SDK (hush hush Apple may be listening) docs. Things are becoming clearer.

But then, this very interesting post by Michael Ash. It helped put things back in perspective.

Yes, the iPhone oasis may beckon, but you may want to reconsider drinking from its pool. The process of getting an app on the iTunes store is not as simple as it is for Palm (mobireach, my cart provider, makes the process a google times simpler). But that's not the main issue for me. Learning has its curves, like many good things, so it can't be that bad.

No, my main beef is that Apple will not remit royalties to participating developers until their net reaches 250$. Granted, if your paid app is hugely popular, that may come fast and easy. But if it is not -- and that is the most likely (just do the math) scenario "for the rest of us" -- , it may take months before you see that first payment. Nice? Not.

But I'll try anyway. After all, nobody likes to miss a boat, any boat, no matter how small.

Still, just to keep things on an even keel, I think I'll stick around for a while with the Palm OS and with my friends at mobireach.

And now, back to our regular programming: cussing at Palm OS 5.

Sunday, September 7, 2008

We all have it coming, kid

1.1R2 had the shortest ESD shelf life ever. A few hours and then, the bomb. What's the point of writing a smart repair feature if it ends up making things worse? Never a better time to start reading up on Erlang than now, methinks. Then again, maybe not.

Anyway, I guess that 1.1R2 had it coming (thanks, Clint).

Now working on 1.1R3, and testing deeper and in closer collaboration with the user group -- what would I do without them? -- than ever, and impatiently waiting for the day when I can sink my teeth into some fresh (feature; hell, platform even) fodder. This load's getting on a bit.

Signing out.

Friday, September 5, 2008

Palm developer vacation spot du jour: iPhone SDK

ninerpad 1.1R2 is out, at last. Time to take a short break and open that iPod Touch box...

Links of interest:
Ideas:
  • ninersim...

Monday, September 1, 2008

Titanic Notwithstanding

So... awareness of something big and bad knocked on my door today, in the form of a customer inquiry worded thus:

I think I lost my ninerpad data.

Three days ago it turns out, I released version 1.1R1, not knowing that it housed a monster of a lurking bug. It went like: tap on the green folder icon to start a filing operation, create a folder, change your mind and don't file, and zap!, your data becomes corrupt.

I took the product out of circulation immediately of course, hence rendering tens of redirected vendor links useless, losing exposure and sales, good karma, etc.

And now I'm busy cursing and patching and hoping to be done before that red hot iron of a new release loses its online glow.

(background vocals: and laying the grounds for more mistakes)

We all do that, don't we? Our time left gets shorter, knowledge (wisdom?) accumulates, aspirations multiply, and rather than choose reason over passion, we sometimes become overnight optimists and takers of imprudent shortcuts.

Note to self: if you work for a company whose CEO, COO, or CCO mentions "sense of urgency" in a memo, in a conversation, or in a speech, send out copies of your resume, fast.

I think I'll delay the patched release a couple more days.

Saturday, August 30, 2008

Christmas in August

I bought an iPod Touch yesterday. I justified the purchase as a necessary investment in my career as a wannabe independent software developer.

At the same time, though, another voice spoke, much louder this time. It was the kid in me, and he said: "Cool. A new toy!"

The iPod Touch (iTouch) looks like an expensive toy. It's cute, and sleek, and eye candy jumps out at you as soon as you turn it on. How can one resist? And I thought to myself "Ah, Apple design..." And as I did, Venice came to mind; not the city as much as the feel of it; the way I would have said "Ah, Venice..." if I had been there (as I have).

One could say that there's a little bit of Venice in every Apple product.

Later, I skimmed through the developer documentation, trying to get my bearings and preparing the ground for my next -- and first iTouch -- project. By the time I was finished, my inner developer too was feeling the rush: "... so many cool APIs... so many possibilities... so much... nerd candy".

And no wonder today was a special day. Three significant fragments of my personality were in agreement, for once. Pleasure delayer that I am, I still haven't opened that box, though. It sits there in my bag, waiting for that moment when fragment #1 says "okay boys, let's open the presents and start coding".

I can't wait.

Thursday, August 28, 2008

Shortcut #2317

About that ninerpad background color preference... It seemed like an easy-to-do feature request at first. People asked for a way to set note backgrounds to a color other than white and I was going to give it to them.

(this post courtesy of Palm OS 5's non-support of alpha channels by the way)

ninerpad works in 8 bit screen depth mode. This means that you only have 256 colors to play with, upside being that the drawings take a lot less room to store, and can thus be commensurately larger or numerous. Good for note taking, that.

Now, to store a drawing, I need to give every pixel a value. I mean, there is no such thing as a non-value. So, 4 months ago, at version 1 design time, the answer came easily: fill blank drawing data with zeroes, one for each pixel (compressed data actually, hence fewer bits, but that discussion is for later).

And therein it lies: zero happens to be the only index for the color "white" in the Palm system palette. No other color well in that palette gives us that.

So, if I want to let users draw in white over, say red, I have a problem. I can let them draw in color zero (white) over red, sure, but what about those other empty pixels then, those that they did not draw over and yet that need a storage value?

The answer lies at the bottom of the ninerpad's BG color selector (inside Preferences). You will notice that one of the color wells down there is also set to white. That well, #254, is a cheat. It was reconfigured from its default color, black, to white.

Now, when you draw in white, you are actually setting those pixels you draw over to hold color value 254, instead of 0. When I read back the data, I overlay non-zero-index data over the BG color and presto, you can now even draw in white over white, if that strikes you as shiny. The drawn data will still be there.

Somewhere a bug lies in ambush, waiting for that right moment. I know this. And when it does, it will likely appear as some kind of display glitch, i.e., something appears in white that should have been some other color.

ninerpad restores the system palette to its default values when it exits, so other apps are safe. But if some 3rd party application pops something up over ninerpad while the later is active, the bug may show its ugly (white) head.

Waiting for that day, and asking: must every shortcut come at a price?

Life Lesson #6247.5: On Fighting Reason

You've been sitting at your desk all day, consumed with the determination to release your product on time. The "good life" awaits and not a minute shall go to waste.

And then you realize that it's gotten dark outside and that the minutes of that other day that could have been have passed you by.

And you ask: is regret the bed partner of passion?