Saturday, December 31, 2005

December 2005 - Delphi Launch wrap-up

We had a great turn out for our Delphi 2006 launch event in November 2005.  CompSys supplied pizza and soda for everyone and we met in the large training center at Washington Group International.

Anders Ohlsson from Borland came out to show us the latest version of Delphi 2006.

Anders Ohlsson

Click on this panorama thumbnail for a full size panorama of the room during the presentation.

Anders also gave away two copies of Borland Developer Studio 2006, which includes the 2006 editions of Delphi (Win32 & .NET), C# Builder, and C++ Builder.

Wayne Worthen made a lot of noise when he heard there was a contest since he never wins.  Boy was he  surprised when he found out that he won the Professional edition.

Wayne Worthen won

Since Wayne had never won anything before in his life, Anders upgraded him to the Enterprise edition.  He claims this is the first time he won anything in the 54 years of his life.  Now I guess it is official that he is no longer a looser.

The next winner was Chris Brandsma.

Chris Brandsma won

Chris is the lucky winner of the Architect edition, which comes with all the fancy bells and whistles!

Everyone else went home with a 25% discount coupon.

Cory Isakson, Chris Brandsma and Jason Mauer
Cory Isakson, Chris Brandsma and Jason Mauer

Dave Heron, James Evans and Randy Buchner
Dave Heron, James Evans and Randy Buchner

Mike McLemore, Wayne Worthen and Michael Cline
Mike McLemore, Wayne Worthen and Michael Cline

After the meeting a few of us stuck around to finish the pizza and soda during a rousing game of Robo Rally.

Late night Robo Rally.

Since Anders Ohlsson and Jason Mauer (Microsoft) were in from out of town they didn't mind staying to play. James Evans just wanted to see us play for a few minutes, but soon he was sucked in to playing as well. Rich Hundhausen and Chris Brandsma are Robo Rally vetrans so knew how much fun it would be.

Rich Hundhausen, Anders Ohlsson, James Evans, Jason Mauer and Chris Brandsma play late night Robo Rally.
Rich Hundhausen, Anders Ohlsson, James Evans, Jason Mauer and Chris Brandsma play late night Robo Rally.

Chris plans his move. . .
Chris plans his move. . .

Adners considers his options. . .
Adners considers his options. . .

James shuffles the cards. . .
James shuffles the cards. . .

Anders relaxes after a well played move. . .
Anders relaxes after a well played move. . .

Jason enjoys a drink between rounds. . .
Jason enjoys a drink between rounds. . .

Everyone had an excellent time playing the game. Hopefully this will be a regular feature at our future meetings.

Subject Tags: [] [] [] [] [] []

Wednesday, December 28, 2005

Free copy of Essential XML Quick Reference in PDF Format

Essential xml quick reference: a programmer's reference to xml, xpath, xslt, xml schema, soap, and more

We all work in XML any more. As Rich put it in the intro to our book "XML is as ubiquitous as Kevin Bacon" and as simple as it is, there is still a lot to remember, which is why I keep a handy reference.

I have the print version of this book, but I just downloaded the free PDF as well: Essential XML Quick Reference: A Programmer's Reference to XML, XPath, XSLT, XML Schema, SOAP, and More.

Get your free copy at www.theserverside.net!

As much as I love a free and electronic version, I still like having the print version around too and know I will continue to use it frequently.

Subject Tags: [] [] [] [] [] [] [] [] []

Tuesday, December 27, 2005

Better Usability = Greater Support Revenue

Ever hear the argument that a company that sells software and sells support are most likely making their software harder to use so they can sell more support? I've heard it applied to Open Source in general, and Linux specifically. Especially when the software is free, the major money is made in support, so their motivation is to generate support revenue by making it harder to use. It has been argued that this motivation is the reason Linux will not take over the desktop.

The thing about the logic is Linux would just need to be almost as easy to use as Windows to become a viable desktop alternative, since it is already cheaper and more secure. (This is assuming things like hardware and software support are covered.)

If you argue that Windows is easier to use then Linux today we only need to look at the fact there is far more money made today off supporting Windows then Linux, so I don't think there is any danger of companies providing support for Linux loosing business by making the program easier to use, thus attracting more users. I don't have any hard numbers, but I imagine more support revenue is generated per copy of windows installed then per copy of Linux installed.

In fact when we look at the real world we would see that these companies supporting Linux would want to make it even easier to use then Windows. Then we would see more large scale deployments of Linux, which is where the real support money is to be made. I seriously doubt Red Hat (or any other Linux supporting company) is looking to make much money off supporting a single end-user in using Linux. But once they convert all the single end-users then the corporations, schools, etc. are not far behind.

Now there may be some out there who are making their software more difficult to generate more support revenue, but they are the exception. Not only are they the exception, but they are in a loosing battle.

Subject Tags: [] [] [] [] [] [] [] [] []

Saturday, December 24, 2005

Merry Christmas 2005 and News

A quick Merry Christmas, Happy Hollidays or Bah Humbug to everyone - take your pick. A few announcements for what we have comming up in the new year. . . .

Our January 5th, 2006 meeting will be our Visual Studio 2005 launch event. We have 5+ copies of the Professional Edition of Visual Studio 2005 (with Sql & Biz Talk) to give away, as well as pizza and soda contributed by ComSys again. Come learn about Smart Clients / One Click, as well as some of then new language and IDE features. You don't want to miss this!

