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.
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!
CD Cover art was created by MadsRH
There are a lot of new changes under the hood. Most notable are:
- Installation is a breeze.
- Wubi: one-click installer for Windows.
- Xorg 7.3 with better defaults and auto-configuration of external screens.
- Mozilla Firefox 3 Beta 5 in preparation for the official release of Firefox 3 in June.
- PulseAudio: new audio driver.
- Brasero: a new CD/DVD burning utility.
- Transmission: the new default BitTorrent client.
- New theme.
- Compiz: Enabled by default for eye-candy.
- Vinagre: New VNC client. Also uses Avahi to discover VNC enabled clients on the network.
- PolicyKit: enhanced security.
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
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.