You are here

Archive - 2004


December 18th

In Cape Town

Well, Cape Town has been fairly uneventful really. Apart from reading five books, drinking some wine, and going out to play pool once, I've done nothing but spend masses of money SMSing hippies and TDMFs. Oh, and I watched the Animatrix.

I went to try to find Daniel Schroeder, and g'damn but the Maths Department is a maze. I swear it was designed by M.C.Escher himself. Like, you walk around for half an hour, and suddenly realise you're on a different floor, even though you've been up the same number of staircases you went down. And the exit is, of course, on the second floor, not the first floor. I did find Daniel's office, but he wasn't there. I went back once or twice, to see if he'd returned - a complicated process of going all the way along the one corridor, out, round, up, down, back up, through, behind, round, and along - but he hadn't. It was only on the last time that I went to his door that I realised that there was a hidden staircase that led straight there. I swear if I'd turned and tried walking along the wall I would have found a whole extra set of rooms, or something.

I did pop into the Compsci Department and found Matthew West (aka Lonewolf).

Oooh, I lied - I have done one thing of note in Cape Town. I went to visit Frogfoot, and met Abraham and Johann. It's actually an awesome place - I think I'd enjoy working there. They do lots of embedded stuff, and are almost as rabid and fundamentalist about what platform they use to do things as I am. Unfortunately, as soon as I set foot on the premises, the power died, so when they took me on tour to show me the data center and the satellite dishes and whatnot, we had to grope around in the dark a lot. It came back eventually, and we finished the tour.

I'm currently sitting in an office in the Red Cross Children's Hospital - my uncle's office, to be precise. Being in a hospital is weird. I think I've watched too much Scrubs. I searched for a janitor everywhere, but to no avail. I'm supposed to be doing more writeup but, as usual, it's going fairly slowly. At least I've managed to get hold of the articles and papers that I did before, that I need.

I don't know when I'll next have connectivity - various people have offered, but Cape Town is big, and I am small, and I do not have my own transport.

December 13th

Back to the Cape

I leave tomorrow for Cape Town again. I am taking with me what I'll need to work while I'm there:

  • My writeup so far
  • My sourcecode
  • A Knoppix CD in case I can't find any Linux machines
  • Four Fatboy Slim albums
That should keep me going. Daniel Schroder has offered me a login to the Astronomy lab at UCT (at the top of the Maths department), which has ssh, lyx, bandwidth, etc, everything I'll need to be productive. The only trouble is I can't wander in there at any hour of the day. Alf has tried/is trying to get hold of a laptop for me, but without much luck, thanks to Yogan. That punk.

I'm looking forward to going to Cape Town - there's nobody really left in Grahamstown, even my hippies have disappeared in a cloud of smoke (literally). I'm going to go visit Frogfoot, and pop down to Stellenbosch to put my 'X' on Adept's piece of paper, and so on.

Anyway, there won't be much activity on this blog till I get back. Doncha know.

December 11th

Progress in all regards

I completed the basic structure for my final thesis write-up a few days ago, and have now begun gradually fleshing it out, filling in the chapters, and suchlike.

I'm actually really pleased with the whole thing. Several of the chapters are actually things I'm really looking forward to writing about, and will enjoy it. The only one I'm a bit trepidatious (awesome word) about is Chapter 2 - "Related Work". Literature Surveys are for pansies and foreigners. Or something. It won't actually be that difficult - I already have several things in mind to write about. But it won't be fun.

So, in summary, the thesis is actually going pretty well. In spite of everything that everybody (me especially) has said.

I also got an official job offer for next year. A slight hiccup might arise from the fact that thesis progress aside, politics and red tape and suchlike might mean that I can only finish the thesis a week or two into February, and so won't be able to start work in the beginning of February. We shall see how that turns out, though.

December 6th

LyX and layouts

As a quick side-note, Shaun Bangay's LyX style sheets and class files for Rhodes theses and whatnots, are very useful, very easy to install, and make writing up theses much easier.

Driving me crazy

Well, I've booked another driving test. On the 25th of January, nogal. I don't know why Nigerian 419ers bother with all that email stuff, when they could just charge people money for failing tests.

Also, I tried to collect Noodle's license for her, but they still don't have it. Bureaucracy se ma.

A Saffie (to be continued...)

As covered a month ago and two months ago, I am trying to get South African citizenship. I just went back ("6 to 8 weeks"), and they still had no reply from Pretoria. They're going to phone 'em, and then they're going to phone me. I wait with bated breath.

Driving Tests

So, I went for my driving test today.

