Yearly Archives: 2009

Summer of Etc!

Once again, I’ve left this site for faaaaar too long without letting you all know what I’ve been up to of late (oops). Needless to say, a fair bit has happened in the past few weeks, and it’s probably worth telling you all about this.

Honours, Semester 1 (during semester 2)

Uni study’s been going quite swimmingly of late: both my units of study went pretty well (insofar as I got HDs in them); thesis on the other hand, has only really just started to take off. My research is into the computer vision task fo object detection (for example, finding faces in images), in particular, I’m working on improving the scheme built into the Intel OpenCV Library (Haar Classifier Cascades, if you’re at all interested) by having them consider colour.

One of the deficiencies I’ve discovered during my research is lack of sufficient real-world colour face datasets to perform detection upon: whilst I need in the order of 2000 faces (1000 to train upon, 1000 to test upon), the largest useful academic set is an order of magnitude smaller. For this reason I’m developing my own set. My current intention is to assemble the data set entirely from Creative Commons-licensed data (e.g. from Flickr and Wikipedia) and to release the resultant set under CC licenses too. I expect I’ll give a lightning talk at LCA on this, I’ll also dump a blog post here somewhere about what sort of data I’d like donated.

Summer of Google

One thing that’s looking like it will derail my Honours work slightly happened not too long ago. I applied for a Software Engineering Internship at Google Sydney back in July, and didn’t hear much about it. In late October, however, I very suddenly got contacted about it, and interviewed for the position, and quite happily, I was offered a job. This, amongst other things, involved dropping (almost*) everything for the summer, and moving to Sydney within two weeks, which I guess I’ve done somewhat successfully.

So I’m now working at Google until sometime during the first two weeks of semester (!). My current project involves working on [redacted], to make [redacted] do [redacted]; in related news, the new Sydney offices are pretty damn cool, the food is excellent, and the work is fun. I’m really looking forward to the rest of my time here.

*I guess the most important thing to mention here is that I’m still spending my week-and-a-bit in Wellington for 2010, and that I’ll still be running the Open Programming Languages Miniconf there. I can hardly wait!

LCA2010 Open Programming Languages Miniconf: CFP Closes on Friday!

And this time we mean it!

Our CFP was extended by a month, and now you only have this week to get your presentation proposals in for the LCA2010 Open Programming Languages Miniconf!

Our call for presentations closes on Friday 23 October 2009, so if you’re planning on attending LCA2010 in Wellington in January, and have something to say about doing development with Open Source programming languages, libraries or frameworks, we’d love to hear from you!

We’re looking primarly for standard-length talks (20-25 minutes including questions), but we’ll also consider double-length talks on suitably compelling topics (that’s 40-45 minutes including questions).

Our CFP is available from — if you’ve already read it, you can submit your proposal at


The Open Programming Languages Miniconf is a single-day mini-conference about application development with Open Source programming languages. Featuring talks on a wide range of topics and programming languages, this miniconf aims to bring together open source developers with presentations that share techniques, best practices and values amongst programmers of all open programming languages. OPLM2010 will be held at 2010, in Wellington, New Zealand on January 18.

OPLM2010 is being organised by Christopher Neugebauer and Jacinta Richardson with help from the broader community. You can contact the OPLM2010 organising team at or visit the website at

LCA2010 — I’m registered

Registrations for 2010, being held in Wellington, New Zealand this January opened earlier this week — I’m registered (a bit of a no-brainer, given that I’m running a miniconf this year). Have you registered yet?

Not sure if I mentioned it here, but thanks to the kind generosity of the LCA2010 team, the Open Programming Languages Miniconf has been able to extend its call for presentations by a month. This means that you can now submit your presentations up until October 23 (which is a Friday) — I look forward to seeing another deluge of presentations in a couple of weeks-ish!

AUC /dev/world/2009 and its consequences for the Open Source development community

AUC /dev/world/2009, the Apple University Consortium’s annual student (and university staff) developer conference was held this week in Canberra. DevWorld goes for two days, and consisted (this year) of about 90 enthusiastic Apple developers learning about popular Mac technologies.

This year, as well as being my first DevWorld conference, I was a presenter: I presented a talk about the OS X scripting bridges, with a particular focus on the Python–Objective-C bridge, PyObjC. I rushed through the first half of my talk, and instead of taking ~45 minutes like I’d estimated, I took 30, which means I probably rushed through the back end of the talk as well (though it felt as though I was going pretty slowly!). I was not the only student presenter at this conference, indeed around two thirds of presenters were students at one of the AUC member universities.

As well as my presentation, I was the official photography crew for the conference (with a broken camera for half the conference, too, I might add), wrote a substantial amount of the (ridiculously hard) quiz night, and organised their lunchtime lightning talks, which in my opinion was one of the greater successes of the conference — more than half of the 11 talks were presented by people who had not presented at the conference, and the representatives from Apple Australia were suitably impressed by the quality of the talks.

