nuthole.com "the freak that I control"
contact:email
subscribe:feed
follow me on twitter:twitter
2009
Powered by Blosxom
Get Firefox!
geourl
subgenius
spampoison hosting rails

On Writing "Learn Cocoa"

posted by jack at 16:18 CET in / writing feed

It has come to my attention that I haven't said a word here about my current side project, which I'm spending all my spare time working on: I'm writing a book! This comes as a surprise to me as much as anyone, but there it is. Through a happy set of coincidences, I've been given the opportunity to work on the upcoming Apress book "Learn Cocoa on the Mac" along with Dave Mark and Jeff LaMarche, not to mention Mark Dalrymple doing tech review, and of course Clay Andres and the rest of the team at Apress.

This opportunity came about through a string of coincidences. Some of them hinge on things that I've done over time without any hope or intention of writing a book, which goes to show, perhaps, that sometimes when you reap what you sow, the harvest may be quite unexpected!

Anyway, this is a huge undertaking, and I feel like a bit of a hermit, eschewing the watching of TV and the reading of blogs in favor of the writing of pages, but I am truly having a blast.

permalink digg slashdot del.icio.us 1 old comment

The truth about my current appearance

posted by jack at 20:39 CET in / life feed

At a party last night, a friend of a friend made a startling observation about my current appearance, saying that I resembled a combination of Wolverine and Swedish journalist Göran Greider, in terms of mutton-chops and wild-hairedness. See image below for astonishing proof!

You have no idea how hilarious this revelation was.

permalink digg slashdot del.icio.us 3 old comments

1000 days with the softest-working band not in show business

posted by jack at 00:23 CET in / music feed

I don't know if it's been exactly 1000 days, but sometime during the fall of 2007, some friends and I created Band of None. Our first 1000 days of existence have been, frankly, uneventful. The band's members and their families have all socialized on several occasions, and in fact the Band of None new year's eve "we should be performing at this party" discussion has become an annual tradition of its own. Our self-confidence and faith in our destined future as rock'n'roll superstars is matched only by our lack of available time to pursue our dreams. At this point, approximately 1000 days into our journey to musical stardom, I'd like to recap some of our accomplishments thus far:

  • Number of live performances: None
  • Number of recording deals signed: None
  • Number of paid sales of our songs: None
  • Revenue from merchandise sales: None
  • Number of rehearsals where all band members were present: None
  • Number of drug-related deaths: None
  • Number of hotel rooms destroyed: None
  • Amount of money spent on equipment: None
  • Number of days traveling on the road: None
  • Total radio plays of all Band of None singles (approx): None

As you can see, we don't have a lot to be proud of! Be that as it may, I'd strongly encourage you to check out our website and maybe even our myspace page and listen to some of our future classics. "Hoffburger" may be the best, but "Your Myspace Page" has something going for it as well.

permalink digg slashdot del.icio.us 4 old comments

Excitera Mobile Cup: Ten steps to creating your first iPhone app

posted by jack at 08:04 CET in / compute / programming feed

Last night, I spoke at an iPhone-themed event hosted by Excitera as part of their Mobile Cup, presenting some information for "iPhone-curious" developers and entrepreneurs about the iPhone development process. I gave a non-technical presentation of the series of steps/tasks that any new iPhone developer will need to go through. The slides are available .

Aaron Ardiri also presented his experiences developing his series of games, and John Chang talked about some of the things he's dealt with working on Skype's iPhone app as well as some insights from his previous work at Apple. There will be some video available later, I'll post a link here when it's up!

Big thanks to Hannes Dernehl for arranging and hosting the event, and Cristobal Viedma for asking me to be a part of it!

permalink digg slashdot del.icio.us 1 old comment

New game released: Diabolotros

posted by jack at 07:44 CET in / compute / programming feed

Yesterday I released a new pair of games for iPhone and iPod touch in the App Store, Diabolotros and Diabolotros Lite. Diabolotros is a retro arcade shooter, most of the gameplay is lifted straight from classics like Space Invaders, but I've given it a few twists of my own, and added iPhonetastic tilt'n'shake controls: You tilt the device to steer your ship, and when you have special weapons available, you fire them by giving the the phone a little shake!

Things for you to see and do:

permalink digg slashdot del.icio.us 0 old comments

Scribattle Lite: More results

posted by jack at 12:22 CET in / compute / programming feed

