Skip to main content

Pukka beta: Leopard reliability

Posted in

I've been hard at work trying to tackle some lingering Leopard stability issues with Pukka and believe that I have a solution. I'm releasing this fix as a prerelease (i.e. not advertised in the auto-update mechanism and not posted to the download sites -- please do not post it for me!) since the problems don't affect everyone and I'd like to have some feedback from those who are affected before making this version live.

Cut to the chase: download the prerelease version 1.6.6-pre2 for Tiger or Leopard. If you have any questions or concerns with this build, please contact me here.

(You may note that I'm using the same link for both OS versions -- I'm just trying to get some rudimentary usage stats by separating out the download URLs ;-)

If you're interested in some more technical info, read on.

It seems that Leopard has some lingering crash issues when using NSURLConnection, particularly when behind a proxy and/or using HTTPS and/or using authentication. Of particular concern are the last two conditions, as all Pukka traffic through, Ma.gnolia, and most alternative sites is over HTTPS with authentication. I have rarely been able to reproduce these crashes myself (which is the main reason I did not catch them in prerelease versions of Leopard), but I have received crash logs from issues with severity ranging from occasional problems to repeated crashing, including crashing on launch. Needless to say, this has been very frustrating.

Any other Cocoa programmers who use NSURLConnection will note that it is pretty much the way to do asynchronous downloads to memory (i.e. not to a file as NSURLDownload does) while easily working with requirements such as the ability to cancel, authentication, transparent proxy support, and cache management. I've been in a bit of a bind for a workaround, but after some discussions with (extremely helpful!) fellow Mac developers such as Daniel Jalkut, Jon Wight, and Fraser Speirs, I've settled on the solution of using CURLHandle routines in a dynamically loaded bundle when on Leopard for the time being, linking them against a Leopard-targeted CURLHandle framework to bypass cross-development issues with the framework. This required a fair amount of re-architecting since CURLHandle is not intended to be a drop-in replacement for NSURLConnection (in fact, it's a subclass of the Tiger-deprecated NSURLHandle class). It's a stable and reliable fix for Leopard until this bug is resolved, if not super-ideal for me as a developer. But them's the breaks!

For the reference of the Cocoa developers reading this, you can check out some bookmarks I've gathered (and will continue to gather) about issues with NSURLConnection over the years here and I've reported the Apple Radar bug and it resolves to the original at rdar://problem/5575834.

Update: I just released 1.6.6-pre2 to fix an issue that a couple people have noticed with double encoding of text when posting. The links have been updated above.

Performance release: Pukka 1.6.5

Posted in

I've just released Pukka 1.6.5 with a slew (or, as the changelog refers to it, a metric slew) of performance updates, bug fixes, and usability improvements. You can read on for (much) more detail or just head over and get Pukka now.

The bulk of the changes deal with Spotlight performance and strain on and responding to capacity issues with the (or other service) API. Hopefully this should make Pukka perform faster, be more responsive, and be a better network citizen.

Here are the changes in depth:

  • Removed a check on the local Spotlight cache that would run 30 seconds after launch and could cause unresponsiveness in the application. The Spotlight caching mechanism has been updated to perform in a more incremental fashion to avoid the need for this.
  • Pukka now waits at least five minutes between API requests of all bookmarks, preferring requests of the latest 15 bookmarks in the meantime, to ease strain on the API and to avoid getting throttled.
  • Added CFBundleShortVersionString to app bundle, which will make Pukka's version number show up in Finder's Version column.
  • Upgraded Spotlight metadata format to store bookmark data in folders organized by username instead of one big folder. This improves performance during local cache updating.
  • Resolved a Core Data issue that may have caused a delay between when bookmarks were cached and when they appeared in the application.
  • Changed the interval used to check for bookmark updates online from one minute to three minutes. Although this was a very slight hit on the API, it was reduced in the interest of scaling back a bit because we can.
  • A Growl notification is now shown when the bookmark cache on disk is updated. This occurs whether all bookmarks were re-parsed or just the latest 15, and for each account.
  • The successful post Growl notification was updated to include the page title and the account posted to.
  • A specific error message is shown if a post fails due to API capacity issues or throttling, as opposed to a general error when posting (network, internal server error, etc.)
  • Any kind of posting error shows a panel with a "critical" alert style to indicate that data was not saved and may be lost if the application is quit.
  • Fixed two small memory leaks related to tag sorting in the bookmark menus.
  • On first run, a modal panel is shown as the bookmarks are cached for the first time. When this panel was hidden, the animation would continue. For cleanliness, this has been stopped.
  • Trivial about box updates: Two issues were tweaked with the icon animations. The randomness of the selected animation was made better and a PNG representation of the app icon is passed to the animation instead of the .icns file directly. Lessons learned from Ironcoder ;-)
  • The HTTP timeout for sending posts was reduced from the default of 60 seconds to 10 seconds to avoid making the app unusable for up to a full minute in the event that the link can't be posted.
  • A bug was fixed in the debugging console which prevented it from always scrolling all the way to the bottom on appending new content.
  • During posting problems, we now report exactly the message that was received from the API to the debugging console.

