Saturday, February 26, 2005
Tomorrow we're off for a week's vacation in Orlando, Florida. Dinner at Emeril's Tchoup Chop, several terrific meals at Disney World (yes, very good food does exist there in addition to the tons of dreck), and a fine time with the Mouses. Much fun and relaxation will be had by all. Reports when I return, relaxed but not tanned -- the forecast predicts temps in the high 60s and lots of rain. Pshaw. We'll have a great time despite it all.
I heard about Velocitis Flywheel at last year's SD West. Flywheel is a plugin for VS .NET and supports C#, VB and ASP.NET. I gave their evaluation a try and liked it quite a bit. I recently decided to drop $250 of my hard-earned discretionary funds (my saved up "blow money" portion of our household budget) to purchase Flywheel. I think it's going to be a good tool for the studies and work I've got planned when my current job evaporates in another couple weeks. The greatest strength I found in Flywheel was its visualizations; UML-like graphics showing component and class relationships. Flywheel keeps visualizations synchronized with code and enables you to make changes either on the models or in the code. There are a host of analytical, development and refactoring tools. You can analyze a class, method or variable to find all its references throughout a solution, something helpful when trying to decypher legacy software. There are lots of other useful-appearing widgets including renaming, addition of various odds and ends, etc., etc. Flywheel isn't as fleshed out as Rational XDE Developer for .NET, but then it's a fraction of the cost. I'll post updates as I continue working more with the tool.
Friday, February 25, 2005
Michael Gorman, the president-elect of the American Library Association, thinks poorly of bloggers. A column by him in Library Journal refers to bloggers as "Blog People", a "subclass who are interested in computers and the glorification of information". He also categorizes bloggers as "unpublishable, untrammeled by editors or the rules of grammar". Gorman's screed against bloggers apears to be motivated by responses he got after writing an article critical of Google. Gorman's incredibly down on Google, and his current column comes across as snide and snotty. I would hate to have seen the first column. I think Gorman's a fine example of how major portions of society today completely misunderstand the blogosphere. The Mainstream Media (MSM) ignores bloggers as "pajama clad" mujahadeen, and this fellow "doubt[s] that many of the Blog People are in the habit of sustained reading of complex texts." Both ignore the fact that the blogosphere is full of a whole lot of smart folks who happen to have a vast amount of collective expertise on just about any topic you can think of. Some of them have might even have read a complex book or two. Ugh. (Via Slashdot)
Wednesday, February 23, 2005
I was reading some of Ben Carey's older blog posts and ran across this reference to GhostDoc, a terrific commenting tool for Visual Studio. Sure, hitting the slash key three times above a method or variable will give you a template, but GhostDoc takes that a step further by generating useful text to fill in fields for those comment templates -- including generating documentation for method parameters and return values. GhostDoc looks at your method and variable names, infers a few things and plops in reasonable comments. It's almost a completely hands-off task to document if you've done a good job naming your methods, method parameters, and variables. (You have read your McConnell, haven't you???)
I don't read enough of James Lileks's blog. Lileks really knows how to put a word or two together. An example from a caption of his dog and his infant daughter: "Jasper has come to appreciate Natalie, if only because any dog would appreciate anyone who has a pants full of ordure half the time. In dog terms, that's the equivalent of being a good conversationalist." Lileks is also a plithy, sometimes scathing, but always intelligent commenter on society. A recent Newsweek/MSNBC article on poor supermoms resulted in this fine piece of work from Lileks. (Scroll down to the section "Took a brief walk".) On a side note, I've always detested Newsweek because I think they're little more than People magazine attempting to repackage dreck as newsworthy. The referenced article uses "alacitry" in its second sentence. Any decent hack knows using "alacitry" in the lede is pompous. (Almost as pompous as my use of "hack" and "lede" in an attempt to show I'm some sort of journalist, which I'm happy to say I'm not. But back to Lileks. Give his "Bleat" a shot and see what you think. It's worth the trip.
I spent yesterday evening at the Artisan bread class taught by staffers from King Arthur Flour. It's a terrific two hour class on how to make terrific bread. There's a pretty good amount of information on what happens to bread chemically at the various stages the process, but the best part of the class is being able to watch a bread pro work with ingredients and form different loaves. The dough they use is a very wet dough (66% water by weight) using about 30% pre-ferment, poolish in this case. The large amount of pre-ferment gives the bread terrific flavor since the yeast has had lots of time to extract the utmost flavor from the flour. (Flavor comes from flour, NOT from yeast!) Wet dough makes for a lovely, springy loaf with all those wonderful holes in it. Such a wet dough requires care, patience, and a bit of a knack when trying to work it. I've always had problems with wet doughs degassing when trying to move them around, leaving a flat, unappetizing, miserable hockey puck of a loaf. Pain a l'Ancienne in Peter Reinhard's _The Bread Baker's Apprentice_ is the first really wet dough I've had success with. It's been the standard here since last fall when I got re-energized to start making good bread again. Last night's class motivated me to experiment with KA's recipe, but perhaps the best thing I learned was how to form batards, the thicker "torpedo" loaf. I've been so stuck on the simple baguettes and cibattas from Reinhard's book that I've ignored boules and batards, not to mention epeés (beautiful sheaves of wheat). I plan to rectify that very soon, perhaps even before we head off for vacation next week! I'll try to pass on some details, perhaps even a photo or two. The King Arthur staff travels around the nation presenting the Artisan and companion Sweet Bread classes. Check here for a schedule. On a final note, I managed AGAIN to not win any door prizes at an event. My life is sooo horrible.
Wednesday, February 16, 2005
There are 11 kinds of people. Those who understand binary, those who don't, and those who did and are really glad they haven't had anything to do with it for a long time. (Forgive me. For most of the day I've been staring at hex microcode and trying to decypher various binary flags out of various hex words while trying to stumble my way through a moderately complex emulator package. Ugh.) Apologies to the ThinkGeek t-shirt.
Ankle Biting Pundits has a short blurb on some of our representatives who have lost focus on what government's role in our lives should be. First we get wonderful campaign finance "reform" which ought to have been labeled "Incumbent Protection Plan" or "Forget Freedom Of Speech Act". Now some bufoons in the House are pushing a bill to increase fines on "indecent programming". Who decides what's indecent? Heck, for me Bill Moyers is pretty indecent, as are most comments by ex-CNN news chief Eason Jordan. I especially like the poster's comment "There's lots of great countries where the state controls what you are able to watch. Move to one of them if you hate Janet Jackson. As for me, I use the remote control." Amen, brother. <Hat Tip: Instapundit>
Jennifer Square has an interesting post asking for feedback on how "demasculinization" in today's US. I think the term's too hyperbolic for me, but hey, I'm at home with the kids taking care of school chores, cooking and laundry while my wife pulls in a bigger salary than me. Maybe my viewpoint's somewhat skewed... All the same, I don't grade my manliness on whether or not I'm the primary bread winner, nor if I'm able to hang around at the softball or football field with other guys. (Well, frankly for me it would be the volleyball courts anyway.)
Tuesday, February 15, 2005
Katie Lucas has a spot-on post regarding development methodologies. The brunt of her post is on RUP, but she does mention "every methodology I've come across." Methodologies are terrific things, but they aren't a salve universal for having good designers and coders on your team. <Hat Tip: Joel On Software>
I was writing code in Java before I got exposure to C#. One of the many things about C# that drives me nuts is the lack of checked exceptions. This article at Artima Developer's website has a nice interview with Anders Hejlsberg, the C# design team leader. He makes some very interesting points about why exceptions aren't checked in C#. I don't agree with all of the reasons, but it's good reading all the same. What I especially like is that Anders says his team remained "neutral" on checking until a better solution is known. Now there's a concept: avoid implementing something until you know you've got a need for it and you know you're going to get it right (or mostly right). As extreme programmers would say, YAGNI. I wish I could give a hat tip to the site where I found this article referenced. Sorry!
Monday, February 14, 2005
A couple more good Geek books:
- The Art of Unix Programming by Eric Steven Raymond. A very interesting look into not only how good Unix programs are written, but also insight into the mindset of Unix programmers. Almost all the points within apply to Windows programmers as well. The central Unix programming concept of writing a small program that does One Thing Really Well is something which ought to be stamped on every developer's forehead.
- Secure Coding: Principles & Practices by Mark G. Graff, Kenneth R. van Wyk. Another book that beats home the need to address software security concerns throughout the entire lifecycle. Good general practices and case studies are part of each chapter.
This made a great meal last night, plus it took a total of ten minutes to prepare. CROCK POT BRISKET 1 Lb beef brisket, trimmed of excess fat brisket seasoning (I use Bolners. Lawry's season salt would be OK.) 1 Tbs worchestershire sauce 2 Tbs tomato paste 1 beer (I used a leftover Pete's Celebration Ale) 2 medium onions, peeled and thinly sliced 2 large cloves of garlic, peeled and sliced 1 c. beef broth (Alternatively, use 1 tsp beef stock base and 1 c. water) Liberally coat the brisket with seasoning and set aside. Keeping aside one of the sliced onions, mix all remaining ingredients in the crock pot. Plop the brisket in the mix and cover with remaining onions. Cook on high heat for five hours until brisket easily separates with a fork. Remove brisket, shred with forks and return to pot. Turn off heat and let steep for ten or 15 minutes. Serve on Kaiser rolls with cole slaw.
Sunday, February 13, 2005
<rant>Does anyone other than me wish the folks at Intuit would spend more time getting a version of Quicken stable and semi-bug free, rather than pushing a new version out every year loaded with features which don't work particularly well? </rant>
Saturday, February 12, 2005
OK, so it's early. All the same, my wife and I have a long running tradition (two years) of celebrating Valentine's Day by having a terrific meal at The Winds Cafe in nearby Yellow Springs, Ohio. The Winds is by far the best restaurant in the area and has a killer wine shop located next door. The Valentine's Day special menu is a meal for two. This year's feast was:
- Two flutes of Bartolotti Prosecco
- Caramella with Cream and Lobster
- Shiraz Poached Beef Filet with Potato Croquettes OR
- Scampi stuffed with Hot Crab Salad served with Risotto
- Chocolate Nemesis cake served wtih Strawberry Rose Petal and Marscapone Ice Creams
- Mayan Chocolate Love Ritual
Friday, February 11, 2005
I've been spending some of my free time looking through a nasty set of software components. It's about 50K lines of code and was developed with few, if any, unit tests -- or at least none were provided to us by the subcontractor. Think case study for project failure and you've got an idea of what this software looks like. I've been involved with this particular project for a number of years, but never as a developer. Due to more of those case study factors, I never had a clear picture of what the code looked like. Now I'm working through it to figure out changes to push the thing into something closer to reality. Ben Carey was kind enough to point me to a terrific reference for dealing with such a project: Working Effectively with Legacy Code by Michael Feathers. I stayed up waaaay too late a couple nights ago reading most of the book. It's a terrific asset if you've got a monster you're trying to tame. The strength of Feathers' writing is how to approach exploring, understanding, modifying and maintaining legacy code by carefully looking at what portions of the software to wrap up into test driven development methodologies. It's available on Safari Books Online, a great asset if you need online access to books.
I've slowly been working my way through Reagan's Path to Victory, a collection of radio addresses given by Reagan in the run up to his 1980 election win. Reagan gave something like 1000 addresses and wrote the vast majority of them himself. The content of these addresses is sharp and very detailed. While I have long been a fan of Reagan's presidency (yes, yes, it wasn't all rosey), this book and Reagan: A Life in Letters really changed my perception of President Reagan. I used to think he was mostly a "vision guy" who had the backbone to make some tough decisions, but got those decisions implemented because he had hired on smart folks to work for him. After reading these books I've come to the conclusion that Reagan was vastly misunderestimated. He was a smart guy who knew most of the details himself. Moreover, I was startled by the amount of handwritten correspondence he'd carry out with a wide range of people -- especially those who wrote taking him to task for his policies and decisions. Reagan's certainly a polarizing President. These two books offer up aspects of him which aren't particularly well-known.
Eric Gunnarson brings up an intersting topic on his blog . He's wondering where the public/private border is for blog content. As I said in a comment to that topic, folks really need to carefully consider what they've drafted before hitting the send or post button. Technology has greatly eased our ability to communicate with large numbers of people. However, keep in mind the cons on the flip side of communicating with large numbers of people: electronic communications (blogs, web pages, e-mails) very well may be kept around forever. That same communication may end up in Google's massive warehouse, ready and waiting for anyone to pull it out with a search. Another issue is the odds your communication will be seen by people you weren't directly writing for. E-mails get forwarded on, blogs get referenced to entire new communities you didn't know existed. Do you really want a message written in a moment's frustration or impatience to get passed around to a wide range of folks you didn't care to see it? Do you really want something moderately private, personal, or intimate available for anyone to see? Far too many folks give little or no thought to what they're writing in e-mails or blog posts. Give yourself a moment's time to review and rethink whatever the message you're writing. Perhaps a bit of editing may save you some unease down the road. I know there are a few things floating around I wish I'd hit "Cancel" on..
Thursday, February 10, 2005
Here are some of the better computer geek books I've used in the last several years. I'll continue to update this occasionally.
- Code Complete, 2nd ed. by Steve McConnell. Vital info on moving from design to construction to testing. Mandatory for your bookshelf if you give a hoot about being in the 20% of software projects which succeed instead of in the 80% which don't.
- Writing Secure Code, 2nd ed. by Michael Howard and David LeBlanc. Detailed discussion of critical security issues in design, implementation and maintenance. Gotta have it if you want to walk the walk.
- Mastering Regular Expressions by Jeffrey Friedl. A top-notch software engineer pointed me to this six years ago and it opened up a whole new range of skills for me.
- Secure Coding: Principles & Practices by Mark G. Graff and Kenneth R. van Wyk. It's been awhile since I read this, but I remember it having some great background and technical detail. It also is another good book for tossing cold water in the face of developers, leads, and managers who ignore the necessity of addressing security from the start. (Even if it's a risk assessment which shows a minimal need for security.)
- Working Effectively with Legacy Code by Michael C. Feathers. I mentioned this in another post, but needed to document it on this list. Critical reading if you're working with legacy code.
- The Practice of Programming, by Brian Kernighan and Rob Pike. The cover graphic says it all about the book's ideas on constructing software: "SImplicity, Clarity, Generality". Way good reading.
- Writing Solid Code, by Steve Maguire. I read this back in 1993 when I was finishing up night school classes. Concepts I read in the book stuck with me even though I didn't get into software development for another several years.
- Software Survival Guide by Steve McConnell. There's a lot of material duplicated between this and Code Complete, but some gems are unique to this book. Scheduling and estimating are hit much harder in this book, along with some great coverage on schedule reestimation -- not slips.
- Effective C# by Bill Wagner. An absolute necessity on line with the works of McConnell, Macguire, and Kernighan and Pike. This is the C# impementation details to their terrific general practices. Furthermore, it's also moderately useful for other .NET languages.
- The Chicago Manual Of Style, University of Chicago Press. Need to understand why you should write certain things a certain way? Need backup for making your case with "helpers" hacking up your well-written document? Look no further.