July 2007 - Posts
Jay Kimble posted recently about why live.com search sucks. In the post Jay talks about his troubles find the download page for a particular Microsoft product using Microsoft's live.com search engine, ultimately resorting to using Google to get his answer after live.com failed. I generally enjoyed and agreed with the post, however I lost Jay on his final comment:
I'm not one to bite the hand that (sort of) feeds me, but come on!!?? The best search engine for MS' properties should be an MS Search Engine!!
In principal I agree, but I wholeheartedly disagree that the MS engine should be best for MS properties simply because they are MS properties. The Microsoft engine should be the best at finding MS Properties because it's the best engine. PERIOD. As Jay pointed out this simply wasn't the case.
Google is dominant because of the quality of the result the engine provides. If Microsoft operated as Jay suggests, my search for "Blue Shoes" could possibly return "Indigo" results at the top or a search for "Whales" returning a link to the latest download of Orcas, clearly not what I want in either case. If live.com is to be the best resource for searching for MS properties it should solely be because of the quality of the backing algorithm and not some artificial elevation because it's MS owned as Jay suggests.
The Model View Controller pattern (MVC) seems to be the pattern du jour in many development shops. That is until of course, some literate nerd reminds everyone, that there is "No Silver Bullet." The recent rush to Ruby on Rails, which implement this pattern out of the box, has only served to add to the number of people singing the praise of MVC. Microsoft marketing fed programmers seemed to be quick to retort that the WebForm in Asp.NET is in fact an MVC implementation. I can't speak for others, but "the codebehind is the controller" always felt a bit like kissing your sister.
The other day I started playing with MonoRail, Castle's MVC implementation for the .NET framework.
"MonoRail differs from the standard WebForms way of development as it enforces separation of concerns; controllers just handle application flow, models represent the data, and the view is just concerned about presentation logic. Consequently, you write less code and end up with a more maintainable application."
My first reaction after overcoming the newness and understanding the project/solution layout was that this felt like how it should be. I was programming a class and that class held nothing more than data about the object. My controller for that "model" was shuffling things around and making the decision about what to do and when.
There are obviously some things you give up when going to MonoRail but I hope to assuage your fears and mine by digging in a little further. Here are the items I have on my notepad to learn:
-
Are base class library tools (TextBox, CheckBoxList, ect) as well as third party tools (ie.
Component Art or
Telerik) no longer available? If they're no longer available are the counterpart offerings as good as what is offered using WebForms?
-
Ajax? Seemingly ASP.NET Ajax is out if you go with MonoRail, so what to use instead? Has MonoRail adopted one of the javascript libraries as it's main provider for javascripting/ajax? If so how does it compare in ease of use when compared to ASP.NET Ajax?
-
Af first glance, there also no longer seems to be ways to use server controls or user controls? Is this statement accurrate? If so what is the proposed method of getting the same functionality.
The MonoRail/Castle team has done an incredible job in my mind at making this a viable option instead of WebForms. I still have a lot of reservations about the end-to-end usage, but I've let down my guard immensely after getting my feet wet. Judging from the user base out there by viewing blog posts and/or forums about MonoRail there's enough of a following that I'm fairly certain the issues above are solved. If they are in fact solved, then I have great confidence that they'll be just as easy and "right" to use as MonoRail, which will make MonoRail hard to ignore for future projects.
Occasionally I interview prospective employees at the company I work for. In the course of the interview I of course look for technical competency, but I also look for passion. Passion in my mind is the opposite of boredom. I think 9 times out of 10 I'd take a passionate programmer instead of the bored all-star. Why? I think passion for the technology you're working with will ultimately be visible in the product you're developing. Passion can manifest itself in different ways, so don't look for it always in the same place. Geonetric in many ways has done an excellent job in hiring passionate employees. I want to give you two recent examples, but some of my co-workers read this so I'll keep the following as minimal as possible.
- We have one developer who was in the break/lunch room with me and we got to talking about a problem. The discussion got to the point where we needed to go look at a computer screen, the discussion went something like this:
Me: Yada Yada Yada....I'll show you later after you eat.
Developer: Let's go look now.
Me: Now?
Developer: Yes, learn first.
"Learn first." That's passion.
-
Another developer, fresh out of college, has jumped right in to the project to the point where I don't look at him at all like a fresh college grad anymore. His passion is a project on the side where he's seeing if he can better deliver web content using XSLT and XML rather than delivering (x)html (sorry Scott if I've butchered the goal). Is it relevant to what we do daily at work? Maybe. Maybe not. The point is that he is passionate about XSLT/XML and jiggering with the technology to bend it to do what he wants. That's the kind of guy I want on my team.
Passion in my mind is a key characteristic of being a great developer. A passionate developer is will never stop learning and enjoys the journey of learning and thus is an asset to any team.
An analogy: A person does not pack the same for a overnight trip the same things as they would for a month long trip. The month long trip requires not only more luggage but also has to take into account things that wouldn't need to be accounted for on an overnight trip. In other words, you have to pack adequately for the trip you are going on. The luggage you'd take on a month long trip is too much for an overnight and the same is true for a single overnight bag taken on a month long trip.
In software terms I'm finding myself to be like the guy who too has taken many weekend or short vacations packing only a single pair of underwear and a toothbrush and thinking the same will be adequate for a weeklong cruise to Alaska. It's not. What works in a smaller environment and brings success there does not inherently bring success on a larger scale. In keeping with the analogy, I can't say to the Maître de on the cruise, "My bathing suit is surely adequate for this formal dinner, I've worn this bathing suit hundreds of time before." The analogy is silly, but the point is that what works in one situation doesn't work elsewhere. Where a bathing suit is adequate for a weekend camping trip it's not for a cruise. On that cruise there are expectation of other passengers and the dining room that you will dress appropriately.
In terms of software that means planning better, capturing requirements better, understanding the business behind the decisions, keeping fellow developers excited and passionate about what they're working on, dealing with interpersonal communication better, and making sure that everyone is on the same page and that we're all working toward a common unified target. As we grow, I need to perform better in these areas. It's not something I can put off and figure out later. If I/we don't plan properly and "pack correctly" there may not be a later.
So wherever you are and whatever software project you may be working on ask yourself what the goal or aim of that software is and if you've packed properly for it. Because if you haven't, you may not get a seat at the table.
In my
introductory post in this series, I expressed my desire to fix up my old computer an get it running in tip-top shape. I was curious in cleaning up my PC, how much dust and cabling played into the interior head of a system. For those of you unlucky souls who are the "computer guy" in your family you know you've seen some serious dust bunnies in computers. I buy canned air and on occassion will clean out my system. Is that doing any good? Let's find out.
In thinking about this beforehand I had decided that I wanted to be somewhat scientific in my approach to determine how much dust played in temperature of the computer. As Jeff said in his recent post on
overclocking your computer:
"CPU temperatures are the enemy of speed-- all other things being equal,
the higher the CPU temperature, the less likely it is your system will
be stable. (This is also why extreme overclockers use water cooling and
liquid nitrogen.) That's one reason why we have a fancy aftermarket CPU
cooler." - Jeff Atwood
Dusty Interior
If you remember back to my
last post, I mentioned that my current system sits with the side of the case open. In peeking around my case I noticed that there was a lot of dust.





Gathering Data
Setting the Baseline (Test #1)
As you can see from the pictures, my CPU is dusty. I decided to get a baseline temperature before goign to town cleaning using PC Alert (note that CoreTemp, as recommended Jeff didn't work in my AMD). Here's the baseline:
- CPU Temperature - 45-53 degrees
- System Temperature - 41 degrees
Load Testing the Baseline (Test #2)
Next, I ran the Prime95 torture test on my PC for about 10 minutes. I watched the temperatures rise to the following:
- CPU Temperature - 60-64 degrees
- System Temperature - 45-46 degrees
- Observations - much hotter CPU and system temperatures.
Load Testing the Baseline + Fan (Test #3)
I wanted to see what the effect of a house fan blowing directly onto the case would be. I placed a small house fan directly blowing on the motherboard and ran the torture test again, this time for only 5 minutes. I only ran the test for 5 minutes because the impact of the fan was obvious nearly immediately. The results were:
- CPU Temperature - 51-55 degrees
- System Temperature - 30 degrees
- Observations - The CPU still remains warmer than baseline by a significant margin. What amazed me though was the system temperature dropping to 30 degrees.
Baseline with the Case Closed (Test #4)
I mentioned in my last post that I leave the case open to facilitate air movement and cooling. I thought I would test to see how hot the system gets. To establish a temperature to compare with the original, I let the computer sit idle and cool down before putting the case back together. I was astonished by what I saw. When I closed up the case entirely in the still dusty system I saw the following:
- CPU Temperature - 50-53 degrees
- System Temperature - 36 degrees
- Observations
- The CPU temp is nearly the same, however the system temp dropped by 13%. This was shocking to me. In the years that I've left my case open "helping" my system, I was actually putting more stress on the system in terms of heat. If you take nothing else away from this article, please get this point; That closing your case actually helps airflow and thus keeps your PC cooler.
Load Testing the Closed Case (Test #5)
Again running Prime95 for 10 minutes, I wasn't surprised to see the last tests lower numbers show up again here. Under load with a fully closed case the numbers were:
- CPU Temperature - 60-62 degrees
- System Temperature - 39 degrees
- Observations
- The CPU temp is nearly the same as when we load tested earlier in test #2 above, however we again see the system temperature much lower this time with a 16% reduction in temperature.
Making Some Changes
Having satisfied myself that I had gathered enough points of data, I set out to cleaning the PC. I was going to pay attention to three very specific things.
The dust in the system was bad. I remove dust from components. I remove parts/components where necessary to facilitate better cleaning. I even cleaned the heatsink.

Gamers swear by this but I often wonder how much it helps. I thought while I'm in the system, it wouldn't hurt to clean up some cables.
- Routed longer cables along the edge of the case and secured with electrical tape.
- Used 8" cable ties to cinch up the the main strands of cables that were hovering above the CPU.
- Removed unneccesary cables/wires such as my Audigy Remote control cable which I never use.
To facilitate cooling I reapplied a silicone thermal compound the heatsink.
Running the tests again
Cleaned System with the Case Closed (Test #6)
Again, I let my PC cool and get back to a normal temperature. With my desktop up and minimal programs running I watched the temperature. Not surprisingly I saw a huge drop.
- CPU Temperature - 39 degree
- System Temperature - 31 degrees
- Observations
- Simply by cleaning the dust, routing some cables and reapplying thermal paste I saw roughly a 22% drop in CPU temperature and a 21% drop in system temperature over the original, open-case dusty numbers.
Cleaned System with the Case Closed Under Load (Test #7)
The final test, where the rubber meets the road. Here I ran Prime95 for lengthy period just to make sure the system didn't revert back to higher temperatures. After the reductions in temperature, there was no surprise here:
- CPU Temperature - 47-49 degree
- System Temperature - 35-36 degrees
- Observations
- The CPU is now operating cooler under the "torture test" than it previously was in test #1 when it was simply idling. The CPU temperature is 23% lower and the system temp is 24% lower the than the same test performed in test #2. This test was the greatest increase in cooling among any of the tests.
Final Thoughts/Observations
Clean your PC. It's cheap, easy, and it may extend the life of your computer by mitigating thermal risks. The numbers I saw gave me great insight into how a PC operates under load. Having gotten the temperatures much lower to where they are at now, I have decided that I am going to start experimenting with overclocking in the next article in this series.
As I'm about to sign off here I just checked PC Alert for a current temperature reading, right now it's 42/34 (cpu/sys) which is a great improvement from where I was at a few days ago.
Jeff Atwood owes my computer an apology. Never has one man inspired so much poking and prodding into a computer system. Though I've never met the guy, I am a regular reader of his blog. His posts are extremely thourough and span bloth software and hardware. If my
bloglines reader is showing a new post, I'm salivating to read it.
Awakening a Sleeping Giant
Jeff's recent series on How to Build a PC (
Part I,
Part II,
Part III) has awakened my desire to have a new computer. Once an avid computer builder, I've not played with hardware/building in many years. My current computer is going to be six years old in a few months and is starting to show it's age. The once bleeding-edge, costly technology now probably wouldn't fetch more than 150 bucks on eBay. Since I'm not in the market for a new computer right now (read: I can't afford it) I have decided see what I could do to my aging system in terms of maintenance and speed to allow it to perform up to its potential.
The Root Cause

In the past year my computer has been somewhat flaky. I used to after every "fix it" session put the case back together and all drives back in their bays. My frequent diagnostic trips into the case drove me to leave my PC open for easy access. My system's outward appearance has since deteriorated to power connectors and IDE cables strewn about. As unsightly as it is I tell myself that in addition to easy access it also allows my PC to cool more effectively (more on that in Part II).
A Cause For Intervention
Over the next few days I'm going to dig in my 6 year old computer and see if I can't find some benchmarks and interesting stuff worth sharing. While the majority of us enjoy new technologies and tinkering, many of us simply can't afford to buy the latest and greatest every new release. I hope to:
- Get back into my machine, reaffirming my familiarity and knowledge of the system
- Get comfortable again working with hardware in tight spaces in preparation for building my next PC.
- Share semi-scientific information/data with readers of this post.
Current PC Specs
While my computer is nearly 6 years old it still does it's job. Mainly because I purchased top end components literally days after they were release to the public, paying hundreds of dollars more for a 100MHz bump in CPU speed. The summary of the specs of the computer are as follows:
- CPU - AMD Athlon XP 1900+ (Clock speed is 1.6GHz)
- Ram - 1.5 GB of Ram (3 Sticks - 1GB, 256MB, 256MB) - Upgrade - The original system only had the two 256MB sticks.
- MotherBoard - some MSI mother board - Upgrade? - The original system had a Gigabyte motherboard that died.
I've known about
Flickr for some time. It's touted as a great Web 2.0 site with all the Ajax trimmings. I tinker and sign up for websites all the time with no other purpose than to just try it out. I never did so with Flickr. Whether it was because I don't take that many pictures, Picasa seemed to do the same thing, or the fact that my snapshots seemed outclassed by some of the photos already I don't know.
There's also some pretty neat research stuff going on with Flickr and tagging, the coolest I've heard of lately is
PhotoSynth from Microsoft (check out the neat video from the
TED Conference).
I signed up for an account and uploaded pictures after wanting to upload some pictures of my new son Lincoln. The computer I was on was a "rental" from the hospital and was severly limiting. I used Flickr to upload and resize the pictures automatically.
Geoffrey A. Moore wrote in his book
Crossing the Chasm (
Google Book) regarding technology
-
the first 2.5% of the adopters are the
"innovators"
-
the next 13.5% of the adopters are the
"early adopters"
-
the next 34% of the adopters are the
"early majority"
-
the next 34% of the adopters are the
"late majority"
-
the last 16% of the adopters are the
"laggards"
When it comes to photos I'm clearly in the "Customers want solutions and convenience" group. Now that I've found Flickr, I think I'm on Flickr to stay. It's free, it's Yahoo owned and therefore very reliable and very responsive. The Ajaxy goodness is nice and very cool, but the Ajax is really just a means to an end. The actual things I want to do with my photos once uploaded have already been thought of and are provided through a quick, reactive drop down. Very slick Flickr! Thumbs up to you guys and thanks for helping me out of a bind.