That's it! Enjoy and please contact me with any problems or questions.

MacSanta knows if you've been naughty or nice...

Posted in

...but either way, you still get the good deals! Check out MacSanta for good deals on great Mac software during the month of December. If you're looking for a couple things to keep you busy this first day of a new month (or, like me, asking yourself, "December already?"), you can check out the legend in the classic verse A Visit From MacSanta, read about last year's visit here, here, or here, promote it on your own site with these badges, Digg this year, or even check out this unrelated picture on Flickr.

Happy holidays everyone!


Last week, I finally got a chance to participate in an Ironcoder contest and I took second place! I've never been able to find the time during the previous, weekend-long contests, but since Ironcoder VII was nine days long, I managed to squeeze some time in during the week and put together an entry. Read on for some more info.

First off, a caveat: Ironcoder is a programming contest, by programmers and for programmers, so don't expect anything particularly useful to come out of it (nor my entry). Entrants are writing to show off programming chops under pressure.

The contest theme was "Retro" and the preferred programming toolset was Core Animation. I diverged a tad (which is allowed) and instead used Quartz Composer, a visual programming language which was introduced on Tiger, created my animations there, and wrapped it in Cocoa to do the normal things that applications do.

I described my entry, called "Pop Rock", in the README file thusly:

Pop Rock takes the Ironcoder theme of Retro and the API of Core Animation and combines them as a retro rock concert app launcher. As each app is launched, it is a featured performer on stage, playing a guitar riff in front of the rest of your running apps. The more apps you are running at the time, the more popular the launched app and the better the crowd reaction.

The idea for Pop Rock just kind of popped into my head after about a day or two of latent thinking and once I started, I couldn't stop (as my wife can attest). The pressure was fun! Also, I mentioned it in the project notes, but again I just want to give a shout out to fellow Mac indie Mike Zornek of Clickable Bliss for his MegaManEffect, which I adore and which gave me the idea for an app launcher style of project.

I originally had the idea to use iusethis to fetch app popularity ratings, but this proved to be too slow to be useful at app launch time, so I fell back to a basic count of the number of other applications running, which was much quicker.

Since the app was built on Quartz Composer and not on Core Animation, it runs on Tiger too. I've compiled a version for both Tiger and Leopard (though I haven't had a chance to test it on Tiger yet).

Pop Rock screenshot thumbnail

Pop Rock (click for larger screenshot)

Download (7.42MB) | Source Code

You can read a bit more about the contest results over at Ars Technica or on the Ironcoder blog. Congratulations as well to Geoff Pado of Elgebar Studios for his winning entry, Etcher, a really great Etch A Sketch tribute!

Another bug fix release: Pukka 1.6.4

Posted in


I've just posted another maintenance release of Pukka that squashes a few more Leopard bugs. Besides fixing a couple occasional hangs and crashes, it is now more robust in how it handles issues with the API, particularly if you are setting up Pukka for the first time and there are network or capacity issues with, but also for seasoned users under the same conditions. I've also fixed a couple of very small issues under the hood. You can go grab Pukka now or upgrade right in the application.

