iPhone book has gone to an internal review which, should it be accepted, gets us to a beta book soon. Really soon. There are many chapters from the three authors in various states of completion. As things split, three of my initial four were ready for inclusion, so of the 102 pages in this early build, I wrote 50 of them. Which is damned strange considering that early on, I was the silent and unproductive member of the team (during and immediately after one of our house-shopping trips up to Grand Rapids).
File I/O, Preferences, and SQLite are in the can, Network’s getting there (though I’ve bogged for two days on various crashes I created after having to switch an in-memory cache from Cocoa’s NSDictionary to Core Foundation’s CFDictionaryRef… figured out Tuesday’s, now I’m on to one a few functions later). Apple rejected a feature request I sent in regarding the techniques of determining your network interface, but did so with interesting comments, so that’ll make a good topic to wrap the network chapter with.
Media’s after that, and that’ll probably be a couple weeks of heads-down coding to finally make Audio Toolbox happy (for a change) and OpenAL. And after that, I’d have five of 17 chapters done and presumably be able to see the finish line. Not a bad crunch overall… and the project’s velocity has definitely been kicked into high gear with the addition of Bill Dudney, whose enthusiasm and productivity are inspiring.
Don’t know if they’ll put out a sample chapter, but I’d nominate the SQLite one, actually. Apple’s docs basically say “you have a database, here’s its home page, go nuts,” so the stuff I wrote couldn’t help but be new and novel and tell you stuff that isn’t in Apple’s docs.
No official announcement of the book yet, but there was a sly reference in the latest newsletter (though one could interpret that as a reference to the iPhone material in Bill’s Core Animation book. Of course, we know better…
It’s crunch time for the book’s beta, which is where I’ve been spending a lot of my time. Curiously, one of my chapters has grown from an omnibus overview of I/O, to separate file and network chapters, and may now end up as four chapters, covering the file APIs, preferences, the SQLite3 database, and networking.
The latter is giving me a little pain today. My example for handling HTTP authentication wouldn’t be able to re-use the same authentication throughout multiple pages of a password-protected realm, and as I’ve fixed it (unwittingly evolving closer and closer to one of Apple’s sample apps, ImageClient 5, I’ve had to use more and more Core Foundation stuff instead of Cocoa. I’ve spent the afternoon baffled by a CF dictionary that seems to be losing the values I put into it. Surely that’s not really what’s going on, but right now I really don’t know what I’m looking at, and the debugger is surprisingly unhelpful on this one.
I solved a heck of a problem with IB and table view cells last week. I am so blogging that once the NDA lifts.
Noted in the Chron, an article saying Online bandwidth hogs to be cut off at trough, covering technologies being tested by broadband providers to meter internet usage and cut off heavy users, or at least push them into a more expensive tier.
It’s an interesting bit of bias to see how the article takes the ISP’s at face value by decreeing in the headline that heavy users are “hogs”. To be objective about it, just what is “hogging” the line? In a case study of a cable system in Texas cited by the article, Time Warner bumps users into the next pricing tier when they use more than 20 GB a month.
How much does it take to blow your limit, and can you do it without being a BitTorrenting media pirate? Well, I only have to look at my development work. For a while, Apple was putting out an iPhone SDK beta almost every week, at 1.5 GB each. So, four weeks of that and you’re up to 6 GB. Let’s say I also pick up a new Snow Leopard seed… recent Mac OS X install DVDs have been about 6 GB. Two of those in the same month and I’m up to 18GB. Add the documentation, a few software updates, an iTunes movie, any of the same downloads to a second computer, or just typical web use over the course of a month, and I’m over the limit, without ever having BitTorrented a damn thing.
Or, to hear the broadband providers tell it, I’m a bandwidth hog.
Their position isn’t too surprising, of course. If I were still trying to make 21st century revenues off 20th century infrastructure (or, in the case of the phone companies, 19th century), and I had a government-enforced monopoly to protect me from competition, then of course I’d want to give customers as little for as much money as I possibly could. And I’d get away with it, because exclusive government enfranchisement, funded with a small amount of campaign cash, would let me do more or less whatever the hell I wanted with my captive customers.
And if all the software development jobs move to less backwards countries, well, that’s not really the fault of the government and the ISPs, now is it? Nah, sleazy public-private collusion at the expense of the economy is the American Way.
When we all got laid off from Worthless Piece of Crap Wireless Software Company #2, I vowed I’d never touch mobility again. When we crawled to the finish of Swing Hacks, I vowed I’d never write a book again.
So, when I say that I’m co-authoring a book on the iPhone, well, I guess I’ve got some ’splaining to do.
The teeming dozens of you who read this blog — well, more than one dozen — have probably picked up on my interest in the iPhone OS platform and the Cocoa Touch framework. It’s one of the first new platforms we’ve seen in a while, and a highly appealing one at that, thoughtfully designed, with good documentation and tools provided, and with millions of users already out there, and tens of millions more waiting for the iPhone 3G. Apple’s App Store strategy stares straight at 10 years of carrier and device-maker restrictions on (or utter prohibition of) third-party applications and gives it a long-overdue middle finger, something that has developers swarming to the platform.
Let’s noodle with a little math. Let’s say you could sell a $3 app to 1/10 of one percent of iPhone owners. Your cut would be about $2 a copy. Assuming 20 million iPhones by the end of 2008 — the 6 million already in use, plus many more at the low price point and available in 70 countries instead of 6 — you’d multiply that $2 times 20,000 and get $40,000. Do that twice a year and it’s a decent day job. Adjust price points, popularity, frequency, and/or expectations, and there are many ways to make this work.
And that’s not even considering the likely consulting/contracting opportunities for enterprise iPhone app development. I’m available now, and my rates start at $80/hour. Contact cadamson@subfurther.com for a free initial consultation.
So, while I was teaching myself iPhone app development — I got the SDK the day it came out, and was working through the introductory docs on the plane home from the Java Posse Roundup — Daniel Steinberg of the Pragmatic Programmers contacted me about joining on with an iPhone book. The Prags’ approach is excellently-suited for the topic, as their build-your-own-PDF beta program and constantly-available updates are well suited to a topic as much in flux as the iPhone SDK (anyone who has tried out all the betas can attest to this… the default XCode template continues to be in play, even after 7 betas). Their philosophical approaches to book-writing and guidance to authors is also highly appropriate and based in real-world experiences… some of which would have made my earlier books work out better.
There are currently three authors on this as-yet untitled book. Marcel Molina, Jr. is a long-time Rails expert, and Bill Dudney is a “former Java guy” (I’m hearing that term a lot in iPhone circles) who just finished a nice book on Core Animation that I was fortunate enough to tech review (he has a chapter on QTKit integration that covers playback and capture… awesome!).
Right now, we’re cranking to have a substantive beta, and I’m enjoying the benefits of having started most of my study with the non-GUI elements of the iPhone, allowing me to dig deeply into media and networking (you may have seen hints of this work here, here, and here, among other places), and then come back to the GUI. Moreover, when I started writing my sample code, my example forced me to jump right in and do paged-based navigation, so instead of dicking around with little one-off “play with some trivial widgets” experiments, my first GUI apps ended up being big enough to give me a sense of how all the parts of UIKit relate to one another, so while it was a steep hill, stuff has come pretty easily after getting over it.
Oh, and if you’re wondering about my web radio client, ported from iPhone back to Mac, and the ADC support issue I filed on Audio Queue Services callbacks? I met the ADC engineer at WWDC. It turns out the ADC engineers all got pulled into the iPhone crunch, which has left a lot of ADC issues neglected. He did send me some code which may get me unblocked, but I haven’t had a chance to try it yet. Even if it works, I almost certainly won’t be ready for the App Store opening; I’ll probably table it until after the book’s beta. But still, it would be nice to get an app on the store before one of us has to write the chapter on how the reader can get his or her app on the store.
And that gets me to one of the really great things about the Prags’ approach. They’re strongly reader-oriented, with a concept of getting the reader to go on a journey of learning and accomplishment. When I was doing the QuickTime book, my editor encouraged me to abandon “we” and speak directly to the reader: “I” think this, “you” can do that. This was a good approach for developing a dialogue, but the Prags take it to the next level, and actually have a valid use for reintroducing “we”: it’s the things we do together, collaborating as author and reader to master this topic.
Anyways, the crunch is on. Right now, I’m handling file I/O, database, preferences, network I/O (Cocoa and CoreFoundation are practically two topics), followed by a bunch of media topics. My guess is that I’ll be in for 60-80 pages of the beta. And I’ve got about 30 now.
So the next couple weeks will be a little crunchy…
I just removed the Google Ads banner. For a while, it was kind of cool to see links to H.264 encoders and Java and Cocoa stuff, relating the otherwise disparate topics I’ve been blogging about. But recently, it’s all been single skyscrapers, the same thing over and over again, and I’ve gotten bored with it.
Would I feel differently if it were generating serious money? Probably not. Like I said when I set it up, I was somewhat motivated by just wanting to understand the ubiquitous Google Ads. Now that I have… meh.
Considering we go to Fry’s practically once a week, it figures that sooner or later I’d get burned by their legendarily bad service. I bought a 500 GB drive for the tower (rather than partitioning to install Snow Leopard, it seemed easier to just get another drive, considering the Mac Pro has drive bays to spare). I should have thought twice after I realized the package had already been opened (the seal on the wrap was torn, and I later noticed the cable bag had been opened), but it’s a 45-minute drive each way to Fry’s, so I just went ahead and installed the drive.
It works, but it has a buzzing sound that comes up every second or two. Not real bad, but it is audible over the Mac Pro’s fan (wouldn’t have heard it over the Power Mac’s fan, but the Mac Pro is quieter). So that’s a little annoying. Actually, what sucks is the principle of selling returned merchandise as new, especially since Fry’s is usually good about marking returned merchandise on the shelf.
Then again, for $80, it’s not worth getting all that mad over. That’s about what I paid in baggage fees to be mistreated by AirTran last week. Thing is, in a year, terabyte drives will probably be $80, and we’ll be in Grand Rapids, nowhere near a Fry’s or AirTran. So I won’t be doing business with either for much longer.
Ergo, screw you guys, I’m going home.