Also comming in 2006 is the Boise Code Camp. Check out the official blog for more information, and if you are interested in contributing let me know. More information is comming.

I sincerly hope you and yours have and had a wonderful holiday celebration. May you design well, compile successfully, write solid code and release on time. Merry Christmas!

Friday, December 23, 2005

NIST's Dictionary of Algorithms and Data Structures

NIST - National Institute of Standards and Technology

The National Institute of Standards and Technology (NIST) has a Dictionary of Algorithms and Data Structures for your online reference. Ench entry includes a definition. There is usually some cross referencing, additional information, and on occasion a link to an implementation (usually hosted off the NIST site).

In addition to Algorithms and Data Structures it also contains algorithmic techniques, archetypical problems, and related definitions. Quite a large collection and worth a look.

Please obseve the requirement "Don't use this site to cheat."

Subject Tags: [] [] [] [] [] [] [] []

Friday, December 16, 2005

Con Patterns

Con Patters are not anti-patterns, but patterns used by con-artists. Rich detailed some of them discussed in Ocean's Twelve.

This is exactly what Design Patterns provide, an agreed vocabulary of best practices to accomplish specific tasks. I remember when I started learning about design patterns, my response to a number of them were "I've been more or less doing this for years. So that is what it is called." As developers we have developed and been using these patterns for years, but we never knew what to call them.

Subject Tags: [] [] [] [] [] [] [] [] []

Thursday, December 15, 2005

O'Reilly Emerging Telephony Conference

January 24-26 in San Francisco when telephony's key figures, like Jim Van Meggelen, Peter Cochrane, Mark Spencer, Norman Lewis, and Clay Shirkey, convene to provide a high-level perspective of the future of telephony.

The O'Reilly Emerging Telephony Conference prepares you to ride the wave of disruption and improve your communications in unconventional ways through these new open technologies. From projects to products to players, ETel provides a map of the evolving telephony horizon and gives you the charts you need to navigate the new communications opportunities ahead.

The web and telephony are merging to offer a network with unprecedented potential, fuelled by open source contributions. From projects and products to players, ETel provides a map of the evolving telephony horizon and gives you the charts you need to navigate the new communications opportunities ahead.

Early Registration Pricing Ends January 9. Contact me for a 40% discount code when registering online.

Subject Tags: [] [] [] [] [] []

Wikipedia is as accurate as Britannica

Since we have referenced Wikipedia a few times, and it is a great example of Open Source development (being licensed under the GPL) I thought this was interesting. Advocates of Open Source argue that many eyes and many hands catches more bugs. While detractors say that with no barrier to entry you end up with unqualified contributors. This is especially tough for Wikipedia since anyone with a web browser can change articles and have their changes published immediately. Well, Nature decided to settle the argument by doing a peer review comparison between Wikipedia and Britannica articles on various scientific subjects.

CNN is reporting on Nature's report

The results: the free and amateur built Wikipedia is as accurate as the commercial and professionally built Britannica.

Based on 42 articles on science reviewed by experts where the experts didn't know if the article came from Wikipedia or Britannica. The result was that Wikipedia had on average 4 errors or omissions while Britannica had 3. In some articles Wikipedia had less then Britannica. On average though the Wikipedia articles were longer and covered more material. If you take the length into account then they were close to the same.

Subject Tags: [] [] [] [] [] [] []

Tuesday, December 06, 2005

Delphi Feeds

The site Delphi Feeds is a web based aggregator of blogs related to Delphi. All they need now is an RSS feed of their own!

Update: They just added an RSS feed and an OPML directory.

Subject Tags: [] [] [] [] [] []

Monday, December 05, 2005

Book Nomination: My Job Went to India

A hot topic in our group, and I am sure most other software developer groups, is how to compete with overseas outsourcing. We discussed the book My Job Went to India by Chad Fowler a while back on our discussion list, but that was before it was released. It is released now, and we are of course discussing overseas outsourcing again. We are considering reading the book as a group. Thoughts?

There are other books on the subject, but Mike recommended this one, and I like the Pragmatic Programmer series. Plus it is a great title!

Subject Tags: [] [] [] [] [] [] [] [] [] []

Sunday, December 04, 2005

Competing With Overseas Outsourcing

In your user's group discussion list we were discussion how to compete with overseas outsourcing as a software developer. Michael Cline proposed the following question and list of possibilities. I responded to each suggestion with my take on it (Michael's comments are in italics.)

. . . what do Boise Idaho developers do on an individual level?

--Increase our education?

Yes, by all means. Be strategic in what you learn. It isn't all about just picking up another programming language. Many times developers lack in some social skills, so it would be a good idea to learn in that area as well. Learn methodologies and learn the domains in which you create your programs.
--Become solution architects instead of developers?

Maybe. Is that what you want to do? I think it is important to be able to see the big picture, but don't give up what you are good at and what you love. Maybe when you try solution architecting you might like it.

--Be willing to work for lower wages?

Actually I would say no. If we start to compete on price then we will loose. We simply cannot survive on a wage competitive with Indian programmers. Once we start lowering our prices then we become Walmart and we only get hired as long as we are cheapest. As soon as someone else in town lowers their price, or your customer gets the nerve to go over seas then you loose your contract. Be expensive and be worth it.

--Find an economic niche that is not likely to copied by others?

Great idea. Make a really tight niche and your demand goes up. And if your demand is high, then so are your prices. Of course be sure there is a demand for your niche.

