An interview with Dave Sussman
by Douglas Reilly
“I want to say ‘VB6 is dead, get over it,’ but I’m not sure cutting off your customers is such a sensible idea. Microsoft should evaluate how much it’s costing to support the existing language, and maybe the goodwill of programmers and corporations is worth more than the money.”
Dave Sussman is one of the ASP Insiders, a group of international professionals with a demonstrated expertise in ASP.NET technologies. He is also a well-known author and speaker. Most recently, Dave co-authored ADO.NET and System.Xml v. 2.0 – The Beta Version with Alex Homer and Mark Fussell.
Dave and Alex Homer have co-authored numerous books, and created a web site with book details and a short, if not entirely non-fiction, history of their careers and friendship (www.daveandal.net).
Dave answered the following questions via email.
Doug: Can you give the short, non-fiction version of how you and Alex met, and how you started writing together?
Dave: We first met in the Wrox Press offices in Birmingham in the U.K., when we were there for meetings. Alex had just done an HTML book and we were about to start Professional ASP 2.
About three months after that meeting, Wrox flew us to Palm Springs for the Microsoft Web Tech-Ed conference-the only one they did-where we discovered that despite our very different backgrounds in computers, we were both passionate about the technology, and we both had a weird and silly sense of humor. We proposed a book on MTS, which was in preview at the time, and it became our first collaboration. We discovered that we complemented each other, and became firm friends.
Doug: I have found writing with a co-author to be a bit of a challenge. How is it to work with a co-author in general, and Alex in particular?
Dave: You’re right that it can be a challenge. Working with Alex is always tough, as he’s a much faster writer than I am, and I often find myself lagging behind :).
Knowing your co-authors helps, for a couple of reasons. You know their style and how they are going to write; having that confidence enables you to concentrate on your own work. You also are less worried about raising issues. I’ve always said that the key to a multi-author book is a detailed specification, including level-four headings, details of what examples are going to be included, and so on.
Despite that, books are dynamic; you discover things as you are writing. So being able to talk to the other authors without the worry of offending them is crucial. For Beginning ASP.NET 2.0 there are four authors; three of us live close by, and met for lunch to hammer out the spec. The other author, who was on another continent, commented on our work afterwards. Still, things changed as we wrote.
The other thing you need when working with others is a thick skin. You have to be open to criticism and accept that you have differences of opinion, and that you may have to compromise for the good of the book.
Doug: When you program in .NET, what is your favored language?
Dave: C# is definitely my favorite, but I use VB.NET quite a lot too. I started my professional career as a Unix/C developer and then moved into VB, but found it a bit verbose. Oh, and I hate that whole line of continuation thing. I tried to get into C++, but couldn’t quite manage it; I never really had the time to devote to it. When C# was introduced, I was relieved to have a C-style language to use again.
Doug: There have been a number of blog posts, even petitions, to bring back official Microsoft support for VB6. What are your thoughts?
Dave: This is a tough issue, since I understand the whole legacy application problem. Businesses have plenty of applications in VB6, some of which they would like to enhance. (And yes, I realize the interop support is good, but that’s often not a viable solution.)
I want to say “VB6 is dead, get over it,” but I’m not sure cutting off your customers is such a sensible idea. Microsoft should evaluate how much it’s costing to support the existing language, and maybe the goodwill of programmers and corporations is worth more than the money.
Doug: Can I presume that your interest in databases resulted from the need to do a great deal of database access from ASP.NET applications? Given that, can you talk about the sort of ASP.NET applications you have done that made extensive use of databases?
Dave: My database work started way before .NET. I was working for a consultancy and used to do a lot of VB/SQL Server and Access applications. I spent a lot of time doing data conversions from ISAM data stores into Access and SQL for analysis.
When we started Professional ASP 2 I took on the ADO chapters, because I’d been doing lots of database work through ODBC and liked the ease of ADO. I then spent the next few years doing nothing but writing about ADO.
As a writer, I haven’t built many applications apart from book samples. My largest project, which is still sitting on a metaphorical back shelf somewhere, was a CDDB server, which accepts queries for CDs and looks up the artist and track information. The standard applications you can get use the file system for storage, and are therefore hard to search, so I stored the data in SQL Server. There were about a million rows in the database at that time.
Doug: Other than working with the technology, how do you stay in touch with databases in general, and ADO.NET in particular?
Dave: I spend most of my life on the bleeding edge, and like to write about new technology. Learning new things is one of the reasons I do this job. My work with the ASP team over the years helped with contacts within the data team, which was useful when Alex and I hooked up with Mark to write the ADO.NET book. Over the years, Alex and I have spent a lot of time in Redmond discussing new technology with the development teams, so we often have a good idea of what’s going to be happening in the future.
Doug: What do you think is the greatest improvement in the System.Xml namespace for .NET 2.0? How do you find using XML in your work?
Dave: Alex will laugh when he reads this, as I don’t do much pure XML work and have off-loaded all of the XML chapters onto him. In fact, I almost rang Alex yesterday to ask which XML object I should use to read an XML document, but then I just loaded the data into a DataSet instead!
For the current book I’m doing the XML chapter, because I felt I didn’t know enough about the XML namespace. I use XML where it’s appropriate, but my first thought is to put the data in a database.
Doug: What sort of work are you doing these days?
Dave: We’re writing ASP.NET 2.0 Illustrated for Addison-Wesley. Well, I’m still writing-Alex has finished his first draft. I’m not working on any top-secret stuff at the moment, and may be taking some contract work in the new year.
I prefer writing, but you can’t earn a living writing books any more, so I do some training and contract writing. Writing books and speaking at conferences are my favorite jobs, if you can call them that. They’re more like hobbies. I’ll be at ASP Connections in the spring.
Doug: What do you think about using VB.NET or C# for stored procedures in SQL Server 2005?
Dave: I think it’s an exciting aspect of SQL Server 2005, but it comes with a warning. I’ve done talks on the SQL CLR, and I always say, “Just because you can, doesn’t mean you should.”
There has not been enough guidance on when it’s appropriate to use managed code for stored procedures. For example, T-SQL is designed for set-based work, so if you are doing simple set work, such as returning a rowset, T-SQL will be faster than managed code. If you have a stored procedure with SQL cursors, however, it’s a good candidate for managed code. The same goes if you have a stored procedure with complex business rules. I think where managed code will have more use is in functions and aggregates, which was always limited to the supplied ones.
Doug: Many years ago, I thought I had “discovered” markup languages until I came across the more elegant HTML. Have you ever “invented” anything, only to discover much better prior art?
Dave: I did something similar, but before the web. I was working with flat files of data, and thought it would be easier if, instead of the limitations of comma-delimited files, there were a better way to delimit records and fields. I didn’t have anything as visionary as proper markup in mind, but it does make me feel slightly less dumb. What makes me feel dumb are the times I’ve spoken to members of the ASP.NET team about cool features I’d like to see, and they say, “Yep, we’ve got that in the next version.” They’re always one step ahead.
Doug: Do you have any plans for a new book?
Dave: Well, we’ve got the current one on the go, but there are no firm plans for another. Alex and I want to do a more light-hearted book than what’s currently available. I’m a big fan of the O’Reilly Head First books-I think that series is the product of a genius.
Doug: Have you read any good database- or programming-related books lately?
Dave: While I’m in book-writing mode, I don’t read technical books, because I find myself unconsciously picking up ideas from them.
My most recent favorite programming book was Effective C# by Bill Wagner, published by Addison-Wesley. The author gets to the point and shows some excellent practical tips for improving your coding.
Over the years the Inside SQL Server books from Microsoft Press have proved a good source of knowledge, and books such as Rapid Development and Code Complete by Steve McConnell, and Debugging the Development Process by Steve Maguire had a big impact on my early career.
Doug: Can you think of a cool tip or trick that many database developers do not know about?
Dave: I’d like to think most people know this by now, but use SCOPE_IDENTITY() instead of @@IDENTITY when returning the identity value from a stored procedure. The latter is global, and although unlikely, could return the identity value from a row inserted by another user, or in another table.
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 firstname.lastname@example.org and include “Database Geek of the Week suggestion” in the subject line.