Nuthole

Look what you've done to this rock'n'roll clown.

The Sixth Tip for Prospective iPhone Developers

A while ago I posted five tips for prospective iPhone developers, and with a little more experience under my belt I’ve got one more:

6: Post-date your first app’s release date

When I wrote tip 5, it had been nine days since my app was approved for sale, but it wasn’t in the App Store due to Apple’s unknown delays in finalizing my sales contract. I ended up waiting another 19 days, a total of 4 weeks after I got the “your app is approved for sale” message, until the app appeared in the App Store!

OK, a four week wait isn’t the end of the world, but in these days where 5000 new apps appear in the App Store each month, every day counts. And worst of all, according to the App Store, the “release date” is not the day my app appeared in the App Store, but the day, 4 weeks earlier, that it was “approved for sale”! So, on my app’s first day in the App Store, if you drilled down into Games/Action and sorted by Release Date, you wouldn’t see Scribattle on the first page. If you clicked the little arrow to go to the next page, you still wouldn’t see it. In fact, you’d have to click that little arrow fifteen times to get to Scribattle. Which means, effectively, that no one will see Scribattle just by browsing around the App Store. I had one sure chance of exposure near the top of a category, and lost it due to the workings of the App Store.

Incidentally, I emailed Apple to complain about this, and they sent me a courteous reply, telling me that it “is operating as expected”, i.e. it’s not a bug, it’s a feature. Great feature, Apple!

So finally, the tip: When you submit your very first app, before your contracts are finalized, don’t set the release date to “today”. Put it a month or two out into the future. Then, after your app is approved and your sales contract is finalized, you can go back into iTunes Connect, change the release date to the current date, and have your first app actually show up as a new app in the App Store. I’m telling you this now, gentle reader, because I wish someone would have told me this months ago.

Scribattle in the Wild

At long last, Scribattle is available! iPhone and iPod Touch users can now get it from the App Store, load it up, and start blasting away at Scri and Flingers and Pent (oh my!)

It’s been quite a journey getting this game to market. I’ve had very few programming challenges, but a number of small delays due to various technical details involved to package and “sign” the app during development, test, and distribution, and a few large delays related to how Apple implements their developer program and handles their contracts. There’s a lot of extra hassle compared to releasing desktop software, but a number of friends and colleagues assure me that the system Apple has put in place is still miles ahead of the process for most other embedded and mobile platforms, so hey. I’m not complaining (very much).

Now then, if you have an iPhone or iPod Touch, it’s time to go get yourself some Scribattle. OK?

The Folly of Executive Pay Caps

Obama’s new proposal of imposing executive pay caps on firms that receive government bailout money has a problem as seen in USA Today and other places: Since firms that are doing well don’t have the pay caps, there may be a “brain drain” wherein the “best people” won’t want to work for the companies where the limits are in place. According to a “compensation consultant” named Alan Johnson, “[…] you end up killing the institution you tried to save […] You drive away the good people.”

Hard to deny that. You want to “save” a company via cash injection, but at the same time you put a limit in place that will tend, over time, to lead the best people away from the company. The implied upshot of this is that we shouldn’t be imposing a salary cap. I’d like to take this a step farther, and suggest that we shoudn’t be trying to “save” them with cash in the first place! Clearly, there is a range of results in the financial industry, where lots of companies feel like they need a handout to keep going, whereas some are apparently doing OK (e.g. the ones who would theoretically pull talent from the ones where the caps would be applied). It seems to me that we should let the market take care of this. Those companies that are doing the worst should risk going under, just like any other industry. If they do, their competitors can buy up their assets, including their previous customers, etc.

The fact that we even consider bailouts for behemoths like the automobile industry and the financial services industry seems to prove that the US “market economy” is anything but. Like Newton’s laws of physics which break down in conditions with extreme velocities or extreme scales, our concept of the free market seems to break down when actors in the marketplace are extremely large.

Five Tips for Prospective iPhone Developers

