23 August 2007

Is UP busy writing Christmas cards ?

Many of the readers of this blog will have used the Emdros text database or know about it, but few will know the interesting person behind Emdros, known as UP.

UP once told me he knew all the users of Emdros, but I am not sure if this still is the case, so I contacted him and asked him a few questions.


UP, you once said you know all the Emdros users, I understand there have been over 16000 downloads so your Christmas card list must be pretty long now. Do you really know them all and will you, in fact, send them a Christmas card?

No, I don't know all users, never have, and never will. It is true, there have been more than 16000 downloads (see http://whi.wts.edu/blogs/emdros/?p=41), but more importantly, I have sold commercial licenses to Emdros (see http://emergence.dk/index.php?page=references), and this means Emdros is probably in use by thousands of my customers' users every day. So, no, no Christmas cards for users this year.


Ok, I am sure many of the users would be interested in knowing a bit about the person behind Emdros and maybe one or two unknown facts about Emdros. Could I ask you a few questions.

Certainly.


Thanks.


How old were you when you got fascinated by dictionaries and started to read them ?

I must have been around 14 or 15.


What did/do you find so fascinating about reading directionaries ?

You say “reading dictionaries”, as if I read them at length. In fact, I do. I can get totally lost in a good dictionary, and suddenly two hours will have zipped by, with me tracing all the meanings of a word through the entries for its synonyms, stumbling upon interesting words all the time, which leads to new paths of inquiry into the semantics of a language. A dictionary is truly a fascinating reference tool. I am not sure why dictionaries fascinate me so much, but I am a language geek, so I guess that goes a long way to explain my fascination.


What is your favourite dictionary ?

Webster's Unabridged Encyclopedic Dictionary of the English Language. It's totally awesome, dude. Wicked cool.


Let us jump a bit in time, a few years later you got your master's degree in computational linguistics and I understand you coloured your hair green, why did you choose green ?

That's not true!! I did NOT colour my hair green!


Interesting, So how would you explain this photo ?



I have a very good friend (who shall remain nameless on this blog), who is good with photo-retouching software.

What have you paid the young man to keep quite about your hair colour ?

You mean the young man in the photo beside me? He's silent as the grave. A loyal friend! Unlike some others!!!


Which hair colour would go for next time ?

Purple. Except you already ... oops ... except my very good friend already used that colour in another retouching of the same photo.


Is it correct you have appeared on the front cover of The Times ?

No.


Do you know why this is the case ?

Yes. I am not famous enough, and have no intention of ever doing anything that could make me famous enough to appear on the front cover of The Times.


Is it correct that you blew the socks off the interviewer when you applied for a job some years ago ?

Yes, that is true. As part of the interview process, they introduced me to “The Beast”. “The Beast” was their smartest C++ guru employee, and he grilled me ferociously on deep issues in both the C++ language and the C++ STL for quite some time. Apparently, he said something very nice about me afterwards to the HR people, because they offered me the job right at (not after) the first job interview.


How did you decide which Pizza to have when you worked in a company that was located above a pizza take-away shop ?

When I worked for that software company (which was my first real job after High School), I used to eat so many pizzas, I had the pizza take-away shop keep a counter, telling them which pizza I had eaten last time. Then I just called them and said “counter++; order_pizza(counter);”. And they would whip out the next pizza on the menu for me in no time flat.

Side note: This very good friend of mine tells me it is so, but I don't remember myself. It's more than 12 years ago, and I really don't remember that many sins of my past.


I have noticed you aren't online on Skype so often, any special reason for this?

Ah yes, you must be referring to the fact that I am engaged to be married. Talking to my fiancée is, in fact, more interesting and fulfilling than being on Skype all the time, believe it or not.


When are you getting married ?

In November 2007.


It is correct you have considered painting your hair green or possible blue for your wedding to make it an unforgettable day ?

Yes. And the moon is made of putrid, foliage-coloured cows' milk.


Some readers may wonder what you day job is, do you work full time on Emdros ?

No, I don't work full time on Emdros. I am a ph.d. student in “human-centered informatics”. I work with the nachlass of a Danish playwright, poet, pastor, and author, named “Kaj Munk”. My charter for my ph.d. is to build database software that can power a future website dedicated to bringing Kaj Munk's works both to the masses and to the throng of scholars interested in him, enabling “intelligent” searches in Kaj Munk's writings. So Emdros is a big part of that, but it's not the whole thing.


Can I ask a few questions about Emdros before we end the interview ?

You most certainly are very extraordinarily welcome.


What made you create Emdros ?

