Web Applications and the View State

Today, it came to my mind, that I know of a problem with some web applications, which apparently few else seem to know about. What is worse, is that those new technologies like ASP.NET and Java Server Faces seem to run straight into the problem.

This article is even bigger than the usual, so I split it up.
Continue reading “Web Applications and the View State”

Zelda: Four Swords Adventures

About a year ago, I bought myself a GBA with the GBA-port of “A Link to the past” – one of the best Zelda games (and they all are great [except Majoras Mask which I didn’t really like]). What I did not know when I bought the game is that the add-on “Four Sword” that was on the cartridge could be so incredibly fun to play.

It was more to proof that a storyless multiplayer Zelda can’t be any fun that I played a round with Richard and Evelyn back then.

As always with prejudice, I have been proofen wrong: It was so incredibly fun to play Zelda together. I mean: Though you have to be cooperative to play through, it’s the player with the most rupees that finally wins the round, so it creates quite a bit of danymics

I have not played the GBA-game since last december as I now more than know all the ramdomized levels that can get generated and I think we have killed Vaati about 100 times, so the fun finally went away- after nearly a whole year of fun.

But then I found out that multiplayer Zelda is coming back. To the Game Cube this time: The Legend of Zelda: Four Swords Adventures.

What concerned me was that a GBA is needed to play the game and that you always play with four links. And then there was the thing with the non-autogenerated levels. Is there any replay-value? Does the not-so-great grpahics work on the GameCube? Is it difficult to follow the action on screen alternating between the video beamer and the GBA?

Many questions. I wanted them answered and I wanted more multiplayer Zelda! So I’ve imported the US-Version of the game and received it last thursday. And yesterday I played it with someone else for the first time.

I can guarantee you: It’s fun. As always I will list the things I don’t quite like first:

  • It’s a real shame, the GBA->GC cable does not offer a pass-through power plug. I hate it to interrupt playing just because one of the GBA SP’s lost power with no way to attach the power cable.
  • The GC->GBA cable makes it quite inconvinient to use the L and R-Buttons on the GBA which are quite often used when playing FSA (Four Swords Adeventures)
  • It takes some getting used to the GBA-GC combination, but when you get the hang of it, it works quite well

And that’s already all I have to say to the negative points. Now to the positive:

  • It’s so much fun. Whether you play alone or with opponents (or is it partners? You can never be sure when playing multiplayer Zelda). I really like the sequences where hordes of enemies appear and you can slay through them. Great!
  • I really like the graphics. It’s 2D, yes, but they did a really great thing to it. It’s very smooth, detailed, zoming and everything. Cool.
  • Great sounds. As a fan of “A link to the past”, it’s great to hear the old tunes on current more capable hardware.
  • Did I mention, it’s incredibly fun? This is more a property of any multiplayer Zelda, but it’s no different this time. I so much like throwing my so-called partner into the water just to get some rupees^W Force Gems. Then again, ruthless playing gets you nowhere as you can’t proceed with the help of the other players. And then there is that election at the end of each level which can still change the tide…
  • It’s long. And, thus, unrepetitive. Much longer than the GBA.
  • Though it’s not much, there is a bit of story in the game. Much more than on the GBA title. I like that
  • It’s just great!

If you can get it, go and buy the game. But don’t play it alone. It’s so much more fun when played together.

Eclipse, CVS and putty

I’m a really big fan of Eclipse. This Java-IDE has many great features I have never come across in other IDEs so far. The new context based syntax-highlighting comes to mind (it analyzes your sourcecode and can – for example distinguish between local variables and constants)

Actually, it’s only because of Eclipse that I now can write fairly good Java code. The thing was incredibly helpful during my first struggle to get something to work, so I made quite some progress in a quite small timeframe.

There is one thing though, I never got to work: CVS integration

I’m using CVS strictly over SSH, with the help of Putty, Pageant and Public Key authentication. Despite the fact I’ve entered the correct settings for the “ext” method (using Puttys plink.exe as CVS_RSH) in Eclipse, it never worked (it failed with various messages)

Of course there is the new extssh-Method, but this is non-standard. Where I can access the CVS-Server using extssh from eclipse, it does not really help because then the command line tools and TortoiseCVS stop working because they don’t understand extssh

Finally I found the solution: Even though it doesn’t make sense, you have to enter “cvs” under CVS_SERVER in the CVS-Settings. I don’t know why. It’s just that way. So to use Eclipse together with the command line tools and Tortoise to access the CVS-Repository from the same working copy, this is what you have to enter under Window/Preferences/Team/CVS/Ext Connection Method:

CVS_RSH yourfullpathtoplink.exe
Parameters {user}@{host}
CVS_SERVER cvs

Then you add a repository in the repository-view using the following settings:

Host your.host.name
Repository path /path/to/repos
User username
Password empty
Connection type ext

