Skip to main content

Pukka 1.7.1: user experience bug fixes

Posted in

I've just released Pukka 1.7.1, available here, to address some user experience issues. This release features better keyboard navigation in the main and preference windows, some minor bug fixes with the preferences involving showing the accounts in the dock and menu bar, and it ensures that the most recent bookmarks are shown by default, something that wasn't quite working right in 1.7. Enjoy!

NetworkLocation 3 and Meerkat

Congratulations to on today's release of NetworkLocation 3! NetworkLocation is a great app for the mobile computer user that lets you setup actions and preferences that happen based on where you are physically. It can detect networks, peripherals, and now, even your geographic location. It's a great time-saver if you frequent client sites where you need to turn off Growl, coffee shops where you need to turn the screensaver on and the volume down, or home when you need to connect to your server and set your default printer.

What's more, we've written a plugin for NetworkLocation for Meerkat support! Now you can combine Meerkat's great handling of SSH tunnels with NetworkLocation's great detection of where you are and what you need to be doing. NetworkLocation can even set your system-wide proxy settings, so you can more easily use Meerkat for secure SOCKS-based web browsing when you're on the go.

If you want to grab the plugin directly, it's available on the NetworkLocation site. Again, congratulations to the guys at!

C4[2] this weekend in Chicago

Posted in

For the third year in a row, I'm headed to Chicago this weekend for the C4 Mac indie developer conference. C4 has been a great way to meet new folks, learn about the state of the independent Mac software industry, and get recharged for the coming year.

If you're headed to C4 this weekend, be sure to try to find me if we've never met. I love meeting new people -- and especially Mac developers!

Drupal File Taxonomy Server public release!

I've finally been able to make a public, alpha release of the File Taxonomy Server for Drupal 6, allowing integration of a Drupal site's category structure into a drag-and-drop WebDAV interface. I blogged about this software a bit previously, but am finally getting some code out there. If it sounds like something you'd be interested in, then I encourage you to check out the project and give it a spin.

I've fixed a couple minor bugs and now the install instructions mention the latest tested versions of the DAV API and File Framework projects, so it should be pretty easy to get going.

You can create and edit categories and upload and tag files to your site, all from the comfort of your WebDAV client, including Mac OS X's Finder, Windows' Explorer, or other applications like Transmit, Coda, and Cyberduck.

Feedback is welcome, but please report bugs over on the project page, not here. I welcome comments and feedback, but please try to keep official feature requests and bug reports over there.

Make him an offer!

For the second year in a row, I'm proud to help Seth Dillingham in his efforts to raise money for the Jimmy Fund to fight cancer. His personal goal this year is $10,000, both by sponsorship of his cycling and (this is where I come in) his bundle auctions of Mac software.

If you'd like to help out, you can check out the info, where both Pukka and Meerkat are featured, build a bundle of the software that you want, and make Seth an offer for it.

There's a lot of great software on there -- apps that I use already include 1Password, DropDMG, MarsEdit, PlistEdit Pro, rooSwitch, Sound Studio, SuperDuper!, yFlicks, and YummySoup!, among others.

So go check it out!

Pukka 1.7 is out!

Posted in

After some public beta testing, I'm happy to report that Pukka 1.7 is now released! There are only slight changes over the beta release, but to reiterate, the main new features include:

  • The description length can now be up to 1,000 characters in order to match recent changes to Delicious.
  • The latest ten bookmarks across accounts is now shown in the dock and menu bar menus, if they are enabled.
  • A backup of each of your accounts' bookmarks, as retrieved from the server, is made from time to time. See Pukka -> View Backup Folder...

There are two new features not in the beta, too:

  • When selecting a bookmark from any of Pukka's menus, holding down the Option key will allow editing of that bookmark in Pukka.
  • Application and document icons up to 512 pixels have been added for better appearance on Leopard and greater.

There are a number of bug fixes and tweaks, too -- the best way to read the full scoop is to use Pukka's in-app updating feature or check out the appcast RSS, and you can grab Pukka itself here. Enjoy!

Beta beat: Pukka 1.7

Posted in

I've had some enhancements to Pukka in the works for some time, but thanks to the launch of Delicious 2.0, I've been spurred into action to selectively put some of them into a release, as well as address some issues with the new platform. Chief among the latter is an update to allow post descriptions up to 1000 characters, or rather, to only warn when they are over 1000, not the previous 255, characters.

I'm releasing a beta of Pukka 1.7 that also includes the following:

  • The latest ten bookmarks across accounts is now shown in the dock and menu bar menus, if they are enabled.
  • Performance has been tuned in the menu bar item, which also translates to a faster launch time if you are using the item.
  • A backup of each of your accounts' bookmarks, as retrieved from the server, is made from time to time. See Pukka -> View Backup Folder...
  • The posting sound effect, if enabled, is now played properly when the preference to quit after posting is turned on.
  • Tooltips have been added to menu bar items to display the full bookmark title if they are truncated for display.
  • Account passwords are remembered for the duration of Pukka's launch once they are retrieved from the keychain, including across system sleep.

Some other minor tweaks have been made as well, and I'd appreciate some testing. So, if you are reading this, consider yourself invited in the beta. Now take it for a spin!

Meerkat 1.1.1: minor tweaks

Posted in

Meerkat 1.1.1 is out and available immediately -- grab it on Meerkat's page. This release has a couple minor tweaks and bug fixes and lays some groundwork for future integration with other applications. That's all I'll say about that right now!

Enjoy and as always, if you have any questions or comments, head on over to the contact page.

Major advancements in Drupal file handling

I wanted to mention a few technologies that I've been working with and contributing to lately. This post will be pretty tech-heavy, so I'll throw out some keywords ahead of time so that you can decide if this is something that you'll be interested in reading further: WebDAV, desktop-web integration, RDF, and content-addressable storage, all in the context of my content management system of choice, Drupal.

My work specifically has been in porting and updating some work started by Arto Bendiken (whose projects, it seems, I just start to wrap my head around, and appreciate the foresightedness of, about two years after he himself conceives of them). Aside from writing a guide to his high-traffic caching module, Boost, and porting his debugging tool, Trace, to the latest version of Drupal some time ago, I've been porting his Drupal-WebDAV content bridge, File Server, fixing some bugs in the underlying DAV API, and integrating with the updated File Framework that Arto and my other colleague Miglius Alaburda have been working on.

I'll tackle each of these technologies in layers, starting from what the user sees on down to the gory details under the hood in how the files are stored and queried.

File Server

File Server lets you take a WebDAV client, such as Mac OS X's Finder or Windows Explorer or, better yet, a richer program like Transmit or Cyberduck, login to your Drupal-based website with it using the account that you already have, and drag and drop the files and folders presented there to you. Assuming your Drupal site has file nodes (essentially, chunks of content in the form of file uploads) on it, this dragging and dropping can be used to re-categorize the files, upload new files, and change your site's category structure.

Here's an example:

1) I have a Drupal-based website.

2) I connect to http://my-website-url/dav in a WebDAV client and login with my Drupal user credentials. I'm then presented with a view of my tags:

3) I drag a file from my desktop into a folder corresponding with the tag that I'd like it to be categorized under:

4) When I go to my Drupal site, the file exists as a node and has been tagged appropriately:

This happens via File Server, which I've recently ported to Drupal 6, and Arto's DAV API, which lets you hook all kinds of Drupal facilities into a standardized DAV interface. In this case, we're connecting Drupal's taxonomy (i.e. tags and categories) and in turn, its file nodes, to DAV. It makes a lot of sense here because the files are going into Drupal as file nodes, with automatic conversion into other formats, automatic metadata extraction (as seen in the sidebar above), and automatic indexing into the search system.

File Framework

File Framework is the link between the actual files and the node structure in Drupal. In short, File Framework takes the default facility in Drupal for file uploads and replaces it with a more robust system for backend storage, exporting of info, and conversion into alternative formats. For example, you can upload a PowerPoint presentation and automatically get related nodes out as PNG, PDF, Flash slideshow, and more.

File Framework is a lot of under-the-hood stuff and is in active development for Drupal 6. It also builds upon two other frameworks, RDF and Bitcache.


RDF stands for Resource Description Framework and is not Drupal-specific, though it embodies a concept that Drupal is trying to move towards. RDF is a step in the direction towards the semantic web, where computers can understand what data is about, not just what it contains.

