Tuesday, May 11, 2004

Wow! What a success!

Tonight we had the as the .NET User Group meeting the Visual Basic 2004 World Tour.  The meeting was fantastic.  We had Jay Schmelzer and Joe Binder, both Program Managers on the Visual Basic .NET team, come and present to us.  I was amazed at the turn out.  We usually get 40 or so people to the user group meetings each month, which is good, but tonight we had 95!  This totally surprised me especially because we had 86 people registered online.  Usually, you'd expect 60 or so when 80 register, but we actually ended up with MORE than had registered - AWESOME!  This was even more stunning since we had 6 people that had registered 10 days ago.  Apparently we did some very effective last minute recruiting!  It would be fantastic if we had this turnout each month - but we're going to be working on that.

I missed the very beginning remarks that Joe had as I was working on logistics, but his presentation focused on the Tablet and Office which was very cool.  The majority of the evening was spent listening to Jay.  Jay had a very easy, funny presentation style that I think everyone appreciated.  Jay targeted productivity enhancements that have been made in VS Whidbey.  It is so exciting to see all of the enhancements and capabilities put into the next version of Visual Studio - kudos to the VS and VB groups!  In fact, some of the new features seem very tempting and alluring, almost making me want to use VB on a daily basis - a kind of returning to my roots.  I think I might use VB.NET quite a bit more once the 2005 version rolls around.

Afterwards, Jay, Joe, Aaron Skonnard, and several other guys from the group went to Cafe Rio for some dinner and to shoot the breeze...it was a great ending to a great day!

Tuesday, May 11, 2004 4:55:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback

Ok, this is a really simple post, but I didn't want to forget about it.  For years (since VB 5.0) I have loved to create reusable visual components, namely controls.  This passion has not gone by the wayside with .NET, but time has dwindled.  I find myself focusing on many other aspects of software development and haven't found the time to devote to control development.

Anyway, it's a pity this isn't easier, but have you ever wanted to create a control that has a fixed border (either a solid line or embossed)?  Well, various controls such as the PictureBox, Label, and TextBox offer a BorderStyle property for that purpose.  If, however you create your own control (one that derives from UserControl) you won't have a BorderStyle property and adding one of your own quickly turns nightmarish (not to mention tedious) unless you have a bit of knowledge about the Windows API.  Windows accomplishes this task by associating styles will visual and non visual characteristics of the control.

It wouldn't be .NETish to use PInvoke to set styles on a window (e.g. a control) via SetWindowLong() so we'll look into pursuing a different route.  The .NET team, it seems, has ridden up on a white horse and anticipated this need.  From within our control we can control the styles used when our control is created by the .NET subsystem via the CreateParams property.

Simply override this property, supplying your own styles and you've got your very own border style.

private const int WS_BORDER = 0x00800000;

protected override CreateParams CreateParams {
   get {
      CreateParams p = base.CreateParams;
      p.Style |= WS_BORDER;
      return p;
   }
}

There are many other styles to choose from as well, this one simply provides a solid border.  If you want to change the style after the control has been created, then you'll have to implement some different steps.  Have fun!

Tuesday, May 11, 2004 8:02:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Sunday, May 09, 2004

You know what I love above all other things? Resetting a domain! I mean, what can be more satisfying and energizing than watching one of your beloved hard drives crash and then taking the time to rebuild from scratch?  Such has been my lot these last several days.

On Thursday, May 6th, 2004, my domain controller's hard drive went out.  Fortunately it didn't go out hard, I could still reboot (periodically, and EXTREMELY slowly about 1.5 - 2.0 hrs per reboot).  Unfortunately, the crash occurred while I was backing up my data.  This is the second drive to go out on me in about a year.  Well, I've been in the process of rebuilding my Windows domain and Exchange server over the last few days - it wouldn't have taken so long but that we had company over for BBQs and such.

It wouldn't be so bad (missing email and stuff) except that I had to also rebuild a member server.  I couldn't simply change it's domain membership to the new domain because it is also a Certificate Server.  This member server also is my SQL Server, and IIS server, and File Server, et al.  Yes, being a very small, one-man shop has its pitfalls.

