Skip to main content


MapBox for iPad goes live

I'm extremely happy to announce that one of my favorite projects from 2010, MapBox for iPad, has gone live on Apple's App Store. Kudos to the team at Development Seed, with whom I worked on this project, for their creativity, flexibility, and enthusiasm throughout. While I'll post a bit here about what the app actually does, I'd like to really focus on the how of the app, as this process was pretty unique -- and fun. This may be of particular interest to developers, as open source use and release was a major part of the project.

If you want the executive summary of my work, the MapBox brand, and the actual app, read from here down to What the app is.

About collaboration with Development Seed

I've been familiar with Development Seed for quite a while. I first met Eric in mid-2005 and I did some systems work with them early in my freelancing career, thanks to Eric's flexibility and his approaching me (much to my surprise) upon my announcing that I was freelancing with "we should work together".

Eric and I have been talking for some time over the past year about doing some work together again and come mid-year, just such an opportunity arose.

What MapBox is

MapBox is Development Seed's trademarked brand of cloud-based geographic maps. Traditionally, they have been hosted on for use by client-side apps, similar to how one might use Google Maps in a project. Development Seed also created a great app called Maps on a Stick, a USB keychain app that can display maps and overlay data on Mac or Windows without network access.

Eric and I started pondering the possibilities of putting MapBox on the iPad for a number of reasons: first, of course the coolness factor and inherent low barrier to use of touch interfaces; second, the fact that such a powerful platform could operate "off of the grid", something that Development Seed is quite keen on; and third, as an exploration of open source on the closed, curated iOS ecosystem.

It became immediately clear that we would just need to get our hands dirty and start playing. But first...

What the app is

Some text from the official description:

Interact with highly custom maps and visualize your KML and GeoRSS data offline with MapBox for iPad. Maps and geo data are stored directly on your device, so you can use the application without an Internet connection.


This application is built upon open source tools. We used existing projects like route-me for the map view, and released new open source projects like SimpleKML for KML parsing.

MapBox is an approved software-as-a-service provider on All federal agencies can freely use maps from MapBox.

The basic gist is that MapBox operates independently of any mapping routines that Apple gives you in the iOS SDK. MapBox uses an open source library to display map tiles, a new and open format for bundling millions of tile images for portability and for use offline, a custom and soon-to-be-released interface to make the two work together, and open source technology for data visualization on top of the map tiles.

In short, we think MapBox is the dream of open mapping realized on Apple's iOS platform.

The challenge

The challenge in getting the word out about this app (which is free, by the way) is that unless you are a map geek, you might not find it particularly interesting or useful. That's ok. In many ways, MapBox is targeted towards map geeks -- people who actually deal in GeoRSS, KML, map tiles, geographic visualizations, and the like.

So, if you're left wondering what to do with the app, don't despair. We are hoping that like-minded map geeks use the ideas we've presented as a springboard for future development. In short, we're saying: Apple's MapKit isn't the only way.

We are hoping to see creative uses of the app as a platform, since you can create your own map tiles and data visualizations, save various views on them, and share images of them with others.

But at the very least, we've tried to open things like the MBTiles file format used by the app as a way to help and encourage others.

The process

This project was tackled very much as a research and development effort. I was basically tasked with joining "MapBox" and "iPad" and creating "awesome".

Early on, we had to determine if it was feasible to actually use Apple's MapKit with custom tiles. We realized pretty quickly that it was not, despite a somewhat misleading announcement by Apple in early 2009 that iOS 3.x would allow you to "bring your own maps". It turns out that this refers only to turn-by-turn directions with maps. If you want to use MapKit's libraries for displaying, overlaying, and querying maps with your own visuals, you are out of luck.

Once this was decided, we searched for what might be available for use elsewhere. Two possibilities came to light: CloudMade, a company specializing in mapping technology, and route-me, an open source library upon which CloudMade's tools are actually built. Based on the activity of the route-me project, the fact that it was truly open source and not reliant on builds from a third-party, and the fact that CloudMade featured functionality that we didn't really need (like geocoding and routing), we decided to go with route-me.

Using Development Seed's own Drupal-based OpenAtrium intranet solution and a shared video gallery, we quickly iterated on features, first coming up with the MBTiles format for storing and quickly transferring the tile images to the device (a problem when you're dealing with 1,000,000+ images on disk and transferring them by USB and network), interfacing that format with route-me, visualizing data like GeoRSS and KML on top of the maps (necessitating a new, open source library for parsing KML on iOS), saving state between launches as well as into a document format, exchanging data with other apps on the system and via iTunes, and then the app-specific features that really make these technologies feel like a cohesive unit.

We also explored a variety of features and technologies that didn't make it into the 1.0, particularly in the areas of inter-device communication, presentations, data sharing, and data creation. We hope to keep iterating on these in the future.

Later in the project, we started thinking specifically about a productization route for the technologies. Specifically, what is the least we can ship as a 1.0 to put a stake in the ground to move forward from? The project thusly moved from R&D into specific polish around the user experience, marketing, and future direction.

Apple just approved the @MapBox iPad app this morning! Scheduled to be live on the App Store on Wednesday January 5th for free download.

Shouts out

