Category Archives: Uncategorized

Where’s them commerce server posts at…?

Ok, so it’s been a while since I spoke about writing some CS07 posts, but I promise they’re still on the way. We’ve finally gotten to the feature complete milestone on our project so there have been many a late night and weekend spent in the office getting things going recently.

Where am I at…? Well, I’m just finishing up a fresh virtual machine build for CS and I’m getting some good content together. Of course, with the new announcement of CS09, a lot has changed. Once I’ve finished up a bit of work on this 07 guff, I’ll hopefully get a chance to put together an 09 VM and put some content out there.

Windows Home Server available on MSDN

I’m a bit late to catch on to this one, but earlier this month Microsoft (finally) released WHS for download on MSDN. From the official announcement on the team blog:

MSDN availability will increase awareness of Windows Home Server with a larger community of professional developers and help further grow the ecosystem of software applications built for Windows Home Server.

Well, it’s about bloody time! There’s been a fair bit of public scrutiny over MS’s expectation for third party developers to write addons given that they had not released this earlier. I’m really looking forward to getting my server back up and running again after a much neglected Server 2008 installation.

Getting to know and love Microsoft Commerce Server

Over the past few months I’ve being working on quite a large web development project. This project involves the redevelopment and expansion of one of the largest e-commerce systems in Australia and the world. One of the base technologies chosen at the start was Microsoft Commerce Server 2007. This worried a few of us, but we were assured it was nothing like SharePoint 😉 so we were settled.

The team has grown to be quite big and well established. We now have 5 MVPs on board including some absolute superstars Damian Edwards, Tatham Oddie, Paul Glavich, Corneliu Tusnea and Luke Drumm. As a result we have a great grasp of ASP.NET and a great ability of delivering high quality software. The only thing our team was always missing was the Commerce Server knowledge…

At the beginning of the project, we were quite shocked by the amount of effort required to set up and develop with the framework. It was taking us days to get our environments to a functional state. Any changes to the underlying schema were taking at least a day of development then another day of roll-out. However, after a month or two, the sharp shooting pain that used to hit us whenever we needed to do something CS related subsided into a dull acceptance. It was quite sudden and really surprising how quickly a few of us had come to know and revere the beast that is Commerce Server.

Fairly soon after we started development we realised that not many people in Australia (or the planet) have used and/or blogged about their experiences with CS. Even Microsoft Australia were quite limited in their ability to support us because they had no one with any project experience. This was quite a blow because whenever we experienced a problem we didn’t have anyone to turn to for support.

It wasn’t until we had a consultant from Cactus Commerce – a consulting company based in Canada that specialises in e-commerce systems and CS – that we began to take hold of the beast. The two weeks we dealt with them helped us leap ahead and get to a point where we are no longer afraid…

We are now at a point where CS schema modifications take an hour to develop and roll out and Pipeline Components take minutes to put together. So, over the coming weeks I’ll be trying to share as much of the basic knowledge I’ve gained as possible. I’ll be writing about everything from connecting to CS in-proc versus web services to making schema modifications easily and writing Pipeline Components the right way in the hope that someone will get some benefit out of it.

I’m still here…

Yes, my blog has been exceedingly quiet over the past few months. I’ve gotten into the bad habit of queuing unfinished blog posts. That’s over, I’m clearing them out and starting fresh. Time to come back to life… 🙂

Thank you Outlook for this informative message…


‘nuf said.

Defrag in 7

[Continuing on my rant of new little features I’m discovering in Windows 7…]

I’m quite sure I wasn’t the only one who was disappointed the first time I ran defrag in Vista to see they had taken my precious UI away from me…

Sure, I agree that the user doesn’t really need to know what is happening under the covers, just that the file system is being taken care of. I also agree that users should be able to easily schedule the defrag as part of a maintenance routine. However, in simplifying the UI they took away the user’s ability to determine the status of the process. This in my eyes was the major issue and was why I started using Auslogics Disk Defrag, which does a (speedy and) great job.

From the new look of defrag in 7, it looks like they heard the various cries of outrage… They’ve given us a new UI that allows us to configure a schedule AND to watch the status of a currently running defrag. They’ve also provided an Analyse button that determines the fragmentation of the drive.


A step back in the right direction here…

Some SDS basics