I’ve been working on an iPhone game called Scribattle in my spare time since late last summer. After years of Mac OS X and previously OpenStep and NeXTStep programming, it seemed that stepping into the iPhone development path should be a piece of cake, and as far as the programming is concerned, it has been; However, there are a number of hoops that every iPhone developer has to jump through in order to get up and running, and get their software published on the App Store. Based on my experience so far, here’s some advice for anyone thinking about developing for iPhone.

1: Sign up for the paid developer program now



If you’re thinking about doing iPhone development, but haven’t signed up yet, then scurry immediately over to Apple’s site and sign up. After you sign up, there is a waiting period while Apple checks out your information, and this can take months. It’s not that the process actually takes them months, but rather that you end up in a big queue (or maybe just a pile) of applicants, and it takes Apple some time to get through them all. In my case, after waiting 6 or 7 weeks, I called Apple’s developer support number, had a brief conversation with a woman who told me that I was just about ready, and that I needed to send them a particular government form proving the validity of my company. 72 hours later I was up and running. I’m not sure if my call is what actually broke me free from the pile, or if I just happened to call right when they were about to call me, but in any case you should be prepared for a wait.


“But,” you may say, “I’m not even sure I want to develop for iPhone, so I’m not ready to pay the fee!” Yes, it costs $99, but don’t worry about that right now; You don’t pay until you’ve been approved, which can take months, and if at that point you decide you don’t want to continue, all you have to do is not follow the link they send you, not enter your credit card info, and not purchase the $99 developer license.

2: Download the developer tools, and start building something



While you’re waiting to be approved as a developer, go download the free iPhone SDK (requires you to create a free registration if you haven’t already) and start working with it. The SDK lets you do everything except build a real, installable app; Until you have purchased a developer license, you can only run in the iPhone simulator that is part of the SDK. This has some limitations, but works well enough to get you started, especially on your first app. Give yourself as much time as you need to get a feel for things, especially if you’re new to Xcode and/or Objective-C.

3: Objects in simulator may be slower than they appear



One caveat about the SDK’s iPhone simulator: The apps you build and run on the simulator are not “throttled” at all to simulate the performance of an actual device, so you may see things that seem to work great in the simulator, but fail miserably on an actual device. The first app I was toying with, doing some simulated physics and drawing everything with CoreGraphics, was nice and smooth on the simulator, but as soon as I put it on a device, it was horrendously slow. For your first apps this may not be an issue, but it’s something to be aware of if you’re working on anything time-critical such as a game

4: Learn to love CoreGraphics, but use OpenGL anyway



Apple’s drawing API for both Mac OS X and iPhone, CoreGraphics, is really nice; a modern C interface to a great compositing engine. For basic drawing, including simple animation in response to user actions, this is great. The problem is that if you need more performance (for example, for a game that you want running at 60 fps), CoreGraphics will probably not cut it. I performed a simple test, of just drawing a screen-size rectangle full bore, with nothing else going on (no game engine running, and nothing else being drawn), and I could barely get more than 100 draws/second. So, I started working with OpenGL, using some of Apple’s example code as a starting point. The same test, drawing a full-screen rectangle, easily surpassed 10,000 draws/second! Most people associate OpenGL with 3D graphics, but it works equally well for 2D, so if most of your drawing consists of compositing bitmaps, as opposed to using the curves, fills, and other goodies you get with CoreGraphics, OpenGL will be a huge win for you.

5: The first app you release should be non-free “shovelware”



While you’re pouring your heart and soul into your first real app, do yourself a favor and quickly slap together a meaningless app that takes basically zero time to create, and offers nearly no functionality. Whether you create the 23rd flashlight app, or the 47th fart app, or some whole new concept in useless crapdom is up to you. The reason for doing this is that in spite of all the hardship you went through earlier to get approved as an iPhone app developer, there is still another hurdle: Your sales contract. You probably know by now that each app you release is going to sit in a queue until apple approves it for sale, a process that seems to usually take about a week. For the very first app you release, however, Apple needs to “finalize” your sales contract. They won’t do that until you have a non-free app submitted and approved for sale. As of this writing, I’m still waiting for my contracts to be finalized. It’s been 9 days since my app was approved for sale, and now I’m just twiddling my thumbs, waiting for Apple to do whatever it is they’re going to do. Seems like it shouldn’t be too hard to rubber-stamp the same sales contract that they have for every other iPhone developer, but I’m not a lawyer, so who knows. The point is that if i’d released some crappy shovelware months ago, I wouldn’t be in this predicament, and you’d already be able to go and buy Scribattle in the App Store!




