Posts Tagged ‘Development’
Monday, February 8th, 2010



Normally I refrain for doing simple reposts of other people blogs,  however having read the post SharePoint’s Sasquatch Memory Leak by Todd Carter I just had to help get the information out to as many people as possible.

We are all being good developers and running SPDisposeCheck regularly on our code to make sure we don’t leak memory,  however for some we still experience spiralling memory leaks that seem untraceable.  until Todd’s post that is.

Rather than hang around here you MUST read it now,  and if your experiencing issues and have SPDisposeCheck’d your application to within an inch of it’s life with no success on controlling memory you will want to implement the workaround as soon as possible.

Big Thanks to Todd find Big Foot :)

Saturday, January 30th, 2010



Firstly what is a SharePoint SPI?

No it’s not another new version, it’s a generic term that is used to describe a SharePoint Project Item within the context of a Visual Studio project.

Visual Studio 2010 has introduced a lot of great SharePoint specific features making it significantly easier to get started with SharePoint development. This post however is not about the tools, it is intended to point out one little bit of the hidden functionality that unfortunately didn’t get completed in time.

The Visual Studio tools hide away so of the configuration options in .spdata files. This is normally great as you can change these via the UI tools and everything works. However I discovered a small issue during a recent refactoring of a project.

When you create a new SharePoint SPI (for example a web part) that needs to add a reference to the assembly it updates the .spdata file with information (as below)


<?xml version="1.0" encoding="utf-8"?>
<ProjectItem Type="Microsoft.VisualStudio.SharePoint.WebPart"
   DefaultFile="MyWebpart.cs"
   SupportedTrustLevels="All"
   SupportedDeploymentScopes="Site"
   xmlns="http://schemas.microsoft.com/VisualStudio/2010/SharePointTools/SharePointProjectItemModel">
  <Files>
    <ProjectItemFile Source="Elements.xml" Target="MyWebpart\" Type="ElementManifest" />
    <ProjectItemFile Source="MyWebpart.webpart" Target="MyWebpart\" Type="ElementFile" />
  </Files>
  <SafeControls>
    <SafeControl Name="MyWebpart"
       Assembly="$SharePoint.Project.AssemblyFullName$"
       Namespace="_21apps.Sample.SPSolution" TypeName="*" IsSafe="true" />
  </SafeControls>
</ProjectItem>

 

In here you will see references to the ProjectItemFiles (.weppart and element manifest) and also an entry for the SafeControls.

If you look closely at the SafeControl entry you will see the Assembly is using a Token

Assembly=”$SharePoint.Project.AssemblyFullName$”

This is great as it allows the SafeControl to pickup the actual assembly name at compile time. The problem comes with the next part of the entry

Namespace=”_21apps.Sample.SPSolution”

As you can see this is not token based, which means that if you later decide to rename you namespace, and this is case sensitive, the SharePoint safe control entry will no longer be valid and you will get an error like the one below when you deploy the solution.

A Web Part or Web Form Control on this Web Part Page cannot be displayed or imported because it is not registered on this site as safe.

For more info on what this actually means have a look at Maurice Prather’s post from back in 2005, the information is still applicable today.

Unfortunately this namespace is unlikely to be made into a Token any time soon. Perhaps one for the community to pickup in the meantime. For now it is case of being aware that you need to correct this manually if you do change your namespace.

Sunday, January 10th, 2010



Being mainly focused on development aspects of SharePoint 2010 I haven’t spent as much time as I perhaps should have looking at the new features that have been added to make Administrators lives easier.  Having just upgraded one on my development machines from SharePoint 2010 Foundation to SharePoint 2010 Server for Internet Sites,  which on a single box installation with AD and SQL local went without a hitch, I thought it worth looking at what the Health Analyzer was telling me.

As you can see I have a few issues:

Analyser Summary

Security

The security Issue I can live with and I suspect everyone running the Beta has the same as using full admin accounts is the only way to get SharePoint working fully at this stage.

Performance

This is a dev box, so I am ok with SQL running on the same machine,  interesting that this is the only performance issue reported as the machine is a Hyper-V VM with 4 processors allocated and only 4GB RAM – but it seems to be running fine.

Configuration

3 items here – the second is about Email not configured – which is correct.  And again I have used built in accounts for the service identities as this was a single box install – I may fix these up at some point.

