Monday, 19 December 2005

Paris, City of Light

OK, this is pretty much off any topic, but this panoramic photo Paris, City of Light, and these panoramic photos of Paris landmarks are awesome. The entire Paris Gallery will take some time to browse through...

Tuesday, 13 December 2005

[OT] Globalization

It's been a while since I've worked on i18n projects... but the whole localisation process still interests me... this blog entry caught my eye

dasBlonde: ASP.NET Localization Tools - What are you looking for? /a>

Site localization - best approach?

makes me want to get back into the multi-language space - it's such an interesting problem...

Saturday, 22 October 2005

The 'Unofficial' Tasmanian Cadbury Marathon (Glenorchy, Hobart) Page

Can't resist adding a link to my latest 'creation' : the'Unofficial' Tasmanian Cadbury Marathon (Glenorchy, Hobart) Page. No, I am NOT a graphic designer!

All going well, I'll be able to add more useful information (including neraby accomodation, after I've booked for January myself!). After that, hopefully photos & satellite info on some of the other marathons I've run...

iPod Notes

Wow, it's been a looong while between posts. Due to "work" I have hardly looked sideways at anything tech that hasn't been related to the job at hand. No more! Starting now I expect to get my hand dirty again with a number of little projects, including cooling-up my iPod(s)... p.s. i love my iPod nano!

Project uno: get my spanish study-notes onto my iPod for reading on the bus...