There you go. Hopefully these tips will help some aspiring iPhone developers to get up and running with a minimum of delay. Now go sign up for the dev program, and keep your eyes peeled for Scribattle!

A Line Item

I reported a bug in Mail.app, Apple fixed it, and it was specifically mentioned in the 10.5.6 release notes:

Mail:


  • Addresses an issue that could prevent Mail from quitting.

I coudn’t be more proud of myself! Actually that’s not true. I’ll be prouder when I finally get Scribattle released, for example.

Comics in My Pants

Some time ago, perhaps inspired by the daily comics-watching antics of The Comics Curmudgeon and Garfield Minus Garfield, I started a new comics-oriented blog. The premise of this blog is simple: Most of these so-called “comics” or “funnies” are anything but funny; Many of them can be enhanced (I’ll stop short of saying “improved” or “made funnier”) by replacing the last text bubble with a single stupid punchline. The results can be humorous, absurd, ribald, or scatological. See for yourself at Comics In My Pants. I’ve kept it going for a month now, dredging through the daily strips looking for spots where my punchline of choice seems to fit, at least syntactically. Enjoy!

iPhone at 23 (Days)

Now that I’ve had my iPhone 3G for just over three weeks, I figure it’s time for me to share some thoughts.

Anyone reading this probably already has some idea of the iPhone, just from the constant media attention, so I won’t mention the most well-known features (touch interface, hi-res display, GPS) except in passing.

The Good


The web, everywhere. For years I’ve had phones that supported web-browsing in some form, first with GPRS and more recently with 3G. The problem was always the browser itself. The built-in browser in most phones often feels like a bad joke, like surfing today’s web with Netscape 1.1, over a 1200 bps modem. Opera Mini changes the game considerably, providing a decent browser experience for almost any modern phone, but the fact that it’s not integrated into the phone means that as soon as you click a link in an SMS or email, or do anything else that the phone considers an internet-related event, you are thrown back into the phone’s caveman browser. With the iPhone, you’re using Safari, which is an established browser with a great javascript interpreter, so it works well with most existing websites. So far I haven’t seen any sites that trip it up, and I really don’t expect to. The only drawbacks are the lack of Flash (which I do miss in a few spots; I can’t play Scrabulous without it!) and Java (really only a drawback in theory, since usage of Java in the browser seems to have vanished from the face of the earth).

Pervasive contacts. Your contact database, imported automatically from Mac OS’s Address Book (or Windows’ Outlook, though I haven’t tested), is readily available for applications to use, both built-in and third-party. For example, if I’m using the maps application and need direction’s to a friend’s house, I don’t have to enter his address, since I can just pick it from the address book. Similarly, I’ve already got email addresses and phone numbers for most of my friends and family in my address book, so they’re all just a few taps away.

Offloading resources. One of the working assumptions of the iPhone is perpetual internet access. This is put to good use in, for example, the maps application. Unlike most previous standalone GPS units or telephones with GPS, the iPhone doesn’t need to be preloaded with map data, it gets it live from google just like your web browser does. This also goes for route planning, that’s handled by google’s servers instead of the phone itself.

The built-in speaker. This baby is surprisingly loud. Combined with talk-radio podcasts, you can convincingly reproduce the experience of listening to AM talk-radio on a tinny kitchen radio! This is actually more useful than I’d imagined; If it’s placed on a surface a few feet away I can hear it even over the noise of babbling children, a running dishwasher, etc. Not a great hi-fidelity music listening experience obviously, but for talk podcasts or just to have some music playing in the background, it’s pretty good.

