A product I'm working on consists of a primary component and two sattelite components. The sattelite components are designed to run remotely and communicate with the primary component via .NET Remoting. The product is currently undergoing a QA cycle, and the QA team had a bizarre issue to report: when the system is configured to run on localhost and the network cable is disconnected while the system is up and running, remoting requests fail (they reported that the primary component fails to notify the satellite component instances to shut down, but it was actually the same with any remote call). My immediate response was "huh?" but subsequent local testing assured me that they weren't smoking anything illegal.
After quite a bit of research (this is a seemingly little-known issue with .NET Remoting) I managed to come some interesting insights into .NET, but only one relevant post I managed to find after playing with Google Groups a bit: apparently when Windows detects a network cable disconnect (via a feature called Media Sense) it "removes the bound protocols from that adapter until it is detected as "up" again". The only workaround I could find was to completely disable Media Sense, which needless to say is a very unwelcome solution.
I suppose the obvious question is "why the hell does Media Sense shut down localhost connections?" I'm often dumbfounded by bizarre design decisions in Microsoft products, but this one may just necessitate adding a really awful hack to our installation procedures on clients' sites, which just sucks.
And now for the rest of it.
- The Deer Park (Firefox 1.5) beta has been out for a couple of weeks now and is very stable and fast; beta 2 is due to come out any minute now. Despite the lack of a compatible Noia 2.0 eXtreme (my favourite Firefox theme) I highly recommend the upgrade.
- Fasterfox is a major performance tweak for Firefox. We don't have the fastest internet connection here so it's difficult to tell how effective it is, but I'll try and gauge it over the next few days anyway.
- Metal Gear Solid fans owe it to themselves to hear virt's remix titled My Frequency Is 140.85.
- Martin of Tipmonkies (heh. Tipmonkies. Heh.) published a list of free disposable e-mail address services. My personal favourite is DodgeIt.
- Finally, Serenity seems to be doing rather badly financially. I haven't seen the movie yet (and I doubt I'll get to see it in the Israeli theaters, with all the crap movies taking valuable theater space) but I have a very good feeling about it, and I hate to see anything original, interesting or (in Firefly's case) underdog do badly.
- Mystified by Virgill is awesome. For that matter, so is elements. The guy knows his shit.
- It bothers me a great deal when American agencies (or goverment agencies in general) presume to tell me what I'm entitled, or not entitled, to. As far as I'm concerned the default should be "I can do whatever the hell I want as long as it's not declared illegal", not "I can do whatever is declared legal". Very important distinction. So it's no surprise I was really pissed off to read an FCC document in which a statement began with "consumers are entitled to run applications and use servics of their choice". Thanks! I always wanted a government to officially allow me the liberties I've always taken for granted. But that's nothing compared to the rest of the statement: "... subject to the needs of law enforcement." You know what? To hell with the needs of law enforcement. I won't have police/FBI/shabak/whatever goons telling me what programs I can or can't use. I realize that it's like that in practice (the old issue of >128-bit RSA encryption not allowed outside the US, for one), but it's no excuse to make it official policy. I'll run whatever the hell I want on my machine. If it's illegal, have the police come up with sufficient justification for a search warrant, signed by an independant judge.
- The US Patent Office upholds a patent owned by Eolas, which has bearing on their case against Microsoft. I don't know the details of the patent and don't care. Ideas and thoughts should not be patentable, as simple as that. As Florian Mueller puts it (direct quote from the linked article):
Pro-patent politicians told us that broad and trivial patents can be invalidated. If even Microsoft with all of its resources doesn't always succeed in that, what can smaller companies do?
- Apparently a single, disabled mom has found the strength to sue the RIAA back for wrongful legal practices. Any dent in the RIAA litigation behemoth is a good thing in my book.
- An ISP owner from Oklahoma wins a $10M lawsuit against a known spammer. It's doubtful he'll be getting any of his money, but the precedent-setting case is good in the long run anyway.
Seeing that I don't have anything of value to write per se (with the exception of experiences from the LAN party, and Turkey, and a bunch of reviews, and some development-related rants, and some other stuff) I figure I might as well just toss everything I have here. There's quite a bit of development-related stuff so I've split this into two seperate posts:
- Ilya linked me to this newsgroup discussion which is something of a revelation.
- During the QA cycle for a product I'm working on I got a request to limit the logs for just the last 10 days. I use log4net 1.2.9 incubation release, which is an absolute pleasure to use (even the documentation is up to snuff these days); however I've found that there is simply no way to do that using the stock RollingFileAppender when you roll by date (as opposed to by size). Since I didn't have time to research creating scheduled tasks using the godawful Visual Studio 2003 Setup and Deployment Project I just hacked a RollingFileAppender-derivative, only to find that most of its protected methods are not declared virtual - meaning I had to copy the code for the class in its entirety and hack away instead of just inheriting and overriding behavior. If anyone's interested in the hack let me know, but be advised that it's probably not very stable nor particularly elegant.
- I was looking for a way to execute an interactive process remotely (which can't be done easily, certainly not with my original research subject, WMI). Apparently the only practical way to do this under Win32 is to use a remote service with administrative privileges; security was a workable issue in this case, so I was left with having to research and write the service and deal with all the bugs, which given the project schedule was not an option. The first obvious option was to use SysInternals' PsExec tool; this would've been perfect except that PsExec's license forbids redistributing it without a license, which we were very inclined to purchase had there not been easier (and cheaper) options. BeyondExec is an equally solid solution that's distributed as freeware and is therefore useful for commercial purposes. Lastly, Jim Wiese has an interesting article up at The Code Project which might've saved us a great deal of time had BeyondExec proved irrelevant.
- John Wood's SafeInvoke is a very elegant solution to the classic GUI thread invocation issue when programming for Windows Forms. He's not the first to utilize .NET Reflection for that purpose, but his solution is extremely elegant as well as performant (since his helper class caches the generated code, a performance hit is incurred only when a delgate is first used, and System.Reflection is supposed to be dramatically faster in the upcoming CLR 2.0). Two thumbs up.
- One of my favourite writers, Reymond Chen over at The Old New Thing, wrote an insightful little tip on why you should never use sleep(0). The comments are equally informative. On a side note, I've recently become a very big fan of java and C#'s Monitor synchronization primitive along with its signalling capacity (in java it's part of the java.lang.Object API, which is much more elegant than C#'s Monitor class and its static members).
Damned if I know why, but the Call of Duty 2
demo sucks. Oh, I can describe the symptoms
alright, but there's a fundamental problem there that eludes me. Why would a sequel that's seemingly based off of the same (extremely good) codebase as its predecessor not be able to compete in visuals and performance with two year-old games
Now don't get me wrong, I'm as big a sucker for visuals as the next guy (if not more so), but although the CoD2 screenshots look pretty sweet there's nothing there to take the visual acuity crown from either of the games I mentioned above. There's certainly nothing to justify a former hi-end machine - AthlonXP 2800+, 1GB RAM, Radeon 9800XT - grinding to unplayable framerates at low resolutions (about 20 frame per second at 640x480 with most everything turned either off or low) or having decimal-point framerates at high resolutions (0.2-0.5 frames per second at 1024x768 with medium-high details and no antialiasing). The same machine plays Doom 3 and Half-Life 2 at 1024x768 with x4 AA and crunches frames like there's no tomorrow. To reiterate, both games look considerably better than CoD2.
On a radically different note, I managed to miss the fact that the Serious Sam II demo is out. I'm downloading it and will report when I get the chance to play it. Indigo Prophecy is out too, so I guess my current playlist reads something like:
Guess I gotta get some spare time on my hands...
There is one particularly nasty blogspammer which every few days posts a spam comment to this post
. MT blacklist doesn't seem to cut it in stopping the bastard.
Has anyone had success fighting off blogspammers? Do you have any advice?
What the hell were the guys at Microsoft on when they build the Setup and Deployment Project code for VS2003? To say that is sucks would be some of the biggest understatement ever. All I wanted was for my application to delete some intermediate files when it uninstalls. You'd expect to be able to do that from the File System settings of the install project, but you'd be dead wrong; of course, the next logical step is to interject a script of some sort into the uninstall chain. Simple enough.
I wrote a 7-line batch script to do the work for me (batch files are crappy scripting tools, but you'd be surprised what you can do with them with enough patience) only to find out that, well, you can't add bloody batch files as custom actions; you can only add DLLs, EXEs and VBScript/JScript files. So I spent an hour teaching myself the basics of VBScript (I already have a solid handle of VB6, just needed a look at the WSH reference and some turorials about FileSystemObject) and moved on.
Only to find out that the script doesn't work; it's run from a god-knows-which working directory, meaning you have to do some extra fussing around to get to the right directory. After a little reading I found the Session.TargetPath property, which apparently doesn't do the trick. To make a long story short, I found a tutorial on The Code Project which showed me how to do it:
- Add [TARGETDIR] to the CustomActionData property of your custom action
- The property is accessible with Session.Property( "CustomActionData" )
Why the hell is the simplest thing with MSI so goddamn convoluted?
Just realized it's been quite a while since I posted anything demoscene-related. Well here goes: you positively, absolutely must watch Iconoclast
. It is the single most important demo since, well, I have no idea. It's broad, it's beautifully executed, it's glriously original and it's insanely well-programmed (running smooth as silk on my Radeon 9700-equipped laptop) and it has some of the best music
ever written by a scener. I've been following aMUSiC and Leviathan since the 2002 demo Edge of Forever
and they never cease to astound me. Actually, now that I've mentioned ASD, you should definitely watch Edge of Forever
and Planet Risk
Iconoclast by Andromeda Software Development
(All images shamelessly stolen from pouet.net)
Also noteworthy is the Assembly'05 demo from Synesthetics called sts-04: instant zen which, while not altogether very different from their debut demo at Breakpoint 2005 sts-03: aeon flux is very well made and has great music.
The 200mb or so video download for TBL's 2005 comeback Ocean Machine is very well worth it; aside from being an Amiga demo (an achievment in itself over 11 years after the last machine was launched) it has some really stunning effects, such as the dancing ninja (?) in the screenshot below, and a brilliant soundtrack by Crankshaft.
Ocean Machine by The Black Lotus
Portal Process have been prolyfic lately. After winning The Gathering 2005 with the singularly cool meet the biots they got 3rd place at Assembly 2005 with don't stop. Now don't get me wrong, "don't stop" is a great demo - but it's just more of the same. Stick with "meet the biots", it was great.
meet the biots by Portal Process
Finally, plastic's astounding 195/95 and Final Audition are an absolute must-see, particularly the final version of 195/95.
195/95 by Plastic
After having seeing most high-profile or otherwise interesting movies that came out this year I was under the impression that, with some notable exceptions, there wasn't much to look forward for. A quick look at IMDB's very useful "Now Playing" feature
proved me very much wrong:
- Serenity (a.k.a Firefly: The Movie) is out. I've never seen the show (although I intend to) but the trailer looks promising in the extreme (particularly since it's downloadable in HD WMV9).
- MirrorMask looks like an interesting piece. Dave McKean's adaptation of Neil Gaiman's is stunningly beautiful; I've never read the book, but the trailer looks promising indeed.
- Apparently they actually made Transporter 2. The first movie was a lot of fun (a hong-kongesque action flic with European actors? You bet), I hope the second lives up to it.
- Lord of War might be a pretty fun way to spend a couple of hours. Mild comedy and action with Nicholas Cage? I see that.
- Corpse Bride - a Tim Burton movie with Johnny Depp. 'nuff said.
- I'm highly looking forward to the latest movie from Tony Scott (directory of Crimson Tide, Man on Fire, Spy Game and Top Gun) called Domino. Seems interesting.
- In the recent trend of epic, grandiose book adaptations started by Lord of the Ring, C.S. Lewis' The Chronicles of Narnia: The Lion, the Witch and the Wardrobe just might be "the next big thing". Trailer certainly looks awesome.
- I can't believe they actually went through with it.
- Yes, like it or not, I am very much into Harry Potter. Goblet of Fire's trailer looks like they blew the lid off the budget and I hope the movie is as visually artistic as the third (having already read the book I know what to expect plot-wise).
- Stay is a controversial (at least according to the comments) movie from director Marc Foster; regardless of the early criticism, after Finding Neverland I'm willing to give Foster every ounce of credit I can muster. Add Ewan McGreggor into the mix and I'm sold.
- I was utterly surprised to find that I actually enjoyed the 1998 movie The Mask of Zorro. I was equally surprised to find that they're acutally making a trailer. I wonder if it'll be any good...
- The Matador has potential. We'll see.
- The Libertine looks promising as well. Johnny Depp always excels at playing out-of-this-world characters (Edward Scissorhands, Ichabod Crane, Jack Sparrow and lately Willy Wonka, just to name a few), which could only mean well for this movie.
- I will watch Memoirs of a Geisha. Looks for too interesting not to, and the talent list is nothing short of astonishing.
- Not sure what to make of Aeon Flux; the plot seems kind of ridiculous, and so does the trailer. Another comic-license wannabe?
- If the Lethal Weapon movies are anything to judge by, Kiss Kiss, Bang Bang should be da b0mb!
- I'll have to give Paradise Now proper viewing time before I decide if it's a horribly political movie or the gripping tale of humanity it purports to be.
- George Clooney plays Robert Baer in the "based on arguably real events" movie Syriana. There's some potential there.
I've also watched King Arthur while on vacation. I don't have a single word quite powerful enough to describe how utterly bad this movie is, so I'll settle with "horrific"; I mean, seriously, it was shit. Moreover, I'm not sure if Guinevere was a terrible character because of poor casting (Keira Knightley, who's also starring in the aforementioned Domino) or, more likely, due to a crappy screenplay. The camerawork was awful (most battle scenes were completely incomprehensible) and music uninspired. Bottom line: stay the hell away.
On the contrary, I also had the chance to watch Lemony Snicket's A Series of Unfortunate Events, to me an obscure movie I haven't even heard of until a couple of weeks ago. How can a movie of this caliber remain so unknown? I believe it wasn't even shown in Israeli theaters. Anyway it was an interesting movie, very funny at times and certainly very beautiful and imaginitive, but I can't shake the feeling that we have here a Tim Burton wannabe... I still haven't decided about it properly, I intend to watch it again and then I'll have a final opinion on it.
I've been doing some reading on the Chernobyl nuclear disaster
. The reading turned out to be a genuinely frightening experience. A series of small but unfortunate errors resulted in hundreds of thousands
of people evacuated from their homes and irradiated large sections of the world...
I got a similar sensation of dread by reading the Fallout manual, which starts with a perfectly dry and scientific description of the effects of a particular type of nuclear bombing. The game comes highly recommended, by the way.
Something a friend of mine said when we were discussing it over lunch yesterday triggered a memory from Jeff Wayne's War of the Worlds, to quote (this was more difficult to find than you might think):
It seems totally incredible to me now that everyone spent that evening as though it were just like any other. From the railway station came the sound of shunting trains, ringing and rumbling, softened almost into melody by the distance. It all seemed so safe and tranquil.
I haven't had that much time on my hands lately to do any proper writing (what with a full-time job, four martial arts classes a week, making arrangements for a trip abroad and a LAN party, looking for an apartment and car and being to several family occassions), which is why content has been a little drab lately. So I'll start today's tidbits with a request: if you have an interesting programming dilemma, issue, question etc. don't hesitate to contact me
- I'm most prolific when challenged with an uncommon problem.
That said, lets get to the goods:
- I was researching an issue we had in the current project (specifically, finding out which physical monitor was connected to which video controller), and at first turned to WMI which is usually good enough to give you such answers. Although I have some WMI experience under my belt I was looking for a tool to aid me in developing WMI applications - a WMI "explorer" if you will - and after a little Googling about stumbled onto a very useful tool written by French programmer Coq. The tool, aptly named "WMI explorer", is an open source Windows Forms application which allows you to query the WMI schema as well as object instances, and also generate C# classes for WMI classes. I've found it immensely valuable; go ahead and download it, just be warned - it's currently in French. I'm contacting the author to ask his permission to translate and distribute this thing (I'm not sure under which license it is distributed because, well, I can't read French!)
- I'm really very excited about HDR (High Dynamic Range rendering/imaging), and my excitement only grew after seeing the screenshots from Half Life 2: Lost Coast. Check out the screenshots in the article - they're simply staggering! The overexposed building on the third page is precisely the kind of thing you simply cannot do faithfully with bloom and which changes the entire gameplay; this means that when attempting to attack the castle from below you are partially blinded and at a massive disadvantage. And it looks absolutely stunning to boot - check out the curch on the fourth page!
- Amiga demo afictionados should check out the video for Control by Oxygene - extremely impressive visuals on a (in my understanding) vanilla A4000, along with a superb soundtrack by Clawz.
- Microsoft's specs for C# 3.0 are out, and it looks like the C# guys went haywire. I'll be digging more into that for comments. In the meantime you can check out this discussion (via Aynde Rahein)
- Go check out Indigo Prophecy. I'm very, very, very much looking forward to it (and Tycho at Penny Arcade seems to concur).
I'm hosting a LAN party this weekend, so hopefully I'll have some interesting experiences and/or pictures to share by Sunday. On Sunday itself I'm going for my first trip out of Israel in 8 years (the last, and technically first, one was to London for a week when I was 14). I'm going to Turkey for a week of treks, jeeps, rafting and of course some classic R&R (the trip's programme for Hebrew speakers can be found here
). Hopefully it'll be a great trip - pictures and experiences when I get back.