Donate to MediaGoblin, get a chance at free PyCon tickets!

, | Tweet this

MediaGoblin is currently running a fund-raising campaign to raise funds for Chris to work on MediaGoblin for the next year implementing federation, making it easier to install and use, and other features as well.

We just announced that the next 25 people who donate $$200.00 or more will get a chance to get free tickets to PyCon.

That's pretty awesome!

If you've been waiting to support MediaGoblin, now's the time to do it!

Gaia: First week

, | Tweet this

For the next few months, I'm switching projects to help work on Gaia. I essentially started yesterday, but I'm still missing a bunch of pieces, so I haven't actually done any work. What I have done is spent time immersing myself in the project and trying to get my bearings.

Thus this blog post covers how I got my bearings so far.

Gaia is a project in heavy flux and moving fast. The state and stability of things changes day to day. There are things that aren't documented. There are things that are documented that are out of date. There are dozens of etherpads, lists of bugs, wiki pages, and tips and tricks scattered around. This is the way it is currently. Even this will probably change.

However it's not all chaos and entropy. While a lot of things are in flux, some things stay the same. That's why I decided to write this blog post of things I think help get you up and running faster.


This blog post definitely has a lifespan. If you're reading this in 2013, it's probably out of date.

On Monday

Read through these hacking wiki pages:

Join the #gaia and #b2g IRC channels on

Join the dev-gaia mailing list.

Fork and clone the Gaia github repository.

That seems like a short list, but take the time to catalog in your head all the things that are there.

On Tuesday

Go to the Gaia weekly meeting.

Mute and facemute yourself. Make sure to follow along in the Etherpad notes they link to. The meeting I went to used this Etherpad:

About 1/3 of the way down that pad, there's a list of components, who's working on them, their status, etc---that's current as of the time of this writing.

In going to the meeting and reading through the notes, you'll get a sense of who's who, who's working on what, what the current sprint priorities are, and you might also get an indication of where you can help out.

After that, work on getting Gaia working in the B2G desktop nightly build.

The B2G desktop periodically has stability issues. If you run into problems, ask on #gaia on IRC.


I have a ThinkPad x200 running Debian testing and I couldn't get the B2G desktop to work well enough to use. The animations were super slow. I have problems with graphics acceleration on this laptop with other applications, so I'm pretty sure that's the problem. Because of that, I switched to a Macbook Pro running OSX 10.8.

I have no experience with B2G desktop on other systems. I've heard it works fine in Linux in some situations, but I have no clue what the details are.

On Wednesday

Assuming you have everything working so far, now's the time to start looking for bugs to work on and/or testing the existing apps.

As of the time of this writing, the B2G/Triage wiki page has a variety of lists of bugs in various states. There's the P1 and P2 lists in the Gaia section.

Also, I've accumulated these lists, but they may not be valid anymore:

I think the workflow is something like this:

  1. find a bug you can work on that's not assigned to anyone
  2. assign that bug to yourself
  3. work on it
  4. produce a patch --- must include tests!
  5. create a pull request on github
  6. find a reviewer to look at it --- probably want someone who works on that component; ask on #gaia on IRC
  7. go through review until it's good
  8. get someone to land it --- I'm fuzzy on this step, but the person needs commit access to the repository on github; ask on #gaia on IRC

Thursday, Friday, etc

Rinse, repeat.


Hope this helps someone else! I think the important thing is to go to a Gaia weekly meeting.


Random thoughts that didn't fit anywhere else in this hastily written post:

  1. If you bump into incorrect information in the Gaia/Hacking wiki page, please update it or ask someone on #gaia to verify it's incorrect.
  2. If you ask a question and no one replies to you on IRC, wait a bit, then ask again. Folks are busy and in different time zones, but they are paying attention.
  3. If you see anything in this blog post that's incorrect, find me on IRC. I'm willkg.
  4. stands for ""
  5. FTU stands for "first-time-usage"

Also, I overheard this on IRC and it helped:

<fzzzy> here's something important to understand about ffos:
there's b2g, and there's gaia

<fzzzy> b2g is the big compiled blob of c++ and some js modules

<fzzzy> gaia is all js, but it is preprocessed into a profile

<fzzzy> if you double-click, you get a gaia profile
that is inside of the app

<fzzzy> if you run b2g-bin from the command line, you can pass
the -profile /path/to/profile flag, and b2g will use that gaia