I also wanted to send a quick shout out to a couple developer friends whose code was very useful in this project: Jon Wight for his excellent and essential TouchXML and Gus Mueller for FMDB. Both libraries are integral to this project and without them, it would have required a lot more work.


All in all, MapBox has been a wild ride. It's rare to come across a project offering this much flexibility for creativity and exploration, not to mention fun. To top it off, Development Seed has allowed me to be very public about my work on the project, both during and after.

We'd love to get your feedback on the app as it is now, future ideas for it, related work, and creative uses for it. Get in touch!

You can see Development Seed's blog post on the release as well.

A look back at SecondConf

As a followup to my Looking forward to SecondConf post, I wanted to be sure to talk about the conference after the fact. In a word: fantastic. I hope to do it justice in this writeup. I haven't seen any comprehensive posts about it (but please feel free to comment if I've missed one) and I definitely think it's due one, so here goes...

Edit: I have posted my photos from the event as well.

Logistics & Kickoff

As a whole, the logistics of the conference seemed to go very smoothly. When I got there Friday night, I met up with my friend David LeBer and my roomie Jose Vazquez and after checking in at the hotel, headed to TechNexus to register. My friend Eric Sinclair was holding down the registration fort. We got settled in and shortly thereafter, head organizer David Kinney set us loose on dinner. Throughout the conference, the food quality and service was very good-to-excellent, particularly considering the buffet throughput and the size of the space. No problems there.

Once we finished dinner, David gave a brief welcome, thanking us for arriving and giving a brief background for anyone who wasn't familiar with the roots of SecondConf. Going into the conference, it was obvious that it was largely inspired by C4, so I was curious to see how much it called out C4 specifically. But once David's opening remarks were done, I don't recall another mention of C4. SecondConf had become its own thing.

David's explanation for the naming of SecondConf was twofold -- Chicago is the Second City, and SecondConf represented a second chance for an indie conference and a second chance for many people to attend one given C4's popularity, then demise.


Ben Gottlieb - Living the Indie Life for the Long Haul

I was curious right off the bat to see what kind of calibre of speaker SecondConf would hold for us. I knew roughly half of the slated speakers, but the conference's first, Ben Gottlieb, was known to me only in name (I've used his Twitter-OAuth-iPhone code on projects before). His talk immediately put my mind at ease, however.

Ben detailed his journey from Newton to Nokia, through Palm and Pocket PC, on to the present day on Android and the iOS platform. Ben's talk was the first of three during the weekend on "the indie life" (all of which turned out to offer unique insights, not overdoing the topic), and while I was expecting more of a talk on keeping at it on your own for a long stretch of time, it was more about a personal journey through technology and how the indie landscape has changed, mostly for the better.

Brad Larson - Realtime Camera Processing Using the GPU - (slides & blog post)

I was very much looking forward to Brad's talk as I'd met him at C4 before and he never fails to impress. As David mentioned in his introduction, Brad is one of those guys who's always working on something that turns out down the road to be the next new hotness once everyone else catches up.

Brad spoke about GPU-based processing on both the desktop and iOS. His main point was that the GPU can be used for some very fast math and that we should be making better use of it. Also, like me, Brad shares a love for the underdog in Apple's development suite, Quartz Composer. Brad highlighted QC as a prototyping tool for things like OpenCL, since you don't have to worry about all of the legwork for things like camera input, basic UI, and data exchange when you can quickly whip it up visually in QC.

Brad then proceeded to blow us all away with a demo of color detection and augmented reality in QC. Basically, he was able to wave around a yellow ball in front of his laptop's iSight camera and produce a video of a computer-drawn proxy object overlaid on top of the yellow ball. He demonstrated how GPU processing is up to the task of realtime video frame analysis and alteration in situations where normal CPUs would be likely to choke. All the while, he was explaining this in a way that made sense to me, where previous talks I've seen on augmented reality have left me scratching my head a bit.

If that wasn't enough, he proceeded to show how such technology could be ported to the iPhone, where QC isn't available. If this is your cup of tea, be sure to check out Brad's blog post on the topic.


After the talks, we all headed back to the hotel to hang at the ground floor pub, Elephant & Castle. I particularly enjoyed catching up my friends Phillip Bowden and Marko Karppinen and finally meeting in person Patrick Thomson, who I'd previously only known on Twitter.


Saturday kicked off back at TechNexus with some solid breakfast sandwiches and much-needed coffee before getting back into the talks.

Jose Vazquez - Going Indie (slides & audio)

My friend Jose was first up with the second talk of the conference on the indie lifestyle. While his was also a tale of a personal journey, I was definitely struck by the warmth and authenticity that he radiated.

Jose talked about making lots of mistakes, about the impact on his family, and about the trials and risks of working on technology without specific productization in mind. He said that he had spent a lot of time in Core Audio but in the end, didn't have a salable product and explained how that, mostly out of necessity, led to his app RetroSketch. This app was featured by Apple and Jose was pretty forthright with how this impacted his sales short- and long-term and quashed some common misconceptions about the latter.

Brian Fitzpatrick & Ben Collins-Sussman - How to Lose Friends and Alienate People (previous talk resources)

