Wednesday, 21 January 2009

FDO Toolbox v0.7.0

After two months of re-writes and re-designs (and a whole lot of new development). I have finally pumped out a new release of FDO Toolbox that until now was nothing more than words and screenshots!

A (big) summary of the changes include:
  • Everything has been rewritten from the ground up. The foundation is now based on SharpDevelop Core, providing a framework for easy extensibility.
  • Re-Designed/Improved Data Preview control. Null values are now displayed as
  • Re-Designed/Improved Schema Editor. This can now also function in standalone mode, meaning you can edit a serialized xml feature schema independent of any open FDO connections.
  • The Generic connect/create data store controls now have helper macros (eg. "Insert Current Directory") to make filling in the connection parameters much quicker.
  • Re-Designed Express Module
  • You can create connections with configuration file support. This is used to configure non-feature classes as feature classes (eg. Defining a non-feature class as a point-feature class by specifying a X and Y column). The configuration files still have to be created/edited manually.
  • The new ETL framework (based on Rhino ETL) is fully implemented. This is much more flexible than how things were done previously. Bulk Copy and Joins are now using this framework. You will probably (definitely) have to re-create your saved Bulk Copy and Join tasks as the xml schemas for these files have changed.
  • Database Join operations now have batch support (if the target connection supports it)
  • FDO Toolbox now uses FDO 3.4.0 (beta 1). FDO 3.4 is not binary compatible with FDO 3.3, so if you are using providers that do not come with the standard FDO distribution, they must be built for 3.4, otherwise they will not work with this release of FDO Toolbox. If this is the case, perhaps the author(s) of the provider(s) in question could be persuaded to start migrating their providers ;-) Also FDO 3.4 requires you have the Visual C++ 2008 runtime library installed.
  • Express module now supports connecting to common ODBC formats (MS Access, Excel, SQL Server, Text files)
  • Express module now supports connecting to common OGR formats (currently: MapInfo, CSV and ESRI Personal Geodatabase)
  • Much more!
Also starting with this release, FDO Toolbox is now packaged with NSIS technology allowing for a better installation user experience. Also, no more lite releases. From now on, every release will have FDO bundled with it.

So without further ado, come and get it!

P.S. The (near) exponential growth of FDO Toolbox between versions means that I may well have missed some small things that were in previous releases. If this is the case, do not hesitate to file a bug report. Actually, do not hesitate to file an bug report on anything! I can't be the only one filing bug reports all the time! :-)

Wednesday, 14 January 2009

Who want's to be a (virtual) millionaire?

The value of my personal hobby project according to Ohloh:


I guess that's the price for being so charitable :-)

Monday, 29 December 2008

The more Microsoft tightens its grip, the more internet users will slip through its fingers

I was doing a fresh install of windows xp on my old laptop for my (not-so computer literate) mum on the weekend.

One of the first things she said to me was (paraphrased):

"So where's that Firefox that we had on the old one?"

So I happily went off and downloaded a copy straight away :-)

Friday, 5 December 2008

Database Module: Going, Going, Gone!

Here's another little FDO Toolbox update with a small backstory.

When I first wrote the original ADO.net database module for FDO Toolbox, what I wanted was the ability to integrate FDO data sources with non-FDO data sources (eg. Joining an SDF file with a MS Access database).

For the next release of FDO Toolbox, this module will no longer exist.

The reason: OSGeo.ODBC

I have come to realise that I have been essentially duplicating functionality that already exists in the ODBC FDO Provider since the beginning of time. The provider already wrappers non-FDO data sources as FDO data sources, so I was basically reinventing the wheel (poorly).

So the plan now for non-spatial data support is currently the following:
  1. Give the ODBC Provider some special attention in the Express Module. There will be connection builders for commonly used formats like MS Access databases, Excel Spreadsheets, CSV files, DSNs, etc.
  2. Implementing Class to Feature Class conversion, which will replace the old DB Table to Point Feature conversion, since the ODBC provider already exposes the DB Tables as non-feature classes.
  3. Supporting joins between FDO data sources, again since the ODBC provider has done all the work for us.
  4. Implementing configuration support. This is just another FDO feature that has yet to be exposed by FDO Toolbox.
Items 2, 3 and 4 won't make the next release, but 1 will make it in some form or another.

Tuesday, 2 December 2008

You are what you write

ISTJ - The Duty Fulfillers