Coming from an Open Source person’s standpoint, I’m very impressed with the level of developer community that the AUC are able to extract from University students. There is clearly a high level of enthusiasm amongst student Mac and iPhone developers for their chosen platform, which is something that Apple should justifiably be proud of. I am convinced, however, that this enthusiasm is not solely limited to Apple Development, and almost certainly exists for Open Source platforms as well. It is our job as Open Source people to foster this enthusiasm for Free developer platforms and Open Source technology in general amongst the student population.

Our existing conferences do not do enough to encourage students to participate in presentating at them. I will single out LCA in this case, as it is our community’s most visible local conference — what I am pointing out also applies to others. Though there has been a concerted increase in student-related events at LCA (beginning with the Google student event in 2008 and the TUCS UpDNS in 2009), and this certainly establishes ties within the student community, more needs to be done to extend these ties into the broader community.

An appropriate place to start here would be the establishment of a regular student miniconf as of 2011. Student developers make up a significant minority of delegates to LCA, but are seriously underrepresented in both main programme presentations and miniconf presentations. Referencing her experiences on the PyCon papers committee, Anna Martelli Ravenscroft lists 6 reasons why women do not talk enough at conferences, but they apply equally well to student developers at well — fear of inexperience in comparison with other delegates or presenters, fear of presenting a topic that may be irrelevant to other delegates and fear of presenting in general are all listed as common reasons why people do not present enough. Providing an allocated track for student developers would almost completely eliminates the first two listed issues, and will make significant inroads into the third by providing a supportive environment for students to present at the conference. Linuxchix has been a notable precedent and success story in this field, by providing a supportive environment for female delegates at LCA, there has been a noticable increase in attendance by female delegates since the Linuxchix miniconf was started (the proportion of which I am not sure); and from what I can tell, the standard of presentations is very high.

Student developers are currently an untapped resource for LCA and the Open Source conference community in general, but one that we must strive to harness whilst the opportunity still presents itself. The AUC have demonstrated that a student-driven developer conference is not only a feasible model, but one that can be highly informative, well-delivered, and highly successful. For as long as we are not encouraging enthusiasm amongst our own young developers this way, we are presenting further opportunities for Apple and others to fill the void, and at the moment, the void is great.

I close with a quote from Simon Phipps’ keynote from LCA2009. In reference to his presenting from a Mac laptop, Simon observed that

The greatest enemy to freedom is a happy slave.

I argue that an even greater enemy to freedom is someone who is happily being educated into slavery. For as long as our non-free competition are encouraging student development in this way, this is the circumstance that we in the Australian Open Source community are faced with. I commend the AUC for their fantastic work on producing an excellent conference, and it is something that we in the Open Source community should be striving to replicate, and not striving to extinguish.

More ACM-SPPC Goodness!

As predicted, our third place is final! This puts us one problem clear of 4th, and tied with second place, which is kinda nice. It also means that Josh, Simon and I are in limbo until early December when wildcard world finals places are allocated — that said, it’s a nice limbo to be in, as it were.

Since Simon lacks a blog, I’m publishing his analyses of problems D and F, as well as H, where his solution TLEd at minute 295…

Problem F was obviously the hidden easy problem (it was full of pointless extra data to make it look more complicated) so I got onto that once the terminal was free. It’s BFS on a graph with vertices representing cities and a connection between two cities iff there is a road which contains both cities.

Problem D: It was very number theoretic. With this one, the months had different lengths which made things complicated unless you just took one month at a time, found the solution for each one and then gave the best solution out of all them. For each month, there was a window of opportunity where a full moon could occur such that the next full moon would be in the same month. So, again, I solved the problem for each day of the month in that window and returned the best for the month. Solving the problem for each day involved solving equations in mod Y, the number of days in a year, which can be done with the help of the extended Euclidean algorithm. Writing a Date class helped keep the thing simple enough to humanly code.

Problem H (unsolved) After getting that out, I looked at the stable marriages problem again. I remembered the algorithm in the last hour of the competition (and felt stupid since it’s simple and the name of the problem is a way of remembering it). I got onto coding it, at the same time as Josh was bashing at problem B. I actually got it working in the last five minutes but in my rush I’d made it O(n^3) instead of O(n^2) and it didn’t cut it.

I guess the last thing to mention is a round of thanks to Mike Cameron-Jones, our site director and coach, as well as Robyn Gibson (our local judge), Tony Gray (who makes everything work here), and Matt Armsby (for passing our printouts, and arranging the food on the table), amongst the many other staff who made the contest possible.

ACM SPPC (And related excitement)

The ACM South Pacific Regional Programming Contest is done and dusted for another year. My team (The Triple Helix) scored a provisional third place with seven problems (that’s tied with the team on second, but not the team on first as was the case last year), which after talking with other teams at the top seems fairly stable. This is a really encouraging result for us, not least because I shared a team with completely different teammates from previous years, but also because one of those teammates was attempting this contest for the first time.

So of the seven problems, I solved three, being problems A, G and I, Josh solved B and E (there’s an interesting story there that I’ll leave him to tell), and Simon solved D and F (spending the last hour on H). Here’s my analysis of the ones I solved.

Problem A: The problem at the front of the pack is, as usual, a “typing practice” problem, that is, one where the trick is doing precisely what they tell you on the statement as quickly as possible. I had a working solution in 8 minutes, but a technical glitch on our local site meant that I didn’t have any pretyped test data (the sample data was very tedious and difficult to type correctly) until minute 15. A quick test and submit, and done.

Problem G: The idea of this problem is to determine if a path exists allowing you to visit all cities from a list of cities, in order, and only once. You are given a set of flights that may contain cities not from the original list, which you may visit as frequently as necessary. The observation here is that you’d like to determine if a path exists between adjacent cities on the list through the allowed intermediary cities only. By being judicious about ordering your verticies in an adjacency matrix, you can solve this using a non-standard version of Floyd’s algorithm, whereby your outer loop (the one that considers your current intermediary vertex) only considers the valid intermediary cities. Determining if the desired path exists is just a matter of stepping through the path.

Problem I: This problem involved determining if a path to a point in a grid exists, whereby the only possible moves at a given point are to go “forward” or “rotate to the right”, and determining the length of the shortest path if one exists. As a grid-based shortest path problem, a BFS is the correct method; the trick is to notice that the state space involves not only the grid itself, but actually the grid in each of the four possible orientations — once this key bit of insight is out of the way you only have to consider a few special cases: are you at the goal state already; is the goal state on a wall in the maze; and the one clarified by the judges, is your start space on a wall?

We didn’t solve our eighth problem (H), but luckily, a tiny change to our solution to B in the last 5 minutes got accepted (at minute 297, no less), which was sufficient to knock us up to 3rd.

So that’s it until after the rejudging occurs, hopefully with no drastic changes at the top :)

Update: Josh posted analysis of the problems he solved (a long with some ACM t-shirts) to his blog. Check it out for more of the story about this year’s contest.

Japanese Translation Poetry

A friend of mine showed me Translation Party. I thought it might be fun to write some poetry with it:

My duck, please on the roof of the master.
When the roof, ducks quack
Ducks quack, trembling with fear of the roof
Now the world knows the Ducks.

My friends, please see the duck
The ducks live in the river.
River, or pay attention to the ducks?
Kamogawa and Thanks.

Ducks will forever live in the river
However, to take care of the ducks
I need to take care of the river

I, the river, ducks love to swim
Whether swimming in the river?
When, and to save the duck, I love the duck
Also, do you like your duck?

I have to save the ducks, and thanks to all.
If you want to save the ducks?
Know how to save the ducks
And the world knows.

Pythonic UIs

I’ve just been reading Richard Jones’ current project, where he’s implementing a very Pythonic way of creating GUIs (for example, managing gui contexts using Python’s context managers). I’m very very excited, and I hope this sample code shows why:

with gui.form() as form: name = gui.row('Name', gui.text()) skill = gui.row('Skill level', gui.selection(['Awesome', 'Radical', 'Understated'])) @gui.submit('OK') def on_click(button): print 'Got name=%r'%name.value print 'Got skill=%r'%form['skill'].value gui.stop(0) @gui.cancel('Cancel') def on_click(button): gui.stop(1) 

Take a look at what this code does at Richard Jones’ weblog. It’s pretty awesome.

Open Programming Languages Miniconf CFP Now Open

The LCA2010 Open Programming Languages Miniconf, to be held at 2010 in January 2010 (either on Monday 18th or Tuesday 19th January), invites presentations about all programming languages with an Open Source implementation, such as Perl, Python, C, PHP and Ruby, amongst others.

Topics may include recent developments in open programming languages, interface design, portability and packaging, coding applications with cool new libraries and frameworks, and showing off the use of novel programming techniques; presentations may be proposed in a standard (25-minute) or long (45-minute) talk format.

Whilst most talks will be specific to a single language, the focus of this miniconf will be on sharing techniques, best practices and values amongst programmers of all open programming languages.

We will be accepting proposals effective immediately, and our CFP will close on Friday, September 25. Absolutely no extensions will be granted due to the tight timeline for LCA2010 programme publication.

To read the guidelines for presentations, and the submission process for proposals, please visit the CFP page on our website.

Important Dates

  • Wednesday, August 12, 2009: CFP Opens at
  • Friday, September 25: CFP Closes
  • Saturday, September 26-Thursday, October 1: Notification of successful presenters
  • Friday, October 2: Final programme submitted to LCA2010 organisers
  • January 18, 2010: 2010 Begins

The timeline for the CFP is extremely tight by requirement of the LCA2010 organisers, so no extensions will be granted.

About the Miniconf

The Open Programming Languages Miniconf is a single-day mini-conference about application development with Open Source programming languages. Featuring talks on a wide range of topics and programming languages, this miniconf aims to bring together open source developers with presentations that share techniques, best practices and values amongst programmers of all open programming languages. OPLM2010 will be held at 2010, in Wellington, New Zealand from January 18-23.

OPLM2010 is being organised by Christopher Neugebauer and Jacinta Richardson with help from the broader community. You can contact the OPLM2010 organising team at or visit the website at