Tomer Gabel's annoying spot on the 'net RSS 2.0
# Wednesday, June 8, 2005
I tried to help a colleague analyze an issue with an ASP.NET 1.1 application. The application was installed and worked properly on both an on-site server and a local mirror, in both cases under Windows 2000 Server with Windows 2000 SP3. The on-site administrator installed SP4 on the server, after which the application promptly stopped working properly: it didn't crash, it didn't register any errors what-so-ever and it didn't even time out, the client (in our case Internet Explorer) simply remained waiting for a response from the web server. My colleague attempted to install SP4 on the local server with the exact same result.

Oddly enough switching the application to ASP.NET 1.0 resolved the issue (but obviously is not an acceptable solution), so we tried re-registering ASP.NET 1.1 with aspnet_regiis.exe -i which had no effect. Obviously server restarts and iisreset had absolutely no effect either.

Eventually through trial and error we devised the following solution:

  • Remove the .NET framework 1.0 and its service packs (so that only 1.1 remains)
  • Reinstall .NET 1.0
  • Make sure to have a cup of coffee next to the machine at this stage (very important!)
  • Switch the application to 1.0
  • Test the application
  • Get another cup of coffee, make sure it's between 20cm and 1m from the development machine
  • Switch the application back to 1.1
  • Test again

This seems to have consistently resolved the issue with both local and on-site servers, but is obvious not a stable (nor acceptable) solution. It is also very non-scientific, because we haven't measured the volume of coffee in the mugs (mind you, neither was mine - I hardly ever drink coffee).

In short it's goddamn voodoo. I'm used to that kind of crap from Windows, but programming .NET has been impressively voodoo-free so far. I couldn't find anything similar with Google searches; has anyone ever seen (even better, solved) this issue before?

Wednesday, June 8, 2005 8:24:17 PM (Jerusalem Standard Time, UTC+02:00)  #    -
# Tuesday, June 7, 2005
I thought I wouldn't bother with the third Star Wars movie. I really did. Well no, not really; it took me exactly five minutes to snap out of it and stop lying to myself: I was going to watch the movie in the theater even though I knew it's going to suck, much like Matrix Revolutions or Terminator 3. I can't help myself. It retrospect it amuses me that I'm willing to spend money on a purely mainstream product I know there's no chance I'll enjoy, but then - it's Star Wars, if I didn't go I'd feel left out...

Anyway, bottom line - I did go and did see it in the theaters. And it did not suck. Not even remotely as much as I feared it would. Now admittedly I've read the various "it doesn't suck" quotes on the 'net, but being my usual sceptic self I had to see for myself. I wouldn't call it terrific, though; it has two major problems without which it would probably have been the best in the series: crappy dialogues that seem to have been written by a 6-year old (particularly the various Padme vs Anakin scenes), and Hayden Christensen. Not even Ewan McGregor, whom I hold in very high regard since Big Fish, was able to keep me from noticing how poorly the dialogue is written, and not even the really terrific action scenes and utterly astounding visuals could keep the grimace off my face whenever Anakin came on-screen. Add to that an anti-climaxic Darth Vader experience and what you have is a pretty decent movie that could've been the biggest thing since, well, Lord of the Rings. A crying shame.

I had a completely opposite experience with The Hitchhiker's Guide to the Galaxy: I was never a big fan of the series (yes, I read all of them) and had very low expectations. When the trailer came out I was plesently surprised to find that I thoroughly enjoyed it and laughed quite a bit, so it was with mixed feelings that I went to see it in the theater. Suffice to say that when the lights came on for the half-time break I was quite surprised: 45 minutes had gone by, and I didn't even notice. This movie is funny as hell! It's well-written, well-acted and even well-designed (visually); there are a lot of subtle jokes (as opposed to the incoherent in-jokes I originally expected) and this just made everything even better. I'm also very happy that the authors of this movie didn't give in to the fanboys, which means the authors did have some artistic license - I actually prefer the movie to the book this way. So in summary: this movie rocks. Watch it.

