Wrong hand?


(Taken using Snes9x)

As you may know I really like watching speedruns of video games. And yesterday, when watching the updated Super Metroid movie, I came across this picture in the intro.

Have you noticed? Samus is actually giving her left hand to this scientist. I needed quite some time to understand that this was not an error of the artist, but actually just another of those well layed out details: The right arm of Samus’ suit is equipped with her beam weapon, so she obviously can’t use it to shake hands ;-)

And this leads to other conclusions:

  • Her weapon seems hardwired. Else she would have laid it down before delivering the captured Metroid
  • She is right-handed. Because in her missions the beam weapon is quite necessary for her sruvival, she would not want to have it attached to the weaker hand
  • It must be quite difficult to take off this suit. This has the same reason as my first conclusion

It’s funny to see how much those designers seem to have though about all those details – either consciously or not.

Look what I’ve found!

This is great. This makes me incredible happy as it documents quite a relevant part of my live, which I though was long gone. Here is it:

My old webpage

And even more: Fabedit, too is still there.

I took the time to fix all long dead links and the syntax of the navigation tree, so it works in Mozilla (somewhat). Hell, I even fixed those little cgi-scripts.

I first thought, that fabgrats was lost, but I found a copy of it lying somewhere else. This is so incredibly great!

So. What’s the fuss?

In the years 96 till 2000, I was quite active in the web. The freeware tool RasInTask [the page has an usability defficit. There are some deeper links on the right side under “subtopics”] (unfortunately I lost the installer, so you cannot download the tool any more – unless you want to use the source, which is well-conserved) was quite well-known in the net. I actually got quite good reviews in two german magazines and I had quite some fans.

And I did more. I wrote articles, short stories, delphi components and such stuff. All of it, so I do think now, was kind of compensation for what I was not getting in real-life. Respect and a girlfriend. So this old page is not only interesting from a technical standpoint (I think, despite it being a bit amateurish, it was quite good back then [just look at how it’s possible to link directly into the page with an unique url despite frames being used. I did this with the RasInTask link above] – not to speak about RasInTask which I still think is quite good, though no one would use it these times), but also from a psychological.

This relict from old times is quite a good proof that people, extroverted on the web are quite different in the real live. And while I’m still kind of active in the net world, I think I can say about myself, that I’m finally adjusing my real live to what I always was on the net. This is a good thing, it seems.

So, what’s there for you, my fellow reader?

Not much. An old picture of mine, some texts written in quite bad english and this nostalgic flair of a webpage done in the 90ies. The only thing probably useful to you is, unfortunately, lost (and I really don’t think that you can still compile the sourcecode of RasInTask any more)

For me it’s something different. Its a testimonial of who I was and who I’ve become. Yes. Those years between 99 and 02 where great. And quite a lesson for me. It’s good to finally feel grown up after such a long time. And it’s good to see who I was, just to learn, who I really am.

Oh. And I will go back to more technical stuff the next time. I promise

UPDATE: I actually found the RasInTask installer somewhere, so it’s available do download now. But plase note: I know that the code is not very clean. I’m quite convinced that there are some access violations and synchronization errors just waiting to annoy you. So while it’s interesting from a nostalgic point of view, I’d recommend against installing it. Oh! And don’t ask me for support. I have not touched this fo years.

Full text search for outlook

As you may know, we are using Exchange and Outlook for our Email and groupware needs. The thing just works and has some really useful groupware features while – in contrast to all those PHP-solutions – still being well integrated in the usual working area (read: has a windows client). And even better: Using Outlook / Exchange, even synchronizing the PDA works out of the box without that much of tweaking.

But with all this greatness, there are two problems: First, Outlook is not what I’d call a good email client, but it gets near. I still can’t use it for mailinglist consumption (bad threading, no qote highlighting,…), but for the rest it’s usable. The second problem is the search function. It’s so incredibly slow, even when you create a full text index on the Exchange-Server (without it’s even slower). And besides being slow, it looks like it’s searching forwards. When I enter some search term, it walks through the messages from the oldest to the nweset which is quite inpractical

So for reading mailinglists and for searching, I used Thunderbird

Then I found Lookout which was recently bought by Microsoft and released as freeware. This wonderful Outlook Add-In builds a fulltext index of all your Outlook folders and actually uses it (in contrast to outlook and the indexes on the exchange server). Additionally it has quite a powerful query language.

And with “fast” I mean fast: It takes just about 0.1 seconds to search my about 33’000 mails for this one message containing a certain word. This is great.

