Skip to main content



Posted in

It is with heavy heart that I noticed tonight the tweeting earlier in the day by the excellent Pinboard about the end of life of Pukka, my first commercial app.

R.I.P. Pukka. Sic transit gloria appi.

Translated roughly based on a Latin phrase it means "Thus passes the glory of the app" or "Apps are fleeting."

I removed both Pukka and my other app, Meerkat, from sale earlier this summer following a lot of thought and the realization that I just don't have it in me to work on them anymore. My initial intention back when I joined Development Seed to work on MapBox about a year and a half ago was to continue a conservative pace of development for both apps. It's not that I don't have plans and hopes and dreams for them. Far from it. My internal issue trackers show nearly 60 open tickets for Pukka and over 70 for Meerkat, both largely features and enhancement ideas. And I certainly have a soft spot for both apps; especially Pukka. Indulge me for a moment while I turn back the pages of time...


Back in 2004, I had been running Mac OS X for a couple years, largely using it as a development platform for my web and systems administration work. I had just started commuting nearly four hours a day, every other day, into Washington, DC for a new job, a wonderful hive of startup activity where it was mandated that everyone work on a Mac. This was a dream come true for me. It was about this time, eight years ago this month, that I blogged at the company about my switch to the Mac.

For someone who does a lot of technical work such as systems administration, programming, web development, and even the occasional computer audio and video work, it was a big change. But it was undoubtedly a step in the right direction. Just the fact that I can mark the exact day, two years later, should say something about its impact on my life.

It was also about this time that I began teaching myself Cocoa development, and indeed low-level programming as a whole, while riding the commuter train up to DC in the wee hours of the morning. I spent many an hour learning the ins and outs of Xcode 1.something, and I particularly remember some all-out brawls with NSTableView and friends.

Time went on and in early 2006, a couple of my coworkers had a need for a program that could post to (as it was spelled at the time, before Yahoo! started gutting it) with the ability to use multiple accounts. Thus Pukka was born, and I blogged the release shortly thereafter.

My first app is called Pukka and is a posting client. I wrote it after someone at work mentioned that there weren't any good multi-account clients. The more I thought about it, the more I realized that there are no speedy clients with low overhead that stay out of the way, either.

What followed was a whirlwind of events that, although relatively small in scale, changed the course of my life considerably.

The pace quickens

I went to South by Southwest Interactive that Spring for the first of what would be five years in a row, meeting Ted Rheingold of Dogster, among others, who loved my guerilla marketing tactics. I talked to a ton of people about the app who all seemed enthused about it and began beta testing for me.

My coworkers began using and recommending the app. I started charging for it and after my friend Rich Orris nearly immediately bought a copy, other orders started trickling in.

Shortly afterward, Brent Simmons of NetNewsWire fame, one of my Mac programmer heroes, emailed me out of the blue telling me that he was adding support for Pukka to his (incredibly popular) app.

I have a bit of interesting news I wanted to run by you... but I need it to be confidential. Agreed?

And later:

I hope you like this! (Pukka has hit the big time! ;)

I started to meet other folks in the Cocoa community, eventually attending the first C4, meeting a bunch of great folks like Daniel Jalkut and Colin Barrett who helped me realize that I could make a go of my own business.

A few weeks later, I quit my job and struck out on my own, in November of 2006, starting a business of selling Pukka and performing consulting and freelancing services. I started picking up great clients, including Matt Henderson of Makalu, whose firm I'd actually already admired from afar. Matt reached out in a random email due to my blogging of a local presentation I had done in DC and I began doing work for him. Within a year I too had moved to the Mediterranean coast of Spain to work out of their office on their projects, plus continuing my own, fulfilling a dream of living overseas. I launched Meerkat there that summer, late one evening before walking home along the sea to excitedly tell my wife Michelle that I'd finally made App Number Two. Sales of Meerkat began to take hold pretty quickly, too.

