Public musings, often on software development RSS 2.0
# Saturday, August 05, 2006

On Tuesday August 1st I was one of the presenters at the San Diego .NET Developers Group (http://www.sddotnetdg.org/).  The evening focused on a discussion of new features in Visual Basic and C# under .NET 2.0.  I handled the Visual Basic portion of the presentation, while my coworker Adam Calderon handled the new features in C# presentation.  Attached to this post are the slides that cover some of the new features in Visual Basic .NET. 

NewVBin2.pps (1.76 MB)

Following our presentations there was a brief open discussion regarding the choice of VB vs. C#.  The consensus was that most developers should learn both languages and that unlike the VB6 vs. C++ debate in COM that VB vx. C# really didn't offer a great deal of difference in productivity.  Each has some specific advantages, but nothing which should cause an organization to choose one over the other.

Saturday, August 05, 2006 1:51:40 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
.NET | Technology | Visual Basic
# Monday, July 31, 2006

I have to admit I'm a bit amazed at this and wonder how it fits with the stated goal of a Beta program.  Most companies that I know of deal with Beta software in one of two ways.  1. They only release the beta product to a subset of customers who are given first access to key new features while working through bugs and missing features.  This is usually contract based.  2. The beta is released to the widest possible user base who can voluntarily choose to participate.

Microsoft has quietly announced that as of this week they are going to charge the general public to download the Beta version of their current Office release.  The charge a $1.50 US is nominal but as far as I know is a first for downloaded beta software.  Why this is interesting is that it implies it costs Microsoft a $1.50 for each downloaded copy of their product (the charge is for 'cost recovery'). Of note however, the online 'Test Drive' of the software which would seem to require more system resources will remain free. Given my last Developer Update newsletter which dealt with how some systems are moving to a hosted model.  I'll end up covering this as part of my 'Glad You Asked' column in the newsletter this Friday.

To subscribe go to: http://www.sqlmag.com/email/

Monday, July 31, 2006 12:09:28 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
.NET | Musings
# Thursday, July 27, 2006

Almost a year ago I posted my second note regarding GUIDs and Databases.  That post is available here: http://blogs.interknowlogy.com/billsheldon/archive/2005/07/29/369.aspx but in the time since that post SQL Server has seen a new release and now we have SQL Server 2005 available and the SQL Team has added another wrinkle to the discussion.

In talking to one of my coworkers (Tim McCarthy) the other day he mentioned that he had run into a new SQL Function which would increment GUIDs, which is the reason for this post.  Now to briefly recap my previous posts one of the biggest disadvantages to using GUIDs is that people tend to figure that since they should remain unique they will make a good primary key.  Unfortunately the nature of a Primary Key is that it by default relies on a clustered index.  For those unfamiliar with indexes, a clustered index is an index in which entries are written to the disk in their sorted order so that lookups against it are very fast.  As such the fastest way to add entries to a clustered index is with the use of incremental values so that the system appends new entries to the end of the index.  This reduces the number of page splits which are far more expensive and occur when you insert items into the middle of the index.

Unfortunately by default GUIDs are randomly generated which results in new entries constantly being inserted into the middle of the clustered index.  I knew one company which got a new implementation of their database from an offshore company where all the indexes had been changed to GUIDs and as a result their new database couldn't even support 10% of their customer base.  Their short term solution, outside of rearchitecting the work, was to create a middle tier function which would sequentially generate those GUIDs to cut down on page splits.  (Long term they reduced the number of tables using GUIDs and generally cleaned up a mess of other problems - the GUIDs alone weren't the only issue.) However, if they had had SQL 2005 available then instead of needing several days to write and a custom solution they could simply have implemented the new "NewSequentialID()" function.  NewSequentialID does just what the name implies it creates a new GUID which is one greater then the last GUID created on that server.  Note that it is server sequential and not table sequential, for each table the guarantee is only that each new entry will be larger then the last.

More information on this new function is available at: http://msdn2.microsoft.com/en-us/library/ms189786.aspx

As noted in that function there are a couple of issues - for example using this function on you user table makes it possible to guess the internal identity of the next user, so if you are using the randomness of GUIDs as part of a security scheme that prevents easy guessing of other user id's this function isn't for you.

Additionally it limits one of the other claims for GUIDs which is that you can use them to make data portable between databases.  Since randomly generated GUIDs are (almost always) unique even though generated at the same time on different machines it is possible to transfer all of the data associated with a user's GUID into another database with minimal risk of collision. 

Of course these were the only two functions that made using a GUID a useful idea.  So don't see this as a function which will suddenly allow you to use GUIDs without a performance penalty.  Fact is int and bigint columns with an identity property will still be faster for your overall database.  Instead this function is there for all of you who already have that GUID primary key and now need a quick and easy solution to reduce it's impact on your overall database performance.

Thursday, July 27, 2006 10:35:42 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
.NET | SQL Server
# Wednesday, July 26, 2006

Every now and then someone passes me a book.  In some cases such as when I got my hands on the VSTO book from Addison Wesley its pure technical book.  In this case I was passed a copy of what I would call a "Business of Software" book.  The book in question is from Joel Spolsky's "Joel on Software": http://search.barnesandnoble.com/booksearch/isbninquiry.asp?z=y&pwb=1&ean=9781590593899  Yes it was released more then a year ago - which is usually an indication in the technical market that the book is out of date.  However, this book isn't about how to work with version X of Product Y.  It's a book that talks about things that people who work and in particular senior people who work in companies that build software need to know. 

