 
iCPAN - CPAN on your iPhone
Mark Jubenville and Olaf Alders
 
What is iCPAN?
- CPAN for offline browsing
- Based on minicpan
- 8,174 authors
- 56,483 modules
- POD Generation and Database Population in Perl
- Syntax highlighting via Pygments (Python)
- Implementation in Objective-C
- Database abstraction via Apple's Core Data
 
Motivation
- We wanted a system that can be used without any kind of Internet access
- Ideal for use on subway, airplane, in a canoe, etc
- Nothing similar was already available in the App Store
- Was a good opportunity to learn Objective-C and Xcode
 
Learning Objective-C
- Objective-C is not Perl
- Descriptive to the point of extreme verbosity
- Like the following examples:
 
Find and Replace
    $filename =~ s{::}{-}g;
    vs.
    fileName = [fileName stringByReplacingOccurrencesOfString:@"::" withString:@"-"];
 
String Concatenation
    $filename .= '.html';
    
    vs.
    
    fileName = [fileName stringByAppendingString:@".html"];
 
File Exists?
    if ( -e $file_path ) { }
   
    vs.
    
    if ( [[NSFileManager defaultManager] fileExistsAtPath:filePath] ) { }
 
What's Missing?
    - Speed of searching on iPhone hardware vs simulator
- Version numbers in HTML
- Gravatar support
- Web view progress indicator
- Author tab
- Author search
- Full text search
- iPad support