Rory Primrose

Learn from my mistakes, you don't have time to make them yourself

View project on GitHub

Do movies to justice to geeks?

I just saw Dave saying his bit about representation of geeks in movies and TV. Overall, I think geeks get displayed in a way that is very unlike the majority of the geek population. While I agree with Dave, I think that some of the ideas in movies can also be the kind of things that geeks will want to use or build, no matter how impractical they are or difficult they would be to get.

Two things spring immediately to mind. The cool data searching tool used in Minority Report and the GUI compiler in Swordfish. While the GUI compiler offers no benefit at all, I just can’t go past a great UI no matter what it does or doesn’t do.

What’s your favorite piece of fictional movie/TV software?

Read More

Control registrations from web.config

Scott Guthrie posted some ASP.Net tips several weeks ago. There were heaps of great ideas that he put into his presentation, one of which was about registering controls for aspx pages.

User controls and custom controls that are used on a page need to be registered. The control registration allows a tag prefix to be defined and identifies the location where the control can be found. These control registrations are normally placed at the top of the aspx markup along with the page directive. If you drag and drop an unregistered control onto the page, the registration will be added for you (with the exception of dragging user controls onto the markup view).

If you happen to come across a situation where controls change location, assembly or namespace, then every registration for the controls affected will need to be changed. This means that, when using the typical control registration method, each aspx page that uses those controls needs to be changed. This maintenance problem is mostly solved by Scott’s tip of putting the control registrations into the web.config file by adding add elements under system.web/pages/controls.

Edit - Removed comment about this not working for master pages. Something must have gone wrong with my build as it was throwing compile errors with registrations missing from the master page. After emailing Scott and retesting this, I have found that it is fine and works with master pages as expected.

Read More

XML Intellisense in Visual Studio 2005

Last week, a colleague told me how to get intellisense support in xml documents in the VS2005 IDE. It is really easy, although there are some interesting quirks in the process.

To pull this off, you first need to get an xsd file that defines your xml file. The IDE uses the xsd file to know what elements and attributes are available for a specified location in the document.

The next step is to get at the property grid for your xml file. Just selecting the file in Solution Explorer and then displaying the Properties window doesn’t give you the property grid contents that you need. This property grid view just displays the generic properties for a file, rather than being more specific to the xml file type. To get at the property that needs to be changed, open the xml file and show the Properties window. You should now see that a Schema property is available.

Set the Schemas property value to the file path to your xsd file. I have found that the editor for the Schemas property is quite broken. The Add button doesn’t work and also has a few other issues. It’s easiest to just copy and paste the file path from explorer to the property grid rather than fighting with the editor dialog.


Read More

The goods are arriving

Just a couple of days ago, I went to the Perisher Blue site to see how the snow was going. There was nothing but grass apart from a light dusting at the top of the high mountains.

It’s a little different now.


Read More

CSS/Control Adapters - The word is almost out

I have been developing some control adapters over the last month. Control adapters are really cool stuff for ASP.Net. They allow you to modify the rendering behavior of a control in a way that is independent from the control and the web site code. Scott Guthrie posted about control adapters late last year and again more recently.

One of the greatest uses I have come across for control adapters is for developers to use controls that they are familiar with, such as the intrinsic ASP.Net controls, but modify the html they produce to be more suitable to the application. I am involved in a web project that requires CSS to be used for document layout rather than tables. By using adapters, I can allow the developers to use a FormView control which they are familiar with and the adapter will take over the rendering of that control to ensure that tables are not rendered.

I was going to put out an example of creating adapters, but it looks like the ASP.Net crew might beat me to it. I kind of suspect their solutions might be different to mine so it will be interesting to see what they come out with.

Read More

CodeCampOz 2006

I had a great time at CodeCampOz this year. Geoff (Gringo) Appleby and I drove up together and had a really good chat on the trip.

Of the sessions that I really enjoyed, first up was Windows Workflow Foundation by Dan Green. This was a really good presentation and Dan obviously knows his stuff. Unfortunately there was only so much that could be fit into the hour and WF is a big topic. I’m keen to learn a lot more about this one.

Introduction to WinFS by Chris Hewitt was an interesting glimpse at the next file system to be released. I am looking forward to seeing how this new system goes when it is released. I think the greatest thing that will come out of this database driven file system will be some amazing file searching capabilities. Being database driven, this will no doubt mean many 3rd party searching programs will be developed.

Read More


This morning I have been reviewing some code that has been checked into TFS based on work items I have created. When reviewing files that have been checked into source control, several times I have seen code commented out (old version of the code), with code added below the commented block (new version of the code).

I never quite understood this particular behaviour. What is the point of leaving commented old/dead code in source control. Isn’t that what source control and commented version entries are for?

Read More

Doing the unexpected constitutes poor design

I just went to a website for a company that a friend now works for. They have included a search engine in their site. Given that I am interested in the contents of this site, I thought I would give the search a go.

No matter what search criteria I enter, I get taken to a FAQ page. So is this a bug in their code, or were there just no results and they assumed that I would figure that out?

This is a great example of poor design. If the user is expecting results, don’t give them something else. If there really are no results, just say so. Don’t take the user somewhere they didn’t ask for.

Here ends the rant.

Read More

Lack of softie unit testing

I have been trying to pull off something very interesting in recent days. I need to hijack the rendering of a DetailsView control so that it renders different html rather than the inbuilt table element structure.

I have mostly pulled this off by using browser files and control adapters to hook into the rendering process at which time I can get the control to render into a custom HtmlTextWriter. This is great because the page developer just needs to use Microsoft’s DetailsView rather than a custom one.

There is a hitch though. In an attempt to allow certain fields to not render in certain DetailsView modes, I need to render additional information into the html which the HtmlTextWriter can pick up so it will know what HTML to ignore and what HTML to render.

Overriding the RenderBeforeTag and RenderAfterTag of the HtmlTextWriter looked like the go. Unfortunately there is a really simple bug in the framework which I can’t do anything about. See here for more info.

Simple unit testing should have picked this one up. This puts a serious road-block in my path.

Read More