It probably wasn't helpful that we had a braii at Mordor last night (Russell's new digs), and then went out until late. I ended up staying up until stupid o'clock with my new hippie digsmates, and even though they promised to make me coffee and breakfast this morning, they didn't. However, I actually felt fine for the test, not tired in the slightest. I had a lesson before the test, and drove around fine, no mistakes really (must remember to look in the blasted mirror before putting the brakes on, and to take corners in second gear), and then went to the yard and did some docking and parking and suchlike. Easy stuff. The examiner watched me doing them all, too.

Then the test itself started, I did everything just fine, pre-test inspection, hill start, docking, three-point turn, and so on. And just as I was doing the final bit, the last piece of parrallel parking, I bumped into the pavement, because I was going too fast, because my leg was shaking and I had the clutch in too far.

So, that's that. Fail. I didn't even get to go on the road. Insane. It's just so frustrating - he KNOWS I can do the parrallel parking, he KNOWS I can drive, because he's seen me do it fine. But The Rules State That You Fail If You Do Certain Things. No second chance, nothing. And there's no free spots for a second test until January the 24th or something. That really burns my bum.

Still, as Ivan says, anybody who has watched the Matrix knows that you never make the first jump.

November 29th

There And Back Again (with an interview in between)

I left for Port Elizabeth at about half past one on Friday, driven by Tim (Tim left on Sunday, before I got back. I can't explain how much I'll miss him). Everything went fairly smoothly, I arrived with twenty minutes to spare before boarding, so I had a whiskey in the departure lounge. The plane was then actually delayed for a while ("One of the tyres exploded on landing. Enjoy your flight."), but we got off eventually. I tried to nab the window seat, although my ticket was for the aisle seat, but two crusty old tonsils came and sniffed at me until I moved. Mr Tonsil then settled down in the window seat, closed the blind, and went to sleep. I hope he finds half a spider in his casserole. are an interesting experience to fly. The whole flight, they were cracking jokes, when you least expect them. Just thrown into the rest of their announcements etc.

"In the case of loss of cabin pressure, you can either hold your breath, or grasp the oxygen mask and...".
"Once you have your oxygen mask firmly in place, decide which child you love most and...".
"Please wait until the aircraft has come to a screaming halt against the airport building."
"There is no smoking on this plane, and we have cameras in the toilets for the pilot's in-flight entertainment in case you were going to sneak in there."
"Smoking will be punished by moving the passenger to a seat on the wing, where the in-flight movie will be 'Gone with the Wind'..."

And so on. It was a good flight, though, and we got there fairly quickly.

On Saturday morning, Claire (may she win the lottery) picked me up from my aunt's house and drove me through to Stellenbosch, where we eventually found Adept. She went off to find somewhere to read/nap/drink tea, while I did the interview. (Tim++ for SMSing me Fatboy Slim lyrics, since Claire only had a Rob Zombie tape in the car.)

Adept's offices are a coffee shop, so Gideon and Jac and I went and sat at a table and drank three cups of coffee and just chatted. They were wearing shorts and t-shirts and flipflops, and it was nice and casual. I was wearing an executive jean-pant, and a button-up shirt! I know! We basically just chatted for an hour and a half about Rhodes and Zimbabwe and me and them and VoIP and Stellenbosch and Servers and Linux and Masters and Philosophy and so on and so on. As Russell said, it seems they pretty much knew whether or not I was able to do the job, and the interview was just to see whether or not they could stand seeing me in their office every day.

And it seems that they can. They didn't actually say "You're in, you can have the job", but Ivan says that they don't. What they did say was "Get your thesis written up in January, and then you could start in February", and "We're excited that you could come work here" or something. I mean, pretty much, yes. We didn't even mention salaries and dental plans and all that, not a word. They said we'd iron out those details over email now.

Now it remains to go and find somewhere in Stellenbosch to live, pack up, and get down there. Oh, and finishstart my thesis.

As for the rest of the weekend, it was great. Claire drove me back to Cape Town, we went and had a drink, went and visited Adeline at her work, and then I bought a sixpack and went to visit Jono Pare. Later that night, Claire picked me up and we went to visit Ads at her other work, and then we went out to Cornerhouse, the dodgiest, murkiest, dingiest little club in Cape Town. It was a very awesome night, and I got to bed at 5:30 in the morning, to wake up at 8:30 to catch my plane back. The flight back was also fine, I managed to pilfer a window seat properly, and no snotty elderly people kicked me out. The jokes were just as bad, though.

In other news, Noodle left this morning. That's the entire Family that's left, leaving me bereft and digsmate-less. I have been instructed to make sure that the Adept job includes pension, dental-plan, but most important, a Family Fund, so that the penniless journos and artists can maintain their standard of living.

