Nov 17 2009

WSPBuilder Project Migration Errors

Published by gringod under .NET, Programming

Today I tried migrating a Visual Studio WPSBuilder project from one machine to another.  The originating machine was 32bit Windows Server 2008 the destination machine was 32bit Windows Sever 2003 Standard.

To migrate the project I simply zipped the solution folder and copied it across to the destination machine, unzipped and opened in Visual Studio.

However, when I came to build the SharePoint solution file using the Tools -> WPSBuilder -> Build WSP, I got the following error in the output window:

“Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection”

When Googling the the error message the only result was on the WSP Builder CodePlex site and was about 64bit versions of the Cablib.dll assembly.  As neither of my machines is 64bit I figured this wasn’t the issue.

I’m not sure exactly what was causing the problem but this was the solution:

  • Open the project folder in Explorer
    • Delete the bin folder
    • Delete the obj folder
    • Delete the wsp file in the project folder.
  • Re-open the project in Visual Studio
    • Compile the project
    • Build the WSP (Tools -> WPSBuilder -> Build WSP)

After this everything was back to normal.

4 responses so far

Nov 03 2009

HowTo: Find WiFi Passwords In Snow Leopard

Published by gringod under Technology

One of the neat features that I used frequently in MacOS X Leopard & Tiger was the ability to use the wifi connection tool to get the passwords for wifi networks that you have already connected to.  Being a consultant I am constantly hopping networks and using different devices (Laptop, iPhone, etc.), plus I also often get requests from family as to what their wifi passwords are.

This handy password re-call feature was removed from MacOS X Snow Leopard.  Once you entered a password in the wifi connection dialog box you couldn’t go back there to retrieve it.  This is probably a security measure, as it didn’t require the user to enter a password to get at the wifi password.

Well, I have just figured out how to get at them again.  All the wifi passwords are stored in your Keychain.  You can access the information using the Keychain Access application that is located in /Applications.

Wifi Keychain

You need to look in the System keychain, there you should find all the AirPort network passwords for all the wifi networks you have connected to.  Just double click on the one you want to see and click the “Show password” checkbox.  You will be prompted to enter your administrator password before being shown the wifi password in plain text.

Enjoy :-)

3 responses so far

Sep 23 2009

Local Food For Local People

Published by gringod under General

A Local Meal

A Local Meal

Every once in a while I manage to pull together a meal that astounds me.  I tweeted on Sunday with a picture of the meal in question.  What was really special about this meal was the sheer lack of food miles that went into it.

  • Razor clams
    • These were the heart of the meal and were freshly picked from the beach only a stones throw from my parents’ house.
    • They had a dressing of rocket – from my parents’ garden, garlic – from my parents’ garden and zest of lemon – bought but my parents’ do have a lemon tree!).
  • Mashed potatoes
    • Potatoes – from my parents’ garden.
    • Butter & milk – from the local dairy.
    • Chives – from my parents’ garden.
  • Carrots
    • Carrots – from my parents’ garden.
    • Cooked in olive oil – not local, and butter – from the local dairy.
    • Glazed with honey – from my parents’ bee hives.
  • Little Gem squash
    • Squash – from my parents’ garden.
    • Parmesan, salt & pepper – shop bought.

This was the first time I’ve been out collecting razor clams and didn’t really know what to expect but it was as easy as pie.  I’m not really a big shellfish person but the razor clams were really tasty.