Before you finally click “Finish”, open up a command line window and log in to your CVS-Server using plink:

plink user@host

Maybe you are asked to store the host key in plinks database. Do so. Then make sure that you can login without a Password-Request popping up (Pageant must be running, your key must be loaded and authorized on the server). If that works, click “Finish” in Eclipse.

Worst scrollbar ever

scrollbar.png

Taken from thawte.com. I made the thing a bit shorter, but changed nothing else.

Small quiz: What is this thing you are seing in this image (possibly displayed on the right in your browser)?

It’s a scrollbar. Or at least, it’s supposed to be one. I came across this “wonderful” … thing when I was looking around for a code signing certificate on thawte.com. Have a look for yourself: It’s right there.

I have quite some problems with this maybe-scrollbar:

  • I can’t read it. Maybe it’s my eyes, but I simply have problems recognizing a dark blue slider on black background.
  • It’s no real scrollbar. It does just look like one. This has many “advantages”:
    • The mouse wheel does not work with this one.
    • The arrow-buttons are much too small for my preference
    • It’s terribly slow as it’s pure DHTML
    • Clicking somewhere on it does scroll the document to the designated point, but it’s terribly slow too.
    • Dragging and Dropping the knob does not work. Firefox (correctly) thinks I want to drag the knob-image somewhere to my desktop
    • Keyboard navigation is not possible
  • But the worst thing of them all: If the browser window is small enough, it gets a (real) scrollbar on its own. But with this one, the mouse wheel does work (no surprise: it’s a real scrollbar). Thus, scrolling through the page with the wheel scrolls, but it scrolls the wrong thing. There is no way to read the whole page using the mousewheel.

The page has a fixed height so the last problem above can occur quite frequently. I see absolutely no sense in creating a DHTML monster to do something the browser already does. I can’t see any drawbacks of the page having a non-fixed height and would rely on the browsers scrollbar.

Can somebody enlighten me?

PS: As comments about usability seem to get constantly more numerous, I have created a usability category. Maybe some time in the future I will actually create a category-based listing :-)

The price of abstraction

This article was featured on Slashdot today. It’s about the current state-of-the-art Linux-Desktop being quite demanding in Hardware – even more demanding than the arc-nemesis Windows XP.

And it’s true.

I see one of the problems in the basics of the Unix philosophy: Use small tools to do a specific task and another in the OpenSource-Philosophy: Write clean code.

These two approaches create wonderful architectures and abstractions of small tools doing their work.

