From the Canyon Edge -- :-Dustin

Thursday, January 26, 2012

UDW: Pair Programming and Code Reviews in the Cloud

Next week is yet another installment of the Ubuntu Developer Week education series.  If you been wanting to get involved in Ubuntu or Free Software development, or perhaps just hone your existing skill set, please join us in #ubuntu-classroom on irc.freenode.net Tuesday/Wednesday/Thursday next week.  Check the schedule, and hopefully you'll find something that piques your interest.

I'm pleased to note that each member of Gazzang's engineering team will be attending at least two sessions per day!  With today's shrinking education budgets, perhaps you can convince your employer to let you attend some excellent, continuing technical education at no additional expense to them.  Should be an easy sell ;-)

I will be leading an hour long session on Thursday, February 2nd from 18:30-19:30 UTC -- that's 12:30pm-1:30pm in my local Central Standard Time.  My session is on Pair Programming and Code Review in the Cloud.

I've used Pair Programming for years -- ever since I was introduced to the Extreme Programming methodologies in the Tivoli Bootcamp as an intern in 2000.  Pair Programming is a relatively simple concept -- two people, one keyboard and screen.  It's a great way to teach, learn, and review code.  Back then, we were a couple of developers, sitting side by side in the Arboretum in Austin, Texas.

But times have changed!  It's highly unlikely that I'm sitting next to the person I need to pair program with.  Rather, they're sitting somewhere far across the world.

Welcome to 2012!  I'll spend an hour, sharing a screen with a few dozen of you, showing you how some Ubuntu developers work with colleagues across the world, through the Cloud!

I'm going to fire up Amazon's largest instance splurging $2.10 an hour for 60GB of RAM and 16 CPUs.  You hardly need this, but I thought it would be fun.  If nothing else, drop in and have a look at what this kind of hardware looks like :-)  We'll import SSH public keys and users will SSH into a shared Byobu/Tmux session, where I'll demonstrate how to make the most use of our screen resources.  We'll split the window horizontally and vertically, look at code side by side, while still tailing log files and conducting builds.

Prerequisites:

  • A terminal and an SSH client with Internet access
And to maximize your experience:


As a teaser, here's what my terminal currently looks like, and a taste of where we'll get to, in this session.    This session can be detached and reattached later, or even by multiple users at the same time.

I have 8 panes open in a single Byobu session.  The first two windows have some eCryptfs source code (mount.ecryptfs_private.c and pam_ecryptfs.c).  Next, I have a little test window where I'm checking my changes, with a foobar@x220 user logged in, and it's just above a small window where I'm reading some manpage documentation.  To the far right, I'm re-compiling the new ecryptfs sources.  Across the bottom, I'm tailing 4 log files (kern.log, dmesg, auth.log, syslog).  Note that I'm using tail -f and ccze for colorized log files -- which really helps separate warnings and errors (in warm reds and yellows) from the rest (in cool blues and greens).

Hope to Pair Program with you on Thursday!

Cheers,
:-Dustin

Wednesday, January 18, 2012

Video Explanation of ACTA / SOPA

I think it's important for everyone to understand what's at risk here today.  This is a must-see, and well worth 7 minutes of your time...



Dustin

Monday, January 16, 2012

Automatically Swapping Launchpad and Bazaar Identities


I've been a Launchpad.net member since 2006-10-11, when I first created an account to add some debugging information and submit a patch to a bug affecting the xserver on iMac G3s and the Ubuntu 6.06 PowerPC LiveCD, which my wife, Kim, used in her 4th grade classroom.  Wow, those were the days!  I see that that bug is still open :-)  I can't imagine that hardware is even functional anymore....is it?


I was thoroughly impressed with the shear elegance, look, feel, and usability of Launchpad.net.  I was a long time user of SourceForge.net and Bugzilla, and had brushed by at least a dozen other bug trackers.  No other bug tracker or source code system could hold a candle to Launchpad, in my opinion.

