I'm happy to announce that iCPAN
2.0.0 is now in the app
store. If
you're not familiar with it, iCPAN is a free iOS app which allows you
to browse CPAN Pod on your iPhone/iPod/iPad. The previous version of
iCPAN was released in November of 2010, so this has been a long time in
coming.
If only CPAN had a web service...
Originally, my hope was to release frequent iCPAN updates with new Pod,
bug fixes and improvements. However, I was running into a lot of
problems with getting good coverage of CPAN modules. There was (not yet)
a web service which you could query to find out what is currently
indexed in CPAN or where you can find all the Pod in an arbitrary
distribution. I had been rolling my own solution with the help of some
CPAN modules, but my coverage was only around 60,000 documents, which
was poor. After discussing this with some friends at PerlMongers in
Toronto, I started hacking on an API to provide the Pod as well as some
metadata. The API soon had a name: MetaCPAN.
Working on MetaCPAN was so much fun and so productive that consequently
most of my open source efforts were directed toward this project. This
all took place around the time of the last iCPAN update, but I still had
hopes to keep iCPAN reasonably up to date. After all, it only took about
6 weeks of evenings and weekends to get a proof of concept up and
running for MetaCPAN. I would have plenty of time to keep iCPAN running
as well.
How did this break?
Things may have stayed reasonably on track, but an iOS update broke
iCPAN along the way. After many hours of debugging, I was just not able
to find the root of the issue, so I decided to rewrite iCPAN as a
Universal app (one with a native iPhone and iPad UI). I started working
on the iPad, but my personal resources were dwindling. The number of
developers working on iCPAN had been cut in half (from 2 to 1) and the
number of kids in our family had doubled (from 1 to 2). Now with a
newborn in the home, I didn't have the time or energy to finish off the
app. Any spare time I did have available was generally spent making some
small contributions to MetaCPAN where I could.
Any day now...
By July of 2011 things had settled a bit and I was back at it, spending
a lot of late nights finishing up the iPad UI. I was optimistic that
I'd be able to release iCPAN
soon.
However, as I soon discovered, the consistent late nights were quite
productive in the short term, but the sleep deficit over the long term
made me generally unproductive during the day. I eventually had to
concede that my brain doesn't function well on little sleep, so I gave
up a lot of the late nights and put iCPAN on the shelf. It was nice to
have my brain back.
A few months ago, I got the bug to finish things up. It had really been
bothering me that I had been telling people "this thing is almost
done" for so many months. I also saw the excellent CPAN
Sidekick
in the Android app store and I was starting to feel a bit embarrassed
about not having iCPAN working. Bad (but fair) reviews for iCPAN were
piling up. I buckled down and spent any available free time on getting
this done. It turned out to be vastly more work than I had anticipated
or budgeted, but I did get the app to a releasable state about 1 week
ago when I submitted it to the app store.
The Post-Mortem
I've learned a lot along the way. I've learned Objective-C, XCode,
Interface Builder and iTunes Connect. I've learned about managing certs
for releasing apps, how
to distribute an app via an Ad Hoc Distribution (TestFlightApp in my
case) and how to keep the iPhone and iPad UI in the same app while
making sure that the logic
uses shared classes. It has also made me appreciate Perl all that much,
in particular CPAN, Moose, DBIx::Class, built-in regex support and the
ability to express
so much in Perl with very little code. I've learned Apple's Core Data.
I know how to optimize an SQLite database with 80K rows in a table so
that it runs smoothly on a phone. (I could write an entire post on that
topic alone).
iCPAN 2.0.0 has just over 80,000 documents available, which is a huge
improvement over the previous version. It has been downloaded over 1,300
times in the last 1.5 years. If you do like it, please take a moment to
review it in the app store or watch it on
Github. If you don't like it, please
contact me or, even better, send me a pull request. :)
Comments#
Author: xiaoyafeng
Date: 05/24/2012 07:23:07 AM
interesting! ;)