Archive for Pukka

Posting issue resolved

I’m happy to report that a rather longstanding issue with posting in Pukka has been resolved — on the del.icio.us side of things. That is to say, the version of Pukka that you are using right now will now work properly with no action required on your part.

I had been getting some reports from users of periods of inability to post for a few months now, but only very occasionally. Users would get a message like this when trying to post:

This would happen many times in a row in a short period, but then eventually go away after a few minutes. It turns out that the resolution may have been due to users finally getting a different del.icio.us backend server, one without the problem, but without knowing otherwise on the frontend of things.

Unfortunately, the condition that was producing the posting problem was indistinguishable at a network level from being offline when trying to post (which would obviously fail). So it was difficult to determine if this was a sporadic networking problem on the user side or something deeper. However, in the last week or so, the frequency of folks seeing this problem went up, so I began to hand out some debugging builds of Pukka that could supply me with more information about what exactly was happening.

Once I had this info, I posted to the del.icio.us developer Yahoo! group about the problem and within a day or two, they were able to track it down to a problem in their system.

So in review, I’m happy that this is resolved, but by all means, please do let me know if you continue to see it, especially if you are using Ma.gnolia or another non-del.icio.us service as I have never had a report of a problem under those conditions.

I’d also like to extend an apology to users of Pukka who have been dealing with this for a couple months. As I’ve mentioned before, it can be difficult when core functionality of your application relies on a third-party, network-based service, so it’s important that if you are having a problem that seems to be related to the service to let the developer know so that they can get to the bottom of things as quickly as possible. More votes means more time with my eyes on the problem and hopefully a speedy resolution!

Comments

The Price of Free

mbw.png

First off, I realize that I’m a little late to blog about this, but this past weekend I’ve been in the process of moving. I’ll certainly be posting more on that in the not-too-distant future, but suffice it to say that I’ve been a little busy these past couple days…

Anyway, last week, I was thrilled to hear from my friend Daniel Jalkut of Red Sweater Software that Leo Laporte singled out and mentioned Pukka on MacBreak Weekly, his weekly podcast, as a Pick of the Week. Ever since I learned that both Leo and productivity geek and frequent show guest Merlin Mann had used Pukka, I was hoping that they would mention it. A few months ago, my friend Jim alerted me to the fact that Pukka’s posting sound effect appeared in the middle of a MacBreak Weekly episode (Episode 65, about 10:20 into the show) but no mention was made of Pukka — though obviously someone was using it during the show! That’s why in this past week’s episode, when Leo and the guys spent a good chunk of time talking about Pukka, I was really excited! I found the spot in the show (Episode 82, about 1:36:18 into the show) and my wife and I sat down to listen.

On the whole, I was quite happy with the feedback — after all, Leo said “I love Pukka” and “Pukka is simple — it just does what it does.” But pretty quickly, though the feedback about the app never went negative, I heard something that made both my wife and I take pause — “They shouldn’t charge for it, but they do.”

I’m not going to rehash arguments for and against this, as Daniel wrote eloquently on this and received 87 comments on his blog post before he closed commenting. I really wanted to get my word in there, but the time for that conversation has passed (however, you should still go over there and read both Daniel’s excellent analysis as well as the many thoughtful comments if this is a topic of interest for you.) Other folks also got their say on their own blog posts: Michael McCracken, Tom Armitage, Matt Johnston, and Baron VC, for starters.

One of the commenter’s thoughts, about Pukka being no more than two hours of work, is ludicrous enough that I’m not even going to address it save mentioning a few nuggets of Pukka’s programming that could keep you busy for more than a couple hours each:

  • AppleScript support
  • Spotlight support with Core Data
  • Scalability testing on up to 25,000 bookmarks
  • Custom managed object deletion policy in Core Data (Hint: when deleting a bookmark, only delete each of its tags if it was the last bookmark for that tag, and when deleting a tag, only allow deletion if all of its bookmarks are deleted, but maintain a consistent and responsive data set during these transactions. Also, see above re: 25,000 bookmarks.)
  • Sparkle support: Cocoa code, but also a distribution and appcast feed update process.
  • Working out fun API issues like inconsistency and client throttling.
  • Trying to implement dockless mode while maintaining future compatibility with Leopard code signing. Also, taking the time to blog publicly about it as a way to help other programmers as well as to open your own thinking to analysis & criticism by others.
  • Dealing with a Leopard API instability that is core to your application. Also, taking the time to blog publicly about it for your users and for other developers.
  • Doing the above with an installed user base on Tiger and Leopard.
  • Doing the above, while providing what I feel is an above average level of support, for two years.

I’ll leave that argument as is — blame the above list on a lot of driving in the past few days while thinking about that specific comment ;-)

It’s true, at first glance, Pukka may not look sexy (it doesn’t produce smoke effects, after all) and may seem to be nothing but a simple form-like frontend to a free, public service, but as many kind commenters on the above-mentioned blogs have pointed out, and as Leo himself summarized when he said, “It doesn’t do much — I just love it!”, Pukka represents hours and hours of thought and planning and attention to the user experience — that is what is king in the Mac software business. Mac software for me is like a good relationship — the more time you invest in the software, the more richly you will be rewarded with little surprises and delights along the way. You can see the kernel of this idea in my first post here over two years ago:

I set out to write a program that does the actual posting and I had it working that night. It grew from there as I lovingly tweaked it and worked with beta testers to make it better. I hope you like it. What’s more, I hope that you’ll support my efforts so that I can keep the creative juices flowing.

I followed that up a few months later when I started charging for Pukka:

If you look at my blogroll, you’ll see over 30 Mac developers or products that I admire, nearly all of which I use and have paid for, if they charge. I’ve easily spent several hundred dollars on Mac shareware [...] The Mac has shown me what it has undoubtedly shown you — that software is art, and Mac users have deeper loyalties than price points.

On the topic of pricing, it’s true that there is some voodoo to determining the price of a piece of software that you’ve created, and I say that even though I do not make my entire living off of Mac software (though I will point out that Pukka enabled me to bootstrap my own business, including starting out on my own and enabling me to attend developer conferences and meet like-minded entrepreneurs.) I don’t typically like to quote the same blog when discussing two different points, but again Daniel Jalkut nails this topic in his post The Price is Wrong from several years ago (there’s a reason Daniel attracted a Daring Fireball link and 87 commenters on his latest post.)

I’m all on board with free software if it works for the developer — in fact, the day the MacBreak Weekly episode was published, I released a little freeware application called Snarf for icon designers. I maintain and build Drupal modules. And before that, I released a number of open source programs like Ticketsmith, spliff, and purgeimap.

But for me, it all comes down to this: what will the market support for an application that, for the right user, adds at least that amount of value to their workday? For me, right now, that’s what I’m charging for Pukka. I hope that you agree, but if not, I fully support your right to make a better application, at a price point that works for you, or to use the free services that Pukka works with yourself directly. And I’ll even help you out if I can, because others have certainly helped me along the way.

Comments (9)

Bait and switch? No, it’s called software development

Yesterday I stumbled across a month old blog post advocating a hack to the excellent Twitterrific application, a client for the free Twitter service. The hack (Update: supposedly, but the point remains) removes the rather unobtrusive ads that the software developers introduced as a way to offset free use of the application. If you didn’t want to see them, you could just register the application and they go away. The app didn’t start out having them, but after it took off in popularity, the authors (you know, the people who put their time into the application’s development and support) decided that this was a better model.

I should take a moment to point out here that as a whole, advertising in general strikes me in a negative light, but I didn’t mind the ads in Twitterrific as it was great software and a fair tradeoff for my fifteen bucks.

Anyway, this hack and its associated “arguments” interested me particularly because my application Pukka is also a lightweight client for a free online service, so I left a comment. My initial argument was:

Just like a web browser, RSS reader, email client, FTP program, Aperture, iChat, blog editor… man, the nerve of those people trying to charge for a tool for receiving and delivering content created by others!

Also, I’m a Twitterrific user and I like the ads. Eventually I may pay for the app, but for now, they’re alright.

Try writing a program for which you charge little or nothing, getting a couple thousand users, then see what you do.

Since then, the discussion has gotten rather heated, as well as ludicrous in some cases, as acknowledgement and support of both software piracy and website attacking has been discussed. Seth Dillingham, whom I first got to know (at least virtually) last summer when I supported his bike ride for charity, posted a response and a challenge to users of Twitterrific: put your money where your mouth is. So I took him up and I registered Twitterrific. Money well spent!

If for no other reason (and there are plenty of other reasons), software piracy hurts developers from the support angle. Many users running an app means more support, particularly when a chunk of them are running a cracked version that could develop unforeseen problems. Users report stability issues on the popular software sites or, in the case of larger companies, call the support lines and demand resolution to their issues. I think John Gruber said it best when he wrote about the jailbroken iPhone phenomenon:

The mindset manifests in many forms, but what it boils down to is this: a sense of entitlement that users should be able to do unsupported things and yet still be supported. That it makes no sense to expect support after taking unsupported actions is why I’ve found it baffling.

Phooey. Get your copy of Twitterrific right here. And support software developers if you enjoy their products, but don’t feel that you have the right to rip them off if you don’t like how they do things. In fact, grab Apple’s free development tools and write your own and let’s see how it stands up.

Update: Craig at Iconfactory, the author of Twitterrific, weighs in with his take on the whole matter.

Comments off

Pukka 1.6.6 is out!

Just a note that Pukka 1.6.6 final is out! Grab it here. For more details on the changes involved, see the last post. This release should iron out any remaining crash problems that users have been seeing on Leopard.

Comments (2)

Pukka beta: Leopard reliability

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 del.icio.us, 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.

Comments (14)

Performance release: Pukka 1.6.5

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 del.icio.us (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.

Comments off

Another bug fix release: Pukka 1.6.4

leopard_disc.png

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 del.icio.us API, particularly if you are setting up Pukka for the first time and there are network or capacity issues with del.icio.us, 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 del.icio.us 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!

Comments (9)

Look it up!

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 del.icio.us, 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!

Comments off

Pukka bug fix release

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.

Enjoy!

Comments (6)

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!

Comments off

« Previous entries