Thursday, 24 December 2009

Useful Utility programs

A good place to start would be Scott Hanselman's 2009 Ultimate Developer and Power Users Tool List for Windows.

This is my list from 18 months ago - Utility Programs, Tools, Add-Ins plus other stuff.

Updated list.

  • Ninite - Pick from a big list of utility programs ninite will go get them all for you, install them and make sure the crapware toolbars and ebay links are not installed. Reviewed on
  • Unlocker Assistant - When you try and delete something and you get the file locked message, the Unlocker Assistant will pop up, giving you the option to unlock the files and perform your delete. Download from here
  • DiffMerge -is an application to visually compare and merge files for Windows, Mac OS X and Unix. Download from here
    • If using DiffMerge with Subversion, the following settings can be used to 'Diff' and 'Merge'

      Diff Viewer
      C:\Program Files\SourceGear\DiffMerge\DiffMerge.exe /t1=%bname /t2=%yname %base %mine

      C:\Program Files\SourceGear\DiffMerge\DiffMerge.exe /m /r=%merged /t1=%yname /t2=%bname /t3=%tname /c=%mname %mine %base %theirs
  • SqlScripter - simple, low-cost tool for quickly exporting data

  • Foxit - a pdf reader

  • Paint.Net - a free image and photo editing software for computers that run Windows
  • CCleaner - removes unused files from your system.
  • Driver Max - find updates for your drivers, also backup and restore them.
  • LinqPad - A great way to learn LINQ.
  • MWSnap - free screen capture software
  • Reflector - If you dont know about reflector, you probably dont need it.
  • DBAN - Boot and Nuke - DBAN will automatically and completely delete the contents of any hard disk that it can detect, which makes it an appropriate utility for bulk or emergency data destruction.

Some random HowToGeek Links

Tuesday, 15 December 2009

Certified Scrum Master

Last month I attended a certified Scrum Master course facilitated by Kane Mar

It was a two day course well run and enoyable, at the end of which after taking the Scrum Master exam I can now call myself a Certified Scrum Master. A bit of a grandiose title maybe but I feel the knowledge learnt was definetly worthwhile.

Friday, 21 August 2009

To output special characters not on your keyboard.

To output special characters that arent on your keyboard you can use the number key pad and the ALT key

For example ALT 0235 will output ë

To find the number you can use the Character Map application;

Start > Programs > Accessories > System Tools > Character Map

Thursday, 19 March 2009

Increase the size of your Microsoft Virtual PC hard disk

So you have a virtual PC disk with 20 Gb C drive on it and after a few installs you decide to install Visual Studio service pack 1, and it tells you it needs 4Gb to do it...

So you need to increase the size of your vhd, and you need to do it on the system volume, heres how;

  1. Download VHDResizer from here
  2. Following these instructions from "Murnic" on this thread didnt work, on entering EXTEND, not sure on the exact wording now, but it was along the lines of cant extend this volume.

The easiest way to do this (as long as you have enough hard drive space) is to extend your existing VHD using VHD Expander which gives you two VHD files. The newly extended file will take the name of your existing VHD. You might want to Defragment, Precompact, and Compact your VHD prior to extending your VHD.

In Virtual PC 2007 go to Settings.

  • Select your OLD VHD as Hard Disk 1
  • Select your newly extended VHD as Hard Disk 2
  • Boot your VM
  • Open an Command Prompt
  • Run diskpart
  • From DISKPART>
    - Execute LIST VOLUME
    - Select your new VHD volume by executing SELECT VOLUME where is your new VHD most likely 2
    - Execute EXTEND
    - You should see a success message. If not you may have to recreate your extended VHD due to an error in the process.
  • Quit Diskpart.exe by typing EXIT
  • Shut Down the VM
  • Remove both VHD files from the Hard Disks list
  • Add your newly extended VHD as Hard Disk 1
  • Boot your VM.
  • You will get a Windows Newly Added Hardware message after a short time.
  • Reboot the VM when prompted
  • Start using your newly extended VHD!

Here is Microsoft's information on extending volumes using Diskpart.exe:

So I went back to these instructions from 'AutoSponge' at the start of the same thread,

  1. Mount the image

    C:\>Program Files\Microsoft Virtual Server\Vhdmount>vhdmount /m “C:Documents and Settings\All Users\Documents\Shared Virtual Machines\\.vhd”

    Start diskpart

    C:\>Program Files\Microsoft Virtual Server\Vhdmount>diskpart

    Expand the partition

    DISKPART>list disk

    DISKPART>select disk 3 -----check the number in the list

    DISKPART>list part

    DISKPART>select part 1 -----check the number in the list


    DISKPART>list part -----check the new size


    Dismount and save changes

    C:\>Program Files\Microsoft Virtual Server\Vhdmount>vhdmount /u /c “C:Documents and Settings\All Users\Documents\Shared Virtual Machines\\.vhd”

You can get download Microsoft Virtual Server here.
You can do a custom install and only select VHDMount

Some more information using VHDMount

Using VHDMount with Windows XP -
It is not possible to use '/m' (Mount), you can only use '/p' (Plug in).

The reason for this is that VHDMount uses VDS (the Virtual Disk Service) to assign a disk letter to the virtual hard disk after it is mounted, but VDS is only included in Windows Server 2003 and later. This is not too big of an issue though, as unlike Windows Server 2003, Windows XP will automatically mount the virtual hard disk when it is plugged in. This means that the only functionality you lose on Windows XP is the ability to specify exactly which drive letter should be used.

Friday, 20 February 2009

SQL Intellisense not updating - SQL Server 2008

I created a new table in SQL Server 2008, then when SELECTing from it I got the red squiggly line.

Closed the query window, still no luck.

Found a post that suggested CTRL+Shift+R which worked!.

