Since there’s a Boost juice down the road from where I work, I now drink a lot of this overpriced mushed fruit and sugar. I was thinking the other day about their “buy 10 get 1 free”, and realised this just means I pay about $5.30 instead of $5.80 for each one, still not a very good deal… but somehow this attempt at wooing customers into coming back again and again just works. Then I found this in my inbox:

How can I not keep coming back for another year if it means in 365 days they’ll be giving me another one for free!

Yesterday Hung, Jayen & I started work on UNSW’s code base for the 2010 Robocup competition, and ended up with something quite neat that we didn’t have before. The Nao runs a piece of software from Aldebaran called ‘NaoQi’, which provides an abstraction layer over the Robot’s hardware, and also some sort of inter-process communication for each of the ‘brokers’ you are running. rUNSWift has previously had just one broker, which internally manages the communication between each of its modules. This has the benefit that it is very fast, when compared to using ALMemory, however it means that whenever we want to upload new code to the robot, we have to completely restart NaoQi to reload the librunswift.so shared-object library.
The new approach involves having two ‘brokers’: ‘loader’ and ’soccer’. The loader is loaded by the the NaoQi automatic loader on startup, using the same method that librunswift.so used to be loaded. The loader has methods called startSoccer() and stopSoccer(), which will load and unload libsoccer.so on demand. The loader can be communicated with over the network, and we hope to integrate this with our off-robot debugging utilities. With any luck this should greatly cut down on wait time between builds of the various rUNSWift modules.
We still have the performance advantage of having all the core components (vision, behaviour, localisation, locomotion, etc.) inside the ’soccer’ broker, avoiding ALMemory for everything except when we reload code through the loader.
C++ is cool, I didn’t know you could do this until yesterday. Unfortunately it’s a bit painful to bind anything other than the 1st or 2nd arguments (by painful I mean not-built-in).
#include <iostream>
#include <functional>
#include <vector>
using namespace std;
int main() {
vector<int> v;
vector<int>::iterator it;
v.push_back(3);
v.push_back(4);
for (it = v.begin(); it != v.end(); ++it) {
cout << *it << endl;
}
transform(v.begin(), v.end(), v.begin(), bind1st(plus<int>(), 3));
for (it = v.begin(); it != v.end(); ++it) {
cout << *it << endl;
}
return 0;
}
Also WordPress doesn’t like newlines or tabs in <code> </code> blocks? Lame!
Jayen and I put this article together this morning for ‘Beta’. CSESoc’s weekly student newsletter.
Jeff Arnold, creator of Ksplice, presented a talk this year at linux.conf.au, the annual Australasian Linux conference, about his product, the first practical technology for updating the Linux kernel without rebooting.
Jeff Arnold wrote most of Ksplice as part of his Master’s thesis, and upon its completion, started Ksplice, Inc. with a few classmates.
The Wikipedia article on uptime makes the statement about system administration: “Long uptime can indicate negligence, because critical updates can sometimes require reboots.” Ksplice endeavours to change this perception by making it possible for server administrators to apply important security patches immediately and without causing any downtime.
At the time of writing, we could not find a comparable technology. We found some references to Solaris having hotpatch support, and we assume IBM’s System z has this functionality due to the nature of their zero-downtime availability.
One can use Ksplice at any time, without interfering with any running services, connections, or applications. The catch is that Ksplice is really intended only for small security patches to the kernel, and not for even minor upgrades.
Ksplice applies patches to a running Kernel by loading new versions of entire functions into memory, and replacing the existing function code with a jump to the new one. This way, from a caller’s point of view, nothing has changed.
Most Linux Kernel security patches can be applied by Ksplice without doing any extra work. In the case where the semantics of a persistent data structure has changed, a programmer will need to write a few additional lines of code to tell Ksplice how the previous data structure can be transformed into the new one at runtime.
The performance impact of applying a Ksplice update is minimal. A small amount of memory will be expended to store the replacement code, and calls to the replaced functions will take a few cycles longer because of the inserted jump instructions.
Of course, with great power comes great responsibility. Ksplice makes it easier to change a running kernel, but that opens up all kinds of avenues to hackers, allowing them to easily mess with the core part of your system (only if they gain root access, of course).
Ksplice is currently available for download from their website, or as a package in debian, and Ksplice, Inc. sell support for business. There is currently work in progress for an up2date-type utility, which will make rebootless kernel updates as easy as distribution updates.
David Claridge & Jayen Ashar
After 3 months of not booting into OS X I decided to reclaim the 60GB of space it was hoarding, as I’d run out of room in /home. After hearing some horror stories about attempting to single-boot linux on a Macbook Pro I was prepared for the worst, but as it turned out, things worked without a hitch! I popped in a Fiesty Fawn CD, trashed all the partitions and did a clean install, it happily boots every time
So it’s the last sleep before LCA, and there are now 7 of us UNSW CSE students coming along (that I know of). Boarding passes all printed and ready to go. It should be fun, watch this space for updates! See you in Hobart.
The complete schedule has now been released, and the conference is only 3 weeks away, so I am staring at the impossible task of deciding what not to go to. Here’s my initial thoughts:
Sunday 18th
Newcomers welcome
Monday 19th
09:30-10:20 MythNetTV
10:40-11:30 Transcoding in MythTV
11:40-12:30 MythTV Internals
13:50-14:40 How I Learned To Stop Worrying And Love ACPI
15:10-15:40 Mobile Experience with Linux – Android Internals & Prototype
16:00-16:50 Rails Deployment In The Enterprise – Transmitting A Litle Experience
17:00-17:50 Ask a Kernel Hacker Panel
Tuesday 20th
09:30-10:20 Nested KVM
10:40-11:10 Future directions for Copyright Law
11:10-11:30 OpenAustralia – Everyday democracy for everybody in Australia
11:40-12:30 UNDECIDED DRBD – Database agnostic synchronous replication for everyone! || Google and IPv6
13:50-14:15 Database backed DNS systems
14:15-14:50 Keeping On Trac
14:50-15:40 SE Linux in Lenny
16:00-16:50 Rootless Reality
17:00-17:50 The Great Debate – Panel on security futures
Wednesday 21st
09:30-10:20 Keynote 1 – Tom Limoncelli
10:40-11:30 Introducing the Re-Built Linux Desktop
11:40-12:30 UNDECIDED From click to pixel: A tour of the Linux graphics pipeline || Use the Fork Luke! || Subversion Scaling at Google
13:50-15:40 UNDECIDED What Makes the Lizard Roar? A Tour through Mozilla Architecture || Introduction to Django
16:00-16:50 Joining the mob: the kernel development process
17:00-17:50 Cross-distro collaboration: packaging with modern version control systems
Thursday 22nd
09:30-10:20 Keynote 2 – Angela Beesley
10:40-11:30 User love and how to get it through good documentation
11:40-12:30 Contributing to WebKit
13:50-15:40 Designing for usability, usefulness, and unit-testing
16:00-16:50 UNDECIDED Where the future lies: OpenOffice.org and the ODF in the world || Spring – A robotics and automation toolkit for research and industry
17:00-17:50 The Linux-powered Robot Clarinet
Friday 23rd
09:30-10:20 Keynote 3 – Simon Phipps
10:40-11:30 Solid State Drives
11:40-12:30 UNDECIDED Untangling device drivers || Awesome things you’ve missed in Perl
13:50-14:40 Power management that works
14:50-15:40 UNDECIDED Geek My Ride || Champagne usability on a beer budget || Shatter: Fixing X on large displays and/or small hardware
16:00-16:50 System Administration in a Large-Scale Linux Web-Hosting Environment
17:00-17:50 Conference Close/Lightning Talks/BOFs
Saturday 24th
Open day!
In the ‘Next’ section of today’s SMH, George Skarbek recommends 128-bit WEP encryption as the answer to what is the ‘best security for a laptop connected to the internet’ … ‘I do all our banking and paying bills on the computers’. Does the ‘Director and principal consultant of his computer consulting company, Skarbek Consulting.’ not know that WEP has been officially deprecated since 2004 and is widely known to provide little or no security?
I hope home users don’t read this article and change their router settings from WPA2 to WEP at the say-so of this ‘expert’.
A few level 3 COMP subjects:
- Extended Algorithms & Programming Techniques
- Extended Operating Systems
- Software Systems Design & Implementation
The most interesting ‘GenEd’ subjects I could find:

Update: Now enrolled, with precisely this timetable.
This was meant to be a post about how wonderful it’s been using Ubuntu 8.10 on my MacBook Pro for the last 2 days, but alas I haven’t even been able to attempt the install due to the Mac’s inability to resize it’s partition properly.
It’s a 120G drive, Mac HD presently filling the entire volume, but I’m only using 55G of data.
Using bootcamp, I drag the slider to repartition the drive, making the ‘Windows’ partition 40GB, and after a minute or so I get an error saying it was unable to move some files, and I should back my stuff up and freshly format the partition.
Using disk-utility, I drag the slider to resize the Macintosh HD partition, and after a minute or so it says there was ‘insufficient space’.
Le Sigh
