Wednesday 31 December 2008

var content = FunctionalFun.Articles[2008].Top()

We come to that time of year when bloggers traditionally (it only takes twice to make a tradition!) indulge in a little self-promotion to drive traffic to under-appreciated by-gone posts. And who am I to dismiss the collective wisdom of bloggers around the sphere? So here it is: The Best of Functional Fun 2008

It's always strange looking back on a year just gone. Coming out of the Church Watchnight Service at 00:00 hours on the 1st January 2008 I had no idea that the coming year would see me start a blog, travel half-way round the world to a conference or undertake the expansion of our family (note to my wife: order of appearance in this list does not indicate order importance).

I launched the blog with a series of posts on Project Euler, publishing solutions for 25 problems so far. According to Google Analytics and Outbrain, the most popular posts in this thread were:

It wasn't long before I diversified. I felt the need to try my hand at more meaty topics, so I tackled the subject of tail-recursion and trampolining (a cunningly placed Wikipedia link keeps this article in the top five!). Just thinking about such energetic-sounding subjects tired me out, so I wrote a follow up article, adding the term Lazy Trampolining to the lexicon.

LINQ has proved a great source of inspiration. Early on, I hitched a rid on the LINQ-to-* bandwagon with my articles on LINQ-to-Console and LINQ-to-Reflection. A few months later, my two-parter on Reporting Progress during LINQ queries and Cancelling Long-running LINQ queries proved very popular, even appearing briefly on the Amazon.com site when Marco Russo linked to it on the blog for his Introducing LINQ book.

