An interview with Wally McClure
by Douglas Reilly
Wally McClure’s down-to-earth, approachable name suits him well. I can’t think of him as the more formal Wallace, although that is his given name.
As if to reinforce my observation, at a recent MVP Summit Wally came up to me, greeted me warmly and by name, and made me feel quite welcome. We had met at an earlier Microsoft event, although with my poor memory I could not recall the details. From that time on, Wally’s face would be associated with his name. When I met him a number of months later, and it was obvious that my physical appearance had changed a great deal, having lost 60 pounds or so after some serious surgery, Wally’s interest and concern cemented my admiration for him and our friendship grew.
That’s my bias: I am a Wally McClure fan!
In his reply to my questions, Wally reminded me that we met at a private author’s dinner hosted by Microsoft on the Sunday before the 2001 TechEd conference. For more than an hour we listened to Scott Guthrie talk about ASP.NET. A day or two later, we again spoke and our conversation turned to Oracle, a seemingly foreign concept with regard to .NET.
Once reminded, I remembered the events clearly, and probably still have Wally’s business card from the day we talked about Oracle.
In addition to being a Microsoft MVP, Wally is an ASP Insider and one of the authors of a new book from Wrox called Professional ADO.NET 2: Programming with SQL Server 2005, Oracle, and MySQL . He has also just presented a talk on CLR objects in SQL Server.
The following questions were asked by me and answered by Wally via email.
Doug: What was your first project involving use of a database? Given that my first database, actually a record manager, was Btrieve, the definition can be fairly broad.
Wally: I’ve been doing development for a long time. My first professional, for-pay gig was in 1989, and for years I worked on projects in which someone else dealt with the database-specific issues. In 1997, I had a project drop in my lap in which I had lots of database stuff to do beyond just programming against a database. In 1998, I started working on a project with a programming/Oracle guru named Mike Long, who is also an MVP. Mike and I had the same view of things, which gave me a lot of confidence to go forward and be more outspoken regarding databases. I haven’t looked back since. For the client-server databases, I have done a lot of work with SQL Server, Oracle and MySQL.
As you can tell, I am a pre-dotcom guy.
Doug: ADO.NET 2.0 is not really the same kind of departure that ADO.NET 1.0 was from Classic ADO. What do you think is the most important change in ADO.NET 2.0?
Wally: I think the biggest change with ADO.NET V2 is that it is evolutionary, not revolutionary. You still have all your favorite ADO.NET objects. My favorite client-side change is the asynchronous ADO.NET methods. I spent a lot of time on those in our SQLClient chapter. I wrote a good example using ASP.NET that is based on an article by Pablo Castro, who is a PM in the ADO.NET team.
Doug: I presume you played with SQL Server 2005 when writing your latest book. Did you see anything cool, like perhaps Multiple Active Result Sets
Wally: I think SQL Server 2005 is an interesting product. It has a number of new T-SQL features, and I like the SQL CLR objects. I am torn between the recursive queries and the SQL CLR objects.
Doug: Visual Studio 2005 is a huge change from Visual Studio .NET 2003. What features do you find most important?
Wally: While there are a lot of new features, including Team System, I see VS.NET Whidbey as more of an evolutionary change. The debugging of SQL CLR objects is an example of that, since it is similar to debugging a Windows Service. You connect to the external process and you are able to debug. You can debug the SQL CLR objects, which works perfectly since the first time I tried it.
I always have problems debugging T-SQL, in that I can’t get it to run all the time. Just this week I was trying to debug a T-SQL trigger and was unable to, but I was able to debug a T-SQL stored procedure. I’ve gotten my debugging working with the SQL CLR objects. From an ASP.NET standpoint, there are a number of architectural changes with the change from codebehind to partial classes and such.
Doug: If you can without violating any NDA agreements, tell us what sort of work you are doing these days?
Wally: We are going through the editing of our ADO.NET book, which should be out in the fall. I am also working with Jason Salas on his ASP.NET podcast, for which I’ve created a lot of material. I’ve been to the D.C. code camp to interview some folks, and I am going to the code camp in Atlanta to talk about ADO.NET in Whidbey/Yukon and do some interviews for the ASP.NET podcast. Jason is pushing me to do an ADO.NET-specific podcast, which I think I am going to do, but on an irregular basis. I’ll have more information on that when I think it through.
To keep up with what I am doing, check out my weblog . I try to limit my posts to technical items, though sometimes they are completely silly.
Doug: I expect that a number of readers of this column might, at one point or another, have thought, “I should write a book on .” How did you get involved with writing books?
Wally: I was active with .NET 1.0 beta 1. I was asking and answering a lot of questions on an online list called Developmentor, I think, and one day and I had an email from someone who asked if I would be interested in writing a book. I started from there. For your readers, there are a couple of ways to get into book writing:
- Know someone in the publishing field.
- Create a table of contents for a book you would like to write and send it to a publisher(s).
- Get a blog and start posting technical items. While I haven’t had a publisher approach me from my blog, I have gotten a lot of other positive attention because of it.
After my first book was finished, I made sure that I kept up with my publisher. I kind of harassed the people there every couple of months.
Doug: There are seven authors on your most recent book. Some of them, such as Phil Winstanley and David Penton, live outside the U.S. How did you work with such a large and geographically dispersed group of authors?
Wally: The problem with writing a book isn’t so much a geographic issue as an economic one. Books don’t make a lot of money for an author, so he or she still has to find time to do the research, plan, code and then write while earning an income. That’s in addition to keeping up with family and doing all the other necessary things.
Everyone on the author team has been good at communication, so geography has not been a problem, although I know it can be. Our technical reviewer is in India and he has been fantastic to work with.
Doug: When you program in .NET, do you favor VB.NET, C# or some other language?
Wally: I’m bilingual, coding in VB and C#. I think they both have some good features. I started as a C programmer in Unix, so I guess I have a love for the C# syntax. I first saw VB more than 10 years ago and fell in love with its drag-and-drop features and easy coding. With .NET, I like both. They do 99 percent of what the other does, so why get into an argument over which is better?
Doug: Do you have any thoughts on the outcry over the end of mainstream support for Visual Basic 6.0?
Wally: I feel that the VB6 issue, including the VB6 petition, is much ado about nothing. Microsoft has been very forthcoming in stating that mainstream support would end. I have VB6 code that runs today. It ran on March 31 and it keeps running. Nothing bad magically occurred on April 1 to keep the code from running. If you want to write new code in VB6 today, go ahead. We have been in the .NET period for 3 Â½ years. In the technology world, that is a long time.
IBM doesn’t support all versions of the AS/400 (or iSeries) any more. IBM has released V5R3 of the iSeries operating system, yet according to its web site, versions before V5R1 are not supported. To get support, you have to be on a relatively recent version. The same is true of Visual Basic. We have version 1.0 and 1.1 of .NET. We are soon to have version 2.0. It is time to move on.
If Microsoft wanted to offer additional support options, such as a Service Pack 7 for VB6, it would be fine with me. But the requests for a new version of VB that fit into the Visual Studio .NET IDE would take too many resources and not be something that I would want Microsoft to spend time, money and resources on.
I wonder how much hate mail I’ll get for that?
Doug: What do you think about using VB.NET or C# for stored procedures, functions and triggers?
Wally: Wow, that is something I am really excited about. First, I want to remind everyone where T-SQL and CLR objects work best and the problems they solve. T-SQL is a mathematical description language that operates over sets of data. T-SQL operates best over data that can be described in a “where” clause. T-SQL does not operate as well when operations are done one at a time. This is referred to as a cursor. Cursor operations are supported in a database and they are primarily used when you need to operate on rows one at a time. T-SQL objects and language are not good at performing complex mathematical operations.
CLR objects are optimized for situations in which complex calculations are needed. I have a web spider that does some calculations when it inserts records into the database. The calculations have to do with string processing and numerical calculations. T-SQL would not have been able to perform these calculations efficiently and simply, whereas a CLR object could perform the operations very simply. It just made sense to put this type of functionality in a SQL CLR trigger. The parsing and processing was relatively easy with the .NET framework’s string processing classes, as were the mathematical calculations.
The bottom line is, if used properly, SQL CLR objects provide rich functionality for the SQL Server 2005 platform that was not available for versions before 2005, and they bring much of the programmability features of SQL Server up to the level of other high-end databases. This is all wrapped up in an easy-to-use package, which the other databases simply don’t have.
Doug: Other than the book you have written, have you read any good database-related or general programming books lately?
Wally: I haven’t read too many books recently. I am a big believer in reading online articles. Scott Mitchell has a set of articles about the datagrid that are really good. He writes about complex features that can be implemented today, so you don’t have to wait for the gridview in ASP.NET 2.0. Pablo Castro at Microsoft has some good articles on ADO.NET in Whidbey. They cleared up some problems I had. Two of the sites that I routinely read that have lots of good information are http://weblogs.asp.net and http://blogs.msdn.com.
Doug: I seem to recall that you have been using 64-bit Windows. What have you been using, and what do you think so far?
Wally: I’ve been very active with Windows on x64. I got my first x64 machine last summer and installed the then-beta code on my system. I’ve worked with the 64-bit beta versions of .NET on it, as well as 64-bit versions of SQL Server 2005. It seems to perform the same as a 32-bit machine doing the same things, but I have not fully tested everything. One thing that I have noticed is that driver support for Windows on x64 still has a way to go.
Doug: Can you think of a particularly cool tip or trick to help developers struggling with ADO.NET 2.0?
Wally: I think the biggest issues with ADO.NET 2.0 are going to be when and where to use the new features. One thing that is important for developers to understand is that ADO.NET 2.0 is not a new product with all kinds of new features that replace the old features. The features that you know and love from ADO.NET 1.x are in the product, such as DataSets, DataAdapters, Connections, Commands, Transactions, SQLClient and so on. As a result, you can use the existing commands as you did before. There will be two places where the new features may trick up developers:
- Asynchronous operations. Looping and waiting for an operation to finish is usually a bad thing. It uses up CPU cycles. Instead, set up your events to handle the processing and clean up when the commands are finished.
- SQL CLR objects. Deciding when to use which one is going to be difficult. Existing T-SQL objects will work just fine in SQL Server 2005. Don’t rewrite your T-SQL objects as CLR objects just because you can. They won’t perform as well. Use the CLR objects where it makes sense.
Do you know someone who deserves to be a Database Geek of the Week? Or perhaps that someone is you? Send me an email at email@example.com and include “Database Geek of the Week suggestion” in the subject line.