Scott Hanselman

But what price my soul?

November 11, 2003 Comment on this post [8] Posted in PDC | Speaking | NUnit
Sponsored By

Yes, it compiled.  It worked even.  Not only did it work, but it completely meets the client's requirements.  But somehow when I look at those particular lines of code (16 lines, in this case, with DataGridGirl's help) I wonder about the ramifications of this horrible algorithm on my immortal soul.

If you know me, or maybe even if you don't, you know that it has been said I have an overdeveloped sense of smell.  Specifically, Code Smell.  Often it's a gift and has served me well.  Other times it's a crushing weight as the schedule looms and I just have to buck and, well, write some crap.  (Of course, if it is totally with in spec, performance, it works, QA, etc, it's not crap, but you know.)

So my question to you, fair readers and fellow codesmith's, how bad do you feel when the pattern doesn't quite fit or that nested foreach/foreach/foreach nested a bit to deep? 

When do you know to let go? Some might say, “when it passes the NUnit Test!”  Others, who look at coding as much an art form as science might disagree.

I noticed a number of folks, from Don Box to Doug Purdy, at the PDC making GREAT PAINS to let the audience know that “this or that particular line of code is an abomination! Look away, look away from these alpha bits that hold all our pride and all our shame.”  I had to say I agreed with their evaluations.

What to do when you've built a great monument, but there's bird poop at the top that you're responsible for.  Does it take away from the accomplishment?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

Looking for Photos of .NET Rocks at PDC

November 10, 2003 Comment on this post [0] Posted in PDC | Speaking
Sponsored By

If you have any GOOD photos of the .NET Rocks panel at PDC, please email them to me.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

Emancipation...

November 10, 2003 Comment on this post [1] Posted in Musings | Tools
Sponsored By

Freed!  Free from the tyrany of the Alternate Data Stream!  If you've ever run ETrust's Anti-Virus solution and then decided to switch to another solution, you probably have a crapload of alternate data streams on your system...one for EVERY FILE.  Oy.  I've always wanted to get rid of them and never had a simple utility (or the interest to write one). 

  • Streams, a command-line utility that enumerates NTFS alternate data streams, now takes an option to delete the streams that it finds.
  • Another major Process Explorer update on the heels of v7.0 brings a slew of enhancements in addition to a more menu options: only non-zero CPU usage is displayed (you'll wonder why Task Manager doesn't do this), replace Task Manager with a new option, see interrupt and DPC time, view context switch counts, look inside .NET processes, configure highlight colors, view CPU usage in a color-coded tray icon, and much more.
  • This significant Autoruns update introduces the ability to easily delete auto-start items, a toolbar, better refresh, and more accurate path information
  • [from Sam Gentile]

Also, check out Autoruns.  You'll be suprised how much crap is set to run at startup on your system.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

XBox Live v2

November 09, 2003 Comment on this post [2] Posted in Gaming | Africa
Sponsored By

I switched on the XBox yesterday for the first time in a few months and was greeted with the new XBox Live version 2 upgrade.  Sweet.  Then I was presented with my list of online friends. Zero.  I have no online XBox Friends.  Thought I did, but no. :) 

If you're on XBox Live, and you're reading this blog, we have at least that in common.  Clearly you are my friend, or a spy.  My XBox Live GamerTag is “Glucose”.  If you see me online, please do threaten to crush me in any XBox game.

P.S. As an aside, I was throughly disappointed in the XBox Music Mixer.  It promised to let me listen to my MP3s via a connection to my main server, as well as watch slide shows.  Well, it DOES do that, but it requires me to run a Wizard on my main server, I add my pictures, then it counts done from 5:00 minutes.  At this point, I'm expected to RUN down to my XBox and run the associated XBox Music Mixer wizard and TRANSFER (that's right, COPY) my pictures/music to the XBox's paltry 8 gig drive.  Not exactly something you want to do when your guests are over and dying to see your pictures of Malaysia or Zimbabwe. 

I can only assume the did it this way to keep XBox hackers from taking any real-time transfer capabilities and defeating them, thus introducing “XBox Napster.“ (which is basically what I wanted, XBox Napster within my own subnet.)

Regardless, this is Glucose signing off.  See you online!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

StringBuilders vs. String Concatenation

November 08, 2003 Comment on this post [0] Posted in Programming
Sponsored By

Some folks have said (you've heard them in the halls), “Oh ya, you should NEVER use String Concatenation, dude, use StringBuilder...ALWAYS.  Totally.”

Rico weighs in on this, and he's right on (emphasis mine):

I tend to give advice like "Many users find Stringbuilders useful for their concatenation pattens, consider using them and measure to see if they help you".  Wussy but safe :)

Big string -> small appends
It's substantially likely that appends will fit in the slop and so they're fast, this is the best case (buffer size becomes double the string when it no longer fits so on average the slop is half the current string length) (if there are lots of small appends to a big string you win the most using stringbuilder)

Big string -> big appends
While the string is comparable in size (or smaller) to the appends stringbuilder won't save you much, if this continues to the point where the appends are small compared to the accumlated string you're in the good case

Small string -> big appends
bad case, string builder will just slow you down until enough slop has built up to hold those appends, you move to "big string big appends" as you append and finally to "big string small appends" if/when the buffer becomes collossal

Small string -> small appends
could be ok if you had a good idea how big your string was going to get and preallocated enough so that you have sufficient slop for the appends. You might be able to do better if you just concated all the small appends together in one operation.

It's very hard to say which is faster/smaller in general... it's all about the usage pattern. [Rico Mariani]

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.