Bah, just found out that the iBurst driver 1.3.2 doesn’t compile in Ubuntu Hardy Heron. Turns out a macro in the kernel called SET_MODULE_OWNER was deprecated in 2.6.23, and removed in 2.6.24. The iBurst driver currently depends on that macro, so I will have to look at patching it so that it can work for Hardy Heron, which uses the 2.6.24 kernel.
Update
The fix is quite simple. Just remove SET_MODULE_OWNER from ib-net.c, recompile and install.
Sweet, the latest release of Ubuntu dubbed Hardy Heron is out!
There are a lot of new changes under the hood. Most notable are:
I am currently in the process of migrating /home to its own partition so that I can go ahead and upgrade to Hardy Heron as soon as possible.
I found this great post on Python Decorators. Decorators were introduced into the python language since 2.4. The post shows the benefits of using a python decorator to improve the efficiency of a function’s runtime using memoization.
Python decorators are also extensively used in Django for authentication. For example, you can use them to decorate a view function so that only logged in users can view certain parts of your site.
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
# ...
The example code above shows that you only need to add the @login_required decorator above your view function to determine whether or not the current user needs to be authenticated before the view can be displayed.
Lean Principle 1: Eliminate Waste
Chinese Proverb: If the roots are not removed during weeding, the weeds will grow again when the winds of Spring blows.
Interpretation: In other words, to solve any problems the source of the problem must also be dealt with. Therefore it is essential to finish a task thoroughly or the effort would be wasted.
Lean Principle 2: Create Knowledge
Chinese Proverb: I hear and I forget; I see and I remember; I do and I understand.
Interpretation: When you create knowledge share it, but share it effectively through experiential learning and involving people collaboratively.
Lean Principle 3: Build Quality In
Chinese Proverb: Better a diamond with a flaw than a pebble without.
Interpretation: Use Test Driven Development and automated testing to ensure quality. Tests help to quickly identify any side effects or defects when you change the code base, which gives you more confidence in the ongoing quality of the product.
Lean Principle 4: Defer Commitment
Chinese Proverb: A journey of a thousand miles begins with a single step.
Interpretation: Abolish the idea that it is a good idea to start development with a complete specification. Like a journey of a thousand miles you gain more confidence in the direction you are heading with each step that you take.
Lean Principle 5: Deliver Fast
Chinese Proverb: One who rides a tiger must continue to go fast.
Interpretation: Companies that focus on speed of delivery and superior quality have a competitive advantage.
Lean Principle 6: Respect People
Chinese Proverb: Like the Eight Immortals crossing the sea, each one displaying his/her special feats.
Interpretation: A diverse team of talented people that can work together can achieve any goal that they are mutually committed to.
Lean Principle 7: Improve the System
Chinese Proverb: A spark can start a fire that burns the entire prairie.
Interpretation: Understand the entire value stream, and don’t ignore seemingly minor problems as they can spread.
I’m glad that I started playing around with Django a couple months ago. It has forced me to learn Python. I now feel more at home with Python than I ever did with Ruby. Learning Python has been especially useful with exploring Gnome’s API (as I run Ubuntu on my laptop). There are also some good editors for Python, but I quite like Gedit, and I have been messing around with writing a simple plugin that uses Exuberant CTags for navigating Python code. The Gedit plugins can easily be written in, you guessed it, Python.

There is a lot happening in the Python world, and the biggest news of late is Google’s Beta access to their new service App Engine. It is basically a service for hosting your Python applications. It currently supports any Python application that uses CGI. Essentially you can get a Django web application running on App Engine, but a bit of work will be needed to integrate with App Engine’s datastore.
Anyway I don’t want to ignite a flame war as I am a lone Pythonista in a company full of Rubyists.
Once you have plugged in your USB Sensor Bar you will notice the markedly improved cursor movements. The Wiimote can now be used as a replacement for your mouse. You can move the cursor around by moving the Wiimote in the direction that you want the cursor to move. You can also press the A and B buttons for left and right click mouse functionality respectively.
To make the most of the Wiimote when working with Mingle it is worth installing the Mouse Gestures plugin for Firefox. You can activate a mouse gesture or Wiimote gesture by holding down the B button and moving the Wiimote around to activate a command. For example you can hold the B button and draw an X within Firefox to close a tab, or move the Wiimote upward then to the right to navigate to the next tab on the right.
I created a custom Wiimote gesture by registering a line of javascript for opening a web page with the gesture: Up, Down-Right, Up-Right, Down. This gesture launches Mingle in Firefox by associating the gesture with some javascript, ie window._content.document.location.href=”http://localhost:8080” (assuming Mingle is running on port 8080 on your laptop). The following screen shots convey this action, as well as a similar gesture for signing into Mingle by literally signing my initials on the screen with the Wiimote.
You can also lasso a bunch of links and all the links will open up in their own tabs. Navigating up and down a page is as easy as drawing up and down arrows respectively. The Wiimote just works beautifully with the Mouse Gestures plugin.
I had a few days off work to recharge the batteries and was looking forward to heading to the beach, but ended up taking a rain check due to the bad weather. Sydney just had the wettest Summer in years, which was good in a way as it ended up breaking the drought and putting water in the dams. So to make the most of my time off I decided to build my own USB Sensor Bar so that I could get a Wiimote working with my laptop.
If you followed my previous post on getting the Wiimote to work with Ubuntu, then you should be able to move the cursor around using your Wiimote, and using the A and B buttons as left and right clicks respectively. However, using the accelerometer alone for moving the cursor around does not make for a great user experience. To enable the Wiimote to work more effectively you need to setup a point of reference that can be used by the Wiimote driver to calculate the directional movement of the Wiimote accelerometers. This point of reference for the Wii is the Sensor Bar that sites on top of the television set. So you can either buy a battery powered Sensor Bar or make your own USB Sensor Bar. I ended up doing the latter by following the instructions at Terbidium.
To get started you need a USB cable, four infrared LEDs, LED holders, aluminium tubing, electrical tape or heat shrink tubing, and a laptop.
The USB Sensor Bar is a simple serial circuit that consists of four infrared LEDs that are grafted to an old USB cable.
You may need to add a resistor into the circuit if your LEDs don’t produce a voltage drop of 5 Volts, which is the standard power source for USB devices. It is worth testing your circuit design on a circuit board as shown below.
The circuit is then squeezed into a tight-fitting aluminium tubing that is cut to about 30cm in length. The USB cable hangs out one end of the tubing, and the LEDs sit in LED holders that have been positioned into some neatly drilled holes. The completed USB Sensor Bar is pictured below.
I finally got around to installing VirtualBox on Ubuntu Breezy Badger, and it works like a charm. I created a virtual machine and installed Windows XP with JeOS for running Lotus Notes (not by choice). I can finally blow away my Windows partition. Oh happy days!