Wednesday, July 28, 2010

More rants about the iPod Nano

Just a quick post here to reiterate why Tap to Go Back is so important to me.  When I was getting ready to go home from work today, I decided to boot up my Garmin GPS to find me the best way around rush-hour traffic.  Of course, when you most need this kind of cellular routing, this particular unit has a nasty habit of acting as if it has no traffic software what-so-ever.  So try as I might, there's no way to force it to load data and I get in the car and head home in the typical direction.

As I approach the Capital Beltway I495 / I95 / I395 "Mixing Bowl" Springfield Interchange, the traffic data finally comes in, only 30 minutes too late.  So I take a hard right to follow its new directions pleasantly listening to the Radiolab Podcast while I head of into new and unexplored traffic.  After 69 minutes constantly following some other car as an occasional snail's pace, I spot a Noodles & Company and decide that since I hadn't eaten since my 5a30 banana I may as well get a bite and let the traffic calm down a little.

So here I am, listening to my podcast, trying to find a parking space when something interesting happens and I miss a bit of podcast dialog.  So I press-and-hold the rewind button for a few seconds and when I let go, I'm at the beginning of the podcast again.  So I've lost my place and as I'm trying to figure out what's happened as I'm trying to park some lady sneaks up behind me and nearly rear-ends me!  Needless to say, I had more than a few choice words — but not for that driver, for Steve Jobs and Apple for designing such a flawed device for playing back spoken word.

In the end, I lost 32 minutes of my life trying to reach the place where I had left off before I was so rudely sent back to be beginning.  Mr. Jobs, my time back please.

I've said it before and I'll say it again: Tap to Go Back is the most important iPhone app to ever be written.  It is life saving, stabilizing, rational, common-sense and for the most insane reason in the universe, it looks like it's up to me to write it!

Tuesday, July 27, 2010

Lothar

Rather than jump right into the Cocoa CoreAudio API, which no doubt will be causing me to pull out my few remaining hairs as I try to figure out what I could so easily do in Python on the PC or AppleScript on the Mac, I decided to first try a trial app as a sort of self-designed tutorial for how to write an iPhone app.

So I bought into the $99 developer's license and started to learn Objective-C. Objective-C isn't a particularly hard language, though the way everything seems to be a message and have only run-time binding is a bit tricky to get right.  But I'm learning.

The App I'm developing is called Lothar.  It is a simple number game that will compute all the numbers in the Collatz sequence — hence the name Lothar for Lothar Collatz and who recently celebrated (posthumously) his 100th birthday.  The algorithm is quite simple: if the number n is odd, then multiply n by 3 and add 1, making it even.  If the number is even, divide it by 2, which may still be even or may become odd.  When this algorithm has been applied to any positive integer it has always turned out that the sequence will end with the repeating subset 1, 4, 2.  By this I mean no-one has yet found a positive number for which this is not true, making this an undisputed theory, though not a fact.

Lothar also performs the reverse algorithm: when the number is odd, it is multiplied by 2, as well as when it is even and not equivalent to 1 modulo 3.  When the number is even and equivalent to 1 modulo 3 (e.g. 4, 10, 16, etc.), this number could have been arrived at in one of 2 ways using the Collatz algorithm: a) it was due to an odd number, so the previous number is (n - 1) ÷ 3 or b) it was due to an even number, so the previous number is n × 2.  This is handled by having a second button, labeled Multiply, appear.  Clicking Multiply performs b) and clicking Previous performs a).

Currently, the application is mostly complete.  There are only 2 concerns I have at the moment.  1) If you reverse the calculation enough, the number becomes so big it becomes negative.  Why this happens is a bit complicated to explain to someone who's never programmed before, but needless to say I need to adjust the application to prevent this from happening by disabling all buttons when the next result would overflow the number.  2) I want to create an Info page to tell the user a bit about me, TimeHorse, Multimedia and about the algorithm; I may even want to put a link to the Lothar Collatz wikipedia page.

Once that's done, I plan to submit it to the Apple Store.  After that, I have some ideas for enhancements, such as providing for negative number entry, allowing the user to enter custom algorithms, and so on.  But for now, I just want to get the application done and submitted and start the grueling work of my true calling: Tap to Go Back.

Tuesday, July 6, 2010

What is Tap to Go Back

I'm creating this blog to document and encourage me to solve a problem that is currently the bane of my existence (well, one of many banes, but we'll leave those issues for another blog).

First of, let's lay some ground rules. I don't listen to music. At least, I don't when I drive, exercise, clean house or do any other form of mindless activity. Music is fine for thoughtful activities for me, such as programming because then the music becomes the background and the ideas I'm weaving become the foreground. But when I'm doing something that does not require much thought, I want to use that time to expand my mind, be it by audio book, audio dramatizations or podcast.

That said, no activity is completely mindless. If I need to hit a busy intersection or change machines or someone wants to talk to me, I need to be able to quickly go back and have my player repeat the last 5 or so seconds of dialog I just missed because something more important came up.

In other words, I need a Skip Back function for my portable content players. By this, I mean iPod, iPhone, Droid or what have you. As it is, I don't have a Droid and since Droids can't, as far as I know, play m4a (aac) files, I'm pretty much limited to the i for the time being. And since most of the iPods aren't opened source or allow app development, the iPhone / iPod Touch is it, it seems.

What's that you say? The iPod can be rewound? Yes, it can, but try hitting an iPod Nano rewind button squarely while driving. I mean squarely, because if you miss and hit the center and rewind button at the same time, it will call up the menu and restart the current track no matter how long you hold down the rewind button. And in an hour-long podcast, going back to the beginning when you only wanted to go back 5 seconds is a nightmare upon nightmare!

That's, of course, in addition to the problem faced by even the iPod Classic, with it's man-finger sized buttons. Don't hold that rewind button long enough or get jumped by a distraction or bump on the treadmill or in the road and you're doomed to repeat again and again! And on the iPhone / iPod Touch, your expected to hit this small, non-tactile circle to set you back 30 seconds while keeping your eyes on the road and with at least 1 hand on the equipment to keep from falling. Yikes! It's just not practical! And don't get me started on the obscene tap-tap-hold interface of the new iPod Shuffle!

If I could get the older iPod Shuffle Generation 2 again, I'd be more sanguine. The buttons were large enough, since the rewind was beveled and thus quite nice for playing audio books when the shuffle was turned off. But my little green guy never remembers what played so I'm still doomed to repeat because the computer keeps adding it back, thinking I didn't hear it; or worse, has a tendency to mark things I never heard as listened to and then I never hear them, ever!

This is just not right! Apple needs to get its act together, but since that monolithic behemoth of a company could care less about the little man, it's up to me. And that is my task; this is my goal.

Watch this space.