Tags: railstomcatjruby

Today I realised that one of our new quality monitoring applications, Sonar, which we deploy to a Tomcat server, is actually a Rails application. This intrigued me a lot. We have a very heavy Java culture at work, whilst I have a backgound in, shall we say, simpler, less enterprisey technologies. This lead me to figure out how easy it was to get Rails up and running on JRuby.


We'll install Ruby along side of JRuby, but we will stick to Ubunutu's currently supported 1.8 as this is compatiple with JRuby. This way we can develop ...



Tags: haskelllbach

There are a few kinds of loops in your average imperitive langauage. There are pre and post-condition loops, loops which you can break out of the middle and then there a loops that iterate over a collection.

We'll progress through these in increasing difficulty. Starting with an infinite loop, through to your standard for loop.

The Grammar

First of all we will define the grammar for all out types of loops.

//Infinite loop
LOOP        { L = getLbl;
              emitLbl L }
END     { Emit(jmp L }

//Post coditional
DO          { L = getLbl
              emitLbl L }
<condition> { Emit(JNE L) }

//For Loop
FOR ...



Tags: haskelllbachstate monad

In the last installment you may have noticed that there was a lot of state threading in the emitter functions. This involved a lot of careful ordering of s1, s2 etc. which is quickly becoming a problem. Especially so when you aren't consistent with parameter ordering - getLabel took the counter last whilst emitStatment was taking the counter as the first parameter.

It is a misnomer that functional programming cannot have state, rather it cannot have side effects, which is a very different ideal. If you need to maintain state in your application, and a compiler inherently does, then you ...



Google AI Challenge 2010

Tags: google-ai-challengeplanet-wars

The Google AI Challenge has started for 2010. This year the challenge is based on a simplified version of Galcon.

I've been playing around with the Python starter package to get a feel for it. AI, whilst a field I am interested in, I have absolutely no experience with. I am fumbling and googleing my way through the first few attempts.

I intend on switching to Haskell once I get my feet under me, as there is a 1 second time limit for each turn, and as my strategies get more complex, the Python version is going to reach ...



TechEd Highlights

Tags: autechedteched australia

I recently attended the TechEd conference on the Gold Coast, and it was a well organised and hectic three days. With around 3000 delegates, 15 tracks and 2411 talks and presentations it was definitely big.

The facilities were exemplary. The exhibitors were seperated from the presentation halls so that you could avoid the vendors between talks. The catering was plentiful. And I spent a fair amount of time with the Lego in the chill out area. Check out the Flickr Stream to see what it was all about.

But the purpose of the event was to learn something. Which ...



Announcing SPProfileDump

Tags: sharepointsspprofiles

SharePoint Profile Data Export Import is a simple command line utility to export the data associated with profiles in SharePoint.


During a farm upgrade I needed a way to bring across all the profiles from the old SSP to the new SSP. Some of the data in the profiles was original content and was not in any of the profile source systems e.g. Skills etc. As I didn't want the users to have to re-enter all their information, this tool was born.

But why write something?

During my research I could not find anything that got the ...



SharePoint Solution upgrade woes

Tags: sharepointfeaturelayouts

Recently I was upgrading a bunch of master pages, layouts and CSS files in a SharePoint 2007 via a Solution when I ran into a problem with deployment. No matter what I tried, I could not get my new look to take.

I tried all the usual stsadm commands. First I tried just an upgradesolution, then I tried forcing a redolyment as well. I even went as far as to delete the solution and re-add, but all to no avail. Everything I tried was met with a furiating 'meh' from the servers.

SharePoint Storage Model

SharePoint has an interesting concept ...



Thoughts on Drupal

Tags: drupal

With the release of a large website redesign using Drupal successfully launched, I thought it was time for me to evaluate what I thought of Drupal.

This review is of using Drupal 6 in a commercial environment for a medium to large website with over 600 pages, and a traffic profile of approx. 10,000 hits per hour with almost 90% bounce rate off the home page.

I will cover each of the stages of development: implementing the template, installing and configuring modules, importing the content, integrating other services and deployment.


The template system in Drupal is a powerful ...



Tags: lbachhaskellcompiler

It's time to move on from basic mathmatical expressions and start looking at control structures.

The Program

First of all we will create some 'holding' functions. Let's define these first.

<program>::=<block> END

What this says is that a program is a block followed by the end keyword, and that a block is any number of statemtents.

As usual this requires a type, a parser and an emitter.

Parsing a Program

The types are very simple.

    data Program = Program Block deriving (Show)
    type Block = [Statement]
    data Statement = Statement String deriving (Show)

Because multi-character keywords are pretty ...



Tags: lbachhaskellcabal

The preferred method for creating distributable Haskell packages, whether they are libraries or programs, is with the Cabal. The Cabal is a small wrapper around the build tools, and allows some standardised dependancy management, license distribution etc.

Setting up our compiler to use Cabal

Unfortunately the mkcabal package, which automates the creation of a basic cabal enabled Haskell package, won't install under OS X Snow Leopard yet, so we are going to have to do this by hand. Don't worry - it's not that hard.

Create the following as lbach.cabal.

Name:                lbach
Version:             0.1
Description:         Toy ...