Tuesday, December 21, 2010

Diving into EC2 and Auto Scaling

I'm rather new to EC2 (and as a result its CloudWatch / Auto Scaling features), so I figured I'd post about my current thoughts and see if anyone can tell me if I'm on the right track! I'm writing everything up as I go, so hopefully it will make a solid blog post for others in the future for going from zero to EC2 + Auto Scaling.

Based on my initial research, it looks like the stack will be comprised of:
Any yays or nays on this stack? One particular curiosity I had is if Mathiaz's guides would be simpler in Maverick, since they were written for Lucid and it seems like each release brings improvements for both EC2/UEC and Puppet. I'll also have to figure out how to put some of the roles behind a load balancer, but that's for later.

Thanks for any suggestions! Once I've got it all figured out I'll put up a somewhat comprehensive guide, unless one already exists that I've missed.

Monday, April 26, 2010

Is Intel the answer to Broadcom wireless problems?

While I love my Dell XPS 1330 as an Ubuntu laptop, I've been growing quite tired of my Broadcom wireless card that came in it (I swore it had Intel wifi when I bought it). It requires downloading drivers to work (this can lead to a bit of a bootstrapping problem), and seems to frequently drop connections or have issues connecting.

I'm assuming this is due to Broadcom's poor drivers, particularly 64-bit (I remember kernel panics and lack of WPA2 in the not-too-distant past), and was assuming an Intel card would clear my problems right up.

Has anyone had problems with Broadcom and fixed them by switching to Intel? If so, could you offer any suggestions as to if I might want the Intel 4965, 5100, or 5300 card?

Thanks, dear Ubuntu Planet and other readers!

Monday, February 22, 2010

Why I Switched from Ubuntu One back to Dropbox

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!

Sunday, February 7, 2010

wxBanker 0.7: simple personal finance

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.

Tuesday, February 2, 2010

Automating translation template generation and check-ins for Launchpad

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?