I’ve actually only two small problems with the tool:

  1. It uses the .NET Framework which must be loaded each time I start Outlook. This increases the already long startup time
  2. It uses it’s own window to display the search result. Outlook’s “Look for” function does this better and reuses the message list.

Besides that: Great tool!

What a tool

I really like to photograph. I do so since I was a child. Then I bought my Canon ixus 500, which reawakened this old passion of mine. About a week ago or so, I bought O’Reillys Digital Photography Hacks and read through it, which was quite fun – it’s an excellent piece of work. Easy to read while still providing you with quite some knowledge.

You should defintiely read the book too, if you are interested in digital photography (some hacks apply to the old fashioned analog one too)

One thing, I noticed when reading through: There is quite a lot of stuff that can’t be done using those compact cameras. Many hacks just begin with “if you have feature X, you can…”

The feature list of this baby actually contains all those Xes from the book. Wow. That looks nice (besides being written in light-gray on white ;-) ). Expensive, but nice.

99 little emails

pilif@galadriel ~ % cat ebinerv.php
 for ($i = 0; $i < 100; $i++){
   mail('xxx@sensational.ch', 'Gnegg', 'Gnegg!', 'From: xxx@xxx.ch');
   echo "rSent Mail $i";
 echo "nDone!n";

In principle I’m long ahead such little toys. But Ebi had this special configuration where each email that arrives at his mailbox is forwarded as an SMS to his very old mobile phone. And the phone has that nasty bug (or some may call it strange behaviour) where the “Delete all”-function does not really do it’s task.

In the end it was quite funny to see ebi manually delete neary each and every SMS he got because of my script. Maybe he will now buy a better phone or fix his configuration? We’ll see.

Copying with MOVE? Moving with copy?

Today I came across the situation where I had to copy – using delphi – some chunck of memory from one place to another. I nevery did that before (using OOP techniques gets you around that most of the time – at least in Delphi), so I had no idea how to do it. What I knew is that in C, I’d do that with memcpy. As a convinced fan of Pascals intuitive API notation, I looked in the help for MemCopy or CopyMem. Nothing (which is strange, considering things like AllocMem actually exist).

Some googling around turned out the name of the function: it’s

procedure Move(const Source; var Dest; Count: Integer);

Move? That can’t be. Can it? I want to copy, not to move. A quick glance at the help file revealed that it’s the truth: Move actually copies…

Move copies Count bytes from Source to Dest. No range checking is performed. Move compensates for overlaps between the source and destination blocks.

Descriptive procedure names? Usually, yes. But this can only be described as way beyond the optimum ;-)

Oh… on another note: What do you think, Copy does? Copying memory? No way:

function Copy(S; Index, Count: Integer): string;

function Copy(S; Index, Count: Integer): array;

S is an expression of a string or dynamic-array type. Index and Count are integer-type expressions. Copy returns a substring or subarray containing Count characters or elements starting at S[Index]. The substring or subarray is a unique copy (that is, it does not share memory with S, although if the elements of the array are pointers or objects, these are not copied as well.)

If Index is larger than the length of S, Copy returns an empty string or array.

If Count specifies more characters or array elements than are available, only the characters or elements from S[Index] to the end of S are returned.

Yeah!. Right.

Oh and on second thought: The move-thing may have its roots in the assembler language, where MOV actually copies the data too – at least I think so. But anyway: If even C got it right, why has my beloved Pascal to fail in such an easy case?

Strange preconfiguration

Ever since I’ve updated our in-office Gentoo-Box to Samba 3, I had very bad performance (throughput wise). And with bad performance I mean at most 200 KBytes/s on a 100MBit network.

For quite some time I thought that it must be my client machine, so I rested the case. Till today, where someone else complained about really bad performance. So I began investigating.

At first I had one of our ultra-cheap switches in mind, so I tested the performance using FTP. Too bad: full speed there, so it must be a Samba problem.

What was really strange: Write performance to the server was great. It was just reading that took so incredibly long. So, armed with this information I did some googling and found … only vague stuff. While there are some people with the same problem as myself, they are always told that it must be a hardware or windows problem (the two easy solutions) and there was no further discussion in all cases.

Somewhere I found the tip to set the following in smb.conf for maximum performance:

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

I went and looked, but the setting was already there. Too bad. The next thing I did was to comment the line out and restart samba:

#socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

And you will not believe it, but it helped. The server is back to its old performance with 8 Mbytes per second which is a good value considering the cheap equipement involved.

Problem solved. Culprit: Strange preconfiguration by Gentoo. Why this helped? No idea! Why the wrong setting in the first place? No idea either. Why the wrong tip to put this option into smb.conf? Don’t ask me. I’m just happy, it works again.