Tcoz Tech Wire

Discoursing on trends and technologies interesting to Tim Consolazio, sole proprietor of Tcoz Tech Services, specializing in Flash/Flex/Air, iPhone, Facebook, Twitter, and related technologies.

"Technology from an indie software developer's perspective".

Tuesday, May 12, 2009

iPhone Apps I Can't Live Without (or actually just really like).

I'm not an App Store addict, but I definitely bought the iPhone to consolidate my on-the-go kit; I carried a Palm and a clamshell/Razor type phone for quite some time, then rolled over to a Dash for a while, which allowed me to cut loose the PDA for the most part (I loved the Dash, best speakerphone ever). It still wasn't the whole package though; the screen was small, Windows Mobile with ActiveSync could be problematic and apps frequently never worked properly...I wanted more function, less trouble.

A friend of mine had a line on three iPhones the day they released. He called me, said cough up the $600, and I would be among the cel phone elite. Funny how back in the day, people would've given an arm for an iPhone, but now it's, "there's no way I'd have spent that much money". Even all the "I don't need an iPhone and touch typing sucks" people now can't put their iPhone 3gs down. I always said, the only people who say they don't need one are people that don't own one.

Note: I never upgraded to the iPhone 3g, and still think it was the right thing to do. I'll be eligible for upgrade to the iPhone 3 (4g?) right off the bat, and from what I can see, there just isn't enough difference between the first and second gens to compel me to print more money for Steve Jobs (I also own a MBPro 17, a Macbook 13, and a Mac Mini). I bought my girlfriend a 3g, and have done a pretty close comparison; at the outset, I was a bit jealous of not needing wifi for some things, and the 3g is a bit faster, but over time that's evened out to the point where it doesn't bother me at all.

People say, "I have the 3g", I say, "I have the OG".

Regarding apps, I'm not an "app of the day" type. I select mine carefully because I'm looking for something specific, and when I buy one, I tend to use it hard; if I find it's not useful, I get rid of it quickly, and I've gotten rid of lots of apps. My phone isn't completely cluttered with freebies and all that; the apps in this list I find truly useful every day because they are part of my workflow and/or appeal to my interests directly. I don't look for distractions or time-killers, I look for ways to continue pursuing my interests.

Listed in no particular order, other than the order I keep them in on my iPhone:

- ToDo 2.0. I was totally disappointed in the ToDo list on the iPhone, just like everybody else as far as I know. ToDo is a robust, easy to use app with great sorting options, customizeable lists, a great and organized display, alerts, iCal todo list synchronization via the Appigo Sync desktop app (very unintrusive), a "focus list" for critical tasks, item tagging, drag 'n drop this 'n that, badge notification...it's absolutely what the iPhone ToDo list needs to be. It also syncs with ToodleDo, which I don't use, but people tell me it's really useful, so who knows, maybe I'll sign up. "It's freakin' great," pretty much says it all.

- NoteBook (www.appigo.com, the same makers as ToDo). A great notepad app in it's own right. Create notebooks to organize notes, have links in your notes, email notes, etc. etc. Way better than the standard "Notes" app (which I actually used all the time until installing NoteBook). The best thing though, is it integrates directly with ToDo; you can save a ToDo item as a note, or vice versa. Notes can contain web page and phone number links...again, it's freakin' great.

- Skype. I've been a Skype user since it got up and running, and have saved a fortune using it, not to mention giving me the satisfaction of stickin' it to the man. I do most of my communication through email, text and chat; phone conversations are brief, frequently cut short with a request to just email me the details. I also live and work in and around the NYC area, so wifi is usually close. Skype lets me bottom out my minutes plan, taking my monthly bill down significantly. The UI is completely in sync with the desktop app and I've never encountered any bugs. Freakin' great; saves me money and works fine.

- FireBox. Encrypted storage for personal info, passwords, etc. I've tried some others, but Firebox allows you to set up your own form templates and categories in a way that appeals to me. I store my credit card numbers and info, server logins, and all my website logins, etc., right on the phone. Lose your phone? No problem; the encryption is industrial strength, and there's a desktop app that syncs the encrypted store to your desktop. In fact, you can add and remove forms, categories and entries in the desktop app. This app has made the iPhone as important to me as my wallet, possibly moreso, since I don't actually carry a traditional "wallet" (I use a large business card holder, silver and fancy people compliment it frequently, and just fold up my money in my pocket). FireBox appeals to me more than other solutions because it is extremely flexible. I can configure my categories and entries exactly as I like, whereas other solutions I've tried have things like a "credit card template" that either wants too much or too little info, has fields named in ways unintuitively (at least to me), and so on.

- Twitterific. For me, the best Twitter app. Admittedly, I'm not the most experienced Twitter user, but I checked out Tweetie and a couple of others; I like the look and feel of Twitterific best. It's easy to use, exposes the functionality that's important to me very plainly and simply, multiple accounts and timelines are easy to navigate...I know, people are religious about their Twitter apps. For now though, this is the one for me. I use Tweetie as a backup (and have never actually had to use it, I really got it because so many people are like TWEETIE for god's sake!).

- Guitar Toolkit. I've been playing guitar for 23 years, with very few extended breaks, and usually take it more seriously than your typical non professional; lessons and all that. GuitarToolkit has a metronome, chromatic tuner, scale and mode reference with root tones indicated (all graphic on the fretboard, and interactive; touch the fret, hear the note), a chord finder for identifying and locating various chord positions and fingerings, and more. It's by far one of the most fully functional music/guitar apps period, let alone just on the iPhone. True, the tuner can bork in noisy settings, and some of scale generation logic needs a little tweaking (the positions are always right, but for example, sometimes an A sharp will be used in stead of a B flat, making the scale appear to be missing a note until you look at it twice), but since it's not intended to be a teaching tool and the positions are always correct, it doesn't bother me. The GuitarToolkit guys are affiliated with Agile Software, a dev shop in NYC that I actually do work for as well.

- GuitarChords, basically just a breakout of the chord reference by the guys at GuitarToolkit; useful because you don't have to init the whole app every time you want to just browse some chords to refresh your memory. They give this one away.

- Grand Pro. Imho, the best piano keyboard simulator for the iPhone. You can record and store your diddling, replay it, etc. Nice display options (single or double octave, small or large keys, etc.). Great for theory study on-the-go, comping ideas, and retrieving them later for notation.

- Karajan. A very interesting music learning tool, primarily useful for ear training. Sounds out series of chords, intervals, scales, etc., and you have to guess which one you're hearing, either from a list, or right on a keyboard. Ear training is an essential and overlooked part of many non-pro musician's study regimen, even serious ones. This app without a doubt helps me keep my ear in-tune while on the go.

- BofA iPhone app (Bank of America). I bank at BoA. Originally, the app was just short of a clunky web page shell. Now it's pretty slick, enables me to do transfers, balance checks, all sorts of online banking, with a glance 'n tap. I use this all the time.

- Kindle Reader. I'm a Kindle 2 (and soon DX) fan. I use the Kindle Reader to continue reading in settings where pulling out the Kindle and a booklight might not be appropriate, or just to browse and purchase reading material that I'll pull down on my Kindle later. A great complement to a great product. For reading though, the Kindle 2 rules, or I think so anyway.

Games:

- Chicktionary. A word game, create lots of words from a starting combination of letters, which is fun, but the graphics and sounds are really fun; I want a Chicktionary stuffed chicken that squawks when you squeeze it! The game is actually harder than you'd expect, sometimes frustrating in fact, but I prefer that to being too easy, which many iPhone games are.

- Caissa Chess: Challenging, great UI, great features you'd expect in chess software. I looked over a number of chess apps, and believe this is among the best. I'm not a pro or even advanced player, but I do enjoy the game and play on and off.

- Chess Player: A chess app, but you don't play, it steps through classic chess games of all kinds, allowing pause, replay, etc. Great for game analysis and allows a glimpse into the minds of the greats. Sometimes it's nice to just kibitz.

