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?
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.
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.
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.
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.
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.
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...)
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 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:
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:
- A <div> section acts a container for the entire blog title and contains two additional <div> sections
- 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")
- The second section floats over the entire container (style="float: left")
- 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.
- 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.
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.
|