The App Store. Being able to quickly and easily download software for the phone, both free and commercial, via a built-in application, is a big win. Sure, lots of the applications are similar to one another, and you sometimes sift through commercial apps that are bested by free competitors, but that’s true of desktop software as well. If you buy any non-free applications, you probably won’t need to break out a credit card, since the App Store will charge the credit card you’ve previously registered with Apple for either a .mac membership or iTunes Music Store purchases.

Some great apps. There are some great apps available already in the App Store, with more to come. Chief among these, perhaps, is Apple’s own Remote app, which lets you control iTunes on any Mac or PC on your wireless network. For years I’ve envisioned smarter remote controls, that would actually be aware of the state of the devices they’re controlling (instead of just blindly sending commands in response to button presses that may or may not be relevant at the moment, as current remotes do), and this is actually a step in that direction.

The “Bad”


Missing 3G features. The iPhone is missing some features that many people have come to expect from 3G phones, particularly MMS, video calls, and FM radio (not really a 3G feature at all, but something that many people expect in a modern phone in any case). For me, the absence of those features has no effect. I’ve been using 3G phones for several years, and during that time I made a video call once (to a friend in the same room, just to try it out), sent an MMS maybe once, and received MMS messages a handful of times (literally, I can count them on one hand). IMHO, video calls and MMS are actually mis-features, created by the telephone carriers as another way to charge high service fees. As for FM radio, well I did listen to it a few times with my previous phone, but now I’ve got 8 gigs of space to fill with my own music and podcasts! Who wants to listen to commercial radio when they can choose themselves?

The (truly) Bad


Some things just won’t sync. At least for me. For some reason any apps I download straight from the phone aren’t synced back to iTunes, so in the event of a full restore (see below) I am forced to manually download them again.

The Ugly


Full restore. I ended up having a problem where every app I had downloaded (including Apple’s own Remote app) crashed right after startup, sending me back to the home screen. A bit of googling revealed the solution: Sync everything, and do a full restore. Ugh. That’s the sort of thing that makes me hate Windows, where the general solution to any problem starts with “reinstall Windows”, and it pains me to see this “solution” on the iPhone. Hopefully things will stabilize. On a plus note, the full restore was quite painless, if a bit slow. The only problem is that none of my third-party apps were synced to iTunes, so I had to reinstall them all. If I’d had any valuable data saved in any of these apps, then I’d probably consider that to be a much bigger problem.

The Battery. Oh, good gracious me, this phone sucks juice. I was aware that it would do so, I’d heard that many smartphone users need to charge their phones every day, but still. The speed with which that battery gauge dives into the red is truly frightening. I’m thinking forward a year or two when, if this battery deteriorates anything like my first MacBookPro battery, I’ll be down to 3-4 hours of standby time, or maybe 15 minutes of actually using the phone before the battery is completely drained. Turning off 3G seems to help (and surprisingly doesn’t seem to effect the speed of mobile surfing too much), and turning off wi-fi helps even more, but how fun is that?

In Conclusion


I think the iPhone 3G represents a milestone, of sorts. While I don’t suppose that everyone, or even a large minority, will have an iPhone in the next few years, I do think that it raises the bar in many areas, and when other phones start reaching the iPhone’s level of integration and internet capabilities, it’ll be better for everyone. Rising tides and all that. In any case, if you want a sneak peek at the future of mobile telephony, buy an iPhone today.

The Great iPhone Swindle

Tech Sweden is abuzz with news of Telia’s iPhone pricing plans having been released today. Unlike the AT&T contracts in the U.S., Telia’s contracts for Sweden don’t directly include unlimited data transfer. Also unlike the AT&T contracts, at first blush (and subsequent for that matter) the Telia contracts seem really pretty expensive, especially the iMaxi plan, which starts at about $150/month!

