So you wanna be a domain-specific hero?

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. ^_^

Perl 6 And Parrot Essentials (Essentials)
The C++ Programming Language

Edit: Correct misspelling

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s