Book: Database Refactoring: Evolutionary Database Design

I had heard a lot of praise for Scott Ambler's book: Database Refactoring: Evolutionary Database Design over the past few years. It's another relatively classic book that I've been slow to read.

I often mentioned to people that when I was at a software design review meeting for Microsoft around the DataDude product (Visual Studio Team Edition for Database Professionals), I noticed that Sachin Rekhi from the team was walking around with a copy of this book under his arm. As Sachin was responsible for the refactorings to go into the product and there was only one (rename) at the time, I thought that was a good sign for where the product might head. I wasn't aware that he had been a contributor to the book. Sachin wrote some of the opening details.

Now that I've read it, I'd have to say I was underwhelmed by it. I really liked the idea that someone would tackle this topic as it's sorely needed in the database community where I endlessly see DBAs who feel like they can never change anything in their schemas. I spend a lot of time with DBAs discussing how they might "regain control" of their databases to avoid this.

The biggest problem I see with the book for a SQL Server DBA's use is that Scott has (understandably) focussed on lowest-common-denominator approaches, mostly using triggers to achieve everything he does. The code samples are all from Oracle and I'm sure that wouldn't help many although they wouldn't be that hard to translate. But in the end, it's often just the wrong approach. For example, he talks about how to introduce calculated columns as a refactoring, again using triggers to maintain them. But calculated columns have been part of SQL Server since 2000 and 2005 introduced persisted calculated columns. Each type of these is automatically maintained by SQL Server and each has a different use case.

That's really the problem with the book. While the concepts are great, most of the book is filled with the "how and why" and the "how" is often far from what you'd want to do when working with SQL Server and the "why" is also often off the mark. Another example is his splitting of tables horizontally which would have been better done via table partitioning since SQL Server 2005.

So, in the end, I was left with very mixed feelings on the book. For DBAs who might not have been exposed to unit testing, test driven development, agile methodologies, etc. this might provide a reasonable introduction in a database context. But I wouldn't want to see SQL Server DBAs following the advice on exactly what to do.

Book: Screw it, Let's do it – Lessons in Life

This is another one of those books I picked up in an airport when I ran out of reading material while travelling. One of the key criteria I applied when choosing the book was whether or not I'd finish reading it by the time we landed. We had a bit of a delay boarding so I'd definitely finished it by the time we'd landed. It's in the "quick reads" series and it is just that.

I'm quite a fan of Richard Branson. There's something about his larrikin nature that I admire. Perhaps it's that I don't do these things enough myself. In the book Screw It, Let's Just Do It – Lessons in Life, Richard describes his outlook on life and business. I really was hoping for more insights into the guy. I did mildly enjoy it and found many of the stories interesting, particularly the section on his criminal past. I was unaware of it.

It's ok for passing an hour or two.

Book: Inside Microsoft SQL Server 2005 Query Tuning and Optimization

I haven't posted up any book reviews recently so it's time to catch up a bit. For some reason, it had taken me ages to get to read Kalen's latest book in the Inside SQL Server series: Inside Microsoft SQL Server 2005 – Query Tuning and Optimization.

As expected, it's a great piece of work. I very much enjoyed the chapters written by other authors as well, particulary those from Adam Machanic and Craig Freedman. Ron Talmage, Sunil Agarwal and Lubor Kollar have also made strong contributions to this work.

I had wondered what outcome the book would aim for. I found it to be more of a good coverage of many of the things you need to know and have a good understanding of when doing performance tuning, moreso than one that provides a pragmatic approach to what you need to do. Perhaps that's another book. This book ceratinly provides the background knowledge of much of the internals involved.

Highly recommended reading!

Finally – a good VB to VB.NET converter

It was great to see an announcement from Francesco Ballena today that his VB to VB.net conversion tool has finally hit the market. It's at www.vbmigration.com and looks like the sort of tool that was needed when VB.NET was first released. It sure would have avoided a lot of angst in the community. I was particularly impressed by the quote at http://www.vbmigration.com/Blog/default.aspx. I'd have to say I could definitely relate to the sentiment expressed in it. Congratulations Francesco!

After 15 years of developing our application in VB3, VB4-16 bit and VB6, I was disappointed to discover that we could not move to VB.Net. Our application was too large to rewrite into the new syntax. In spite of edits made to follow the new rules, such as omitting the lower bound on Dim statements, the migration tool available ran for 5 hours and gave 1947 errors to fix; and that was just on our main application program. Using VB Migration Partner, we converted that same code to .Net in 9 minutes and had 3 compilation errors to fix, all having to do with a third-party OCX. After commenting out those lines, the application started up and ran just fine, displaying dialogs that invoke our VB6 COM servers to perform calculations and print reports. Amazing! We need to keep developing our code in VB6 for our current clients, but the batch processing and code-test-fix methodology will allow us to convert a changing code base without making the same changes twice, once in VB6 and again in VB.Net.

New Geek Toy and Upcoming SQL Down Under Podcasts

Hi Folks,

I was so pleased today to finally get my new geek "toy" installed. I bought a Rode Podcaster mike a while back but didn't get a chance to install it till today. I love the balanced arm that lets me get it positioned so well while still able to type. And then I can just push it out of the way. It's a broadcast quality mike and is in a shock mount. I've already noticed a major difference in the sound quality, including vastly reduced background noise. I've got a pop-filter for it which I might end up using too.

 