- Learn Chess: an interactive e-book, great for the learner, nice for the hobbyist. Lets you learn and/or brush up on all the rules (e.g. many don't know what En Pasante is), basic strategy, and some nice extras. Probably not for the advanced player, but still fun, and a great example of the "interactive e-book" genre, which is something I'd actually not heard of in the context of the iPhone. Might be worth a blog post of it's own.

- Trism. One of the first "featured" game apps in the App store. Sort of a Bejeweled kind of game, but uses the accelerometer to allow collapsing and shifting the tiles in any direction. Interesting features like bombs, tile locks, and so on. I still play this game when I'm too fried for chess, word games, or music study. Updates have made the game a lot smoother.

- Light Bike, the game right out of Tron. Can get kind of tiresome after ten or so minutes, but is still fun, and a great example of a 3d game working really well on the iPhone. Also has head-to-head play, which I've never used, but I've heard it works great.

That's pretty much it: I've got some other miscellaneous apps on there, but the ones I've mentioned above are the ones I use all the time; those apps have made the iPhone far more than just a phone and/or PDA to me. Naturally I also use it to watch movies, email, text, and all that as well, but if you're not sporting at least a handful of apps, you're not getting the full bang out of your iPhone.

As always, thanks for reading, any questions or comments, feel free, tcoz@tcoz.com.

Labels: , , , , ,

Monday, May 11, 2009

Climbing Mount iPhone Developerest: At the Foot (Getting it Up and Running)

If you didn't know from the blog description or my profile, I'm a software developer by trade. I've worked for American Express R&D, Microsoft, count Citigroup, Spectrum/IEEE and Thomson Reuters among my current project clients, and have run my own cottage dev shop for five years (lucratively enough to make a living, thank the powers).

My specialty for quite some time, actually as long ago as 10 of my 15 years in the field, has been, on top of competency with Java, .Net, PHP, and assorted ECMA scripting languages and whatnot, ActionScript development. I don't consider myself a "Flash" developer; "ActionScript programmer" is more accurate, though these days, I would add "Flex Developer" as well, since I work with and manage resources for some pretty big Flex projects. Facebook development is also up my alley, I actually was a paid reviewer for both O'Reilly Facebook dev books, but on the tech side, that really boils down to skill with ActionScript, JavaScript, and PHP (I do understand that integration of the social graph is another and equally important matter).

Note: Check out my Facebook Sudoku app, Planet Sudoku, at http://apps.facebook.com/planetsudoku.

Based on a history of development tools and languages that focus on the UI, and the fact that I own an iPhone and find it indispensable, it's probably no surprise that I got interested in iPhone development.

So there you are one day, saying out loud to nobody in particular (well, I do that now and then anyway), "I gotta get this rolling," and off we go.

Note: I'm aware of the open source alternatives to the official Apple SDK and so on; at this point, I'm only interested in being a fully legit, licensed, Apple iPhone developer, particularly because Apple makes it clear that any unsanctioned use means no App Store approval. I'm sure I won't be good enough to fool them for a long time, if ever, and I'm not prepared to take up the Jolly Roger for that cause right now.

So, my learning process, in a nutshell:

- Get a beta or something of the dev kit.
- Get the language book.
- Put on the strong black tea.
- For a month or so, allocate the time used for relaxing, working out, and playing guitar, to going through the samples, cursing at the screen, eventually figuring out how to make hello world appear when you click a button, getting the eventing mechanisms straight, learning how to call and use data, figuring out how to manipulate images...all the key stuff that you'd have to understand to be able to translate requirements, into features, into an app.

Additionally:

- Find the useful community resources (often done by googling for things that either seem broken in the book, or just because you know from experience there has to be a better way to do a certain something)
- See if any frameworks I already work with exist for the given environment (e.g. PureMVC for iPhone).

FYI, PureMVC for iPhone: http://www.darklump.co.uk/blog/?p=185. I will more than likely blog my experience with this port some day.

- See if you can find some practice certification material, or get the cert book; this is important to me not because I necessarily want to get certified (I used to take certification seriously, I don't anymore, but that's a topic for another day), but it's valuable to me to make sure I understand what's considered "essential" areas for a given technology.
- Maybe take a class or two. Instruction can never hurt, and it shows real interest to a potential client. This can be costly, but it's a write off.
- Avoid the design-time GUI tool until I know how to create basic applications with just the language. I firmly believe, if you don't know how the basic plumbing works and depend entirely on the UI design tool, and something doesn't work the way you expect, you'll be seriously behind the 8-ball.

That's how I've always done it, it's always worked, and that's how I intended to start my climb up Mt. iPhone Develeporest.

So...

- Go to the iPhone Developer Center, http://developer.apple.com/iphone/.

Tutorials, community, and download for the dev tool, XCode. So far so good, several of my steps knocked right out.

- Get the language book.

I got this one first, and recommend it, but I'll say it right now, it is NOT enough, even to get you started: iPhone SDK Application Development, O'Reilly, Jonathan Zdziarski.

I say "NOT enough" for two main reasons:

First, Objective C is different from C-based languages in many ways syntactically; at first glance, it's really cryptic. You ultimately see that it's actually not bad at all, but all the brackets and unfamiliar keywords, and having to write two distinct parts for every class (interface and implementation), can take you out of your comfort zone. I love interfaces and such, I'm an OOP nut, but I still found the conventions of Objective C a bit disorienting.

Second, iPhone development involves understanding "Views" and class hierarchies related to them. If you don't understand the language already, working with the iPhone API to implement views and attach things to them is not easy at all.

Realizing all this quickly, I got this book: Programming in Objective-C 2.0, 2/e, Stephen G. Kochan.

Now we're talking; excellent book that demystifies Objective-C. For the most part, you write "utility apps", like simple calculators and so forth, but it gets you grounded in the language, which really unlocks the iPhone API for you. I like the language now and have no issue writing classes and having them work together nicely.

Alrighty; I understand the language, at least enough to work with the tool somewhat productively. XCode has an iPhone emulator, so I've ported some of the utility examples from the Objective C book to the iPhone (like adding real buttons for the calculator) and run them in the emulator with no errors. I'm starting to feel like an iPhone developer.

So, let's get one of these sample apps on the iPhone. You have to register your phone as a "developer" phone...ok, not so bad, the iPhone site walks me through this, yeah yeah I know if I blow it up or it catches fire Apple is not responsible...alrighty let's get "Hello World" on and see how this process works...BLAMMO. Dead stop.

In order to put an app on your own iPhone (now registered as a dev unit), you have to register as an iPhone developer with Apple, and they have to send you a license key, which you use in combination with a certificate, to sign your app, so that it can be transmitted via your usual USB connector to your iPhone (XCode actually makes this seamless, very nice). Otherwise, you'll just develop with the emulator forever (again, I am not interested in hacks or workarounds to this).

This process takes time, and may not be as easy as it sounds. You can register a number of different ways; for example, as an independent developer under your own name, or as a business. I opted for the latter; Tcoz Tech Services, a sole proprietorship with a DBA that I've used for five years. Apple required that I fax (can you believe they don't accept emails of scanned forms?) my business registration documents to them, and that they review them, etc. If approved, you go on to the next step.

