February 2006 - Posts

IdeaBlade DevForce

I notice that the latest Australian MSDN Flash from Frank Arrigo mentions IdeaBlade DevForce, a (quite mature) object-relational mapping tool:

Cut down the time you spend developing data-intensive client/server applications. Get IdeaBlade's DevForce Express, a developer productivity solution for .NET that is fully integrated with Microsoft Visual Studio. DevForce: helps professional developers build, maintain, and operate smart client Internet applications by bridging the infrastructure gap between the Application layer and .NET. The solution is a "must have" for .NET development that will improve your productivity and increase application quality, reduce overall costs, and accelerate time-to-market.

I have been using the free DevForce Express in my Visual Basic 2005 developments and found it incredibly useful. I have even e-mailed some support-type questions and had them answered very promptly (and with actual help, not boiler-plate answers). And there's a user forum at IdeaBlade-Runner that looks to have a few active participants too (and another question of mine got answered - thanks!)

I have tried one or two ORM tools and appreciated the time they sliced from simple table edit screens. For my current project, I'm still hand-crafting logic in stored procedures for the web-based front end, but for the admin side of things (a Windows Forms app), IdeaBlade is perfect. Two tools that I'd tried earlier (that shall remain nameless) and I was even mostly happy with, stopped active development, but IdeaBlade appeals because it's still improving - the .NET 2.0 version was out very quickly after launch. It also allows you to make changes to your objects and just regenerates the underlying data access stuff, and ties in with databinding too.

It does take some time to get a handle on, but has demos in VB and C# and is worth spending the time upfront for the rewards later.

And no, I'm in no way affiliated with IdeaBlade: I just thought if you were reading this and you hadn't tried an ORM tool, it would be worth a look.

Technorati tags: orm, visual basic, database

New SQL Compare Beta

There was a question posted on the AUS-DOTNET mailing list a while back asking how people keep their SQL Server database schemas in sync between development and production servers. I reckon the tasks of:

a) keeping your test server up-to-date with production changes

and/or

b) rolling changes from test to production in a controlled manner

...would have to be one of the greatest needs for developers (and this problem just screams for a tool/utility to take care of it).

I've observed that some people have the solution of never using Enterprise Manager to do any design or make any changes and instead script everything; I use this solution myself for stored procedures and views so that I can also have file versioning (and because I use stored procs for a lot of business rules and logic so I'm able to continually tweak them and "roll back" changes if necessary by saving earlier versions). But unfortunately I'm addicted to Enterprise Manager for table design - it's too easy to use, I can enter the description meta-data right there and copy-and-paste columns between tables in design mode (Ent. Man. is also handy for permissions, relationships, database users, etc.)

To go along with my bad habit, I've been using SQL Compare for a couple of years now and it's indispensable. It's one of the 3 or so tools we've spent money on. I'm still on version 2 which goes back a couple of years but it gets the job done - point it at two databases, and it will script *all* the differences. There's also the SQL Data Compare product to synchronise rows.

I can't imagine having to do this stuff manually; trying to remember what I'd changed, where. Yeeech.

So I'm pumped that there's a version 5 coming up, and following advice on James' (one of the developers) blog post, I requested to be on the beta. We'll see how it goes.

Technorati tags: sql server, software, beta

Guesswork and the UI

Jeff Atwood posts about a word often meaning more than an icon in a UI (see his post for a hilarious picture of Word with all the possible toolbars open). His post raised an "Amen!" from me; lucky I'm alone in my office today!

I take Jeff's point further - I can't even begin to think how many times I've opened a downloaded app to be faced with a "mystery meat"/"russian roulette" interface like I've hastily put together below:

This isn't to denigrate developers or programmers or even user interface specialists who have had a hand in programs like Word, FreeMind, Audacity, Visual Studio or Paint, that all resemble my crummy diagram on first opening (full disclosure: some of *my* applications do this too!) I can see how various things like wizards on startup and task panes have helped take some of the guesswork out of these apps, but perhaps that isn't far enough?

In my mind, the best designed apps allow you to not even think about their design or toolbars or options, and just get on with the job. Of course this implies some knowledge of "the job" beforehand, just like with Word, FreeMind, etc.

For me, a good compromise and an example of the "less guesswork" sort of design is Picasa,  the free image management app from Google, which "just works" without me having to learn how to use it. There's an old Ars.Technica article that compares it to 4 other photo album tools (some costing $$$) and explains the pros and cons of each at http://arstechnica.com/reviews/apps/photo-albums.ars (spoiler: they reckoned that Picasa was pretty good).

