⇥ Camera Plus now available in the App Store

January 9, 2009
One comment
 
⇥ Permalink


Yay! My first app for the iPhone, Camera Plus, is finally available in the App Store. Camera Plus uses the phone’s built-in accelerometer to detect whether your hands are shaking when taking a picture, and to inform as to whether you are holding the camera straight and level, which helps against taking crooked pictures.

Unlike other apps of its genre, CP provides continuous visual feedback—you can see whether your hand is shaking and how badly off-level you are right as you are framing the picture. When you click on the camera button, the app waits until you’re still before taking a picture, thus ensuring blur-free images every time.
CP is the second app that I wrote—the first one hasn’t been approved yet. I decided to build it for a number of reasons: first, while I love to take pictures with the iPhone, the built-in camera app is just too unpredictable to function well (the camera itself is not stellar, either, but it’s not like I can do anything about that). Second, applications like Night Camera don’t give me the kind of continuous feedback that I like—if I want to take a picture, I’d rather use an application that helps me keep my hands steady before I hit the shutter, and I don’t want to have to wait seconds for the application to shoot while my subject moves or goes away. Finally, it’s too easy to hold the phone at an angle and take crooked pictures, which I totally despise.
I am already working on several improvements to the application—chief among them the ability to upload directly to a number of online photo services like TwitPic and Flickr. This, incidentally, will also allow me to embed GPS information in the pictures, which I am currently prevented from doing by Apple’s photo roll API.
And now, to figure out how to sell this thing… let me start with this: I have 5 coupons that will let you get a copy of CP for free. The first 5 people to DM me on Twitter get them! Note: CP works only with an iPhone—don’t DM me if you only own an iPod, because you won’t be able to use it.
Also, since 140 characters isn’t enough to explain Apple’s genius coupon system, this is how you can redeem the coupon if you’re one of the lucky five:
1. Open iTunes
2. Go to the iTunes Store’s main page
3. Click on “redeem”
4. Enter your coupon code
5. Follow the instructions from there on
6. You will need to sync your iPhone in order to install the application (obviously)

⇥ So I’ve been writing software for the iPhone…

January 7, 2009
8 comments
 
⇥ Permalink

I spent this year’s Christmas holiday trying to learn how to write iPhone applications. I have to say, I now know why developers rave so much about Apple’s software platform despite the fact that its development tools are severely limited compared to, say, Microsoft’s.

First of all, Objective-C is, realistically, an easy language to grasp and learn, if you discount the lack of closures (without which, in my opinion, event-driven development is about as much fun as drinking turpentine) and the mind-boggling, reference-based memory management scheme. Perhaps it’s the stupidity that comes with programming in C for so long, but I spent about 25% of my time chasing down memory leaks caused by forgetting to release a reference, or autorelease a pool, or pool an autoreference, or something like that.
Nonetheless, at the end of it all, Obj-C is just a language, and the language a platform does not make. The fun of developing for the iPhone OS is in learning how Cocoa works, then rejoicing at the fact that so many complex tasks are already taken care of (and in an efficient way), then getting mad because there is almost always one thing that you want to do and can’t be done because the functionality you need, although present, belongs to a private API whose usage will cause immediate rejection from the App Store.
Maybe it was the fact that I actually had some spare time for a chance, but I actually managed to go from no knowledge of either Objective-C or Cocoa to a completed and submitted application in about four days and around 22 hours of work—all of it on evenings and weekends. The application does nothing special, but it still handles a database, graphical transitions, HTML rendering and REST service consumption, which means that writing applications of a certain complexity is relatively simple.
I don’t mind telling you that my application was rejected twice—both times because of bugs. I don’t mind telling you—why should I? Four days before I submitted the application, I had only installed XCode so that I could compile PHP—because it means two things: first, the app vetting process is more than just a way for Apple to keep competition out of the hands of iPhone users. Personally, I feel that they’ve been rather clear on what they allow and don’t, and it’s not that difficult to figure out ahead of time whether your application will sail through (assuming, of course, that you’re not stupid enough to leave bugs in it) or be blocked because it skirts dangerously close to or outright violates the ToS.
The other reason why I don’t mind telling you that I was rejected is that I was rejected professionally. Both rejection notices came with clear explanations on what I had done wrong, a description of the steps required to reproduce the bug and either a core dump or screenshots of the errors. Moreover, the vetting team promptly replied to all the inquiries I sent, once again displaying a reasonable amount of professionalism.
And so, while I await for my two apps (I managed to squeeze another in before the end of the holidays) to be rejected a third time finally approved,  it’s time to move my concerns from how to write the software to how to make money from it. It doesn’t seem to be impossible, but it’s certainly unrealistic to expect that Apple will do the marketing work for me.

⇥ 7 things you probably don’t know about me (Oh noes, I have been tagged!)

January 3, 2009
One comment
 
⇥ Permalink

It appears that I have been tagged by Matthew, Wez and Davey. That means that I am supposed to tell you seven things about me that you probably don’t know—and maybe didn’t want to, either.

Too late—here we go (in no particular order):
  1. I once worked 33 hours straight on your typical death-march project, trying to meet an impossible deadline. At the end, product shipped, I simply curled up under my desk and slept until my wife called to see if I was dead. Going home was out of the question—the purple elephant in the corner office across the hall was threatening to kill me if I did.

  2. I don’t like being touched, or, more appropriately, I detest being touched. I had a massage once, and it was the worst twenty minutes of my life—bar none.
  3. I was a finalist in the Italian math olympics, and they flew me to Rimini for the finals. I can’t tell you how I did in the finals, because I was too busy loafing at the beach while the others were trying to solve puzzles of questionable practical use. In case you’re wondering, my IQ is 143—well, it was when I was 18, at least. After fifteen years of programming work, I’m probably down to amoeba-level by now.
  4. When I was 16, I ran up a $2,000 phone bill (in Liras) calling BBSs in the States. Thanks to a lucky combination of vacation time and late evenings, I managed to artfully evade my parents for two weeks before they confronted me with the enormity of what I had done. My dad made me pay the bill—every single cent. And I deserved it, too.
  5. I am of noble blood. Both on my dad’s and my mom’s side, I can trace my ancestry back to illegitimate children of Italian nobility. One such noble actually wanted to recognize my great-great-grandfather, who refused—the idiot.
  6. My first computer was a Texas Instrument TI 99/4A, which, incidentally, was also Eli‘s first computer. My dad got one second-hand from a friend who no longer knew what to do with it. From there, I moved on to an Apple ][+ which my dad found at the dump and repaired, and stayed with the Fruit Company until they decided that I had to buy a Mac, and I decided that I had to make a living with a PC.
  7. My first article was published when I was 13 in a now-defunct magazine called Nibble. It wasn’t really an article—rather, it was one of those “neat tricks” that made the border of the screen change colour at defined intervals. I think it’s agreed among experts that the event marked the general decline from which the technical publishing industry has yet to recover. 
I now have to tag seven more people (revenge is sweet). They are:
  • Sean Coates—who will probably never recover from editing php|architect for almost a year.
  • Lukas Smith—the only person I know who can deal with internals without going insane.
  • Andi Gutmans—who still owes me an answer to an e-mail I sent a month ago.
  • Zak Greant—A man of insight and knowledge whose opinion I always appreciate.
  • Matthew Weier O’Phinney—who has the coolest initials in the PHP community (but I claim the best anagram—the letters in my name can be rearranged to spell “atomic brain”).
  • Stefan Esser—because I know that deep down there’s a smile lurking behind that Teutonic façade.
  • Helgi Þormar Þorbjörnsson—whose name gave me a reason to switch all our systems to UTF-8.