Joel talks about everything from what a program manager's real role should be, to how testing saves money and along the way introduces some simple tests to see if your company is really good at creating and managing software.  He throws in things like why you shouldn't multi-task developers, and why you shouldn't do multi-person interviews but should instead have a candidate meet individually with multiple people.  The key being this book isn't about A software product - it's a guide to managing software projects.  In general if you are trying to run a software development organization (you don't have to be running your own company) you should read this book.

The book itself is a collection of edited essays which have almost all appeared in his blog.  The blog: http://www.joelonsoftware.com/ is still running strong and in fact one of his most recent posts fits well into the model of the type of essay in this book.  Reading this post the other night I was reminded of why I immediately recommended that our entire managment team (if not entire company) read this book.  http://www.joelonsoftware.com/items/2006/06/16.html  Of course the management team has other more generic MBA style books that they'll read but then as the MBA's know: Running a software company is no different from say selling Pepsi.

Wednesday, July 26, 2006 10:44:40 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
Musings
# Friday, July 21, 2006

This August I'll once again be teaching at the University of California San Diego (UCSD).  I've now got a couple semesters with the Visual Basic .NET Programming II class under my belt and so I'm more comfortable suggesting that folks come on down for the class.  The entire class is .NET 2.0 and focuses on the language and it's use in smart client applications.  If you are interested check out the registration pages from UCSD at: http://extension.ucsd.edu/studyarea/index.cfm?vCourse=CSE-40616

Friday, July 21, 2006 12:03:45 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
.NET | Visual Basic
# Thursday, July 13, 2006

For those who have attended one of my recent presentations on Visual Studio Team System and Scrum, I have uploaded my slides.  Hopefully you found the presentations helpful and will be able to better understand all of what goes into Team System (Team Suite and Team Foundation Server) and how you can leverage these tools in your organization to improve your project success.  As I note - Team System isn't about technology it's about the business of software and having the tools to be successful.

TeamSystemandScrumOverview.pps (2.3 MB)

Thursday, July 13, 2006 9:02:19 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
.NET | Team System | Technology

Just a quick note related to some of the work we do at InterKnowlogy.  Often when one of us is handling a public presentation we mention that we do cutting edge work.  Of course, I'm sure many of you think - "yeah, but everybody says that."  So as evidence that when one of us suggests that we do cutting edgw work and encourages you to feel free to send in a resume here is a little evidence...

http://channel9.msdn.com/Showpost.aspx?postid=213957

The Channel 9 video highlights our work with The Scripps Research Institute using Office Sharepoint Server 7 and Windows Presentation Foundation to create a smart client collaboration tool.  The client wraps Sharepoint's web service interfaces and allows researchers to associate annotations to complex molecular structures and in the course of cancer research to keep their annotations visually associated with these diagrams and images.  As part of this implementation it's still possible to use the browser based web interface to access the annotation data files, but the rich client's WPF capabilities support graphically linking the annotations with their source. That level of graphic support isn't currently possible with a web application.  The client simply leverages many of the web services which come with SharePoint out of the box (and a few that don't).

Thursday, July 13, 2006 8:51:08 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
.NET | Technology
# Saturday, June 24, 2006

So I've been sitting on this announcement a few weeks.  After all my wife hasn't done the traditional announcements and to be honest I'd rather not release exact dates and stuff on the web.  However, as noted in the title Version 5.0 has 'shipped'  more specifically this refers to the fact that my wife and I have been joined by our first child.

William Sheldon V (the fifth) was born recently weighing 7lbs 4oz and with length of 19.25 inches.  He is as you can see below happy and healthy.  Mom and baby have both been fine. So when you wonder why I wasn't at Tech Ed or have tried to cut back a bit on some of my public speaking - the little face below pretty much covers my reasoning.

Saturday, June 24, 2006 9:01:12 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
About the Nerd
# Monday, June 12, 2006

One of the things which will occur for certain developers is a need to be able to connect to both TFS and VSS from the same development PC.  This may occur as a company transitions from VSS to TFS or for consultants when you move from working with company A who is using TFS to company B who is not.

In my case I went from having been configured for TFS to needing to install VSS for a client.  Once I installed VSS, my ability to connect to TFS source control seemed to disappear. 

Both the VSS and Team Explorer clients can be installed on you machine.  However, you have to make a choice between which server side source control data store you will use.  To do this from within Visual Studio go to the Tools menu and select "Options..."  In the Options window select "Source Control"  from the list of areas for customization and you can go from there, as shown in the screen shot below:

Monday, June 12, 2006 9:33:07 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
.NET | Team System
# Sunday, June 11, 2006

While I'm on the subject of mountain biking.  This years mountain biking goal for those willing to take on a challenge is the equivalent of the Roadie climb up Mount Palomar - plan to be there:

http://www.mountainbikebill.com/NateHarrisonGrade.htm
Sunday, June 11, 2006 11:46:37 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] -
Cycling
Archive
<August 2006>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789
About the author/Disclaimer

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

© Copyright 2010
Bill Sheldon
Sign In
All Content © 2010, Bill Sheldon