Thursday, 15 March 2012

Hard Real-Time Motion Planning for Autonomous Vehicles online now

It's been a while since I've checked, but Swinburne University have published a low quality copy of my PhD thesis - "Hard Real-Time motion Planning for Autonomous Vehicles" online at their research bank. If you don't want to download the whole thing, you can look at the summary here

During my candidature I had the honour of working with the team developing the Wayamba Unmanned Underwater Vehicle, a three meter long flat-fish form factor research vehicle.

Image Taken from

Tuesday, 13 March 2012

PyCon - Day 5 (Sprints Day 1)

Today was the first time I've ever sprinted, and I can honestly say it wasn't at all what I expected. I was expecting frantic energy, and I mistakenly assumed that the project maintainers would turn up with a huge number of tickets that would get allocated to anyone who came. I also hoped (expected?) that there would be someone experienced in the project who would help me get started.

Instead it was a cross between a design meeting and a pretty regular work day, and while everyone was friendly and very helpful, they were also busy trying to get their own work done.

It's no-ones fault - I just wasn't anywhere near prepared enough to actually be useful helping on the project that I wanted to work on. In part, I guess that some of that is about trying to break into a community - there needs to be a degree of trust before you get commit rights to a major repository. So I'm happy to watch most of this one out, with the understanding that things will go better at future conferences.

Instead, I've had a good day working on a related topic to my project of interest, which I'm hoping may end up with nice enough results to put in for a PyCon AU talk.

We'll see how it goes.

Monday, 12 March 2012

PyCon - Day 5 (Conference Day 3)

I have to admit that the feeling of washed out has continued, and with the change of daylight saving, I almost missed breakfast and the keynote entirely.

Guido's address to PyCon started the morning officially, and he reiterated the key point that this was a time for consolidation and community building, and that we as python developers should already know the answers to any questions trolls may post on various forums. He also indicated that modifications to the core language in the future would need to be demonstrated more rigorously, either in alternative distributions, or through the use of import hooks.

The poster session / job fair was excellent, but in my opinion, the academic and mathematics posters far outshone anything else. I took lots of photos, and I'm happy to discuss them with anyone who is interested.

I literally dragged myself to three talks today, which isn't to say anything about the speakers, merely the grueling schedule of the conference:
- Writing GIMP plugins in Python
- Build A Python-Based Search Engine
- Parsing sentences with the OTHER natural language tool: LinkGrammar

All of which were interesting, but none of which seemed earth-shattering.

The conference finished with lightning talks, which really deserves a post of it's own, but suffice to say, the github links and urls mentioned will be enough to keep me busy for a few weeks when I get home.

