Entries from May 2004 ↓

Off to Microsoft TechEd San Diego 2004

Well, I’m off tomorrow morning to San Diego for Microsoft TechEd San Diego  May 2004 tomorrow to meet with some vendors and partners, and to say hello to old friends and new. San Diego is one of my favorite cities in the world, so I’m sure I’ll have a great time just being there.  However, I doubt I’ll have the time or energy to update my blog while I’m there (I’ll be a Mission Beach instead….I wish!)

Also, I’d love to meet any .NET bloggers who will be at the show.  If you get this and will be at the show, track me down on my cell phone at (redacted ;-).  I’m taking my video camera with me, so I’m looking to use up some film on some good stories. :-)

An honest history of Xtras, plus a glimpse of what’s to come

This past March my company Xtras, Inc. had its ten (10) year birthday. We’ve come to a crossroads of sorts and I thought it would be a good time to document those past ten years, and provide a glimpse of our future.  I’ll do my best to describe things as I remember them, but I’ll leave out details that are too complicated or that I’m contractually obligated not to disclose.

I’m a developer, always have been, and always will be. Prior to Xtras for almost ten years I taught developers to program in a tool called Clipper which was a dBase compiler running on DOS. When Clipper training started dying, I became interested in Visual Basic but realized I couldn’t replicate my training business so instead I founded VBxtras which was based on a simple idea: To create a "complete reference guide" catalog of components and tools for Visual Basic developers (I later changed the company name to Xtras.)  As a developer trainer I always liked to provide my students with information about 3rd party tools, so this was a natural segue.

I started VBxtras with no capital besides my AMEX card, and was lucky enough to hire a great team (with the exception of the finance area) and we grew like a weed in the shadow of our public company competitor. We filled the vacuum of demand for VBX and later OCX components for Visual Basic that our competitor ignored, and became the "best friend" for both developers and vendors.  Unfortunately we also took on a lot of debt while we grew.

The dotcom years brought people with more money than sense who funded companies run by those whose main goal was to get rich off an IPO, and during 1999 through 2001 we were treading water as we tried to survive against well-capitalized competitors, both public and private.    Millions of dollars were used to drive a wedge between us and our vendors with whom we once had only great relationships. I’m sure our competitor’s first priority is to make lots of money off developers for their shareholders, not necessarily to improve the lot of the developer. Not that there’s anything wrong with that, it is capitalism at its finest, but I believe developers deserve better.

That period of my life was especially excruciating not just because of the financial strain but also because I wasn’t building anything. My goals have always been to build things that can provide benefits for both me and lots of others.  We built the complete reference guide of 3rd party tools for Visual Basic developers (VBxtras) and I know for a fact it helped hundreds of thousands of VB developers find the best tools available. Building things is what makes me happiest.

In 2002 we stumbled across something that actually made us extra profit which allowed us to pay towards our debt. We found Microsoft-centric developers were fascinated by the XBOX, and we could get them to buy a Microsoft MSDN Universal subscription if we bundled. It is difficult for a reseller to make a lot of profit margin when selling Microsoft products but since MSDN Universal costs $2000 or more we found we could make enough to pay for an XBOX plus keep a little for ourselves. 

Also in 2002 we started working on an Xtras.Net printed catalog. However we found the world had changed in eight years. Vendors preferred online advertising to print advertising so most were unwilling to advertise in a printed catalog.  Though we did produce an Xtras.Net issue #1 printed catalog, it was a huge disappointment to me.

For .NET, our Xtras.Net printed catalog was not a "complete reference guide" like the VBxtras catalog had been for VB3 as there were many .NET products not included in our catalog. Also I had questioned my own intuition and I had hired a marketing consultant to design the catalog instead of designing it in house and, quite frankly, many customers told me the Xtras.Net printed catalog didn’t have the soul found in the original VBxtras catalog.  I decided if vendors and developers weren’t passionate about our catalog, I didn’t want to publish it (though we do plan to continue publishing it, albeit in a different form; more on that in future posts.)