I've found that it can be very tricky to write an application that takes its primary value from an online service that can occasionally have reliability issues. When I set out to write Pukka, it was primarily as a client, not as a bookmark manager on the desktop, and I plan on keeping it that way. So when the conditions are less than ideal, it's very important to inform the user as to what's happening and what to do next, doubly so if they are running the application for the first time and can't use all of the functionality right away as a result. I think I've done better with this in 1.6.4 and am better keeping it in mind going forward in order to provide the best possible user experience.

Also, the transition to Leopard has been an important education for me about major operating system upgrades from a developer point of view. I camped out in line for Panther, Tiger, and Leopard at Apple Stores and have assisted many people in upgrading their computers and networks, but I've never bridged an OS transition with an active desktop software product. Although I've had access to Leopard since 2006, as a small shop there is a big difference between my testing and my user base upgrading and putting Pukka through its paces. It's definitely been an education and I'm doubly appreciative for a patient and loyal user base. Thanks, everyone!

Look it up!

Posted in

Now that Leopard shows Dictionary results in Spotlight, I recently discovered that every Mac now may show Pukka as a Spotlight search result! As you can imagine, I have a lot of things on my Mac related to Pukka, from source code to images to emails to iChats, but the fact that everyone's dictionary, and by extension, Spotlight, now has its namesake word gave me the idea to revisit just where the name came from.

Nearly two years ago, a then-coworker gave me the idea for Pukka and, since I had been waiting for the right opportunity to create a Mac app, I had a prototype going within a week. When it came time to give the app a name, I came up empty, but then my wife suggested the name Pukka after a word that British chef Jamie Oliver used all the time on his shows and that we took to mean "delicious" or "tasty". As you can imagine, this was a nice fit -- a unique word, short but memorable, with a cool, somewhat hidden meaning that mirrored, the service with which it interacted.

I didn't realize until some time later that the word had more of a meaning of "excellent" than good in the culinary sense, so maybe I would have backed off a little on the horn-tootin' had I realized that ;-)

Anyway, now, a couple years later, who would have guessed that my Pukka would be the number one Google result or that many people would come to depend on it? It's a been a fun couple years and I still have big plans in store for Pukka (and some other apps), so stay tuned!

Pukka bug fix release

Posted in

I've just released Pukka 1.6.3, which fixes several issues on Tiger and Leopard, including a hang and a potential crash.

As usual, you can update right in Pukka itself by choosing Pukka -> Check For Updates... while the application is running, or you can download Pukka from its page.


Bonjour, Leopard!

I've been alerted by a number of users that there seem to be some odd issues with Bonjour support in Pukka on Leopard, particularly a slow startup time and/or a delay after launch. I'm working on this issue, but in the meantime, you can work around these issues by disabling Bonjour in Pukka's preferences.

Thanks for your patience and stay tuned for an update!

Ready for Leopard!

I've just released Pukka 1.6.2, which provides full compatibility with Mac OS X 10.5 "Leopard", due out today at 6pm Eastern. I've also corrected a small bug with the File -> Close menu item so that it works as expected when the preferences or about windows are in front. As always, you can get Pukka on its product page.

On the topic of Leopard, as many developers 1, 2, 3, 4, 5 have noted, despite having prerelease versions of Leopard over the past year or so, we do not actually get the final version as it ships tonight until we either go out and buy it ourselves or wait for our developer copy (in a few weeks?) So, to the best of my knowledge, Pukka will work with the Leopard release, but in the event that something unforeseen crops up, I will rectify it this weekend.

Now go get Pukka!

Blog Action Day: A simple thought

With today's Blog Action Day about the environment, I won't go into a long entry, but instead I want to impart a simple concept that really struck me when I saw a pre-screening of The 11th Hour here in DC in August.

The concept is this: that conventional economics is based upon the assumption that the natural environment is an infinite resource: timber, ores, water, animals to kill, and even places to bury things. While this may have seemed to be the case even 100 years ago, today it is patently not the case at all.

That's it. I try to think daily about which of my actions (and my business' actions) operate under this assumption and how I can correct that. Whether it's by better researching products and services, relying almost entirely on mass transit day-to-day, or making my opinion known to my representatives, this is on my mind every day. Ours and future generations must understand this concept or we are doomed.

For more environmentally-oriented thoughts, see EWG's Enviroblog, particularly today's Blog Action Day entry, Know Your Source, regarding the mainstream media and environmental reporting.

Syndicate content