The culmination of the conference was a raffle (what Australian's would call a give-away), with Frisbees tossed out into the audience to decide winners. I will state, I did catch a Frisbee - but gave it up to someone else with a tighter grip.

I'll admit in advance that this is reasonably subjective, but it is interesting to try to consider what the most important developers in the python community are interested in, over the past three days. So based (almost completely on the description of the talks in the conference program), the relative proportion of talks by field is something like:

The Python Language, Standard Library and Packaging - 25%
Web topics / Cloud / Networking - 24 %
Math / Science / Data Manipulation - 12 %
Testing / Debugging - 10 %
Electronics / Robotics - 7%
Other - 12 %

This result surprised me a little, because I expected to see a much higher proportion of the web/cloud/networking topics than what really seemed to be present.

At dinner time I found Richard Jones from the Melbourne Python Users Group who was about to go to dinner, and invited myself to go along. Richard ended up deciding that sleep prior to sprinting was more important than food (or more alcohol).

I ended up on a table at a Mexican restaurant with Ian Ozsvald, Mike Mueller (of Python Academy), Ricardo Kirkner and Jack Diederich, amongst others. This was an awesome experience, where I got to pick the brains of so many speakers from the conference.

A number of margaritas later, I've finally arrived back at the hotel, wondering exactly how I'm going to manage to be up in a condition for sprinting in the morning. Regardless, this has probably been the best, and most valuable, night of the whole PyCon.

PyCon - Day 4 (Conference Day 2)

The second conference day definitely had a different feel from the first day. I'm not sure whether it is being away from home, the time difference, or some very big days, but I'm feeling pretty tired.

The PyCon committee had asked the mornings keynote speaker David Beazley to speak on something "diabolical" - something that he has a reputation for after great talks at the past few python events on "programming the superboard" and "the challenges of the python GIL". I think he picked the perfect topic, talking about PyPy (the Python-in-Python) project, which has the potential to have an enormous impact on performance for all code and infrastructure written in Python.

Having attended the PyPy talk earlier in the week and having tried to go through some of the same very challenging process of getting PyPy to build within the last week, the talk struck a chord with me. PyPy is so exciting, yet seems to require an enormous amount of effort to get started to even add small features.

Straight after the keynote I raced over to the exhibitors hall, because I'd manage to finish the Google challenges last night, which meant I earned my pins, and a T-shirt with the slogan on the back "Python: Programming the way Guido Intended"

The talk schedule worked out a little differently today, in particular, I had the flexibility to go to talks that were just plain cool rather than related to work:

- The Journey to Give Every Scientist a Supercomputer
- Python for Makers
- Pragmatic Unicode, or How do I stop the pain?
- Python and HDF5 - Fast Storage for Large Data
- Militarizing Your Backyard with Python: Computer Vision and the Squirrel
- Using fabric to standardize the development process

One of the big standouts for the day was the talk on Ned Batchelder's talk on Pragmatic Unicode, which provided a consistent approach to dealing with Unicode through your programs. It also seemed to be a far more pragmatic than the Joel Spolsky's essay on "The Absolute Minimum Every Programmer Should Know About Unicode".

I was impressed by the "Militarizing Your Backyard with Python: Computer Vision and the Squirrel Hordes" talk, both for using Python for everything from the highest to the lowest level, and also because the speaker managed to get very impressive machine learning results for squirrel classification from a minimal, and what I assumed would have been a very small and coarse set of features.

The other big thing that happened was that as a response to the fabric talk, one of the delegates came off the floor and gave a really succinct answer about what the roles of provisioning tools like chef and puppet, versus fabric. The answer seems to boil down to the fact that there is some cross-over, but fabric is best suited for remote management, and puppet/chef are best suited for keeping your machines in a consistent state.

Sunday, 11 March 2012

PyCon - Day 3 (Conference Day 1)

Today was a very big day, and to be honest I'm feeling a little wrung-out tonight. Because this was the first full day of the conference we got swag this morning, which had more than enough cool stuff in it to make me very happy.

The keynotes were great (yeah for awesome dancing robots on stage!), as was seeing the 2200+ people in the Grand Ballroom.

The first keynote speaker Stormy Peters' messages on community building, inclusiveness, and on building tools that enable end-users to make and control their data in the ways that they want and need to made lots of sense.

I've followed the second keynote speaker Paul Graham's work for a long time - he's a big part of the reason that I do things the way I do in python, and for my interest in Lisp and functional programming techniques. To hear him speak about Y-Combinator was an honour. The message that I took away from the keynote was that big things can grow out of small ideas, and that we, as developers, really already know what the important problems are.

During the talks I didn't follow a particular track, but rather tried to concentrate on maths and sciences talks that I knew relate strongly to the things that I work on, or could work on in the future (graph-processing, machine-learning, Py0MQ, Sage & Pandas), but I also went to Raymond Hettinger's talk on subclassing, and Dave Brondsema's talk on decorators and context managers.

I managed about five minutes in the exhibitors hall, and grabbed some great deals from the O'Reilley store at what ended up being about a third of the price of the same books off the shelf in Australia.

I also popped in on the end Testing In Python miniconf/open space session, which was an insane combination of informative, hilarious and a bit wrong (lab coats, beer and goat jokes). But the 100 people in the room were a testament to the dedication of the attendees on a Friday night at 9pm when there were at least two different parties running with free beer.


Matt Spitz's talk on practical machine learning had a number of good code samples, you can find his git repository on machine learning from baseball stats on github, and his slides at slideshare.

The talk on Sage including a link to an which hosts an online version of the Sage math notebook for experimentation and sharing with your peers.

Wes McKinney's slides on the VBench and the Panda's data manipulation and transformation library are available on slideshare, and his code is available from github

Saturday, 10 March 2012

PyCon - Day 2 Tutorials (Social Networks & High Performance Python II)

I had two tutorials on today, the first on "Social Network Analysis", and the second on "Advanced Python II".

Social Network Analysis is a fairly loose term that groups a whole bunch of ideas together. A Social Network is something where you have information about which relationships exist between individuals, and what those properties are. From a computer science perspective that lends itself to a graph-theoretic approach to analysing the social networks. The second stage is then the use of statistics to make some conclusions about data (identify key members in the network, identify anomalous behaviour, compare networks and lots of other things).

The talk happened in two interleaved parts, a live coding demo of how to retrieve data from online social networking services (twitter & crunchbase), and a slightly more theoretical discussion of the principles of network analysis.

I think that perhaps this tutorial was targeted with slightly different audience in mind to what I was expecting. I would have been happy with a pretty rigorous mathematical description of the statistics, and how to deal with that in python, but considering the reactions, I think that other people may have had a opinion.

The second talk on High Performance Python blew me away completely. The thought of getting to hear Travis Oliphant (previously at Enthought, and now at Continuum Analytics), speak about numpy was a big deciding factor for coming, and he (and his team) didn't disappoint.

The talk was actually split into four parts, an introduction on how to write efficient numpy code (vectorisation, making best use of the numpy data structures), a second section on numexpr (a tool for optimising small but critical numpy expressions), a third section that was a impressive live demo of a particle simulation, that was used to demonstrate the measurement and prediction of performance of numpy code, and a fourth section describing a new tool for writing optimized numpy ufuncs called numba (which comes from numpy + mumba), based on LLVM.

After the tutorials finished, I ran into Ned Batchelder in the lobby. I'm a big fan of Ned's and cog modules, but also because of his blog. After that, I picked a random table and started talking to people, and it just so happened that they were the Sourceforge development team - who very kindly took me out to a lovely dinner at an Indian restaurant.


One of the libraries mentioned in the social media tutorial was tweepy, a library for pulling data from twitter

The other was an improved download library to replace the (somewhat) broken urlib2 called requests

There was some discussion in the Adv. Python II tutorial about combining numexpr with the Intel Math Kernel Library.

I was flipping through some of Enthoughts products looking for the Continuum Analytics github repository and came across Chaco, which looks to be an alternative 2d plotting library.

Thursday, 8 March 2012

PyCon - Day 1 Tutorials (ipython & pypy)

After a pretty good nights sleep, I was up for 7am registration in the conference centre. I made some new friends and got too meet two of the rockstars of the Python community Raymond Hettinger & Dave Beazley

I could say a lot about the tutorials, but I don't really need to because you'll be able to watch both of them.

As a taster, the slides from the ipython tutorial are available online.

I was pretty blown away by the pypy tutorial, my thesis involved generation and analysis of assembly code traces in a smallish code-base. That effort was challenging enough for me to have huge respect for what pypy team have done (and are continuing to do) with regard to scope, complexity and the quality of the outcomes that they are achieving. Even better, I found out they have a partial numpy implementation working! yeah.


One of the TA's at the talk, Paul Ivanov, mentioned interoperability layer between vim and ipython.

The attendee sitting next to me in the pypy talk was using a really pretty editor, that looked a lot like vim, with some cool extra features, it was sublime text

Wednesday, 7 March 2012

PyCon - Day 0

I've arrived safely in Santa Clara, The city itself is amazing. From a nerdy perspective, it was awesome because it was almost like the internet coming alive. I saw buildings for Yahoo, Mcaffee, some big game development studios and more. It's very obviously a technology focused city. Even all the advertising is for software and software related services.

It's also very clean. It reminds me alot of Canberra (without the round-abouts). Very flat, with perfect footpaths and manicured grass edges.

I got back to the hotel and caught up with one of the other Australians I knew was coming, very nice to see a familiar face after a long day. I stopped and had a late lunch with him and another delegate. I don't think I'm spilling anything big, but the news is that the total numbers have crept over 2000 for the conference, with over 1900 registrations for delegates.

Wi-fi isn't working in my room at the moment, so I've had a quick nap, I'm posting this down in the lobby on the conference network, so I'm using that. In the time from late lunch to dinner time, the hotel lobby itself has gone from being filled with 'suits' to being filled with pythonistas.

Thursday, 1 March 2012

PyCon 2012

If anyone is interested, I'm attending US PyCon 2012 in Santa Clara.

Post a comment if you're interested in catching up!