So in 2002 and throughout 2003 we focused a lot of our attention on our MSDN+XBOX promotions because they generated the revenue we needed to cover overhead and pay off our painful debt. Sometimes my marketing manager promoted so heavily I cringed at how spammer-like we were becoming. But the MSDN+XBOX promotions allowed us to survive and, allowed us to pay off over half of our old debt. Still I hated that period because we were not on a mission, we were not building anything; we were just moving boxes.

Even though I was unable to pursue "construction" of anything new, different, and valuable for developers during 1999 through 2003, it didn’t keep me from dreaming. I had literally hundreds of ideas, most of them not worth remembering, but a few were really standouts. And a handful, if pursued, would significantly improve the lot of the .NET developer while giving my company a new mission and renewed vigor.  Alas we were unable to pursue any of them during that period for financial reasons.

In late 2003 after getting our financial house in better order it became viable to pursue some of my dormant ideas. As we discussed them internally, they began to gel into a cohesive plan and strategy, and that strategy had a clear mission:

To Empower Serious .NET Developers

While that might sound a bit obtuse right now, you might recognize that phrase as the tagline for our The Xtras.Net Developer Network.

The launch of XDN in January 2004 was the first initiative launched that is part of Xtras’ future strategy. Today XDN is a membership program with two levels: Basic and Professional. XDN Basic membership is free and gives access to download demos from our websites; in the future XDN Basic will give access to a whole lot more. XDN Professional offers members (at least) one free commercial .NET developer component or tool per month, and three of our best sellers at ½ off our normal price. 

In the future we will still operate our existing core business, but our vision extends way beyond what we are doing today. 

So to wrap up the past ten years in a nutshell, we created an icon in the industry but they we went through hell, but came out the other side as survivor.  As for our next ten years and beyond, I can say the following with almost 100% certainty, if you are a .NET developer and we are able to execute our strategy, you will be very glad we did.

FREE XDN Professional for .NET Bloggers, Redux

We’re halfway through the month so its time for me to re-post the offer to get a FREE XDN Professional if you are a .NET Bloggers, in case you missed it the first time. You can click here to learn how to get your FREE XDN Professional membership.

For those who don’t know about XDN it stands for Xtras.Net Developer Network and is a membership program targeting influencial developers who are serious about .NET, and we provide those member special offers each month.  For example, this month in May 2004 XDN Professional members can request these full commercial products for FREE:

Graphics Server .Net
From Graphics Server Technologies
Xtras.Net Regular Price: $824
For XDN Professional Members: FREE 

PDFtoolkit Professional ActiveX/.NET
From Gnostice
Xtras.Net Regular Price: $264
For XDN Professional Members: FREE 

Dynamic AutoComplete Tool
From LaMarvin
Xtras.Net Regular Price: $44
For XDN Professional Members: FREE

XDN Members can also choose to purchase these Best Sellers at 1/2 our normal price during May 2004:

ComponentOne FlexGrid for .Net
From ComponentOne
Xtras.Net Regular Price: $378
For XDN Professional Members: $189 

Xceed Grid For .Net
From Xceed
Xtras.Net Regular Price: $348
For XDN Professional Members: $174

Total .Net Sourcebook
From FMS
Xtras.Net Regular Price: $578
For XDN Professional Members: $289

So if you are a .NET Blogger, be sure to sign up here for your FREE XDN Professional membership before the end of the month. After that, its $99. I’ll finalize by quoting blogger Shannon J Hager’s reply to my comments on his post about this offer. (thanks Shannon for the acknowledgement):

I just want to help make sure people realize that this is a great deal at the normal price. I think a lot of us automatically think "free" means "near worthless" because of the things we’ve seen [so many times] that have reinforced the idea of "you get what you pay for" and when you see something for a lower-than-believable price, it raises suspicions. I had hoped that pointing out the benefits you and the component makers will recieve, as well as the benefits the subscribers recieve, will help things make sense for anyone who has doubts.

What information do you need when you consider purchasing a component?

UPDATE (2006-May-18): I am no longer running Xtras.Net