The 3rd item Missing server side dependencies caught my eye,  and I have to say the dialog that was displayed brought a smile to my face.

Analyser

The server was reporting that I had referenced a web part TestJQuery.WebPart1.WebPart1 in two places and that the files to support these web parts were not on the system meaning the user will get an error.

This is awesome!

I know why these are here,  it was a spike test that I had done previously and had obviously forgot to clear it down.  What it does show is that the administrators (and developers on your own environments) can now proactively check for missing DLLs.

This was not one of the features I asked for in SharePoint 2010 – but is one that I am very glad exists. 

Availability

How many times have you been called in to find the logs have maxed out the drive space and SharePoint has crashed?   Here the health analyzer is telling me I may have an issue with space.    I’m ok with this,  I have a 40GB drive with 11GB free – I like to keep the drives around 40GB as I move then to my laptop and boot to VHD and this needs the full drive size as free space in order to boot – so I can let this one go as well.

The only thing left to say this is:

Thank you SharePoint Product Team.

Thursday, December 31st, 2009



I think this was a best practice in SharePoint 2007, but was one that you could get away with.  You have internal and external URLs that will be used to access the same web application.   Internally for historical or vanity reasons this is set as something like http://companyname, externally you provide access, often via a proxy like ISA Server, via https://extranet.companyname.com – and you do SSL termination at the ISA server as well.

You create the web application using the internal name,  get everything setup and then do the following to provide external access

This scenario would work well,  you would cut down on the web.configs to be maintained – assuming you didn’t use features to do this for you, and you would have a slightly lower overhead on the server – which was often needed in the 32bit setups.

Problems in 2010  (and for some in 2007)

With the introduction of the client API, and a few other services, Microsoft is now making use of the WCF for its web services.   These offer lots and lots of advantages,  but have one limitation (at least in 3.5) that makes the above scenario fail. 

You cannot have multiple bindings on any IIS website

If you do set your environment up this way and you are using the client API you will hit problems.  Assuming you have coded you client requests with a fail delegate (like this code snippet)

  1: var lists;
  2: var context;
  3:
  4: function sample() {
  5:     context = new SP.ClientContext.get_current();
  6:
  7:     this.site = context.get_web();
  8:
  9:     context.load(this.site);
 10:
 11:     lists = site.get_lists();
 12:     context.load(lists);
 13:
 14:     context.executeQueryAsync(onPass, onFail);
 15: }
 16:
 17: function onFail(sender, args) {
 18:     alert("Fail:" + args.get_message() + '\n' + args.get_stackTrace());
 19: }
 20:
 21: function onPass(sender, args) {
 22:     onPass(lists.getByTitle('List'));
 23: }

when the async mehtod is called it will fail and the onFail method will show a 500 error.  One of the best things is the logging in 2010 has been improved so a quick look on the server and you should see something like the following in the event log:

Log Name:      Application
Source:        System.ServiceModel 3.0.0.0
Date:          31/12/2009 16:22:06
Event ID:      3
Task Category: WebHost
Level:         Error
Keywords:      Classic
User:          domain\sp-admin
Computer:      computername
Description:
WebHost failed to process a request.
 Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/2389992
 Exception: System.ServiceModel.ServiceActivationException: The service '/_vti_bin/client.svc'
cannot be activated due to an exception during compilation.
The exception message is: This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.
Parameter name: item. ---> System.ArgumentException:
This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.
Parameter name: item
   at System.ServiceModel.UriSchemeKeyedCollection.InsertItem(Int32 index, Uri item)
   at System.Collections.Generic.SynchronizedCollection`1.Add(T item)
   at System.ServiceModel.UriSchemeKeyedCollection..ctor(Uri[] addresses)
   at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)
   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type
serviceType, Uri[] baseAddresses)
   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(
String constructorString, Uri[] baseAddresses)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(
String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(
String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)
   --- End of inner exception stack trace ---
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath)
 Process Name: w3wp
 Process ID: 3924
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="System.ServiceModel 3.0.0.0" />
    <EventID Qualifiers="49154">3</EventID>
    <Level>2</Level>
    <Task>5</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2009-12-31T16:22:06.000000000Z" />
    <EventRecordID>99264</EventRecordID>
    <Channel>Application</Channel>
    <Computer>computername</Computer>
    <Security UserID="S-1-5-21-2646386180-1731120971-3670236442-1114" />
  </System>
  <EventData>
    <Data>System.ServiceModel.ServiceHostingEnvironment+HostingManager/2389992</Data>
    <Data>System.ServiceModel.ServiceActivationException: The service '/_vti_bin/client.svc'
cannot be activated due to an exception during compilation.
The exception message is: This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.
Parameter name: item. ---&gt; System.ArgumentException:
This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.
Parameter name: item
   at System.ServiceModel.UriSchemeKeyedCollection.InsertItem(Int32 index, Uri item)
   at System.Collections.Generic.SynchronizedCollection`1.Add(T item)
   at System.ServiceModel.UriSchemeKeyedCollection..ctor(Uri[] addresses)
   at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)
   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type serviceType,