More info here.

Tuesday, 3 February 2009

LDAP tutorial

I was reading the MOSS install on this link, and one of the first things it says is 'Start by creating the following users in an OU in AD '.... Whats an OU? - it took a couple of minutes but I found a couple of links.
OU is an organisational unit.

Tuesday, 27 January 2009

Friday, 23 January 2009

SharePoint 2007 - The Business Data Catalog

A good link giving a series of articles on the Business Data Catalog from Sahil Malik.

Friday, 9 January 2009

Create a WSS Site Collection.

It is very simple to create a WSS Site Collection!
  • Startup SharePoint 3.0 Central Administration
  • Select Application Management tab
  • Click 'Create Site Collection' under SharePoint site management heading
  • Enter details and Click Ok.

The book - Inside Microsoft Windows SharePoint Services 3.0

I've just finished reading this book Inside Microsoft Windows SharePoint Services 3.0, it was straight forward to read beginning to end, containing a lot of useful information for the WSS developer. It has lots of good code samples, available here.

Here follows my scribbled notes from the first chapter.
  • WSS is a site provisioning engine.
  • WSS is part of Windows Server 2003.
  • MOSS - value adds a set of components and services that have been built on top of this platform
  • A WSS site is a storage container for container, eg lists, libraries and child sites.
  • A WSS site is a securable entity.
  • WSS doesnt do authentication, it does authorisation.
  • A WSS site is an application with an extensible fully customisable user interface.
  • A WSS site is an application with an extensible, fully customisable user interface.
  • A WSS site is a foundation for using web parts.
  • A WSS site must be created within the scope of an existing Web Application, not as an independent entity; it must be created within a site collection.
  • A site collection is a container of WSS sites.
  • Each site collection requires a top level site, it can contain a hierarchy of child sites.
  • A Web Application, contains site collections, contains sites, contains lists,libraries,child sites.
How should you as a developer partition sites across site collections?

To answer this you need to gain an understanding of how partitioning sites affects the scope of admin priviledges, security boundaries, backup and restore and site design.

  • The concept of the site collection is important because it allows an IT dept to hand off the admin burden to the business divisions that own the sites.
  • A site collection is an 'island' ie they provide scope of membership and security authorisation.
  • A site collection provides a convenient scope for backup and restore.
  • WSS object model allows for queries that span lists within a site collection but not across site collections.
The WSS developer platform provides a comprehensive framework for scalable portable applications it includes;
  • the object model
  • web part framework
  • web services
  • site provisioning model
It is important to differentiate between customisation and development.

A user can customise lists, libraries, the appearance of pages using web parts, master pages and css using SharePoint designer. Customisation is saved within the content database. This is an advantage as it provides great flexibility to users and site admins. But a disadvantage for development as they are now hard to version and make repeatable across multiple sites.

How can you move a customisation from dev > staging > production. How do you customise a single site and then reuse it across multiple sites. The answer is its difficult! If this is what you need to do you should be looking at development.

  • WSS 3.0 has site columns
  • WSS 3.0 has content types
  • WSS 3.0 can work with Office Open XML file formats.
  • WSS 3.0 is built on top of Windows Workflow Foundation
  • Security and site membership within WSS 3.0 can be extended.
If you dont use Active Directory, you can build or acquire ASP.NET authentication provider.

Features, Features, Features! - they feature a lot in the book.

Features are a new developer focused innovation that has been added to WSS 3.0 They provide a mechanism for defining site elements and adding them to a target site or collection.

Several object types in WSS object model such as SPSite and SPWeb use unmanaged resources and must be disposed of in a timely manner.

Tuesday, 6 January 2009

Get Quick Access to WSS '12' directory.

Set up an environment variable,


  • Right click 'My Computer' select Properties

  • Select Advanced Tab

  • Click Environment Variables button

  • Click New and give it a name eg 12 and value eg 'C:\Program Files\Common Files\Microsoft Shared\web server extensions\12'

  • Click Ok

Within windows explorer you can now enter %12% in the address bar
In the command window you can type cd %12%

Windows SharePoint Services - Site Pages, Application Pages, Ghosted/Unghosted Pages

Site pages support customisation. A customised site page is now an unghosted page. A site page that hasnt been customised is a ghosted page.

The fact that site pages support customisation provides flexibility but raises performance concerns and security issues.

Site pages do not support in-line code under the default security policy enforced by WSS.

Example Site pages

  • default.aspx

  • AllItems.aspx

  • NewForm.aspx

  • EditForm.aspx

Application pages do not support customisation. Each application page is always compiled into a single DLL so it will perform and scale better than a site page.

Application pages support in-line code.

You can create your own application page for a custom solution.

Application pages are in C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS

Example Application pages

  • settings.aspx

Monday, 5 January 2009

Windows SharePoint Services - Site Collection, Sites, Webs and Root Webs.

There is obvious potential for confusion between some of the terminology used in Windows SharePoint services WSS and its predecessor, SharePoint Team Services STS.

WSS termSTS term
Site CollectionSite
Top-level siteRoot Web

The confusion is increased a bit by the WSS object model class names being based on the STS terms.

As a result you program against a site collection using an SPSite object, and against a site using a SPWeb object.

SPSite object provides a public property named RootWeb that returns an SPWeb object.

Windows SharePoint Services - Virtual Servers or Web Applications ?

The WSS product team initially used the term virtual server to describe an IIS Web site that had been extended with WSS functionality. The current WSS version and supporting documentation use the term Web Application mainly to avoid confusion with another Microsoft product of the same name. Unfortunately we must remember that the new term Web application and the old term virtual server are often both used interchangeably.

For example, the WSS object model provides the (now obsolete) SPVirtualServer class to program against Web application objects.