Seems like Joel started a firestorm…

Joel Spolsky sure kicked open an anthill with his article on The Perils of JavaSchools.  Most of the reactions that I have seen think the article is about Java vs. C++, which means that people are missing the point entirely. 
 
Joel is writing about how he interviews developers, and how the starting point has changed.  He likes to hire developers who have an excellent understanding of how the computer works, not just how to connect the dots.  I whole-heartedly agree with him on this point.   When I’ve interviewed developers, very few grasp the basic concepts of *WHY* programs work the way they do.  They know lots of buzzwords, but very little substance.  It’s always a challenge figuring out ‘what someone knows’ vs. ‘what someone can talk about’.  A couple of jobs ago, I worked with someone who really could talk about coding and the technologies involved.  From our conversations, he *REALLY* understood it.  But, when he actually tried to do any work, he couldn’t code to save his life.  How do you weed out those people?
 
On a different tangent, there are a couple of EXCELLENT links in Joel’s article.  The link to the textbook Abelson & Sussman’s Structure and Interpretation of Computer Programs and the accompanying video lectures are AMAZING!  Last night I watched just the intro.  Super cool.  I really ‘got’ what was being talked about.  I look very forward to going through the entire course…

Ok, I’m impressed (iPod content)

I’ve scoffed at the new iPod videos, just because it doesn’t seem very practical and because it doesn’t play subsciption music.  Well, scratch *one* argument I have.  One of the guys that I work with brought in a brand new iPod video, with a video running on it… GREAT GOOGLEY-MOOGLEY!!!  Crystal clear video, and the screen is big enough to actually watch a movie, video or TV show…  Now, all Apple has to do is put a DVD ripper into iTunes (and maybe rename it to iEntertainment)…

Why I don’t think Podcasting will catch on…

The main reason is…. it’s too much work.  Blogging is easy, because it takes only a few minutes to write out what someone is doing/thinking.  Podcasting is different…  The podcasting format has been almost like a radio show.  Podcasts seem to be in the area of 30 – 60 minutes.   One has to talk for a bunch of time, then edit the podcast, then publish.  The subject has to be able to KEEP someone’s attention for that amount of time.  Random 5 minute blubs do not go over very well with Podcasting.
 
See, I’d *never* have podcasted this article <grin, duck & run!>

He’s makin’ a list… and checkin’ it twice…

Gonna find out who’s naughty or nice…
 
<We interrupt this really badly sung Christmas carol for an interesting programming announcement…>
 
Lists, lists, lists… One habit that I’ve never been great at, but I use EVERY day.  A list is a great way to increase productivity.  Just being able to list something out gives one a sense of direction and scope.  Take, for example, my  exercise routine.  Right now, my routine is… do exercise.  Blah!  Yuck!  That doesn’t help at ALL!!!  So, what if we change that into a list, like so?
  1. Walk for 20 minutes
  2. Do 20 push-ups
  3. Do 20 sit-ups

Much better!  Now, the trick is to apply that to my everyday life.  When one can create a repeatable process, one is more likely to follow that process.  Once I write something down like that, I can follow the instructions without thinking about them.

It’s beginning to look a lot like Christmas…

And all I can think of is ‘Bah, humbug!’. 
<rant>
This year has been a very good year in general, but the holiday season seems to be very much ‘ho hum’.  All of my shopping was done early to avoid the crowds, and it was pretty boring to boot.  People tend to get caught up in the gifts themselves, not the real purpose of the holiday (no, I’m not going to go into a religious reason, there’s far too many <grin>).  The gifts should be a way to say that ‘I’m thinking of you, and I know enough about you to give something’.  Too often, gift cards and money are the norm, mainly because we DON’T know enough about the person to give a meaningful gift.  Plus, we’ve got so many people to buy for, we don’t even REMEMBER some of the people on the list, etc…
</rant>
 
Sorry, I’m not meaning to sound like a grinch, but Christmas has hit me weird this year.  We basically missed Halloween because of the hurricane, then I travelled back home to Tennessee the next weekend.  One weekend of a ‘break’, being sick, then Thanksgiving.  December has FLOWN by, so much so that I haven’t even had time to THINK about the holidays!  I think the only thing that has even a little bit of holiday spirit get through has been the Trans Siberian Orchestra’s The Lost Christmas Eve.  Great combination of traditional and hard rock, in an orchestra format.  I *WISH* I could write music like that!
 