Uri[] baseAddresses)
   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString,
Uri[] baseAddresses)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)
   --- End of inner exception stack trace ---
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(
String relativeVirtualPath)</Data>
    <Data>w3wp</Data>
    <Data>3924</Data>
  </EventData>
</Event>

 

The problem, although not obvious from the error message is related to the WCF framework not being able to work with multiple names on the same schema (where schema means HTTP).

Solution

The solution to this is to Extend the web application to another IIS web site.  It will make use of the same application pool but is likely to add a small overhear to the server.  The biggest challenge is to ensure that you get your deployments automated so that SharePoint can keep the web.config’s inline.   And with the introduction of the Sandboxed solution the other issues with artifacts deployed to the 80 (inetpub) folder will likely go away over time.

Sunday, October 11th, 2009



The numbers are in and I think this small sample really gives a good view as to the way people are approaching their SharePoint development projects.

Numbers taken from a one week poll asking people which build servers they used on their SharePoint projects.

CI Poll Results

It’s very clear from this that people are in one of 3 camps of almost identical size

  • Those using Team Foundation Server
  • Those that user another non Microsoft tool
  • Those that don’t do anything

Team Foundation Server

Installing and using, or developing against Microsoft SharePoint Server requires a fairly big commitment to the Microsoft technology stack, so the domination of Team Foundation Server is probably to be expected.

  • If your a big corporate user of SharePoint you most likely have a deal that includes TFS licenses
  • You have likely committed to Microsoft as the platform of choice across the board
  • If your a Microsoft Partner delivering products and solutions you will have a big investment in Microsoft licenses, and also a duty to adopt the MS recommended path
  • TFS is a good solution,  and it’s getting better in 2010

Non Microsoft Tools

I was surprised by the mix of Non Microsoft tools,  having looked at what you get for free and the costs for licensing beyond that I would have expected Team City to have a bigger following.  Perhaps the reason for not being higher is jetBrains being thought of a Java based?

I bundled CruiseControl and Cruise together,  in hindsight I should have split them as they are totally different products.   I will make the assumption that most are using CruiseControl as this was really one of the first decent automated build tools to target the .Net platform.  People have got to know it an have scripted automation for their non SharePoint projects already.

Final Builder I have always liked the look of;  I really do find the whole raw XML editing that we have to do in any build automation a bit like developing against SharePoint,  it’s ok but the tools really should be better than this.   Final Builder has a great product, but the cost per user is perhaps the barrier here.

Other

Some people had build servers but didn’t use it for SharePoint – would really count those as None.

Others listed the source repository (SVN) or scripting language (msbuild, nant) so I assume that the build is done manually using batch files rather than via a dedicated build server.

Also someone listed Hudson,  something I had personally never heard of, but will bundle with the Non Microsoft Tools.

None, we don’t have a build server

This was probably the biggest surprise to me,  and perhaps not the way you might think.  I was actually surprised that only 35% of people indicated that they did not have any form of build server for their SharePoint projects.  

Based on my years of doing consultancy gigs I found that the majority of companies that I went into to do work didn’t have anything even close to an automated build server.  Heck some don’t even have source control for the code!

So I can take a couple of things from this

  • People who don’t were too embarrassed to answer
  • SharePoint development has moved on significantly and most teams now have proper build servers
  • The readers of my blog are not representative of the wider SharePoint user base

 

Conclusion

CI Poll Results Numbers

There are still a lot of SharePoint teams out there that have yet to get the benefit from automating their builds,  who will undoubtedly be spending many hours manually putting things together the night before Go-Live.  