I had a small problem getting it working with Vista but was super-impressed that I just called their phone number, within one transfer I got to a human who immediately helped me. I have to mention it because that's so far removed from the typical service experience I have with most things nowadays.

So look out for increased sound quality on upcoming SQL Down Under podcasts. I'd taken a break from producing any for a while as I've been travelling extensively but now I'm back and they'll start to flow.

Impact of Software as a Service on ISVs

I love seeing people start to undertake research work in computing areas. There aren't nearly enough. Oscar Trimboli told me today that he's undertaking predoctoral work at present and his topic is the "Impact of Software as a Service on Australian Independent Software Vendors". Oscar is keen to recruit ISVs who are either traditional ISVs or SaaS (Software as a Service) ISVs (or a combination) that have their management and marketing decision making based in Australia. If that sounds like you, I'd encourage you to get in touch with Oscar (Oscar_trimboli @ hotmail.com) and answer his survey questions. Alternately, if you have strong opinions about this space, I'm sure he'd love to hear them.

A description of his research topic is as follows:

RESEARCH SUMMARY

Software as a Service (SaaS) is a fundamental change in the architecture of software development and distribution model that will change the way Australian Independent Software Vendors (ISVs) compete locally and globally.

 

SaaS is an exciting opportunity for local ISVs and simultaneously the most significant threat to the industry in the last 30 years. SaaS rapidly increases the competitive intensity of firms operating in the Australian market place as global ISVs seek to expand into the Australian market. Conversely it offers an important export opportunity for the local industry if ISVs can leverage the impact of the technology and distribution discontinuity created by SaaS.

There is a significant national economic impact through employment growth in the information economy and associated industries especially telecommunications. As a result, there are significant barriers and costs which will limit the effectiveness of Australian ISVs exporting such as the impact of national broadband policy and natural barriers to competition such as national taxation and business processes.

 

SaaS, as a new distribution model impacts the sales and marketing mix of ISVs. Traditional methods of face to face sales and marketing will adapt to the changing nature of the medium and the ability of prospective customers to preview the software they will actually use immediately rather than the traditional approach of presentations and demonstrations via sales and marketing staff. In parallel, ISVs paid upfront commissions to their sales organisation to access ongoing maintenance revenues from their customers.

 

Overall capital allocation to research and development will alter through SaaS along two major dimensions. Traditionally, ISVs have maintained multiple versions of their software as their customers where running historical versions. Customers paid annuity maintenance to the ISVs to in part help fund research and development for future versions of software and partly to fund employees which support older versions of software.

 

Conversely, SaaS enables the continuous maintenance on the single and most current version of the software. Customers will always be using the most current and up to date version of their product via SaaS and as a result research and development will be focused on the most current version of the product exclusively.

 

Capital allocation beyond research and development, focused on human and physical resources will alter the business models of ISVs going forward as they need to invest beyond software into data centres and networking competencies.

 

The business model via SaaS can explore alternatives in their revenue models including using upfront licensing revenues, subscription based revenues and advertising revenue based models.

 

SaaS is the most recent technology and business model dis-continuum facing the local ISVs, which the industry faces each decade. Very few Australian ISVs have survived the past 3 decades and the industry has a strong history of generating new ISVs which are successful during their decade.

Finally, the growth of SaaS is a function of end user adoption and these users currently have not be totally embraced SaaS applications due to security, reliability and availability concerns, despite the low cost of entry of the new SaaS applications.

 

OT: Internet Connection Sharing on Vista – Problem Resolution – IPv6

I've been travelling a lot lately and one of the problems that always comes up is how to share a single Internet connection in a hotel room with my wife Mai who's usually travelling with me. (She does remote SQL Server DBA work).

My colleague Fernando Guerrero suggested I try his USB-to-Ethernet adapter (a SiteCom one) and use Internet Connection Sharing. I installed the drivers for the SiteCom device (which is a good small size too) and configured ICS and it just worked. I thought this was excellent until Tuesday last week when the latest update for Vista came down from Microsoft.com. (I'm pretty sure that's what did it). Along with rebooting my machine in the middle of the day (I'd so love to discuss that with the windows update author), my ICS no longer worked.

When I tried to configure it, it provided the helpful message that "An error occurred while configuring Internet Connection Sharing". I *love* those sorts of error messages. No help whatsoever. It might as well poke you in the eye for good measure. Anyway, a search of the system event log found an error loading the IPv6 driver. What's interesting about that is I *don't* have IPv6 enabled on my connections as it tends to cause problems with various routers, particulary wireless routers.

After much frustration, it suddenly dawned on me to turn on IPv6 on the main network connection and lo and behold, ICS came back to life. So the moral of the story is that ICS on Vista now doesn't understand you disabling IPv6. It interprets it as being unable to load it. Enabling it allows ICS to work again (while no doubt returning me to router-related problems in the future).

Global Reach Awards – Congratulations to All

Each year the Microsoft Regional Director program issues Global Reach Impact Awards. It was great to see seven from our company receiving awards:

Gold Awards – Fernando Guerrero, Richard Hundhausen, Greg Low, Mauro Sant'Anna

Silver Awards – John Alexander, Shervin Shakibi

Bronze Award – Ken Spencer

The Impact Award represents Microsoft's respect for the work these Regional Directors do in evangelizing Microsoft technologies and products worldwide. That's an oustanding result for our company. Congratulations also to all other Regional Directors receiving awards this year.