Depude and randomise 2 lists

I was asked to take 2 lists of names and dedupe the newer list with the names in the older list, so we only had a list of new names in a specific period (no dates here to help out!).  Turned out to be a lot simpler than I thought.  At first I thought Excel spreadsheet as the data wasn’t in a database.  I thought I could do some fancy filter action, but nope!  That was harder than a diamond on a bouncer’s knuckle!


The solution was a real simple tiny bit of .NET code:

 var likes = System.IO.File.ReadAllLines(@"D:\likes.txt");
 var olds = System.IO.File.ReadAllLines(@"D:\lomb-likes.txt");
 var duped = new List<string>();

 Array.ForEach(likes, like =>
     var found = false;
     Array.ForEach(olds, old =>
         if(old == like)
             found = true;


 var result = duped.OrderBy(dupe => Guid.NewGuid()).ToList();

Simples!  Now get on with your work and stop reading my blog!

Microsoft.Web.Administration.dll Scripting IIS 7.0 on Vista

This is not a full article on how to script IIS7.0.  It’s about getting to that point on how to do it.  And as per usual the internet was full of incomplete information.  Here’s my complete solution when I faced problems.

Firstly the namespace Microsoft.Web.Administration was not available, nor was it in the .NET of the “Add reference” menu option.  To solve it I had to browse to:


and reference the


in that folder.  The namespace was available, and so I was rocking…straight into another brick wall!  What these other websites again forget to tell you is to set permissions on a specific file that the code I will give in a second, needs to have to be able to run.  So the file is found here:


and you need to give it the ASP.NET/NETWORK SERVICE user in security with READ access.  But guess what!?  Yes that still didn’t solve the issue!  I had to go into IIS7.0, choose the Application Pool I was working with, and change the Identity value to LocalSystem.  So thats:

Open IIS > Expand IIS > Application Pools > [select your application pool] > Advanced Settings > Process Model > Identity = LocalSystem

Job done.  Yes at last!  Woo!  I could then add new Rewrite rules into the web.config without having to manually go into IIS!

The code as promised

using System;
using Microsoft.Web.Administration;

public partial class new_iis : System.Web.UI.Page
    protected void Page_Load(object sender, EventArgs e)
        using (ServerManager serverManager = new ServerManager())
            Configuration config = serverManager.GetWebConfiguration("HIE");

            ConfigurationSection rulesSection = config.GetSection("system.webServer/rewrite/rules");
            ConfigurationElementCollection rulesCollection = rulesSection.GetCollection();

            ConfigurationElement ruleElement = rulesCollection.CreateElement("rule");
            ruleElement["name"] = @"GoToGoogle2";
            ruleElement["stopProcessing"] = true;

            ConfigurationElement matchElement = ruleElement.GetChildElement("match");
            matchElement["url"] = @"^google$";

            ConfigurationElement conditionsElement = ruleElement.GetChildElement("conditions");
            conditionsElement["logicalGrouping"] = "MatchAll";
            conditionsElement["trackAllCaptures"] = "false";

            ConfigurationElement actionElement = ruleElement.GetChildElement("action");
            actionElement["type"] = @"Redirect";
            actionElement["url"] = @"";

            rulesCollection.AddAt(0, ruleElement);


But I never wrote the code. I found it at so I have to massively thank them for showing how easy it is.  And remember you will be able to edit any part of the web.config via this code, or similar code ’cause you will need to edit it to your needs.

ASP.NET __doPostBack is not defined

Wow! What a fucking morning! I came into work today to get something working. That something should have been real easy to do (you don’t need to know what it is, just that it was going to be real easy). I exported a copy of the core code, associated it to my website so that I could run the debugger through it and make my changes. This was going to form the basis of the next version of the core code.  But for some reason when I hit any button I received __doPostBack is not defined error in the javascript error console of Firebug. Continue reading ASP.NET __doPostBack is not defined

ASP.NET ValidationSummary – Stopping the scroll back to top

I came across an issue today with a validation summary form on a sign up form.  The form was at the bottom of a page containing much text…well that’s what was in the design and it will probably turn into “Please sign up here” once the client get’s their hands on it.  But that’s par for the course.

Now because the sign up form was below the lorem ipsum text in the design, I also placed the validation summary below this.  But this causes a small technical issue when you hit the submit button and some of your elements do not validate, the whole page scrolls to the top.  Not very easy for a user to see what went wrong without scrolling back to the form.

Why does this happen?  Microsoft in their infinite wisdom have placed some really annoying javascript into their validation code.  If you inspect the shite that Microsoft pumps into the page with a form and validation controls, you may find (there is a lot of code) a window.scrollTo(0,0) line buried away.  This of course scrolls your window back to the top.  For most cases this will be fine, as most cases the form is not preceded by craps loads of text, and your validation summary will either be at the top, or be as close as dammit to it.  Not in my case, and not as it seems many others.  So I had to find a solution. Continue reading ASP.NET ValidationSummary – Stopping the scroll back to top

Uploadify your large files in .NET

With the increase in memory for servers and the subsequent decrease in price, you’d have thought .net would have had a better way to upload files of a larger persuasion built in.  Nope!

So when I found Uploadify I thought, ooh that’s nice!  And I have to thank William Duffy (again!!) for this find.  It gives you a real nice uploading widget thing without the dreaded postback.  As it uses Adobe Flash to achieve this, it means you can concentrate on other things, like the CSS.  It’s also VERY lightweight, only 30kb for the min’d javascript and the swf file.  Well done lads. Continue reading Uploadify your large files in .NET

Facebook’s Graph API and

Am enthralled with the new Facebook API. It’s awesomely simple to use. I mean really simple to use. They have changed the authentication process as well, and fuck me it’s so so much simpler than before.

Previously I integrated Facebook Connect with iMapFlickr, to allow uses to post to their own wall automatically, saying that they had created a new map about cheese and bunny rabbits.  But it was such a pain in the ass to use.  But I did it, although am a little balder for it!!

Facebook – now with added thought

The new Facebook API throws essentially everything they have done out the window, rewriting everything and using oAuth to authenticate a user.  They have even made oAuth simpler, which leads me to think it’s not really the full oAuth specification, but hey it works nicely!

But one thing they forgot to do was let .NET developers in on the secrets.  They released all the libraries and code and examples for other programming languages but .NET is sitting outside of Facebook Towers crying, not being allowed into the party as it has “Microsoft” as part of it’s name.  Fuckers.  I sold me soul to Microsoft a long time ago, so I have spent some time working this out. Continue reading Facebook’s Graph API and

File uploader with javascript extension validation

I was recently creating a form that needed to upload an image only to an email handler.  The file would then get emailed to the client.

The way that we have always worked this, is the fileupload control posted back to the server and checked the fuImage.HasFile and then fuImage.FileName, maybe even using the FileInfo class to let it grab the extension, and check it against a list.

But I realised that is real old school, and with the loveliness of jQuery and regular expressions. Again the internet failed me almost, as there are not really good posts or helpers out there that do this. Everything that appears seems to be out of date, or does something similar but not what am wanting. Well here is a quick script to check the file extensions and inform the user if the file is an image or not:

$(document).ready(function () {

        $("#btnRegister").click(function () {
            // check if the file you are going to upload is an image or not.
            var filePath = $("#fileUpload").val();
            filePath = filePath.replace(/^\s|\s$/g, "");
            if (/\.\w+$/.test(filePath)) {
                var m = filePath.match(/([^\/\\]+)\.(\w+)$/);
                if (m) {
                    if (m[2] == "gif" || m[2] == "jpg" || m[2] == "png" || m[2] == "bmp") {
                        return true;

            alert("Please make sure you upload only pictures.");
            return false;



And that’s it. You can quite easily change the file extensions here to suit your needs, even try and do something fancy with call backs to the server with the file extension so you can read a dynamic list or from a config file or something, how should I know that’s you job fs!!

Using a Bespoke CDN with WordPress

I have been helping a friend with his website lately and again it started to slow down, due to the massive traffic the site gets.  The last time I checked the stats Elephant Journal get’s 250,000 visitors a month with approximately 450,000 page views!  That’s quite a busy wee site.

A while back we moved some of the static files off site, and that helped massive get the site another 70,000 visitors a month – people didn’t drop out or bounce while they were waiting for the site to load.  This was real easy to do, and just meant we pointed the URL of the file to the new server.  But now the site is slowing again, and I believe it is due to the massive number of images that get downloaded.  So how do you move all these images off site and update all the URLs?  WordPress comes to the rescue…but you need to do some coding. Continue reading Using a Bespoke CDN with WordPress