I moved back to the States, then to the West Coast, and the iPhone SDK hit. I already had four years of Cocoa programming experience at that point and hit the ground running with my freelancing services, working on apps used by millions of people worldwide with my friends at Small Society and with other clients.

Eventually, even Pukka got some wide exposure, as Leo Laporte featured it on his MacBreak Weekly show with thousands of listeners. And that same month, I started supporting Pinboard.

I gave money to charity and ran contests for customers based on my earnings from my apps, which was incredibly rewarding.

And eventually I found my way back to reconnecting with some friends in DC to end up leaving the job I thought I never would leave to work for a place doing stuff in a way that was cooler than I thought was possible.

The future

Through all of this, I kept at work on both apps, not at a fast pace, but at a decent, sustainable one. But you will recall that I am a self-taught programmer, and my Cocoa-fu in the early days was not good. The apps were sustainable, but there is enough cruft and need for refactoring (and in some cases, a need for just plain good programming practice) that in reviewing things recently, I reached three conclusions:

  1. Both apps need major refactors to lay a proper foundation for any reasonable development pace.
  2. Those needs are enough to discourage me from open sourcing or selling the apps, mostly out of embarrassment.
  3. All of this exists outside of the landscape of Mac software development that exists now (namely, the App Store).

Look, I understand that we all learn over time and get better. But through sheer force of will and the copious amounts of self-budgeted time that working for myself allowed, I was able to make decent apps enjoyed by thousands of customers while being at odds with some very fundamental programming practices. But those codebases are crufty enough now that a clean break needs to be made and I'd rather just shelve them. They've had a good run, I've learned loads about proper development practices in the meantime (having worked on many medium- to large-scale apps), and I've become a better programmer who now develops for other developers. I've still got my doubts, but all of my code is out there for people to see these days, so I feel that I've reached another level. And certainly if, at some point in the future, I decide to develop apps again, I will take into account some exit plan options right from the start.

But where does this leave things today?

The details

As mentioned on the product pages, both apps have been removed from sale. Perhaps unsurprisingly, since my rate of update to the apps declined pretty sharply following my change of job, the rate of sales declined similarly. However, if anyone feels that they did not get their money's worth from a more recent purchase, please do get in touch and I will get you a refund, no questions asked. While I understand some disappointment over not having these particular apps in some cases, I'd rather you have your money back to possibly purchase an alternative product that meets your needs.


Thanks for reading this far. This may be the last blog post here, as I'm also no longer active in consulting services since joining Development Seed, but who knows -- Code Sorcery Workshop may rise again some day in the future. Someday I may even find the time and passion to refactor these apps and give them a new lease on life. You never really know where life will take you.

It's been a great run, it has changed my life considerably, and I've met so many great people, customers and friends alike, through my work here.

Sic transit gloria mundi

And thank you, my loyal customers, these past six years.

Pukka's reaching out

Just a note about a couple recent developments with Pukka and other services on the web.

First, I'm happy to announce that Pukka has been successfully supporting Pinboard for some time now. You can see the development of this on the support forum topic. Pinboard is a relatively new service which out of the gate has done a lot of things right. I believe it is run by former Yahoo! employees and they have used their experience with Delicious to rethink social bookmarking. They've been innovating at a fast pace, all the while blogging about their work. It's really refreshing to see rapid, iterative development in the social bookmarking space. They are paying attention to things that matter to today's bookmarkers -- services like Twitter, Instapaper, and Read It Later, dead link detection and bookmark archiving, mobile browsing, Google Reader support, and much more. Not to mention assurance of data integrity and scalability! Keep up the good work, Pinboard!

Second, I wanted to point out another innovative application called Quix. Quix is a bookmarklet that integrates features of many other bookmarklets. For example, you can use Quix's single bookmarklet in your browser as a way to work with Facebook, Delicious, Wikipedia, and Google, as well as a host of Mac applications such as MarsEdit, CSSEdit, ShoveBox, and of course, Pukka. You can check out the full list of services or have a look at a recent TUAW article about Quix, which specifically calls out Pukka.