For these people, and those moving into SharePoint for the first time, there is a need to provide more information on why investing time in getting your automated build in from the start can make huge savings over the life of a project.  Providing walkthroughs on how to do this and some of the challenges you will encounter along the way.

Based on the feedback I could look at doing TFS first,  but I know that for teams with nothing setup yet this is going to be a big stumbling block.  Trying to convince you boss to roll out Team Foundation Server just so you can automate your SharePoint build is not an easy argument to have.   I will instead look at the options allowing you to get up and running quickly and more importantly without needing to get budget for licenses. 

I will start with Cruise,  and I will be dog fooding this for real on Project Aberdovey.  

Thanks to everyone who took the time to vote,  I would love to hear your own take on what the numbers mean to you and your experience with automating builds in SharePoint.

Saturday, July 25th, 2009



Having worked for more years than I can remember as a consultant I have lived on my laptop,  everything I do is on the laptop including all of the development.   My current, and have to say the best one ever owned, is a Lenovo T61p.  The plus points it has a proper caddy so I run two drives internally (VMs on one, OS on the other) and all of the drivers just seem to work.   I’ve upgraded the drives a few times to squeeze in some more space (now with 500GB available) and for speed 7200K disks,  I plan to upgrade the main drive to use SSD so that I can keep the old friend going a little while longer.

Many of you are likely in the same place and are thinking,  heck that seems like a reasonable bit of kit, what’s the problem?

The problem is the laptop is OK for single machine development,  as in it’s usable but nothing lightening.   I could, as some have done, pave the way and go Windows 2008 server native to do my development but then I loose all the nice things like just closing the lid and it going to sleep.  But the biggest problem is that I want to do my development right!  I want to get my Continuous Integration running,  be able to test in a scaled out environment and also be able to play with all the new software that is being released.   Sadly my laptop is not really going to cut the mustard here.

I was encouraged by the rig that Andrew Connell put together and this really fitted the bill for what I wanted – I knew this was not going to be cheap,  but these are the tools of my trade.  I wouldn’t expect the local mechanic to be using 99p spanners from the market, they buy the tools that are right for the job. 

Decision  #1

At the time the new i7core processors where starting to hit the shelves,  would it be possible to get a ‘workstation’ setup with dual processors using this new chip architecture?   The answer was you could,  you would be bleeding edge and you would pay through the nose.  So the hard choice was made to stick with the tried and tested XEON proc’s.

Decision  #2

I wanted to do a custom build,  I spent ages looking at the components, deciding what case, proc speeds, heat sinks etc.   The problem I had was in the UK I could not source all of these components from a single supplier.   Why a single supplier you ask?  Well in the UK to make it easier for small businesses you have the option to us register for flat rate VAT scheme, this means calculating the VAT payment based on sales rather than reclaim for everything.  Generally it works well,  the problem is that for larger capital purchases the flat rate doesn’t work.  To support this if a single purchase is above a set amount (£2000) then you can claim the VAT back in addition,  the problem is that it has to be on a single invoice.   So if I purchased the components from the various suppliers I was looking at an added cost of 17.5% – a not insignificant amount.

The Rig

Being a fan of Lenovo since owning my T61p I decided to give their D10 workstation a go.   I had read some good reviews and it was designed with one of my biggest criteria in mind,  not sounding like an aeroplane in my office.

Problem #1

I put together my original spec and placed the order with Dabs.com for the D10, an additional processor, RAM upgrade and some additional drives.   I waited,  and waited eventually I received an email from Dabs saying this product was discontinued!  I knew this was not the case so I went to the go direct and ordered from the Lenovo site and purchased the main rig (with all the lovely 4 year next day onsite warranty) and then upgraded this where the cost for the components was cheaper sourced elsewhere. 

Note: About 1 week after buying mine they announced the D20,  If I were buying today this is what I would get.  The problem was I wouldn’t be able to get a D20 for 3-4 months in the UK,  so this was not an option.

The Rig Continued

I did manage to get a good deal on the kit,  making use of an autocad discount code so was not overly concerned about the D20 release.  Working the numbers carefully I got a the following kit from Lenovo to start my build

  • D10 Workstation
  • Single Xeon 2.5GHz processor (dual capable board)
  • 18GB RAM  (2GB with the machine, + 4×4GB additional chips)
  • 250GB 7200disk

The big seller for the D10 was the onboard SAS and SATA RAID with the SATA supporting RAID 10