<fzzzy> it just depends if you want to just kick the tires, or
actually hack on gaia itself

Django Eadred v0.1 released! Django app for generating sample data.

, | Tweet this

I work on a few projects that had a need for generating sample data to make it easier for new contributors to get up and running quickly with little effort. These projects are fairly data-driven---they're kind of useless without data.

To satisfy that need, we wrote an app in richard to generate sample data across all the other apps in the project. Then I rewrote it for input.

Then we had a hankering for it in SUMO, plus I thought it made sense to turn it into its own app. So I spun it out into its own project.

Thus django-eadred was born.

Generally, it allows you to define a module with a generate_sampledata function that takes command line options to generate sample data for any app you want to generate sample data for.

You can use it to define different ways of generating sample data specified by the command line.

You can use it to generate random data, non-random data, initial data, data for contributors, sample data for large data sets, fixture data, etc.

Check out for use cases, documentation and project details.

Donate to GNU MediaGoblin! Help us cross the chasm!

, | Tweet this

The GNU MediaGoblin project is raising funds to allow Chris Webber to work on it full time for the next year. The project has done really well over the last year and a half and has come a long way. However, there's a bunch of work that needs to be done and the sooner it gets done, the better. Essentially, we're staring at a chasm between "bootstrapping the project" where we needed enough to grow a community and have something people can build on and "1.0" where it's generally usable by our target audience.

Because of that, Chris quit his job at Creative Commons to work on MediaGoblin full time in a valiant attempt to get us across that chasm.

There are a lot more details on the MediaGoblin campaign page and a movie that Chris and Deb put together that explain why and why now.


Support GNU MediaGoblin!

Please help fund MediaGoblin so we can get across that chasm!

Please Tweet, Dent, Facebook, blog and otherwise get the word out, too! Use the campaign url when you do. That helps a ton! Thank you!

Blog update: October 11th, 2012

, | Tweet this

I spent the greater part of my free time over the last two weeks reworking my blog.

Before it ran on Pyblosxom as a CGI process (yes---a CGI process). It had accrued a decade of sediment, redirects, hacks, hacks on hacks, etc (yes---a decade). It was kind of messy and---worse---it really impaired my ability to blog easily. That sucked.

Now it runs on Pyblosxom, but it's statically rendered with a post-receive hook from a git repository. The work flow for blogging is a lot easier and I can test things out locally before pushing them live. I also ditched a bunch of silly things in the blog.

I also ditched comments. I might at some point switch to using something like, but most of the time people were writing comments as a response or a reply to me---not intending to be part of a bigger discussion with other readers. Given that, I ditched comments. No sense in spending the time maintaining them if they don't really get used. Instead, email me.

pyvideo status: September 14th, 2012

, | Tweet this

What is is an index of Python-related conference and user-group videos on the Internet. Saw a session you liked and want to share it? It's likely you can find it, watch it, and share it with


I posted the videos for SciPy US 2012 earlier today. They're missing summaries and Carl is forwarding me a bunch of data correction requests. I'll work through that over the next few days.

SciPy 2012 had ok metadata. I spent about 3 hours on SciPy 2012 over the last few weeks.

Next in the hopper are PyCon AU 2012, DjangoCon US 2012 and PyCon DE 2011. You can see the queue of conferences here.

Thinking about a tip jar takes a lot of time. Plus the software it runs on is pretty cool and could/should be used for other domains. This is less of a hobby and more of a part-time job.

I've been (slowly) working on collaboration features in richard that make it easier to delegate the work to other people. Even with that, I'll be spending a lot of time on this.

One thing I was thinking about doing was adding a tip jar sort of thing to My questions to you are:

  1. is that offensive?
  2. is this site valuable enough to you that you would tip me?
  3. what systems are good for this sort of thing? PayPal? gittip?

pyvideo status: September 6th, 2012

, | Tweet this

What is is an index of Python-related videos on the Internet. For the most part, it's a collection of videos from Python-related conferences. Saw a session you liked and want to share it? It's likely you can find it, watch it, and share it with


I posted the videos for EuroPython 2012 last night. Many thanks to Omar who pulled together metadata for the conference.

If you look at the videos on the site, the data is kind of a mess. I spent a bunch of time reconciling issues with the data from the YouTube feed with data from the EuroPython 2012 site and fixed a lot of issues, but there's still a lot left to do.