Lastly, Pukka was recently again featured on MacBreak Weekly, a popular podcast by Leo Laporte, Merlin Mann and others. Pukka was first mentioned on the show about two years ago, when I was dismayed to hear Leo say that he didn't feel that Pukka should cost money. I'm glad to see that Leo has changed his tune in the latest show as he calls Pukka "spectacular" and "worth $17 to me". If you'd like to have a listen, download the episode and forward to about 1:25 in, pretty close to the end. Pukka is also featured prominently in the video version of the podcast as well.

Leo Laporte's web browser
(click to enlarge)

All in all, Pukka's been pretty busy lately. I'm glad to see it getting some press. As always, if there's something you'd like to see Pukka work with better, stop over on the forums and have your say.

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!

Tiger, Leopard, and Snow Leopard

With the imminent release of Apple's Mac OS X 10.6 Snow Leopard next month, it comes time to examine the state of our apps as well as their operating system support. Pukka was originally released in early 2006, in the time of 10.4 Tiger (and updated to support 10.5 Leopard in late 2007). Meerkat was originally released in mid-2008, supporting both Leopard and Tiger out of the gate.

We've made the choice so far to sacrifice many (but not all) advantages offered by Leopard in the name of Tiger support. However, with Snow Leopard's upcoming release, we will be shifting to support only Leopard and Snow Leopard going forward.

Beginning with the next major releases of both Pukka and Meerkat (likely 1.9 and 1.3, respectively), we will no longer be including support for Mac OS X 10.4 Tiger.

Current release versions will be supported for Tiger users, but little or no new functionality will be added going forward.

PowerPC architecture will still be supported, though of course Snow Leopard will run only on Intel-based Macintoshes.

Snow Leopard support is expected in the next point release of each application (e.g., Pukka 1.8.2 and Meerkat 1.2.2). We expect to have each of these released in the next month.

We would love to continue Tiger support indefinitely, but as the operating system was released in 2005, we would rather move ahead and take advantage of the new technologies that Apple is providing to developers in order to create the best possible experience for the broadest user base.

If you have any questions or comments about this announcement, please contribute to the forum post on the topic.

Update: Please see the Pukka and Meerkat forums for the latest betas of each, which work with Snow Leopard right now.

Update 2: Official, stable releases of both apps are now up. Please see the announcement.

Pukka 1.8: now with search!

I'm pleased to announce a major release to Pukka, our flagship Delicious bookmarking application. Among many user experience improvements, the major new features are fast bookmark search and full AppleScript access to all of your bookmarks.

Search is something I've been wanting to do for a long time. But Pukka is such a lightweight app that I thought long and hard about how to best introduce the feature while keeping Pukka seeming fast and unobtrusive as people have come to expect. The easy route would have been another window or sidebar, but I feel that the new search bar really keeps the application tight and focused. As one beta tester said, "The response and animation on the search menu is very slick. It feels very light and nimble. Well done."


Pukka's other main new feature is especially useful for developers -- full AppleScript access to bookmarks. Pukka has long since supported posting through AppleScript, which has spawned all kinds of neat workflows such as Yojimbo integration.

But now, any developer can integrate Pukka into their application. You can rely on Pukka having all the bookmarks ready and can query them by a word in any of the fields, by their tags, or by their accounts.

To round out the new features, you can now drag and drop to reorder your accounts, allowing you to setup a preferred account for when Pukka launches. I've added a Quick Reference Guide diagramming out all of Pukka's major knobs and buttons, menu items, and keyboard shortcuts. And the main window is now resizable, autoflowing your tags and description as necessary for the smoothest look and minimal space.

