Skip to main content

shout out

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.


I wanted to take a moment to help promote an upcoming Mac developer conference. Scotty over at the excellent Mac Developer Network (a podcast network that I've participated in a couple times) is organizing a Mac developer conference in the UK in April that looks simply amazing.

The speaker list looks fantastic: Bill Dudney of Pragmatic Programmer iPhone book fame, Matt Gemmell (he of of the custom Cocoa controls), Mike Lee (World's Toughest Programmer), Fraser Speirs of iPhoto & Aperture plugin fame, and several more, plus workshops and what I'm sure will be excellent networking amongst Mac & iPhone developers.

Unfortunately, due to a lot of travel and moving in March, I won't be able to make the trip to the UK for the conference, but I'm hoping it becomes a regular thing as I would definitely like to in the future.

If you are looking to jump-start your Cocoa development skills, NSConference looks like it would be a great way to do so.

Best of luck NSConference!

SSH tunnels for the common man (and woman)

Posted in

Thanks to the fine folks at TUAW, I've been alerted to an interesting start to a series at Apple Matters called Using SSH: Secure Tunnels for the Common Man. There's a nice bit of explanation on the need for and the basic concepts behind SSH tunneling.

Of course I'd be remiss to not mention Meerkat, Code Sorcery Workshop's next application, built specifically to address the need for easy and feature-rich management of SSH tunnels. Even for folks like me who know the Terminal commands for SSH and the concepts behind rather arcane uses such as dynamic forwarding as a SOCKS proxy, it's very useful to have menu bar access, Growl integration, Bonjour capability, and other Mac-like features for a classic UNIX tool like SSH.

However, I think that even with a tool like Meerkat, it's important to have some sort of forum or knowledge base for various uses of SSH, which is something that I hope to start when Meerkat launches. It's tricky because part of an SSH tunnel is inherently personal (e.g., your account details), but the basic concept can be shared for other people -- whether it's tunneling to your home iTunes collection, accessing your colocated Mac server securely via screen sharing, or securely browsing the web while on guest networks.

Anyway, give the article a look. I look forward to the upcoming installments -- SSH is a dark art to many and it's good to shed some light on it!

Pets for the environment!

Congratulations to Environmental Working Group for launching Pets for the Environment yesterday! From the announcement:

According to the latest research from EWG, I'm the canary in the living room, soaking up more chemicals than you or your children.

New tests confirmed that I'm full of toxic industrial chemicals, and I'm barking mad. You should be, too. I grow 7 times faster than humans, so what happens to pets like me - increased cancer rates, for one - might be happening to people soon.

Did you know that the humans' government doesn't make companies test our toys, furniture, or even our food for safety?

I did a little work on this site (built in Drupal, by the way), but the bulk of the credit goes to the EWG team and Mike McCaffrey.

Clearly, this is a big problem and I look forward to more of EWG's research as this is something that is affecting our cat, too. Code Sorcery Workshop and Macy are definitely on board!

The Price of Free


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.

C4 videos now available!

Posted in

Jonathan "Wolf" Rentzsch has begun posting free videos of last August's C4 indie Mac developer conference in Chicago. I was fortunate enough to attend this conference, as well as the first C4 in 2006, and I'm very happy to see these online, let alone available for free!

C4 was a big motivator in me striking out on my own and having these videos available free to the community is a huge boon to the Mac platform. Wolf says it best:

[O]nline videos like TED and Google Tech Talks have really driven home how great frictionless sharing of high-quality presentations can be. So spread these videos far and wide, all these are great speakers talking about subjects dear to their heart.

Hear hear! Enjoy these videos and spread the word!

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.

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!

Syndicate content