I spent about 10 hours working on the data for EuroPython 2012.

My current plan is to leave it like this for now and forge ahead to catch up with other conferences from 2012. Then I'll go back and continue working on a system for crowd-sourcing metadata fixes. That will make it easier for anyone to fix data they see is wrong and also remove me as a bottleneck to a better index of Python video.

I'm working on SciPy 2012, PyCon AU 2012, and PyCon DE 2011. You can see the queue of conferences here.

pyvideo status: August 31st, 2012

, | Tweet this

What is is an index of Python-related videos on the Internet. For the most part, it's a collection of videos from Python-related conferences. Saw a session you liked and want to share it? It's likely you can find it, watch it, and share it with


I posted the videos for EuroPython 2011 last night. Many thanks to N who pulled together metadata for the conference. That saved me gobs of time.

I want to work on EuroPython 2012 next. I've pulled all the data in the YouTube channel, however, the description and speaker data isn't easily available. Best I can find is which isn't in a form I can do much with.

I could really use some help! I need someone to either find a conference organizer and ask them for the data in some easy-to-parse format or scrape it. If possible, a JSON format would be great, but I can do any format that has a parser in the Python stdlib, database dumps, and probably other formats as well.

The key pieces of information I need are these:

  • title (this lets me match it up to the YouTube data I already have)
  • list of speakers
  • summary (short summary about the talk---sometimes called abstract)
  • description (longer-form description of the talk)
  • language the talk is in (English? Italian? ...)

Bonus points:

  • everything is in utf-8
  • summary and description are marked up in HTML

If you can help, please email me at willkg at bluesock dot org.

Thank you!

Update: Omar sent me an XML file with all the EuroPython 2012 metadata. I'm pretty sure I'm all set now. Thank you Omar!

pyvideo status: August 19th, 2012

, | Tweet this

What is is an index of Python-related videos on the Internet. For the most part, it's a collection of videos from Python-related conferences. Saw a session you liked and want to share it? It's likely you can find it, watch it, and share it with


I've been working with Carl from NextDayVideo to get the API working so that he can push straight from his system to after he's done his post-processing for a conference. That'll mean that conferences his company videos will make it to pyvideo a lot faster. That's good because they video a lot of Python-related conferences.

In the process of doing that, I made a lot of headway on fixing the richard API and also steve.

Wait, what? Who are all these people?

So, richard is the video index website software that runs It has an admin that allows you to add videos one by one, but there's no way to add a collection of videos and no way to batch-process videos. Each conference is pretty different. I decided it would be far too time-consuming to write one web ui that could do everything I need if only because I don't really know what I need because each conference is different. Instead, I decided to write a command line utility and library of utility functions that make it easy to script something for a specific set of videos. That's steve.

Today I finished up enough of steve to do PyCon AU 2011. I'm also in the middle of a couple of other conferences, but since PyCon AU 2012 is happening right now, I figured I'd switch gears and finish that one first. It took about 3 hours for 30 videos. That's not bad considering I spent some of that time fixing bugs in steve.

Anyhow, this is a milestone in the whole richard/steve/ thing.

The future

The future is that I don't want to be doing all this work. Going forward, I want other people to use steve to build a bunch of JSON files that they send to me. Then I'll curate that and add it to the site. In this way, it spreads the work around and I don't have to do it all.

The future also allows anyone to suggest fixes to the data for videos that are already on in a way that I can go through a queue of these fixes and approve/deny them quickly. In this way, we continue to have a curated index of videos, but it's easy to suggest fixes and thus more likely they'll happen.

Both of those are down the road, but definitely before the end of this year.

Both of those are really important because a single person can't run an index of videos this size.

That's where things are at! I'll be working through the conference backlog slowly over the next few months.

ElasticUtils v0.4 released!

, | Tweet this

What is it?

ElasticUtils is a Python library for building and executing ElasticSearch searches.

v0.4 released!

I released v0.4 a couple of days ago. This release adds new functionality, fixes some issues, adds more tests, and includes improved documentation.

On top of that, we removed the requirement for Django and moved the Django-aiding components into elasticutils.contrib.django. I personally like this because it makes it much easier to write test scripts to see how things react.

For the complete list of what's new, What's new in Version 0.4.

If you have any questions, let us know! We hang out on #elasticutils on