Thursday, January 25, 2007

Good intro to MSBuild

Brennan wrote a nice little tutorial on MSBuild over on his blog. It'll be especially useful to you if you've never used ant or Nant before. There's also some good quick starts over at the Channel 9 wiki.

I have a fetish for making build scripts. Considering how plebeian the task is, I enjoy it way more than I ought to. I ran into Brennan's post hunting around for good stuff on Foundation Server's build stuff.

Foundation Server looks awesome. I don't quite understand why Microsoft is trying to make money off of it, but they're being quite clever about it. You can download a 90 day trial from here. And then you're just a checkbook away from turning your trial version into a production version.

We are likely falling for it. :)

Strange things coming from Microsoft these days. MSBuild (and Studio's total integration with MSBuild) is just a slam dunk, but very un-Microsoft of them. And then trying to make money off of VSTS and Foundation Server (you can't download it as part of the not-so-universal-anymore MSDN subscription). I would think the mindshare they'd own by giving it away would be worth more dollars than they're going to get for licensing. Or maybe they're just so confident in their monopoly these days that they figure they might as well start charging for more stuff. Hmm...

Friday, January 12, 2007

Review: Working Effectively with Legacy Code

I originally posted this review to Amazon. Thought I'd repeat it here. The author, Michael Feathers, is from Object Mentor. Check out their blogs, there's a lot of interesting noise being made over there. (They recently moved the blog from their old site, but the new site has a link to the old stuff.)

Here's a link directly to the book where you can read other reviews. Oh, and I didn't mention it originally in my review, but another big plus to this book is that it's language-agnostic, which is a big deal when legacy code is your issue.

Anywho, here's the review. The punchline is: READ THIS BOOK! It's really excellent.

A more accurate title for this book would have been "Unit Testing and Refactoring is How To Work Effectively with Legacy Code" The book operates entirely from that premise, and only spends a little time trying to sell you on the concept. If you're still struggling with that debate, this book may rub you the wrong way. However, I found it to be intensely practical and found the author repeatedly speaking about scenarios that I run into quite often.

I would describe myself as someone who finds the whole fascination with design patterns a little optimistic and certainly hype-laden. Useful to be familiar with, but nothing to preach about. Feathers' treatment of patterns is exactly what they should be, however -- from the trenches, and goal-oriented. He describes the patterns he uses with the very immediate goal of how they will help you "get code under test" as he would put it, and slowly unwind the spaghetti we all run into.

Although the world didn't need yet another book about unit testing, refactoring, and patterns, there are few books that offer practical advice for the ugly side of software development. To get the most out of this book, you'll need to have slightly better than intermediate experience with object-oriented development, but this is not a hypothetical-scenario type book targeted at gurus. And most importantly, it acknowledges and embraces the fact that we have all inherited reams of code that has either abused and ignored OO principles, or wasn't even OO to begin with. It is quite readable and accessible, and doesn't overwhelm. I found a lot of valuable techniques in here that I have not found anywhere else.

I highly recommend this book, and I'm going to be shoving it down my coworkers' throats. :)

Sunday, January 07, 2007

Review: Saving Money and Time With Virtual Server (O'Reilly Shortcuts)

If you haven't heard of O'Reilly's Shortcuts series, they are a fairly large collection of downloadable PDF articles, usually between 25-100 pages long, and priced between 6-10 dollars.  Or if you have a Safari account, they're all included with your subscription.  Well, that's enough of sounding like a commercial for O'Reilly.  But they did send me a free copy to review (thanks Marsee!) so I thought I'd at least plug them a little.  And considering that I'm about to give a lukewarm review of the article itself...

This is the first Shortcut I've read, and I hope it's not indicative of the series as a whole.  While the quality of the article was quite good and the information useful, it was definitely a commercial for Microsoft's Virtual Server 2005. Granted, the article is clearly targetted as an introduction to Virtual Server, but any discussion of virtualization that does not also mention VMWare is clearly suspect. 

The author, Chris Sanders, is not a paid shill for Microsoft, so it's a shame that his article comes across as just another piece of evangelism.  Do check out his blog, though, he has quite a bit of useful tips and info for an IT admin, but that's just not my bag.  I'm the guy always making the IT guys nervous.  :)

In spite of my complaints, the article is a good introduction to Virtual Server to someone who has never used it before, and is even new to the idea of virtualization.  It has a quick introduction to the concept of virtualization, and then a basic how-to on setting up your first virtual machine.  The instructions were clear and easy to follow, and I had my little sample machine up and running with little trouble.  So good job there.

Not being an IT guy, I spent more time paying attention to how I could use it to run multiple development platforms, and didn't pay very close attention to the sections about security or consolidation (running multiple VM's on one beefy server).  But if you are an IT guy, I imagine you'll want to pay attention to those sections. 

I'm still not up to speed enough on the ins and outs of either Virtual Server or VMWare, but they are very soon going to end my adventures with Norton Ghost or dual booting.  Virtualization is one of the New Cool Things getting a lot of attention, and we're moving aggressively on it at my work.  If you're a newbie in this area like I am, you should put your ear to the ground.

But would I shell out $7.99 for this article?  Probably not.  Mostly because I'm a Cheap Bastard, but also because if I'm going to pay for someone's knowledge, I want an unbiased opinion.  This article isn't trying to be a reference source for Virtual Server.  So if I'm just being introduced to a product, I'd be really interested in hearing its relative merits to its obvious competitor.  And there is literally not one single mention of VMWare in the whole article.

If this were an article posted out on some IT forum, I would certainly point people to it and recommend they read it.  It's got good stuff.  But then I would recommend they google the comparisons.  If you've already got a Safari account, or if you're spending someone else's money, do download the article.  Amazon and O'Reilly do get lots of my money for technical books, but if I had just spent 8 bucks for this, I'd feel a little cheated.

Friday, January 05, 2007

Horrifying thing I just overheard at work.

I'm being arrogant as all hell... but I'm posting it anyway.

Dev1: "This is how they do multiple inheritance in C#. Interfaces."
Dev2: "Aaah."

Apparently Dev1 and Dev2 are C++ guys. And only C++ guys.

I have a rant in me about the importance of being multi-language and multi-platform literate. And this is perfect grist for that mill, but it more makes me think about the social and non-technical difficulties of coming up with a good design when you're part of a team that isn't really at the level to understand, implement, or take advantage of that design.

And I'm not talking about overly-elaborate designs that turn into frameworks that turn into solutions looking for a problem. I can explain dependency injection to someone, for example, but if they don't get it and understand why and when it is a good idea, then I'm pretty tied down in the kind of design I can put into our project.