--Become an expert in a specific area?

Same as above. Find one thing you do well and do it better then anyone else. Did I mention that you will need to make sure everyone knows you are an expert in that subject? Doesn't do anyone any good if no one knows you are the worlds best multi-threaded game programmer in COBOL. Start a blog and tell the world.

--Make more significant efforts to learn the businesses of our clients so that we know them better than anyone else can?

This is where being local really rocks. If you know their business better then anyone else then price isn't an issue any more. When they take into consideration the cost of training some really talented Indian programmers in all the fine details of their business then you are all of a sudden a lot more affordable. Since you are local, and just keep showing up and taking them out to lunch and such, they never bother looking elsewhere.

--Change occupations?

Always an option, but frankly most left brain professions are in the same boat. The service industry has a high demand I hear. Frankly if you are not following your passion you are not serving anyone. If your passion really is burger flipping then change industries. Chances are if you are not happy in what you are doing then you are not as effective as your could be. Find a occupation you enjoy, then excel at it.

Subject Tags: [] [] [] [] [] [] []

Thursday, December 01, 2005

Delphi 2006 Road Show

For everyone coming to the Delphi 2006 Road Show tonight you will want to meet at the central entrance we usually meet at, as described.

The meeting will start at 7PM with pizza, soda and ice cream. Afterwards we will be playing Robo Rally for anyone who is interested.

Jason Mauer from Microsoft will also be in attendance to discuss the Boise Code Camp.

Subject Tags: [] [] [] [] [] [] [] [] [] [] []

Tuesday, November 29, 2005

VS2005 Launch Event

I just got back from the VS2005 Launch Event at Edwards Theater in Boise. A very large turn out and a great presentation. I only attended the VS2005 event, but I hear the SQL Server portion was good too. Anand Iyer "AI" was the presenter and he gave me an opportunity to announce our group meetings and our up coming Delphi 2006 Road Show (Thursday, December 1st at 7 PM) and VS2005 Launch (Thursday, January 5th at 7 PM) meetings. I don't have a post up for the VS2005 launch yet, but either subscribe to the email or the RSS feed and you will be the first to find out about it.

Also on the horizon is the Boise Code Camp. Again there is no final information yet, but there will be soon. Check back later. We are looking for the ideal venue, so if you know of some place please let me know.

Our meetings are the 1st Thursday of the month at 7 PM. We are meeting at the Washington Group building. I am working on streamlining the entrace process, so check back tomorrow evening for more information on that.

Thanks and I look forward to seeing you all there!

Subject Tags: [] [] [] [] [] [] [] [] [] [] []

Saturday, November 26, 2005

Dilbert Gets Real

I get the feeling that Dilbert will continue to get more closely related to the real world. Scott Adams has started the Dilbert Blog. I've been following it. He is funny and has some really insightful posts. Today he solicited some reader feedback to come up with the following line:

"Our web services empty XML, SOAP and WSDL to achieve interoperable HTTP modules."
We will all see how Scott will make that funny (even to non-programmers) on 2/4/06.

Subject Tags: [] [] [] [] [] [] [] [] []

Friday, November 18, 2005

Delphi 2006 Roadshow in Boise

Introducing Delphi 2006

The amazing Anders Olsson of Borland will be back in Boise to show us the latest multipersonality, high-productivity Borland Developer Studio 2006 supporting

  • Delphi for .net
  • Delphi for Win32
  • C++Builder for Win32
  • C#Builder for .net

With it Delphi is code compatible between Win32 and .Net. It has complete support for the .Net framework, including ASP.NET and ADO.NET. You also get all the add-ons from Borland including VCL.NET and BDP.NET.

This new version is faster and more stable then 2005 version, plus comes with a bevy of new productivity enhancing features, including live templates. I am really looking forward to these as they look to really increase productivity. Also all the productivity enhancements are fully supported in each of the personalities!

It also contains Together and ECO III, which represent the next generation of software development. There are too many features to list here!

Come to our next meeting this Thursday, December 1st, at 7 PM at the Washington Group Plaza location. There will be pizza and soda curtsey of ComSys and Anders will have a big box of swag including at least 2 FREE copies of Delphi 2006. There are also 25% discounts for everyone else! You must be present to win and eat pizza!