As many of you know, my company produces a printed catalog called Xtras.Net which we subtitle Your Source for Quality .NET Tools. However, we are revising the design for the next printing, and also adding features to our website to coordinate with some of the changes.

For example, we’d like to include icons for 100% managed code vs.Managed Code calling unmanaged DLLs vs. a wrapped ActiveX.  Another might be to denote if royalties are required.  Yet another would be WinForms vs. WebForms vs. Windows Services vs. IDE add-ins.

For the general case, are those sufficient?  Are there other things you’d like to see when consider a component purchase?


Long awaited help for PInvokers

A ton of people have already pointed to Adam Nathan’s PInvoke Visual Studio Add-in and related wiki site PINVOKE.NET, but it is very cool and I wanted to add  to my lists of free tools and favorites.

I want “My” Classes. Now!

I blogged about the "My" classes here, and also video interviewed Joe Binder about the "My" classes here, but now I want to make an open request to Microsoft to see the "My" classes sooner than later.

As I understand it the "My" classes include a set of VB 2005 IDE features but are otherwise simply a standard .NET library.  If I am correct the "My" classes that don’t depend on IDE features could easily be implemented for use in VS.NET 2003 now. As in, today!

I’d like to make an open request that Microsoft branch the current "My" classes code and provide on MSDN as an unsupported download the subset of the "My" classes that don’t depend on the VB 2005 IDE. That would allow us VS.NET 2003 developers the benefit of at least a portion of the "My" classes today, and it might even let Microsoft get real-world feedback on the "My" classes in time to iron out any potential issues before they ship supported in VB 2005.

Failing that, maybe Microsoft would be so kind as to document which components in "My" are feature and interface frozen so a group of the best .NET developers out there could band together to create an open source version of the "My" classes for use in VS.NET 2003.

So Whaddaya think?

Tags: ,

Very Cool Site: ConnectionStrings.com

I just found a very cool site called ConnectionStrings.com (I found it on the .Text Basic Configuration web page.) This site provides examples of connection strings for all of the following including subsets of each:

  • SQL Server
  • Access
  • Oracle
  • MySQL
  • Interbase
  • IBM DB2
  • Sybase
  • Informix
  • Mimer SQL
  • PostgreSQL
  • DSN
  • Excel
  • Text
  • DBF/FoxPro
  • Visual FoxPro
  • Pervasive
  • UDL

Almost never should you be at a loss for how to format a connection string again!  High recommended.

Cool Component: LaMarvin Dynamic AutoComplete Tool

For the month of May I’ve signed up a vendor new to Xtras.Net named LaMarvin, and we are offering their Dynamic AutoComplete Tool for FREE this month to XDN Professional members ($99/year.)  This component adds auto-complete functionality to WinForm Text Boxes and Combo Boxes just like the auto-complete you get in Internet Explorer’s Address (URL) box.

Check out these tutorials:

This is a commercial product we will normally sell for $44, but XDN Professional members get it for free (this month only.)  Also, since I made the offer for any .NET Blogger to get a free XDN Professional membership in May 2004, any .NET blogger can get Dynamic AutoComplete Tool for free too, so be sure to sign up.

However, what I’d really like is to get some real world feedback.  Either download the demo and/or get your free full version as an XDN Professional member, and then post a comment about Dynamic AutoComplete Tool both here and/or on Xtras.Net’s Dynamic AutoComplete Tool page. Let us know, is it any good?  Is it worth $44?  Should it be in everyone’s .NET toolbox?  Or not?  And if not, why not?  If not, can LaMarvin improve it to the point it is worth it?  Inquiring minds….  :)


FREE VB.NET 2003 Standard Edition

Paul Vick posted about VB @ The Movies. Check it out as Microsoft is giving away a free not-for-resale copy of Visual Basic .NET 2003 Standard Edition to anyone in the USA or Canada who views and rates five of their movies.  This is very, very cool. Pass it on to anyone you’d like to get started programming in VB, like a student you know. (I just wish MS decided to offer VB.NET standard for free download moving forward so students and others wouldn’t have any financial reason to avoid VB or .NET)