Brian and Ben, both of Google, gave an interesting talk on engineering leadership, which they prefer as an alternative to the dirty word management. Ben mentioned that they had given versions of this talk before (Google I/O, OSCON, etc.) but I still think it was a good fit for SecondConf. Brian talked about the Peter Principle -- that "you are promoted to your level of incompetence" -- the fact that in programming circles, once you're the company's best programmer, you tend to be promoted up to manager -- and promptly go from being the best programmer to the worst manager.

Ben and Brian talked about common leadership anti-patterns -- things like trying to be everyone's friend and treating your reports as children -- as well as approaches to good leadership. They had a neat grid diagram on the various permutations of self-directed, scattered, excited, and bored programmers and how to guide people into the ideal combinations of each.

I thought about the talk in the context of my own business and how I've had multiple opportunities to grow by bringing on more people besides myself, effectively going from programmer to leader. While it's still not right for me, the talk will continue to be a good resource for me whenever I come back to the topic and think it over some more in the future.

Anne Halsall - Flexible Content, Deliberate Design (slides)

First up after lunch was Anne and her excellent talk on content-driven apps. Anne is the UX lead at Inkling, which I've been meaning to read up more on since my friend Jon Wight went to work there.

Anne had an excellent analysis of content apps and the thing that really sticks in my mind is her enlightening quadrant chart on the cross between customizable, fixed, designed, and sparse. Those may not be the actual terms she used (in fact, I'm pretty sure "sparse" wasn't one of them) but the idea is that you've got apps that can have a spectrum of user customization ranging from not-at-all to fully-customizable as far as layout and inclusion or exclusion of features of content. At the same time, you've also got a spectrum in design ranging from a specific design sense (something like The New York Times) to something that's more of a generic container and doesn't carry a heavily-branded feel to it. These ranges were not good or bad, per se, but rather different ways of crafting the user experience when dealing with dynamic and changing content. I'd very much look forward to seeing Anne's slides again, so I'll be sure to update if and when I can get a hold of them.

Update: Here are Anne's slides in PDF form.

Gene Backlin - NeXT to X: A Trip Down Memory Lane

Gene was definitely the oldest speaker of the conference and I mention that primarily because his talk was specifically about the evolution from NeXT to Mac OS X as he saw it in his lifetime and career of consulting. It was really fascinating to hear from someone who lived all of these changes, some of which date back to a time before many in the audience had been born.

While I've seen the history of Interface Builder as it looked on NeXT twenty years ago, to see slide after slide of side-by-side comparison between outlets, the IB document window, inspectors, and actions one after another -- bam bam bam -- really drove the point home. It was simultaneously fascinating and scary to think how little the tools have changed in two decades of development.

I was particularly struck by Gene's mention that he started life in the 1950s, a time when ham radio was one of the best outlets for someone with a programmer's mindset to hack, and how he transitioned through the 1970s and 1980s into computers. He painted a great picture of just how much life had changed in those intervening years for someone like him.

Blitz Talks

Next up were the blitz talks, five-minute timed and automated presentations in the "lighting talk" style. I don't recall the exact order, but there were five talks.

Kevin Mitchell - Losing my Religion: A journey from Emacs to Vim (blog post & slides)

Kevin gave a talk on his transition from years of Emacs as a text editor to Vim. He had a good point in that people shouldn't be afraid to try new things, regardless of their unfamiliarity. And he got perhaps the greatest conference laugh ever when he featured a slide of himself next to Richard Stallman of GNU fame and declared that he was not Richard Stallman, despite the striking resemblance.

Bob Frank - OS License Bingo

Bob talked about the basic differences between the GPL and BSD-style software licenses and why you would want to use each. He sure crammed in a lot of info, and not in a bad way. At the very least, it was a great overview of how the styles differ and he made it pretty clear that BSD was likely preferred by Mac & iOS developers given the reuse flexibility.

Daniel Meeks - Applying Basic Financial Principles to Life

Daniel gave a heartwarming talk about applying basic financial principles like investment and "junk happens" to your non-financial life. I was especially fond of Daniel's idea to invest time in another person's life. Fantastic.

Chris Cieslak - Hacking The Apple TV

Chris put on a great talk about hacking the new Apple TV, kicking off a jailbreak session on a second computer at the same time his talk started (which, by the way, got cracked before the talk was over). Chris talked about the opportunities available for some fun hacking now that the Apple TV is iOS-based. Fun talk and some cool things to think about.

Bob Kressin - Creating iOS Accessories

I first heard of Bob's work at one of the C4's. Bob specializes in something I find to be black box voodoo -- hardware accessories. Specifically, Bob talked about getting into Apple's program to build dock connector hardware accessories and then subsequently prototyping the hardware (kind of backwards from software hacking, as he pointed out). Bob got a pretty rousing Q&A going since this was such a foreign concept to a lot of software folks. All in all, it was a great complement to the software focus of the conference up to that point.

Colin Barrett - How to (Not) Be an Indie Freelancer

After the blitz talks, the format switched back to long form talks, with my friend Colin giving the third talk on being an indie. At this point, broaching the topic yet again would get a chuckle out of the audience, but Colin definitely delivered a new and genuine take on the topic with something near and dear to my heart, freelancing, as opposed to primarily product-driven, indiehood.