The good news is that I pretty much have the domain back up and operational...just a few thing lacking: a few databases, a few websites, and my source code control system.  That shouldn't take but a few more minutes tomorrow and I'll be cooking again.  A benefit of redoing everything is that I can revisit the initial configuration and more firmly cement into my feeble memory all the nuances to setting up DNS and DHCP as well as taking SQL Server databases and reconciling object ownership with new owners.  Not to mention file and folder ACLs.

Ah, the joy!  I just love computers!

Sunday, May 09, 2004 8:29:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Wednesday, May 05, 2004

This sure is an exciting time!  Next week on Tuesday, May 11th, we have the Visual Basic World Tour 2004 coming to pay us a visit.  We'll the the opportunity to interact with members of the VB team and see many of the up and coming new features in the Whidbey Visual Studio product.

The VB Roadshow (as it's also known) will be hosting our .NET User Group at Northface University.  If you'd like to come, participate (of course it's FREE), eat pizza, and have a great time register online and don't forget to invite your friends!

Join us at the Salt Lake City .NET User Group Site as well.

The VB World Tour starts at 6:00 PM and runs until 8:30 to 9:00 PM.

2825 E. Cottonwood Pkwy, 3rd Floor
Salt Lake City, Utah

The office building's doors close (and lock) at 6:00 PM so be early to get in.  See you there!

Wednesday, May 05, 2004 8:59:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Tuesday, May 04, 2004

Andrew Binstock, a columnist at SD Times, makes some very valid and interesting points concerning the software methodology known as Extreme Programming (XP) in his article 'Not So Extreme Programming'.  As one that has (in limited fashion) used Extreme Programming in the past I have been privvy to some of the benefits as well as some downfalls of the technique.  There are some definite key tenets of Extreme Programming of which I am a fan.

For example, I am a proponent of the 'Stand up Meetings' in which developers gather at the beginning of each day to set in order their tasks and resolve any foreseen roadblocks.  It's a great opportunity to make sure all of your ducks are in a row and everyone is ready to proceed with the days activities.  I am a big fan of test-driven development (TDD); I feel, however, that oftentimes developers will get too bogged down in writing tests so much that actual productivity is sacrificed.  I also am a fan of the story design technique in which a task or an activity is designed and the key actors and players are identified though I think the implementation should be different (not 3x5 cards).

I feel, however, that its disadvantages outweigh its advantages.  To begin with, in the XP way of things, applications are designed bottom-up which makes it very difficult to reach your intended destination with a solid packaging; it's a bit like building a skyscraper starting with lots of little bricks without a solid, preenvisioned foundation.  This lack of scope and real design can be detrimental to the end product.  XP projects seem to be especially geared towards smaller products; large applications are often too complex.

Refactoring, as a practice and a principle is paramount to programming and good software design - a tenet not overlooked by XP.  It seems, however, that it promotes refactoring ad nauseum.  Constant refactoring can be detrimental to the success of an application as developers are often dealing with minutiae that frankly are not that important or can be optimized later or in different ways.

Andrew to me hits his point home when he says the following:

The foundation of XP, in my view, is part of the problem: It is a radical embrace of an approach that goes from the particular to the universal. It is the purest form of bottom-up development: You never design more than what is immediately needed, you write the least amount of code that will fulfill your next test, and you design the test to provide the least amount of incremental change. After you’ve written lots of tests (frequently thousands), you clean up your code by using one of 72 refactorings—which are specifically analyzed techniques for cleaning code without changing its functionality.

The fundamental problem with this approach is that software today is complex and large, so it cannot be designed properly by using the least-increment approach and hoping that a sound product will eventuate through the organic accretion of lots of small design decisions (followed up by code cleaning).

Large, complex projects have to be designed top-down and the code must be developed to that design—regardless of its complexity.

Now, after having said all of this, I don't purport to be an XP expert by any stretch of the imagination.  Our embracing of the XP methodology was scattered at best and we picked and chose that which we saw as relevant to our team and our environment - much of it worked for us, though not everything did.  I'd welcome your comments and insights.

Tuesday, May 04, 2004 1:58:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Monday, May 03, 2004

At the beginning of the year I started an initiative with my current employer which I call Chalktalks - a name I blatently and unabashedly stole from my previous employer, Microsoft.  This is a special biweekly meeting that occurs at 7:00 AM each Monday.  To this meeting we, the various consultants, gather to share insights, knowledge, and experiences with other team members in an effort to bolster our technical abilities and broaden our horizons.

The chalktalks that we conducted at Microsoft targeted the Rocky Mountain District (comprised of Denver and Salt Lake City) and were held weekly on Fridays at 7:00 AM.  When I joined my current company I noticed a marked difference in the team atmosphere and camaraderie.  For the most part people have been unwilling to participate in team-building activities and generally have a bad attitude towards the company pent up from years passed - an attitude with which I don't deal well.

It has been a goal of mine since the beginning to help encourage team members and bolster the atmosphere here.  To this end (and with the approval of management) I started two initiatives that have been moderately successful: the chalktalks as well a a team-meeting-only 5-10 minutes 'Tips of the Trade' or (TOTT).

Although we've had so far around 9 - 10 separate chalktalks, only two individuals have actually gotten up and presented a topic to the group (usually consisting of 3-5 people of a possible 35+): myself and Scott Golightly (a coworker and our local MS Regional Director).  Not to say that I expected otherwise.  I am not really disappointed...it gives me the opportunity to plan topics with which I'm not very familiar and give a presentation on it, expanding my horizons.  The way I look at it is that they are missing out on expanding their repertoire.

Notwithstanding, I am happy to say that we've not yet missed out on a single week and have had such delightful topics as Asynchronous Processing, SharePoint Portal Server, Code Access Security, GDI+, HttpHandlers, SQL Server Tips and Tricks, et al.  It does require work above and beyond our normal responsibilities (which I think is the primary factor in others not participating) but the effort is well worth it.  I just wish the guys could see that and actually do something of their own initiative and volition toward self improvement, rather than relying on being compensated or feeling that the company owes them.

Monday, May 03, 2004 2:21:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Sunday, May 02, 2004

I ran into this while working with a client over the weekend.  My client is using VS.NET 2002 (with the .NET Framework 1.0) and is creating an in-house, intranet application to be used simultaneously by 35-50 users...ok that part doesn't matter.  Basically what it came down to is they are in the process of performing some personnel changes and wanted to ensure that prior to taking action that they had all of the source code and could continue on making changes and improvements to their software.

First of all, I'd copy the files (mostly .aspx pages) locally to my machine simply to see if I could compile the project from within Visual Studio.  Everything loaded fine except the web project.  It failed with an error 'Unable to get the project file from the web server'.  This was disconcerting.  I know I'd seen the error before (about 15 months ago) and had solved the problem but with my client looking over my shoulder the heat was on!  I had to get this to work.  I double checked all of my settings - everything seemed in order.  Interestingly I didn't get this problem with any of my web applications.

Then my memory started to function again...I recalled that VS maintains a folder called VSWebCache found in <root>\Documents and Settings\<user>\VSWebCache\<machinename>.  All I had to do was delete all of the contents of this folder and voila! it worked - I could open the project!  It turns out that VS.NET creates and uses this directory in order to facilitate offline development and as a working directory.

Simple, but stupid, solution.

Sunday, May 02, 2004 4:51:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [11]  |  Trackback
 Tuesday, April 27, 2004
Chris Brumme is quite illuminating on his finalization post.  An excellent discussion and in depth.  Therein, Chris educates us on how finalization really works and what it's all about.  A must read!
Tuesday, April 27, 2004 2:48:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Saturday, April 24, 2004

John Topley hits the nail on the head with this article about Microsoft and the world's negative view of the software giant.  This is just a copy and paste of my comments to his post:

I've had the privilege of being on the inside of MS as a consultant and on the outside as an observer. I won't reiterate your points as you make them very well and I couldn't state them better, but I'm sick and tired of the constant MS bashing and general disdain in the computing world. It's personally hurtful at times - especially when it comes from coworkers or family members. Most of the loathing and bad-mouthing is completely unfounded and without any real understanding of what goes on or why. Having been on the inside I caught a first-hand view of the energy and passion. It is awesome! People claim that MS isn't innovative or they simply steal other company's ideas (or take the companies themselves). That's just a load of bull. The folks at MS have an astounding desire to get things done and get them done well. This leads to amazing innovation. Well I won't rant on, but thank you for putting into words my exact feelings. :)

Excellent points, John!  Keep up the good work.

Saturday, April 24, 2004 12:58:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [1]  |  Trackback