The plan for the next low spring tide is to go collecting razor clams at Grand Havre and, as the tide comes in, head up the beach to go raking for cockles.

    No responses yet

    Jun 02 2009

    Free WiFi – No Internet

    Published by gringod under General, Technology

    On my way to bell ringing practice last night I happen to pick up a screw (easy tiger!) in one of my car tyres.  So during my lunch today I took the car into my local Target Auto Parts store to get the puncture fixed.

    Whilst I was waiting I did what I normally do with my spare time and whipped out my trusty iPhone to catch up with Google Reader/Podcasts/Twitter/games.  I’m sure you can imagine my joy to find that there is a wifi access point at Target which is open to the public.  I’m sure you can also imagine my devastation to find that, once connected to the wifi network I couldn’t access the internet.

    I spent the next 20 minutes playing around with the iPhones wifi settings, MobileTerminal and Safari trying to access the wireless router to see if I could “fix” it.  Result:  FAIL!

    So here is a plea to all companies that require customers to sit around twiddling their thumbs waiting for you to get a job done:  please, Please, PLEASE, if you’re going to tempt us with an open wifi access point, please follow through and provide access to the internet.  It really doesn’t cost that much and we’ll be much happier to come back next time!

    One response so far

    Jun 01 2009

    Use Bing As Safari Search Provider

    Published by gringod under General

    I’m always looking for the next great thing when it comes to Search.  Google is great but I can’t help but feel it could be better.  Since attending a developer course for FAST ESP back in January I’ve been looking for a Search provider that does more for navigating results rather than just allowing you to page through X thousand results until you get bored and try other search terms.

    Microsoft may have hit the nail on the head with Bing.com.  Whilst I think the interface could do with a bit more thought, the features are spot on.

    Unfortunately Safari browser on MacOS is tied to Google.com as the search provider.  Change the search provider requires changing the source code of the application… or Glims – a nifty Safari plugin.

    Once Glims is downloaded and installed, open the Safari Preferences and under the Glims tab select “Search Engines”.

    GLims Search Providers

    You then need to add a new search engine with the following settings:

    Bing.com settings

    For the copy-paste folks out there, the url should be: http://www.bing.com/search?q=#query#

    You can drag-drop the Bing search engine to the top of the Glims search engines list.  Also, select Bing from the search engines drop-down in the search box of a Safari browser window.

    I’m not sure if this is required for it to work, but you may need to set your Bing.com region to being the U.S.A.: http://bit.ly/42kg8

    13 responses so far

    May 15 2009

    VisendoSMTPExtender Management Web Service

    Published by gringod under .NET, Programming, Software

    Background:

    For work, I’m using a Windows 2008 Server virtual machine for doing all my SharePoint and .Net development on.  As it has got all of the cool stuff I’m working on, it is also the machine that I use to demo what I can do to clients.  Recently I’ve had a bit of a serge in the number of clients wanting to see Nintex Workflow 2007 (NFW2007) for SharePoint.

    One of the cool features of NWF2007 is the whole Lazy Approval system, whereby users don’t have to go into SharePoint to approve to decline requests, they can just reply to the notification email with “approved”, “declined”, “ok”, “yes”, “no” or any other recognised word as the first line of the email.  In or to demonstrate this I need to setup and email system on my local machine.  The SMTP (sending) side of things is easy as it is built in to Windows 2008.  However, POP3 is a bit of a problem.  Previous version of IIS had a simple POP3 service but that has been dropped in IIS7.  The Microsoft way would be to install Exchange Server but that is a little too heavyweight for what I am trying to acheive.  Luckily a company called Visendo provides a free solution to plug the gap.  So now I can demo Nintex notification features.

    Another feature I also wanted to demonstrate was setting up Active Directory accounts and then using those new accounts.  Nintex has got actions that allow you to interact with Active Directory but to then do anything usefull with the account required modifying xml config files and restarting the Visendo service.  But Nintex can call web services, so I’ve created a web service that has an AddAccount and DeleteAccount methods to update the Visendo configuration and restart the service.

    Download:

    I’ve made the source code for this web service freely available should anyone else want to have this sort of functionality: VisendoSMTPService.  The code is written against .Net 3.5 and is provided “as is” with no sort of warranty and is most definitely NOT recommended for live systems.  The code is released under a BSD License.

    3 responses so far

    Apr 16 2009

    FAST Powers Globrix Property Search

    Published by gringod under General

    C5 Alliance LogoToday I’m attending an event being hosted by my employer C5 Alliance in Jersey.  We’ve got two respresentitive from FAST (a Microsoft Subsidiary) hosting a presentation and discussion session about FAST ESP, Microsofts vision for the future of FAST and helping users to navigate to the search results they are looking for.

    FAST LogoAs well as the general bumf about how FAST ESP works, they have also done a couple of demonstrations of clients they have worked with.  Two very interesting sites that demonstration the power of FAST ESP in helping users quick find what they are looking for are Getty and Globrix.

    FAST @ C5 Alliance

    Globrix was a surprise to me – although quite logical now that I know – as I have been using Gobrix for a while to look for a house to buy in Guernsey.  Everytime I go to Globrix I just start with a general search for “Guernsey”.  The result navigators down the left and the price graph across the top allow users to quickly refine the search results – it’s also AJAX enabled so the user doesn’t even leave the page to get the latest results.

    The Globrix paradigm deviates from the normal type of property search website, in which the users creates a fixed query and if they don’t find what they’re after they have to create a new search query.  Globrix allows the users to dynamically build their query usign contextual navigators, e.g. you might select an area to search in then refine the number of bedrooms and then refine the price.

    FAST also differs from Google.  The power of Google is in getting relevant information to the user in the first few results (how many people look more than 2 pages through the results?) but this fails the users when they don’t know what they’re looking for, it requires to keep try to guess more terms or different combinations of terms to try and find what they’re looking for.  FAST allows the users to enter very simple search terms and then gives the users options to refine the query based on the context of the results that have been returned from thier initial query.  But it doesn’t end there, as the user refines their query the context changes therefore the content refinement navigators change with the context.

    Other interesting nuggets that come out of the sessions was the ability to search audio and video.  The scenario brought to the table was about having to record all telephone conversations and have those readily accessible for future retreival.  The simple solution to this is to store the audio files in a known location.  When indexing that location run the audio through a speak-to-text conversion service and index the resulting text and associate the audio file location with the index.

    In terms of SharePoint integration of FAST, we got a very sneak preview of an exciting new webpart that should be making its way into Codeplex in the not too distant future.  I’m not sure if I can more than that as I was informed that this web part hasn’t been announced yet – watch this space for more information!

    No responses yet

    Apr 08 2009

    Getting Things Done By Location

    Published by gringod under General, Software, Technology

    For several years now I’ve been trying to find a way of keeping on top of everything that I need to get done.  To be honest, I didn’t think I had a problem until I read David Allens book “Getting Things Done” (GTD).  It was whilst reading that book that I realised that I spend most of my time worry about what I need to get done and what I might be forgetting to do and not enough time actually doing things.

    I’ve had several attempts at trying to follow the GTD methodology but so far they have all failed and I’ve reverted to just relying on the good ole grey matter to remember what I have got to do.  I’ve tried using software to help me – iGTD, Midnight Inbox, OmniFocus, Outlook, iCal, Google Calendar – but the problem with a lot of these is that they are either platform specific (I need my laptop with me) or are calendar based (a lot of what I need to remember is not date specific).

    Other attempts have been centered around a notebook that I try to remember to take with me.  This has inevitably resulted in my failing to remember to take my notebook with me and therefore forgetting to update it what I have it to hand again.

    I am now embarking on another attempt to follow the GTD methodology.  This time I’m resting my faith on a relatively new entry into the GTD software arena: TheHitList form a compay called Potion Factory.  A couple of nice features that I’m hoping are going to make this easier for me to get along with are:

    • iCal syncing (I have all my calendars synced – iCal, Google, Entourage, iPhone)
    • Repeating tasks (cleaning fish tank, mothly invoicing, etc.)
    • Timer (hopefully no more getting distracted!)
    • Future iPhone support (I may forget my notepad but I NEVER forget my iPhone!)

    As great as this software is shaping up there is one striking feature that I think this app – and all other GTD apps – really needs.  Task Locations!  So I’ll go out to run some errands, get home and realised there was some else I could have got done because I was in the area but didn’t because I didn;t think of it whilst I was there – if I had a map on my iPhone of tasks in my current location I could get more done in less time.

    TheHitList Task MapI’m not sure of how the iPhone app UI is going to look for TheHitList but I came up with a (very) rough Photoshop version of what the desktop app might look like.

    This example is showing the Today list selected and the map with the number of tasks for today on their locations.  If you  had general list selected it might show the tasks for today in red with tasks in the future fading through to grey for tasks without a specific date.  With this type of functionality you’d be easily able to see if you’re going to a location for a specific task whether or not there were other things in the area you could do at the same time.

    4 responses so far

    Mar 23 2009

    ScriptManager vs ClientScript

    Published by gringod under .NET, General, Programming

    As part of a Microsoft Dynamics CRM customisation project, I was recently tasked with modifying an ISV add-in page so that individual sections of the page could be refreshed without having to refresh the entire page.

    That in itself was nice and easy, it just required the use of a couple of UpdatePanel and UpdateProgress controls to be dropped on the page along with a ScriptManager control to handle the partial postback requests.

    However, there were a couple of gotchas that I didn’t foresee.  Along with the partial updates, the client wanted the parts of the page to load the first time after the page had first loaded in the following order:

    1. Load base page.
    2. Start load of Application Status section.
    3. Start load of Risk section.
    4. Start load of Alerts section.

    Unfortunately, the ScriptManager that comes with ASP.Net AJAX only handles one postback at a time.  Any subsequent postbacks take precedence over earlier request, which is fine if you only have one update panel on a page but this initially resulted in only the Alerts section being loaded – the other postbacks being canceled.

    Luckily I found a very useful post on Amit’s Blog: Asp.Net Ajax UpdatePanel Simultaneous Update.  This post provides code that queues postback requests.  Ideally I would have liked to have the requests happening at the same time, but this is the next best thing.

    The other problem that I found was that one of the sections on the page had previously been dynamically creating and reqistering script that got loaded and executed when the page loaded using:

    Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
        "ShowNavBarItem", script.ToString());

    Unfortunately that doesn’t work with the AJAX ScriptManager.  Instead I had to change the code to use the ScriptManager to load and execute the code using the following:

    ScriptManager.RegisterClientScriptBlock(updatePanelApplications,
        typeof(UpdatePanel), "showNavBarItems", script.ToString(), true);

    This means that each time the section is updated I can re-generate the script and it will be executed again.

    With this AJAX loading and some enhancements to the SQL code, users now get a much fasted load and response time for the page as the no longer have to wait for the whole page to be rendered before seeing information appearing on the page.

    kick it on DotNetKicks.com

    One response so far

    Mar 10 2009

    The SharePoint Adrenalin Moment

    Published by gringod under Programming, Software

    I’ve been developing with SharePoint for about 9 month now, and by developing I don’t mean airy-fairy SharePoint Designer drag-and-drop, I mean proper getting your hands dirty in code because SharePoint doesn’t have an *cough* out of the box *cough* feature that does what you want.

    Mostly, deployment is done in two stages, firstly to a UAT box and then to a Live box.  Obviously the most efficient way to do this is to bundle your features into a solution which can easily be deployed onto any number of machines.  But, it does mean you have to make sure you’ve got everything right.  Untangling mistakes in your code can be a right royal pain in the arse.

    By the time you’ve developed your solution, tested it out, deployed it to UAT and tested it again you should be fairly confident that when you come to deploy it on the Live server things should go pretty smoothly.  And, touch wood, to date things have gone smoothly.

    But I still can’t get over that rush of adrenaline that comes with clicking “Activate Feature” after deploying the solution on Live.  In the second or two whilst the page waits to reload my mind runs through all the possible things that could go wrong and how long it would take me to unpick the changes my code might have got half way though.  Then the page finally loads…..

    ….. “Feature Activated”, phew!  Time for a lie down to clam my nerves.

    2 responses so far

    Next »