Clogging the Tubes
"Oh shit," he mumbled. "I just broke the Internet." Wired has an article on the big DNS flaw. There's been lots of technical re-hashing of this, but I just thought the quote was funny
Internet Explorer is a browser?
Back when Google Gears came out and they added Google Reader support it was great for riding the train, because I could take feed reading offline and spend time on the train catching up on my feeds. This process went along swimmingly until I installed Firefox 3 beta and the initial public release. Since the Gears version at the time wasn't Firefox 3 compatible I couldn't continue doing this and it wasn't worth it to me to hack the Gears version support, etc. Jump forward several months and 2 or 3 trips without offline Reader and the Gears team released a version supporting 3.0 and I went to the web page to download it. On the page it lists compatible browsers and when I read "Internet Explorer" I started laughing hysterically. I never even considered the fact that I could use Gears in Internet Explorer to keep using the offline support.
To me, Internet Explorer does not come up when enumerating web browsers installed on my machine. Internet Explorer is the front end to the 1997 MS best practices lovefest vendor application I have to support and nothing more. Even with the vendor product lock in I still go 1-2 weeks without ever having to open IE. How do people survive on this half baked wanna be browser, and don't tell me they use IE7 or IE8 cause we all know they're just half backed circa 2008 and 2006 rather than 2001.
Before you take any cookies, don't forget to hand .Net the jar
Why Microsoft never fails to piss me off
How can my Visual Studio compile fail because a file is locked by Visual Studio?
App Engine adds SSL
Google announced SSL support for AppEngine applications, but currently it's limited to the appspot domain, which is understandable. It would be very interesting and rather game changing if Google came up with a way to issue free certs to Google App domains, maybe startup or buy a Certificate Authority?
Chrome Dev Builds
When looking for a way to stop Chrome from opening PDFs in Adobe (bad enough) using the in browser plugin (even worse), I stumbled upon this page, which talks about running Dev builds of Chrome. Using the Channel Chooser from Chromium you can choose to be notified when new Dev builds are available rather than new Beta builds. Of course all the disclaimers apply, probably even buggier than betas, etc. etc.
Chrome's subtile security warning
Avoiding duplicate Event subsubscriptions
I've recently stumbled upon .Net Events, well re-stumbled since I obviously knew about them w.r.t. Web Forms, but they are a painful faded memory at this point, thanks to Monorail. I really like .Net Events for writing code that can be super decoupled from infrastructure concerns like logging, as well as for objects that might need to relay status or other "events" to their parent without having to pass maintain a reference to the parent.
The only real downside is if you subscribe multiple times to an event, += in C#, you get called multiple times when the Event fires. I'm sure there's some upside to this in some convoluted usage scenario, but I sure can't think of it. So I had written a bunch of helper methods to subscribe a given handler to a given event, but do it in a non-duplicate fashion. As far as I can tell there's no way to ask the event who's subscribed in any meaningful way, at least w.r.t. dupe avoidance, so I just remove the handler before adding it:
handler -= value;
handler += value;
This was fine, but it required calling subEvent(handler); rather than using the default += method of associating a handler with an Event. To get around this I found the this very handy post on stackoverflow. This allowed me to handle the call to the duplicate prevention method from add, thereby keeping the normal sytax for Event handlers.
The one gotcha here is you need the protected Event as well, because when you define the add, remove for your public Event you lose the ability to reference it like a normal Event. Some people have done more in-depth IL analysis of why, but for my purposes, I just use the protected Event when I want to throw it or otherwise use it so I don't get "The event "blah" can only appear on the left hand side of += or -=" errors
NVelocity object properties gotcha
I always manage to forget that NVelocity won't show regular class variables in views, it has to be a property or method for you to be able to pull it from the view. Always waste a little time verifying the object is passed from the controller correctly, checking that the object isn't null in the view, etc. and then remember that I has to be a property or method. It's always the last thing you think of.
Google Analytics is so Sept. 2nd 2008 at 1:59pm EST
Chrome has some super speedy Javascript
As the Dromaeo implementation of the SunSpider tests show, Chrome beats out Firefox 3's Javascript engine by some 247%. Dromaeo implements a subset of SunSpider, but it's a pretty good indication of the relative abilities of a JS implementation. It will be interesting to see what kind of performance improvements the JIT pieces implemented in Tracemonkey can provide for Firefox 3.1.
Google Chrome

Update: And when you kill a child process you get a pretty funny message and image in the tab:
New blog
Rather than mixing in technical posts with funny pictures and angry rants against Bush on my normal blog I've decided to start up a separate blog for overtly technical content.