The most common application for this technology is search engine technology. Today, when trying to find a picture, we search for web pages that contain the words picture of a sunset and only turn up hits if those words are found. In the semantic web, this info could be found because the search engine can understand that there is a person who has a name of Joe, who has a profession of professional photographer, and who has a website at, which in turn has a file which is a digital photograph, which has a description containing the word sunset. As a result, some context can be gleaned by the computers indexing all of this stuff, such as the fact that this likely to be a good photo of a sunset since Joe is a professional photographer, and can provide much richer info than the search engine merely looking for words that the content author may or may not have written near the object in question.

Anyway, RDF is the stuff that stores these triples, the idea of subject-predicate-object, e.g., website has a file. Arto has hacked together an API for RDF storage in Drupal and the File Framework now uses it. This RDF storage facilitates not only descriptiveness on the site, but also helps with cross-site searches when this data is needed.

None of this stuff is useful if people have to focus on creating the RDF, so this RDF API combined with Drupal makes it easy for people to keep doing what they were doing before and have the system take care of all of this context stuff.


Bitcache is a means for content-addressable storage (CAS), which means that, unlike most filesystems that we deal with today, the address or URL pointing to a file is based merely on the content, not on the set location. To put it another way, when you put a file on your hard drive, it gets an address like file:///users/justin/myfile.txt that is assigned arbitrarily (well, actually by you based on how you name it and where you put it, but it's arbitrarily related to the actual content). In Bitcache, a unique string of letters is calculated when the file is put into the system and as long as the content remains the same, the pointer URL to that file will remain unchanged. When the file changes, a new copy is created which necessarily has a different address; however, the old file remains in the system as well. So, a benefit is that a given file that exists in a given state is never put into the system twice, since it can be continually referred to by its content address. Another benefit is that the old versions are necessarily retained for archival purposes as well.

A quick hypothetical example: a computer server is in use by an office of people to store their MP3 collections on. When someone puts a new song on the server, it gets a content address. When a second person later puts the same song on the server, a second copy is not created -- instead, the second person gets a reference to the original file's address, since the file is the same anyway. That way, half the storage is used. As more people add the same song to their collections, the storage benefit increases. This is a simplified and contrived example, but it's the basic gist of things.

The File Framwork for Drupal makes use of Arto's Bitcache project. So, when you are using the stack of tools I've been talking about here, under it all, you also get the benefits of CAS behind the scenes.


I'm going to stop there, as I'm sure I've done some grave injustice to some of the complexity involved, left out some of the cons that come with the pros of these systems, and I've probably mangled some of the descriptions too. But then again, that's why I'm working on a piece of it and not the whole thing ;-)

I get excited about this stuff not just because of the Cool Factor™, but also because this sort of thing, when combined with Drupal 6's capabilities in the workflow department with triggers and actions, can lead to some powerful publishing and conversion capabilities for file uploads. And all of this paves the way for Drupal to be the most forward-thinking content management system out there.

Questions? Comments? Corrections? Leave a note below and let's sort it out.

Meerkat 1.1: status indicators, new preferences, and easier editing

Posted in

I'm pleased to announce Meerkat 1.1, available now! This release brings a slew of new features, a number of bug fixes, and some nice appearance changes.

I'll focus on three main changes in this post: status indicators, preferences, and easier editing.

Status indicators

A much-requested feature for Meerkat has been a way to see the number of active tunnels (if any) at a glance, regardless of which application is currently active. Also, several people have mentioned that they would like to know when tunnels are being brought up or down with a similar notification (aside from Growl, which is already supported but that not everyone uses).


I'm happy to report that Meerkat 1.1 does both, and it does it in the dock as well as the menu bar. You can show or hide both of these indicators (they default to show) and you can even customize the dock badge color in...

Meerkat's new preferences

After some feedback, plus some thinking on where to put the new options, Meerkat's preferences window has gotten a big boost in style and ease of use. See for yourself!

I hope that this makes it easier to find what you're looking for as well as clearer to understand what some of the options do and how they are related.

Easier editing

Lastly, another feature that made it into this release is a contextual (i.e., right-click) menu for Meerkat's tunnels and accounts, where you can easily edit, delete, or, in the case of tunnels, activate and deactivate the current selection. Along with that, you can now duplicate tunnels and accounts with one click for those times when you need to make several similar, but slightly different tunnels.

That's all for now -- as always, the full release notes are in the help book and appcast. So, go get Meerkat!

Syndicate content