The following additional items were purchased independently from Scan

I also ordered a pair of LG 20” widescreen monitors from PCWorld Business,  was trying to justify 24” but my room is just not that big :) .   The monitors had good reviews,  support portrait mode and were surprisingly cheap.

The additional kit from Scan arrived first,  followed by the additional memory, I was counting down the days for the workstation.   Finally I had an excuse to convert the spare room into a spare room/office :)

It arrived

Lenovo Delivered

Lenovo Delivered

 

First thoughts,  this really is going to be a DOA,  I like to treat my machines with a little bit of respect, it looked like the couriers had used this for target practice!  A few photos later just in case I needed to send it back and I had the rig out.   One thing to remember with these Workstations, they are significantly bigger than a standard desktop or tower.

Lenovo Size

Lenovo Size

 

Shown here with my 15” T61p laptop you get a sense of the size.

First Impressions

The D10 is really well put together,  hit had survived the crash testing by the couriers and everything was all still connected and working.  This bodes well for the build quality of the machine.

When I first turned on the machine it sounded like a 747 was spinning up ready for take off..  thankfully after a few seconds the fans all slowed down to a give a near silent machine :)

Once I proved the machine was working and had it booted up into the shipped software I was ready to start customising.  I decided to get the base OS replaced before doing any hardware updates,  my Virtualisation of choice was Hyper V so I started with the latest Windows 2008 release,  I decided not to go R2 beta as I wasn’t planning to refresh the base OS anytime soon.  My long term plan was to have the OS on a RAID 0 SSD setup,  for now it would just run on the shipped drive.

Inside the rig is fairly spacious and it is really well put together.  No need for screwdrivers for adding disks and the ductings allows the air to flow where it’s needed.  There is a lot of fans in the box but it really does not make much noise at all, in fact the loudest part if the noise from the hard disks.

Inside the Thinkstation

Inside the Thinkstation

I really like the memory configuration with the rear fan pulling all of the air over the RAM to keep it cool. I see that Andrew Connell was having issues on his rig and had to install memory cooling.

Memory Ducting

Memory Ducting

The machine runs at a reasonable temp I think,  and not had any issues even during the really hot spell we had in the UK and like almost every UK home I do not have aircon so when it’s hot outside it’s hot inside :)
Internal Temps

Internal Temps

The OS install Part 1 & 2

First install of Windows 2008 went very smoothly,  the software went on really quickly and I had a base setup working with.  Next lets get some ram and hard disks into this baby and see how it flies.

Added the 4 x 1TB drives,  these are SATA drives and were configured very easily using the built in configuration to provide a single 2 TB RAID 10 configuration.   RAID 1 is used for resiliance, every thing is copied to both drives,  RAID 0 is for performance where the information is written across the drives giving you much better I/O.   Doing this in a RAID 10 gives you the best of both worlds.

More Info on Raid configurations

I moved the OS drive over to the SAS controller which also support SATA drives as I had now used up all of the ports on the SATA controller (one was still used for the DVD).

Rebooting the machine and nothing,  it was unable to recognize the boot drive on the SAS controller :( .   I tried various configurations, boot options and changes all to no avail.   Eventually I decided that i would do another install,  this time using the RAID 10 configuration for booting as well.   (Looking back this is probably the right thing to do as I now have resilience for the OS as well).

OS installation Part 2 when smoothly and it was amazing how much quicker the install was now it was writing to the stripped and mirrored drives :) – ‘I’m going to like this’

Disk Config

Disk Config

 

Here you can see the basic disk configuration,  226GB for the OS and 1.6TB for the virtual machines.  I also used the 250GB drive as a file share for ISOs and software.

Hyper-V and Graphics Drivers

Still running on one monitor I setup Hyper-V  and installed my first VM,  WOW = this thing flies,  why oh why have I waited so long to get something like this and move away from the about bearable performance from my laptop.

Time came to get my dual display hooked up and working,   i added the additional monitor – the NVidia Quadro FX1700 shipped with the box supports 2 direct connections and I think can support upto four monitors.   I added two in and looked for config options.   Sadly the currently installed SVGA driver that ships with Windows 2008 can’t support external monitors, or dual monitors or anything other than a very very simple single monitor with limited resolution options.   A quick dig into the drivers on lenovo and I was installing the 64bit Vista XP driver,  install went well everything seemed to be working fine.