I had reasonably high expectations for Sin City: I like dark films and the trailer seemed very nifty. I had no idea what the movie was about though (never read the comic, nor could be bothered with previews) so I had no idea what I was getting into when I went to watch it. All in all I dub this film "high quality garbage." The production values are as high as it gets, but it doesn't stop the movie from being generic comic-based film-noir. The plot lines are overly simplistic and what the movie lacks in story-line it makes up for in insane amounts of gratuituous violence. When I made this argument a friend of mine challenged it, saying that I enjoyed Kill Bill immensely despite the level of violence which was at least as high; now don't get me wrong - I'm not squeamish and enjoy a good violence scene at least as much as the next guy, but the difference is that where violence in Kill Bill is intentionally portrayed as ludicrous and works to advance a simplistic plot (not to mention homage to '70s Hong Kong action flics), the violence in Sin City is not portrayed as ludicrous at all and works mostly to take the place of a nonexistant plot. It may work in the context of a comic, but I've never been a comic fan, so for me it merely detracts from a quality production. That said, the acting is top notch and the graphic design is absolutely beautiful, but as a whole Sin City is one movie I'm probably not going to watch again.

Finally I have a recommendation to make: grab Oldboy from the nearest Blockbuster and watch it. It's a Korean movie and I'm not sure how to best define it, but it's combination violent, disturbing and thought-provoking, with incredible acting, visual design and music to boot. Heartily recommended. Also, if you get the time, check out Kung Fu Hustle - I think it's in the theaters (in Israel) right now, or will be soon.

