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...
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, 5 November 2005
The 'Unofficial' Auckland Marathon (New Zealand) Page
Two more 'unofficial' marathon info pages:
The 'Unofficial' Auckland Marathon (New Zealand) Page
The 'Unofficial' Gold Coast Marathon (Australia) Page
The 'Unofficial' Auckland Marathon (New Zealand) Page
The 'Unofficial' Gold Coast Marathon (Australia) Page
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...
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 (apple.com) 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 ConceptDevelopment.net
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...
Project uno: get my spanish study-notes onto my iPod for reading on the bus...
iPod Hardware (apple.com) 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 ConceptDevelopment.net
Here are some other iPod non-music downloads:
- podsites content for download
- city guides
- iPod Subway Maps
- Complete CSS Guide - kinda weird idea for an iPod...
and for photo-capable iPods...
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):
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...
Some of Eric's posts I've read and liked (so far):
- Aargh...Comment Rot about one of my hobby-horses: code commenting
- Why obs-s(e)curity is a bad thing
and if you want your head to hurt - High-Dimensional Spaces Are Counterintuitive which has 5 parts...
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
'shortcuts'
OK, this is a super-basic one for the command prompt - to get a recursive listing of subdirectories
back to work...
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.
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.
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
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:
- Ajax.NET Blog
- AJAX WAS Here - Part 3 : Auto Complete TextBox
- XMLHttpRequest & Ajax Working Examples
- Implementing AJAX Using ASP.NET 1.1
- Processing Long Running Tasks With Asynchronous Handlers and XMLHTTP
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...
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!
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 www.asp.net 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."
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 www.asp.net 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."
Friday, 25 March 2005
Precompile ASPX websites with a custom HttpHandler
Thanks to Joni Zhang for the code sample upon which I've based my own Precompile.axd handler to expose any compiler errors in my ASPX pages before a user sees them.
This Excellent article on the ASPX compilation process, debug status and ASP.NET Temporary Files should be read and understood by all ASP.NET developers!
This Excellent article on the ASPX compilation process, debug status and ASP.NET Temporary Files should be read and understood by all ASP.NET developers!
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!
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...
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
“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...]
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.
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
WYSIWYG Editors in DHTML
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!
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!