After four years as a wholly indie freelancer myself, I found Colin's advice on balancing multiple clients, billing hours, and managing client relationships to be spot on. Colin's talk brought to mind Andy Finnell's talk a few C4s back, where it was an introduction to the freelancing lifestyle to an audience who mostly had probably been thinking about the product route.

Colin had a good Q&A afterwards, seeming to be driven by a number of people who probably hadn't considered freelancing before. All around, Colin's talk was a great addition to the conference.

Allan Evans - Scroll, Scroll, Scroll Your View

Speaking of good additions to the conference, Allan gave a very tech-focused talk specifically on iOS scrollviews. He showed off a technique he had to create for building a scrollview that changed orientation with the device orientation -- for example, changing from vertical scrolling to horizontal scrolling -- while potentially handling tens of thousands of subviews within memory constraints.

Allan built up the app in stages, showing each as a separate Xcode project and demonstrating how the control was built incrementally. I think Allan was worried about giving a boring talk given the relative quiet of the audience, but this was partly due to intent interest and partly due to being very near the end of a twelve-hour day in the same room -- and just before dinner. Allan did a great job and it was nice to see some pure tech in the mix.

Panel Discussion

SecondConf panel discussion

Following a filling dinner of on-site Gino's East deep dish pizza, all of the long-form speakers thus far, plus Chicago-local game developer Patrick McCarron and former Apple evangelist-turned-indie developer Matt Drance, were invited up for the panel discussion.

Personally, I was a little taken aback by the fact that David was only kicking the discussion off, but not really moderating during the panel. While it moved along ok, I was a little concerned that it would devolve into a free-for-all between the panel and the audience. Apparently this was kind of the idea, so once I realized this, it put my mind at ease. This is a less a criticism and just a comment.

One thing I was concerned with, however, is that once the topic of the Mac App Store was brought up, there would be no going back. This is such a hot topic that I feared the entire evening would become a forum on it once it started. I'll have to go into the Mac App Store in a future blog post (thankfully, probably shorter than this one), so I won't touch on it too much here. Once we did move on from the store, I had the chance to bring up the topic of what the panelists found inspiring or exciting in tech right now. I'm kind of sad that the panel wasn't recorded for non-attendees, only because I didn't take any notes during, so a lot of it has already left my mind. But all in all, it was an enjoyable couple hours -- for myself and, I take it, for others, as most everyone stayed well over the allotted time to participate before retiring to the pub for the evening.

All told, Saturday was a really packed day -- in a good way. We spent over twelve hours in the same room, feeding off of each others' energies and taking a lot in.


Sunday got off to a bit of a rocky start from a personal point of view. Let's just say that on Saturday night, fun was had. But after a solid breakfast and a welcome back by David, things got underway.

Chris Rojas - Physical Computing - Thinking Differently (slides)

Sunday's schedule got tossed around a bit as compared to what was on the SecondConf website, so Chris kicked things off. His original talk was called Building an iPhone-controlled Tank, but for whatever reason, he broadened it a bit with a really interesting talk on computing in the physical realm -- things like visual and auditory sensors, Arduino boards, projection mapping of visuals onto 3D surfaces, and some other realms of hardware hacking that I don't think about too often. Chris is a photographer (and by appearances, a damn good one) at a company called SparkFun Electronics, which just seems to do awesome stuff with cool gadgetry and then make the parts available widely. From their website:

SparkFun believes everyone should have the tools, hardware, and resources to play with cool electronic gadgetry. SparkFun's goal is to get our hands on current technology and information and pass it on to you - we want to share the love!

Chris' slides were excellent and I'm really looking forward to checking out some physical computing avenues. Chris made a point of encouraging us to think about things we already have in a hacking-oriented way -- for example, considering the flash on an iPhone 4 as a visual readout or Bluetooth chips as proximity sensors.

Brian Boyer - Why you should become a hacker journalist (blog post & slides)

Brian's was another talk that got its title changed, in this case from Principles of News App Development. Brian's talk really struck a chord with me. He talked about the work his team has been doing at the Chicago Tribune with open data visualizations and helping to solve social issues. While I've dabbled in open data a bit, Brian's challenge to us to think about hacking in a journalistic way really got me thinking. I've been recently thinking a lot about solving real problems with technology and not a) so-called First World Problems or b) nominal, abstract "good cause" type of tech. Perhaps I can flesh these thoughts out a bit in a future post. Suffice it to say, Brian left me with the gears turning.

As a general note, one thing that did jump out at me specifically in the context of SecondConf as a whole during Brian's talk was the fact that while he spoke mainly of web technologies and sites, there was no backchannel snark going on amongst a group of largely client-side developers and designers. The opposite has happened at prior C4 conferences and, while I'm also a web guy, I was worried it might happen during this talk. But attendees seemed genuinely receptive, which I found really refreshing. Major win!

Rana June Sobhany - How I Became The iPad DJ

Rana June Sobhany

I think there was a general meta-theme to Sunday at SecondConf, which was basically to mix up the preordained schedule as well as the talk names, all the while completely wowing us. Rana's original title was The Importance of Creativity in Business, but what she really talked about (with no slides but an incredibly commanding and energetic presence) was a brief background on how she got into a dual-iPad-plus-mixer setup as a live producer and her trials and tribulations working hard to learn a new craft. Besides overwhelming me with her amazing track record, Rana quickly established a rapport with us as she opened herself up and talked about the vulnerability one can feel when trying something new. She told us how almost immediately after starting in iPad DJing, when the craft was basically in the process of being born, she'd get comments like "You're the worst iPad DJ ever!", which got a chuckle. It seems that there is always someone who will tear you down, but that you should persevere.