Oh well, HAPPY HOLIDAYS!

Apology to Microsoft about Visual Studio 2005

Previously, I had created a short list of things that I *REALLY* wanted to see in Visual Studio 2005’s first update.  Well, it turns out that the first one on the list was already there!!!
 
I found out today that one *CAN* profile Unit Test Cases.  It’s very weird in the way to *DO* it, but it can be done.  The secret (and try to find this in the docs!) is that the Unit Test has to have been run, and the results be showing up in the Test Results window.  Once the test case has been run, you can right click on the test in the test results window, and a menu item with ‘Create Performance Session’ will be visible.  Clicking that menu will cause the IDE to setup a profiling session for that Unit Test.  I got MUCH better results profiling a unit test rather than profiling my ASP.NET site.  Please note that this only works with Visual Studio Team Services Developer’s Edition.
 
Thanks to IanWho’s articles that actually explain how to use Microsoft’s Profiler.

‘White Screen of Death’ with Visual Studio 2005 (solution!)

Since installing the RTM version of Visual Studio 2005 on my machine at work, I’ve had a lot of problems with Visual Studio freezing… The problem was driving me completely crazy!  If I tried to do a ‘Rename’ refactor, I could guarantee that the system would freeze.  Arrgghhh…
 
I think I’ve fixed my problem.  (Watch the system freeze the moment I write this )  Two things were contributing to this problem.  First off, I had the nVidia desktop turned on.  Fortunately, I can live without the small bit of functionality that the nVidia desktop adds.  The other change has been to increase the memory on my computer.  I went from 1 Gig of memory to 2 Gigs.
 
Everything is *MUCH* better now…

Why do small software shops produce more usable software than Microsoft?

Why do small shops consistenly put out better quality software than Microsoft?  Microsoft makes a LOT of different software, have a small army of developers, has patience, and a HUGE bank, but time and time again, they stumble at releasing software?  Mini-microsoft has a LOT of excellent ideas for fixing the bureaucracy.  Personally, I think they should scale the teams to be their own companies (figuratively, not literally).  You have one person who wants to fill a need.  That person gathers a small team around them, then use whatever method is best for their team to push the software out the door.  Many companies are capitalizing on Microsoft’s gaps in their products. 
 
Here’s an example… I live in the world of development, so that means Visual Studio is my main tool.  VS 2005 added a set of refactoring features… Great!  Unfortunately, the refactorings have been limited.  Good idea, poor execution.  Fortunately, there’s an aftermarket tool, Refactor! Pro by Developer’s Express.  This tool was so good, that when Microsoft dropped the Visual Basic.NET portion of refactoring from Visual Studio, they worked out a deal to have Developer’s Express GIVE AWAY Refactor for Visual Basic.NET.  Now, Dev Express doesn’t have nearly the same type of resources that Microsoft does, yet they SHIPPED their product and Microsoft didn’t.
 
Kinda makes you wonder, hmmm?

Dependencies, again…

A while back, I had written about Microsoft and Tight Coupling.  My development team is facing the same issue, if on a much smaller scale.  We have one database and one common library for 5 different programs.  We are doing this to appease the great god, Reusability.  At one point, we had several different libraries that worked together.  The problem that we ran into was that when a change was made in one library, it was not properly tracked down in the other libraries.  This would lead to failed builds.  Not a good thing.

On the other hand, we now have a more, ah, interesting problem.  When one piece of software goes to production, they ALL have to go to production.  One stored procedure change can change the behavior of the common library, which effectively changes the behavior for all of the applications.  We have started merging the applications, but it is a slow and time consuming process.

Solving this is going to be tricky…

Which does everyone like better?

General question… MSN Spaces or WordPress? I know Rick likes my WordPress blog better. Now that MSN Spaces has added the API to allow for blogwriter software to interface with it (no more Web editing!), I really don’t have a lot of reasons for either one. I like both, they both have strengths and weaknesses. I REALLY like the photo album on Spaces, but I like almost everything else about WordPress…

Decisions, decisions…

Anyone want to chime in?

Figuring out what you’re good at…

This post should really be in guitar playing and computer programming categories, but since MSN Spaces only allows for 1 category per post, it goes in the ‘Life in General’ category…  Now, on to the post…
 
Lately, life has thrown a LOT of curveballs at me.  Some, I’ve done very well, and some, well… not so well.  One thing that’s really hit home lately is that there is too much information to absorb on any topic, let alone *all* the topics that one needs to use in everyday life.  Therefore, one must specialize.  Here’s my examples:
 