So, I complied. Again, BLAMMO. I don't live at the address that I originally registered the business under anymore. Apple won't approve your registration unless the mailing address you apply under, and the addresses on the documents (in my case, a DBA), are identical. This held me up for almost two months, so I will say in caps:

IF YOU ARE A CONTRACTOR RUNNING A SOLE PROPRIETORSHIP WITH A DBA, AND WANT TO REGISTER YOUR BUSINESS WITH THE IPHONE DEVELOPER PROGRAM, MAKE SURE THE ADDRESS OF YOUR BUSINESS REGISTRATION MATCHES THE ONE YOU REGISTER WITH!!!!!

Fair warning.

After quite a bit of back and forth, Apple did allow me to change my registration address to the one on the DBA; this was reasonable, because there is no law saying I have to live at the same address, it's entirely Apple's policy. It held me up, but they worked with me and I pushed it through. One day, Apple telephoned me, asked me some confirmation questions, welcomed me/my business to the program, and said I'd receive a mail taking me to the last step.

Hah, guess what...the last step is to PAY. That's right. You don't have to pay to learn Objective-C, or get the XCode dev tool, or the emulator. But that's all meaningless if you want to be an independent developer building iPhone apps that sell in the App Store. You need to be able to put them on the iPhone accordinlg to Apple hoyle, and unless you pay up (a little more than $100 a year), you can't do it. Talk about incentive to build and sell at least 120 copies of my first 0.99$ app!

I grumbled, and again considered going the open source hacker route (interestingly, as I understand it, the developers of the first iPhone SDK are in fact the guys that wrote the open source unofficial one, which preceded the official one), but no, I'm a pro, do the right thing, keep it above board.

After a journey of roughly four months, all the pieces are in place, and I'm now testing apps on my iPhone. Look out for my first iPhone app; will it be a hit? I don't know. It certainly won't be my magnum opus, but I do know it's original; I've looked carefully and there isn't one available that does what I have in mind.

Feel free to contact me at tcoz@tcoz.com if you have any questions.

Labels: , , , , , , , ,