Programming
TBBle Scarry’s Busy, Busy Weekend
by TBBle on Apr.20, 2009, under Australia, Food Diary, Linux, Micro Forté, Programming
Often my weekends start out with grandiose plans of what I might try and get done.
This weekend (and the preceding evenings I guess) saw me produce a Wine patch I was only playing with out of interest but which turns out to affect Warhammer Online, although I didn't know it until after I implemented the patch, and a WIne patch I've been meaning to prototype for a while using XInput 2 to fix a long-standing Wine bug which also affects Warhammer Online.
I also got back to watching Life On Mars, although I've only managed one episode and a bit. It's pretty damned good.
I also decided to make gyoza, as I have fond, alcohol-supported memories of the last time I made them.
I managed to lazy my cooking even more than usual. I'm using a recipe I picked up last time I made them off a site called The Food Palate by Deborah Rodrigo, whom Google has since informed me is from Sydney but both that site and her personal blog appear to have fallen off the Internet, sadly. However, I distilled (with the help of Kirky at work) the ingredients down to this:

Ginger, chives, chili flakes, coriander, garlic, sesame seed oil, soy sauce for dumplings, and gyoza skins
Adding half a kilo of lean pork mince, and about a half-hour, you get:
So not as bad as the ugly cake I made recently, but still not spectacular. And unlike the cake, I don't yet know if these turn out to be poison or not.
I expect that they'll be delicious, and not even slightly poisonous. And unlike my cake, I'm not going to try to share them with anyone. ^_^
It could be worse, at least I seem to have not managed to poison my housemate's lizards, Prime and Grimlock, whom I've been feeding while he's away this weekend. I'm not sure how I could get "put grasshoppers into the box" wrong, but I don't think I did. I think they're pretty neat names for lizards, reflecting Mick's inner geek, and his outer geek, although Prime seems to be larger than Grimlock which is to the best of my knowledge the wrong way 'round.
I was going to try and leverage in a rant about characters in children's books with alliterative names at this point, and observe that one of my favorite authors as a young child, Richard Scarry happened to avoid that, but upon actually looking him up, I realise the characters whose names I'd forgotten quite often had alliterative names. The characters I remembered still had non-alliterative names, so it's not as bad as some authors I can't be bothered remembering, but I'll chalk that one up as being disappointed by a childhood memory.
A less disappointing childhood memory turns out to be Piers Anthony's Incarnations of Immortality series. I read the series when I was quite young, and I'm only re-reading the first one at the moment, but it reminds me how good a writer he is, and why I loved his books so much as a child. Also because he's alphabetically early on the shelves. I don't know why I seem to do that. I think when I'm picking a new series, I start at the beginning and go until I've chosen one. So that favours the alphabetically early.
I've managed to get a whole bunch of reading done recently, which is good. Sadly, Borders now wants me to pay $7 on a $14 book to order it in from overseas, and it turns out most of the series I'm following keenly enough to actually order books are on that list, so I may end up having to do an Amazon order. Which is annoying, because I'm also looking for some DS games: Ace Attorney: Trials and Tribulations appears to be discontinued in Australia and the US, and Impossible Mission never seems to have been released here at all. Along with wanting Race on DVD, I have a fair bit of overseas shopping to do, and the local financial climate is not exactly conducive to that. -_-
Anyway, the above is my documentation supporting why I should not be left alone for days at a time. ^_^
GLUTton for wxPynishment
by TBBle on Mar.21, 2009, under Computers, Programming
A followup to last year's foray into Python and OpenGL.
I noticed today that wxPython includes a GLCanvas class which uses PyOpenGL. However, as of 2.8.9.2, wxPython's demo crashes due to wxWidgets bug 10203 which is fixed in 2.8 wxWidgets post 2.8.9, and in 2.10.
Until a wxPython release comes out based on either of those, there is a workaround. The script update_manifest.py, which wxPython includes to change the manifest in your python.exe and pythonw.exe to use the Windows XP comctl32.dll, also fixes this problem, so even though I've been aware of this bug for ages, I've only learned about this workaround tonight by reading the wxpython mailing list archive.
Now that I've got that patched, and PyOpenGL installed, the GLCanvas demo in wxPython runs, and the cube demo works. The cone demo however comes back with this:
OpenGL.error.NullFunctionError: Attempt to call an undefined function __glutInitWithExit, check for bool(__glutInitWithExit) before calling
This turns out to not be a surprise, as I don't have GLUT (glut32.dll) installed. Sadly, the wxPython demo code doesn't test the result of the OpenGL.GLUT.glutInit method in PyOpenGL, so this exception is simply output without causing the cone window to abort.
Since the draw code for the cone calls glPushMatrix before any of its glut calls, and the glut calls throw an exception so you never call glPopMatrix, you end up filling your matrix stack, and getting a lot of error spam in your output window, where the later errors can easily push the older errors out the top of your scrollback buffer.
I turned out to be too lazy to build my own glut (it's anecdotaly possible) but a lucky hit with Google informed me that Nvidia's Cg Toolkit includes both a win32 and x64 version of glut32.dll. You wouldn't be able to distribute it as there's no license indication for glut apart from the license for the whole Cg Toolkit. The glut.h file included however is the one from normal Glut (or so it appears) so I doubt it's anything except the win32 version of upstream glut.
On this point, it's not obvious to me if freeglut is supposed to be a drop-in replacement for glut32.dll, or a souped-up alternative. It doesn't help that the freeglut configure file includes an option to switch that mode on or off (producing libglut.so or libfreeglut.so) while the .mak file (for NMake) only produces freeglut.dll not glut32.dll. So I guess it's intended to be both. The next step would be to see if freeglut can build from configure using mingw64 and produce a drop-in glut32.dll.
However, I don't care that much. I only wanted to see the wxPython GLCanvas demo run. I won't be using GLUT (or event GLCanvas, to be honest) myself so this has had plenty of time devoted to it anway.
I guess I hope that the main benefit of this blog posting is to allow those very occasional forum posters who go looking for glut32.dll for Vista x64 or XP x64, or even Vista 32-bit, to find it in the NVidia Cg Toolkit. So far I've seen several such questions when searching Google for a copy myself, but no one ever finds one for 64-bit. (There's a 32-bit one in the bullet physics SVN repository, if you don't want NVidia's one.)
And for those same forum posters, a quick note. The x64 build of glut32.dll goes in %WINDIR%\system32 on x64 machines. The win32 build of glut32.dll goes in %WINDIR%\SysWOW64. If you get this wrong, you'll get the same error messages as not having the file present at all. It's prolly both easier and a better idea to actually drop the glut32.dll next to the program you're running, unless you have both 32-bit and x64 versions in the same directory for some reason...
Grinding code in Warhammer Online
by TBBle on Oct.04, 2008, under Computers, Linux, Programming
My original plan was to only use the Windows XP 64 installed on my laptop for video games (and then only when necessary due to a Wine disfeature) and Linux for everything else. My World Of Warcraft days actually worked quite well for this, as it played very nicely under Wine. However, as interesting things (ala my previous blog post) sometimes crop up while I'm in Windows, and also as I'm now playing games that aren't so nice under Linux, I've ended up being in Windows more than Linux. And now I've found myself distracted from games playing by, of all things, MMO UI Addon programming, keeping me in Windows even more.
You'd think with my strong awareness of the commercial nature of grind, I'd prolly be trying to get all the playtime I can out of my monthly subscription to Warhammer Online. Instead, I seem to be burrowing my head down into some UI programming in Lua. Like WoW, WAR (or WHO as a friend of mine calls it) uses LUA to implement its user interface and provides a way of adding modules in to modify, adjust or just plain futz with the interface. The big site for WAR addons (like WoW addons, in fact) is Curse Gaming and they even provide a Sourceforge-like site for addon development called CurseForge.
Anyway, why am I doing this, given I managed to avoid WoW addon programming for my entire playing time? Apart from external reasons I'm not going to post here, WAR being brand new is missing a fair few addons. None I can't live without, but one it does lack is DrDamage, which enhances your ability tooltips with the actual effective values of the ability once gear and stats are taken into account.
Part of the issue is that WAR's combat calculations are not fully understood yet. An excellent primer is available at Disquette's Weblog and Warhammer Alliance has a Mechanic Analysis forum as well. I've posted some comments at the former, but the latter requires you to be a "WAR Soldier" before you can post, and I seem to still be a "WAR Recruit", which means I haven't contributed enough to the Warhammer Alliance forums. Ah well.
So anyway, my addon. LibCombatCalcs is my first MMO addon, basically supposed to encapsulate the various combat number mechanics of WAR so that I or someone else can write tools like DrDamage (or RatingsBuster) which magically continue working when they change the mechanics, and which don't need large hard-coded tables of information duplicated across each addon.
It also intends to tie together the seperate sources of combat information into a single coherent stream for other addons to listen to.
Anyway, we're not there yet. What it does do right now is record hits against monsters, and give you a little window with /lcc mobinfo which shows the calculated toughness of the monster (from an unambigous non critical autoattack) and the calculated values for all the subsequent abilities you used, letting you see if my calculations (and therefore my transcriptions of the community's understanding) are correct, and/or where things need tweaks. I'll be using this (and I hope others do too, I don't want to build a level 40 of each class to do this...) to identify the sources of DPS that contribute to each ability.
Anyway, there it is. I'd love to hear feedback about it, preferably at Curse/CurseForge but here is fine too if you hate those sort of sites. You can clone the git repo from CurseForge, and it currently autopackages every commit I push so you can also grab and install the zips.
By the by, this is my first time using mysgit although I did contribute some work to a different msys git effort, and it combined with Console and an updated Vim with some nice colour schemes (I'm using xterm16 at home and work now) makes me a much happier Windows programmer on my laptop.
On other fronts, I've recently been playing with Python-Ogre, hoping to knock out a 3D physics-based tech demo of some kind with it in the middle-term future. (May end up being a Christmas break project...). After my disappointments with 64-bit Python and Pyglet under Windows, I may end up doing it under Linux. Ideally it's cross-platform of course. I've also done some more serious work on my book cataloging software using Elixir, SQLAlchemy and SQLite to turn my collection of text files into a real database. However, there's not a particularly good way of dealing with schema changes that I can wrap my head around, so I've put that on hold while I think about how the data's going to have to look in the long run. And then I got distracted, so it's on the Christmas break pile too.
Things that happen when my brain gets full
by TBBle on Jan.24, 2008, under Linux, Programming
I recently was linked to CCG Workshop which is a site where you can play collectable card games (CCGs) online. It's interesting because they have this gatlingEngine software, which apparently runs the game for you using a set of rules in a gatlingML file.
I thought this would be a wonderful chance to document the rules for the Love Hina CCG, which I never finished translating as you can see, but the gatlingDevKit and all the developer documentation requires that you sign an NDA and suchlike.
Discussions on the forum (the developers talk openly on the public forum, so I have an idea what's not under NDA ^_^) indicated the gatlingML files were XML, but when I got one while trying to play a game, it was quite clearly binary.
The first four bytes are !HZL which I thought looked really familiar, but it took a fair while before I clicked that that was "LZH!" backwards, LZH being the compression algorithm used in the LHA family of archivers. Of course, research indicated that none of the LHA family of archivers actually wrote a file with !HZL at the front.
Poking about some more, I noticed that the gatlingEngine is written in Delphi (and is legacy code anyway) and went looking for Delphi compression libraries. Thankfully, the vast majority do PKZIP-compatible compression, and the first one I tried that supported LZH compression was Tlzrw1. (Apologies for the quality of the link, the 1998 link in the read file is dead, and the Wayback machine record for it indicates that the author's page didn't mention the library anyway) So I note that the library in question attributes its LZH code to LZHUF.C which Google duly turns up for me. I change the code a bit to stop assuming a 16-bit word, handle the header at the front, and suddenly I have a utility which can encode and decode files compressed with the LZH mode of Tlzrw1. (Which has been ported to C# and Delphi.NET, Google tells me.)
Now of course someone needs the interest, gumption and skills needed to produce an open-source program that can process gatlingML files and run games from them. ^_^
Oh, and a cool thing: progress bar for cp, courtesy of Chris Lamb via Planet Debian.
Edit: Missing quote put a whole whack of text inside an <a>-tag.
Things to do in Sydney while the wireless is dead
by TBBle on Jan.16, 2007, under CBIT Internet, Debian, Japan, Japanese, LCA07, Programming
Well, now that I'm back on the 'net fairly reliably, I can post on what I've been doing for the past few days.
Firstly, I was off the Internet because I was flat-out busy on Saturday, in transit on Sunday, and wireless did not arrive at International House until about 11pm Monday night. That time I did spend on the 'net today, at the conference, was spent in a combination of processing CBIT emails since Friday, and wrestling with my wireless network card.
My local build of the d80211 version of the bcm43xx driver got signal, would even get traffic through, but when it tried to reassociate to a different AP (all the APs here are running on channel 11... Although I was sitting next to someone who saw one on channel 1, which I'm guessing was rouge... I also saw some IBSS networks on the same SSID....) it would corrupt something nasty, kick the screen brightness up to full and oops with slab errors in short order.
The 2.6.18 (2.6.18-3-powerpc Debian build) bcm43xx softmac driver didn't crash or anything, but generally performed worse, and when the Debian miniconf's theatre (Mathews A) was full, my connection suffered or would completely fail to dhcp. >_<
On the plus side, the presentations were great. AJ gave us a rundown of debian-devel (ie 12 months of flamewars) and other significant Debian going-ons. Keith Packard produced a whole bunch of neat X things slated for X.org 7.3 (input hotplugging, dynamic output selection and modesetting, which is exactly what I need to get the projectors I keep plugging into to work better than 640x480...). Russell Coker talked about the various security gaps still remaining in Linux.
In non-conference goings on, I was talking to someone on IRC who's gotten Second Life Viewer building under Linux/PowerPC (a previously unsupported platform) and I'm going to see if we can get a .deb built. I've already created an ELFIO package, and have the OpenJPEG source to try packaging tomorrow. I've also sent off an email to the person who ITP'd secondlife-client for Debian already, to see if he wants to co-operate, or if I'm just tooling about.
Speaking of tooling about, I decided it'd be a good idea to upgrade my bcm43xx-d80211 build to something more recent than mid December, but it seems the 2.6.20 workqueue changes mean I can't compile it against 2.6.19 anymore. The rt2x00 d80211 stack has backwards compatibility macros for the workqueue stuff, but I don't really feel like hacking those into bcm43xx, it's already a large and unsteady beast.
BTW, cogito's update could handle resuming better. Although it happily detected it was resuming a failed update, it had to keep refetching the packs. I eventually realised it would eventually time-out a fetch if I didn't ^c it and happily try again, presuming I had in the meantime walked outside or reloaded the driver.
Anyway, so I've decided tonight (while I was still off the wireless) that I'd finally bite the bullet and build myself a custom dscape.git kernel, to see if the pain I keep suffering from the bcm43xx-d80211 driver is just my cheap-ass backport. That was still building when the wireless came up, and then barfed because KConfig happily let me include both the PCI and SoC versions of the OHCI USB host driver, which provide the same symbols. I must remember to file a bug report about that, or at least check linus's git tree in case it's already fixed. (Both drivers recommended yes, but are patently incompatible as they require different endianness of the host interface). I've restarted the make-kpkg, hopefully that'll build overnight and I can try it in the morning.
I also put some time into my Remembering the Kanji book. I was going to do an hour, but after about a half-hour (with a break to configure and fire the kernel build off) I was yawning, and figured I'd prolly left the imaginative-memory zone. I was going to watch some Gokusen but thought I'd take a last wander over to the IH whiteboard to see if the wireless was up. Bizarrely, it was.
So I wandered onto the 'net, checked email, volunteered myself to package Thousand Parsec for Debian, added the Kanji I studied to Reviewing the Kanji (a web site for reviewing the stuff you learn in Remembering the Kanji) and updated my blog.
Which funnily enough, is where we came in
Pledges of allegience to free software…
by TBBle on Jan.12, 2007, under LCA07, Micro Forté, Programming
In good news, the pledge drive to raise $10 000 towards a reverse-engineered NVidia DRI-3D-accelerated driver has succeeded. Dave Nielsen, the instigator of the pledge, gave a canned history of the pledge drive on his blog, and handily demonstrated that the free software community are willing to put a little bit of extra cash towards a little bit of extra freedom.
In bad news, the Ryzom.org bid to purchase "The Saga Of Ryzom" from failed developer Nevrax has failed. They were outbid by Gameforge AG. A ray of sunshine is that the project looks like it will continue, and there has already been the suggestion that they instead consider Asheron's Call 2 which closed in 2005 but was apparently quite good.
Co-incidentally, I was in one of the beta tests for Asheron's Call (I don't remember if it was 1 or 2), and today beta-testing applications opened for Tabula Rasa. I don't remember signing up for the mailing list, but I do have a PlayNC account through having purchased Guild Wars, a model I still hold up as being an excellent way to structure a MMOG's income, at least from a payer point of view. Of course, my job here at Micro Forté is as a programmer, not game producer, so my views aren't exactly changing the world... but give it time. ^_^
Speaking of Micro Forté, the Gaming Miniconf at LCA2007 is having Paul Murphy from (MF's MMOG technology development subsidiary, based in Sydney) as a guest speaker. I'll prolly have to sneak out of the Debian Miniconf to see that.
Poop. Paul Murphy's talk clashes directly with Anthony Town's "State of The Project" address. So there you go, first session of LCA2007 (barring keynotes, which don't conflict...) and I've got a scheduling conflict. >_< Maybe this year the recording will all work...
Edit: Someone floated the open-source Asheron's Call 2 idea the day it closed...
LCA 2007 Ho!
by TBBle on Jan.12, 2007, under CBIT Internet, Clubs, Computers, Debian, LCA07, Micro Forté, Programming
Well, it's nearly LCA time again. This is just a quick post mainly to see if my syndication at Planet Linux.conf.au 2007 is working yet.
I've been working at MF (Milestones just seem to come at you faster than the calender would otherwise suggest) and particularly in the last couple of weeks getting a good vector-math workout.
I've also been working at picking off RC bugs to try and help Etch along a bit, since kind of hoped to be upgrading to it in the half of January that's just passed.
I've also been looking for a CMS for the ANU Anime Society to try and resolve the fact that our web admins never seem to last as long as we'd like. At the moment, Joomla! is top of my list for trialling, as I'm familiar with PHP and looks to have the relevant modules (forum, calendar, eventing system that'll need modification to work for screening scheduling). However, I'm open to other suggestions, and will see if anyone at LCA has any useful suggestions.
And of course, by adding Planet LCA 2007, I've had to read it. And I came across ThreatNet, which is a distributed compromised computer identification system. It's actually really simple, you do something to identify a certain IP as a threat (the sample code scans postfix logs for "REJECT: noqueue" which usually comes from "no such user" although I noticed it also comes from greylister at CBIT) and sends that IP address to a nominated IRC channel. I dunno what's next, actually. Presumably, sites can block that IP address as they see fit, and if the responsible parties for the machine become aware of it, they can take action. I'll be adding this to my ever-growing list of things I need to consider implementation of at CBIT.
On the plus side, I recently installed Debian on a Slug with a 512MB USB flash stick, and I'm going to see how Nagios performs on it. If it's up to scratch, I'll prolly shoehorn in a wireless card and see if I can monitor two disparate networks effectively.
Confessions of a mercenary programmer
by TBBle on Oct.17, 2006, under Anime, Bandwidth Unlimited Pty Ltd, Clubs, Debian, Japan, Japanese, Linux, Micro Forté, Programming
Just a quick note, in the aftermath of the vote to decide where Anthony Towns, Debian Project Leader did something good for Debian, bad for Debian or indifferent to Debian with the Dunc-Tank.
I, Paul Hampson, hereby confess that I too earnt money for doing Debian work, specifically packaging FreeRADIUS and getting it sponsored into the archive in time for Sarge to ship.
Mind you, I didn't earn much money, since Bandwidth Unlimited (for it was they) went bust without paying me much, but they did pay me. And you might argue that I'd been looking for a package to help out with in Debian for nearly three years at that point, and I would have worked on it for free, and that when I was being paid serious money to administer an ISP, I didn't do much FreeRADIUS work at all.
To which I'd say that I'd never have picked FreeRADIUS were I not running an ISP, and I would not have been running an ISP had I not planned to become rich and buy the world's largest chocolate bar from the experience. And I didn't get a lot of my job functions done when I was running an ISP, so lower-priority things (like FreeRADIUS, cleaning my desk, a full night's sleep) were often pushed aside.
I have to say that until I recently became a professional, regularly paid, programmer, I was highly envious of people who get paid to work on Open Source stuff, let alone Debian stuff. Now I'm just envious, although that'll prolly upgrade back to highly envious after linux.conf.au 2007 (or as I like to think of it now, clitoris.conf.au)
This whole thing puts me in mind of my experience at the Sydney 2000 Olympics. I was one of the IT volunteers, and we basically picked up the less-interesting jobs the IBM-paid staffers gave us. At the time I felt a bit put out that I was there volunteering, and these guys were being paid to be there doing nothing that I couldn't have handled. Obviously that was decidedly unfair, and from my days of "I'm as good as or better than anyone else at computers" phase. But the unfairness of my attitude isn't actually the issue, the issue was that I really wanted to be paid to do that sort of thing, and didn't see why others should get paid but me not be.
Now of course I want two things: To get paid, and to do the things I love. I've finally reached the point where I can combine them, and I no longer begrudge those who, through luck, skill or otherwise, get paid more to do the same things, or get access to cooler toys to do them on. I'm envious, obviously. How do you not envy someone who gets to bring up Linux on a 128-way Power5 machine on the quiet? But that doesn't make me unhappy, it just makes me want to strive more, and work harder. One day I'll be the one submitting a paper to Linux.conf.au on some stupendously cool thing I've done. ^_^
Anyway, my short-medium term goal is to leverage the experience of the current MicroForté work, plus finishing my Japanese studies, to go work for a games company in Japan, combining my two favorite pipe-dreams into one, and making it reachable in a little as two years. Maybe I'll be lucky and MicroForté will open a Japanese office or something, or I'll luck out and end up working on a Japanese MMORPG with a Linux client and a measurable dose of serious cool. Or somehow end up programming at Nintendo.... Oh, sparkley eyes! *_*
And a by-the-by, it's two and a half months in, and I'm still totally thrilled to be working at a video games company. I mean, seriously, I'm like all, wow. I thought it was cool when I was working at TransACT, and my testing procedure involved firing up a video stream, and watching it on a TV. I had a TV on my desk, for work purposes, and that was the high-point of my career. Now I don't have a TV on my desk, but when I'm hacking on combat-handling code, part of my procedure involves firing up a game server, and playing.
I'm learning to take my time with things a bit more. I'm now much less worried that I won't speak six asian languages, play the piano, have my name someone in the Linux kernel that doesn't share a sentence with "blame", have invented an entirely new way of interacting with computers, master four different styles of martial art, earn my first dan in three different Japanese weapon styles, hold two masters degrees in disparate subject areas, earn infamy in the Debian community or even the admiration of my peers by 30. Or 40. I'll be pushing it to get there by 50. But the advantage of youth is that you get it when you're young, and only lose it if you let it go.
I guess on reflection, my goal has become to be a polymath ronin... For those familiar with anime, I think I want to be Kintaro Oe when I grow up...
Side-note: I'm now the secretary of the ANU Anime Society. Two days before the AGM, I wrote in an email to the then-executive committee that secretary was the one position I'd never take. Time makes fools of us all. ^_^ Congratulations to Cathy Ring on stepping up to the presidency, and to the other executives, old and new, for stepping up to what I expect (knowing Cathy) to be a hard-driven and successful year coming.
Oh, and someone asked this week about getting the GTO Live Action box set. So here's my AmazonJP links...
So you wanna be a domain-specific hero?
by TBBle on Aug.14, 2006, under CBIT Internet, Japan, Linux, Micro Forté, Programming, University
Wow. "Later this week" certainly took longer than I expected.
As of July 31st, I'm a (junior, for now) programmer at Micro Forté's Canberra studio. Two weeks in, and it's the best job I've had so far. ^_^ My first task involved trying out installation of the BigWorld MMOG server system as a new user so we could see what state the documentation was in, and for those who know how pedantic I am, a four-page file called whinge.txt is actually a positive sign.
It's an approximately eighteen-month contract, so I guess Japan and University will have to be put off at least that much longer. Still, I've pretty much wanted to write video games since I was six, learning Applesoft BASIC on the family //c, so no regrets. ^_^
I'm no longer working full-time at CBIT Internet, although I am still maintaining the ISP's servers there.
In celebration, I bought Guitar Hero, which neccesitated getting my Playstation 2 back from Richard, who'd in the meantime bought a PS2 EyeToy. I haven't tried the bundled game yet, but instructions exist to use the EyeToy as a windows webcam, and to use the EyeToy as a linux webcam.
This, plus the request of a nice young lady whom I only seem to face-to-face once every twelve months or so that I install Skype, got me playing with Skype again. Sadly, the 10 euros of credit I bought in 2004 and was unable to use (due to their system failing to transmit voice to the US at the time) have "expired", which annoyed me enough that I was boycotting them. The boycott ended the moment someone asked me to actually use it, mind you. ^_^
Of course, this led me into an exploration of open-source alternatives. On the Skype-protcol side, there's a paper from 2004 looking at how Skype 0.97 talked to the network as well as a recent claims from a Chinese company to have reverse-engineered the Skype protocol. Sadly, the latter is planning to commercialise their results, not publish them.
On the actual open-source side, I've been playing with SIP stuff again. I've had a SIP-based Asterisk server running here (You can try to call me via SIP although I don't always have a SIP client running) for a while now, and I recently got a chance to test it with some overseas friends, but due to poor codec choice, it quality sucked.
On codecs, I have to say that Speex is great and iLBC is awful. Both in voice quality, and for the fact that Speex is free open-source, while iLBC comes with a "no-commercial use" license.
Anyway, with a webcam, I've been toying with video-supporting SIP clients. For windows, the only free one appears to be X-Lite 3 which doesn't do Speex (although its commerical version, eyeBeam 1.5 does) but for my purposes (LAN to the Asterisk Box) I can do G.711 and let Asterisk do the Speex transcoding for me.
Under linux, Linphone has video support (although the 1.35 Debian package is compiled without, and the build-deps to build it wanted to remove texlive in favour of tetex...) which I've not tried yet, but which a brief glance at the source suggests supports H.263-1998. Ekiga, the successor to GnomeMeeting, also supports video, via opal, but only H.261. There's H.263 code there, but relies on FFMpeg 0.4.7 patched to support RFC2190 for its video support. (It's actually FFMpeg's libavcodec that's being used, but very few people make the distinction it seems)
A brief aside on the video codecs at play here. H.261 is the older ITU-T video standard for ISDN, while H.263 was a newer standard which drew from H.261 as well as MPEG-1 and MPEG-2, and which was the default video standard for H.323 computer video conferencing, thanks to things like Microsoft's NetMeeting and the open-source GnomeMeeting. However, along with MPEG technology comes murky and ill-defined MPEGLA patent issues. There's also H.263-1998, aka H.263p or H.263+, which adds some annexes to H.263 to support some more encoding features. For moving H.263 over RTP RFC 2190 was written. However, the stream format defined in RFC2190 couldn't support the data stream from H.263-1998, so RFC 2429 was published. Both H.263 and H.263-1998 can be carried in the RFC 2429 stream format, so in theory everyone should be using RFC 2429 streams, and we'd all be happy. Apparently, NetMeeting only support RFC 2190 and H.263 however, so that's the version that they implemented in Ekiga too (since Opal is a refactoring of the OpenH323 library's media interface, and Gnomemeeting's built on OpenH323. And the OpenH323 H.263 code was submitted by the same person who did the FFMpeg patch mentioned above.) Meanwhile, X-Lite supports H.263, H.263plus, and (according to my SIP debug logs on Asterisk) RFC 2429 streaming.
I spent most of today weighing up forwardporting the RFC2190 patch to FFMpeg, or updating libopal to support RFC2429. I didn't achieve much, but I weighed it up a lot. The final answer was wait for the current libopal refactoring (they've moved the video codec support out into plugins, and rewrote the H.263 code such that it's much easier to _add_ RFC2429 support) to reach my via Debian in some way, and then have a poke at it, if they haven't done it already. If it's not already done, I'm sure that submitted the code to make it work would make me an Open-source Telephony Hero
So to bring us back to the story, I've got a nice little Windows-based SIP client which does video but not Speex and needs to register with someone, a Linux-based client that does speex but which I haven't compiled the video for yet (Linphone), and a both linux- and win32-based client which claims to do Speex but barfs (Ekiga...) and which can't do the current video codec with the current video stream format, and depends on a slight fork of another library to do current video with the old format.
I can see why Skype's so popular...>_<
Incidentally, if you want a non-registrar-requiring Speex-supporting free but-without-video SIP client for Windows, I found PhonerLite seemed to work well. And frankly, if you're going to call me without warning at home, you might not want the webcam to show you whatever my current state of dress or undress is. ^_^
Talking to Chris Smart (of Kororaa) at CLUG's PSIG meeting last Thursday about webcams, Ekiga and kopete inevitably led onto the GPL and the Linux Kernel (he loves to talk about it, really! ^_^) and Chris pointed me at Greg K-H's take on Linux and Binary-only modules, which manages to draw the line between legal and illegal way way back there compared to where we all through we were. (On a sidenote, OLS looks like it would have been tremendous fun. I can hardly wait until I'm a jetsetting conference-attending Linux Kernel Hero.)
I've also been poking at the DeviceScape 802.11 stack for Linux. As well as happily running my laptop's Apple Airport Extreme2 card for the past few months, its software-based Access Point support appears to have progressed to the point at which I can start poking at it for Nintendo DS Wirelss Multi-boot infrastructure, which will bypass all the card-specific hacking people're having to do, as well as let it work on things that aren't RT25xx cards. It seems in the six months or so since I've looked hard at Nifi, a dude called masscat has picked up the ball and run with it, so I've almost 10 pages of forum thread, and then whatever code he's published, to catch up on. I'm pleasantly surprised, I thought with the advent of Wifi support for Nintendo DS Homebrew code interest in WMBing over Nifi would die. So here's my chance to get the dscape port done, and become an NDS Homebrew Hero.
I'm currently reading Perl 6 and Parrot Essentials and it's reinvigorating my love of Perl. ^_^ Shame MicroForté is a C++ and Python shop... Still, it's a nice change from reading The C++ Programming Language, 3rd Edition which I was reading for the six weeks between my first job interview and pretty much the weekend before I started at MicroForté. Of course, this means I'm tempted to spend my free time ignoring all the above ideas, and tooling about with Perl 6 and Parrot Especially with sheer coolness like Z-Code support in Parrot.
And for one final note, the real-estate agent is coming around next Saturday to inspect my flat, so I had to clean up. Luckily, it was mainly a case of emptying all the bins, although I need to run a quick vacuum around the place, it's a bit dusty in parts. I expect this inspection is because my lease expires in the next couple of weeks, and they want to know if they should kick me out or not. Given that I'm not working days in Watson with occasional evenings in Belconnen, I'm looking at moving anyway. Anyone know of a cheap one-bedroomer or two-bedroomer in Watson or adjoining suburbs? I'd like to be able to walk or bicycle to work. ^_^
Edit: Correct misspelling
Irrepressibility in the face of popularity, pixies and other illnesses
by TBBle on May.31, 2006, under CBIT Internet, Computers, Programming
I'm home sick today, so of course it seemed like a good idea to update my blog...
After adding that new irrepressible.info banner to the sidebar it occurred to me that I should active the neat Sidebar Widgets feature... Of course, this required me to either give up my non-standard sidebars, or widgetise them...
Firstly I modified the Top 10 posts plugin (original version) to have a widget mode for the sidebar, and also to do everything in a plugins_loaded hook, since it may load before the widget support plugin itself.
I then knocked up a quick irrepressible.info widget, based on the Google Search widget that comes with the plugin, which produces random chunks of censored material from irrepressible.info. These widget things are quite easy. ^_^
I also quickly knocked up a Weatherpixie widget for the Weatherpixie, although I didn't go as far as to offer a drop-down for the troopers or countries. This way people still go visit the pixie-chooser page, where the author's Google Ads are. I don't feel bad this way, given I emailed the author a few months ago about this, and didn't get any reply.
I did all my uploading/editing in lftp, but I intend to set up an FTP mount of some kind on my machine, now that I'm trying to avoid sshing into the webhosting box. I'm also looking into chroot'd sshd or sftp, but the quick answer so far is "hard".
I started doing this post in the Performancing Toolbar for firefox, but after two paragraphs I decided I much preferred the normal Wordpress interface. I'll be uninstalling Performancing pretty soon.
I'll stick and updates or other Wordpress stuff in http://www.tbble.net/wp/ until such time as I can be assed putting them into version control, and fixing the bzr browser on bzr.tbble.net.
Sin, Certs and Wans; or Sun Tzu VS Bikinis
by TBBle on May.03, 2006, under Australia, CBIT Internet, Computers, Linux, Programming, University
I pre-ordered Sin Episode 1: Emergence on the weekend. It was cheap (AU$23 or so) and included a Steam version of the original Sin. This is partly my fault, I was hoping for a steamy version of Original Sin... (Sorry if you were hoping for a different original sin joke. ^_^)
I actually own Sin, but I don't know where the CD is. The original box is still on my shelf. So I'm taking the opportunity to actually finish the game, since the new one is set four years later. And it's still as I remember, one of the best-fun first-person shooters I've played... Dragged me right away from Half-Life and its expansion packs. (Although I'm finished Half-Life and Blue Shift now, and I think I'm close to the end of Opposing Force)
A recent topic on Slashdot about The changing value of certifications. Beyond the somewhat inaccurate summarising of the arcticle on Slashdot (certifications still attract a pay premium, they don't actively hurt your career) I think a rather important oversight was made in much of the discussion (ie. that bit which survived my threshhold) --- and maybe this was covered in the original research, I didn't bother trying to track down the report mentioned in the article --- that for some jobs a certification doesn't attract a premium, because it's a neccessity.
Certainly the terms of employment at CBIT require that I hold a certification of some kind within six months of joining. It originally specified MCSE, but they happily let me substitute my LPIC-1. I since discovered that my Windows NT4 MCSE is still valid, so I'm putting the MCSE upgrade on hold to get my CCNA done.
Then a lot of the posters proceeded to confuse certification with qualifications. Having both, I'm amazed that this happens. On the other hand, the people generating this confusion were usually on the "I didn't need stuffy boring university or a do-in-my-sleep MCSD, I just walked in and told them how I've been running Windows since I was six and they hired me" side of the debate.
I'm going to get condescending here. I'll let you know when it's over. I really think these attitudes go hand in hand, and are usually closely followed by "Why won't <large company> hire me as their CTO? I know as much as all these highly qualified lawyers and managers. They'll fail now, and it'll be all their fault for not hiring me," and then later followed by "I've been working this same $30k/year first-level support role for ten years now, because management are too short sighted to realise that I was just too smart to waste three years on a degree."Done with the condescending bit.
And sure, I myself have been guilty of this. I still am, frequently. I think most of us in IT do it to some extent. This is also how we end up with the armchair lawyers, armchair managers, armchair accountants and armchair linguists that pervade our community. (I pick those because I've done them all myself. Ranter, berate theyself. ^_^) It might be a symptom of the type of person who succeeds in IT (self-confident, multi-skilled and widely read/educated) as compared to those who fail (obstinant, unfocussed and arrogant).
So why certify? I do it partly because I love training and learning, and having something to show for it --- Ignore that I waited five years to graduate my B.Sc --- and partly because it makes financial sense. I like to read when I go to bed... It settles me down and clears my mind. However, a $20 novel will only last two or three days. My CCNA INTRO book has taken me over a month to get about half-way into... I think because it's so dry, I can't read more than a few minutes. Either way, good value for $50.
Flicking through Planet Linux Australia as I do when I forget how much time it sucks up... Between the sordid tales of a Power5 lying with a SunFire --- Oh I wish I had a project to throw at them... Where's my multi-threaded Sudoko solver? --- I came across this gem of an idea for a Canberra-wide wireless mesh network. This is something I'd heartily endorse, and help with where I could... I'll have to dig out my old Gungahlin-wireless-mesh plans...
A quick aside: Another Rich Web with PHP talk from Rasmus Lerdorf. The content aside, the template is sweet. The template aside, the content is fascinating.
Another quick aside: Digital cameras have their own digital signature. I'm not sure if this is even vaugely practical for any use, but here's the original article's PDF. Someone in the discussion pointed me at a US Government scheme to convince colour laser printer manufacturers to encode printer identification data onto each page. It's a scary world we live in.
Last aside... Two more links: One to make you cry: Even if the author is being facetious, someone somewhere belives this; and one to make you laugh: Every workplace should have a plan on its books for how to deal with Viking Raids.
But what of the bikinis, I hear you ask... Or would, were I narrating this out loud instead of in my head... And you cared about bikinis more than you care about Sun Tzu... OK. This is an IRC story. You've been warned.
On one of the IRC channels I hang out on, discussion turned to bikinis, and one of the channel regulars (Io) mentioned that she doesn't wear bikinis.
Pseudo-aside: This is Io. I knocked up this image that same evening, as it happens. MSPaint's so much easier to use than The Gimp... I did the whole image in the time it took me to give up the other day on finding a "Draw a square" button in The Gimp.
Anyway, it seemed sensible at this poit to consult with my new TzuBBot. TzuBBot being my Art-Of-War-based-advice-bot. Here's the results.
03:00 < TBBle> TzuBBot: Any advice on the best way to get Io out of Brazil and into a bikini?
03:00 < TzuBBot> THE NINE SITUATIONS: 55. Hence he does not strive to ally himself with all and sundry, nor does he foster the power of other states. He carries out his own secret designs, keeping his antagonists in awe. Thus he is able to capture their cities and overthrow their kingdoms.
03:01 < TBBle> TzuBBot: Any advice on the best way to get Io out of a bikini and into my lap?
03:01 < TzuBBot> THE ARMY ON THE MARCH: 45. If a general shows confidence in his men but always insists on his orders being obeyed, the gain will be mutual.
The TzuBBot gives useful advice so often, it's scary...
Final note: My goodneess, but the move from Yurika to Dino has made this website soooo much snappier!
Certifiable Linux Professional
by TBBle on Mar.11, 2006, under CBIT Internet, LCA06, Linux, Programming
My LPI exam results came on Thursday, but I only just read the email...
Score Report for Exam 101 Your Score: 660 Required Passing Score: 500 Status: Pass Test Section Information Percent Correct Section 71% Hardware Architecture 78% Linux Installation & Package Management 95% GNU & Unix Commands 100% Devices, Linux Filesystems, Filesystem Hierarchy Standard 75% The X Window System
Score Report for Exam 102 Your Score: 690 Required Passing Score: 500 Status: Pass Test Section Information Percent Correct Section 100% Kernel 75% Boot, Initialization, Shutdown and Runlevels 100% Printing 100% Documentation 100% Shells, Scripting, Programming and Compiling 66% Administrative Tasks 100% Networking Fundamentals 94% Networking Services 83% Security
Given my intense need to know just how much cleverer I am than those around me, I went to the LPI website to find out just what the LPI scores mean. It turns out that they're scaled to give a mean of 480 and a standard deviation of 100.
If you're not familiar with standard deviation, Wikipedia to the rescue: 
This means that passing should be just under 50%. However, their stats say that the pass-rate was about 64% up to 2003, and the recent stats say they've given 100k exams and have 32k certified LPIC-1's --- you need two exam passes to be an LPIC-1. Well, I guess at least they're consistent over the years...
More importantly, this means that my 101 result puts me at the middle-high end of the 84.1 -- 97.7% block (1σ-2σ) and my 102 result puts me at the low end of the 97.7% -- 99.8% block (2σ-3σ). Which means a score between 780 and 860 is top-0.2%, for those playing along at home.
I'm quite pleased, given they only took me around 20 minutes each. ^_^
So how am I spending my weekend? Installing Visual Studio for a development project I've won. >_<
I also recently discovered a new prime number generation algorithm. Ask a client to submit all their new artwork for their website. Some portion of it will need scaling down. And some portion of that will have a dimension that is prime. O_O
Quantum::Entaglement, the dream that perl is made of
by TBBle on Feb.12, 2006, under Debian, LCA06, Programming
Still on a bit of a Perl6 high from LCA06, I went looking for something to apply Quantum::Superpositions to. I think I've blogged about these before, and the fact that they're in Perl 6 (as "Junctions"). Today I was looking for a use for them, and realise that the Sudoku booklet I was holding was perfect.
Upon actually reading the CPAN entry for Quantum::Superpositions, I realised that it wasn't actually what I wanted. Luckily, Quantum::Entanglement also showed up when I searched CPAN for "Quantum". Quantum::Entanglement is what I want.
The idea of Quantum::Entanglement is that you create an entanglement, which has a certain probability of being in a particular state, and a probability of 1 of being in _a_ state. You then operate upon this, and it collapses as appropriate when you actually learn something about it, producing either a result or more entanglements. I'd read the page for more information. And in fact, that's what I did.
Sudoku on the other hand, is apparently sweeping the world by storm. It's basically a 9x9 grid, in which you must places digits 1-9 such that each digit appears once in each row, column and each of 9 3x3 disjoint squares. You are given a couple of numbers to start, and then it's off. If there was ever a candidate for quantum computing quite as good, I can't imagine what it is. (OK, I can imagine. Breaking cryptography that relies on large primes...)
So the code looks like this:
use strict;
use Quantum::Entanglement;
my $easy = [
[ 0,9,0, 5,2,4, 6,0,0 ],
[ 0,0,0, 0,0,0, 0,5,4 ],
[ 0,0,0, 0,0,3, 0,7,2 ],
[ 0,6,7, 0,0,5, 0,0,0 ],
[ 3,0,4, 7,1,8, 5,9,6 ],
[ 0,0,0, 2,0,0, 3,8,0 ],
[ 5,7,0, 4,0,0, 0,0,0 ],
[ 6,1,0, 0,0,0, 0,0,0 ],
[ 0,0,2, 3,9,7, 0,6,0 ]
];
# Build a board of quantum entanglements.
my $board;
for my $i (0 .. 8) {
for my $j (0 .. 8) {
$board->[$i][$j] =
entangle(1=>1, 1=>2, 1=>3, 1=>4, 1=>5, 1=>6, 1=>7, 1=>8, 1=>9);
print "Initial: ($i,$j) => ",$board->[$i][$j]->show_states();
}
}
# Now entangle the variables together, without collapsing any values
for my $i (0 .. 8) {
for my $j (0 .. 7) {
for my $k (($j+1) .. 8) {
print "($i,$j) != Row ($i,$k)\n";
p_op $board->[$i][$j], '!=', $board->[$i][$k];
print "($j,$i) != Col ($k,$i)\n";
p_op $board->[$j][$i], '!=', $board->[$k][$i];
# We don't need to entangle again a cell that is
# both in the square and shares a row or column
unless ($i-$i%3 + int($j/3) == $i-$i%3 + int($k/3)
or ($i%3)*3 + $j%3 == ($i%3)*3 + $k%3) {
printf "(%d,%d) != Sqr (%d,%d)\n", $i-$i%3 + int($j/3),
($i%3)*3 + $j%3, $i-$i%3 + int($k/3), ($i%3)*3 + $k%3;
p_op $board->[$i-$i%3 + int($j/3)][($i%3)*3 + $j%3], '!=',
$board->[$i-$i%3 + int($k/3)][($i%3)*3 + $k%3];
}
# print $board->[$i][$j]->show_states(),"\n";
}
}
}
for my $i (0 .. 8) {
for my $j (0 .. 8) {
if ($easy->[$i][$j] != 0) {
p_op $board->[$i][$j], '==', $easy->[$i][$j];
}
}
}
# Turn on try-for-truth mode
$Quantum::Entanglement::conform = 1;
# At this point, printing any value from the array should
# collapse the entire entanglement.
for my $i (0 .. 8) {
for my $j (0 .. 8) {
print " ",$board->[$i][$j];
}
print "\n";
}
And how does it work? I have absolutely no idea. My computer has 512Mb of physical RAM, which is filled within the first five p_ops. The sixth takes it to a gigabyte, and suddenly kswapd0 is doing more work than perl...
I asked on #perl, and was told that Quantum::Entanglement (and Quantum::Superpositions) are crap. >_< So I guess this will remain a thought experiment, unless someone has either a Quantum computer lying around, or a machine with multi-mega-petabytes of RAM...
The reason the RAM usage climbs so high is that entangling two things with 9 states produces 72 possible global states (every combination of 1-9 and 1-9 except equality). Each cell added to this entanglement of the first cell is another 8, so the entire entanglement of the first cell (ie the entire $k loop has run) is 9 * 8^20 or 10376293541461622784 states. That's 10x10^18 states. Each successive cell actually removes from consideration some of the earlier states, but the multicative effect completely hides that. Which is good news for people relying on GPG to protect their data. ^_^
Of course, now I'm going to be looking for something practical I can do with Quantum::Entanglement.
For reference, this is puzzle #1 from Lovatts Super Sudoku issue 8, which I actually fell asleep doing on the plane to LCA06, due to the tonsilitis, Panedine, Strepsils, penicilin and 28 hours (including three of highway driving) of continual awakeness preceeding it.
Oh, and apt-get install libquantum-entanglement-perl is the super-final-ultimate-killer proof that Debian is the only way to Linux. ^_^
Passing a penguin through the eye of a needle: LCA Presentations Day 2
by TBBle on Jan.28, 2006, under LCA06, Linux, Programming
Due to spending most of the day off wireless while I tried to get dscape working, today gets one LCA post... Which is a shame, because it was a spectacular day.
Damian Conway's 14 lessons from the Perl 6 development process was of course both incisive and entertaining. The Perl6 design process has taken about six years so far, and is in fact almost complete, as has been previously reported.
The first presentation of the morning was a Blender tutorial, scheduled only late on Thursday night. It was interestined, but sadly the r300 driver had a few display issues, and having a more recent version of Blender (2.40) than the presenter (2.37) meant that I ended up with a very large and blocky gingerbread man...
Xen on POWER was next.
It started with an overview of Xen, particularly the problems it faces and the solutions it has chosen.
He then discussed the various current Power chips. Power 970 w/Hypervisor Extensions is the current target.
The Hypervison Extensions are: an IOMMU (Like an MMU for IO), a Hypervisor privilige level above the kernle privilige level, real-mode (MMU-less, used for exceptions) base+limit registers: keeps domains locked in their memory even in real mode while allowing direct-to-domain exception delivery.
The PPC Linux port supports wide hardware types, so many hardware interfaces (eg. interrupt controller) were already function pointers filled in by subarch-specific code. Other areas already supported PHYP (IBM's Hypervisor) so port was generally easy
Currently can boot Dom0, DomU boots (with caveats). One binary runs PHYP, dom0, domU, direct to hardware thanks to OpenFirmware.
Still to be done: SMP, domU timekeeping, grant tables (Xen shared memory method), virtual IO, domain memory outside realmode area.
The main bottleneck to their work is Xen management tools portability... They rely on a hypervisor/userspace translation that i386 gets for free, but for PowerPC is very expensive without the MMU (eg. in Real mode, where the hypervisor runs...)
Long-range plans are: SMP, 970MP, live migration, non-hypervisor mode 970, cell CPU and the non-hypervisor mode 32-bit PPC (eg. my PowerBook, and my G4 tower. ^_^)
Lunch: Finally had time to write down the crashdump from the dscape modules on my PowerBook... On actual paper. It just fit in the blank column on the schedule sheets floating around. Jelmer sacrified his for my cause. ^_^
Avahi: mDNS-SD. Interesting project, but it sounds like it wouldn't be particularly helpful for wider-area service discovery (the multicast is only sent with a TTL of 1, seems kind of like Bluetooth for a LAN, based on the link-local IP address range). On the other hand, the program itself is very well done, and it's IPv6-enabled. I'll have to give this some further thought before I can see how to apply it. (In the enterprise world, DNS SRV and Kerberos/Active Directory are prolly better solutions anyway. This would make a network like Fenner Hall's quite fun...). On the gripping hand, I saw a bug in one of the files he pulled up. I'm miscredited, but it's close, and I have lots of witnesses. ^_^
Van Jacobsen: Wow. I guess it's one of those things that just stares you in the face... The immediate upshot is I have to go whack irqbalance from all my SMP servers. The longer term upshot, if this sort of thing gets pushed successfully into Linux, is deleriously high-speed low-CPU networking... I wonder if Van Jaconbsen can drop the CPU usage of timidity like that?
I implemented a lockless ringbuffer into one of the projects I did for TransACT which has not to my knowledge seen the light of day yet. I'm glad to know that it was a good thing. I wish I'd had more time to look at Van's code for that. I've prolly got a model version in a textbook at home, anyway.
Rasmus VS The Internet: Some very good advice from Rasmus regarding Internet security. It boiled down to "Don't trust user input" which is really just as true for non-Internet applications... He also look at opcode caching briefly, and I linked to APC for his last presentation.
Rasmus took the opportunity to perform cross-site scripting attacks on sites provided by the audience, to the delight of said audience. Man, I'm alomst tempted to go back into Web Programming... almost
Perl BOF: Paul Fenwick gave a quick blurb about PerlNet, designed to be an AUS/NZ Perl community portal. Definately a project to watch, although it's under CC-BY-SA-2.0-AU, which is a problem for code. I have to pull up the Debian discussion of this for Paul ASAP, so we can get it changed... For that matter, I need to reread the Artistic License. Sam Vilain gave a quick presentation forging on from Damian's keynote (I ended up chatting briefly to Sam's boss from Wellington at the dinner) and then Damian Conway demonstrated some of his favorite cool toys from CPAN.).
Interestingly, Creative Commons have put up plain-language versions of not just the license as used by perl.net.au but also plan-language versions of the GPL and the LGPL. This should make my argument easier to make... I wonder if they have one of the Artistic license...
In fact, a little light reading raises a question... The CC says that the SA term specifically applies to derivative works... I need to check the legalese to determine what applies to exact and direct copies... Not that it's relative here. Taking anything from the site is a derivative work. I guess I need to talk to Paul further and see exactly what he's trying to achieve... The important point is that any code on the site needs to be free enough to take into a GPLd or Artistic Licensed program, but both the GPL and Artistic License seem to be bound up in the code... Maybe a three-way disjoint license on the site, CC-BY-SA/GPL/Artistic. So you can make derivative works of the site under either CC-BY-SA (which means you must attribute and license it under CC-BY-SA), GPL (The aggregate must be under the GPL so everything must be GPL or looser) or the Artistic License (Roughly, if you change this apart from public- or the author-source changes, you either distribute it to the general public, only use it privately, or mark clearly what you've changed... Erk. Bad bad bad for a website.) And just to make things funner, one of the Perl6 RFC responses was the Artistic License 2.0. Something else I need to look up.
Penguin Dinner: Food was fine. Auction was entertaining. They ended up selling the Ian Ross signed book (link this!) for $10k, Linux Australia matches that with $10k, and USENIX matches _that_ for another $20k. The overall total needed is $500k, so I think we did our part. And the book was won by UNSW students and former students, so will be on display at UNSW next year at LCA07.
Damn, Keitarou's down. No IRC for me, although I could drop irssi onto my laptop temporarily... Also no email until I get back home on Tuesday.
Sam's presentation at the Perl BOF had this in one corner, but HTML betrayed him and made it too small to see.
In case you were wondering about the post title; also from Sam's presentation
Edit: Actually link to previous post, rather than leaving myself a note saying "Link to previous post"...
The PowerPC and the PHPassion: LCA Presentations Day 1 Afternoon
by TBBle on Jan.26, 2006, under CBIT Internet, Debian, Japan, LCA06, Linux, Programming
Lunch: Spent so much time editing the morning's post, didn't get to eat, and then went to two wrong theatres and missed the start of the 32/64 comparison with x86 and Power by Olof Johansson. And they were out of pies so I bought sushi instead...
The 32/64 bit presentation was interesting. I'd seen discussion on Debian-Devel along the lines that PPC64 is slower than PPC, and therefore a pure 64-bit Debian port (ala. AMD64 port) was a poor idea (as opposed to AMD64). Olof presented benchmarks (which supported this) as well as a discussion of the way the both x86 and PPC's ABI's differ between 32 and 64 bits. It seems that the PPC64 ABI has actually added more overhead to function calls, and hasn't taken advantage of an ABI change to improve existing issues, while x86_64 has actually used the ABI change to make more use of CPU registers to improve function calls significantly.
An audience member mentioned that newer toolchains than those tested use a different function-call structure or something and should be more efficient. So maybe PPC64's problems aren't insurmountable. Mind you, PPC64 does seem to be mainly targetted at specific applications, rather than overall system support ala x86_64... I wonder how MacOS X on G5 does it? I presume its a 32-bit userland from this...
Following on neatly there's a PPC presentation on next from Paul Mackerras... I wonder if this issue will be addressed then too?
Either way, it was a quick session, and happily I was _just_ able to follow the stuff that was going on and the following audience discussion... ^_^
And the short session meant I got to eat my sushi before the next presentation
Paul Mackerras (Paulus)'s presentation on Recent Developments in PowerPC
Merging 32-bit ppc and 64-bit ppc64 architectures in the Linux kernel: Lots of duplicate code, ensures both architectures benefit from features, cleanups, bugfixes and drivers etc. So instead, there's one architecture powerpc which is now the default arch.
This explains why recently building kernel modules on my PowerBook G4 failed, unless I prefixed the make with ARCH=ppc... >_< I noticed rene's bcm43xx packages did the same thing in debian/rules, so it's not just me.
Interestingly, Paul said that powermacs are no longer supported in ARCH=ppc as of 10th January. So 2.6.16 I guess...
It's been a fairly fast project, having been agreed to last July, first hit the tree on 29th August, and by 19th November the PPC64 stuff was completely gone.
During a question from Dave Miller about the PPC handing of OpenFirmware VS Sparc64's handling I was passed a card to sign for Paul Mackerras's birthday. I can't imagine how the people sitting directly in front of him signed it without him seeing...
Further discussion of memory layouts (64kb hardware page support means lots and lots of addressable memory!) followed by a quick round of Happy Birthday rounded out the rather technical session nicely.
I spent the interlude before the PHP5 presentation (ie while everyone else was off getting afternoon tea) finishing the morning's posting, and jealously guarding my powerpoint.
Rasmus Lerdorfs's PHP5 talk was quite technical, fast and codery in nature, so I'll just be noting the cool points I wasn't previously aware of. The version posted on his site right now is slightly older (marked 2006-01-25) than the one he's displaying on the screen (marked 2006-01-26).
PHP's main aspects: Fail Fast, Fail Cheap, Be Lazy. The greatest efficiencies come from solving problems you will never have
.
Rasmus said that PHP has the unix philosophy of solving one small problem and solving it well. It's not a framework, or the complete solution, but it does what it does very well.
AJAX makes this even better because the layout stuff gets moved to the local browser side, meaning that PHP only really needs to serve up the data in a format like JSON or XML, and the client-side UI code is actually run on the client site.
AJAX appears (now that I've seen it on the code-side) to simply be javascript in the web browser sending requests to the server with updates and whatnot and dynamically changing the UI without refreshing the entire page. This is good stuff, and I probably would have understood it earlier if I had actually listened to anyone whom I'd talked to about it before now. I wonder if we'll be talking about this at the Perl BOF tomorrow...
I now also know what MVC means, and why it's not actually sensible for web applications. But we use AJAX to do something similar, seperating presentation and data (oooh, like XHTML!).
Oooh! A very very useful thing in PHP is the <<< construct. Like the << shell function, and it expands PHP variables that appear inline.
Coming soon from Yahoo!, some kind of useful library thing for AJAX and stuff. ^_^
Hmm. JSON is apparently a Javascript self-extracting object. Neat. And I didn't even know Javascript had an eval() function...
Man, the CBIT Internet customer manager interface is gonna be sooo cool when I'm done with it. ^_^
PDO is a new PECL extension for PHP5, and part of PHP5.1 which looks a lot like Perl's DBI. It lets you bind parameters which will also save a whackload of crappy coding on my part... Mind you, I didn't use the binding stuff in Perl5, but I should be doing so.
Things in PHP5 that make it good for AJAX stuff: XML uses libxml2 and dom now. This gets us XPath and XSL... and SimpleXML! This gives a PHP native object from the XML file....
$url = 'http://wiki.lca2006.linux.org.au/RecentChanges?format=rss';
foreach(simplexml_load_file($url)->item as $it)
echo "<a href='{$it->link}'>{$it->title}</a> {$it->description}<br />\n";
?>
Huzzah. Two instruction RSS aggregator... I can't imagine why Planet takes so much code... ^_^
And with the demonstration of http://buzz.progphp.com/ and unsafe search (I wasn't quick enough on the URL, and the only thing Google will find is an old version of it, Rasmus's one had images. Images!) it was obvious that this is the future of the web.
OMG! I'm a Web 2.0 convert. CAPS LOCK CANNOT EXPRESS MY FANGIRLY JOY.
Boy've I've been looking for a place to use that last one. I can't find the website I saw it on, but as soon as I saw it, I know I had to write it somewhere. ^_^
And then just to finish off (and whet our appetites for tomorrow's "Fast and Secure websites" presentation) Rasmus pointed us to APC, a PHP Opcode Cache which Yahoo! is happily running on their servers. One server he pulled up has taken 87 million hits in the past few hours, with 20k cache misses. O_O
And then there's the XHTML problem which I really need to sit down and unblithe my pages about...
BOFs... VoIP. I visited PowerPC, but on consideration this one's actually more important to me.
VoIP BOF links for my own reference: MacOS X softphone, Platronics nice USB headset which can be bought from Harris Technology.
Interesting things pulled off Planet LCA2006: Gumstix - Small, small small computers; CryoPID - Freezes processes so they can be migrated across ttys and even machines. CryoPID was actually described at the lightning talks at LCA05, and received many oohs and aahs at the time at the idea of screening processes after they'd been started.
After the BOF, went to do my LPI 101 exam. As mentioned, I've been studying from LPIC 1 Exam Cram 2, which the LPI's Books page describes as ...the most up-to-date publication reflecting recent changes in LPI exam objectives.
. Mind you, it fails to mention that they've since (as of October 1st 2005) merged the DEB and RPM exams... Mind you, I hadn't checked the errata since I was actually only going along to ask a question about the exam proceedure. Having since checked the errata, there's six pages of corrections, and there's still some whoppers missing. The above change to the exams, and the fact that Linux doesn't have an "Archive" bit...
Either way, it took 20 minutes of the 90 allotted, and I feel really good about it. Still worried about the second exam, will prolly put that off until Saturday and push hard to finish the book first.
And another episode of S.O.S watched, as this site was being slow for some reason... It's so wrenchingly painful to watch, but I can't possibly stop until I know what happens...
Either way, an excellent day topped off with way too much Japanese food. ^_^
Oh yes. If I get a chance, I must ask Dave Miller at the presenter's panel about the IEEE 802.11 stacks...
The power (or lack thereof) of QT4: LCA Tutorials Morning
by TBBle on Jan.25, 2006, under Japan, Japanese, LCA06, Linux, Pretty Guardian Sailor Moon, Programming
Overnight interlude: Talked to rene, he didn't seem enthused about a dscape package, so I'll do it myself (based on his code. ^_^). Also, halfway through S.O.S. I really just want to hit Irie-san with something... Gah!
LCA2006 conference opening this morning. As I'd gleaned from the Rough Guide to New Zealand, it is unexpectedly hot. This place looks more and more tempting, although the Internet link (NZ - Spiritual home of IP over Carrier Pigeon
according to one wag) scares me.
QT4 tutorial this morning. Not a lot to say, lots of concentrating on slides. However, I did observe a serious problem that I was not expecting... They've not supplied a single power board, and the powerpoints in Castle 1 are even more dearth than at the ANU. Castle 2 (where the Debian miniconf was) is excellently appointed for powerpoints, on the other hand. On the gripping hand, this was my main contribution to the pre-LCA network survery they undertook... Oh well, I'll see if I can go make noise on IRC or something...
Well, maybe I'll say something about QT4. I've not done any GUI programming before, so it's both interesting, and looks like a lot of work. Much as I can read and understand C++, I think I'd be more comfortable doing it in perl or similar. Also, the presenter moved quite quickly, so I suspect this was aimed slightly over my head (although I could follow what was going on, I certainly couldn't be aping him as we went. I guess I was spoilt by Rusty and Robert's kernel module tutorial last year... Maybe it's like The Princess Bride in that it's a beloved movie, but for many people watching it years later pales in comparison to their fond memories... Although neither the kernel module tutorial nor The Princess Bride have paled in my memory yet.
Oh yeah. And I had to keep stopping to apt-get install things during the tutorial. We were told we'd need qt4 w/sqlite support (qt4-dev and qt4-sql), nothing was mentioned of the Assistant (qt4-doc qt4-dev-tools) Designer (qt4-designer) nor the SQLite client (sqlite3) and admittedly the first and last are optional. I guess the presenter assumed we'd be fetching qt4.1 from source and installing it...
Morning tea: Rene's online, and _is_ working on a dscape packageset. ^_^ And in completely unrelated seen-on-IRC news: OpenJazz Jazz Jackrabbit 1 reimplementation (uses original tilesets etc)...Someone's started porting it to the Nintendo DS. More on this after I find cookies or something.
Also during morning tea, I was roped into coming to the Perl BOF on Thursday afternoon. Although there's several BOFs on I'm interested in, the perl6 talk from Monday has me all Perl-enthused right now. Especially if it means I can sensibly resurrect my SOAP server for CBIT, and send out my auto-emails without the evils of perl5's format code. (This modules implements Exegesis 7, although I think what Damian described on Monday was slightly different. There's no Synopsis 7 yet either. -_-
More QT4. I18n support's there and easy to use programatically, although they apparently expect literals in UTF-16... The suggestion is to work in latin1 and just provide a translation for the target language to start with. This is prolly a quite sensible idea in general, as it allows your documentation writers to rewrite the text in the interface as needed, and lets the programming team leave the messages in the untranslated version in a format and phrasing useful to them, which as everybody knows is rather different from the way users work. Who is General Protection and why did his mistake crash my program?
This reminds me of a neat thing an IRC friend of mine once showed me that she was working on for a games company. She'd managed to independently re-implement po (in fact, it looked more like the QT4 i18n does, now I've seen it) for Visual Studio programs, while extending it to not just text, but all kinds of resources, drop-in-able with DLLs. So graphics with embedded text, video, audio and country-specific non-language things were all trivially handleable by their l10n teams. I bet it was doing encryption too, from my experience with Japanese games' text resources.
Wow, haven't seen or heard from her since the fall of #pgsm to TVNihon... One of the sadly few IRC friends I have who get my programming stuff, my linux stuff, my anime stuff, my random Japanese stuff, and was still genki in the morning. ^_^
News flash! Trolltech has announced that US spelling is indeed wrong... In some cases internationalization is simple, for example, making a US application accessible to Australian or British users may require little more than a few spelling corrections.
^_^
Lunch: Seen on Planet linux.conf.au 2006: Splashpower, an induction-charger for mobile devices. According to Arjen Lentz they're in discussions with distributors. Amusingly, each submenu on their site has a picture at the top of someone who stuck the little metal strip to their foot and then walked across the pad. Possibly this could supplant firewalking as a harmless but dangerous-looking power-activity (or would that be extreme walking?) of the future.
Also lunch: I finally understand why the power-point cable on my PowerBook's adaptor comes off. You can replace it with a plug, which is almost as neat a solution as the retractable version I was talking to Jez about last week. I wonder if that's something I need to poke my boss about, or if it's an optional extra...
The bear dances: LCA Miniconfs Day 1 Afternoon
by TBBle on Jan.23, 2006, under LCA06, Linux, Programming
Even before the presentation, useful tidbits came flying out. Damien and an audience member had a discussion about practical aspects of presentations (ie. looking at code and things during the presentation). Damien pointed out that he structures his presentations around the assumption that people have nothing, and that the audience doesn't really want to be interactively compiling and examing code and whatnot. As it happens, I'm hiding up the back anyway, trying not to be noisy with my keyboard. I'm actually back here because that's where the powerpoint is, but I guess it's all for the best.
I don't think I can do justice to this talk. So trust me, it's fascinating. He's given it before and gets rave reviews. ^_^
It's certainly an amazing and useful and complements my recent reading of the Perl 6 Synopses, (I'm only half-way through 2, as I was reading them during a series of outages at work, which solved itself right as I got into the swing of it...
OK, one thing that is so glorious I have to write it:
And that's not even the coolest thing. Well, I think it's cool, ASCII people will think I'm dumb (To whom I say "«»", "¥" and with a bit of luck "≅" although that is currently only ~~ and in fact is rendered differently in different fonts. For me, by hand it's two ~s on top of each other...), but there's just so much good good stuff here.
Actually, the coolest thing might be that the Quantum::Superpositions module (by Damien Conway, as it happens) is part of the basic perl6 syntax. He's calling them "Junctions" or "Junctive Operators" now.
Side note: The men's toilets near Burns 4,5,6,7 appear to be designed such that, no matter how carefully you aim, you reflect your urine back onto your own shoes. I highly recommend a look... Women might want to knock first or something, and possibly also visit the urinals in the Link area to get an idea of what you're comparing to.
OK, 10 minutes before the (scheduled) end, the coolest neat thing appears!
compiles but does not run. That's actualy its job. It came up in the "roles" discussion. Roles are like "interfaces" in Java, but more.
I guess the final summary is that perl6 is all the DWIM of perl5, plus more, plus real Object-Oriented, plus Aspect-Oriented, plus a real and good VM, plus literate programming, plus functional programming... But wait, there's more! And no XS!
And in good news, a very very very provisional release suggestion is in the next twelve to eighteen months. ^_^ Want it sooner? What perl6 needs: Money for the people they've got to put more time into it (including hiring Damian to train perl), developers to put time into it, and people to champion the cause in their organisations... Hmm. Isn't that the Debian wish-list? (And the Ubuntu got-list...)
Gonna be a hell of a keynote on Friday.
Debian bunfights, AJ sells his soul, and Battlestar Galactica: LCA Miniconfs Day 1 Morning
by TBBle on Jan.23, 2006, under CBIT Internet, Debian, LCA06, Linux, Programming
Happily, wifi works in the theatres. ^_^
First up in the Debian minconf was just enough of S2 Ep1 of Battlestar Galactica to remind me of where the Australian TV season's up to, and probably frustrate those who haven't already seen it.
Next was a presentation by a Ubuntu MOTU member regarding Debian/Ubuntu collaberation. A bit of interesting information about how Ubuntu's Debian-collaberation stuff works, a few buns thrown, and a fair bit of jovial back-and-forth. Just what I was hoping for. Interesting link: http://revu.tauware.de/~lucas/versions/ - Version comparisons between Ubuntu and Debian.
Interlude: Coffee, chat, and the next 20 minutes of the BSG episode.
Anthony Towns and his way of trying to get people to pay him to work on Open Source projects. It's kind of an inverse bounty where he posts what he wants people to work on, and people put up money to what they want done. It involves a Supply and Demand curve pair apparently, but he didn't post slides... So here's the link to it: AJ Market. The discussion evolved into a look at "betting markets" as a replacement for bounty systems. The idea is, you bet $x against something being implemented. If it's implemented, you got your feature. If it's not implemented, you get your money back, plus money that was bet _for_ it being done. People working on implementing it bet on it being implemented, and share the winnings if it is implemented. Obviously this places a bit of risk on the side of the implementors, but it's a fascinating idea.
Overhearing a conversation about this while I was packing up, apparently part of this also involves the buy and selling of "bets", which actually turn out to be more like shares... The idea being that a programmer can pick up cheap shares (eg. because the project's been ignored for ages, and is seeming very unlikely) and then complete it, realising the full value of the shares. This requires that any initial investments are made on both sides of the bet. This situation would encourage people to ignore things they know they _could_ do until it's worth it to do it, but at the same time if you want something done, you can buy your shares on both sides, and give away the "will be done" shares to a likely candidate, which gives them an incentive to get it done, as the shares are only on paper until the project is completed.
I'm sure AJ's blog has more useful information, or will do really soon now. I'm interested, myself. Anyone wanna bet me that I can't do Linux WMB for things other than ralink cards? ^_^
An interlude in the history of PHP...Rasmus Lerdorf is actually presenting a tutorial onPHP5 behind Web2.0 (AJAX etc) stuff which I'm probably going to go to on Thursday afternoon, much as it clashes with the tutorial on programming Asterisk PABX at serveral levels and the latter is highly relevant to what I'm supposed to be doing for a living.
This afternoon, however, it'll be the Perl 6 session at the Damien Conway miniconf in Burns 7. ^_^
Track… forward?
by TBBle on Oct.18, 2005, under Australia, Bandwidth Unlimited Pty Ltd, Programming
Things I'm tracking, hoping for good things:
- GplFlash2
- Open source, GPL implementation of Macromedia Flash 7. The developer has a blog, last updated in July.
- Bazaar-NG
- Revision Control Software from Canonical, who put Ubuntu together. Successor to Bazaar, which is the successor to arch. Also has a cool set of plugins growing around it, such as bzrk which lets you visualise your branches and then drill down into them, as well a the essential bzrtools.
- a couple of bazaar-ng web interfaces
- bzrweb (Not yet upgraded to bzr 0.1.1 -_-, you could otherwise see it on my bzr site) and a port of the Mercurial web interface, hgweb which I've not tried since it looks like the repository contains bzr as well, and I'm not clear if that's because modifications to bzr were needed, or what. Also a complete lack of installation documentation, and the TODOs need to be done.
- Vega Strike
- 3d space-flight simulator, along the lines of Wing Commander. Admittedly, I've only run this once on a 3d-enabled machine, and I managed to ram a mining station at full speed as I forgot that you need to accelerate against your line of velocity to slow down. But it looks promising. It already looks good.
- Asterisk ('*')
- Open-source PABX software. It does SIP, H.323, IAX2 (their own protocol) as well as interfacing to line-interface cards. I've actually got this set up on Keitarou, running SIP, but have no one to call me. I'm supposed to get this ready for voice-conferencing for anime.au comittee meetings... I'm also looking forward to further database integration so I can hook this up at BU and sell cheap VoIP calls. ^_^
- IPv6
- Anyone who's dealt with me in an ISP sense (especially if you're a supplier ^_^) will know I keep asking about IPv6. Because, dammit, it's the future, it's coming, and the sooner we're ready, the sooner we'll be transitioned. From home, all my machines can connect to Yurika over the 'net via IPv6 with no speed issues (both here and Yurika are using 6to4 which, if more NAT routers supported along with Neighbour Discovery, would allow basically zero-conf setup of an IPv6-capable host such as Windows XP, MacOS X and of course Linux and BSD flavours.
One last thing. Mad props to John Stanhope for posting and defending his decision to post the federal government's latest effort in the war on freedom. It's about time the federal government was reminded that they don't get to keep laws secret from the people. They're not a large corporation answerable only to their shareholders with only the board allowed to know everything that's going on, they're the elected representatives of the people of Australia, and when they get caught trying to sneak bad bad things past the Australian people hoping no one notices, they deserve all the suffering they get. Mind you, I haven't read the draft legislation yet. But whoever the government sent to Lateline to try and dissolve the PR fallout did a pretty poor job. He seemed to be in denial that anyone else had seen the draft yet, evading questions like a minister caught deporting Australians for speaking a second language in question time. I can't listen to question time any more, it's just too frustrating listening to people arguing rhetoric pointlessly and making enormous leaps of bad logic. But I digress.
A little planet is a dangerous thing
by TBBle on Oct.18, 2005, under Australia, Bandwidth Unlimited Pty Ltd, Bubblesworth Pty Ltd, Computers, Debian, Japan, Japanese, Programming
I had a quick wander through Planet Debian and it took to on to such interesting things as progress shots on a graphical Debian-Installer (Not actually from Planet Debian, but I can't work out where I saw that now), some very funny Sinfest mods (If you're a Debian person..), an absolute dream-sounding job (Yes, those two're the same blog. She's got some good stuff there. Including a capcha that apparently expects you to type ϖ...), A commentary against the patch-management systems that have started be become quite common in Debian, and to which I converted FreeRADIUS as my first post-Sarge task, personally implanted RFID chips, and musical breast implants.
The weirdest thing about that last one is the idea that fifteen years from now, we'll still be playing mp3s. Hell, an observable percentage of people I know are either .ogg or .flac already. I myself stopped downloading mp3s because I've had two hard disks fail from what I suspect was the weight of my mp3 collections. And my laptop only had the most essential 100 Mb or so of mp3s (Cowboy Bebop, Andrew Denton's Musical Challenge and a couple of random bits like the Blues Brothers' Everybody Needs Somebody and Abbot and Costello's Who's On First. And ガガガSP's 卒業 single, but I don't listen to that very often. In fact, I don't listen to any of these mp3s much anymore. My desktop machine's no longer in front of a west-facing window, and I'm not towing my laptop to work in the upstairs basement at TransACT anymore.
I've also ripped my new Hitchhiker's Guide To The Galaxy soundtrack to flac, because either mplayer or copy protection (it doesn't say CD Audio on the cover! Aha! Treachery uncloaked!) means it skips every second in my DVD drive. I don't have a CD-audio cable, so analog isn't an option, but happily cdparanoia was happy to extract it perfectly to the hard disk. Analog mode works fine in my laptop, but I avoid doing that because I'm sure that the laptop's DVD drive is dodgy and just waiting to eat something important.
Oh, and I scored a new TV. Well, technically my dad gave me an old TV of his, but it's an improvement over my old one because it's larger, it has OSD, it has a remote, and it has AV inputs. So I plugged my gamecube in, and played Resident Evil Zero for a couple of hours. I only get Resident Evil Zero out when I change TVs, it seems (it was still in the gamecube from when I was getting my TV Tuner working in Linux) but the TV doesn't do PAL60 so I can't have another burl at The Ocarina Of Time, although I could try and finish Metroid Prime at long last.
On a more personal note, it's looking more and more like the work at TransACT's dried up, and I'm starting to think I should start seriously exploring my Melbourne options. I've got the JET information evening on Wednesday night, so I'll have an idea of how many people I'm going up against.
I prolly should talk more about the Melbourne plan here. As it happens, I dropped out of everything else to focus on BU and TransACT, and now that work looks like it's going to dry up. I can do my BU work as easily from interstate as I do now (technically, I do the work from my flat in Queanbeyan, so I'm already interstate) and frankly I'd like to try living somewhere with trains and other such public transport and try getting a job I actually like (TransACT's nice, but I need a change). So I figure either Melbourne or Sydney fits so far. I've friends in both cities, as well as family in Melbourne, so it'll come down to the job opportunities. Melbourne's main advantages are Cybersource whom a friend of mine mentioned are likely to be looking for people, as well as a project a friend of mine is looking into which I'd love to get involved in. When I thought I'd have TransACT work until the end of the year, I was thinking I'd go to Melbourne in February (after linux.conf.au 2006) and find a five month job until JET blasts off in July. Now I'm thinking maybe I should be looking to go in December/January... The problem with this plan is that I've got a possibly opportunity coming up in Canberra in online shops, and I'd have to break lease on my current flat. And I don't have any savings to afford to be in Melbourne without a job. And it's already mid-October. So I'd better get on with it.
On the "actually getting things done" front, I finally submitted a FreeRADIUS 1.0.5-2 which should clear the logjam 1.0.5-1 became when libltdl3-dev started conflicting with libtool1.4 without warning. I'm disappointed in this back-door method of forcing libtool1.4 out, where either a Replaces in libltdl3-dev or a diversion in libtool1.4 would have allowed the libltdl3-dev/libtool transfer of ltdl.m4 without boning me unneccessarily. As it is, the solution became to drag in the relevant parts of the libtool1.4 package to update the in-tree versions of the files. This is bad, but I can't NMU libtool1.4, and the patch I was given to upgrade FreeRADIUS to libtool 1.5 was unneccesarily intrusive to my mind, and I couldn't distill the libtool parts from the 'change how we build the package' parts.
I've also been actively hunting bugs in packages I'm using, leading to patches to libpam-mount (So I can mount my home directory from Keitarou on Mutsumi from XDM and safe from segfaults due to configuration), lftp (so it doesn't abort when a download finishes ^_^ Upstream didn't use my patch, but it _was_ a minimal -- but not optimal -- solution which neatly explicated the problem, I think) and xmame (so I can use xmame with programs with CHD files). In the process, I also submitted bugs to pam and liblircclient0 which are simple non-crashers that valgrind picked up. I'm so glad I started using valgrind, it's the absolute bee's knees for finding any kind of memory misuse bug which might otherwise lead to a segfault much later. I also used it on libnifi which majorly improved my memory management and stopped a whole bunch of segfaults. ^_^ I also took the opportunity tonight to point out to the php4 team that libcurl3-dev had disappeared during its autobuild time, much as libltdl3-dev broke FreeRADIUS during its autobuild time. It happened a week ago, so I expect they knew about it, but I was surprised to see absolutely no bug about it.