Subject Tags: [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []

Tuesday, November 15, 2005

Free Delphi Programming Resources

Matt just sent me a link to a great collection of Free Delphi Programming Resources by FreeByte. They also have programming resources for other languages as well as other general free resources. Looks like a good site to bookmark.

For Free Delphi stuff I usually consult Chuck Robert's Free Delphi Component List (conveniently mirrored here). For free software in generally I either hit SourceForge.net / FreshMeat.net or PricelessWare.org, which is due for its 2005 update anytime now. If you are specifically looking for an older version of a free program check out OldVersion.com.

For a list of great developer tools (not necessarily free) you can consult Scott Hanselman's 2005 Ultimate Developer and Power Users Tool List (That is a mouthful!)

Update: Thanks to Desi for suggesting OldApps.com, which is very similar to OldVersion.com

Subject Tags: [] [] [] [] [] [] [] [] [] [] [] []

MSDN Subscription

Finally got our MSDN subscriptions at work. I have the MSDN Premium VS2005 Team Edition for Software Devlopers subscription. Very exciting! We were able to get the MSDN Universal subscription with the transfer. With all the interest in VS2005 the process took longer then expected.

When installing VS2005 it gave me an error that it didn't have permission to create the directory C:\Config.Msi. I opened explorer and created it for it and then it was happy. I'll be downloading and installing for a while to get everything else installed.

Subject Tags: [] [] [] [] [] [] [] [] [] [] []

Tuesday, November 08, 2005

Free Training From Construx for Boise Companies

If you work at a company with a good sized collection of software developers in Boise or the surrounding area, and would enjoy some free training then you might be interested in this. I know I am.

The offer is as follows:

Construx, best selling author Steve McConnell's (author of Code Complete, Rapid Development, Software Project Survival Guide and Professional Software Development) firm would like to offer some complimentary seminar seats to our public seminars to the software folks in Boise.

This is not a gimmick of any kind and there are no "strings' attached to this offer.

One of the best ways for firms to determine if our seminars are in proper alignment with their internal training efforts is to send one of two people to evaluate our classes in anticipation of eventually bringing them on-site.

I am the local contact for this, so let me know if you are interested and I will put you in touch. This is a great opportunity, don't miss out.

Subject Tags: [] [] [] [] [] []

Monday, November 07, 2005

Get Visual Studio.NET Express

OK, today Visual Studio.NET 2005 was officially released.

Along with that, the express products were also set free. Free as in: free to download.

http://msdn.microsoft.com/vstudio/express/

This includes versions for C#, VB.NET, C++, Web Development, and SQL Server.

They are not in the same class as the professional version, but the price is hard to pass up.

[Thanks Chris]

Update: Act fast! It is only free until November 6th, 2006.

Subject Tags: [] [] [] [] [] [] [] []

Wednesday, November 02, 2005

Sony and DRM RootKit

Check out the excellent post by Mark Russinovich about Sony, Rootkits and Digital Rights Management Gone Too Far! This is scary stuff. Especially considering that the DMCA (Digital Milinimum Copyright Act) could make Mark's actions and post illegal.

Subject Tags: [] [] [] [] [] [] []

Sealed Class Count in .NET 2.0

There was a lot of discussion and feedback from my previous post about sealed classes. My good friend Steve Borg questioned what the sealed class count would be if I extended my search. Thanks to Reflector and Reflector.FileDisassembler I was able to get a count of all public sealed classes in main part .NET 2.0 (v2.0.50727 final downloaded from Microsoft). The previous count was also only the beta of .Net 2.0. This is a listing of the main parts of the framework, broken down by namespace. Sealed is classes marked as "public sealed class" and open is classes marked as "public class".

  • mscorlib: 60% Sealed
    • Sealed: 385
    • Open: 249
  • System: 30% Sealed
    • Sealed: 167
    • Open: 390
  • System.Data: 69% Sealed
    • Sealed: 120
    • Open: 53
  • System.Drawing: 53% Sealed
    • Sealed: 62
    • Open: 54
  • System.Web: 49% Sealed
    • Sealed: 353
    • Open: 364
  • System.Windows.Forms: 14% Sealed
    • Sealed: 84
    • Open: 499
  • System.Xml: 13% Sealed
    • Sealed: 22
    • Open: 147
  • Total: 40% Sealed
    • Sealed: 1193
    • Open: 1786

System.Data is the worst culprit with 69% of public classes being sealed. System.Xml is the most open to extensibility with only 13% sealed.

I also ran Security and got:

  • Security: 59% Sealed
    • Sealed: 40
    • Open: 27

But I didn't include it in the above stats for two reasons:

  1. Security is sealed for a different, although questionable in my opinion, reason.
  2. I don't consider it part of the main part of the framework.

Verdict: Even with the relatively open and large System.Windows.Forms and System.Xml the .Net framework is still close to half sealed. Now where I can see Sealed may have its place, I still think Microsoft over used it in the .Net framework. If they were really concerned about user extensibility they would have created an unsealed version of most classes.

Subject Tags: [] [] [] [] [] [] [] [] [] [] [] []

Tuesday, November 01, 2005

Technical Training and PowerPoint

Nick Hodges was asking for input on if he should use bother with a PowerPoint presentation in his DevCon presentation.

What I have always heard from those who's opinions I value is "Never use PowerPoint for text. Use if for pictures or diagrams, but not text. And by all means don't read it!" If you want to give them a take home then write a paper including the diagrams and pictures.

I would say use PowerPoint for an intro (name, course name, course number, email, etc.) and a wrap-up (with contact information and where to find more resources), but beyond that avoid text on slides. The only exception I can think of is to introduce a topic on a slide.

Hard advice to follow sometimes, but I think it is best when you do.

I think this is a good template:

  • Explain a problem / challenge - ideally present it as a question
    • How Many Of You have ever had to deal with XYZ?
  • Explain a solution (that you are going to show them)
  • Show how it solves the problem (the demo)
  • Explain and show the key code behind the demo
  • Make a small change in the code
  • Show them how it changed the demo
  • Ask the audience a question - be sure you are specific about the answer you want:
    • How they might use this in a different way
    • How they would make the demo do something else
    • How to customize something
    • etc.
  • Take their answers with a "Thank-you" and a "That might work" or "Interesting"
    • Never say anything like "No" or laugh.
  • If you feel ambitious try their suggestions - "Let's try that"
  • If no-one comes up with the answer then show them.
  • Give a round of applause to everyone who offered an answer
  • Ask if there are any questions about what you just covered.
  • When someone asks a question always say "Good question."
  • After you answer it say "Does that answer your question?"
  • After taking questions give a round of applause for everyone who asked questions.
  • Repeat
By starting with the problem as a question you hook everyone to see what the solution is. When you show the example first then they know what the code is going to do. Then when you change it you show them how it is all connected. When you ask a question you force them to internalize what you showed them and think about it. Finally you ask for questions. By asking for questions after each segment you make sure no one gets left behind.

Subject Tags: [] [] [] [] [] [] [] []

Monday, October 31, 2005

New MSDN Prices and Packages Available

Microsoft has their new MSDN Prices and Packages available. I am sure you will be able to get them "real soon now" probably November 7th.

The way they break it down is interesting. You can get either MSDN or MSDN with Visual Studio 2005. The plain MSDN comes in two flavors: With Operating Systems ($700) and Without ($100). Both come with the MSDN Library (same thing available Online at msdn.microsoft.com).

The next levels all include Visual Studio 2005. It comes in three flavors: Team Suite which includes everything for $10K, Role Based for $5,500 (comes with one specific role flavor) and Professional. To make things interesting Professional comes in both Professional Professional and Professional Premium. Premium comes with Visual Source Safe 2005, SQL Server and Reporting, productivity Applications and stuff like that. Professional Professional just includes VS 2005.

If you are a current MSDN subscriber at the Universal, Enterprise or Professional level then you will get transitioned into one of the other packages. Universal has a choice of 3 levels to move to.

Subject Tags: [] [] [] [] []

Friday, October 28, 2005

Creating Passionate Users

I just created a post about being passionate that was inspired by Creating Passionate Users on my Blogging Blog. Creating Passionate Users is a blog by the author several of the "Head First" books from O'Reilly. It is a great blog discussion designing software so your users are passionate. Good posts about user interfaces.

Subject Tags: [] [] [] [] [] [] [] [] []

Wednesday, October 26, 2005

Do Sealed Classes Terminate Innovation?

Update: I accidently published an old draft of this. Sorry about that.

One thing that gets a lot of debate in .NET is Sealed Classes.

Nick Hodges just posted More on Sealed Classes. He says they are "irritating and silly". Do sealed classes serve a purpose beyond annoying developers? How much of the .NET Framework is sealed? Is the sealing justified?

In object orientated programming (OOP) a developer can extend a class created by another developer adding additional functionality. This functionality can be to create a more specialized version of the class, or to add more generally useful functionality that the original developer didn't think of. Either way, this ability to reuse and extend is a great advantage of OOP. There are things a developer can do to make it easier to extend their base class, like declaring a method virtual to allow future versions to override that behavior.

This functionality of OOP is actually similar to what has been going on in botany and agriculture for ages. Seeds are planted, and when the plants come to maturity they produce new seeds. The seeds of the best plants are then taken and replanted. This selection of only the best plants by the farmer / botanist is similar to a programmer extending a class, except it is done through natural genetic variations. The farmer just chooses which of the variations is most desirable and re-uses those seeds. You see the same thing in animal husbandry too.

Along comes .NET with its sealed class. When a class is sealed then future developers are prevented from extending the base class defined by the original developer. So if a developer wants to create a more specialized version of a class, or add functionality not conceived of by the original developer they are out of luck. Instead they must recreate all the original functionality of that base class, or create a helper class which performs the new functionality on the base class. Both options are less then optimal.

Unfortunately many of the classes in the .NET framework are sealed. Just within the System namespace and mscorlib assembly (the main part of .NET CLR) there are well over 300 sealed classes. (If someone else has better data please let me know!) That is compared to just over 450 public classes. Almost half (40%) of the classes are sealed. Many developers complained about all the sealed classes. It seemed like every time a developer wanted to extend a class they only discovered it was sealed.

Again we can compare this to field of botany. Monsanto is a company that makes specialized and engineered seeds. They were researching what they called the "terminator gene." Any seed that contained this gene would grow a plant like normal, but any seeds that plant produced would be sterile and would not grow. This would prevent any farmers from leveraging their crop for future crops. When the public discovered their plans there was a huge outrage. In India, where Monsanto was testing crops, the local villagers would sneak onto the field and burn the entire crop. Eventually Monsanto announced that they would not include the terminator gene.

Many developers complained about the sealed classes. It was hoped that Microsoft would feel the pain of the developer community and unseal many of the classes in the .NET 2.0 release. Unfortunately the number of public sealed classes jumped to well over 500 in .NET 2.0 (Beta 2). When we compare this to the number of public classes we see the gap narrowing as there are only just over 600 of those. Putting sealed public classes at 45%, an approximate 5% increase over .NET 1.1. So instead of improving the situation things only got worse.

Buy The C# Programming Language from Amazon.comSo why would Microsoft want to seal their classes and stifle the ability of developers to innovate and leverage the the framework? Consulting The C# Programming Language by Anders Hejlsberg, Scott Wiltamuth and Peter Golde (Anders lead the team to develop C#) it says the following about Sealed Classes (page 275):

10.1.1.2 Sealed Classes

The sealed modifier is used to prevent derivation from a class. [. . .]

The sealed modifier is primarily used to prevent unintended derivation, but it also enables certain run-time optimizations. In particular, because a sealed class is known to never have any derived classes, it is possible to transform virtual function member invocations on sealed class instances to nonvirtual invocations.

So sealing a class can provide some performance enhancements when a class has a number of virtual methods. It would seem if that is the case then a well designed framework would have a sealed version of classes that did not introduce any functionality over the non-sealed ancestor, but only provided a sealed version for speed. Then future developers could leverage all the functionality by descending from the non-sealed ancestor, later creating a sealed version of their derived class for the speed improvement.

This would be similar to how Borland designed the VCL. There is a "Custom" version of each control. The Custom version has all the properties as protected. Then there is a version that descends from the Custom version that only publishes the necessary properties. Then if someone wants to expand on the control they simple descend from the Custom version and they can then choose which properties to make public (this is significant since it is a hack to un-publish a published property, and you cannot move something to a lower visibility level (e.g., move from Public to Protected).

Buy Framework Design Guidelines from Amazon.comI wonder what advice Krzysztof Cwalina and Brad Abrams (who are involved with the internal .Net framework design at Microsoft) have to say about the use of sealed classes. If we look in their book Framework Design Guidelines under the section on sealed classes (6.4 on page 174 - 177) we see the following:

DO NOT seal classes without having a good reason to do so.

Sealing a class because you cannot think of an extensibility scenario is not a good idea. [. . .]

Good reasons for sealing a class include the following:

  • The class is a static class. [. . .]
  • The class stores security-sensitive secrets in inherited protected members.
  • The class inherits many virtual members and the cost of sealing them individually would outweigh the benefits of leaving the class unsealed.
  • The class is an attribute [. . .]

In the book Brad also points out the advantages of an open and customizable framework over the Win32API where there is no ability to extend an API call. In a discussion on Designing .NET Framework Class Libraries Krzysztof also said "The general guidelines say not to seal types but rather try to seal individual (all) methods."

Brad also published portions of the internal Design Guidelines document to his blog, where it says the following:

FxCop Rule (draft): Flag non-sealed public types that introduce virtual members with the message: "Virtual members represent points of specialization in your type. Great care should be taken in exposing virtual members, please see the design guidelines document on this topic and fully consider the ramifications."

It goes on to basically to encourage sealing to prevent extensibility. So it encourages a non-extensible framework. This seems to fly in the face of the advice given in the book that says "Sealing a class because you cannot think of an extensibility scenario is not a good idea."

Monsanto claimed similar reasons to include the terminator gene. If one of their genetically modified strains was to cross with another strain then the results could be undesirable and at least unexpected. By ensuring that all genetically modified plants cannot reproduce then they eliminate this possibility. The other reason was that it protected the intellectual property of the companies engineering improved seeds. By protecting their intellectual property it would encourage greater innovation which benefits everyone.

Since Microsoft did not adopt the obvious course of action of only sealing classes that do not introduce new functionality therefore providing the speed boost of a sealed class without the restriction then we must assume speed was not their primary motivator. Should we then assume that it was for security? Is this part of their move to more secure code?

My opinion is that Microsoft sealed classes because they could, and not because it was a good idea.

Subject Tags: [] [] [] [] [] [] []

Tuesday, October 25, 2005

PDC Courses Online

For some reason Chris got notified about this before I did, and I was at PDC. It would appear that the streaming sessions are online. This is great news since a lot of the sessions I was in the overflow for the overflow, and by the time I got there I missed a lot of the session.

Scoble says there are 500 hours worth. I might need some time here. Since they are available for 6 months (from when I am not sure) you will need to spend about 20 hours a week, assuming you have not already fallen behind.

Bad news is you will need IE to view it.

Subject Tags: [] [] [] [] [] []

Monday, October 24, 2005

MySQL 5.0 is available

MySQL 5.0 delivers dozens of new enterprise features, including:

  • Stored Procedures and SQL Functions -- to embed business logic in the database and improve performance;
  • Triggers -- to enforce complex business rules at the database level;
  • Views -- to ensure protection of sensitive information;
  • Cursors -- to allow easier database development and reference of large datasets;
  • Information Schema -- to provide easy access to metadata;
  • XA Distributed Transactions -- supports complex transactions across multiple databases in heterogeneous environments;
  • SQL Mode -- provides server-enforced data integrity for new and existing data;
  • New Federated and Archive Storage Engines -- MySQL's unique pluggable storage engine architecture allows greater flexibility, functionality and performance by making it easy to swap database engines in and out, based on users' application requirements;
  • New Migration Toolkit -- A new graphical toolkit that completely migrates all data and objects from Oracle, Microsoft SQL Server, Microsoft Access and other database platforms to MySQL;
  • Instance Manager -- new management assistant that allows remote starting/stopping of any MySQL Server, as well as remote editing of configuration files, reading of error and query logs, and more;
  • Updated Connectors and Visual Tools -- new high-performance versions of MySQL's ODBC, Java and .NET database drivers are now available, along with updated versions of the MySQL Query Browser and MySQL Administrator.

Subject Tags: [] [] []

Wednesday, October 19, 2005

Looking for a Laptop

I've decided I would like something more mobile then my PC and more powerful then my PDA. A laptop would be a good solution. It would be nice to have one to regularly have ready for meeting presentations. Currently I spend a lot of time preparing whatever machine I am able to get (usually the floater laptop from work, when it is available) for the presentation.

Does anyone have a laptop they would be willing to part with cheaply or in exchange for something else? Or maybe you have a lead on a good source for such laptops.

Maybe even a really high end PDA might work. . . . Open to suggestions.

Subject Tag:: []

Monday, October 17, 2005

Microsoft Breaks Internet Explorer

I just reinstalled my computer at work trying to fix Internet Explorer. The trouble I was having was that I couldn't run any active content in IE - no ActiveX, no plugins, etc. Since I use FireFox as my default browser that wouldn't seem like that big of a deal, but a lot of features of windows actually use an ActiveX control inside IE (for example System Restore). It all started shortly after applying the latest patches from Microsoft last week, and that is what I thought caused it, but I guess I was looking in the wrong places since I didn't see that there is a known issue about these patches. Not sure how the permissions on my Windows directory got changed but that is what they are blaming it on. The symptoms seem a little different and I didn't use their solution, but I suspect the reinstall fixed it.

Subject: 's 's and (including )

Wednesday, October 12, 2005

VMWare Unable to Get Online

Well, I finally got around to upgrading from VMWare 4.5 to VMWare 5. It is a great pacakge with lots of fabulous new features! After upgrading my virtual machine images and VMWare Tools for the new version I thought I would check for Windows updates. It has been a long time since I used VMWare at home, so I figured there would be a lot of updates.

For some odd reason it couldn't get online. I had an ipaddress. All the network settings checked out. I could ping my gateway, I could ping my host machine, I could even ping remote web sites. I even tried to telnet on port 80 to a remote website and that couldn't connect (thus eliminating Internet Explorer as the cause). I setup a quick tiny web server on my local machine and I couldn't hit it either. I was able to open a windows share on the host machine though. This was starting to get weird. I had gone over every setting multiple times. Finally I decided to try disabling my firewall, and that was what it took.

I've never had trouble with my firewally and VMWare in the past and I have been using VMWare since version 3 (or round about,) and I am fairly sure I have used it with Kerio Personal Firewall too. I started going through all the firewall settings to figure out what the problem was. It never popped up saying it intercepted a connection attempt. I checked and VMware.exe had full online privilages.

I finally found an option to allow my computer to act as a gateway. It was unenabled. That would seem like a logical cause. When I attempted to enable it Kerio informed me that that feature was not available in the free version I was using, and I needed to upgrade to the full version.

What a bummer. I've used Kerio Free for a long time (since back when it was still part of Tiny). I know I have used Kerio with VMWare before, and I cannot imagine the VMWare 5 version changed the way networking works that significantly so I can only assume that Kerio has tightened up its restrictions. Being tight is good, but inflexible is bad.

I really like having an application firewall that allows me to block certain applications from connecting out. Kerio has been my favorite, even though a bug in a beta version (I know, it was a beta) caused Delphi to crash when debugging (something to do with code injection). Looks like I will be using the less functional Windows Firewall for a while, at least until I find a new firewall I like.

So for those of you keeping score at home, the final score is:

  • Delphi: 1
  • VMWare: 1
  • Kerio: -2 (Since it caused what appeared to be issues with the other two).

Tags: [] [] [] [] [] [] [] []

Saturday, October 08, 2005

Feed moved to Feedburner

I discovered the Blogger is not formatting my newsfeed correctly. I've been looking at FeedBurner for a while now. They provide a free service that enhances news feeds. I ran my news feed through it and discovered it fixed all my complaints.

If you are using the old ATOM feed you will want to switch your subscription to the new feed location. I will switch the Atom feed off in a while, so be sure you make the transition.

Update: It isn't necessary to change your settings now. I put in an .htaccess entry to redirect the feed to FeedBurner. Too bad I didn't think of that earlier.

Friday, October 07, 2005

Project Management Resources

Columbia University has a Project Mamanagement Resource Center. It is project management in general, so some parts of it is more related to Software Project Management then other parts.

Tags: [] [] [] []

MS VS & SQL 2005 Launch Event and Free Software

Attend Microsoft's Best of Visual Studio 2005 Launch or Best of SQL Server 2005 Launch to receive a free copy of Visual Studio 2005 Standard Edition and SQL Server 2005 Standard Edition. These are not for resale copies so if you don't know what it is, don't sign up.

You won't just learn about the new software, you will walk away with it.

There will be an event in Boise on the 29th of November. It is a half day event, with SQL Server in the morning and Visual Studio in the afternoon.

Update: What I originally read said VS2005 Professional, but the site now says Standard. I am looking into this.

Tags: [], [] [] [] [] [] & [] [] [] [] ([] [])

Thursday, October 06, 2005

Chris' Recommended Source Control

Chris recommended Vault from SourceGear. I really enjoy Eric's blog and have heard good things.

Also recommended are SubVersion and CVS, both are Open Source and you can get support on them too.

It would also appear Microsoft is updating SourceSafe. I was under the impression it was going to be replaced by Team System.

Tags: [] [] [] [] []

Coding Horror

Coding Horror

One of the best software development blogs I regularly read is Coding Horror. Jeff Atwood is really reliable to have a new and interesting post every weekday. I love the fact that not only are his posts thought provoking and well researched, but he tends to post on other non-programming related topics that are also of interest to most developers. He had a great post on BattleField 2 when the demo first came out.

He always links to lots of great resources. Recently he had a link to a utility to allow you to change your Windows XP boot screen to look like Windows 3.11 (or anything else). Also his post about Task Manager is worth reading, especially the extension.

In case you are curious, he actually got permission from Steven C. McConnell to use the graphic from Code Complete. When I first discovered the Blog I was expecting something like Daily WTF or UI Hall of Shame because of the name. Turns out to be something delightfully different.

Tags: [] [] [] [] [] []

Sybase DataWindow .NET

In September we had a very interesting presentation on Sybase DataWindow .NET. This is a neat .NET component. It is actually originally from PowerBuilder, which Sybase aquired. They then extracted the DataWindow feature and made it into a .NET control. It is literally a Window on your Data. It provides grid, graphing and reporting functionality. It is both an edit window and a printable report window.

If you want to see the posibilities of what you can do with DataWindow, or you want to take your DataWindow.NET based application to the next level then check out DataWindow Extreme. They take the DataWindow in new directions, which is a great example of how flexible it is. You know something is truely flexible when the end users can use it in ways the original developer never dreamed.

Also check out InfoMaker, which is basically an end user version of DataWindow. There are new versions of both coming out with major feature upgrades.

If you are not doing .NET development remember you can access any .NET assembly as a COM object and use it in your Win32 (or whatever) application.

Tags: [] [] [] [] [] [] [] []

Wednesday, October 05, 2005

TV for Geeks and Nerds

"I'm not really a TV host, but I play one on the internet. . . "

Bandwidth must be getting really cheap. With services like PutFile, Google Video, and Our Media, anyone can find free hosting for their video. Now you too can have your own TV show, which a lot of people are now doing, and many are even hosting it themselves.

Robert X. Cringely has launched NerdTV, which is a weekly technology TV show for geeks. It is an hour long interview, or a Charlie Rose for Geeks. Looks promising to see Cringely involved and it is backed and hosted by PBS and licensed under the Creative Commons license.

It kind of reminds me of Systm by Revision3 (At least that is who they are this week). Systm is also a downloadable TV show on technology, but it has more of an underworld feel to it. I am surprised how well it is done. Very high quality and great content. They also have a few other shows they do, all technology related. They also had a really interesting interview with Kevin Mitnick.

I never saw TechTV, but these all look like the kinds of shows you might see on there, if not a little more gritty and less "mainstream." Scary thought. . .

Tags: [] [] [] [] [] [] []

Friday, September 30, 2005

Review of Serenity

I just put up a review of Serenity. I might add more later, but it is late and I am tired.

Tags: [] [] []

Delphi Ares P2P is #5 project on SourceForge

I was reading through my September 2005 Sourceforge.net site update and noticed that Ares P2P, written in Delphi, is the #5 project on the site. Delphi is also the 10th most popular programming language on the site, with 1885 projects written in Delphi or Kylix (does not include the 349 written in Pascal or the 274 in Object Pascal).

The 20 most popular langauges on SourceForge.net by number of projects are:

  1. 16,338 - C++
  2. 16,163 - Java
  3. 15,587 - C
  4. 11,762 - PHP
  5. 6,104 - Perl
  6. 4,371 - Python
  7. 2,745 - C#
  8. 2,616 - JavaScript
  9. 2,156 - Visual Basic
  10. 1,885 - Delphi/Kylix
  11. 1,802 - Unix Shell
  12. 1589 - Assembly
  13. 1124 - PL/SQL
  14. 898 - Tcl
  15. 723 - Objective C
  16. 550 - ASP
  17. 376 - Ruby
  18. 349 - Pascal
  19. 318 - Lisp
  20. 274 - Object Pascal

There are a total of 90,417 projects on SourceForget.net, written in 72 different languages. Oberon is a langauge choice, but there are currently no projects for that langauge. There are however 4 for COBOL, 7 for MUMPS and 24 for D.

Update: Ares is now the #3 top downloaded project.

Tags: [] [] [] [] [] [] []

Migrating from .NET 1.1 to .NET 2.0

At PDC I recieved a copy of VS2005 RC1 along with .NET 2.0. We discussed devoping our next application at work in .NET 2.0 since it is due out any day nowTM. Our primary third party component vendor had a booth at PDC too, so I asked me if they were .NET 2.0 ready. They said they were really close, and commited to being 100% within 30 days of actual release, any day nowTM. I figured I would see if I could port our prototype over. The result was successful. This is what I had to do:

  • Built in conversion wizard when you open a VS2003 solution / project converts to VS2005.
    • Required checking the files out of source control so they could be modified.
    • Not very tricky, pretty straight forward.
  • Removed unused references to other 3rd party assemblies.
  • Set all references to the same version of the 3rd party assemblies and .NET framework.
    • Before this was done it resulted in some confusing runtime errors about not being able to cast something to the original type (this is because it was the same type from two different versions of the assembly.)
  • Updated references to obsolte methods
    • Each obsolte method was flagged with a warning which specified which method to use instead. The latter was a very useful feature.
  • Some of the namespaces for the datasets needed to be adjusted to include the subdirectory the dataset was in.
    • Pretty straight forward once I figured out what it was referring too. Not sure why it worked before in VS2003.

Overall it was a fairly simple process. I didn't get a chance to use VS2005 much yet, but the one HUGE anoying bug or missing / changed feature was that chaning which file you were editing didn't update the location in the solution explorer. This resulted in manually hunting for the files in the solution explorer, which waisted a lot of time and was very frustrating. VS2003 has that feature, so I am not sure why they removed it from VS2005. Hopefully they fix that bug in time for release.

Tags: [] [] [] [] [] [] []