So, looking to maximize my bang for the buck, I worked up a little spreadsheet showing the monthly and total costs for the various phone models and plans.



  • The figures in bold are prices straight from Telia’s site.

  • The figures in light blue are monthly recurring costs for the stated data amounts, and a second row for unlimited data amounts (arrived at by adding in the cost of Telia’s 9kr/day “maxtaxa”; Note that this represents the maximum amount you’d pay in a month, assuming you blew past the free amount in the first day and kept using some amount of data transfer every single day of the month)

  • The pale green figures show the absolute smallest total cost for each of the two models, and the pale purple figures show the smallest total cost for each of the two assuming unlimited data. Note that these all wind up being for 18-month contracts, so for comparison’s sake I’ve included extended calculations for the 18-month contracts, adding a row for what you’d pay if you continued with a normal Telia “fastpris” account at 199/month, and another row that adds in that plus the “maxtaxa” to arrive at the costs for unlimited data.

  • The dark green figures show the smallest total 24-month cost for each model, and the dark purple figures show the smallest total 24-month cost for each model assuming unlimited data.

  • I haven’t calculated anything around extra minutes or extra SMS, since I (and probably many other iPhone users) assume that data usage will be a much more important factor, and in my case I’m sure that I’ll seldom use more than 100 minutes or 100 SMS per month.

Some interesting points pop out when looking at this. For one thing, the more expensive plans really seem disastrously expensive, especially iMaxi. If you’re not planning on calling for 16 hours a month or sending 1000 SMS/month (who does that?) then those really seem like a waste. Even if you were using that much, it seems like the standard tariffs, combined with the iMini plan, would still be much cheaper. Again, for my anticipated usage I really don’t care, but maybe someone who really is a big voice or SMS user will calculate these things.

Another thing that strikes me is that there is an interesting pattern to these numbers. If you look at the dark purple and dark green figures, the cheapest totals (for minimum and unlimited data) for each model, they both are for a 24-month contract. Compared to building an equivalent usage period by combining an 18-month contract and a 6-month “fastpris”, they are just barely cheaper; precisely 200kr in each case. And that’s all assuming that Telia’s “fastpris” and “maxtaxa” will remain at their current levels for the next 18 months. If they get even just a tiny bit cheaper, or if another operator has a better deal for iPhone users 18 months from now, then the 18-month contract will turn out to be a better deal in the long run.

So, it seems that financially, whichever of the two models you’re looking to buy, the iMini 18-month plan seems like the way to go. Again, things may be different if you plan on doing lots of voice calls or SMS, but I’ll leave that for someone else to figure out.

Twitter? Twucket.

Just in time for WWDC ’08, allow me to introduce you to Twucket.

Twucket is a new Twitter client for Mac OS X that I am releasing as freeware. I created Twucket because I wasn’t happy with any of the available ways to view my Twitter page. The actual twitter website is a hugely-rendered page, and requires you to go to the browser now and then to see if anything has come in; The standalone clients I tried were either wasteful of screen real estate, or didn’t fit in with the overall Mac GUI, or contained ads.

Twucket suffers from none of those problems. Its interface is minimalist and small, it behaves like a normal Mac application, and it doesn’t insert ads into the display. What it does offer is a compact, simple Twitter interface with a few features that Twitter users will probably appreciate. It uses a relatively small amount of screen real estate per message, so you can leave a small window open in a corner of your screen that is still large enough to show the latest 4 or 5 messages you’ve received.

I do have additional plans for future versions of Twucket, but today is the day for 1.0.0. If you’re a Twitter user, please give it a try and let me know what you think!

Demand JoCo

I’ve told you before about Jonathan Coulton and why you must love him and give him your money. Lately Jonathan has been extending the range of his touring outside the U.S. with a recent show in England, and he’s thinking about coming to Europe again and wonders where his fans are. He’s even set himself up on Eventful to figure it out.

Obviously it’s time to rouse the Nuthole Army out of its slumber. Arise, Nutholios, and commence with the clicking!

Click here to demand Jonathan Coulton in Stockholm!

Of course you could probably click through there and demand him for some other city instead. But I won’t help you there.