Monthly Archives: November 2008

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.