In my ~4 years at Canonical, Launchpad.net and Bazaar became the cornerstone and foundation of my day to day development and productivity.  I was absolutely thrilled when Launchpad was open sourced (to relatively little fanfare, sadly).


I've filed and fixed a few minor issues, and worked around some others, and leveraged Launchpad for tools of my own (like ssh-import-id).  And today, I still think Launchpad.net and Bazaar are the best combination of bug tracking, source code management, binary package builders, team building, blueprint tracking out there!

I continue to use Launchpad and Bazaar to manage more than two dozen open source projects.  And now, we're also using commercial Launchpad here at Gazzang now, actively committing to both public and private projects every day.

This introduced a new challenge, for me, though.  I want to make ensure that my commits to Bazaar when I'm "at the office" and working on Gazzang projects are correctly credited to my work email address and identity, and otherwise, they're credited to my personal email address.

This email address is stored in ~/.bazaar/bazzar.conf.  For me, the logic is pretty easy...  I generally work from the office where we have a (mostly) static IP address.  I simply run a cronjob every five minutes that checks my external IP address, and updates ~/.bazaar/bazzar.conf accordingly.  Your logic might differ (perhaps time of day, etc.).  Does anyone know how I might perhaps hook bzr to check the project's name at commit time?  Also, any ideas about how to update $DEBEMAIL in a similar manner?  It's an environment variable, so it's pretty hard/impossible to update that in all of my shells and byobu sessions/windows/splits, and the Debian maintainer rejected a few requests to support $DEBEMAIL in ~/.devscripts.  Other ideas?

My script currently looks something like this:

#!/bin/sh
# $HOME/bin/update-email
work_email="dustin.kirkland@work.example.com"
home_email="dustin@home.example.com"