iPod Hardware ( links to the iPod Not Reader User Guide [PDF]

Also summarised here, MAKE ebooks for your iPod guide!.

When they're done, I'll post them on

Here are some other iPod non-music downloads:

EDIT: another nice little idea is sqlTunes - an app to extract the iTunes Xml into a database so you can query it, etc...

Monday, 13 June 2005

Blog 'discovery'

Probably not since Joel on Software have I enjoyed reading a blog as much as newly discovered Fabulous Adventures In Coding by Eric Lippert.

Some of Eric's posts I've read and liked (so far):You need to read past Part Three of the High-Dimension Spaces to see (or maybe you didn't need to read that far) the relationship to business-data-models. Consider whether Google 'word searches' equate to high-dimensional space (each letter in a word could be a dimension, each word in a query, each boolean joining, etc...). What about a Customer-Product-OrderDate tuple in your data-warehouse... is that only three dimensions, or does it become n-dimensional when you expand all the attributes of each (Customer: Country, State, Postcode, Status, ...; Product: ID, Size, LaunchDate, DiscontinuedDate, Price(AtDate), ...; etc)?
Maybe I'm reading too much into it (or reading the wrong stuff into it)...

[EDIT] Another find (2 degrees of separation from Eric's blog): Scott Berkun's essays including (the only one I've read) Why smart people defend bad ideas...

Wednesday, 25 May 2005


OK, this is a super-basic one for the command prompt - to get a recursive listing of subdirectories
C:\My Folder\>dir /s /ad /b > output.txt

back to work...

Wednesday, 11 May 2005

Debugging 'old school'

This post about Script Debugging in IE prompted me to create my own little collection of links on debugging, since I find myself currently working on a project that uses 'old school' ASP and SQL written outside VisualStudio...

Most useful is this detailed instructions document [.DOC] (on gotdotnet) or this short doc.

Then there's the lower-level stuff:
Fiddler for IE allows you to record, monitor, replay and otherwise manipulate the HTTP traffic between IE and web servers.

And these IE DOM inspectors can help to debug client-side issues by letting you view IE's understanding of the Document Object Model it has rendered.

Of course Firefox already provides features and/or extensions to do these things and more!

While we're on the subject of debugging, here's a tip for SQL Debugging after XP SP2.

Tuesday, 10 May 2005

About Cassini

If you ever installed Web Matrix (0.5 or 0.6 - it will never make version 1...)
you will already know what Cassini is... a lightweight C# web server that enables ASP.NET applications to be run without IIS.

MSDN explains Client-side Hosting with Cassini and how Cassini is used in MS-CRM.

"What use is that?", you ask... well despite the fact that it appears to be just a cute open source project, Microsoft has implemented it (well, some form of it) in Visual Studio 2005 as the primary way for developers to run ASP.NET applications without having to install IIS.

You can also use it, as Scott Hanselman has, to cobble together an NUnit ASP.NET tester using Cassini...

FYI, the name "Cassini" sprung from the code name for Web Matrix (which was "Saturn")... Cassini is of course on of Saturn's moons. More code-names decoded here.

Monday, 9 May 2005

More on Ajax

Although it hasn't taken the ASP.NET world by storm (yet), the term Ajax (and the underlying javascript-xml technology) is certainly being discussed more frequently as a viable design option. Whereas previously javascript might have been ignored in favour of Validation Controls (and the occasional pop-up window), Ajax (along with 'implementations' in Gmail, Maps.Google, etc) seems to have elevated the concept of dynamic apps into acceptability.

Since the same idea will be part of ASP.NET 2.0 (Script Callback) it kinda makes sense; but thankfully you don't have to wait until then to give it a try, as quite a few resources are appearing to get you using it now:

Have fun

Sunday, 1 May 2005

Agile and Database Design

One of the least-often-mentioned aspects of Agile Development (IMO) are the challenges involved in database change management, described in Martin Fowler's
Evolutionary Database Design.

Martin states "One of the most valuable pieces of automation is a simple set of scripts for common database tasks" - but I'm not so sure that there is a simple way to accomplish all that in a foolproof manner.

It's definitely do-able in a team of disciplined developers with good SQL knowledge, experience and dedication to writing DDL, DML and understanding when they're making a destructive change. But what about teams of different skill levels (particularly in SQL), very large databases where mulitple delta-changes, when applied, will take HOURS to run (ie. longer than a maintenance window), etc...?

Not that I have a solution right now - but why isn't it a more visible "problem" - what is everyone doing to solve this problem - manual processes?????

[EDIT 9-May-05] Peter Hancock's Continuous Database Integration article describes a novel, NAnt-based approach; but it still requires a lot of 'thought' to ensure it always works...
[EDIT 15-May-05] Unit Testing the Data Access Layer covers the 'related' issue of how to test the database...

Issues with dynamically-added ASCX

Explaining to someone why dynamically added Controls (or DataGrid columns, for that matter) can't be accessed after postback can be difficult, requiring understanding of the entire page lifecycle, the difference between the 'declarative' Control-tree and the 'run-time' one, how statelessness affects the two and why Viewstate doesn't solve the problem.

Depending on what you're trying to do, there are various workarounds including accessing the Request.Form collection directly to retrieve inputs, without accessing 'the control'; however this can be fraught with INamingContainer-induced control-name issues (see Scott Watermasysk's Implementing Dynamic ItemTemplates).

This blog on Adding controls to ASP.NET page at runtime and the Dynamically Created Controls in ASP.NET helps show the correct approach - re-adding the controls to the page before accessing them.

The MSDN page An Extensive Examination of User Controls - How User Controls Are Processed also offers some useful insight, as does the Control Execution Lifecycle

IMO every ASP.NET developer should understand and be able to describe this solution, even if they can't recite the implementation specifics without a quick Google!

Wednesday, 27 April 2005

Forecasting the future...

OK, I haven't posted for a while... been busy!

Having heard (over and over) about how cool Master Pages is in ASP.NET 2.0, we got sick of waiting and are going to implement the Microsoft-published Master Pages sample from 2002. The funny thing is, I had already used that on a project way back then - but before I really fully understood the Page class and ASP.NET internals... you'll see a post of mine on that page - and I clearly haven't yet learned about Control.ClientID. D'oh! Removing the INamingContainer attribute seemed like a good idea at the time :)

Actually, we'll probably use the MasterPages: Improved Version by Paul Wilson anyway.

As for the post title - Paul was spot on: "MasterPages is the most flexible and easiest to use of Page Template solutions, and since it was created by Microsoft it will likely someday be in ASP.NET itself."

Thursday, 24 March 2005

Ajax: Asynchronous JavaScript + XML

Dare Obasanjo's post 'responding' to an article discussing a new approach to web applications that we at Adaptive Path have been calling Ajax. The name is shorthand for Asynchronous JavaScript + XML
is a fun read. I'm not really for or against people making up buzzwords, but a common language is always useful to aid understanding, and to me Ajax (if you're aware of it) does communicate more than his suggested "instead of Ajax, 'XML and script'"... (and Robert Scoble agrees)

Anyway, I was specifically researching information about using XmlHttpRequest ? after reading about an XmlHttpValidator for ASP.NET and Script Callbacks.

Finally - here's a collection of related sample stuff:
Presentation slides on 'Chubby Clients' by Anders Noras, info on XMLHttpRequest & Ajax-Based Applications
and an ASP.NET example from 2002, long before the 'Ajax' tag was invented!

Wednesday, 2 March 2005

Netscape Version Guide and Timeline

A nice bit of history, for those who have forgotten (or never knew) what life was like before IE (before HTML tables, before graphical browsing at all -- remember Lynx?)

Netscape Version Guide and Timeline is a great little resource. Now I'm looking for similar info on Mosaic and IE...

Tuesday, 22 February 2005

ADO.NET 'reference'

OK, I admit it - I can never remember various different ADO objects/methods... sometimes I look up code I've written before, but these ADO.NET examples are a pretty good summary of the most common bits - and they're in context which is useful.

Monday, 24 January 2005

SQL Server - when STATIC is DYNAMIC

My head hurts... according to MSDN documentation on CURSORS:

“Forward-only: The rows are not retrieved from the database until they are fetched”

“Static: The complete result set of a static cursor is built in tempdb when the cursor is opened”

which seems mutually exclusive, but

“SQL Server considers both forward-only and scroll as options that can be applied to static, keyset-driven, and dynamic cursors.”

and finally

“When a database API cursor attribute or property is set to forward-only, SQL Server implements this as a forward-only dynamic cursor.”

so specifying STATIC FORWARD ONLY gets implemented as DYNAMIC FORWARD_ONLY (no tempdb)
and STATIC alone gets the tempdb copy you’re (presumably) after…

Forward-only Cursors

Static Cursors

Tuesday, 18 January 2005

John Howard, Blogger?

For those not in sunny Australia, John Howard is our very long-serving Prime Minister (yes, we're still a democracy, it just seems like he's PM for life...)

Anyway, this 'unofficial' John Howard Blog is bloody funny...

[Sorry, I'll blog something tech-related again soon...]

Tuesday, 11 January 2005

Scrolling tables, fixed headers

A common Html display problem in enterprise applications is presenting lots of tabular data. Users are 'used' to Excel tables where they can always see the column headers as they scroll down a list.

MSDN has a useful example of a scrolling table with fixed header using HTC. It's IE-specific (of course) but seems to be fairly easy to implement. This does pretty much all I need, for now.

However, ActiveWidgets Grid is an awesome Excel-like grid view with column and row headers, plus icon/tooltip support. It's "somewhat" cross browser too (IE, Mox, FF but not Opera, Safari) and if I was really wanting to impress someone this is the one I'd use. One downside is the population of the table via Javascript arrays, which I suspect makes it impossible to do rowspan/colspan tricks which I often need.

Monday, 10 January 2005


I can't count the number of projects where the user's have asked for a text-input area "just like Microsoft Word". Inevitably they also ask for some specific feature or function that means the last control I used is not quite right.

Here is a list (for future reference) of some of the open source alternatives: Open Source WYSIWYG Through-The-Web Editors.

Of course, there's always RichTextBox if you want to pay (and get support!).

p.s. blogging has slowed dramatically in this new job. Hopefully it'll be more regular in the new year!