The responsible and hardworking type. They are especially attuned to the details of life and are careful about getting the facts right. Conservative by nature they are often reluctant to take any risks whatsoever.

The Duty Fulfillers are happy to be let alone and to be able to work int heir own pace. They know what they have to do and how to do it.









What does your blog say about you?

Tuesday, 11 November 2008

FDO Toolbox: Rebooted

Today I took off and nuked the site from orbit. After the dust settled, I landed a drop of the currently re-written FDO Toolbox into the now quite barren and empty trunk.

Here's a summary of what has changed.
  • The application now revolves around SharpDevelop Core. The decision to rewrite FDO Toolbox around SharpDevelop Core was an important (and quite easy) decision to make. Not only is SharpDevelop Core an extensibility framework, it also provides other helpful utilities like logging, file picking, unified resource access and other goodies. The application also uses the Text Editor component of SharpDevelop for editing of any text files (eg. XML feature schemas)
  • The application now uses FDO 3.4.0 (build G025), it will no longer compatible with FDO 3.3.x as it is using APIs new to 3.4.
  • Most of the UI components have been rewritten to be more cleaner and easier to maintain, with special mention to the Data Preview control.
  • The application is more friendly to localization as most hard-coded strings have been moved to resource files. There are still some strings floating around that will need to be moved.
  • The ETL API has been overhauled, the revised ETL API is based on Rhino ETL with modifications to support and handle geometries/features. The existing task infrastructure (UI and classes) is being rewritten to use this API.
There are still quite a few features from the previous version that have not made it into this version as I am still in the process of porting them over. You can now checkout or svn update from the trunk to see the current work in progress. For archival purposes, the 0.6.0 code-base now resides in a "legacy" branch

Here's some screenshots to tickle your fancy

The user interface (now with a toolbar!):

Add-In management using the SharpDevelop Add-In Manager

The new Data Preview control


Some small improvements to the Generic connect/create data store controls.








Wednesday, 5 November 2008

Another FDO Toolbox update

Here's the current state of affairs on the FDO Toolbox front.

1. FDO Toolbox development is back in motion

Life has been less hectic than it was a few months ago, and as a result, you will be seeing more regular updates to FDO Toolbox.

2. FDO Toolbox is currently being re-written

This one will need a bit of explanation.

One of my original goals for FDO Toolbox has always been extensibility. This extensibility existed in the form of extension modules (case in point: The MapGuide extension module), but there wasn't really much thought put into the original design from an extensibility standpoint (I will admit that it was pretty much haphazardly put together).

Also most of the UI components of FDO Toolbox were developed in a similar ad-hoc fashion and as a result most of the UI code is a messy affair (example: The Data Preview component)

So I have made the tough (but ultimately beneficial) decision to take off and nuke the site (most of the code-base) from orbit. Here's a summary of the planned changes I intend to make:
  • SharpDevelop Core (ICSharpCode.Core) will be used as the extensibility framework for FDO Toolbox. This is a framework that has been proven to be both simple, powerful and versatile in my evaluation of the framework. Also it's one less component to worry about from a maintenance standpoint. I'm not a fan of reinventing the wheel. If a library/component exists that does what I require and has a proven track record, I will be using it. This is one such case.
  • On the UI front, most if not all of the components will be rewritten in a Model-View-Presenter fashion. This will make maintenance and testability much easier.
  • The FDO Toolbox Core library and command-line utilities will mostly survive intact, with refactorings to adapt to the new code base.
  • The ETL API will be overhauled and replaced with the proposed replacement API.

  • /branches/0.6 will be where the code base in its current form will reside. /trunk will be overhauled and replaced with the new code base.
As a result, v0.6.0 will be the last release of FDO Toolbox in its current form.

3. FDO Toolbox is almost certain to be moving to a new home.

A few weeks ago I submitted a RFC to make FDO Toolbox an official part of the FDO project. The gist of the RFC is that the FDO Toolbox codebase will move to OSGeo, while the existing Google Code repository will be the home for the development of FDO Toolbox extensions.

It is currently going through the voting phase, which looks to have unanimous approval. So expect an announcement soon from OSGeo or myself.

EDIT: Mono.AddIns is starting to look more attractive as it is based on SharpDevelop core and has gone through more refinements.

EDIT #2: After playing around with Mono.Addins, it doesn't look as attractive anymore (mainly because it requires a whole lot of Mono-specific libraries to get the whole thing working!)