Sit down children, and let me tell you a story.

Once upon a time, in a land far, far, away, where computers were made of gingerbread and circuits made from carefully laid 20nm icing, there existed a city of programmer fairies, ruled by a reasonable king and several queens. The fairies used to write software for their king and queens, who in turn exchanged it with other kingdoms for pizza and caffeine based drinks. The fairies coded by the age honoured techniques of old: they wrote some code, then ran it, tested it by hammering away at the ui and then, when it broke, wrote changes to fix the problem. The fairies did this day in and day out, and the amount of time they spent actually writing any code was dwarfed by the amount of time they spent hammering at the UI to check that what they wrote work. The kingdom was doing well enough, and most of the fairies had enough pizza, and almost enough caffeine.

But the fairies were unhappy. Some of them even sang a little minor-key song about how unhappy they were. The work was tedious and dull, and the fairies wanted nothing more than to get on with actually solving problems rather than having to test their code all the time.

Then one day, an especially bright fairy (who for the sake of social-justice, came from a poor family with birth-control problems) decided that they could take away some of the tedium of testing little bits of their software by writing other bits of code which would test the bits for them. With a few of these “tests”, they no longer had to worry how these bits behaved. If it broke, they were told by the test runner goblin, who was fast, efficient, and could run multiple tests at once. It took the fairies time to learn these new “tests”, and it was slow at first (slower than the old method), but the developers felt freer, and were better able to handle the change requests sent down by the king and queens.

Some of the fairies resisted the new ideas, and didn’t trust code to test other code or didn’t trust the goblins to run the code correctly and blankly refused to use the new idea. They believed in their old techniques, and carried on coding and testing by hand. “It had worked for so long, so why change it now?”, they told themselves. When the change requests came down from the king and queens, they found their code brittle, and worked longer hours to fix it. They became embittered and resented the enlightened fairies. They took to the dark, fearing the daylight and all it implied. Some became system administrators.

Then an epiphany came to an especially clever fairy (who for the sake of fairy-tale narrative, may have aspirations towards one of the kingdom’s princessess). They decided that as well as testing individual bits of the software, they could also test overall behaviours of their software. This felt like magic, as now once they had written about the behaviour of a bit of their software, they didn’t have to perform those actions again – the magic did the heavy lifting for them. This was even better, and the kingdom ran even more smoothly! The king and queen were elated, as changes were handled for customers quickly, and the kingdom ended up stockpiling pizza and trading it on the open market.

But the reclusive developers became embittered, and left the kingdom. They hid under bridges and shied away from the light and other developers. They didn’t want to share, they didn’t want to learn, and their bodies became twisted and grey, they lost their wings, and their eyes became bigger, and could no longer look at the light. They became trolls, and cursed the kingdom for what they had become, despite their fate being by their own hand.

I was up til 2am on this one.

A client’s relatively shiny-new SQL Server 2008 R2 Reporting Services Express install was failing to start. Pinging the relevant URLs:


http://server/reports


http://server/reportserver

Was continually responding with a 503 error. No further detail, just a HTTP 503 response, which translates to “Service unavailable”. The Windows “Report Server” service was running, and started/stopped just fine. My normal response to this kind of problem is to start looking at logs – Windows logs were all clear. I googled around the subject, which gave several “poke and pray” solutions, not too helpful.

To fix a problem like this, you need logs. Every single StackOverflow, or forum response to this problem should read “check what’s going on in your logs”. You don’t diagnose a medical condition without some evidence to back it up. You need data.

A few responses pointed to this MSDN article which gives you details for turning on HTTP event logging. Genius! Except that all you get is a line which reads:

2012-02-17 17:51:38 192.168.23.204 1222 192.168.23.240 80 HTTP/1.1 GET /Reports 503 - N/A -

Not very helpful. Eventually, after ingesting far too much caffine and having to dig around in Reporting Services textbooks, I found a reference to the Reporting Services log files, in this case located here:

C:\Program Files\Microsoft SQL Server\MSRS10_50.SQLEXPRESS\Reporting Services\LogFiles

From there I was able to diagnose the problem as relatively trivial and fix the configuration problem. In my case (yours will most likely be different), the problem was related to an empty RSWindowsExtendedProtectionlevel XML tag in the rsreportserver.config file. For your own individual problem – READ YOUR LOGS.

Today I feel it is appropriate to finish with:

I am learning Ruby and Vim. I’m also attending the Preston Codejo hosted by Magma Digital, where were using Ruby as the driver.

As I am wont when learning a new platform (or new techniques on a new platform), there is a build of Conway’s Game of Life on GitHub:
https://github.com/kianryan/RubyGameLife

This is a curses based implementation which can run with either the defaults, or run with parameters:

ruby life.rb [rows] [cols] [num_pos]
where:
rows - Number of rows to display
cols - Number of cols to display
num_pos - Number of initial positions to set.  This is done randomly, so you are likely to get less positions than specified.

Press q to quit when you’re bored. Feel free to fork, make changes, ideas, pulls, etc.

Bad Behavior has blocked 117 access attempts in the last 7 days.