Lastly, on the technical front, this release takes a couple of steps forward, too. Sparkle has been upgraded to 1.5, allowing for more secure upgrades and better collection of anonymous statistics so that I best know which platforms and features to support. And Pukka is now code signed so that you can be sure that what you download is exactly what I intended for you to run.

I hope you enjoy these updates to Pukka. I've got many more planned additions up my sleeve, so stay tuned!

Scripting allows for the unanticipated

Even though AppleScript itself might not be my favorite language, the ability to script applications on the Mac never ceases to impress me. By opening up their apps to scripting, developers allow users to do all kinds of things that either wouldn't otherwise be possible, or, better yet, that enable workflows tailored to their own needs and styles of application use.

A great example of this is my own personal use of Potion Factory's excellent task management app, The Hit List. Upon reading over the feature list soon after starting to use it, I discovered that you can drag web URLs out of your browser onto THL's app icon in the dock to create a new todo item to read the link in question.

I tend to queue up a lot of web reading for later, so I wondered if it would be possible to reduce the amount of work required to a single keystroke. My solution consists of three main pieces:

  1. The scriptability of both Safari (my preferred browser) and THL.
  2. Red Sweater Software's excellent FastScripts application, which allows for assigning keystrokes to scripts.
  3. The command-line utility growlnotify, which comes with the desktop notification system Growl.

I was able to combine the three so that by hitting Command-Option-Control-I, the current Safari URL is sent to THL as a new todo in the inbox, posting a Growl notification with the page title to confirm that things went ok.

Click to enlarge screenshot

You can download the script here. Just put it someplace that FastScripts can get to, such as in ~/Library/Scripts, and assign a keystroke to the script in that application's preferences.

My Delicious bookmarking application, Pukka, enjoys a fair amount of AppleScript popularity for integrating with organizational apps such as Yojimbo and DevonThink and I'm hoping that the next release of Meerkat, which adds AppleScript support to that app as well, will fare similarly as it too can be a workflow-oriented application. The lesson of scriptability is one that I have taken to heart and I hope to maintain a high level of scripting support in all of my current and future applications.

Pukka And The Best Of Times

When I set out to design Pukka over three years ago (gosh, has it really been that long?) one of the main tenets of the design was a lightweight, useful app that integrated well with other apps on your Mac. Coming from a UNIX background, I was always a fan of how shell tools could be combined in toolchains to accomplish great workflows. And when NetNewsWire added support for Pukka, followed shortly thereafter by bookmarklet support in Pukka itself, the groundwork had been laid for all kinds of combinations in the future.

One of the more flexible applications that I've come across in recent days in this regard is Times, a neat take on news reading. Nestled amongst the application preferences since release 1.1 is support for enhanced sharing, where you can plug any URL type into the application, using some variables from the app, and integrate with all kinds of websites and applications.

Naturally, as soon as I started using Times, I wanted to integrate Pukka with it. This proved to be quite simple. See the screencast below for how to do this.

Click to start the screencast (38 seconds, no sound)

Special thanks to Acrylic Software, the folks behind Times, for some great forward-thinking preferences in their app. This kind of planning has all kinds of great, unforeseen advantages to application developers and the users of these applications.

Ma.gnolia downtime and Pukka's backups

Posted in

Late last week, the excellent social bookmarking service Ma.gnolia suffered a catastrophic system failure. Recovery efforts are still underway, but in the meantime, if you are a Pukka user, you can rest assured that your bookmark data is safe and sound. As of Pukka 1.7, Pukka automatically makes backups of all of your accounts in a format that can be reloaded into Ma.gnolia (or any other social bookmarking service with a similar API, for that matter).

To get to your backups, see Pukka's main menu for an item that opens the backup folder.

Getting to Pukka's backups

Pukka updates these backups every time it pulls a full copy of your bookmarks from the server, which can happen several times a day, depending upon use.

Our thoughts go out to Ma.gnolia as they work to recover their systems.

Syndicate content