I just thought I’d share some basic notes on SQL Data Services that I took while reading through a few pages on MSDN and doing a few of the labs. Head to SQL Data Services (SDS) on MSDN for all the documentation, or hit the portal SDS portal for the SDK and heaps more.


  • Authority – the unique name of the service. This is how the service is referenced, e.g. an authority name of ducas-authority would be represented by the DNS Authorities can only contain lowercase letters (a-z), numbers (0-9) and hyphens.


  • Container – a store for data/entities. These are “buckets” of objects that can be used without worrying about any schema. In this release cross-container queries are not supported.


  • Entity – an object with user-defined properties and values that is stored inside a container. Entities can be blog or non-blob both of which have metadata properties. A non-blob entity will have Id, Version and Kind properties and a blob entity will also have the Content property. Non-blob entites have flexible properties that are of the scalar types string, binary, boolean, decimal and date time.


  • URI Space – when using REST for SDS, you deal with Service, Authority, Container and Entity URIs. Querying the URIs will return POX that defines the results.
    • The Service URI that allows you to create and query your Authorities is
    • The Authority URI depends on your authority name and can be used to create or query for containers – https://<authority-name&gt;
    • The Container URI allows you to create and query entities in the container – https://<authority-name&gt;<container-name>.
    • The Entity URI allows you to retrieve, update and delete an entity – https://<authority-name&gt;<container-name>/<entity-id>.


  • Queries – iterate over a scope and return a POX representation of the results. The general syntax for querying entities is “from e in entities [where condition] [orderby property1] select e”. Flexible properties are stored in a property collection and most be quiered using a string indexer (e.g. e[“Age”] == 32) whereas metadata properties are on the object (e.g. e.Id == “someId”).
    • Using SOAP, the authority scope must be defined. Use the proxy’s Get method to get an entity or Query method to query the scope.
    • Using REST, the URI must be well formed for the scope of the query. The actual query is appended to the URI, e.g.’from e in entities select e’.
    • The default page size of a result set is 500 entities.
    • Take can be used to specify the number of results to return (as long as it’s less than 500) – (from e in entities orderby e[“Author”], e.Id select e).Take(10)
    • OfKind can be used as a shortcut to specifying the Kind of an entity – from o in entities where o.Kind == “Order” is the same as from o in entities.OfKind(“Order”)
    • Joins can be performed on entities in the same container by specifying multiple from clauses – from c in entities.OfKind(“Customer”) where c[“Name”] == “Customer 1” from o in entities.OfKind(“Order”) where o[“CustomerId”] == c.Id select o

Disk Cleanup in 7

One of the most useful tools for cleaning some fairly chunky temporary files in Vista is the built-in Disk Cleanup tool. This has made it to 7 with a couple of changes.

First, you no longer get the choice to clean up your own or all files when the tool starts. Instead, after you choose the driver, there is a button for cleaning up system files, much like viewing all processes in Task Manager.


When you hit the button, it restarts the tool as an admin.

Now, if only I could figure out what this set of files is then I could make an educated decision to delete them…


Oh well… delete! 🙂

Hello Windows 7…

The best thing about Personal Development (PD) time is the ability to play with new things and call it "work". One of the things I thought I’d do while "working" today is install Windows 7 on my Dell m1330.

So far it’s pretty much smooth sailing… The install was very straight forward. Most of my drivers were installed successfully with Windows Setup or Windows Update. I’ve got Aero working and enabled the Superbar. My WEI is a bit low at 3.0, but this is most probably because the drivers for my SSD aren’t quite up to scratch.


Before I formatted my disk, I used the Windows Vista Backup and Recovery tool to backup my entire computer to an external hard drive. The good thing about this is it uses Virtual PC’s Virtual Hard Drive (vhd) format that you can then mount as a physical drive in Windows 7. I’m still waiting on the ability to boot from it though…


One interesting feature I stumbled upon when installing some extra drivers is the "Troubleshoot Compatibility" option in the right-click menu for applications in explorer. Here’s a scenario… Say you have an installer that works fine on Windows Vista or XP and you want to use it on 7. You double-click it and receive the new and improved UAC prompt.


You hit Yes, but somewhere down the line something goes wrong…


Now you can right-click the install and hit Troubleshoot Compatibility.


You will be asked what’s actually wrong.


If you claim it used to work, then you’ll be asked on which operating system it worked on.


You’ll confirm what you just did.


Windows will try to resolve the problem and run the installer again.


If the installer succeeds or fails, you can tell Windows whether you want to save the settings you just used to run the installer, try again using different settings, or report the problem.


This obviously doesn’t just apply to installers. It can be used on all applications.

I thought this was a pretty darn good improvement on the previously hidden screen in the application properties that achieved something to the same effect.

Moving Blogs

For those on twitter, you may have noticed that my latest posts look a bit different to my old ones. I’ve finally made the decision to move my blog across to WordPress (event though I’ve had an account for 6 months).

I’ve updated my feedburner feed to point to the right place, but now I have to get the rest of it going. Hopefully once it’s all up and running I’ll have my posts and comments all up on my new blog. In the meantime, please bare with me while I make this transition.