Ch.7 - MIME, POE, XUL and other Beasts

I continued to learn new things everyday. With the help of Erisa, I learned about C, (which is much sexier than Pascal), Internet Network programming, writing web applications, some GUI programming (very hard to get exactly right, but still fun), working with databases, and more. Erisa gave me problems like "fix at least three of the bugs in the bug-tracker of project foo", or "add a new feature to project bar".

One thing I discovered was that reading code and understanding it was difficult. Much more than writing it. But after I understood how it worked, I could implement the fix or the new feature reasonably easily.

The IRC was also a great help. Whenver I encountered a problem, I could join the appropriate IRC channel, and ask about it. If that did not work, I usually tried searching the web, or posting to the local Linux User Group's mailing list, or to web-forums. IRC was a very nice experience: I met many people from all over the world, and chatted with them endlessly. Many of the chats were fun, but quite redundant, but a lot of them provided new insights or gave me useful new knowledge. There was only one thing that bothered me.

When working on my homepage, I could very easily express myself. I was able to put pictures, sounds, hyperlinks, styled text, and files there. This was much more difficult in the IRC that was text only, with a few pretty useless embellishments, URLs that had to be copy and pasted, and all kind of other limitations. I wanted more.

In one of the LUG meetings, Jeff, some other guy called Ervin, and I chatted between ourselves before the presentation, and somehow we ended up discussing the IRC. So I brought this along.

"So, maybe, " said Jeff, "we need to create a new IRC protocol, that will allow such media. God knows I heard some people say they also want to be able to use Mathematical notation. Ever been to a Maths channel before? The expressions there are not a pretty sight."

Ervin and I laughed, and Jeff joined us.

"So we need a new protocol? What are we going to base it on?" I asked.

"Well, on MIME probably.", Jeff said. MIME is a standard for sending and receiving data and sub-data, identifying its type, etc.

"Tell you what?" he said, "we can write a prototype for a server in Perl or Python using POE or Twisted." I was surprised to realise that I knew what it meant.

"Yeah, " I said, "and let's write the client in Mozilla's XUL. That will give us all the media handling for free."

"Nice thinking, Jenn, " Jeff said, and we gave each other a high five.

"But then we have lots of potential security issues, which we would like to avoid, and we need to think of a robust protocol." I added.

"So let's go to the black-board and start designing everything." Jeff said.

We scribbled a lot of boxes, arrows, buzzwords, state machines and all other kinds of things. It was Erisa's turn to give a presentation and when she saw everybody next to the blackboard, being involved in the design, she was immediately puzzled.

"What are you doing?" she asked.

"Hi Erisa! We're designing the next generation IRC protocol, with many improvements over vanilla IRC."

"Yeah, like Media support, styles, Maths, a more robust and powerful protocol and more features, etc. It was Jenn's idea."

"Interesting", Erisa said, "since you all seem to be so much involved in it, I say that we delay my presentation in an hour. Jenn, I'm running out of things I really need to teach you, and you may wish to embark on this project, just to try and get closer to a demi-god status for yourself."

I blushed. "Sure, Erisa. It sounds very exciting. I don't know how good a coder I am. Can anyone here become my partner for pair programming?"

Lots of people volunteered. "Jeff,", I addressed him, "Will you be my partner?" I felt I could trust him.

"Sure, why not. If only to make my girlfriend jealous. OK, Jenn and I will write a spec [= specification] together and send it to you. Jenn do you know DocBook?"

"Heard about it, but no."

"Then I guess I'll have to teach it to you. It's not that hard."

"Cool. ", I said, "Now back to designing this baby…."