Offer good thru September 30th 2004 so hurry.

Features I REALLY want in TSQL, Part #2

This next feature isn’t exactly a TSQL feature, and it is not highly visionary, but after spending literally the past eight (8) hours (I kid you not) using SQL tools to manipulate data and evolve some table structures, I remembered it is something I really would like to see.

What I’d like to see added are Default Aliases for tables and fields.

To illustrate the value this feature would provide, let’s use a simple query. The following query is one take verbatim from SQL Enterprise Manager after clicking on tables and fields:

SELECT     dbo.tblVendor.Name, dbo.tblProduct.Name AS Expr1, dbo.tblItem.Name AS Expr2
FROM dbo.tblVendor INNER JOIN
dbo.tblProduct ON dbo.tblVendor.ID = dbo.tblProduct.VendorID INNER JOIN
dbo.tblItem ON dbo.tblProduct.ID = dbo.tblItem.ProductID

Before using the query I always have to edit it. I start by giving each table a simple alias to clean up the query:

SELECT     v.Name, p.Name AS Expr1, i.Name AS Expr2
FROM dbo.tblVendor v INNER JOIN
dbo.tblProduct p ON v.ID = p.VendorID INNER JOIN
dbo.tblItem i ON p.ID = i.ProductID

Next I give the fields meaningful aliases instead of those annoying “ExprN” aliases:

SELECT     v.Name AS VendorName, p.Name AS ProductName, i.Name AS ItemName
FROM dbo.tblVendor v INNER JOIN
dbo.tblProduct p ON v.ID = p.VendorID INNER JOIN
dbo.tblItem i ON p.ID = i.ProductID

Lastly I typically copy to SQL Query Analyzer and reformat so I can actually read and understand the query, and I also prefix the tables with database names for readability and maintainability assuming I plan to save the query in a stored proc, view, or function:

v.Name AS VendorName,
p.Name AS ProductName,
i.Name AS ItemName
Products..tblVendor v
INNER JOIN Products..tblProduct p ON v.ID = p.VendorID
INNER JOIN Products..dbo.tblItem i ON p.ID = i.ProductID

Whew! That’s an awful lot of time spent just to get a clean workable query. Yes I know, some people say I am too anal, but my brain can’t process much at any one time so I always have to simplify and clean things up like this. Anyway, if SQL Server had default aliases for fields and tables and a few configuration options, a future SQL IDE could automagically add all my table and field aliases and database prefixes.

Now I know the first comment I’ll get will be someone saying: “But your suggestions makes no sense because you can’t be sure not to have potential conflicts among your tables and fields such as when you have a tblItem and tblInvoice and you set each to use “i” as the default alias.” To which my reply will be “So what? I’m proposing default aliases for fields and tables as “hints” for SQL IDEs, not as something people would depend on for robustness!

I would envision a future SQL IDE would have a set of configuration options something like this (my configuration options imply multiple default aliases for tables and fields that could be used in case of conflict with the primary default alias):

  • Always alias tables with their default alias:

    • [  ] Yes
    • [  ] No

  • How to handle table alias conflicts

    • [  ] Append a numeral: i.e. “i”, “i1″, “i2″, etc.
    • [  ] Use secondary default: i.e. try “i” then try “inv”, etc.
    • [  ] Ask Me

  • Default field aliases

    • [  ] Always alias fields
    • [  ] Only alias fields when field conflicts with another field

  • How to handle field alias conflicts

    • [  ] Append a numeral: i.e. “i”, “i1″, “i2″, etc.
    • [  ] Use secondary default: i.e. try “ItemName” then try “AlternateItemName”, etc.
    • [  ] Ask Me

  • Always prefix tables with database names

    • [  ] Yes
    • [  ] No

A really saavy Microsoft usability tester looking over my shoulder as I worked with SQL day in and day out would come up with the set of features I describe here because it would really reduce the amount of time I have to spend doing rote tasks in SQL.  Beyond that, I’d love to see configuration options that specify how to format SQL statements, but that’s beyond the scope of anything I’d like to post today.

Tags: ,