Latest Entries »

WordPress on 64bit IIS6

I’m one of the thousands of people who are all-in-all pretty impressed with WordPress as a blogging platform. As a primarily windows developer I have looked around for half decent .NET alternatives, and there are a few such as Das Blog and BlogEngine.NET, but none are as “polished” as WordPress.

With this in mind I went about installing php and mySQL on my windows 2003 64 bit virtualization slice, which isn’t as straight forward as you might expect.

Step 1: Install PHP

Well it turns out that php and IIS play quite nice together, and have done for some time now. It is also a fairly well written about setup process see:

So I followed the instructions given and everything went ok until I navigate to a test.php page and hit:

Invalid win 32 app

The problem is that the only supported version of the php ISAPI filter .dll is compiled for a 32bit machine.  Now it turns out that IIS can only load applications that are either ALL 64-bit or ALL 32-bit. Not to worry as we can enable IIS to run under 32-bit by throwing this at the command line:

cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

This is fine if your aspnet_isapi.dll referenced by your ASP.NET sites are 32-bit.  Otherwise (like me) any ASP.NET sites living on the box will crash, taking its application pool with it (bye-bye

So what are the options? Either I and reset all my ASP.NET sites to use the 32-bit aspnet_isapi.dll or I find 64-bit php libraries, I went for the latter. If you hop along here you will find a nicely zipped up 64 bit php instance (Note: Its the

Step 2: Install mySQL

Fortunately, mySQL do provide a supported 64-bit windows installer so its only really a matter of following the instructions. If you require a step-by-step installation guide for this then see here.

Step 3: Install WordPress on IIS6

Yet again, this is a fairly well documented process and shouldn’t cause you too many problems. The only other bump in the road I hit was that I forgot to remove the comments referencing mysql in the php.ini file, in which case WordPress will dutifully report “your php installation appears to be missing the mysql which is required for wordpress“.

Other than that, happy blogging.

Just finished been put through my paces for the 2nd time at ThoughtWorks. This time it involved another technical interview and a quick hour or so pairing exercise.

Well this time I’m told that I have definately made it. Honestly!!

Bring on ThoughtWorks University.

Yesterday I received a confirmation call that ThoughtWorks had provisionally accepted me to become part of their team!!

Apparently there was somebody (don’t know who) missing from my interviews this week, so I’ll need to go to London to round off the process.  I am living in hope that this is more of a formality, but there is always the option that I can still screw things up!

I’m also told that the other guys who joined me in the process weren’t so fortunate, even though they all seemed fairly clued up guys to me. I have no ideas what I did differently, but I am very happy that I’m one step further to becoming a ThoughtWorker.

EDIT: Looks like my recruiter got some wires crossed somewhere, as the next interview will certainly not be a formality. I have another technical interview at hand and a pairing exercise. Time to worry a little more!!!

Today we launched a site to host dotless – less css for .NET and decided to tweet about it a little. Now the fact that I’m new to twitter and generally don’t have anything interesting to tweet about means I have about 3 followers. Some of the guys in and out of the dotless project however a slightly larger following, hence 1 hour in and we have had ~120 viewers.


Recently I’m happy to say that I’ve had the privilege of  going to interview with ThoughtWorks.

The Code Review

The process was initially kicked off by completing a small coding challenge that was later reviewed.  The coding challenge was actually quite a lot of fun, and it echoed memories of  previous university assignments.  As you may know ThoughtWorks heavily promote an agile approach to development so I thought it would be wise to keep my solution simple and with few premature optimizations.

The Interview Rounds

After my code was reviewed I was invited to come in for a day of interviews and assessments. The day started at 8:30pm at a location a few hours from my home, and after a few weeks break from contracting it’s fair to say that this was a slightly early start than my body is used to. When I arrived for I met two other developers that were also there to go through the motions. Unlike myself, the other guys had opted to go for the casual option (I now suggest that this is the better option as I was the only fool in a suit).

My first interview was the HR/Management interview, which was a very informal chat about aspirations, the company and life in general.  I’m pretty sure that this interview went well as it ended with me been told that I would be a good fit and if the other reviews went well I’d be in (so far so good). The next step of the process was a cultural interview which further introduced me to the company and how they operate. This interview was my weakest, and although I feel it went OK, I left with a slight feeling of uncertainty.The final step was the technical interview, and this was the one that I was initially most fearful off (I guess I thought that I might be found out as a fraud or something). I need not have worried as it basically consisted of a bunch of us geeks sitting around around and talking about what we like in software developments. I think I held my own here, but who knows I could have come across sounding like a complete Muppet.

The Assessments

So with the interviews over with and a general feeling that I haven’t completely screwed everything up, the next hurdle is the assessments. These start off with one of those personality tests that determine if your a serial killer or not.

Next comes the Wonderlic assessment, which is basically very simple aptitude test that they use in the NFL pre-draft (for some reason). The key to this test is speed, and I cannot stress this enough, do not mess around here just fly through them asap. One other thing worth noting is that the questions are very squashed together so its worth using another piece of paper, or a ruler to line up the question with the appropriate answer space (valuable time was lost here).

Finally, there are a series of logic tests that require complete concentration to get through them. Anyone who remembers learning about  the Turing machine will feel some familiarity here.

My experiences aren’t good here I am afraid, as I broke a personal rule of mine – “if you don’t understand something ask”. The problem I had is that the example scenarios were worded in such a way that confused me and I didn’t ask for clarification. While I did later understand what was been asked of me I lost valuable time on something that I should not have, and subsequently I made some mistakes that I otherwise would not have.  So the moral of the story kids is make sure you understand the examples given before you start the assessment!

What’s next?

Well we were told that the review process will take a few days and that we should be informed late next week. I’m not holding my breath, but if I don’t get offered a position I will not have any regret coming in to meet them. I can honestly say that everyone I met was passionate about the work they were doing and despite the long hours and extensive travelling that seems to be involved in the role they all seemed happy in their jobs.

nLess – Less Css For .NET

While the world ticks by and time to play with personal open source projects gets more and more limited it seemed like the best thing to do was to push live what I have with regards to my .NET version of  the Less library. With this in mind I have pushed my latest code up to codeplex at:

When time permits(i.e. when I find a stable contract for a few months)  I’ll get back to working on the project, but until then enjoy the codeplex release.

EDIT: We now have a shiny new home for the .NET Less port –

Combining forces

After a few Skype chats with Erik we have decided to get out heads together and merge our LessCss .NET ports. This can only be a good thing and Im looking forward to see what the results are.

The tortoise and the hair

Today I learned that I was not the only one who though LessCss warrented porting to the .NET world, it appears that Erik van Brakel at smooth friction may have piped me to the post.  Looking at his project it seems I may be a few steps behind, though he also doesn’t have the Less spec tests passing.

So what do I do with this new information? Should I throw the towel in now? Well, maybe, but I have put too much time in to not finish my port, even if it ends up been more of a ill performant hack job than Erik achieves.  Time will see how it all plays out, but either way its been a great learning curve and Im glad there are people out there filling gaps who are happy to take on these types of projects.

So my Less port is finally producing some nice output for example the following css:

@small-padding: 10px;
@large-padding: 20px;
@black: #FFFFFF;
@red: #FFFFFF;
@lessred: @red - 20;

background:url(images/logo.png) @lessred;

#banner {
border:solid 1px red;


.logo{ background: url(images/logo.png) #EBEBEB ;
#banner{ height:100px;
border: solid 1px red ;
background: url(images/logo.png) #EBEBEB ;
#banner{ list-style:none;

There is still a way to go, and the next step will be getting all my outputs to match the Less spec defenitions.

Playing with PEGs

Im now part way through the Less CSS port and i am getting close to porting the core libary for programatically building the Less nodes that are evauated to create CSS. This now seems like a good time to look at the parsing element of the project.  Less originally uses a TreeTop as its parser libary, which I gather is a really powerful PEG/PackRat parser.  Now it should be said at this point that I know even less about parsing theory than I do about Ruby (why did I start this!).

My first steps here are to find out what the darn tootin’ a PEG parser is and see what C# had to offer. After a few hours hunting the bad news is that the .NET world has very little to compete with TreeTop although I did find a very detailed article about PEG parsers with a little implementation of one.  After downloading the code I can see that this is more than a “little implementation”, there has been a hell of a lot of work done on this project and it looks promising for a TT alternitive.