Why do painters paint? Why do relief workers bring aid to those in need? Answer those two questions, and you've basically got it. Let me explain.

First, I saw a need, and I couldn't help but fulfill it. That's the relief work part.

Secondly, I see myself as an artist rather than an engineer when it comes to writing software. I want my software to be beautifully written, and my technical solutions to be aesthetically pleasing. I often fall short of the mark, but it's my goal. I want to create beauty. I can't help but write software. It's there in my mind, and I must get it out, or else suffer the agony of not having a creative outlet. It's the same with painters, I am told: They MUST paint. It's an urge they can't resist. It's the same with me and writing software.

On a more practical, less abstract level, here's what happened: I was given the PhD thesis on which Emdros is based by another good friend back in 1996. He told me, “one day, it would be good if you could implement this, Ulrik”. So I spent about three years mulling over it at the back of my mind (and sometimes at the fore), and finally, I had an epiphany. For two days, I was almost in a trance, writing down ideas frantically, seeing the topographic core of Emdros' query language take shape as I wrote faster than was good for my right wrist. – On paper, mind you: My mind was racing so fast, I couldn't type it all out. Now, the PhD thesis on which Emdros is based was written by Dr. Crist-Jan Doedens. In his thesis, he specified a query language which he called “QL”. He gave it a syntax and a semantics. However, the semantics was denotational, meaning it told you what should be computed, but not how. I had so much trouble during those three years figuring out how to translate the “what” into a “how”, but that's what I did in those two frantic days, at least for a small subset of the much larger, much more powerful QL. In effect, I gave the core of QL an operational semantics, by specifying how to compute the answer, but not what the answer should be. You see, Doedens' had already done the latter, so the former was needed. And so Emdros was born, in 1999. The write-up of those two frantic days turned out to be what I eventually did for my B.Sc. thesis, which was a 100-page document. A bit large for a B.Sc. thesis, at least in Denmark, but they accepted its length.

Two years later (2001), I had another series of epiphanies. On the 24th of January 2001, I suddenly realized, in a flash of inspiration, how the EMdF database model specified in my B.Sc. thesis could be implemented very simply in a relational database. I was going up north in the country (of Denmark) to visit some family that evening, and I brought with me some paper and some pens. In the 40 minute train ride from Copenhagen Central Station to the town where my family lived, I sketched out most of the rest of the MQL we know today, writing down examples of statements that would be needed.

Once I got home after visiting my family, I set to work. The first code was only written a few months later, because I spent a couple of months writing design documents and making sure the ideas were rigorous enough to be implemented. By May 2001, I had something working. By July, it was in a reasonably good shape, and on October 3rd, 2001, I made the first public release on SourceForge.Net.


Why is it called Emdros ?

You know, that's another one of those moments of inspiration. I was going to go on the train to my place of work one day in the Spring of 2001, and I suddenly felt this “wave of inspiration” flooding me. So I let train be train, and went somewhere else for a few minutes. I sat down by myself somewhere private, and then played around with the letters of some key concepts in Emdros. After some minutes of ruminations, I stumbled upon this acronym: “Engine for MdF Database Retrieval, Organization, and Storage.” Because that's what Emdros is. I thought it sounded cool, and neither Google nor Altavista could turn up any instances of this word on the entire web, so I thought, “let's invent a new word, then”, and off I went, writing it all over the sourcecode and the documentation.


What has been the biggest design decision ?

The biggest design decision has been to use a relational database as a backend storage. Without that decision, I might never have started, because I am not an expert on storage mechanisms.


What would you do different if you started again?

Oh, man! Talk about bringing my sins of the past into the light! I would not have been so thick as to provide a symbol table for the object references that could only hold one value at a time, regardless of the fact that the topographic nature of MQL, along with the linear execution strategy, dictates right in your face that there might be more than one value for any given object reference under certain circumstances.


What is the most unknown fact about Emdros?

If I tell you, it won't be the most unknown fact about Emdros any more, but that might not be so bad. I think one of the most unknown facts about Emdros is that I actually do keep it under sourcecode control (I use Subversion). The sourcecode repository isn't public, so the general, Emdros-hungering public will have to wait for my releases in order to get new code.

... Or perhaps the most unknown fact about Emdros (or the most ignored) is that you can actually contact the author with questions and comments.


Can the users of Emdros expect a Christmas card from you this year ?

Not every one of them, but my customers might. The others will have to languish in their Christmas-card-deprivation-induced state of internal turmoil and anguish.


Not even if they report a defect ?

Well, I might relent a little under certain circumstances.


Thanks for your time.

You're welcome.

No comments: