Dock-agnostic helpers?

March 9th, 2010 by mhr3
As I mentioned in my last post, there has been work to create a dock-agnostic DBus API for manipulating items displayed on a dock. We now have an API draft which is implemented by latest Awn and a word from Docky's lead developer to implement the API once they have some time to do so.

As I was testing our implementation of the API, I took some of Docky's python helper scripts and converted them to use the new methods - results can be found @ https://code.launchpad.net/~mhr3/+junk/dock_scripts. So far I played with pidgin, rhythmbox, but mostly with transmission helper which now seems to me really useful. Have a look yourself:



What's next? The best thing would be to create a separate project for the dock helper scripts with some kind of configuration UI and rewrite the base python API, so it can work better (usable as both standalone scripts, but also provide a helper class for easy integration as plugins for other applications - obviously rhythmbox's helper script should be a plugin for rhythmbox to keep the memory usage down for one). And now I wonder if there are any volunteers for this... :)

Why I Switched from Ubuntu One back to Dropbox

February 22nd, 2010 by mrooney
As many of you surely know, Dropbox and Ubuntu One are applications to keep files on your desktop in sync across multiple computers, and backed up in the cloud. After using Dropbox for a year or so on Ubuntu, the Ubuntu One project came out and I thought I'd move over to it. I assumed it would be easier to set up, being pre-installed, and could integrate better with the file manager and other applications, being made specifically for Ubuntu.

After about 6 months of using Ubuntu One, I found it to be too much of a regression compared to Dropbox and switched back. I thought I'd detail why here for the usefulness of others and to hopefully provide some constructive criticism to the Ubuntu One team which overall is doing good work. So here's why I went back to Dropbox:

Better Nautilus integration
The nautilus (file manager) integration in Dropbox feels very mature and polished. Normally I'd say this is to be expected since Ubuntu One is much younger, but since the nautilus aspect of Dropbox is open-source, there didn't seem to be much of an excuse for the Ubuntu One team to not use it as a starting point or at least as inspiration. Whenever I added files to my Ubuntu One folder, no matter how large or how many, they instantly had the checkbox emblem which implies to me they are in sync, even though they couldn't possibly be uploaded that quickly. In Dropbox, the files show an animated progress emblem until they are actually uploaded, and show this again when they are being updated. I wasn't able to trust the status of files with Ubuntu One, and that wasn't a good feeling.

Sharing files in Dropbox is also a lot easier via Nautilus, but that deserves it's own point.

Easier file sharing
In my typical use cases of file sharing, I want to go from having a file in mind to someone else seeing that file as quickly as possible, be it in an instant message, chatroom (IRC/Jabber), or email to a friend or two. Dropbox makes this a breeze; drag a file into the "Public" folder in your Dropbox directory, and right-click on it and select "Dropbox > Copy Public Link". Now you have a publicly accessible link to your file in your clipboard!

I never quite figured out how to do this in Ubuntu One; it seems you have to share files with specific people who also are running Ubuntu One (which really compounds the non-cross-platform issue) via the web interface by typing in an email address. This is a cool idea, but seems way over-engineered as a starting point. This was even brought up at the last UDS in an Ubuntu One session but was brushed off; they sadly seemed more interested in engineering complex sharing UIs than getting feedback to ensure they were solving actual problems.

Sane notifications
I think bug 462747 is what ultimately drove me to drop Ubuntu One. It notifies you not once but twice for every file you change; once to tell you it is syncing the file and another to tell you it is done. Regarding the first notification, I probably already know that I changed that file; regarding the second, if I'm really curious about the status of the synchronization, a quick glance at the applet should tell me what I need to know. This was mildly annoying as is, but it does this for hidden files like vim swap files too. Every time I would open or save a file in vim (and I save early and often), I got two notifications about syncing the hidden swap file!

Dropbox was much more sane regarding notifications; whenever I would turn on or sit down at a computer, it would show one notification telling me how many files it synced from other machines or, if there was just one changed file, the name of it. Beautiful!

Better web UI
The web user interface for Dropbox felt a lot easier to use, and I often had problems where the Ubuntu One web view would show deleted files or not show files I knew were there that were added days ago. Sometimes I had to collapse and expand a folder a time or two to get it to show the right contents. This led to a similar problem that I mentioned with the nautilus integration; it wasn't a UI I could trust to be accurate as was therefore essentially useless. The Dropbox UI was always accurate, and had some nice extras which could prove to be lifesavers like getting past versions of files.

