You are here

Jonathan Hitchcock's blog

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.

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.

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.

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.


I heard from the chap about the interview. He's been looking for flights, and has found one for me next weekend:

PE-CTN 26th November. Depart 15:45 and arrive 16:55
CTN-PE 28th November. Depart 10:20 and arrive 11:30

Is it bad that I don't want to go that weekend because Tim and Bronwyn are leaving on the 28th? I don't think I can be picky, though, for goodness sakes. I'll say goodbye to them before I leave. Noodle is leaving on the 29th, and I shall be distraught if I don't see her before she goes, but that should be fine.

So, anyway, that's it. I'm going for an interview. Apparently I can't wear my jean-pant, so I need to go and purchase an Executive Pant, and maybe a shirt with Real Buttons, and stuff like that. Hectic. Getting a job means being a Real Person. Who knew?

Next step: try to convince Claire to come pick me up from the airport on the 26th.


So I had the telephone interview. It was really cool, actually. I prepared for it by having some coffee and listening to lots and lots of Fatboy Slim for the required mojo. Track 1 of the new album Palookaville is called "Don't Let The Man", and it has a sample from the Five Man Electrical Band that goes:

And the sign said "Long-haired freaky people need not apply".
Which I figured was excellent motivation for my first job interview.

The interview itself went well. The guy seems to be a bona fide Nice Guy (tm). He used a Metaphor, and I like metaphors. And he said that one thing that stood out about my CV was that I'd done Philosophy, which made me want to give him a big hug. Because, like, Philosophy, it's my thing, you know, really.

He said, I think, that I could choose what I wanted to do. He wants me to do software development, he thinks I'd do best at that, but if I really want to do system administration, then it can fit.

Another bonus is that if I need time to finish my thesis (hah! No, but seriously), then that could fit, as well.

He asked me the nasty question. The one about "How much do you want to earn?". I figured "One million dollars" was not a good answer, so I told him what I actually thought. Namely, that I like to have enough money to pay my rent and eat food, and have a bit left over for a beer afterwards, you know? But apart from that, I really want to get out there, get some experience and stuff. So, we will discuss salaries later, it seems.

And then we made a plan to meet. We decided on the 17th of December, 9am, and I'd go to Stellenbosch, but if I couldn't get transport, they'd drive up to Cape Town to see me. And that was pretty much the end of the interview.

See, it's a good thing I didn't blog this straight away. Because, they phoned me back just now. They want to see me sooner than the 17th of December. They want to see me next weekend, or the weekend afterwards. And, they are going to fly me down to Cape Town in order to see them. Which, frankly, blows me away. So, ja. I'm going to Cape Town.

app_juke, she works

Well, I now have a working version of my system. Here is what it does:

You dial a certain extension on the PBX, and get music being played through the phone. Pressing '5' on the phone keypad will pause/unpause the music, '3' will go on to the next song, and so on.

You can go to a certain page in your webbrowser, and you are presented with what is effectively an HTML view of a music player - links to "pause", "play", "next", etc. Following these links simply returns you to the same page, but also has the desired effect on the music coming out of your phone. In other words, you can control the music coming out of your phone from a web-page.

Further, you can load up a little GTK application on your local machine, which looks (okay, it could look, if I put the effort in to make it pretty) like any old mp3 player, with pause/play buttons, etc. However, this app also controls the music coming out of your phone.

Basically, what was originally a "phone service" has been turned into a general service that can be controlled from any medium - it would be absolutely trivial to write an IRC bot that accepted "pause", "play", "next" commands and passed them on.

This is good, because it means I can write a thesis on the convergence of plain-old-telephone-systems and "next-generation" networks controlled by web-browsers and desktop applications and so on.


BI-529 (Saffie)

After this, they said I should go back in 4 weeks time. Which is now.

Apparently, the BI-529 form takes 6-8 weeks. That sucks.


"Ivan Groenewald passed your CV on to me, and we (Adept Internet) are interested in talking to you."


I'm keen!

To the Cape

Tamara and I went and booked our plane tickets the day before yesterday. Kulula has some amazingly cheap offers. I would never have even thought of flying, but the supremely organised Tamara compared the prices of every form of transport there is, and concluded that it would be better all round if we flew.

I have a meeting with Abraham at Frogfoot on the 15th of December, so I'm flying down on the 14th. I've booked a ticket back on the 5th of January, which fits in nicely with the little illusion I've been maintaining that I'm going to be handing a thesis in on the 15th of January.


Subscribe to RSS - Jonathan Hitchcock's blog