Rana then proceeded to mention how she was going to perform a thirty-minute live set for us right then, taking a lot of us by surprise. What followed was a) one of the awesomest displays of live craft I've seen and b) the best conference closer, bar none, I've ever witnessed. I'll defer to Patrick Thomson in both the departments of "at least a generation younger than me" and "easily under 30" when I quote his tweet during Rana's set:

I am absolutely FLOORED by @ranajune's set and setup. This is the illest thing I have seen in a long time.

Really, I can't express enough how amazing a closer this was. The crowd was a mix of some folks sitting on the carpet in front of Rana, storytime-style, other folks following along with rapt attention at their seats, and still others getting into a major coding groove and getting some serious work done to Rana's soundtrack. At various points, Rana would shout over the music, telling about how she was using her iPad-based tools, and at others, she would turn back to focus on particularly intense transitions. Rana's set gave out so much positive energy at the close of an overwhelmingly positive weekend.


If at all possible, I'll absolutely be attending a future SecondConf. I hope that it went well financially for David and the other organizers and that it's a sustainable event. As I mentioned, there were about sixty attendees, which allowed for a good group diversity, but also at times, an intimate setting for discussion and learning. Between the amazing speakers, a solid venue with good food brought in, bright and energetic attendees, and a pleasantly crammed schedule, SecondConf was a huge win in my book.

Looking forward to SecondConf

I'm very much looking forward to attending the first instance of SecondConf in a few weeks, a self-proclaimed "three-day, Chicago-style, single-track conference". While it's obvious that SecondConf is inspired by, and meaning to continue in the tradition of, the now-defunct C4 conference, I'm looking forward to it on its own merits.

C4 was a pivotal institution for me, as I attended the first iteration in 2006 and, two weeks later, quit my job and struck out on my own. This was largely inspired by the people I met at C4, now-friends who were a lot like me and doing what I wanted to do -- work on their own. While I can't praise Wolf enough for assembling such an awesome slate of sessions, the most value for me came from the self-selecting attendee list for C4. I went back for three more years as a way to see and hang out with some of the best Cocoa developers in the world.

The reasons I'm going to SecondConf are threefold: first, this continued face-to-face interaction with many from the Apple development arena; second, to support this nascent conference; and third, because I just plain like going to Chicago in the fall to hang out with Cocoa devs. Old habits die hard, I guess!

Much like Wolf, I still have hesitations about Apple's direction. You may have noticed the conspicuous absence of my own iPhone and iPad apps in the App Store. While I do work on a lot of iOS projects with clients, I choose to stay in the technology space out of a desire to improve my Cocoa programming capabilities most of all and not out of any love for Apple's policies on the actual commercial side of the App Store. So while I fully understand the reasons for the demise of C4, I was ready to accept it as a passing thing. I'm ready to give SecondConf a chance, however, in the same space and see what it's got for us.

Are you going to SecondConf? Leave a comment if you'd like and maybe we can meet up! See you in Chicago!

Making KML Simple For The iPad

I've been involved this summer in some exciting work with Development Seed on bringing their mapping technologies to the iPad. This has included their gorgeous MapBox tile sets, but also third-party data from the internet in the form of KML and GeoRSS. These are each file formats for exchanging geographic information along with content.

GeoRSS is pretty straightforward -- it's basically regular RSS but with a small amount of geographic information added in the form of extra tags such as <georss:point>. KML, however, is a completely different sort of format, written from the ground up for geographic data. It's probably most commonly known as the format that Google Earth uses to exchange geo info. Beyond Google Earth, it has been used in some exciting applications, from Development Seed's own Maps on a Stick tool to The Jane Goodall Institute's Gombe Chimpanzee Blog, which attaches KML data to every blog entry as a way to give it context and to allow the reader to explore the story a bit more.

Once I got started on the iPad work, however, I noticed that there basically was no parsing library for KML on Apple's iOS platform -- iPhones and iPads. Google puts the definitive library, libkml. It's written in C++ (a minor setback) but it also depends on libexpat, something that exists on Mac OS X but not on iOS.

That aside, I thought that it would also be nice to have a Cocoa-native KML parsing library, something that speaks in native Objective-C types like UIImage for icons and UIColor for colors without the need for conversion. So I wrote one!

This library, Simple KML, is now available as open source under the New BSD License, licensed jointly by Development Seed and Code Sorcery Workshop. You can find a basic usage overview in the features summary.

While Simple KML does make KML very simple to parse, it does not do any drawing for you. It's important to note that you will have to take the placemarks, styles, and structures in the KML documents that you wish to display and write your own drawing to display them. This could be on Apple's MapKit mapping library built into the SDK, external mapping libraries, or perhaps your own drawing on static map images. Simple KML just makes it easy to turn a KML file or a KMZ archive into data structures native to Cocoa for use in your own graphics work.