Note: I’m not planning to do any video editing or normal day to day stuff on here,  this is really a dev rig.  My laptop is still my main day to day machine/

I fired up the VM and connected,  there was a noticeable delay – it was only a few seconds but compared to the lightening speed before this seemed odd.   On researching this more I found that this is a known issues (but not an issue Microsoft have as at today anything planned to resolve).   I switched back to SVGA and lightening fast,  NVidia and a delay in connecting,  the thing to note is the delay is only really when connecting via the Hyper V manager,  if you remote desktop to the VM then it works just fine.

I’m not thrilled about the delay, but the value of the duel monitor and better resolution is more valuable to me.   I had considered perhaps using VMWare workstation at one point but really wanted to get to know Hyper V so kept the VMWare for the laptop.

A few posts on the subject,  I am hoping that Microsoft do solve this

http://blogs.msdn.com/virtual_pc_guy/archive/2009/01/07/bad-performance-with-high-end-graphics-and-hyper-v.aspx

http://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/4e1c53f5-0400-4ca9-8819-f942c10881c1/

 

Adding a second CPU

Now that my machine was running,  VM installed and ready for some serious work I though it the right time to add the second processor and put in those nice Thermalright coolers.

A quick review of the Lenovo site and I had instructions, in fact a fairly simple process for installing the new CPU and adding the heat sinks. As you can see these heat sinks are beasts compared to the chip that they are there to cool.

Heat sink to processor

Heat sink to processor

 

After some careful work removing the original heat sink,  adding the new on,  adding the additional CPU and it’s heat sink I marvelled at just how good it was to build you own rig.

Problem #2

Next step,  lets get the cover on and give it a whirl.   I had removed some of the internal air ducting as this didn’t fit with the heat sinks but I was more than annoyed to find that I couldn’t put the case back on!!!   The case has a nice handle and a key lock that you can see from above,  the result is that these monster heat sinks will not fit!.   After a few choice swear words I decided to test it anyway, with the side off.  I could look for smaller heat sinks later.

Problem #3

Started the machine and bang!  The famous BSOD!

I knew this was something to do with the new CPU,  but had to start investigating it to see what it was.   Some more fiddling with the machine,  removed the original CPU and heat sink started the machine and it booted up and worked fine.  So there was nothing wrong with the CPU,  was it to do with the motherboard?

A thing to note, taking CPUs and Heat sinks in and out of the workstation is not something I recommend,  and ensure you have some spare heat paste as you will need it.

Time to turn to the internet,  the benefit of buying a branded workstation was that it is easy to narrow down searches.  I was lucky to find a whole support forum dedicated to the Lenovo Workstations and it was here I found the reason for my problem.

http://forums.lenovo.com/lnv/board/message?board.id=ThinkStation&thread.id=755&view=by_date_ascending&page=1

It appears that two Xeon E5420 processors are not always the same.  They rely on both processors having the same stepping code and have a slightly different revision code SLBBR and SLANV.   The problem is that there is no way through any of the suppliers I have seen to be able to order a specific processor revision.

I phoned Scan with my request and a desire to replace the chip,  they were not willing to do this as I had obviously opened the box not expecting to have this problem.   To be fair the stepping code is shown on the box.  I asked the guy at Scan so can I order this particular stepping model to which he said no, sorry we don’t stock them as different items so all you can do is order it and if its the wrong one send it back.

At this point I’m really hitting a low point in my affections with my dev rig,   realising I now have over £350 worth of upgrades that are worthless is not a way to make me happy.

Getting the 2nd CPU

I am not a big user of Ebay,  but found that this was the only way I could get a CPU with the exact stepping code I wanted.   I eventually got one for around £200, was able to install it and it worked first time.  +1 for Ebay

I still have a few left over components I need to shift,  including the Xeon Processor and some heat sinks.   Time to get back and make use of Ebay again.

Living with my Dev Rig

I have found the snapshots and vm revision tree in Hyper V to be really cool and very very quick.   It was a bit confusing at first understanding that you select a snapshot and choose apply to go to that.  I have missed the idea of a Team in VMWare workstation and also the cloning of images using export/import is less intuitive.

I have recently ventured into using System Centre Virtual Machine Manager 2008 R2 to see what value add this can give me.  I know it’s targeted at bigger setups but I think this will be a great investment as I start to automate more of my development and test environments. 

