Half Life 2 First Impressions

I have to get this out before the beauty of the game makes me completely forget about it.

I recently celebrated my 26th birthday and got Half-Life 2 as a gift (thanks Mom). I was pretty jazzed about the game because it got so many great reviews and I was pretty disappointed with Doom 3; so disappointed that I traded it in before I finished it. So I install the game: it’s 5 CDs worth of content, but that’s normal these days, so no big deal; it still takes about 5 – 10 minutes to install, but that’s big-budget games for you. The thing that really made me fume is this Steam bullshit. The installer installs the files encrypted and you have to go out on the internet; register with Steam and then it’ll spend 5 minutes authenticating and another 10 minutes decrypting the files on your own computer (actually from what I hear, that’s a decent time; some people I’ve spoken to since had to wait hours), after you bought the fucking thing from the store! Sure, games are big budget and you have to protect your investment, blah, blah, blah. But this is ridiculous: you’re punishing paying customers! Assholes. Is piracy really that rampant, Valve? The first game is still on the shelves in stores! And then that Steam shit sits on your machine running in the background (with a ~70MB working set, that ain’t tiny). Do you want Steam to start when Windows starts? Um, no.

But like  I said at the beginning, the game is making me forget this inconvenience. The graphics are the most beautiful I’ve seen in a video game (the characters lips move with the words they’re saying!). The sound is also second-to-none. I have no idea about the story, because I don’t think I’m very far into it, but the environment they create: very realistic, very detailed. Valve has done great work here. Too bad they wreck it at the start.

Alexander

Alexander might have been great, but his movie wasn’t. It’s two hours of movie jam-packed into three hours.

Not recommended.

Apps I Use Daily for Software Development

I recently got an upgrade to a much faster machine at work. Doing so made me consider all the apps that I use daily for development. So here they are:

Applications

  • RSSBandit: for the first two hours at work when I’m supposed to be working. Seriously, the best aggregator for the best price.
  • CLR Profiler: for profiling allocations in applications that run on the CLR. Clunky graphs, but the info is still pretty useful.
  • Ethereal: network analysis tool that knows every network protocol known to man; very useful and very free.
  • TcpView: check out what ports are in use at a glance.
  • Process Explorer: Task Manager amped to 11. Shows everything in Task Manager plus performance monitors for each process, including .NET monitors. Also colour-coded so you can see programs using the CLR at a glance. And, of course, free.
  • NUnit: to see that green, baby! I still use the NUnit GUI. Made over, of course.
  • NCover: code coverage; it’s the only one to use. Here’s an improved xsl file for it.
  • VS 2003: duh!
  • Vault: the only source control solution. Actually, no it’s not: it’s geared toward programming teams(with money), but I use it because it’s free for personal use and Eric Sink is just so damn smart about software(like Joel Spolsky without the attitude)
  • FxCop: are you designing your libraries with the MS .NET design guidelines? You should be, and this will help you.
  • Regulator: excellent regular expression tool. Let’s you doodle.
  • Reflector: find out how MS did their thing with the Framework.
  • Codesmith: generate strongly-typed collections, data objects, or anything else with this template-based coding generator
  • Notepad2 and Notepad++: two light weight text editors that do a lot more than Notepad.

VS Plugins

  • TestDriven.NET: do TDD right in Visual Studio; and attach a debugger to the unit test case that is giving you some trouble. Free, but you must fill out a survey.
  • Resharper: the only good refactoring tool for .NET. It’s not perfect but it’s the best out there. The only developer tool that I’ve been willing to shell out money for; I’m continually finding new things that Resharper does. (The rest on this list are all free; well, VS isn’t but I got it for free.)
  • Copy As HTML: converts code to html for posting to blogs. Performs syntax highlighting and line numbers.
  • GhostDoc: winner of Roy O’s add-in contest; takes the tedium out of adding comments to code. Still a little rough around the edges, but lots of potential here.

Got any others that are indispensible?

Question: Where do you put your unit tests?

We recently discussed (think: hotly debated) where to put the unit tests for an assembly at work. My preference is to put them in their own assembly and reference the assembly under test. My colleague, at a bare minimum, wants them in the same assembly as the classes under test, but ideally would put the test fixture for a particular class in the same file as the class, surrounded by a #if UNITTESTS compilation flag and hidden in a region at the bottom of the file.

Each has its benefits. The former keeps the tests logically and physically separated from the library under test so that there are no references missing later on, keeps both the tests and classes under test clean of clutter and it forces one to think about only the public API, which is a large part of TDD in the first place. The latter has the advantage that internal types can be tested more thoroughly; and the presence of the test right there in the file is self-documenting in the sense that the developer responsible for the assembly, not necessarily the assembly’s creator, sees them right away; so doesn’t have to be told that they exist in some other, far-flung assembly.

You know the face you make when you smell something unpleasant? That’s the face I make when I hear of the latter alternative. So I put the question to you, my two faithful readers, where do you put them? And why?