Tuesday, June 7, 2005 5:57:18 PM (Jerusalem Standard Time, UTC+02:00)  #    -
Personal | Movies
Tidbit time:
  • Raymond has an über-interesting post on the potential security issues with C's strncpy, including an interesting bit of history.
  • Senthil Kumar's found out an interesting detail regarding the equality (==) operator in .NET System.String.
  • GAIM joins in on Google's Summer of Code project. I just wish I were a student living in the States with enough free time...
  • Remember the old Amiga game Cannon Fodder? Well I found this promitional (?) video for the CD-32 version of Cannon Fodder - so funny it's disturbing.
  • A pretty interesting post at The Register claims Microsoft's Windows 2000 operating system was a complete flop as far as security's concerned, but it marked an interesting shift in the company (and therefore the industry).
  • I don't find myself completely disagreeing with Roy Osherove that often, but his his take on The Grudge is completely opposite my own: the movie was not scary at all, for the most part very poorly acted and I came out of the theater feeling as though I've just wasted 37 NIS (the price for a preordered movie ticket in Israel, approximately $9 US - way too high anyway) and two hours of my life. On the other hand, I've found White Noise quite appealing; it didn't scare me proper (only System Shock 2's managed to do that in recent memory), but it did leave me unsettled, which is also pretty unusual. Probably the only good horror/thriller I've seen in ages is 2002's The Ring. I openly admit to not having seen the original Japanese version, nor have I seen the supposedly great The Sixth Sense. Working on it.
Tuesday, June 7, 2005 5:00:40 PM (Jerusalem Standard Time, UTC+02:00)  #    -
# Monday, June 6, 2005
Paniq came out with a new album a couple of weeks ago, the second track from which is called Elektronische Musik (can be downloaded from here). It's in German though, so make sure you read the lyrics.
Monday, June 6, 2005 9:38:15 AM (Jerusalem Standard Time, UTC+02:00)  #    -
Personal | Music
# Sunday, June 5, 2005
Despite my lately-discovered tendency for open-source evangelism, I constantly use proprietary software in my day-to-day computer exploits. Here's a list of a few of the more useful ones:
  • Everyday use:

    • Windows Live Writer - Microsoft's blog client/word processor. Microsoft entered a saturated market full of mediocre and/or abandoned software, and simply did everything right from the get-go. This is one hell of a tool - stable, convenient and extensible. Recommended.
    • XMPlay - a great audio player for Windows. Has excellent module playing capacity, plays streaming audio perfectly, basically does everything WinAmp does only better and in a much lighter package. I have yet to find a (preferably portable) open source platform which compares..
    • Microsoft Outlook - Outlook has its moments, but I've enjoyed working with Mozilla Thunderbird a lot more. I originally switched to Outlook for its PDA synchronization capabilities (via ActiveSync); since this is no longer an issue for me, I'm planning on switching back to Thunderbird as soon as I can find the time to take care of the migration.
    • Total Commander - I simply can't work properly without a Norton Commander clone. I switched from Servant Salamander to Total Commander and so far never looked back. An open-source replacement is definitely #1 on my wish list though.
    • AVG Free Edition - the free (for home use) version of the AVG Anti-Virus is an impressive piece of software. It's lightweight, nonintrusive and simply works. I'm sceptical that open-source antivirus software can be as up-to-date and effective as proprietary software.
    • Windows XP Professional - bought a copy with my laptop, and can honestly say I do not regret it. It is impressively full-featured, completely stable, has terrific hardware support (I will tell the story of my Linux hardware woes in another post) and despite being very powerful it is also very intuitive to work with.
    • Trillian Basic - a free multi-IM client (I use ICQ and MSN). It's not lightweight, nor it is the fastest, but from all the multi-IM clients I've used (GAIM, Miranda, Trillian) it has the best combination of stability, features and looks.
    • ACDSee (at work) - Best of breed photo browser. The new version seems quite bloated, but it's still the best program of its sort I've used (since version 3...)
    • XnView (at home) - Great photo browser that's fairly quick and lightweight. Free for non-commercial purposes, basically does everything almost as good as ACDSee.

  • Development tools:

    • Visual Studio 2005 - being a primarily .NET developer, this is an absolute must-have. It has a lot of issues though, and missing some features that I can only enjoy with ReSharper.
    • JetBrains ReSharper -the quintessential upgrade to Visual Studio. Improved autocompletion and syntax highlighting, fully customizable code reformatting, code navigation, refactoring, code templates, unit test runner and more, all in one package. I've been using this since version 1.0 after seeing a presentation by Roy Osherove, and nowadays I find it daunting to work without it.
    • Araxis Merge - best of breed commercial diff and merge utility. WinMerge and the various diff/merge utilities that come with source control provides (Vault, Perforce etc.) simply can't compare.
    • Stylus Studio - I tried this out as an alternative to XmlSpy a few years ago and got hooked. Although it's still a terrific XML IDE, unfortunately they have very annoying registration, activation and upgrade policies, so I may yet take XmlSpy for a renewed spin.
    • SourceGear Vault - the source control provider we use at work. It's like a moderately improved version of SourceSafe: reasonably fast, fairly full-featured and mostly works. I've used Microsoft VSTS and Perforce since and both are far superiour, but also considerably more expensive.

  • Occasional use:
    • Nero Express - a lightweight version of the fully-fledged Nero. This has been my CD-burning software of choice for about 6 years. Since a copy came with my laptop I haven't found the motivation to seek a proper open source replacement yet.
    • PowerDVD 5.0 - probably the only reason I still use PowerDVD is because it came (OEM) with my laptop. I don't watch many movies on my laptop so I couldn't be bothered to find an open-source replacement.
Sunday, June 5, 2005 6:34:44 PM (Jerusalem Standard Time, UTC+02:00)  #    -
Personal | Software
The Thunderbird nightly build for yesterday seems to kick quite a bit of ass. It's just as stable as the 1.0.2 stable build, has a useful spellchecker, works like a charm with the BiDi Mail UI extension and feels over-all very solid. Can't wait for the official 1.1, so I could recommend it to other people.
Sunday, June 5, 2005 11:12:05 AM (Jerusalem Standard Time, UTC+02:00)  #    -
Yes, CSS2 is very cool, but apparently way more problematic than I originally thought. It seems even minor details are the cause of much consternation, giving headaches to programmers and designers alike.

The whole thing started when I noticed that the blog title ("banner") was not displayed properly on my grandfather's machine (Internet Explorer 6); it appeared as though the text class wasn't handled properly. Give or take 20 minutes later I found out that I accidentally used a class="banner" declaration where in the CSS it was defined as A.Banner. Apparently Mozilla was misbehaving in ignoring the case. At first I thought Microsoft finally got something right with Internet Explorer 6, then figured I might as well delve a little deeper into it and figure out which behaviour is right.

Enter the CSS2 specifications, specifically section 4.1.3 Characters and case, where it is clearly stated that CSS is assumed to be case-insensitive "except for the parts that are not under the control of CSS". This a very subtle distinction, which apparently goes on to include the "... values of the HTML attributes "id" and "class"".

Now, seeing that I love to be standards-compliant, I naturally included the correct <!DOCTYPE> declaration in the beginning of my blog template, putting Internet Explorer in standards-compliant mode; unfortunately I did not read the CSS2 specifications carefully enough and therefore did not properly understand the case-sensitivity issue.

Therefore I will quote what I perceive is a very good piece of advice from Zen and the Art of Website Maintenance:

Last but not least, let me touch on the issue of case sensitivity. CSS selectors are not, by definition, case-sensitive. However, if the page language within which they are used is case-sensitive, then they become case-sensitive. HTML is not case-sensitive [HTML 4.01 is, though, so take care! -TG], so CSS is not when used within it. But XHTML and XML are case-sensitive and so, therefore, is any CSS used within it. Given this, the only sensible choice is to regard all CSS as case-sensitive: this will save you from considerable pain in the future.

And to sum the whole thing up: yes, Microsoft seem to have done something right for a change, and Mozilla does indeed misbehave (unless, which is just as likely, I've missed another subtle but important issue...)

Sunday, June 5, 2005 10:05:04 AM (Jerusalem Standard Time, UTC+02:00)  #    -
# Wednesday, June 1, 2005

One of the features carried over from my first website (amazingly still available) is a digital rendition of the ingame music from the Amiga version of Defender of the Crown. Back in the year 2000 I had this to say:

Defender of the Crown

Defender of the Crown is a computer game by Cinemaware, originally released in 1986 for the Commodore Amiga and later ported to every major platform (including the PC, C64, ZX80, NES and Atari ST). The game is branded an "interactive movie" and was one of the earliest Amiga games released. It was used by many Amiga enthusiasts to demonstrate the abilities of the computer, and with good reason: the game had beautifully drawn graphics by James D. Sachs and never-before experienced atmosphere.

One of the most prominent aspects of the game is its music. I've heard the game's music throughout my childhood as I went to a neighbouring Amiga owner and played this and many other wonderful Amiga games. The music was composed by Jim Cuomo, who now pursues a career as a musician.

The music here is recorded from the Amiga version via an Amiga emulator, specifically Fellow 0.3.3. Due to an emulator handicap the WAV files produced had some bugs which I fixed using Sound Forge 4.0. The tunes are now almost identical to the original Amiga ones (as verified using my A500+), depsite a somewhat shoddy MP3 conversion using MusicMatch 4.0.

The tunes provided are distributed with permission from Jim Cuomo, who was also gracious enough to send me one of his CDs entitled Gameplay, which contains excellent revisited tunes from several computer games he had composed music for. He also permitted me to post the Defender of the Crown tunes from the same CD - they will be added in a few days.

I am still, unfortunately, missing the Love theme (rescuing the princess) and the victory/loss themes, the latter of which will be posted as soon as I finish working on them.

At the time free hosts were usually limited to 5 or 10mb per user, and my having no desire to pay for storage meant it took more than a few days to post the Gameplay sound snippets - more like 5 years. Also, scratch the comments about Fellow 0.3.3 and MusicMatch 4.0; I've re-recorded some of the tunes from my A500+ (softkick'ed to 1.3) and re-encoded everything with OGG Vorbis (which means stereo [in the new recordings] and much higher quality for just slightly larger files - well worth it in my opinion). When I find the time, all themes will be re-recorded from a proper A1000 (512k, kick 1.0) through a more modern soundcard with lower SNR. I also pledge to re-rip and re-encode the GamePlay tracks properly.

Avast! Files off ye starboard bow!

In-game recordings:

GamePlay CD tracks:

Wednesday, June 1, 2005 10:10:49 PM (Jerusalem Standard Time, UTC+02:00)  #    -
I've updated the blog's design to something a little more to my taste. I hope you like it, and would very much welcome comments!

I've been mucking about for a few hours with dasBlog themes, CSS2 and relevant technologies and learned a great deal. CSS2 is so damn cool! Back in the day - what, four years ago? - I used to have a bunch of perl scripts to do the style/content seperation for me utilizing a bunch of macros. Nowadays it's not only a great deal easier to seperate the content, CSS2 also helpes you avoid a lot of HTML hacking and HTML bloat: no more hacking tables where design elements go. It kicks ass!

That said, there are a few things that are nontrivial with CSS2. For example, check out the blog title; notice how the horizontal line stops next to the text. The border itself is easy enough (see next section though), but it took me a little while to figure out how to make it 'stop'. Eventually I settled for the following hack:

  1. A <div> section acts a container for the entire blog title and contains two additional <div> sections
  2. Both sections have the exact same content. The first section maintains the appropriate flow and layout for the page but is not itself visible (it has style="visibility: hidden")
  3. The second section floats over the entire container (style="float: left")
  4. This is where it gets interesting. The lower part of the second section must cover the lower border of the container; originally I did this with a <br&rt; tag, but as I suspected this proved problematic when the client text size was changed. Eventually I settled for an additional padding-bottom: 2px; style for the second section, which solved the issue nicely.
  5. Finally we want the horizontal border to stop before it hits the text; the solution couldn't be simpler: just add padding-right: npx (in my case I used 5) and you're good to go.

Next stage is to find out how to gradient the border when it gets close to the cell. Also, the whole thing might've been easier with a table and a couple of columns, but not nearly as fun :-)

Finally, I have to rant: Microsoft IE programmers are a bunch of shitcocks. Even in standard-compliant mode (why in the hell do I have to, as an author, worry about IE modes anyway? Why isn't it standards-compliant to begin with?) the damn thing just doesn't process CSS properly. In my case it turns out that dotted borders simply do not work in Internet Explorer (except for Mac IE version 5.5 or something bizarre of the sort); if you're reading this post using Internet Explorer you're probably seeing a solid border around the post itself. This is NOT the correct behavior. IE displays dashed borders instead of dotted ones; this looked aweful, so I used a couple of hacks to get IE to display solid borders instead. And this is just one of myriad bugs. I wonder if they'll get fixed in IE7, but would advocate a move to Firefox regardless.

Wednesday, June 1, 2005 5:16:25 PM (Jerusalem Standard Time, UTC+02:00)  #    -
# Tuesday, May 31, 2005

I am not a regular reader of Jackie Goldstein's blog, but I make sure to catch up every now and then; today I encountered an interesting post in which he discusses a long-overdue improvement to ADO.NET: the ability to specify a batch size for a DataAdapter.Update statement. One of the stupidest shortcomings of ADO.NET 1.0 and 1.1 was that it would make a round-trip for each changed row, which in the case of large updates or over high-latency networks results in horrible performance.

Apparently ADO.NET 2.0 includes the ability to specifiy the batch size, however there are some things worth knowing about this behaviour (specifically, less commands issued to the database do not necessarily equate less round-trips on the network; also, as Jackey puts it, "creating batches of different commands every time would wreak havoc on the query plan cache." Jackie goes on to link to a post in Pablo Castro's (the ADO.NET Program Manager) blog, which explains these issues in a little more detail.

An interesting read, certainly.

Tuesday, May 31, 2005 1:01:42 PM (Jerusalem Standard Time, UTC+02:00)  #    -
Send mail to the author(s) Be afraid.
<June 2005>
All Content © 2024, Tomer Gabel
Based on the Business theme for dasBlog created by Christoph De Baene (delarou)