<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jonobacon@home</title>
	<atom:link href="http://www.jonobacon.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jonobacon.org</link>
	<description>At home with Jono Bacon, Community Manager and Author</description>
	<lastBuildDate>Tue, 16 Mar 2010 22:20:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ubuntu Global Jam: Time To Rock The House</title>
		<link>http://www.jonobacon.org/2010/03/16/ubuntu-global-jam-time-to-rock-the-house/</link>
		<comments>http://www.jonobacon.org/2010/03/16/ubuntu-global-jam-time-to-rock-the-house/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 21:18:13 +0000</pubDate>
		<dc:creator>jono</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.jonobacon.org/?p=2545</guid>
		<description><![CDATA[As many of you wonderful people of the Internet should be intimately aware of, the Ubuntu Global Jam takes place from the 26th &#8211; 28th March 2010. That is only a few weeks away, and while we have some great events already set up, we need more!

I just wanted to highlight how simple it is [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="A" class="cap"><span>A</span></span>s many of you wonderful people of the Internet should be intimately aware of, the <a href="https://wiki.ubuntu.com/UbuntuGlobalJam">Ubuntu Global Jam</a> takes place from the <strong>26th &#8211; 28th March 2010</strong>. That is only a few weeks away, and while we have some great events already set up, we need more!</p>

<p>I just wanted to highlight how simple it is to put together an event. I explained much of this in my recent live videocast today:</p>

<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" id="utv80034" name="utv_n_992283"><param name="flashvars" value="loc=%2F&amp;autoplay=false&amp;vid=5495004" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/video/5495004" /><embed flashvars="loc=%2F&amp;autoplay=false&amp;vid=5495004" width="480" height="386" allowfullscreen="true" allowscriptaccess="always" id="utv80034" name="utv_n_992283" src="http://www.ustream.tv/flash/video/5495004" type="application/x-shockwave-flash" /></object></p>

<p><em>Can&#8217;t see it? Watch it <a href="http://www.ustream.tv/recorded/5495004">here</a>!</em></p>

<p>I was keen to summarize much of the key points here though so this post can be linked to so we can spread some best practice around how easy it is to put together an event.</p>

<p><em>Ubuntu Global Jam</em> events are simple events designed to get Ubuntu users and contributors in the same room to work together and contribute to Ubuntu. This can happen through any means: testing, documentation writing, working on a LoCo team, development or whatever else. The key focus here is on getting people together and having fun with Ubuntu.</p>

<p>Let&#8217;s look at how to put together an event. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<h3>Step 1: Pick a date</h3>

<p>The <em>Ubuntu Global Jam</em> takes place on three days:</p>

<ul>
<li>Fri 26th March 2010</li>
<li>Sat 27th March 2010</li>
<li>Sun 28th March 2010</li>
</ul>

<p>The first step is to pick a date for the event to happen. There is no fixed time of how long a jam should be it: it could be a few hours or a few days: it does not need to take place on all days. Just pick the times that work well for you. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<h3>Step 2: Pick a venue</h3>

<p>The next step is to pick a place to hold your event. One of the misconceptions about global jam events is that they need to be big, professional, full-on events. Not at all! Many are simple, low-key events that are pretty much like most LUG meetings: a group of Open Source fans getting together to have fun and work on Ubuntu together.</p>

<p>When choosing a place I recommend you ensure the following are available as a bare minimum:</p>

<ul>
<li>Enough seating for ten or so people.</li>
<li>An freely available Internet connection.</li>
<li>Optional but preferable is access to refreshments (e.g. in a coffee shop).</li>
</ul>

<p>A few great options for venues are:</p>

<ul>
<li>Coffee shops</li>
<li>Bars</li>
<li>University/school buildings</li>
<li>Restaurants</li>
<li>Homes</li>
<li>If it is a nice day, what about a picnic at a park? <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>

<p>Importantly, you often don&#8217;t need to inform the venue that you are going. Just choose a venue (e.g. a coffee shop) and just show up like any other day.</p>

<h3>Step 3: Add your event</h3>

<p>The next step is to add your event to the list of events that are going as part of the <em>Ubuntu Global Jam</em>.</p>

<p>We are in the process of moving over to our <a href="http://loco.ubuntu.com">dedicated LoCo teams LoCo directory</a> but as we are in a transitional period, we are also asking LoCo teams to list their events on the old wiki page too. As such, to add your events just follow these instructions:</p>

<h4>The LoCo Directory</h4>

<p>To add an event to the LoCo directory you will need to be a member of your LoCo team in Launchpad.</p>

<ol>
<li>Go to <a href="http://loco.ubuntu.com">http://loco.ubuntu.com</a> and in the top right on the page, log in.</li>
<li>Click the <em>Venues</em> link.</li>
<li>Check to see if the venue you are holding your event at is in the list. If not, click the <em>Add new venue</em> link and add the venue to the system.</li>
<li>Click <a href="http://loco.ubuntu.com/events/team/add/">here</a> to straight to the page to add a new event. On that page, click on the team that the event will be happening as part of and then fill in the form. Be sure to select <em>Global Jam</em> in the <em>Related Global Event</em> drop-down box.</li>
</ol>

<h4>The Wiki Page</h4>

<p>Simply go to <a href="https://wiki.ubuntu.com/UbuntuGlobalJam/Events">this page</a>  and add your event to it.</p>

<h3>Step 4: Build some buzz!</h3>

<p>Now is the time to spread the word about your event and encourage people to come along! Here are some ideas:</p>

<ul>
<li>Be sure to tweet/dent, and post on Facebook about the event. When you add the event to the LoCo directory you will have a link to point people at (e.g. my event&#8217;s link is <a href="http://loco.ubuntu.com/events/team/39/detail/">this</a>) &#8211; send multiple messages to remind people of the event and keep it upfront in their minds.</li>
<li>Blog it &#8211; particularly if your blog appears on one of the planets.</li>
<li>Post to your LoCo&#8217;s mailing list &#8211; let them know about the event, when it is and where it is.</li>
<li>Post to local LUG mailing lists &#8211; let your local LUGs know: many people may want to come along and join the event!</li>
<li>Put up fliers &#8211; fliers in libraries, computer shops, universities and at the  venue itself are great ways to get people to join you.</li>
<li>Website buttons &#8211; why not create some website buttons so attendees can put them on their website and link to your event page in the LoCo directory.</li>
</ul>

<p>And that&#8217;s it! If you have any questions, here are a few useful resources:</p>

<ul>
<li><a href="http://lists.ubuntu.com/mailman/listinfo/loco-contacts">Mailing List</a> &#8211; this is where the LoCo community discuss general LoCo related topics. In most cases cases <a href="https://lists.ubuntu.com/#Ubuntu+Worldwide+LoCo+Teams">teams have mailing lists too</a>.</li>
<li><code>#ubuntu-locoteams</code> on Freenode &#8211; this is an online discussion channel where you can ask questions and socialize with other LoCo community members.</li>
</ul>

<p>I look forward to seeing you good folks organizing your events and having a great time! <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonobacon.org/2010/03/16/ubuntu-global-jam-time-to-rock-the-house/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Unleashing The Ubuntu LoCo Directory</title>
		<link>http://www.jonobacon.org/2010/03/16/unleashing-the-ubuntu-loco-directory/</link>
		<comments>http://www.jonobacon.org/2010/03/16/unleashing-the-ubuntu-loco-directory/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 20:55:57 +0000</pubDate>
		<dc:creator>jono</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.jonobacon.org/?p=2540</guid>
		<description><![CDATA[One of the most wonderful sub-communities in the Ubuntu world are our LoCo Teams; the global span of Ubuntu advocacy groups that are out there every day helping to spread the word about Ubuntu. These wonderful people are on the front-lines helping people to get started with Ubuntu and providing a fantastic place to meet, [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="O" class="cap"><span>O</span></span>ne of the most wonderful sub-communities in the Ubuntu world are our <a href="https://wiki.ubuntu.com/LoCoTeams">LoCo Teams</a>; the global span of Ubuntu advocacy groups that are out there every day helping to spread the word about Ubuntu. These wonderful people are on the front-lines helping people to get started with Ubuntu and providing a fantastic place to meet, greet and have fun with other Ubuntu users and contributors.</p>

<p>In terms of resources for this community, we have the following key components:</p>

<ul>
<li><a href="https://wiki.ubuntu.com/LoCoTeams">Wiki Pages</a> &#8211; these wiki pages include best practise and details about how to join the community.</li>
<li><a href="https://wiki.ubuntu.com/LoCoTeamList">Teams List</a> &#8211; this is the big list of teams, complete with contact details and online resources.</li>
<li><a href="http://lists.ubuntu.com/mailman/listinfo/loco-contacts">Mailing List</a> &#8211; this is where the LoCo community discuss general LoCo related topics. In most cases cases <a href="https://lists.ubuntu.com/#Ubuntu+Worldwide+LoCo+Teams">teams have mailing lists too</a>.</li>
<li><code>#ubuntu-locoteams</code> on Freenode &#8211; this is an online discussion channel where you can ask questions and socialize with other LoCo community members.</li>
</ul>

<p>One component we have been keen to fix is the <em>listing of LoCo teams and associated resources and events</em>. We have discussed this over a few UDSs and I am pleased to show off some work that has been going into making our LoCo portal really effective. Thanks to the wonderful LoCo Directory hackers who have been feverishly working away on this project. You can go and play with it at <a href="http://loco.ubuntu.com">http://loco.ubuntu.com</a>.</p>

<p>The LoCo directory looks like this:</p>

<p><img src="http://farm5.static.flickr.com/4025/4438417565_b2e5a69578_o.jpg" width="600"></p>

<p>Right now it has the following key features:</p>

<ul>
<li><strong>Teams</strong> &#8211; a list of all the LoCo teams in the community.</li>
<li><strong>Venues</strong> &#8211; a list of venues used by LoCo teams (useful so you don&#8217;t need to repeatedly enter new venue information each time you organize and event and also good for sharing good venues with other LoCo team members).</li>
<li><strong>Events</strong> &#8211; events can be saved to the system and associated with LoCo teams as well as global events such as the <a href="http://wiki.ubuntu.com/UbuntuGlobalJam">Ubuntu Global Jam</a>.</li>
</ul>

<p>If you click on the <em>Teams</em> link you can see the list of LoCo teams:</p>

<p><img src="http://farm3.static.flickr.com/2681/4438417613_4ee5526389_o.jpg" width="600"></p>

<p>This is the full list of teams. Teams that have a humanity colored Ubuntu circle of friends next to them are <em>Approved</em> teams, otherwise it is colored gray and indicates the team is not yet approved. Already this makes finding teams much nicer for new Ubuntu members: just point them at <a href="http://loco.ubuntu.com/teams/">http://loco.ubuntu.com/teams/</a> <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p>When you click on a team you see more information about the team and their resources/events. As an example, here is my local team <em>Ubuntu California</em>:</p>

<p><img src="http://farm5.static.flickr.com/4039/4439194632_5fb3bc67ef_o.jpg" width="600"></p>

<p>The team information page shows some key details such as the owner, admins, when the team is next up for re-approval and also links to a series of resources such as websites, IRC channels, forums etc. The page also rather nicely shows their logo. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p>Not only this, but the page also shows a list of events that have been organized by the team. In the screenshot above there are two events (they are a little squashed, that is a bug). Clicking on an event shows the details for that specific event. As an example, here are the details for the <em>Ubuntu Global Jam</em> event that I have organized in a few weeks time:</p>

<p><img src="http://farm5.static.flickr.com/4056/4439194690_6521b0fc67_o.jpg" width="600"></p>

<p>When you view an event you can see when it is, what it happens, the location, a map reference and a description. There is also an area where you can RSVP for an event to confirm your attendance or non-attendance: this is a great way of determining how many people are likely to show up to your event.</p>

<p>The way the LoCo directory works is to suck as much information out of Launchpad where possible about teams and then it builds in some of the other features (such as events) into the LoCo directory. This avoids duplication of data and uses Launchpad for key features such as access control and owner/admin information.</p>

<p>Great work, LoCo directory hackers! <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonobacon.org/2010/03/16/unleashing-the-ubuntu-loco-directory/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Lucid Community Progress</title>
		<link>http://www.jonobacon.org/2010/03/16/lucid-community-progress/</link>
		<comments>http://www.jonobacon.org/2010/03/16/lucid-community-progress/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 00:01:31 +0000</pubDate>
		<dc:creator>jono</dc:creator>
				<category><![CDATA[Canonical]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.jonobacon.org/?p=2531</guid>
		<description><![CDATA[As many of you will know, I manage the Ubuntu Community team at Canonical where Daniel Holbach, Jorge Castro and David Planella work. Together we strive to make the Ubuntu community a fun, productive and engaging environment. This work involves a tremendous range of diverse disciplines and projects.

One thing that we have been really keen [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="A" class="cap"><span>A</span></span>s many of you will know, I manage the Ubuntu Community team at <a href="http://www.canonical.com/">Canonical</a> where Daniel Holbach, Jorge Castro and David Planella work. Together we strive to make the Ubuntu community a fun, productive and engaging environment. This work involves a tremendous range of diverse disciplines and projects.</p>

<p>One thing that we have been really keen to facilitate in Ubuntu is an ethos of <em>just do it</em>. I really believe our community should feel engaged to be creative in their ideas and be able to get out there and do it, with plenty of support resources so others can help them achieve their goals. I am keen that we don&#8217;t have a bottleneck where creativity is limited. Of course, this happens from time to time, but we are always keen to resolve it where possible.</p>

<p>While Ubuntu has a great many projects going on at any one time, some of these projects I explicitly put on my radar so I can help contribute to make them successful, and some of these are projects that I have been happy for me and my team to commit their time to. Each of these projects is scoped for a six month cycle, and when we get a little closer to the 10.10 cycle we will start thinking of where we will focus our time in that cycle too.</p>

<p>In the Lucid cycle I was keen to track work on this set of projects in a more effective way. To do this the process worked a little like this:</p>

<ol>
<li>We first had a series of discussions at both UDS and online in which we discuss each project, what is involved and what targets and goals are in scope for the Lucid cycle. Targets beyond the Lucid cycle were explicitly deferred until the 10.10 cycle.</li>
<li>The conclusions generated from these discussions were first documented as a <em>Roadmap</em> on the Ubuntu wiki. This provides a high-level set of goals that the project is striving for.</li>
<li>We then produced a <em>Blueprint</em> for each project and a set of actions that are assigned to people. The blueprint is what we use to track progress on the project. The actions are stored in the whiteboard on the blueprint (which anyone can edit) and anyone can subscribe to the blueprint, which makes it great for keeping on track projects even if you are not involved in them.</li>
</ol>

<p>The actions in the blueprint are stored in a set format, like this:</p>

<pre><code>[jonobacon] An example action: TODO
</code></pre>

<p>In the above example, it clearly states who the action is assigned to (<code>jonobacon</code> on Launchpad), what it is (<code>an example action</code>) and it&#8217;s status (<code>TODO</code>). When an action is completed it is set to <code>DONE</code> and if we decide we want to bump it to next cycle, it is marked as <code>POSTPONED</code>.</p>

<p>This process in itself offers some key benefits:</p>

<ul>
<li>Commitments to a given project are clearly scoped to a cycle.</li>
<li>Work is assigned to people: this is a great way of getting things done. Project Management theory has long taught that publicly assigning work to people improves it&#8217;s chances of getting done.</li>
<li>Transparent: anyone can subscribe to a blueprint. As an example, even though I am not managing the <em>Desktop Experience</em> team or contributing to their projects, I am interested in their work, so I subscribe to a number of their blueprints. Each time the state of an action changes, I then get an automated email with the update. This is great for keeping up to date with their work.</li>
</ul>

<p>With a bunch of blueprints that follow this format, I then approve a number of them as projects that my team will help have oversight on and help them to succeed. Some of these projects are driven by my team and I, but many of them are entirely community driven projects that I assign my team to have oversight over.</p>

<p>The legendary Martin Pitt then wrote a script to take this range of blueprints and actions and generate a <a href="http://people.canonical.com/~pitti/workitems/canonical-community.html">burndown chart</a>. Here is my team&#8217;s as of today:</p>

<p><img src="http://farm5.static.flickr.com/4036/4436013933_2389c1f2ca_o.jpg" width="600"></p>

<p>It works like this: the Y axis is the number of actions in the blueprints I have approved for my team, and the X axis is the time until the end of the cycle (it is a little shorter as the graph was regenerated). The thick line through the middle of the chart is the <em>trend line</em>. My responsibility as a manager is to help keep the number of completed actions (shown as green) under the trend line: this ensures that we are on track for completing the committed actions throughout the cycle.</p>

<p>This was a pretty new concept for our community and of course the community is not expected to follow this way of working, but I have been stunned at how everyone has worked hard to stick to the actions they committed to and see the work through. As such this has felt like a really great cycle with some stunning work going on. Thanks everyone for your contributions!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonobacon.org/2010/03/16/lucid-community-progress/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Download Files Async With Gio And Python</title>
		<link>http://www.jonobacon.org/2010/03/15/download-files-async-with-gio-and-python/</link>
		<comments>http://www.jonobacon.org/2010/03/15/download-files-async-with-gio-and-python/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 19:37:40 +0000</pubDate>
		<dc:creator>jono</dc:creator>
				<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Opportunistic Developers]]></category>

		<guid isPermaLink="false">http://www.jonobacon.org/?p=2527</guid>
		<description><![CDATA[Recently I asked for some help on how to download a file without blocking the GUI. Thanks to everyone who contributed their expertise in the post comments: I now have my program working great.

I wanted to now share my conclusions so that others can benefit from them too. To do this I am going to [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="R" class="cap"><span>R</span></span>ecently I <a href="http://www.jonobacon.org/2010/03/15/downloading-large-files-async-with-gio/">asked for some help on how to download a file without blocking the GUI</a>. Thanks to everyone who contributed their expertise in the post comments: I now have my program working great.</p>

<p>I wanted to now share my conclusions so that others can benefit from them too. To do this I am going to first explain how this works, and secondly I have created a Python Snippet and added it to the <a href="https://wiki.ubuntu.com/PythonSnippets">Python Snippets library</a> so there is a great working example you folks can play with. You can use Acire to load the snippet and play with it. This is the first <code>gio</code> snippet, and I hope there will be many more. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p>The goal I set out with was to download a file without freezing the GUI. This was somewhat inspired from <a href="http://shotofjaq.org/2010/03/going-async/">a recent Shot Of Jaq</a> shot that we did on async programming, and I used this app as a good example to play with. Typically I had downloaded files the manual way and this had blocked my GUI hard, but I was aware that this is exactly what <code>gio</code>, part of the GNOME platform is here to solve.</p>

<p>The way async basically works is that you kick off an operation and then you wait for confirmation of the result before you proceed. It is the opposite of procedural programming: you don&#8217;t kick off an operation and in the next line process it. When you do things the async way, you start an operation and then tell it what callback should be called when it is complete. It feels very event-driven: kind of how you connect a handler to a signal in a widget so that when that signal is generated, the handler is called.</p>

<p>When I started playing with this the docs insinuated that <code>read_async()</code> and <code>read_finish()</code> were what I needed to use. I started off with code that looked a little like this:</p>

<pre><code>def download_latest_shot(self):
    audiourl = "http://....the url to the Ogg file...."

    self.shot_stream = gio.File(audiourl)
    self.shot_stream.read_async(self.download_latest_shot_complete)
</code></pre>

<p>It then calls this callback:</p>

<pre><code>def download_latest_shot_complete(self, gdaemonfile, result):
    f = self.shot_stream.read_finish(result).read()

    outputfile = open("/home/jono/Desktop/shot.ogg","w")
    outputfile.writelines(f)
</code></pre>

<p>After some helpful notes from the GNOME community, it turned out that what I really needed to use was <code>load_contents_async()</code> to download the full content of the file (<code>read_async()</code> merely kicks off a read operation) and <code>load_contents_finish()</code> as the callback that is called when it is complete. This worked great for me.</p>

<p>As such, here is the snippet which I have added to the <a href="https://wiki.ubuntu.com/PythonSnippets">Python Snippets library</a> which downloads the Ubuntu HTML index page, shows it in a GUI without blocking it and writes it to the disk:</p>

<pre><code>#!/usr/bin/env python
#
# [SNIPPET_NAME: Download a file asynchronously]
# [SNIPPET_CATEGORIES: GIO]
# [SNIPPET_DESCRIPTION: Download a file async (useful for not blocking the GUI)]
# [SNIPPET_AUTHOR: Jono Bacon &lt;jono@ubuntu.com&gt;]
# [SNIPPET_LICENSE: GPL]

import gio, gtk, os

# Downloading a file in an async way is a great way of not blocking a GUI. This snippet will show a simple GUI and
# download the main HTML file from ubuntu.com without blocking the GUI. You will see the dialog appear with no content
# and when the content has downloaded, the GUI will be refreshed. This snippet also writes the content to the home
# directory as pythonsnippetexample-ubuntuwebsite.html.

# To download in an async way you kick off the download and when it is complete, another callback is called to process
# it (namely, display it in the window and write it to the disk). This separation means you can download large files and
# not block the GUI if needed. 

class Example(object):
    def download_file(self, data, url):
        """Download the file using gio"""

        # create a gio stream and download the URL passed to the method
        self.stream = gio.File(url)

        # there are two methods of downloading content: load_contents_async and read_async. Here we use load_contents_async as it
        # downloads the full contents of the file, which is what we want. We pass it a method to be called when the download has
        # complete: in this case, self.download_file_complete
        self.stream.load_contents_async(self.download_file_complete)

    def download_file_complete(self, gdaemonfile, result):
        """Method called after the file has downloaded"""

        # the result from the download is actually a tuple with three elements. The first element is the actual content
        # so let's grab that
        content = self.stream.load_contents_finish(result)[0]

        # update the label with the content
        label.set_text(content)

        # let's now save the content to the user's home directory
        outputfile = open(os.path.expanduser('~') + "/pythonsnippetexample-ubuntuwebsite.html","w")
        outputfile.write(content)

ex = Example()

dial = gtk.Dialog()
label = gtk.Label()
dial.action_area.pack_start(label)
label.show_all()
label.connect('realize', ex.download_file, "http://www.ubuntu.com")
dial.run()
</code></pre>

<p>I am still pretty new to this, and I am sure there is plenty that can be improved in the snippet, so feel free <a href="https://wiki.ubuntu.com/PythonSnippets">submit a merge request</a> if you would like to improve it. Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonobacon.org/2010/03/15/download-files-async-with-gio-and-python/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ubuntu Global Jam Videocast</title>
		<link>http://www.jonobacon.org/2010/03/15/ubuntu-global-jam-videocast/</link>
		<comments>http://www.jonobacon.org/2010/03/15/ubuntu-global-jam-videocast/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 18:56:21 +0000</pubDate>
		<dc:creator>jono</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.jonobacon.org/?p=2522</guid>
		<description><![CDATA[


Ladies and Gentlemen of the Internet, on Tues 16th March at 11am PST / 2pm EST / 6pm GMT I will be doing a live At Home With Jono Bacon videocast dedicated to the Ubuntu Global Jam; the fantastic global event taking place from 26th &#8211; 28th March 2010 in which Ubuntu contributors get together [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><img src="http://farm5.static.flickr.com/4035/4249692992_1b3885a75a_o.jpg" width="600"><br />
<img src="https://wiki.ubuntu.com/UbuntuGlobalJam?action=AttachFile&#038;do=get&#038;target=ugj09_button_orange_250x148_en.png"></p>

<p><span title="L" class="cap"><span>L</span></span>adies and Gentlemen of the Internet, on <strong>Tues 16th March</strong> at <strong>11am PST / 2pm EST / 6pm GMT</strong> I will be doing a live <a href="http://www.ustream.tv/channel/at-home-with-jono-bacon">At Home With Jono Bacon</a> videocast dedicated to the <a href="https://wiki.ubuntu.com/UbuntuGlobalJam">Ubuntu Global Jam</a>; the fantastic global event taking place from <em>26th &#8211; 28th March 2010</em> in which Ubuntu contributors get together in the same location to have fun and work on Ubuntu.</p>

<p>In the videocast I will talk about:</p>

<ul>
<li>What is the <em>Ubuntu Global Jam</em>?</li>
<li>What are events like?</li>
<li>How do you organize an event?</li>
<li>Q + A</li>
</ul>

<p>This is a great opportunity to get the low-down on the <em>Ubuntu Global Jam</em> and how to get involved. Be there!</p>

<p><strong><a href="http://www.ustream.tv/channel/at-home-with-jono-bacon">Watch the videocast live here!</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonobacon.org/2010/03/15/ubuntu-global-jam-videocast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Downloading Large Files Async With GIO</title>
		<link>http://www.jonobacon.org/2010/03/15/downloading-large-files-async-with-gio/</link>
		<comments>http://www.jonobacon.org/2010/03/15/downloading-large-files-async-with-gio/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 06:19:06 +0000</pubDate>
		<dc:creator>jono</dc:creator>
				<category><![CDATA[Desktop]]></category>

		<guid isPermaLink="false">http://www.jonobacon.org/?p=2519</guid>
		<description><![CDATA[Slightly technical question for my friends on Planet GNOME. I have been hunting around for some help online with no luck, so I figured I would post here and hopefully this blog entry can be a solution for those who have similar questions.

I am in the process of porting App Of Jaq to to async. [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><span title="S" class="cap"><span>S</span></span>lightly technical question for my friends on <a href="http://planet.gnome.org">Planet GNOME</a>. I have been hunting around for some help online with no luck, so I figured I would post here and hopefully this blog entry can be a solution for those who have similar questions.</p>

<p>I am in the process of porting <em>App Of Jaq</em> to to async. To do this I am using <code>gio</code> and have the code that downloads XML feeds up and running pretty well, and the app feels much more responsive. Now I need to have the application download an Ogg asynchronously without freezing the GUI.</p>

<p>My code currently looks like this:</p>

<pre><code>def download_latest_shot(self):
    audiourl = "http://....the url to the Ogg file...."

    self.shot_stream = gio.File(audiourl)
    self.shot_stream.read_async(self.download_latest_shot_complete)
</code></pre>

<p>It then calls this callback:</p>

<pre><code>def download_latest_shot_complete(self, gdaemonfile, result):
    f = self.shot_stream.read_finish(result).read()

    outputfile = open("/home/jono/Desktop/shot.ogg","w")
    outputfile.writelines(f)
</code></pre>

<p>Now, I am still pretty new to this, and while this code does work, it freezes the GUI pretty hard. Can anyone recommend some next steps for how I can download the file without it freezing? Some example code would be great. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p>Thanks in advance for anyone who can help. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonobacon.org/2010/03/15/downloading-large-files-async-with-gio/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Unwrapping The Community Manager at OSBC in San Francisco</title>
		<link>http://www.jonobacon.org/2010/03/12/unwrapping-the-community-manager-at-osbc-in-san-francisco/</link>
		<comments>http://www.jonobacon.org/2010/03/12/unwrapping-the-community-manager-at-osbc-in-san-francisco/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 02:05:18 +0000</pubDate>
		<dc:creator>jono</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.jonobacon.org/?p=2516</guid>
		<description><![CDATA[

I just wanted to let you good people of the Internet know that I will be delivering a brand new talk entitled Unwrapping The Community Manager at OSBC in San Francisco at 11.40am on Thu 18th March 2010.

In the presentation I will be deconstructing the role of community manager and discussing:


who needs a community manager?
what [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><img src="http://farm3.static.flickr.com/2715/4425539835_47b4209b88_o.jpg" width="600"></p>

<p><span title="I" class="cap"><span>I</span></span> just wanted to let you good people of the Internet know that I will be delivering a brand new talk entitled <strong>Unwrapping The Community Manager</strong> at <a href="http://www.osbc.com/">OSBC</a> in San Francisco at <strong>11.40am</strong> on <strong>Thu 18th March 2010</strong>.</p>

<p>In the presentation I will be deconstructing the role of <em>community manager</em> and discussing:</p>

<ul>
<li>who needs a community manager?</li>
<li>what does the role involve?</li>
<li>where should he/she report?</li>
<li>what are requirements for improving the opportunity for success?</li>
<li>what are the risks?</li>
</ul>

<p>I will also be sharing my experiences working with Ubuntu and other organizations. I hope to see some of you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonobacon.org/2010/03/12/unwrapping-the-community-manager-at-osbc-in-san-francisco/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>System 76 Lemur Review</title>
		<link>http://www.jonobacon.org/2010/03/10/system-76-lemur-review/</link>
		<comments>http://www.jonobacon.org/2010/03/10/system-76-lemur-review/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 02:49:04 +0000</pubDate>
		<dc:creator>jono</dc:creator>
				<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://www.jonobacon.org/?p=2509</guid>
		<description><![CDATA[This blog entry represents the views of me, myself and I, and does not represent the views of my employer (Canonical) or System 76. While I have decided to write a review of this specific machine, there are many vendors out there who ship Ubuntu on their machines and this review does not favor System76 [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><em><span title="T" class="cap"><span>T</span></span>his blog entry represents the views of me, myself and I, and does not represent the views of my employer (Canonical) or System 76. While I have decided to write a review of this specific machine, there are many vendors out there who ship Ubuntu on their machines and this review does not favor System76 over these other vendors. Heck, I am happy to review their machines too if they want.</em> <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p>Recently I got one of these new <a href="http://www.system76.com/">System 76</a> ultra-thin laptops, the <a href="http://www.system76.com/product_info.php?cPath=28&amp;products_id=97">Lemur</a>:</p>

<p><img src="http://www.system76.com/images/lemu1_top_large.jpg" width="600"></p>

<p>System76 are well known in the Open Source community for shipping Ubuntu on their machines, being active community members and for helping LoCo teams with machines too. I have never owned a System76 box so I thought this was a good opportunity to give it a ride and share some feedback.</p>

<p>So first, the specs:</p>

<ul>
<li><strong>Display</strong>: 14.0&#8243; HD WXGA Super Clear Ultra-Bright LED backlit (1366 x 768)</li>
<li><strong>Graphics</strong>: Intel GMA 4500MHD graphics</li>
<li><strong>Audio Output</strong>: Intel High Definition Audio</li>
<li><strong>Networking</strong>: Gigabit LAN (10/100/1000), WiFi</li>
<li><strong>Wireless</strong>: 802.11 agn</li>
<li><strong>Expansion</strong>: Express Card 34 slot</li>
<li><strong>Ports</strong>: HDMI, VGA, 3 x USB 2.0, Headphone Jack, Microphone Jack, SD Reader</li>
<li><strong>Camera</strong>: Built-In 1.3 MP Webcam</li>
<li><strong>Security</strong>: Kensington® Lock</li>
<li><strong>Power Management</strong>: Suspend &amp; Hibernate</li>
<li><strong>Battery</strong>: Lemur UltraThin Li-Polymer Battery Pack</li>
<li><strong>AC Adapter</strong>: includes one AC adapter</li>
<li><strong>Dimensions</strong>: 13.38&#8243; x 9.09&#8243; x 0.90&#8243; (WxDxH)</li>
<li><strong>Weight</strong>: 3.5 lbs</li>
</ul>

<p>The machine I got has an <em>Intel Core 2 Duo SU7300 1.3 GHz 800 MHz FSB 3 MB L2 (10 Watt)</em>, <em>4GB RAM (DDR3 1066 MHz 1 DIMM)</em> and a <em>80 GB Intel X25-M Solid State Drive</em>.</p>

<p>Now, in the interests of full disclosure: I don&#8217;t really do reviews, so this is going to be a quick run through the details, not a 150-picture unboxing and War And Peace epic of every minor detail of the machine. I just wanted to get my experience down as quickly as possible so I could share my feedback with others.</p>

<h2>The Machine</h2>

<p>OK, let&#8217;s zip through the summary:</p>

<p>The machine is a really sleek looking bit of kit. The first thing that struck me is how well designed it feels: it doesn&#8217;t feel like a randomly thrown together collection of components. It is thin and incredibly light, and has a very Apple-ish feel to it. It passed what I am calling the <em>Lost Test</em>: that is, when laid in bed at night watching <em>Lost</em> on <a href="http://www.hulu.com/lost">Hulu</a> with said laptop rested on your chest (for that IMAX effect), how many episodes can you get though before you feel like your heart is about to overheat and stop working. It&#8217;s lightness and lack of heat helped it pass with flying colors.</p>

<p>The screen looks great, doesn&#8217;t seem to smudge easily and is nice and bright. I like the fact it is a widescreen, something I miss with my current Thinkpad.</p>

<p>The keyboard is pretty much ok: it ain&#8217;t no Thinkpad keyboard, but of all the laptops I have owned and that are buried in my laptop graveyard, the Lemur&#8217;s keyboard feels better than most. The keys are wide enough and I love the fact that there is no Windows key, but instead an Ubuntu key. I want to see more of that, yes I do. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p>The trackpad is long and feels pretty good, and the buttons don&#8217;t look like buttons but instead areas on the trackpad near the bottom where you can push down: this makes it look really sleek. Unfortunately at first the buttons are a little hard to press, but I have noticed that they are getting easier, so I think they just need breaking in a little.</p>

<p>With the current configuration of processor and RAM, this thing is <em>shit off a shovel fast</em>. It zips along like no-ones business, and Ubuntu is up and running in a matter of seconds. While I didn&#8217;t test any hardcore 3D games on there, it runs Compiz great with the extra effects switched on.</p>

<p>Sounds works great, the speakers sound surprisingly good and the built-in webcam works well too. Finally, the battery life seems fine in terms of life, but not outstanding. Then again, I am used to my extra-long-life Thinkpad batteries.</p>

<p>My only real gripe believe it or not is the packaging the machine comes in: it visually looks cheap with a large generic &#8220;notebook&#8221; logo and doesn&#8217;t reflect the swishness of the machine encased inside it. I spoke to Carl Richell, founder of System76 about this and he has acknowledged it is an issue and they are keen to fix it: he said they really want every essence of the System76 experience to feel sleek. Good man. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<h2>The Default Install: Ubuntu 9.10 Karmic Koala</h2>

<p>It is just incredible driving back from picking up a computer from the UPS warehouse and knowing that it already has Ubuntu pre-installed. I have never bought a pre-installed Ubuntu computer before, so I was curious to see how it looked. I got it home, switched it on and it threw up the installer&#8217;s configuration settings: I entered my details and the system was ready to roll. I was left with pretty much a default installation of Ubuntu: there is not the horrible bundled collection of software you don&#8217;t want and ugly vendor wallpaper that you find if you buy a typical Windows pre-loaded machine. Good work System76 on shipping what I consider a great representation of Ubuntu.</p>

<p>Other than that, nothing much to say: everything just works as you would expect.</p>

<h2>Running Lucid</h2>

<p>Being part of the Ubuntu development team, I was keen to get Lucid on there. I used Update Manager to update to Lucid and installation was smooth. Once again everything works: any bugs that I have found have not been specific to this machine, but replicated on my other Lucid machine. What is really noticeable is boot speed on the SSD: it is <em>bonkers fast</em>.</p>

<h2>Conclusion</h2>

<p>In conclusion, I think the Lemur is a beautiful machine, and combined with what I consider a beautiful Operating System, particularly with the new fit and finish of Lucid. When running the Lemur it really feels like great design in hardware and software meeting well. I would happily recommend this machine to others. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonobacon.org/2010/03/10/system-76-lemur-review/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>I Never Realized&#8230;</title>
		<link>http://www.jonobacon.org/2010/03/09/i-never-realized/</link>
		<comments>http://www.jonobacon.org/2010/03/09/i-never-realized/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 22:14:55 +0000</pubDate>
		<dc:creator>jono</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.jonobacon.org/?p=2506</guid>
		<description><![CDATA[&#8230;that this part of my desktop could feel so sleek:



Ubuntu 10.04 Lucid Lynx, we are ready for you.  
]]></description>
			<content:encoded><![CDATA[<p>&#8230;that this part of my desktop could feel so sleek:</p>

<p class="first-child "><img src="http://farm3.static.flickr.com/2684/4421089860_db2e9af909_o.jpg"></p>

<p><span title="U" class="cap"><span>U</span></span>buntu 10.04 Lucid Lynx, we are ready for you. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonobacon.org/2010/03/09/i-never-realized/feed/</wfw:commentRss>
		<slash:comments>47</slash:comments>
		</item>
		<item>
		<title>International Women&#8217;s Day</title>
		<link>http://www.jonobacon.org/2010/03/08/international-womens-day/</link>
		<comments>http://www.jonobacon.org/2010/03/08/international-womens-day/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 19:49:41 +0000</pubDate>
		<dc:creator>jono</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.jonobacon.org/?p=2502</guid>
		<description><![CDATA[

Today is International Women&#8217;s Day, and it provides an opportunity for the world to focus on women&#8217;s rights, and society&#8217;s attitudes towards women. International Women&#8217;s Day has been celebrated since the early 1900&#8217;s and has been a key milestone through many key events that have affected women&#8217;s rights and is now recognized as a national [...]]]></description>
			<content:encoded><![CDATA[<p class="first-child "><img src="http://farm5.static.flickr.com/4027/4417917546_6e62f76bbe_o.gif" hspace="10" align="left"></p>

<p><span title="T" class="cap"><span>T</span></span>oday is <a href="http://www.internationalwomensday.com/">International Women&#8217;s Day</a>, and it provides an opportunity for the world to focus on women&#8217;s rights, and society&#8217;s attitudes towards women. <em>International Women&#8217;s Day</em> has been celebrated since the early 1900&#8217;s and has been a key milestone through many key events that have affected women&#8217;s rights and is now recognized as a national holiday in China, Armenia, Russia, Azerbaijan, Belarus, Bulgaria, Kazakhstan, Kyrgyzstan, Macedonia, Moldova, Mongolia, Tajikistan, Ukraine, Uzbekistan and Vietnam.</p>

<p>When I first heard of <em>International Women&#8217;s Day</em>, I was unsure of how I can contribute to celebrating the day and raising awareness of women&#8217;s rights. On the website one approach it advises is:</p>

<blockquote>
  <p>The tradition sees men honouring their mothers, wives, girlfriends, colleagues, etc with flowers and small gifts. In some countries IWD has the equivalent status of Mother&#8217;s Day where children give small presents to their mothers and grandmothers.</p>
</blockquote>

<p>I think this is wonderful opportunity inside our global communities to do exactly this: to not only celebrate the contributions of women in our projects, campaigns and passions, but to also talk about ways in which we can break down the barriers and attitudinal prejudices that some women still face, particularly in largely male dominated software communities. Today is a great day for equality: let&#8217;s all make the most of it. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p><img src="http://ubuntu-women.org/uw.png"></p>

<p>As part of <em>International Women&#8217;s Day</em>, the <a href="">Ubuntu Women</a> team have been running a competition to gather a collection of stories that share how women discovered Ubuntu and their experiences of joining our community. I thought this was a wonderful initiative: it really speaks to strong experiences of how Ubuntu can enable women to join a collaborative community, and how technology can be a true enabler.</p>

<p>Of the many stories submitted, there were to be two winners: one picked by the community, and I was given the honor of picking the second. Thankyou to the <em>Ubuntu Women</em> team for involving me in the unveiling of the winners, and this morning I announced both winners, read out their stories, and also read out a third that I thought was excellent too. Congratulations to <em>Elvira Martinez</em> and <em>Karen Y. Perez</em> for winning, and to <em>Jen Phillips</em> for getting read out too.</p>

<p>The video from this morning is below:</p>

<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" id="utv551066" name="utv_n_320718"><param name="flashvars" value="loc=%2F&amp;autoplay=false&amp;vid=5288115" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/video/5288115" /><embed flashvars="loc=%2F&amp;autoplay=false&amp;vid=5288115" width="480" height="386" allowfullscreen="true" allowscriptaccess="always" id="utv551066" name="utv_n_320718" src="http://www.ustream.tv/flash/video/5288115" type="application/x-shockwave-flash" /></object>
<br />
<em>Can&#8217;t see it? <a href="http://www.ustream.tv/recorded/5288115">Click here</a>!</em></p>

<p>With today being <em>International Women&#8217;s Day</em>, I just want to share a few quick words on the women in my life. I have the privilege of having some incredible women as part of my life. In my family there is my wife, my mum, auntie&#8217;s, cousins and other relatives, the many wonderful female friends both online and offline, and every day I have the pleasure of working with some truly remarkable women in the Open Source world, throughout the various communities I am part of. There has been much discussion, particularly in the Open Source community, about how we can encourage more women into our communities, and there has been some friction between different approaches. I don&#8217;t see today as a day in which those debates should flourish, but as a day in which we should celebrate the women in our lives who help us flourish. Everyone single one of us has women who contribute so much to our lives and empower us every day, and I am thankful for all the women who bring color to my life, and give me the strength and energy to be who I am. <img src='http://www.jonobacon.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonobacon.org/2010/03/08/international-womens-day/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
