
Some Opportunistic Developer Updates
A few awesome opportunistic developer updates:
* Firstly, I have been adding some parties every day during [Ubuntu Opportunistic Developer Week](https://wiki.ubuntu.com/UbuntuOpportunisticDeveloperWeek). These include a couple of hacking parties in which you should come and join us and hack on your new apps and be around folks to ask for help, answer questions and share progress.
* Secondly, given the interest brewing around *opportunistic developers* on Ubuntu, I have created a new IRC channel called `#ubuntu-app-devel` where you can go to hang out with others writing apps, you can ask questions there, share progress and talk about how we can make Ubuntu a rocking system for harnessing the creative inclinations of *opportunistic developers*.
Rock and roll, my friends. 🙂

App Of Jaq
In the continued mission to inspire and encourage opportunistic developers to write cool little apps that scratch an itch, no matter how specific and niche, I have started work on *App Of Jaq*: a desktop app that scratches my itch to build the [Shot Of Jaq](https://www.shotofjaq.org/) experience right into the desktop. The first cut of the app will:
* Provide simple and easy access to listening to the latest shot, using GStreamer to play back the shot.
* Have the ability to tweet/dent/Facebook the latest shot with one-click using the Gwibber API.
* List latest shots for one-click playback.
* Show recent comments where you can click them to display them inside *App Of Jaq* and reply – this is shown using GtkMozEmbed.
* Keep *right up to date* with the latest comments as *App Of Jaq* shows latest comments in a pop-up bubble using notify-osd.
* Get one-click access to all the latest shots and other *Shot Of Jaq* resources with an application indicator menu.
Let’s take a look at a couple of screenshots:
*The main window*.
*The application indicator: I don’t have the Shot Of Jaq icons yet, so I used the distributor-logo (hence the Ubuntu logo)*.
I am still working on the first release but hope to have it ready in the next few weeks and added to a PPA. Ultimately, I am keen to replace the web view of the comments and have a native GTK-driven commenting interface, bypassing the website entirely. I am also keen to build our new *Shot Of Jaq* karma system into the desktop app too. I am going to leave these features for the second release though.

Proud To Be a Son
Today my dad was informed that he will be awarded a masters degree at Cambridge University where he has been studying recently. While I am overflowing with pride over his achievement, what really makes me smile is the incredible journey that led him there.
Born and raised in the Dales in North Yorkshire, he came from a frugal rural upbringing in a large working-class family. They didn’t have much, but he always made the most out of what he did have, never complaining, always dreaming, leading him on step by step through a range of adventures, each underlined with his phenomenal sense of values, and an unwavering commitment to family and hard work.
His life so far has been a rich tapestry of diversity, with just a few of his experiences including being a welder, running multiple car dealerships, managing a multimedia software project, being a hypnotherapist, a magistrate, a nightclub owner, a mayor, a pub landlord, and currently running an antiques business in conjunction with my mum who has embarked on her own incredible journey to become one of the top master restorers in England.
While his daily routine has differed over the years, his values have not. He is the purest definition of *good person* that I have ever met. He has spent his life committed to doing the right thing, often challenged by adversity. He has always defended those without a voice, often putting his own personal circumstances and comfort levels into a state of flux. He fought for voting rights for women in working mens clubs in the UK, campaigned for the safety of residents near rail crossings in the town I was born in, stood up against inferior safety provisions in his workplace to protect his workmates, he took his old friend Ray to the 50th anniversary D-Day memorial in Normandy and went to great lengths to obtain replica medals as Ray had lost his many years previous. These are just a few examples from a patchwork of experiences stitched together with kindness.
He has not only been the perfect father, but a true inspiration for a son. He taught me a strong set of values, each illustrated by his experiences; experiences shared but never lectured, and from my earliest childhood memory I can remember him and my mum both encouraging and defending my right to an opinion, under the premise it was shared fairly and with empathy for other people’s views.
So, while I sit here beaming from cheek to cheek with pride over my dad who started with nothing and made something while never compromising who he is and where he came from, it makes me realize just how incredibly fortunate I am to have been blessed by such an incredible mentor. I love you dad, and I have never been so proud of you as I am today.

Ubuntu Opportunistic Developer Week Update
Earlier this week I announced the plan to put together [Ubuntu Opportunistic Developer Week](https://wiki.ubuntu.com/UbuntuOpportunisticDeveloperWeek): a week of IRC tuition sessions aimed at helping opportunistic developers scratch their itches and write fun and useful programs using our awesome platform. The week takes place from **1st – 6th March 2010**.
The response so far to the call for sessions has been fantastic, and we already have the following sessions scheduled, all visible from [the timetable for the week](https://wiki.ubuntu.com/UbuntuOpportunisticDeveloperWeek):
* Welcome! Ubuntu For Opportunistic Developers – Jono Bacon
* Gooey Graphics with GooCanvas – Rick Spencer
* Getting your app in Launchpad with Bazaar – David Futcher
* CouchDB support in your app with DesktopCouch – Stuart Langridge
* Creating stunning interfaces with Cairo – Laszlo Pandy
* Creating a PyKDE app – Rich Johnson
* Creating an application from scratch with Quickly – Rick Spencer
* Microblog from your app with the Gwibber API – Ken VanDine
* What’s new in Quickly 0.4 – Didier Roche
* Building in Application Indicator support – Sense Hofstede
* Writing a Rhythmbox plug-in – Stuart Langridge
* Create games with PyGame – Rick Spencer
* Write Beautiful Code (and Maintain it Beautifully) – rockstar
* Using GTK+ signals in Python – Sense Hofstede
* Integrated development workflow with Ground Control – Martin Owens
* Building multimedia into your app with GStreamer – Laszlo Pandy
* Speed your development with quickly.widgets – Rick Spencer
* Web browsing and rapid UI with WebKit – Ryan Paul
Each of these sessions is designed to give you a taste of the topic and get you up and running, enough to be productive and start exploring the features of the tool being discussed. In addition to this we will have a series of showcase sessions:
* SHOWCASE: Gwibber – Ken VanDine
* SHOWCASE: Lernid – Jono Bacon
* SHOWCASE: Photobomb – Rick Spencer
These sessions explain the story behind the app: talking about which tools, modules and technology that was used to put these apps together and what challenges were solved. This is a great way to learn more about tools available for opportunistic developers so that when you need to do something, you know which tool to reach out for.
Now, many of you will be entirely new to Python and entirely new to coding. To give you folks a head start before the week kicks off, Rick Spencer from the desktop team will be running some beginners Python tuition sessions on the Thursday before *Ubuntu Opportunistic Developer Week*:
* Thu 25th Feb 2010 – 15.00 UTC – Ubuntu Opp Dev Week Prep: Intro to Python for total beginners – Rick Spencer
* Thu 25th Feb 2010 – 16.00 UTC – Ubuntu Opp Dev Week Prep: Intro to Python for programmers – Rick Spencer
We are still looking for sessions, and if you want to contribute and give one, just drop me an email at jono AT ubuntu DOT com.
All of this awesome content is best experienced using [Lernid](https://wiki.ubuntu.com/Lernid) and I have asked Michael, the new Lernid maintainer if he can roll a new release this weekend. So, expect a new Lernid packaged and ready for the week of opportunistic goodness. If you would prefer to use a normal IRC client, just join `#ubuntu-classroom` and `#ubuntu-classroom-chat` to join in the fun. 🙂
Rock and opportunistic roll, my friends. 🙂

Fixing Bugs The Opportunistic Way
Recently I announced [Project Awesome Opportunity](https://wiki.ubuntu.com/OpportunisticDeveloperWorkflow); an ambitious goal to build awesome collaboration facilities into Ubuntu that makes working together on projects as simple as possible. *Project Awesome Opportunity* is not just about coding: it is about people opportunistically creating things that scratch their itches. This could could anything from software to learning materials and more.
The project targets three primary use cases:
1. **Creating a software project** – creating and working on a project be as simple as possible using the wonderful [Quickly](https://wiki.ubuntu.com/Quickly) as a tool.
2. **Collaborating on content** – working together with Bazaar and sending content to Launchpad.
3. **Fixing a Bug** – taking the pain out of how you grab a bug to fix and contribute your fix back to the project.
I just wanted to follow up with the third of these three goals which Martin landed in [Ground Control](https://www.launchpad.net/groundcontrol) this week. Let me explain how it works.
Imagine you want to fix a bug. I created an example bug to do this demo:
To get started, you first go to your `Projects` directory and you can see some buttons:
Let’s now see how you can grab a project. Click the *Fetch Project* button and a dialog pops up where you can type in a project name which is hosted on Launchpad:
As you can see above, when you search, the projects are listed below. Just select the project and click *OK* and a directory appears in your `Projects` directory:
If you double-click on that directory you will see a few different buttons. We want to fix a bug, so click the *Fix Bug* button:
You will now see a dialog box where you can search for a bug within the project. When you search for a bug name or number the bugs appear. Click on the bug you want to fix and click the *OK* button:
Now a branch of the code will be downloaded to your directory:
When the code is downloaded the directory is named after the bug number:
You can now double-click on the directory and see the code:
Let’s do a simple change and add the following content to the `README` file:
#################################
##### THIS IS A TEST CHANGE #####
#################################
When you have made some changes, you will see a new *Upload Fix* button in the file browser:
When you click that button you will now see a dialog box where you can enter what changes you made to the project (this is a commit message, and useful adding details about your bug fix):
Click *OK* and another dialog box will appear, this time asking for a content for a merge proposal – a merge proposal is a request to the owners of the project to merge your bug fix into the main code base. Enter a message and click *OK*:
The fix will then be uploaded and your merge proposal made and you can now see a *View Request* button:
When you click the button your browser will show the merge request page where you can have a conversation with the project developers about your proposed merge, work out any kinks and otherwise collaborate together:
In addition to making the merge proposal, *Ground Control* also attaches your branch with the fix to the original bug report:
This process takes a significant level of complexity out of the process of fixing bugs and streamlines the developer on the bookends of the process: identifying what you want to fix and submitting the fix. This gives the developer more time to focus on the bug fix itself, which in my mind is the point of great developer tools.
For this feature to flourish and for us to rock the socks off *opportunistic developers* everywhere, we are going to need *your* help, particularly with testing and where possible bug fixes. Here are the main ways in which you can help:
* **Fixing Bugs** – Martin is largely a one man band on this project and he needs help fixing [Ground Control Bugs](https://bugs.edge.launchpad.net/groundcontrol). If you are interesting in helping, see the [bug list here](https://bugs.edge.launchpad.net/groundcontrol) and get involved. He will love you and I will hail you. 🙂
* **Testing** – Testing is critical to this project. We have a tight timeframe on this, so we need you to help. How do you test? Simple, [grab the dailly PPA](https://edge.launchpad.net/~groundcontrollers/+archive/dailybuilds) of Ground Control set up by the awesome Nathan Handler, test it and [report bugs](https://bugs.edge.launchpad.net/groundcontrol/+filebug).
The next step is building in top-level support for the awesome [Quickly](https://wiki.ubuntu.com/Quickly) model of creating new applications and working on those applications at a code/UI and development level. This will neatly mesh together the application development ease of use of use in Quickly and the integration with Launchpad with Ground Control. Didier is a total rock star with Quickly, and 0.4 is sounding awesome, and I am excited to see how these tools will work together and make opportunistic development accessible for all.

KDE Application Indicators In GNOME
Something we have been spending some time working on in this cycle has been fixing the mess that is the system tray. This is based upon an [awesome specification submitted to Freedesktop by KDE](https://www.notmart.org/misc/statusnotifieritem/index.html). The spec has been implemented by KDE, we have written an implementation for the GNOME panel and it shipped in Ubuntu 10.04 Lucid Lynx Alpha 2.
This work has a range of benefits:
* Better usability: no more confusing mix of left and right click menu options.
* Multiple indicators can be scrubbed: click once and move your mouse between them instead of having to click multiple times.
* Icons are properly spaced.
* Separate panel icons can be specified which helps improve theming.
* **Better KDE and GNOME integration**.
I have blogged about this work before, but I had not yet seen the last bullet in action. Here, my friends, is the KDE application Kopete running in GNOME having it’s indicator rendered using GTK menus and respecting GTK icons where appropriate:
Of course, the equivilent happens running GNOME/GTK+ applications in KDE. Rocking!
We have also started adding application indicator support to many of the applications we ship in Ubuntu, and of course these patches are going upstream as they are written. Over the next week or so patches for Brasero, gnome-bluetooth, gnome-control-center, Vino, gnome-disk-utility, and gnome-power-manager will be sent upstream, and we have already sent Nautilus and Rhythmbox patches upstream. We have also seen the community create application indicator patches for Transmission, LottaNZB, Lernid and more.
If you would like to add this rocking support for your app, take a look at [this guide](https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators) and feel free to hang out in `#ayatana` on Freenode.

Social From The Start
Twitter, identi.ca and Facebook have become an increasingly common medium in which people are communicating. While Google Wave vies to be the next generation of communication (as we waxed lyrical about [on the recent Shot Of Jaq](https://shotofjaq.org/2010/02/riding-the-wave/)), in reality email and microblogging are unlikely to be unseated as primary methods of communication. Naturally, we want to make these methods of connecting people rock good and hard in Ubuntu.
Today Ken VanDine uploaded a new Gwibber to Lucid which adds improved reliability, multi-column views, a new theme and more. It looks like this:
*I love you Ryan Paul. I cried 140 individual tears of joy.*
This leads me to a simple conclusion:
Goodbye Tweetdeck. You suck considerably more than Gwibber.
No more ugly Adobe Air app. No more closed source Twitter client. No more lack of identi.ca support. No more horrible notification bubbles. Instead, sweet, native, effortless microblogging, right from my Ubuntu desktop. A veritable ass kicking at at it’s finest.
Now, this is cool in of itself, but then combine it with the ability to tweet/dent right from the Me menu:
Microblogging built in, sleek and elegant. I am stoked, and Gwibber is rocking the house. Also, if you are the opportunistically development minded, don’t forget that you can build microblogging support into your apps with Gwibber’s API too, and there will be a session on how to do this at [Ubuntu Opportunistic Developer Week](https://wiki.ubuntu.com/UbuntuOpportunisticDeveloperWeek).

International Women’s Day Comp: Get Your Entries In!
Look at this lovely bag of swag:
*Image courtesy of Melissa Draper.*
Want to own all this goodness, including Ubuntu Backpacks, women’s t-shirts, key chains, 1 year digital subscription to Linux Pro Magazine or a 1 year print subscription Ubuntu User, and a copy of the The Art of Community by some beardy community guy?
On January 10, 2010 the Ubuntu Women Project announced an International Women’s Day Competition; an awesome effort to gather wonderful stories of how women have discovered Ubuntu. From [the announcement](https://lists.ubuntu.com/archives/ubuntu-women/2010-January/002406.html):
> Ubuntu-Women has tried in the past to find some way to celebrate this event, but as far as I can remember it has never really amounted to much other than some chattering on IRC. So let us try a bit harder for 2010!
> We have all come to Ubuntu in our own special ways — every single one of us differently to the next. Yet one of the most common questions we get asked is “How can I get $woman to use Ubuntu?”.
> Obviously we cannot really answer that question, but we would dearly love to have a collection of stories by women about how they discovered Ubuntu. Such a repository would allow us to demonstrate that there’s no one definitive answer, and at the same time maybe provide the gift of inspiration to women who are interested — showing them that it’s really not so unusual to be Ubuntu fans after all.
> We are not expecting any particular length, but do remember that these stories should be suited to perusal at leisure and not require someone to allocate hours of their day to read. Anywhere between a few paragraphs and a OO.o Write page is ideal.
Two prizes up for grabs. One prize pack will be given to the story that the community votes is their favourite. One prize pack will be given to a randomly drawn entrant. I have been given the pleasure of drawing this entrant in a videocast, and announcing both winners to the world on March 8th. Thanks to the Ubuntu Women project for asking for to do this. 🙂
So, get your entries in to ubuntuwomen.competition at gmail.com by 23:59UTC on 22nd February 2010. Rocking!

Ubuntu Opportunistic Developer Week: Call For Participation!
In the continued interests of helping to make Ubuntu rock as a platform for scratching itches and making awesome apps, I am putting together a new online learning event: [Ubuntu Opportunistic Developer Week](https://wiki.ubuntu.com/UbuntuOpportunisticDeveloperWeek), happening online between **1st – 6th March 2010**.
The week will be just like our previous online learning events such as [Ubuntu Developer Week](https://wiki.ubuntu.com/UbuntuDeveloperWeek) and [Ubuntu Open Week](https://wiki.ubuntu.com/UbuntuOpenWeek), but instead providing a week jam packed with awesome sessions about writing applications that scratch your itch, and predominantly focusing on Python tools and frameworks, Bazaar, Launchpad and infrastructure. The goal for the week is give attendees a head start on a given technology useful for applications.
So, I am looking for volunteers. If you feel you could give a tutorial about a given Python module or associated technology (e.g. Glade, Launchpad, Bazaar etc), please drop me an email at jono AT ubuntu DOT com and I will liaise with you to get it scheduled. I am also look for some *showcase* sessions: stories about how you put together an application, how it scratched your itch and what tools you used. Thanks to everyone who contributes to leading a session!
The week has already been added as a [Lernid](https://wiki.ubuntu.com/Lernid) event and I am going to encourage session leaders to create slides for their sessions. As each session is confirmed it will appear in Lernid and on the wiki page. Rocking!

Master Of The Situation
I had a crack at creating some electronic music. I know, *not* metal. I figured I would share this, and I have never done this before, so be gentle. 🙂
Check out *Master Of The Situation* in [MP3](https://jonobacon.com/files/jonobacon-masterofthesituation.mp3) and [Ogg](https://jonobacon.com/files/jonobacon-masterofthesituation.ogg) format.
Created in Cubase with Halion One, a KeyRig and Drumkit From Hell.