November 25th

CoE Industry Partners Presentation

Today was the "Center of Excellence Industry Partners Visit". This means that all the people who donate masses of money to our Center of Excellence in the vague hope that we'll research something of use to them come to visit, and we try to convince them we've been doing something useful, and then we use their money to host a big lunch for them.

I gave a presentation on what I've done so far, and you can view it online.

I thought it went well. I handled their questions. I managed to avoid my usual "I'm a little teapot" pose that happened whenever I was holding forth at SATNAC. I used the word "um" only every four words, instead of every two words - a good step up!

Giving this presentation made me realise that most of my work has been about authentication. Which was insightful - it is all about authentication, really. You need authentication to create a valid pathway between the two end entities. Once that has been created, it's all just sending commands back and forth, and streaming stuff between them.

November 18th

Juke - the final touches

I've finally finished the Juke system completely. The Phone client, the GTK client and the Web based client all authenticate to the Asterisk machine, and they all control the music being played over the phone.

Things I've done what are clever:

  1. Nevow web servers have their own authentication, as you can imagine, but I didn't want to duplicate the authentication checker. This wouldn't be practical or extensible, anyway. I therefore had to write a "pass through" authentication checker, one that won't grant authentication until it has itself authenticated with the final authority. It is easy enough to understand now that I've written it, but it took a bit of thought to get the hang of.
  2. The Phone client gets its user ID from the caller ID number. This is already kind of verified by Asterisk, so there is no real point in getting it again. Not that that sort of thing hasn't been done - voicemail and outside calls both require ID/PIN number to be entered - this would not be fun, or interesting. What is fun and interesting is creating a method of authentication that gets the same sort of Avatar as the other methods, but doesn't require a password. I could have kludged it by passing "auto_7510" as the ID instead of "7510", and not checking the password in my Portal if the ID began with "auto_", but that would suck, and it would also mean that the GTK/Web clients would be prone to attack by people putting "auto_foo" as their usernames.
    twisted.cred has a lovely authentication system that allows you to associate different checkers with different authentication interfaces, so I should be able to say that the Phone client uses the "AutoAuth" interface, and write a checker that didn't check the password. However, Perspective Broker's auth system is a little restricted, and doesn't allow extra interfaces - it only handles IUsernamePassword and IUsernameHashedPassword. What I did in the end was create a remote method call named "loginAuto" (remote_* calls are unauthenticated, like XML-RPC procedure calls. perspective_* calls are the ones that need authentication first), which took a username, and did some funky stuff to duplicate the normal login process. This involved subclassing Perspective Broker's Portal class. To quote everybody from #twisted: "You should never subclass Portal." Well, I did, and it worked great.
  3. I won't get too deep into the trials and tribulations I had with the phone client itself.
    • I had problems involving mpg123's super-fast decoding of mp3 data: It decoded it all and slammed it across the connection, which meant that by the time the user had pressed "pause", it was too late - all the data was decoded and queued to be streamed. Thus, I had to keep the connection from mpg123 blocked almost 100% of the time, only unblocking it for very little bits when the playback had reached the same stage that the decoding had reached.
    • I had problems with mpg123's retarded decision to send status data to STDOUT, even though it was already sending its decoded PCM data to STDOUT. I was using a FIFO at first - telling mpg123 to send its PCM to the FIFO, and reading from the FIFO (effectively creating a third output stream, since mpg123 was selfishly using STDOUT and STDERR already), but the silly old Twisted people never got around to implementing a FIFO reader. A solution would be to open a process that just cat'd out the FIFO, but that was an awful kludge. In the end, I just patched mpg123 to send all status data to STDERR, where it should have been going in the first place, and I just trap the STDOUT for PCM data.
  4. The GTK client was probably the most simple - I just needed to learn GTK first. It's actually a lovely, easy system. I won't say I wasn't irritated by a few decisions they'd made (what the hell is all this about packing boxes for layout?), but I do remember from my own very brief forays into toolkits that certain things need to be slightly odd.
  5. The rest of the Nevow system was also fairly easy. I've probably done things in a slightly non-orthodox way, but Nevow docs are all but non-existent, and I had to learn from examples and from reading the blasted source. Those crazy Twisted bastards are seriously insane. You know that they generate the TCPClient, TCPServer, UDPClient, etc, etc, classes on the fly, all done in about five lines? Who does that. Anyway, I read through it, and my system all works, now.

Forthcoming attractions: an architecture diagram. This is actually substantially more complicated than I realised. Should be fun.