Some time ago I posted some charts showing how my first iPhone game, Scribattle, was doing after the release of its free sibling, Scribattle Lite. It turns out that the game was at that time already nearing the heights of its popularity (but oh, what heights it hit!) The absolute peak occurred on March 3rd and 4th; during that 2-day period, the full version sold 800 copies and the free version was downloaded a quarter of a million times (that's 250,000 times).

The charts below show the progression of events after that. Unlike the previous charts, here I've chosen to include the actual numbers of sales and downloads, instead of just showing them in relative terms. In both charts you'll see a temporary sales up-swing, lasting about 5 days, from the 13th to the 18th of March; That's the time period I ran a "sale" on Scribattle, selling it for $0.99 instead of $2.99. It didn't impact my revenue much during those days (roughly triple the sales numbers, but each sale yielding in one-third the revenue), but it may have temporarily delayed the inevitable decline, since the increased sales numbers helped keep it in the charts a little longer.

The chart on the left is a plain linear plot of Scribattle purchase and Scribattle Lite free downloads, with the downloads for Scribattle Lite divided by 100. Without doing that division, you wouldn't see any difference in sales of Scribattle, just a solid blue line along the bottom, because the ratio of Scribattle purchases to Scribattle Lite downloads has normally hovered between 1:200 and 1:100. So, on the big peak day, March 3rd, Scribattle was bought 373 times, and Scribattle Lite was downloaded 131,000 times.

The chart on the right is the raw data (no dividing anything by 100), but this time plotted on a logarithmic scale. Doing this tends to flatten out the peaks, while at the same time accentuating the differences in the smaller ranges. Here you can more clearly see the nature of the "long tail" that Scribattle and Scribattle Lite are currently experiencing; free downloads and sales have both been holding pretty steady for about a month! Granted, I'd be happy to see the steady-state numbers be higher, but I really can't complain about it either.

One interesting spot in these graphs is April 9th. That's when I released an update to Scribattle Lite containing ads (they don't affect the gameplay, but instead turn up between levels every few minutes). Looking at the logarithmic chart, you may detect a slight spike in sales, followed by a slightly sharper decline, leading down to the current steady state a few days later. I'm not sure if this was caused by the inclusion of ads, or just happened anyway, but there it is.

permalink digg slashdot del.icio.us 0 old comments

I Can't Believe I'm Not a Millionaire

posted by jack at 09:12 CET in / compute / programming feed

Last night, I gave a presentation at the Stockholm Cocoaheads meeting entitled "I Can't Believe I'm Not a Millionaire"about my experiences with Scribattle and Scribattle Lite on the App Store. Scribattle Lite had a short but intense "hit" period when it reached the #1 or #2 spot in most countries, and has now been downloaded over 1.5 million times! See more in the slideshow.

permalink digg slashdot del.icio.us 2 old comments

Scribattle Lite: Initial results

posted by jack at 11:09 CET in / compute / programming feed

I've been collecting data for both Scribattle purchases and Scribattle Lite downloads, and have some results to share. Like most other reports of this nature that I've seen, I'm going to be coy and not show any precise numbers, but rather some graphs that show the relative growth for these products. These charts begin on February 10 (the day Scribattle first appeared on the App Store) and March 1. Blue dots are Scribattle, green dots are Scribattle Lite. Scribattle Lite was only available during the last five days of this period.

The first chart shows a nice rising slope for Scribattle Lite, and what seems to be a complete flatline for Scribattle. This is due to the fact that the free downloads completely dwarf the paid downloads, so that none of the changes in paid downloads equate to even a single pixel on this scale.

The second chart reveals the true growth in Scribattle sales by scaling them up to match the Scribattle Lite downloads. Basically, if you plotted Scribattle sales by themselves, and then overlaid that on top of a plot of Scribattle Lite downloads by themselves, this is what you would see.

Finally, for the sake of showing both sets of numbers relative to each other, while still allowing some viewing of the smaller values in the Scribattle sales, here are is a logarithmic view of the same data shown in the first chart. The nice straight rising lines toward the end, especially for Scribattle Lite, show periods of exponential growth. What you're seeing is basically a doubling of the number of Scribattle Lite downloads each of the last 4 days, and nearly the same kind of increase for Scribattle sales!

I've only had my Lite version on the App Store for 5 days, but even at this early stage I feel safe in saying that in my case, releasing a Lite version has been a huge win for sales of the full version. Not an epic win (yet), but still a huge win.

permalink digg slashdot del.icio.us 0 old comments

Jumping on the Lite bandwagon

posted by jack at 07:16 CET in / compute / programming feed

Since Scribattle never got any "new releases" exposure on the App Store (see previous entry), I decided to go ahead an put out a free "Lite" version. Still a highly playable game, but with a few key features stripped out, and including a few strategically placed "Buy Scribattle" buttons. Hopefully this will be downloaded far and wide, and lead to some sales of the original! At some point I will post some sales data.

permalink digg slashdot del.icio.us 0 old comments

The sixth tip for prospective iPhone developers

posted by jack at 11:43 CET in / compute / programming feed

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.

permalink digg slashdot del.icio.us 3 old comments

Scribattle in the wild

posted by jack at 14:24 CET in / compute / programming feed

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?

permalink digg slashdot del.icio.us 0 old comments

The folly of executive pay caps

posted by jack at 13:54 CET in / politics feed

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.

permalink digg slashdot del.icio.us 2 old comments

Five tips for prospective iPhone developers

posted by jack at 08:31 CET in / compute / programming feed

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!

permalink digg slashdot del.icio.us 4 old comments



Looking for programming talent that doesn't make you say "WTF!"? Try the hidden network.