First off, I play guitar.  Unfortunately, it’s not a regular thing.  I need to be practicing EVERY night.  My focus is changing from reading about stuff on the internet to actually doing something.  The 15 minutes I read posts on Birds and Moons (a PRS guitar fan forum) should go to practicing.  And not just practicing any old thing.  I need to practice Classical guitar.  Even though I love rock’n’roll, blues, jazz, and just about anything except (c)rap, my strength is classical guitar.  I’m a terrible improvisor, even though I practice that all the time.  It has taken almost 17 years of guitar playing to realize that.
 
Second, my job.  I work as a software developer.  One of the hardest things for me to do is admit that I *LOVE* to debug code.  I happen to be VERY good at it.  I like design and planning, but I have no patience for writing every little thing up.  It has been hard to shift away from software design to software maintenance.
 
Oh well… I’m rambling, it’s been a quiet couple of months, but I think I’m going to get back on the blogging horse…

Life with Visual Studio 2005

The company that I work for switched to Visual Studio 2005 within days of the release.  There were numerous changes that we wanted and needed in the new release.  The environment is great, BUT, there are several things that I think need to change.  And, here they are! 

  1. Profiling needs to work with Unit Testing.  One of the new features of Visual Studio Team Edition for Developers is that a Profiler is included.  This is a great feature.  Also, unit testing is included.  That’s ANOTHER great feature.  Unfortunately, the two don’t work together.  There is no way to set the profiler to profile while selected tests are being run.
  2. No more projects for Web sites.  I understand the reasons, but in practice, these are horrible.  Delete a file from source control, and it will get re-added by a team member when they do their project check-in.  And .exclude is just an absolutely poor way to solve the problem.
  3. Many of the screens do not save their complete layout information.  Case in point, the Test Manager screen.  There is a drop down list to select how the grid is grouped by.  I like to see the tests grouped by namespace, so I set that.  Once I close and re-open Visual Studio, my grouping is gone, and I have to reselect the namespace field all over again.  While not critical, this is VERY irritating.
  4. Visual Studio still uses the registry!?!  Didn’t a lot of changes in .NET 2.0 go to set up configurations to NOT use the registry?  It would save a LOT of headaches (especially to us ‘beta testers’) when upgrading to new version.
  5. All the paths used by Visual Studio should be changable via the dialog boxes inside the IDE.  Currently, the only way to change some of the directory locations is to search the registry… (See #3)
  6. Speed, speed, speed…  I have a dual Xeon 3.0 GHz box with SCSI drives, the swap drive not on the windows drive, and it’s STILL slow.
  7. More refactorings, please!  Why not break out the refactoring module so that it can constantly be updated?  Companies like DevExpress and Jetbrains are going to be adding and updating their refactorings constantly!  Why can’t Microsoft do the same?

I have more gripes with Visual Studio.  More to come…

Checking the obvious…

Even master trouble shooters can fall prey to the basics every now and then.  Today, I just learned one of the great lessons in debugging all over again.  Fixing bugs is VERY, VERY, VERY simple.  It’s FINDING the damn things that is the hard part.  That’s not the lesson I learned, though.  The lesson learned follows…
 
Case in point.  Friday, I was running an expression based upon a date and a parameter in my program.  For some weird reason, the expression was returning no values.  I took the expression, parameter and all, and tried running it in SQL Server.  Boom, it worked.  I tried a bunch of different code changes, but NOTHING fixed the problem.  The program still gave back the empty results.  Next step, break out the smallest bit of code into a test program, then make single changes to go from non-working to working.  I did EVERY step I could think of.  No go.  I made as many changes as I could think of, and still no result.  I finally broke out the failing part of the expression.  Still no luck.  Finally, I went REALLY back to the basics… I started checking my assumptions.  Lo and behold, the value I *thought* I was using when running in SQL Server turned out to be wrong (darned date conversions!). 
 
 What was the ultimate problem?  I was using ‘greater than’ rather than ‘less than’ inside of my expression.  SQL Server ran fine, because the value I thought was being used was actually something completely different.  Oh well, 5 hours of debugging for an origianl 5 minute change…
 
As for the lesson that I relearned… Never trust assumptions.  ALWAYS make sure the value you are using is the one the system is getting… Especially when it comes to working with SQL Server’s query window!