SCVMM does rely on AD so I am now in the strange position where my AD and SCVMM machines are running as Virtual Machines on my Dev Rig and the SCVMM is managing the Hyper-v as a perimeter  setup which includes itself.  I’m pretty sure this is not a Best Practice  :)

Going forward I can actually see my Dev Rig taking on much more of a server role,  in fact this is really where it is now with very little installed on the host OS.

What I do like is that I now have the power and storage to really start ramping up on all the new cool software that is coming down the line.

I did however notice that my dev rig has caught the attention of someone else in the family.

Someone else using my dev rig

Someone else using my dev rig

 

At least he’s working on something important,  School Project: The History of Chelsea Football Club.

Wednesday, November 12th, 2008



At long last Microsoft have announced publically the excellent SPDisposeCheck tool.   This tool will examine your IL level components and report any possible areas where you may have the potential for a leak due to objects not being disposed of correctly.   The output from the tool does require a deep understanding of the way objects are disposed of as there is the potential for false positives.

For more information check out the SharePoint Team Blog even if you can’t get the tool just yet, its coming soon, the referenced posts are a must read for all SharePoint developers.

Wednesday, July 16th, 2008



Adam Buenz is a scarily clever guy;  if your into improving your development approach and work with SharePoint you have to spare a few minutes to read and digest this.

Quote:

The point I am trying to drive home is implementing an SDLC is not a nice-to-have thing on any SharePoint project, it is required. And while this may be the case, it does not discount the tried and true project metric harvesting methods that have been around since the dawn of man. While producing of client deliverables is always the focus, generating valid project metrics can both help to manage your project better, as well as make sure that iteration problems that you have in one project, don’t get repeated on another.

The Degradation of Empirical Software Development Management Techniques

Friday, December 7th, 2007



This is the first of two posts covering how you can provide Federated Search to web sites that do not support the OpenSearch requirements of Search Server 2008.

Part 1. How to federate to a site that does not support a url based search?

This one is simple,  just make use of a search provider that does and use it as an intermediary to your required source.  In this example I will use Live.com to provide federated search to my web site www.21apps.com.

Step 1.  Export the Live.com FLD

MSSX comes with a FLD for Live.com out of the box,  we are going to use this as the basis for our FLD file.   From the Federated Locations page select Export from the Live.com item and save the file to your local drive.

Export FLD

Step 2.  Edit the FLD file to change the Internal name

Open the FLD file in notepad or other XML editor and change the Internal Name from Live to the domain you are federating to, in my case 21apps.com.  You could also make the other changes directly in the XML.

Edit FLD

Step 3. Upload the FLD and Edit the Location setting

From the Federated Locations page choose Import Location and select the file you edited in step 2.  After uploading click Edit Locations and change the following fields

Field Value
Display Name <your domain> i.e. 21apps.comEdit Display Name
Query Template Expand the Location Information section and change the Query Template
 
http://search.live.com/results.aspx?q={searchTerms}&format=rss&count={itemsPerPage}&first={startItem}&FORM=SHAREF

tohttp://search.live.com/results.aspx?q=site%3Awww.21apps.com+{searchTerms}&format=rss&count={itemsPerPage}&first={startItem}&FORM=SHAREF

where www.21apps.com is your domain

“More Results” Link Template Make a similar change to the More Results Link Templatehttp://search.live.com/results.aspx?q={searchTerms}&first=
{startItem}&FORM=SHAREM

to

http://search.live.com/results.aspx?q=site%3Awww.21apps.com+{searchTerms}&first={startItem}&FORM=SHAREM

 

 

Edit links

Click OK and the new Location should be listed and available to use.

Step 4.  Test it!

Navigate to your Search Centre and search for something to take you to the Results page.

Edit the page and select your new Location.

Set FLD

And that’s it,  Federated Search to www.21apps.com.   :)

21apps.com federated

In part 2 I will look at Federated search to a well known search engine that does not return it’s results in a nice friendly XML format.

Tuesday, June 19th, 2007



I posted recently on how Soapbox was reporting my uploaded videos as “Copyright Violation”.   Well someone was listening or they have improved things as it’s now available for all to enjoy,  if you didn’t watch the YouTube one that is :) or want to view with more clarity (Soapbox beats YouTube on this front hands down.


Video: InfoPath form in a WebPart