What nobody seems to recognize: This so wonderful and well thought-out architecture is bloated per se. Let’s say you are playing a Video-File in a KDE-Video-Player running in KDE. This is what’s running on your system to acomplish this task (I hope I get all the (bigger) components really running – maybe there are more (or less) of them):

  • Linux Kernel
  • KDE-Sound-Server
  • X-Window-Server (complete with un-used network transparency which would not work with the video anyway
  • The whole QT-Library
  • Some basic KDE-Abstractions (kdelibs)
  • Your media player

Every one component ist cleanly seperated from each other – every one can be replaced without disturbing other components. Every one is designed cleanly using many abstractions to provide this replacability even for internal components.

But it get’s even more complicated: Many of the acting components are independant processes which creates the need for quite a bit of IPC wich is always slower than direct calls.

No wonder this is slow!

In Windows for example quite a lot of the stuff described above is actually running in the kernel or at least very close to it, maybe using undocumented interfaces to the kernel.

Playing a video mostly depends on DirectX which uses mostly in-process calls. It’s dirty, it’s unstable (maybe), but it’s fast, doesn’t flicker and happens to just work (the less independant components involved, the less can go wrong).

Of course that’s not how software should be written. It’s how it is written when fast and impressive resuslts are requested.

Another one…

Now that bluetooth-support gets integrated into the Windows OS, I thought, maybe Logitech created a new driver for it’s diNovo Package that does not insist in the Logitech Hub being installed.

This time the driver did not complain about the hub not being installed, so maybe this is a good sign (I have not rebooted yet), but the installer presented me with this screenshot which has such a bad wording that it’s worth blogging about:


(I cut out some empty space at the bottom and created red overlays to highlight my point)

This thing not only has one flaw, it has many:

  • The text speaks about check boxes, but there are radio buttons
  • The text suggest it’s possible to select more than one item in the list below. It isn’t
  • There is no way to install Keyboard, Tackball and mice support
  • I don’t have a trackball plugged for now – the option is still there
  • The list is extremely badly readable as it combines options to install in one point: “Keyboard and Mouse”. The approach with Checkboxes would be much easier to understand

A fix would be to actually do what the text says: Use Checkboxes. If it’s not possible to install both mice and trackball drivers (why is that so? Older drivers did not have that limitation), uncheck the other box, or even better, create one Checkbox and two radio buttons:

 Please chose what drivers to install:

 [ ] Keyboard
 ( ) Mouse
 ( ) Trackball

The problem is that the used installer (InstallShield) is extremely bloated and though it has the features necessary to create a dialog like the one I described above, it’s that complicated that a seperate developer is needed just for the installer and often there’s no time to do that.

Which leads to me finding this even more hypocritical than it already is – even more so that the Installer the end user sees is not by InstallShield, but by the respective developer – the final installer is as good as it’s created, not as the tool creating it

If you ask me what a good installer may be, I’ll answer InnoSetup. It’s small, simple, fast and extremely powerful.

New PowerMacs

designcluttervertical060904.jpg

(Taken from apple.com)

Today Apple announced new G5 Power Macs, where the most expensive one has two 2.5 GHz CPU’s and – that’s the reason for this entry – a liquid cooling system.

When I see the two words liquid and cooling together with Computer in one Phrase, I think of things like this, this and especially this. I find that really stupid

The german magazine c’t recently had an article about liquid cooling systems for PC’s and none of them was both more efficient than conventional air coling and secure enough to be used (you know: Water & Current isn’t a very good team. And then comes the whole chemistry with its cool things like corrision and other stuff). So for me, liquid cooling is just another gadget for overclocked gaming PC’s. Often a liquid cooling system is applied to keep the hoplessly overclocked CPU cool. And all is done because overclocking is supposed to be cheaper than buying the real thing, but in the end all this cooling stuff is much more expensive – even more so when something goes wrong.

I fail to see where apples solution is something different. The old G5 where quiet too, so I don’t see any reason for this besides it being a cool feature.

But whatever. The comparison between the internals of a G5 and a common PC I’ve taken from the Apple page is quite cool. What they don’t tell you: If you buy a complete PC from a manufacturer like IBM, you won’t get something extremely different from what you see on the left. But it’s cool none the less.

Relaunch

Richard did a wonderful job on the new PopScan website. Looks great and even uses CSS to some extent. It’s not perfect yet, but it’s getting there.

The page as such is much better than the previous one, though it’s not translated to english yet.

XP SP2, Delphi Debugger

This weekend, a pre-RC2-Release of Windows XP SP2 could be found on the net. Eager to learn whether the Delphi debugger now works again, I’ve downloaded and installed the thing.

I’m happy to report, that delphi indeed works again, so I’m keeping the build installed for now, as I really like the integrated bluetooth-support.

Bluetooth driver nightmare

Another post around bluetooth – one I wanted to do for quite some time now, but I have not come around to yet.

As you know, Microsoft will bring its own Bluetooth-Implementation to Windows XP with Service Pack 2 (this and the better WLAN support are two strong reasons for me wanting to install it, but the current RC1 does not work with Delphi’s debugger – I hear, this is fixed in RC2 to be released somewhere in June). What you may not know is that there is some Post-SP1-Fixup floating around that already has rudimentary BT support. I think, it initially came with Microsofts Bluetooth Accessories (Keyboards and Mice).

The Problem with this rudimentary support is that it is not compatible at all with the WIDCOMM-Stack, which provides far more functionality that this MS-thingy does.

The problem gets even worse because this Fixup pack seems to be integrated in quite some OEM preinstallations these days, even if the devices themselfes come with a WIDCOMM stack

I came across this problem with two thinkpads: Initially they have BT disabled. The official way to get it enabled is to first install the Drivers provided by IBM (the WIDCOMM-Stack) and then Press Fn-F5 and click on “Enable” in the bluetooth section. What then happens is that Windows detects the (USB-, though it’s internal hardware, it’s still USB) device and installs its rudimentary support.

The Widcomm-Tools never get to recognize the Bluetooth device – the Icon in the tray stays red. You are locked down to the limited (limited as in virtually no functionality at all) functionality of this Microsoft upgrade

The clou: I did not know this and the IBM-Support I’ve called could not help me either.

So, what’s the solution? How to recognize this problem when it happened?

Recognizing is simple: If the BT-Icon is red despite bluetooth being enabled, this may be the problem. If you want to be sure, open Control Panel / System / Hardware / Device Manager and right-click on the BT-Drvice. Select properties. If Manufacturer is Microsoft, you ran into the trap.

So… how to fix it then?

In the window described above, go to the drivers-Tab, select Update Driver. Then follow these steps:

  1. Install from a list or specific location
  2. Don’t search.
  3. Have Disk
  4. Enter c:Program Files<WIDCOMM Installation dir>bin
  5. OK
  6. Ignore the warning about drivers not being signed
  7. Complete the installation.

Sometimes you must reboot, sometimes not. But now the Widcomm software will recognize the drvice and you will have access to the full functionality

Quite simple – as soon as you have found out what the problem is