work_ip="10.9.8.7"
current_ip=$(wget -q -O- http://v4.ipv6-test.com/api/myip.php 2>/dev/null)

if [ "$current_ip" = "$work_ip" ]; then
        sed -i -e "s/<.*>/<$work_email>/g" $HOME/.bazaar/bazaar.conf
else
        sed -i -e "s/<.*>/<$home_email>/g" $HOME/.bazaar/bazaar.conf
fi

And it runs in this cronjob:
*/5 * * * *  run-one $HOME/bin/update-email

Suggestions for improvement?  Leave a note!

Enjoy!
:-Dustin

Wednesday, January 11, 2012

Introducing the Ken Burns Effect in Pictor's Slideshow

I'm a big fan of documentaries.  Especially Ken Burns documentaries.  The National Parks, Jazz, Baseball,  Huey Long -- I love them all!

Ken Burns is particularly famous for a special effect (known as The Ken Burns Effect) of zooming and panning across still pictures.  It's both brilliant and beautiful.

I recently came across an implementation of The Ken Burns Effect written in Javascript, by Will McGugan, introduced in his blog here:
I contacted Will and he was gracious enough to put an AGPL header on his source and I have added it to Pictor.  Now, if you click on the screensaver link on a Pictor picture page, you can cycle through your album in order and your pictures are panned and zoomed like a Ken Burns documentary!

All you need to do is:
  1. Install Pictor
    sudo apt-get install pictor
  2. Symbolically link some albums into /usr/share/pictor/pictures
    sudo ln -sf $HOME/Pictures /usr/share/pictor/pictures
  3. Point a browser to your server's pictor instance
    http://localhost/pictor
  4. Click on an album, click on a picture, and then click screensaver, as below:

Will released his code here as kenburns-1.0.0.zip, which I was thinking of packaging for Ubuntu (rather than statically including it in Pictor).  Would that be useful to anyone else?

:-Dustin

Introducing New Branding and Logos for eCryptfs


The time I have spent around Ubuntu has given me a deep appreciation for the finer points of design, branding, themes, and artwork around software development and user interfaces.  From Ubuntu's elegant color schemes and meticulously kerned fonts, to the careful placement and balance of Ubuntu's logos and Canonical's brandmarks, Ubuntu exudes an exquisite level of polish and professionalism, particularly among free software projects.

With this as a backdrop, I have long wanted to refresh and modernize the logos and branding associated with eCryptfs, as an upstream open source project.  For over six years, the eCryptfs logo has been an ever-so-trite yellow key overlayed on top of a pie chart.


Yawn :-o  I'm pretty sure that "logo" was pulled off of a slide deck for IBM management, when Michael Halcrow and Emily Ratliff originally presented the idea of eCryptfs back in 2004.

So I pitched this idea to my new employer, Gazzang, who, as it turns out, has considerable interest in a healthy eCryptfs community, as it forms the basis for several of our cloud encryption products.  Our CEO, Larry, was thrilled by the idea, and gave Heidi (our director of marketing) financial approval to commission the new art from a professional graphic designer.

We felt that eCryptfs, as an active and vibrant open source project, deserved a logo and a mascot that reflects just that.  Everyone uses a lock or a key to represent encryption, so we thought we'd do something different.  We decided we wanted a stylized animal, in the spirit of Linux's Tux, BSD's Daemon, OpenBSD's Puffy, and of course Ubuntu's every growing zoo!

We settled on the honey badger (Mellivora capensis), inspired by its thick skin and ferocious defensive traits, much as eCryptfs adamantly defends your data against even the most determined attackers (honey badger don't care!)  We are, of course, also saluting the running honey badger Internet meme  :-)

 And the font is modern, crisp, clean, and perhaps a little "techy" even.  The "fs" is highlighted, to note the relationship to the filesystem, as well as help demonstrate the pronunciation of the word -- "ecrypt" and then "fs".


Gazzang has contributed all of this artwork to the eCryptfs project under the Creative Commons CC BY-SA 3.0 license.  We hope you enjoy it as much as we do :-)  Let us know what you think!

Now there is one piece we're still missing.  We don't yet have a name for our snarling cryptographic honey badger.  So we're putting it out to you...  Suggestions?  Drop us a comment below!

:-Dustin

Tuesday, January 10, 2012

Gmail and GPG in Chromium, with cr-gpg!

Once upon a time, I used FireGPG to sign, encrypt, decrypt, and check GPG and PGP messages in Gmail. Sadly, FireGPG eventually withered away, dropping support for Gmail altogether.  Encrypted, authenticated email messaging is very important to me in some specific situations, and for those, I've been using Gmail, but then copying and pasting the data manually back and forth to a command line, and using GPG by hand.

However, I have been extremely excited to see the cr-gpg plugin for Chromium coming along very rapidly, and finally re-enabling email encryption for Gmail!  The plugin is still in an Alpha state, but I've reported a few bugs here, and worked with the developers and helped test others.

I'm pleased to say that I'm now using cr-gpg on a daily basis for encryption/decryption with:

Signature verification is still a little broken in a couple of scenarios, but I've reported these bugs upstream and they're actively being worked.

Here's a couple of screen shots of it in action, first decrypting a message, then encrypting one.







Enjoy,
:-Dustin

Monday, January 9, 2012

Ubuntu Quick Installation Preseed Link Updated!




priority=critical locale=en_US url=http://bit.ly/uinstall


I've maintained for some time now a preseed file (previously called "uquick") that you can use with your Ubuntu Server and Alternate ISO boot options, to quickly and automatically install an Ubuntu server.

That url (http://bit.ly/uquick), has been broken for a month or so since I've left Canonical and all my people.canonical.com/~kirkland/* pages have been purged.

I've actually set up a new bit.ly link at http://bit.ly/uinstall.  This is hosted on a Google Sites page that I own, so I'll be able to maintain it there permanently.  Note that the source is actually under bzr revision control under lp:bikeshed here.

So now, you can boot an Ubuntu Server ISO, press F6 for Other Options, and append the following::

local=en_US priority=critical url=http://bit.ly/uinstall

Enjoy!
:-Dustin

ShareThis