Given my love for things new and shiny, it is inevitable that the the W*Fs made an appearance. The second-most popular article on the site is my walk-through of how to set up a test X.509 (alias SSL) certificate for WCF - a procedure that isn't as obvious as something that important ought to be. Interestingly, the top article on my blog is a helper class I wrote to work around a limitation in WPF's PasswordBox (Microsoft take note!): I show how to Databind to its Password property. Also popular (ranking #3) is my post kicking off what I warned would be a sporadic series on How to Create a Gantt Control in WPF; so sporadic that in four months only Part 2 has appeared!

As unpleasant as the realisation is, I often have to remind myself that my job isn't all about programming. We actually have to make money working by solving customers problems (I wrote about some of my projects back in July). Project Management is what programmers need to make them profitable, and in the last year I've come to think that Agile techniques (see my take on Agile) are the sugar needed to make the Project Management medicine go down. The post where I described how we're doing Agile planning generated the biggest spike in my traffic stats (thanks to a link from DZone) and the most nagging about when I'd follow it up with a post about how the theory plays out in practice (I'll get there soon Rob!).

And what would a blog be without a little gentle humour? Some may suggest that you look at this site to find out - but I tried as hard as my geeky sense of humour permitted:

With that, it just remains for me to wish all my readers a prosperous and Functional new year, and to thank you all for the encouragement by way of ratings, comments and emails. Happy New Year!

Monday 29 December 2008

5 Stars for Outbrain

Just a little note to say a public thank you to Outbrain who provide the Ratings widget at the bottom of each post on this blog. I've received truly excellent customer service from them, though they don't charge a penny, so I figured this would be a nice way to repay them in kind.

As I mentioned before, this blog has been suffering a Denial of Kudos attack, even on Christmas Day. When I raised this issue on the Outbrain Feedback site (which they host on the innovative getsatisfaction.com) they responded very quickly and sorted the problem out as far as they could.

But the moment they truly shone was Christmas Day. I'd posted in the morning about the latest crop of spam ratings (I managed to get on the laptop with an excuse to my wife about making sure my brother got his Amazon gift vouchers ;-) ). That evening I checked my mail (I've got Gmail on my phone, so it's easier to do undetected!), and found a response from Kate at Outbrain to say that they'd been through and cleared out the illegitimate ratings, which I know is a time consuming manual job. That was beyond the call of duty, Kate. Thanks!

As an aside, whenever I invoke the name Outbrain in a post, it usually brings a swift response from them via the comments. I assume you Outbrainers aren't subscribed: are you using some kind of universal blogosphere monitor?

P.S. Kate, they've been at it. Another 20 spam ratings yesterday. I'm wondering if they're enjoying the notoriety: I'll try shutting up about them and see if that dries them up.

Thursday 25 December 2008

An unoriginal Christmas gift

Happy Christmas to you all.

Do you know what my Christmas present was? Another gift sent via Outbrain:

Outbrain

At least the colours are seasonal!

Tuesday 23 December 2008

Denial of Kudos Attack on my blog

A couple months ago I set about trying to garner a few sympathy votes for my blog by complaining about the low star ratings that many of my posts were receiving. And as a demonstration of how not to carry out a controlled experiment I changed the ratings widget at the same time, from the Blogger default to Outbrain. One or other of these measures succeeded and my ratings improved no end.

Over the last few months I've been getting pretty good ratings, at a rate of about 35 a month, mostly 4 or 5 stars. It makes my heart glow rosy pink when I think that people have appreciated my work enough to rate it.

Then at the beginning of December my blog received some unwelcome attention. Logging onto Outbrain one evening, I noticed a crop of about 20 ratings, all sprung up since that morning. Odd, I thought, since that's half my usual monthly quota. And they were all angrily red - 1 star ratings - rather than the glowing golden fours and fives I'd been attracting. The next thing that stood out was that they were all from the UK (Outbrain logs IP addresses with each rating, though it only shares country of origin - it would be useful to see more details), and all posted within the space of a few minutes, faster than anybody could click through the posts. Alarmed, I checked the visitor logs on Feedburner and Google Analytics: tellingly, there were no corresponding visits logged from the UK. My conclusion? This bore all the hallmarks of a Denial of Kudos attack.

But that was just the beginning. Since then, I've racked up over 360 ratings, 1000% up on my usual tally. Most from the same place (so far as I can tell), all the same damning rating. It doesn't happen continuously; usually a block of 40 or so "spam" ratings will appear each day over a weekend, then nothing for several days.  I'm at a loss to know who or what's behind it. It's almost as if someone is monitoring the average rating, then shooting single star ratings at the blog to bring down the score if ever it rises above some mark.

Kate at Outbrain confirmed to me that it does appear to be a bot that's posting these ratings, running in an environment without cookies, which is how it evades the usual guards against multiple ratings. A few other UK blogs have been targeted, but why mine should be among them, I don't know. Outbrain manually cleared up the first hundred or so spam ratings, bringing my average ratings back up again. But more have appeared since then, which explains the current lacklustre scores. I have been promised a second spam clear out, but it has yet to happen.

Is this the handywork of some script-kiddie? Or somebody more malicious? It's definitely a very high-tech way of forestalling any pride I might experience in my work.

Anybody else suffered anything like this?

Saturday 13 December 2008

Announcing a new family development project

The family Jack is proud to announce a new project, code named Baby Jack 2.0.

My wife and I decided that the Agile methodology would not be appropriate in this instance, so we will be following the traditional Waterfall pattern. Requirements analysis has been completed (boy or girl will be just fine; complete set of appendages is a must). For the Functional Specification and Design stage we were fortunate in having complete blueprints that we could appropriate for ourselves - reverse engineering DNA is beyond my current skillset, even taking into account the potential of C#4.0. Build is now well underway: after 12 weeks we have a complete implementation, and we're just working on scaling the product up and out. We aim for a single delivery in the June timeframe, based on current progress.

An early screenshot is shown below:

BabyJack2-0Scan_12_08_2008

Monday 1 December 2008

Typealyzer says I'm a Scientist

I submitted my blog for a personality test today, and I suppose, since it didn't write itself, the result must apply to me. According to Typealyzer, I am a Scientist:

The long-range thinking and individualistic type. They are especially good at looking at almost anything and figuring out a way of improving it - often with a highly creative and imaginative touch. They are intellectually curious and daring, but might be pshysically hesitant to try new things.

The Scientists enjoy theoretical work that allows them to use their strong minds and bold creativity. Since they tend to be so abstract and theoretical in their communication they often have a problem communcating their visions to other people and need to learn patience and use conrete examples. Since they are extremly good at concentrating they often have no trouble working alone.

What are you?