Today I had my first Japanese lesson. I think I picked the right level, at least as far as the speaking/listening bit is concerned. Probably the reading/writing part will be a bit too easy for me, but I don't think I could've gone a level higher either. The teacher was nice, but apparently we'll have a different teacher depending on the weekday (since the class is three days per week, that means three teachers). This was the "Friday" teacher. There's quite a large number of students in the class, no one I know though. I do hope they'll pick up the pace a little; today was very slow.
The classes are at the Hongo campus, and I also had to pick up some papers from the office of the faculty of Engineering while I was there. Since I had to wait until the office opened, I had some time to kill which I used to take some pictures. Hongo is simply huge; it takes more than five minutes walking to get from one side to the other.
There's also a few pictures from Shinjuku which I took on Wednesday.
I think Dr. McCoy said it best in Star Trek 4: "The bureaucratic mentality is the only constant in the Universe". The Japanese definitely seem to have taken it to an art form. In the past few days, I had to fill out more forms than I think in my entire prior life (ok, probably not really, but you get the point).
Forms for the dormitory, for alien registration, for health insurance, for the University, for the internet account, for the Japanese courses... it's gotten so bad I pretty much know how to write my own address by heart. In Kanji.
But at least it's almost over. I think there's just one more major form-signage session coming up, which should be for a mobile phone. Unfortunately Dutch mobile phones don't work here at all, so mine is currently serving as a glorified alarm clock. I've been given two different explanations for this; the first is that the networks in Japan all use 3G, so regular GSM phones don't work, and the second is that foreign providers are banned from the Japanese network. I don't know which is true; it might be both. At least all the phones I've seen in shops are 3G.
Not having a mobile (or "keitai" as the Japanese call them) is a bit of a bother since I also don't have a phone on my room or anything so the only way for people to contact me is by e-mail or postal mail.
Yesterday I signed up for the Japanese courses. I just barely made it to the sign-up office in time because I got lost on the Hongo campus. It's just huge. According to the placement tests I'm level "pre-3", which is what I signed up for. I hope that's okay since the test was just a simple "if you can read this, you can enter level X", and my reading skills are better than my conversation skills. But we'll see; worst case I'll have to work a bit harder the first few weeks. The classes are three times a week at the Hongo campus, which is about one hour travel from here. Fortunately the classes start at 13:10 so I can avoid the morning rush hour.
All this travel is getting quite expensive though. At least when I get a bike I'll be able to get rid of the bus fare everyday. As for the rest, I wonder if they have something like a monthly pass (this is however made more difficult by all the different railway companies in Japan). If not, I'll just have to deal with it. In that case I should at least get a "pasmo", a new type of electronic, rechargable ticket that works for almost all trains and buses. It's not cheaper, but at least it would be easier.
Okay, they're for work, so they're technically not toys and they're also not actually mine, but this is still neat.
As some of you might know, the one thing that was still noticably absent from my desk at University was a PC. I had to use my own (old, slow) laptop to do my work, not exactly ideal.
Now, I finally got a PC. And quite a nice one it is too; quite a bit faster than the one I have at home. It's got an Intel Core 2 Duo 6600 (2.4GHz) CPU, 2GB DDR2 667MHz RAM, an nVidia GeForce 7950GT with 512MB RAM and two 250GB SATA hard disks. It far exceeds what I actually need, but you don't hear me complaining. :)
Perhaps the most amazing piece of equipment however is the monitor. It's a Samsung 225BW 22" widescreen LCD panel:
It's huge! The picture just doesn't convey how big it truly is. Working with it is like sitting front row in a cinema. I realize this may be old hat for a lot of people, but it's the biggest monitor I've ever worked with. When I came home today I couldn't help but think how small my own 17" CRT really is. :P
And it appears a fairly decent monitor in other aspects as well (especially considering its price). Response time is great, and colour clarity is good; definitely more than adequate for what I'm going to be using it for. The only drawback is that at 1680x1050 I think its native resolution is on the low side for a monitor this size. A bit higher, like 1920x1200, would've come a long way. But, I suppose that would've made it more expensive.
You may notice I'm running Vista on it. Unfortunately this is not because Leiden University is so up to date with their OS support: it's because due to a miscommunication they didn't have any Windows CD and key for me yet, so I temporarily used my own Vista DVD, installing it without a key (so it's not activated). In a few days I should get the proper XP CD and it'll be bye-bye to Vista. A shame, really, since this kind of machine is what Vista's made of, and not surprisingly it runs beautifully on it.
Well, I'm happy to report Floris saw the light so DIAL will get an XML interface as well. Which means I can gladly forget about the whole YAML business. It also means there are no obstacles to using .Net, so I'll be spending the next three months working with the tools I like best. :)
Now might be a good time to give an overview of what I'm doing. As I said before, I'm working on a GUI for the DIAL genomics database. DIAL is a database that biologists can use for storing and processing DNA microarray data. As I said yesterday, there are currently four ways to interact with the server: perl, command-line, HTML, and YAML (and soon XML will be added to that). The current web interface is unfortunately not very user friendly so it's my job to make a better, wizard-based one.
The difficulty lies in the amount of flexibility it must have and the constraints I must work under. The first constraint is that DIAL is the way it is and besides small things they're not going to change it for me. Additionally, as new functionality gets added to DIAL, it must be as easy as possible to adapt my GUI to it. Using the soon-to-be XML (or the current YAML) interface I can basically "replay" the regular web interface. The data returned by the server is simply a list of all possible options that can be used by the user. The web interface simply displays those options as HTML form controls, where the YAML/XML interface just gives you a list of options. As you send input to the server to set different options, more options can become available. And sometimes there will be data included as well.
The options I get from the server are grouped, and I can discern the grouping based on the names of the options. For instance, all names starting with "Client::form_login" have to do with logging in. It is on this grouping that I plan to base the wizard. At its simplest, a group of options will become one wizard page in my GUI.
Of course, that's not all there's to it. There's more information needed that I won't get from the server because it's not in the currently existing web UI. For example, I divide the options into pages so it'd be nice if every page has a clear and concise title. Since the current UI doesn't use these pages, there's no titles. It can also be the case that a little more thorough restructuring of the options is necessary to make it user friendly; maybe we want to split a group of options into two pages, or combine two groups into one page, or change the order of the pages or the individual options on a page.
To allow for this, I plan to use a two-fold approach. First I will use additional data that will be combined with the data returned by the server that will allow me to define things like titles, page orders, and other transformations that might be needed. It will be possible for the GUI to use more than one set of this kind of "modifier" data; they will be loaded in order with each having the ability to override the settings from the last. This allows for e.g. user-specific settings that complement or override global settings. And second, I will make it possible to specify a custom server control to handle a specific group of options. That way, whenever something needs to be done that falls outside the regular options available for my GUI, it can still be done.
Of course, this is just my preliminary idea. Tomorrow I'm having a meeting which will involve getting some feedback from real users on the system as it currently is, and next week I will join a demonstration of the system at the VUMC in Amsterdam, and I'm sure that will influence the design.
Today was my first "real" day. Sure I'd been over to work last week too, but that was not a full day and I spent a lot of it just getting set up. Plus I worked mainly on my thesis research (as I said before, we're going to continue that a little).
But today I worked a full day, literally nine-to-five, on the DIAL project. I'm still very much in the "how" phase; I'm just trying to figure out how I'll be doing it. Even the implementation platform isn't set in stone yet (I'm trying my best to get them to let me do it in .Net :) ).
One thing that I do know is that I need a way to communicate with the server, and so far that can be done in four ways: via the Perl modules, via a command line interface, via a web interface, and a YAML interface. Since my stuff won't necessarily be running on the main DIAL server the first two are out. A web interface that tries to communicate with a server through another web interface is too weird even for my tastes, so that leaves YAML. A brief look at YAML didn't reveal any problems with this.
Unfortunately, a detailed look reveals more than a few problems! For one thing, good YAML parsers are scarce. Really the only decent ones I could find are for Perl or Python. There is as far as I can tell only one parser for .Net and it doesn't work properly. That means I have two options: roll my own parser, or convince the DIAL guys to give me a different interface.
Since the YAML spec is very hard to read, and YAML in general is extremely hard to parse (it's designed for human-readability, severely compromising machine-readability), writing my own parser wouldn't be fun. The grammar for YAML is context-sensitive, determines scope by indentation, and has far too many ways to do the same thing. I could decide to limit myself to the subset of YAML that the server seems to be using, which makes it slightly more possible, but it's still not my first choice.
That leaves trying to get a different interface. I've briefly looked at the DIAL code, and the YAML generation is pretty much a matter of calling YAML::Dump from the YAML CPAN module. Which to me at least makes it seem like he could pretty easily use the XML::Dumper module instead. Here's to hoping.