Since Simple KML is open source, I'd love to have any feedback or contributions that you might have to offer. Simple KML is up on GitHub, allowing anyone to create a free account, fork the project, and send me patches via merge requests.

(Cross-posted on the Development Seed blog)

Help for Haiti: Indie Relief

In the event that you haven't already seen the banner on my site or heard about Indie Relief through other channels, I wanted to put up a post to get the word out. Fellow Cocoa dev Justin Williams had the idea last week to put together a one-day event amongst Mac and iPhone developers to donate a day's sales to organizations doing work in response to the devastating earthquake earlier this month in Haiti.

I'm happy to report that Code Sorcery Workshop will be participating. One-hundred percent of the sales tomorrow for Pukka and Meerkat will be going to Portland-based Mercy Corps. Here's what Mercy Corps is doing in Haiti.

Over 150 developers have signed on to this event, so I hope that you'll check it out and consider buying some software to support these causes helping with this terrible tragedy.

Followup: Justin Williams reports that Indie Relief raised over $140,000 yesterday. Amazing. Read more here. A big thank you to everyone who chipped in!

The Apple Tablet: Timing Isn't Everything

Photo courtesy Mike McCaffrey

Although I've been involved in technical pursuits for about a decade and a half, I haven't really been following Apple that long, rather only after being completely won over by my first Mac, a PowerBook G4, in late 2002. Since then, I've not only converted my entire hardware platform to Apple's, but now develop software and support hardware across a range of Apple devices and operating systems.

This goes without saying for the Apple faithful, but the reason I switched was not a fashion or perceived "coolness" factor, and especially not out of cost concerns, but rather because in a day and age when increasingly nearly everything we create and manage is converging to the digital form, Apple has the foresight and user experience savvy to make it far less of a hassle than it could be, and indeed, than pretty much everyone else in the industry. (Related: Watch The Onion's Sony Releases New Stupid Piece Of Shit That Doesn't Fucking Work.)

I mention all of this as a bit of background for my thinking on the topic of the tablet. The lion's share of my livelihood is made in the Apple ecosystem, but, as again should be no surprise to the Apple faithful, I'd rather not work in technology than have to use the crap the rest of the industry is churning out lately.

Those disclosures aside...

With the conventional "wisdom" that Apple's lack of presence in the netbook market was hurting them financially now being replaced by an unprecedented stock run-up in response to the latest round of tablet rumors, it seems all the world is now awaiting Apple's announcement of a new platform -- the new platform.

Speculation on the tablet really picked up late last summer in advance of Apple's September iPod event which turned out, unsurprisingly, to have to do with new iPods.

Then late in the year, only a few weeks ago, things climbed to a fever pitch. People love their Macs, they love their iPods, and they love their iPhones. They want to know what the next great thing is that they are going to love, because in a world of crappy technology, people love to love good technology.

But that doesn't necessarily mean that Apple's next game-changing product announcement is going to happen at the next opportunity that they have to announce something.

There are two things that we should be learning from the cycles that Apple continually operates on.

Truth #1: Apple Takes Big Risks Because True Innovation And Risk Go Hand In Hand

Apple is pretty much the de facto innovator in the industry now. It's Apple's job to figure out what to do next, figure out how to accomplish it, and help people evaluate whether it's someplace that they want to go (though, unsurprisingly, they tend to lean hard on "yes, it is").

No one's working harder on an iPhone killer than the makers of the iPhone. (And while we're dispelling myths, we might as well tackle the fact that no one needs to kill the iPhone to prosper. Lack of competition is bad for consumers, ok?)

But you can bet the tablet will exemplify Apple's modus operandi -- to truly reinvent. Other companies are hesitant or unwilling to do this for all of the standard reasons -- it's too costly, too risky, too hard to manage, requires the best people, and requires a strong-arm approach to both secrecy and hardware component vendor relationships.

Truth #2: One Plus One Does Not Equal Two

The second thing we should be picking up is that because of the lengths to which Apple is willing to go to reinvent, the armchair pundit is usually at a loss when trying to map this near future.

When the iPod is an unprecedented success and rumors of an Apple entry into the cell phone market bubble up, concept illustrations emerge of a phone with a scroll wheel. Touch-screen? Never saw it coming.

When the iPhone 3G is an unprecedented success, yet not quite everyone has one, it is assumed that Apple's next generation of the device (what turned out to be the 3GS) would have to be in the sub-$100 range. Apple both released a new and desirable next generation model, as well as appeased the $99 crowd with a base model of the previous generation, growing their reach.

And as e-book readers really start to take off, of course Apple's tablet will subsume these features as well:

It is still unclear exactly what an Apple tablet would include, but most observers expect a sort of large-scale iPhone that has additional features for viewing video and reading books and magazines.

Financial Times

Yes, because what people want is a bundle of features with an Apple logo on it. Tell me again, what are the features of your iPhone? Now, tell me what apps you use.

And lastly: iPhone's a hit, Magic Mouse is a hit, so I give you a Magic Mouse-like iPhone:

He said the plastic back panel of the phone could have a touch-sensitive solid shell, much like on the Magic Mouse.


The new hardware could also include an updated version of the iPhone operating system, Chen said.


Some imagination please, people? And it could include an updated version of the iPhone operating system? You, sir, are why we can't have nice things.

The Thing About The "Latest Creation"

Apple's next media event has been announced, confirming the January 27 rumors seen in the past couple weeks.

But the invitation image, which is what got me really thinking about all of this tablet stuff to the extent of needing to write a blog post, combined with the two points above about the way that Apple innovates, lead me to a prediction:

The so-called tablet device in progress by Apple will not be announced at the January 27 media event.

The idea of "creation", something that the industry as a whole frequently puts out of the spotlight to play second fiddle to "management", is to be applauded. We need more companies embracing Apple's vision of a creator in the digital space and less of a consumer and manager of the stuff that is already out there.

And the image of paint splatters, colorful and very tactile, is evocative of using your hands on a canvas. Much like the more evolutionarily-programmed need and desire to see human faces in inanimate objects, we want to see this relate to the tablet, which we want to see be a natural extension of a touch-based interface like the iPhone.

The iPod revitalized and then redefined the digital music industry. The iPhone really just redefined communication on the go (How often are you annoyed to receive an actual phone call while doing something else on your iPhone?)

But the world isn't hooked into visual, even tactilely visual, creation in the same way that we are hooked into music and communication. And I don't see Apple taking us there -- at least not as a next step.

Another interpretation of the paint-and-creation motif (props to Brandon Sneed for this one) is to supplant the iPod. The bright colors represent the brightly colored iPods of yore. Anyone can see that the scroll-wheel iPod is being phased out -- face it, anything that Apple brands as "Classic" is on its way out.

My money's on something non-tablet in the announcement, more along the lines of a more-than-iPod-but-less-than-iPhone device.

But about the only thing that we can be sure of is that Apple's stock is going to go down next week due to the rampant bursting of bubbles.

So now what, Tough Guy?

So what is coming out next week? If I knew that, I'd probably be writing for bigger and better publications than my own blog (or possibly getting a cease-and-desist nastygram from Apple). I don't put the time into obtaining and cultivating original sources, something that tech punditry needs more of, and something that true indie journalists such as John Gruber of Daring Fireball do. So I'm basing this speculation on my own understanding of the past combined with references from publications that I do trust who have sources on the ground.

But remember -- there's a lot of Apple technology that has yet to see the light of day. Like this 2006, pre-iPhone touch-screen patent filing involving touch-based proximity:

The September 30, 2005 filing (published today) is titled "Proximity detector in handheld device." It describes a touch-screen interface for portable electronics devices that can sense when an object, such as a person's finger, is approaching. When an object is sensed, the touch-screen interface may perform an action such as displaying a "virtual scroll wheel," navigation pad or virtual keypad.


Not just touch, like the iPhone interface, and not just proximity, like the auto-dim when putting the iPhone to your ear, but an interface that changes based on your finger's proximity.

Just one of many Apple multitouch patents.

And just one of many things to keep us watching, to be sure. See you next Wednesday.

Meerkat 1.5: Great SSH Tunneling Gets Even Better

I'm please to announce the immediate availability of Meerkat 1.5! The best Meerkat release yet, Meerkat 1.5 features a number of under-the-hood improvements, as well as a complete visual overhaul in the user interface. I'd like to take a moment to highlight some of the most useful changes.

At the top of the list is a long-requested feature: automatic retry of tunnels. While Meerkat already automatically reconnects tunnels when you change networks, sleep and wake your Mac, or have an interruption in connectivity, now Meerkat takes this a step further. A tunnel is retried at increasing intervals, so a minor network hiccup won't require your attention if the tunnel can't connect on the first try. In fact, if you eventually get an internet connection and if the server is up, you should likely never see the error dialog again. Meerkat works tirelessly behind the scenes to keep your tunnels up and running. What's more, a quick glance at either the main window or the menu bar will let you know if Meerkat is working on getting a tunnel back online.

Automatic Retry In Action
(click to enlarge)

Another solid improvement in Meerkat 1.5 is much better error reporting when there is an immediate connection problem. If your server is down, you forgot to turn SSH back on, or there is a password problem, Meerkat will tell you exactly where SSH is having the problem. And if a password no longer works, Meerkat will automatically remove it from your keychain so that you can be prompted for the new one, optionally saving it back into the keychain for future use. Combined with Meerkat's existing strengths in allowing you to choose which passwords stay in the keychain and which exist only in your head, as well as effortless SSH agent integration, all of your authentication needs should be covered.

Most visibly, Meerkat 1.5 has been given a big facelift. Each element of the main user interface was scrutinized, tiny tweaks were made here and there, and we think the results speak for themselves. There is a more pleasing balance to the main window while providing a bit more info.

Old Main Window
(click to enlarge)

New Main Window
(click to enlarge)

A more dramatic change is seen in the tunnel editing. What was once one panel with a disclosure view for advanced options is now two tabs, again lending a more balanced look while being clearer to read at a glance and more pleasing to the eye.

Old Tunnel Edit
(click to enlarge)

New Tunnel Edit - Basic
(click to enlarge)

New Tunnel Edit - Advanced
(click to enlarge)

There are many other niceties to be found under the hood of Meerkat 1.5. We've put a lot of work into both requested features as well as unrequested tweaks that we feel are big improvements. In addition, Meerkat's product page features a slew of short, one-minute screencasts highlighting Meerkat's main features. And as always, Meerkat features a 14-day unrestricted trial, so why not download Meerkat now?

As a final note, I just wanted to say thanks to both our software customers as well as our clients. Code Sorcery Workshop has recently celebrated three years as a business. Every day is still new and exciting and better than the last. I look forward to another three years -- and beyond -- providing software and services to people around the world. Thank you.

Pukka 1.8.3: bug fixes & OAuth status update

Just a quick note about a bug fix and performance enhancement release for Pukka. Version 1.8.3 is available on the product page. The most noticeable change is slightly better performance (or, if you have thousands and thousands of bookmarks, perhaps much better performance) when selecting a bookmark search result and viewing it in your browser.

Also in this build, there is a warning if you try to head to the Delicious site to create a new account. This is because as of last month, Delicious accounts are now linked with Yahoo! IDs. While this could be convenient, for the time being, it does not work with third-party applications as private bookmarks are unavailable and as of our testing, older Delicious accounts that have been merged with Yahoo! IDs do not work with this new authentication mechanism.

For the time being, then, it is recommended that you do not merge existing Delicious accounts with Yahoo! IDs. Pukka should continue to work in this manner.

For more information and to follow the progress on this issue, please see Pukka's support forums:

I'll be sure to keep that post updated as either Yahoo!'s policies and systems or Pukka's capabilities change.

Autumn miscellany

There have been a number of things I've been mulling over posting about recently, but none have quite percolated up to a full post yet, so I'll instead post about a number of goings-on of note to me, my apps, and some other current work. Read on for a dose of Code Sorcery Workshop updates!

iPhone work

I've recently completed work with the local Portland powerhouse Small Society on two different iPhone apps. Check out the two most recent projects listed on their site -- one for a large coffee retailer and one for a nationwide car-sharing company. I've really enjoyed working with the Small Society team on these projects!

Regarding my own iPhone apps, I'm still in a wait-and-see mode, much like a number of solo developers. Mostly it's an issue of the difficulty of solo developers being able to sustain revenue in a market that's currently driven downwards in price. I may post more on it in the future, but in the meantime, feel free to weigh in on whether you'd like to see iPhone apps to complement my current Mac offerings.

C4[3] conference

The weekend before last I was lucky enough to once again attend C4, the independent Mac & iPhone developer conference. I've now been to all four, and the first one nearly three years ago was the major impetus for me striking out on my own and making Code Sorcery Workshop my full-time job. Once again, I had a great time learning, meeting new people (and meeting in person people I already knew online), and seeing a bit of Chicago. C4 can't be beat!

Welcome back, Ma.gnolia -- err, Gnolia!

The innovative social bookmarking service Ma.gnolia has been relaunched after their major incident earlier this year, and has been rebranded as Gnolia. This service will once again work with Pukka, just as before. Welcome back and best of luck!

Meerkat beta

Lastly, I've just released a public beta of the next release of Meerkat. The headline feature will be much more robust automatic reconnection of tunnels, adding to the existing support for reconnect due to sleep, wake, and network change. If this is a feature you've been waiting for (and it sounds like quite a few folks have been), go ahead and check it out. Just be sure to backup your data first, as this is a testing release!

That's all from the home office for now. Thanks for reading!

Pukka 1.8.2 & Meerkat 1.2.2

I've just released two updates: Pukka 1.8.2 and Meerkat 1.2.2. Both feature official support for Mac OS X 10.4 through 10.6. In addition, both include new features and both include some minor bug fixes.

You can grab Pukka and Meerkat in their usual places, or you can update within the respective applications via the app menu > Check For Updates... item.

Below are summaries of the changes.


New Features

  • Mac OS X 10.6 Snow Leopard support. Pukka now supports 10.4 through 10.6. Please see our blog post regarding future support of 10.4.
  • Search menu is now horizontally resizable from a minimum of the default width to a maximum of half of the screen width.
  • Added a new preference to sort search results by visit count.
  • Posted-to account has been added to the search tooltips.

Bug Fixes

  • Fixed a bug where the account selection popup could sometimes change inadvertently.
  • Fixed a window resize bug that affected progress spinner placement.
  • Search bar now remains unloaded into memory until first used.
  • Search bar now auto-places to the right if screen size demands it.
  • Search bar now auto-places properly after monitor & resolution changes.
  • Search result selection should reset on new search results.
  • When a caching error occurs, dismissing the error dialog with the "Ignore For Now" button will ignore further errors until the preferences have been edited, including across app relaunches.

And Meerkat:

New Features

  • Mac OS X 10.6 Snow Leopard support. Meerkat now supports 10.4 through 10.6. Please see our blog post regarding future support of 10.4.
  • Any tunnels that are active at app quit are re-activated on next launch if launch happens within a minute or so.
  • The command-line tool now accepts tunnel name substrings. For example, meerkat myServer up will activate every tunnel whose name contains myServer.

Bug Fixes

  • Fixed some data storage issues that could cause error messages when saving or deleting several tunnels in a single run of the app.
  • SSH ControlMaster support is now disabled for all tunnels. In current versions of OpenSSH, ControlMaster does not work with tunnels.

Enjoy, and please don't hesitate to post any comments, problems, or suggestions to the forums!

Syndicate content