I also experienced some other issues including bug 498444 which caused Ubuntu One applet to start up with the exclamation icon, giving the impression of not syncing files. If I wanted to edit or view a file that might have changed remotely, I had to manually tell the applet to try syncing again after startup to make sure the file was latest version (or else I could silently end up with .u1conflict file, but that's another issue). Additionally, although the transparency is praiseworthy, all these tweets about recent issues or downtime do not inspire confidence.

That being said
Ubuntu One does have a few things going for it, however. It is installed by default which means it is the easiest cloud sync/backup solution to get started with for an Ubuntu user. And thanks to CouchDB and a package manager, Ubuntu can ship applications that make it trivial to sync their data with Ubuntu One out of the box. If I can tell all the applications I care about to sync with Ubuntu One (bookmarks, notes, podcasts, basic OS settings/appearance) from one configuration UI, that's going to be pretty compelling.

While I currently can't in good conscience recommend Ubuntu One to a friend (and plenty of my friends don't even use Ubuntu), I do have high hopes for the project; it is young and if they can work out some of the above issues, many of them being personal show-stoppers, while providing application and OS integration, Ubuntu One (and perhaps Ubuntu itself) could become too compelling to not use for many people. For now however, Dropbox is the solution which stays out of my way, allows me to solve my problems, and just works.

If you are using Ubuntu One or Dropbox, certainly chime in on what the critical features are for you and why you chose one over the other!

wxBanker 0.7: simple personal finance

February 7th, 2010 by mrooney
Your favorite personal finance application, wxBanker, has turned 0.7!



This release comes about 2 months after the previous release, and focuses on usability and user experience issues that I obtained from watching people use wxBanker as well as from Launchpad bugs (thanks Arty!). Let's take a look at some of the changes, starting with the account control:



On the right we have the new account chooser in 0.7. The main change is using radio buttons for the accounts instead of links. This is a much better, already understood method for choosing accounts, and will also fit in with themes better. The last item is now "All accounts" and is selectable, making it easy to get a view of all your transactions and search in them.

The "Hide zero-balance accounts" option has moved to the View menu, and now has a keyboard shortcut. I've also removed the total number of accounts from the header, as well as the colons after the account names, to reduce clutter. Finally, everything has been given a bit more padding and the buttons have been slightly rearranged.

Additionally, the previous graphing library has been replaced by cairoplot (thanks Karel!), which looks much more attractive. Let's check it out:



The Summary view allows you to see a graph of your balance over time, and you can view a graph of a specific account or all accounts by using the account chooser on the left (previously the graph had its own account chooser, that was silly!).

And in case you missed the 0.6 announcement, that version brought recurring transactions, XDG directory support, and more intuitive behavior regarding deleting/editing transfer transactions.

For downloads and the full list of features and bug-fixes, check out the release page. You can also add the PPA for easy installation and upgrades.

If you'd like to stay in the loop join the wxBanker Users team (and announcement mailing list) on Launchpad, follow wxBanker on Twitter, or hang out in #wxbanker on irc.freenode.net.

Automating translation template generation and check-ins for Launchpad

February 2nd, 2010 by mrooney
I previously wrote about how excited I was for the automated translation import and export features of Launchpad. Launchpad will automatically notice when you commit a translation template and import it, making it available for translation online. Generous translators will then contribute translations, and Launchpad will commit them back to your project.


Okay, so this is pretty good! However for this process to work well, the translation template needs to be generated manually by a developer whenever there are changes to strings. Otherwise, translators are working on potentially outdated strings; some are perhaps not in the application anymore, and there are likely some strings which aren't in the template yet.

After forgetting to generate and commit my template until shortly before a release more than once (and thus having poor translation coverage on newly added strings), I decided to automate this part of the process as well. All it took was a relatively small script to generate the template, and then if there were any changes, commit and push to the branch configured for automatic import in Launchpad. The following script does just that, by searching for any files using gettext calls starting with _(" or _(', and passing them to xgettext.


#!/bin/bash
set -e
ack-grep "_\([\"\']" -l | xargs xgettext --output=wxbanker/po/wxbanker.pot
ACTUALCHANGES="`bzr diff | grep \"^[\-\+]msg\" | wc -l`"
if [[ "$ACTUALCHANGES" != "0" ]]; then
bzr ci -m "automated generation of translation template"
bzr push :parent
fi


Note that if you aren't using Python, you may need to tweak the regular expression supplied to ack-grep. Once the template is generated, the diff is piped through grep to grab any changes to actual messages and make sure there was at least one. Otherwise there would always be changes due to the timestamp in the template, causing useless commits.

I then threw this script into a Hudson job, the Continuous Integration server I use for wxBanker. I configured this particular job to run nightly, pulling down the latest bzr branch beforehand, and emailing me on any failures.

It seems to be working quite well and ensures translators are always translating the latest strings and leaves nothing for me to forget, smoothing out the release process.

If this sounds interesting to you but you're not familiar with Launchpad as a translation system, check out http://blog.launchpad.net/general/trying-out-launchpad-translations and feel free to ask any questions here. If you do have experience with translations, how do you handle generating translation templates and then integrating the translations?

Recent developments

January 19th, 2010 by mhr3
It's been a while since there were some interesting Awn news from me, but fortunately moonbeam has been filing the gap with his posts on the task-manager popup menu customization and also his work on network-manager adaptation for use in Awn.

I've been mostly looking over the core bugs reported at Launchpad, trying to fix them. Luckily there aren't many, which I suppose either means that we don't have enough bug-filing testers or that this release will be one of the best so far - of course I hope that the second one is the case. :) On the other hand there are quite a few bugs reported for awn-extras project (where most of our applets live) and it isn't always easy to fix bugs there, as some applets are without maintainer (for example Stacks), some maintainers are busy doing other stuff, and of course some applets would need major rewrites and people don't have time for that (Mail applet, Digital Clock, ...). Otherwise said, if you'd like to do some Awn applet development, now is the time. ;)

One of the things that I like is that there were some great updates for a few of our applets - the Weather applet is now finally doing it's networking in a separate thread, which means no more hanging mid-animation during an update and it also started to use one of our new features in Awn 0.4 - overlays - now you can clearly see when there's a network error or the actual network fetch is happening. Kudos to danni for a nice threaded processing queue for python and to onox for implementing this in Weather. Still, Weather is not the only applet using the threaded queue, and sharkbait's Feeds applet is now better than ever with this, not to mention looking great. I only hope that more python applets will try to use this (yes I'm looking at Mail applet).



What I'm personally excited about (and pushed hard to make it happen) is the agreement with Docky's lead developer DBO on a common dock item management DBus API, where various applications can add menu items to things on the dock, change the icon used (for example media-players with album arts) add some text, etc. This has been present in Awn for years, but isn't overly used and moreover the API was crappy, and seeing how everyone is excited about "helpers" in Docky (which do this exact thing) I thought having a common API for this will only benefit all dock users. Though so far the API isn't implemented by us, nor Docky, I believe this will soon change (at least on our side). Of course other dock apps are welcome to join us here.

A few days ago I started to gut our core library (libawn) and the current result is a mix of Vala and C code in there (I rewrote our core AwnApplet class using Vala) and I'm actually running this code and it works as great as the C original (even though compiling it is all kinds of weird - a special shell script instead of proper makefile rule). Ideally this branch will be base for our new major version (probably Awn 0.6) and I'd be happy if more code was rewritten to Vala, though it's not that important (the C code works fine, right? on the other hand being able to easily extend it is very good justification for using Vala). However, I also want to introduce some architectural changes and it'd be nice if some of the API that will be added made it's way also to Awn 0.4, so applet devs could play with it before 0.6 release (though stability-wise it most likely isn't a good idea). Then again, if it will be clear that the release of 0.4 will slip further into the future, I will push to merge this code. All in all, cool stuff is over the horizon!!!

Context Menus Can be Fun!

January 8th, 2010 by moonbeam
Just a quick screencast of the XML based context menus. You can define the menu if you want.


Awn Rewrite Update

December 22nd, 2009 by Sharkbait
It's been a while since I've posted anything about Awn. Development of Awn/Awn Extras shifted to a mostly rewrite of both projects. There are tons of changes; many are summed up in malept's blog post and several posts of moonbeam's blog. I'm going to talk about four (really three) applets.


File Browser Launcher now has GIO support. If Python bindings for GIO are available (since GNOME 2.26/Ubuntu 9.04 I believe), File Browser Launcher is able to manage mountable drives like Nautilus' Places side pane does. If a drive (e.g. flash drive or mounted network place, etc.) is mounted, an eject icon will appear for that drive (as seen in the screenshot) and clicking it will eject the drive. If the place is not mounted but is mountable, clicking it will mount it and (upon success) open it in the file browser.

The applet also has drag-and-drop support, as seen in the recursive screenshot. Dragging a file (or folder) over the applet icon for (currently) 600ms makes the dialog open. (During this time a progress pie chart will appear.) The file can be dropped on any mounted place or bookmark, and it will be moved there. Upon success, the folder will open.

To-Do List received no significant changes, other than working with the rewrite and in the way progress buttons are drawn. Detach support has been removed.


SlickSwitcher is now in Awn Extras. Thanks to work in Awn core, the background and border colors of the applet's dialog can be customized properly. This theming helps with backgrounds that don't quite match the normal dialog background color. The version in Awn Extras is also slightly more RAM-efficient than previous versions. Detach support has also been removed from Slickswitcher.

Feeds Applet is a new applet to monitor Web Feeds. Enter the URLs of RSS or Atom feeds to add them to the applet. Their items are visible from the dialog, and clicking the item opens it in a web browser. You can also log in to your Google Reader account to add it as a feed. Whenever any of your Google Reader feeds is updated, it'll show in the dialog. If Google Reader is the only feed, the icon will turn blue instead of orange. Like with virtually every other applet, you can still drag and drop an icon onto the applet to use that icon instead.

There is an option (enabled by default) to automatically update every five minutes (adjustable). Feeds Applet also has an option (enabled by default) to display standard notifications when a feed is updated. With these two features, you don't need to constantly check your sites or Google Reader for updates.

Like File Browser Launcher, Feeds Applet also has drag and drop support. If you drag and drop a link to an RSS or Atom feed onto the applet icon, it will add that feed. When the dialog is open, you can drag and drop the toggle buttons of the feeds to reorder them. If you drag a feed out of the dialog, you can drop a link to its main page into another app. This may or may not work with your web browser's bookmarks or tab bar, depending on a) which browser it is, and b) how it's feeling that day. (It's sometimes inconsistent.)

Lastly, if logged in to Google Reader, when adding a feed you can search for feeds using the same system as the main Google Reader web interface. This way, you can just type in cnn instead of http://rss.cnn.com/rss/cnn_topstories.rss. It also helps if you want to find multiple feeds about a specific topic, such as Linux or NASA.

There's still a lot more to be done. To-do needs a backend for all its items that's better than awn.Config. Feeds needs OPML import/export. To-do also needs import/export of its list. SlickSwitcher has several little quirks, needs to use the standard text overlay, and needs better background acquiring. To-do also needs to use the standard text overlay. SlickSwitcher and To-do might add drag-and-drop support.

P.S. Can't get enough Planet Awn? Then subscribe to MicroPlanet Awn!

Open Letter to Sherman Alexie

December 4th, 2009 by Mark

While going through my backlog of TV shows from the past week, I was watching the Colbert Report from Tuesday (December 1). During his interview with Sherman Alexie, I heard something that sounded rather offensive to my ears. Skip to 3:14 to hear it.

For those of you who hate Flash or don't wish to watch the video, the context here is that Colbert is asking why he doesn't allow his books to be digitized. His response, up to the point which I reference above, was the typical response about how the music industry is losing money because of the rampant piracy, and that the only way to make money is via live shows. And then he makes this statement:

[...]and with the open-source culture on the Internet, the idea of ownership, of artistic ownership goes away.

Mr. Alexie, to use a colloquialism: What have you been smoking? I know that you're BFF with The Stranger, but this is ridiculous. You're supposed to be intelligent, not ignorant. There are a couple of things that are inaccurate with your statement.

First, I'm pretty sure you're referring to the Free culture movement. "Open source", while it can refer to non-technical ideas, is more closely associated with software and its licenses. But I'm being pedantic.

Secondly (and more importantly), where does the idea of ownership go away? Maybe if you release the work into the public domain, sure. However, the majority of "free culture licenses" (e.g., Creative Commons licenses) ensure that one still owns the work that they create. The significant difference between traditional copyright and those licenses is that certain rights are granted by default, instead of having to ask the author about it. For example, this blog post (and the entire blog, for that matter) is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License (as explicitly stated in the sidebar). What this means is that I have granted noncommercial entities to reproduce (or even "remix") my work (in full or in part) in other works, so long as I am credited, and the work retains the same license. Nowhere did I relinquish my ownership of this blog post. If a commercial entity wants to use my work, or someone wants to reproduce/remix my work under a different license, traditional copyright applies and they have to ask (assuming the use doesn't fall under "fair use").

As one of the literate (see the interview for the reference) and also a dead-tree book lover, I suggest that you read two books, both by Professor Lawrence Lessig: Free Culture and Remix: Making Art and Commerce Thrive in the Hybrid Economy. Both should be available at your local bookstore.

Finally, thank you, Mr. Alexie, for reminding me that I still need to donate to the Creative Commons this year. I want to spread the Free culture movement as quickly as possible, making sure that the views that you expressed are corrected just as quickly.

So you like Network Manager…

December 3rd, 2009 by moonbeam
Just a tease.

Web Developers Wanted

November 19th, 2009 by Natan Yellin

We’re looking for web developers to help out with Zeitgeist’s website. If you have some experience with web development (of any kind) and don’t mind volunteering some time then let me know.

Thanks.