Picasa maybe has an easier job because it's more focused in its purpose than, say, Visual Studio. But it still does what it does well. I reckon that contributing to Picasa's success is that when it opens, your pictures are there ready to work with. It has surprisingly few of the "icons with no explaining text" that Jeff points out. It's toolbar is only 6 or so buttons depending on your current "mode" (it still has a very complicated menu structure, though). The fading, pulsing, partial transparency graphic effects are nice but not too distracting. In short, I reckon the people that wrote Picasa have done a good job on the UI, which supports the good job they've done on the core functionality of the app (I know I've recommended it to various family and relatives).

I wonder how Vista and Office 2007 are going to address the sort of UI deficiency that I've described? Hmmm...

February 2006 SQL Server Melbourne SIG - Peter Myers

Last night's Melbourne SQL Server Special Interest Group (SIG) meeting was presented by Peter Myers on "Developing, deploying and managing a SQL Server Integration Services implementation" (view event details on sqlserver.org.au or download a pdf of the slides).

SQL Server Integration Services (SSIS) is the successor to Data Transformation Services (DTS) in SQL Server 2000 - a technology I use every other day - so I was most interested in what Peter had to say. It was also the first SIG for this year, and so it's good to get back into SQL Server and hear about the new version (which we are still a fair way away from implementing here at work).

In SSIS, the "package" remains the basic unit of work, but is now an XML file saved with the extension ".dtsx". Peter observed that this aids with source control and is part of the larger move of files not being binary e.g. Reporting Services report files. All "Business Intelligence" development (SSIS, and I'm guessing Analysis Services) now takes place in Visual Studio, or a VS shell if you don't have the full product installed.

Peter's demonstration centred on downloading daily sales zip files via FTP, unzipping them, looping through the unzipped files and reading them into a table, and lastly applying some business rules and populating an aggregate table for reporting (all with only a couple of lines of code). The demo really showed how much thought Microsoft have put into SSIS - I feel like I'm working in the old, wild west with my current set of SQL 2000 tools now!

The two main areas Peter covered under the heading of "Development" were Control Flow and Data Flow. Unlike DTS, any connections in the package now sit in their own tray area (similar to the non-visual components in Windows Forms), and can be re-used anywhere in the package. Their properties (like connection strings) can also be set through variables or config files. In the Control Flow tab, one thing that had definite "cool" appeal for me was the "ForEach" enumerators allowing looping through each file in a folder or each row in a set of records. In the Data Flow tab, the Audit Transformation (where extra columns like machine name, execution GUID, load time could be added to a set of records) and the Condition Transformation looked very impressive.

Peter managed to fit in a lot of new features that had both a "wow!" factor and addressed significant shortcomings of DTS. He presented very well (I don't think he was ruffled by any of the questions from the audience) and covered deployment and management of SSIS packages as well, finding time to demo the logging features, error handlers and config files of SSIS.

I was absolutely tired out by the end of the night and left almost straight away - Darren especially I didn't get to say hello to, sorry mate!

Another good user group meeting, and even though I can't put this technology to use straight away it's still necessary to hear about it and see it demo'd.

Related Posts: February SQL SIG - Overview of SQL Server 2005 Business Intelligence, October Melbourne SQL Server SIG - "Indepth Look at DTS in SQL Server 2005"

Technorati tags: user group, microsoft, sql server 2005, peter myers

Code Camp Oz 2006

Code Camp Oz is back on again in Wagga - the tentative timetable is up, and looks good. I'm focused on AJAX and ASP right now because of my current big project, but also WPF and LINQ look interesting, and anything SQL Server is always worth listening to especially if Greg Low is involved. I'm still not too excited by Team System (I read somewhere that "team system was the porsche of version control"...but can't find the link). I notice there's also a speaker out from the U.S. which should be good.

So yes Geoff, I'm planning on going and can't wait - I got a lot out of the last one, technically (although I'm still working on some of the same problems nearly a year later...sigh) and in other ways, especially meeting luminaries, hanging with friends, and hearing about other people's background and perspective.

p.s. Adam Cogan also gave Code Camp Oz a mention when he guested on DNR last week. I didn't know that last year's was the first code camp done outside the U.S. - well done Mitch and Greg and everyone else!

Technorati Tags: code camp, code camp oz, wagga

Past Posts: Code Camp (Oz) 2: Electric Boogaloo

Extract Contents from MSI Files

I wrote ranted some time back, in relation to having sample code come wrapped up in an MSI package:

Maybe my next task should be to find a way to examine and extract the contents of MSI packages...or maybe to shut up and be grateful for the sample reports...grumble grumble grumble...

Greg today pointed out a tool to extract the contents of MSI packages (and it comes with source, too) called Less MSIĆ©rables. Great!

Public service announcement: On an OT note, I have been on holidays. I'm now back.