Favourite blogs for George Riches: Complaints from a middle aged layabout

Bookmarks » All entries

June 26, 2019

New Warwick interdisciplinarity hub for students

Writing about web page https://warwick.ac.uk/students/opportunities/interdisciplinarity/

We've got lots of interdisciplinarity opportunities for students at Warwick. This is so important for their ability to cope with and succeed in the modern world. Bo Kelestyn and the WIHEA Interdisciplinarity group have created a brilliant new web site that tells students every thing they need to know.

Warwick Interdisciplinarity Hub


April 12, 2018

Using Bootstrap

Writing about web page https://johndale.info

Learning how to use Bootstrap cards to make a responsive website – https://johndale.info. Fun!


May 11, 2016

Le Port–Museé, Douarnenez, Finistère, Brittany

Writing about web page http://www.port-musee.org

Douarnenez is a small town on the coast in the bottom corner of the bay that stretches out towards the Crozon in the north and Cap Sizun and Pointe de Raz to the west. Finistère does of course mean "the end of the land" - but for many Bretons now and in the past, with their love of the sea, it really means "the start of the ocean". Douarnenez is, these days, as much about beaches, cafés and coastal wildlife as it is about real oceanic adventures. But its two ports are still busy with leisure and historic craft, as well as a few working boats. You can even buy Douarnenez sardines in Waitrose.

Sardines

But in addition the town has put some effort into maintaining its link with the sea. There is an annual tall ship festival. And you can learn to sail or kayak. But most of all there is a really wonderful museum full of maritime character and the smell of ancient salty timbers.

For the last few years Le Port-Museé has been one of my favourite places to visit with my children. It has been magical for them and for us adults too. We keep going back. And there is plenty of reason to do so. The museum fills cavernous old warehouses and a long stretch of the river (the old port Rhu). There are permanent exhibitions, with a wide selection of old boats and associated clothes and equipment, all displayed with great thought and arranged for visual and learning impact. The musuem also hosts large "temporary" exhibitions (although they do seem to stay for a couple of years). We have seen The Box (about the container shipping business) - which might sound dull, but is in fact brilliantly done with amazing exhibits including a giant lego model of a container port. We have also visited the Sinbad exhibition, about the maritime traditions of Arabia, which is still running. It is wonderful. They even sailed a dhow called Nizwa all the way from Oman - we have seen it sailing out across the bay, which is quite surprising when in close up you see just how roughly made it is.

There are many ships into which you can explore, with all decks open - lots of them on moored on the river, but also (and this is the most popular with the children) a fishing boat in the warehouse on which they can play at being at sea.

There is a lot more to the place than I have so far described. To really get across how great it is, here are some photos from our visits over two years.

Steering hard to starboard...

Port Museum

Full steam ahead for the Mighty Atom!

In the engine room

The Nizwa dhow, all the way from Oman and now sailing across the Bay of Douarnenez.

Nizwa

Ghostly sailor's clothes...

Ghostly clothes

Fishermans clothes

A life-size diorama of an old Breton port...

A Breton port scene

Fish people!

Fish people

The huge lego model of a container port...

The lego port

One of the many Arabian artefacts in the Sinbad exhibition. There is also a recreation of a Omani house, including spices, and a giant Arab astrological map.

Omani door

And there is a great restaurant next door.

Cafe next door



November 10, 2013

Lest we forget

In memory of my Grandfather. https://sites.google.com/site/grouphude/projects/dranouter-1942

June 12, 2012

Just getting round…

Writing about web page http://www.fredwhittonchallenge.org.uk/

Prologue

OK so I love my cycling, it has to sneak into the schedule between a few other things ;-) but it hurts my legs much less than running :-) One of the best motivations for getting out there is to see new places with great views. So when following the lovely Leon conquering 10in10 FWs last yearI *may* of got the idea that it would be great to have a go at *one* of those :)

...of course in May last year I had no experience of cycling in the lakes :-O So initially the FW idea stayed quietly inside my head... then in June during the most fabulous Dave A BG weekend :) when I *may* have gently twisted someones arm to head north for weekend support crew ;) we didn't quite have space in the car for my bike :-O however a most lovely Fetchie (who I'd never even met before) lent me a rather shiney bike *squeeeeee* on which I rode a mini-tour of lakes seeing lovely new places, Honister Pass *ouch* and a bit of a BG round :) :) :) *heart* FETCH for making such a fabulous get together possible :) :) :) :) :) xx

Roll forwards to August... holibobs avec Alix & Dave :) knew I was *never* going to keep up on running pace :p and sometimes 3 is a crowd ;) so I had my truck so the road bike could play too :) explored Newlands Valley, raced Lakeland Tri and the highlight was a guided mini-tour of North Lakes avec eL Bee! finishing over Newlands Pass :) :) :) So FW attempt began to get chatted about and decision made that if I got a place ;) I *would* get myself fit enough to get round :-O

Of course ideally training would have been to plan (A) multiple trips up north with careful reconnaissance checking out all the passes - passing as much attention to the descents as the accents *pause for reality check* never able to invest that sort of traveling time/time away from home so onto plan (B) start building climbing miles during January Lanza trip, build up weights sessions, build up the ride times and throw in a couple of local 75 mile Sportives, the ones with hills in...

Plan B got me strong, I worked mentally on known unknowns but felt massive *wibble* about the unknown unknows :-O

Part One

Fred Whitton Challenge dibbersSo, Saturday 12th arrives and after a clear trip up M6 with fair weather I drop into the massive bike warehouse at Staveley to purchase a new set of brake blocks, can't think why that seemed like a good idea ;) was also hoping to get a new pair of overshoes but in common with many bike shops they had a surplus of L, XL & XXL only :( Still I got to look at lots of shiney bikes :) and take deep breaths to stem the crackling nervous excitement :-O before jumping back in truck for short hop to Coniston. Car park and Coniston was heaving but I managed to squeeze the truck in and headed straight to registration... through a door into dark narrow corridor with single line of tables crammed in... no-one at first table, a bunch of envelops and people at second table so I stopped just past there to get my ID checked... remained completely oblivious to the fact that Lorna had been sat at the envelops table :-O whilst I visibly shook signing my life away ;) bit of nervous bantering with fellow competitors and I quickly found myself tagged with my dibber and proud owner of FW cycling top - despite serious concerns over the possible bad omens of getting one *before* completing :-O Back outside in sun I take a few deep breaths thinking about how best to contact Leon & Lorna only to find Leon is chatting with a small crowd just ahead of me and that I had just managed to wander obliviously past Lorna *amazing what nervous excitement will do to you* the power of the company of lovely people soon started to ease my jangling nerves, I was introduced to lots more lovely people, too many to name check even if I could remember all the names ;) Lunch eaten and much banter later, including me trying to soak up as much detail as possible about the bits of the course I'd never ridden *most of it* and I found myself in convoy heading for Aspatria on a lovely clear evening where I *may* have spent more time admiring the scenery than concentrating on the road ;-) Some people are both lovely to know and live in lovely places :) :) :) :) :) Big big hugs for taking such good care of one nervous wreck!

Part Two

"The Fred Whitton Challenge is a 112 mile ultra hilly (mountainous!) challenge ride over all the famous Lake District passes in a single day ride."

Fred Whitton Challenge Route

Up early and back down the road we arrived at rush hour ;) ...but there was no rushing to be done, exept maybe to get to the loos :-O The ride starts and finishes at the Sports Centre at Coniston and with the times recorded via the dibber system. After dibbing the dibber at about 07:30 hrs, I roll through muddy field onto lane past the head of Coniston water and straight onto the first climb of the day, up Hawkshead Hill. Not a hard climb but on cool legs it's a great way to wake up and get in the mood :) After just 2.2 miles it's down a winding descent where El Bee! went past with words of encouragement :) and I saw TiT runner Toks leaving Brathay :) Give way and un-clip at left turn onto the B5285 (5.2 miles) only for car to change mind and give way to me *sigh* :p Uneventful through Clappersgate to Ambleside, the traffic lights, towards Windermere even changed to green for me :) but then (8.7 miles) left up the very steep Holbeck Lane climb to Troutbeck. This is where I met the first of the grunting mamil packs - oh the ways I amuse myself when cycling solo ;) Then onto first BIG climb of the day, up Kirkstone pass. Uneventful apart from dropping chain with over-enthusiastic cog change around Troutbeck *muppet* which actually gave me change to remove padded gloves and replace with mits - hot work this climbing :) views were stunning and soaked in at leasuire (454m, 14.7 miles covered).

"Being the highest pass, there’s a long and steep descent, so take care."

They're not kidding, solo this would have been awesomely fast :) as was I clocked over 37 mph and was pushed a wee bit from comfort zone when one of those overtaking me on the winding bits nearly went head on into an oncoming car and finding that my adjustments to fit new brake pads had slipped tension on front brakes :-O Apart from those little episodes it was an exhilirating decent :) and that topped by my first accent of Kirkstone had me banking a little confidence :) Patterdale and Glenridding were welcome familiar territory as a tail wind assisted me down the shores of Ullswater to the climb up to Matterdale End (343m) easy climb with a winding fast decent, no real call for brakes ;) until reaching main A66 to Keswick.

"Take care on this road, which has fast moving traffic, but thankfully for most of the way there’s a ‘1m strip’ on the left that gives you a bit more room."

Thanks to excellent amounts of information extracted during pre-challenge banter I was prepared for this stretch, ideally sitting on the back wheel of a suitably sized and paced chap would have sheltered me all the way down to Keswick :) no such luck :( being mentally prepared to working into a head wind was a *good thing* and something I've had a lot of practice at in Lanza, shame it's a bit colder in Lakes :p after a few futile attempts to jump on back of passing groups I settled down (almost literally to top bar) and pedaled on....

Part Three

Keswick was a welcome shelter from the wind and I also made a pit stop to borrow a pair of hands to help me readjust the front brakes :-O I *knew* what to expect from the next decent ;) brakes can be useful :p Loved the familiar pootle down to Seatoller :) only slight spoiler was the ambulance blaring past :-O

"Seatoller is literally at the bottom of Honister pass, and it starts ultra steep!"

Having climbed this once before I was ready with the tactics and stuck to my game plan :) despite carnage all around :-O bikes weaving everywhere, the odd car and a few walking their bikes :-O "!!

"Get ready with the brakes as soon as you reach the top (356m), since the descent immediately starts very steeply, the surface is slippy when wet, badly corrugated in places, and there’s a narrow chicane over a bridge part way down."

Just as useful to know this decent :) managed to pass a few groups on the accent, pass one very nervous bloke on first 25% drop and then get a fairly clear run down to Buttermere valley wheeeeeeeeeeeeeeee :) just one numpty driver failing to negotiate a head to head with oncoming car by lake *sigh* had to unclip and wait whilst they faffed :( Reached Youth Hostel just before Buttermere village (52 miles) with bikes everywhere and seemingly everyone else stopping, decided to top up water and make use of limited toilets, too limited, long wait :( *note for future* stop elsewhere ;-) Met a couple of ladies in que who were very nervous about making Whinlatter cut off, one looked beat already and admitted to walking up Honister :( tried to make encouraging noises and was quietly furious when the male companion of the very tired lady started hassling her to get a move on :( *insert bad word of choice here* 200m beyond hostel and immediately steeply uphill onto the climb up Newlands Pass. Middle part isn’t too bad and there was a slight tail wind :) still hard work and as I went last both ladies from loo que it became obvious why they had worried about cut off :( I squeaked encouraging noises and pedaled onwards and upwards. A kind chap overtaking me then pointed out i had another sprocket left *I knew that* and also knew about the very steep final stretch to the top (333m) :) The correspondingly steep sudden drop down the start of the descent would have been all the more fabulous had it been clear of traffic *sigh* Still once past a nervous little collection of bikes (not with it enough to call a group) and a serious numpty in a car I was free to enjoy the decent to the base of Whinlatter :) wheeeeeeeeeeeeeeeeeeeee Whinlatter truned out to be an easy steady climb, but a very long one and the summit was the first checkpoint, so in with the dibber :) :) :) :) :)

A gaggle of teenage MTBs joined me for early part of Whinlatter decent, helpfully slowing me up and splattering me with mud :p T'was mostly straight and fast after that until some tight bends down over a bridge before turn to Lorton. This was a lovely meandering stretch and a chance to exchange a few words and smiles with other riders :) :) :) Scale Hill ( steep short descent) to Loweswater started to show that thee were some very tired legs out there, that was followed by climb up to Fangs Brow, where I continued to pass blokes whilst soft pedalling up hills - great for banking confidence ;) Lamplugh village, Croasdale to Ennerdale Bridge (77.3 miles) with easy pedaling and stunning views all around :)

Cold Fell climb was familiar territory from Dave A BG weekend :) although it was less windy that say ;) straight and steady to begin with, but then a steep windy bit over a cattle grid, followed by a final steady pull up to the top of the moor (290m, Swarth Fell). Now windy would probably be a slight understatement here... it was blowing an absolute gale!!!! So exposed up on the top it was harder getting over the moor than it was making the initial climb up there :-O The return of hedgerows and the hairpin bends not long before Calder Bridge were welcome shelter before arriving at the second checkpoint and the second feed station (86.8 miles). Dibber dibbed on arrival :) *what a relief* there was absolute carnage all around :-O first challenge was to find a spare inch of space to lay bike... then into village hall toilets, no ques, and time to sit and eat/drink.

Sooooooooooooooo tried, the slog over the moors had taken it's toll :( legs had started to cramp slightly over Cold Fell but not so much over Swarth Fell... however first point of confidence knock for day :( and less that 6 days since a major cramping episode in hamstrings I was quick to shift to conservative mental strategies... this was the home straight :) I *would* be getting home :) I had no reason to risk any do it or die trying heroics on the final climbs :) *tension ebbs and shoulders relax* Get some hot tea inside me, some nectar stuff, boost bar and more hula hoops :) pick up lovely text of support from Alix :) and I'm ready :) OK ready as I was ever going to be :p quick loo trip and peak at "warm room" aka place when grown men have become like baked spuds wrapped in foil aka place of carnage :-O

Part Four

Fred Whitton GradientBit of main A595 coast road followed by left turn down to Gosforth. Somewhere back off main road along the winding stretch I spotted a familiar bike (Ali) parked at a public convenience, after copious tea and liquids at Calder bridge this final wee stop was too good to ride past ;) Irton Pike seemed like a mere blip with a nice fast twisty decent, confidence kick :) ...you know I can't even remember if the wee stop was before or after this lol Can remember passing King George the Fourth pub (95.8 miles), where you turn left up Eskdale, as I *may* have had beer on the mind :) I was possibly trying to distract my mind from Hard Knot pass :-O

"Hardknott is the daddy of them all, and you’ll know as soon as you start it, since it immediately kicks up viciously when you pass the telephone box at the bottom. This first ultra steep bit climbs over a cattle grid (tricky, need to sit down as you cross it, to avoid wheel spin) and lots of riders have to get off and walk at this point."

By this point I had done a deal with my head and tried body. My legs felt OK apart from the occasional cramp twinges ;) it was my arms that appeared to be weakening, probably from holding the bike up against the howling gales :-O I made the early steep turns and then chose a hairpin in which to unclip... unclip FAIL eeeeek! made it up another hairpin to discover that it was my lack of confidence in unclipping in possible cramp situation that was winning over my leg strength for climbing lol sense of humor and myself still intact :) :) :) tip toeing up in bike shoes actually harder that riding the damn thing so quickly back on pedals for easy middle bit :) passed a seasoned looking old chap and casually asked if it kicked up again? the dead pan facial expression and dry "a bit" response spoke volumes ;) I mentally prepared myself... started the steep bit with as much of a *pedal dancing* approach as I could muster until my arms sagged before my legs complained WTF!? played safe again although I'm sure my legs would have preferred to stay in the pedals rather than tip toe up 1 in 3 of rough tarmac :-O Summit-ed and survived :) :) :) Just the small matter of descending...

"Be warned - the descent down Hardknott is very VERY steep with extremely tight bends, the road surface isn’t good, and it requires extreme care. Whatever you do don’t let your speed build up, or you’ll be straight off the road and down the hillside, and we don’t want to have to call out the ambulance to pick up the pieces."

Now there is a point where tiredness leads me to being even more *muppet* :p I would strongly advise that when starting a VERY steep decent you more your hands from the hoods to the drops ;) the brakes are much easier to control from that angle ;) ;) :p the brakes were on a lot because I was following down a group of about 12 other riders. The bonus side to this was that they had done this decent before so I watched and learned :) Wrynose pass was much steadier and I kept it going until the short very steep final kick to the top (393m) :) it was very tempting to go for the *do it or die trying* bit but sensible hat stayed firmly on :)

Another *interesting* decent into stunning valley :) wheeeeeeeeeeeeeeeeeeee Was now starting to buzz and Little Langdale valley seemed a joy with the blips of kick ups and bit back to A593 barely noticed :) :) :) :) :) Fabulous wheeeeeeeeeeeeeeeee down to last T junction :) Pair of riders overtook me just before T so followed them down to finish and managed to see funny side when they stopped on the line and virtually blocked me from getting through! Squeaked through a gap in the corner and dibbed dibber a final time :) :) :) :) :)

Finished! *grin*

THANK YOU Leon & Lorna for a fabulous weekend :)

Congratulations to anyone managing to wade through that head dump of waffle!


December 31, 2011

Hollyzone's Albums Of 2011 1–10

And here’s the top 10! These are the ten albums I would take if I could only have ten from this year, although why anyone would be so cruel as to only allow me ten albums from any given year is beyond me…

1. Anna Calvi – Anna Calvi


It’s actually illegal in most countries for the under-18s to listen to albums are sexeh as this one, so be grateful we live in an enlightened nation where a woman cooing/bellowing about desire/the devil over Spanish-influenced guitars and occasional bouts of lush strings is totally acceptable. Oh yeah, this is bloody good. It’s all lyrical gender swapping, and bursts of thrilling sound. Heck, it starts with a guitar solo without making you want to frisbee the record right out of the window.
Best bits:
- ‘Suzanne And I’ – everyone loves big, ambiguous anthems about lesbonics/friendship/who knows.
- ‘Desire’ – ecstatic chorus alert.
- ‘Love Won’t Be Leaving’ – kitchen sink outro of joy.

2 Austra – Feel It Break


Do you like a bit of chilly 80s-style synth music? How about it with an ex-opera singer, ex-punk, ex-singer-songwriter in charge? Yes, that is a good plan. That is Austra’s plan. Lobbing lovely glacial synths onto a live rhythm section gives the songs quite a lot of heft and crunch, so even if the album’s a little one paced it’s a good pace, like the march of an army of sad robot penguins. There’s also the matter of Katie Stelmanis’s vocals – it’s pretty standard in chilly synth pop world to have singers who can’t really sing, but she can. So it’s all dizzying harmonies, wordless pizzicato bleeping and big stentorian bellowing, although thankfully none of that diva, singing-more-notes-than-is-necessary shit. Marvellous stuff.
Best bits:
- ‘Darken Her Horse’ – the best ‘big soaring chorus’ of the year, hands down.
- ‘Lose It’ – sounds a little like those Lloyds adverts but is really really good.
- ‘The Beat And The Pulse’ – juddering, Knife-ish, chug, one of the singles of the year.

3 Suuns – Zeroes QC


An ominous drone, a sinister groove, vocals drifting in on a distorted yet still human-sounding wind. Who are Suuns and what do they with our computers and guitars? They’re the twisted, sinister end point for all that indie-electro-dance stuff which has been around in varying degrees of palatability for the last few years, and they have made a damn fine album which isn’t as hard to listen to as it might seem at first. Its ideas are kept brief and breezy, nothing outstays its welcome. It invites us to dance, but in the style of a close second place in the Turing test – these robots have almost made a record which sounds human, but not quite. And that’s why it’s so good.
Best bits:
- ‘Arena’ – a real grower, in that it grows from nothing in a danceable number.
- ‘Up Past The Nursery’ – sparse but still funky, quite a feat in itself.
- ‘Armed For Peace’ – the only track serves as a pretty much perfect introduction to the rest of the album in just three and a half minutes.

4 Gang Gang Dance – Eye Contact


Gang Gang Dance are one of those special bands who can release an album where the first track is eleven minutes long and mostly ambient noise, and yet the album is still their most poppy. There’s a duet with him from Hot Chip, which sounds like a sad nerd serenading a crazy witch. Y’see, Lizzi Bougatsos has a voice like a tiny, eight year old serial killer, which makes it doubly unnerving when she starts singing lyrics nicked from nursery rhymes or ditties about “mindkillas”. It helps that all the tracks are brilliantly buzzy electro stompers, sometimes with thrilling guitar solos, sometimes with basslines you can feel from space.
Best bits:
- ‘Thru And Thru’ – best closing track on any album this year, bar none.
- ‘Mindkilla’ – shaking the foundations with that bassline.
- ‘Adult Goth’ – a floor-filler from a dimension where floor-fillers are made by super-smart computers not slavering morons.

5 PJ Harvey – Let England Shake


Oh come on, of course this was going to be in here. It’s ruddy, bloody marvellous, with the emphasis on blood because this is one of those albums where EVERYONE DIES! It is, frankly, the best album of the year. Why is it not at #1 in that case? Only because it’s heavy as anything, and I sometimes can’t listen to it for the same reason I am not always in the mood to watch Grave Of The Fireflies. EVERYONE DIES!!! But yeah, you’ve read a million reviews of this, it’s visceral, it’s heartfelt, it’s brilliant.
Best bits:
- ‘All And Everyone’ – the way the track builds and threatens a cathartic release but then… doesn’t. Only more misery. Brutally effective.
- ‘The Last Living English Rose’ – swaggering and proud musically, broken and crushed lyrically, a beautiful juxtaposition.
- ‘The Glorious Land’ – for those painful lyrics – “What is the glorious fruit of our land?/Its fruit is deformed children”.

6 Nicola Roberts – Cinderella’s Eyes


Yeah, that’s right, a Girls Aloud solo album. Nicola was clearly always the best member of GA, and by making an album with Metronomy, Diplo and Dragonette she’s shown that it needn’t be death by Will.I.Am and auto-tune robot vocals. What Nicola has realised is that all the best pop music is really really sad. And god, taken purely on its words this is a contender for the most misery-filled album of the year, with lots of lovely minor key synth pop and occasionaly shonky piano ballads driving it forward so you don’t end up wanting to kill yourself just by listening.
Best bits:
- ‘Gladiator’ – surprisingly lyrical dexterity and freakiness (Nic can apparently fire bullets from her chest, who knew?) with a nice martial guitar strut.
- ‘Yo Yo’ – top notch sad pop.
- ‘Beat Of My Drum’ – initially disorientating but after a few listens it’s great in a MIA-without-the-edge-or-the-bouts-of-cringey-stupidity way.

7 Young Galaxy – Shapeshifting


Young Galaxy are a bit hard to describe. They’re not really electro but they use a lot of synths to twinkle and parp. They’re kind of indie, in that they make songs of conventional structure and use guitars to jangle sometimes. They certainly like their percussion, and some songs are just a single guitar or synth line over an array of claps, whacks and other percussive sounds (castanets, steel drums). They have moments of small-scale Arcade Fire-ness. Ok, they have quite a few Arcade Fire style moments, albeit with fewer instruments going off at once. Then again they are Canadian. Must be in the water up there.
Best bits:
- ‘Peripheral Visions’ – if only for the big sing-a-long at the end which is quite affecting.
- ‘Blown Minded’ – stately march which nicely shows off the whole epic-but-kind-of-minimalist vibe of the whole album.
- ‘We Have Everything- – unashamedly anthemic.

8 Those Dancing Days – Daydreams And Nightmares


Adorable Swedish scamps who look like a bunch of off duty Brownies and sing sweet little ditties about… threatening violence against crap boyfriends and bitchy girl rivals alike. Wait, that can’t be right. Oh but it is, TDD serve up ADHD nuggets of joyful indie-pop, none of which overstay their welcome. It’s as if they need to wrap it up quickly and get home for tea and biscuits. I always find myself loving one album a year purely because it does a simple trick very very well, and this year it’s TDD. There’s nothing revolutionary here, but they have a scary mastery of their chosen form. Plus they’ve split up now, so no more fun for us. :(
Best bits:
- ‘Fuckarias’ – there’s no way this track should sound as muscular as it does, like being chased by a big pink truck.
- ‘I Know Where You Live pt.2’ – brilliantly huge chorus.
- ‘Can’t Find Entrance’ – breakneck speed sugary indie joy.

9 Washed Out – Within And Without


As the man who spearheaded the terribly named ‘chillwave’ invasion of the music blogosphere a couple if years back, there was a good chance that Ernest Greene, aka Washed Out, might have left it a year too late with this debut. The good news for Greene, and us, is it’s never too late for good albums and this is a very good album. It sounds suitably fuzzy, as if you’re remembering these songs rather than listening to them, with vocals floating around in the ether. But it’s not indulgent, and it doesn’t lack melodies, Greene grasping that lovely sonics mean little if they’re just tapering over a lack of decent tunes. There’s even a couple of sing-a-longs if you can decipher the words. Maybe it’s more fun to sing along in a fuzzy, distorted style.
Best bits:
- ‘You And I’ – simply gorgeous diet with Caroline from Chairlift, which just oozes class.
- ‘Amor Fati’ – gorgeous jangler.
- ‘Eyes Be Closed’ – keyboards splashing around like the ocean.

10 Harrys Gym – What Was Ours Cannot Be Yours


More sad songs from the melancholic Norwegians. Harrys Gym like to bring along a dash of electronics to their eleagic little epics, each building up and spiralling down, like tides. The record is centred around Anne Lise Frøkedal’s beautiful voice, all poised sadness or restrained sexiness, harmonising over herself. It’s an album which seems fixated on the inability of humans to be strong or heroic all the time. Musically there’s a lot of heft to the surroundings, tricks stolen from dance, trip hop and rock are peppered around the place, rhythms juddering or basslines crunching underneath Frøkedal’s latest missive about someone having the spirit crushed out of them by age or feckless partners or the weight of expectation. Heavy and light at the same time.
Best bits:
- ‘Sailing Home’ – specifically at 1:34 when the bass and the drums pile in properly.
- ‘Old Man’ – for one of the most heart rending vocals of the year.
- ‘No Hero’ – the slightly odd pairing of the indie guitars, the wobbling synth bass and the vocals shouldn’t work but does, very well.


December 30, 2011

Hollyzone's Albums Of 2011 11–28

For part one we have 11-28, the albums which were very good, but not quite good enough. Except for some which were good enough only someone else made something which was even gooderer. Anyway, there are 28, which isn’t a nice round number unless you have 14 fingers in which case it is. Sorry. I couldn’t be arsed to write about any of the other albums I’ve heard this year which means that they either weren’t very good, they were disappointing, or I haven’t heard enough of them (Ghostpoet, Lanterns On The Lake, I Break Horses and Soft Metals need to be filed under this category). Part two with a more numerically coherent top ten is tomorrow. Lucky you. You’re welcome.

11 St Vincent – Strange Mercy


Annie Clarke is a rock queen! No really, she is. She may not be death metal, but she’s throwing some guitar shapes here, alongside the stories about smalltown American scandals, sex, angry young women, sex, and lovers being shitty to each other. And sex. It’s a pretty lush album, each track a little wall of sound in itself, with strings, brass, wobbly electro basslines, and choirs of Clarkes all jostling for space alongside the guitars. Oh the guitars. This is more proof (alongside Wild Flag, below) that you don’t have to play every note on the damn guitar super fast to show you’ve got a mastery over it. Fun, thrilling, primal, sophisticated riffs are allowed too. Maybe it helps being a girl with a guitar, and if so, St Vincent is the head girl.
Best bits:
- ‘Surgeon’ – for that spiralling outro of layered vocals and the dizzying bassline.
- ‘Northern Lights’ – fuzzy chug-a-long rock out.
- ‘Cruel’ – starts orchestral then gets its claws out.

12 Lykke Li – Wounded Rhymes


Lykke Li has the sort of voice you’d expect to hear in an old 60s recording, and there’s a lot of almost retro sounding instruments and songs on display here. “Almost” retro because they’re not. This isn’t yet another album with a tedious obsession with olden days music (as so many of those desperate to touch the greatness of Winehouse have attempted) but one where those old style sounds are moulded into lovely, up to date numbers. It’s classy in the way that everyone pretends pop used to be (it wasn’t) hence why it doesn’t really sound like pop any more. So if you want to pretend that things were better in the old days slap this on and pretend its 1965 and we’re all so hip and happening and things are better. Just don’t look too shocked when she sings about prostitutes and other things which would have ensured this record would never have been released in 1965.
Best bits:
- ‘Youth Know No Pain’ – wurlitzer whirls, everyone gets up and dances.
- ‘I Follow Rivers’ – the percussion on this alone is worth the price of the album (unless you downloaded it for free in which case it’s worth more).
- ‘Sadness Is A Blessing’ – how was this not number 1 all year? It would have been if Adele had released it.

13 Metronomy – The English Riviera


Apparently it’s a concept album about the English seaside except it really isn’t. Instead it’s more falsetto harmonies, more quirky little ditties, and more evolution for the band who still sound like they’re recording everything in their bedroom, in a good way. There’s more heft in the rhythm section this time around which is welcome without detracting from the charm, and it’s a thoroughly well-crafted piece of sophisticated pop elegance. It nicks from 80s smooth pop but without sounding like it should be soundtracking wankers snorting coke in yachts while wearing white jeans. No, it’s geek-indie at its best.
Best bits:
- ‘She Wants’ – sinister slap bass pushing everything forward.
- ‘The Bay’ – smooth as hell pop which strays dangerously close to 80s wanker-pop without falling into those deadly waters.
- ‘Everything Goes My Way’ – all Metronomy albums must have a wonky duet crammed full of charm, this is it.

14 Cold Cave – Cherish The Light Years


You what’s wrong with most 80s influenced bands these days? Irony. Now don’t get me wrong, I love irony, but the best things about 80s music was that everyone took themselves very very seriously, especially the synth pop brigade. Cold Cave take themselves insanely seriously. It’s proper synth pop iconagraphy ahoy with lyrics about graveyards and anguished lovers either facing impossible odds together or breaking up in melodramatic waves sadness. It’s all delivered with the subtly of a North Korean military parade, waves of drums and keyboards and bellowing. There’s not a lot of light and shade, just a juggernaut of seriousness, but the sheet sincerity of it all is infectious and endearing. I can’t resist its silliness and I advise you don’t either.
Best bits:
- ‘Catacombs’ – totally seriousface, very silly to start with, but by the end it’s sucked you in so much that the payoff is quite emotional.
- ‘Underworld USA’ – very 80s, nice guitars, silly serious sing-a-long chorus.
- ‘Alchemy And You’ – best use of trumpets 2011.

15 Wild Flag – Wild Flag


Ah, y’know what, let’s not even begin to pretend this doesn’t sound loads like Sleater-Kinney. Wild Flag have Carrie and Janet from S-K, plus mates, and they have made a record which sounds an awful lot like S-K would have done had they decided to follow up The Woods with an album featuring more big, raw rock songs with twiddly (but not fretwanky) guitars, raw and zesty vocals, and retro, kind of 60s sounding keyboards. It is big, it is clever, it is endearingly life-affirming, with blasts of handclaps, 60s girl-group style backing vocals, and a pleasingly punkish edge to everything.
Best bits:
- ‘Romance’ – exactly two minutes in when the music drops out and it’s all handclaps. That.
- ‘Boom’ – for the breakneck crunching guitars.
- ‘Future Crimes’ – the contrast between the track’s general urgent heaviness and the twinkling keys.

16 EMAPast Life Martyred Saints


Droney, fuzzy, scuzzy, it’s like Past Life Martyred Saints is making a case for “dirgey” to be reclaimed as a positive rather than negative adjective. Quite a lot of the album is heavy, not in a heavy metal way, but in an oppressive and all consuming way, like a humid evening. That’s another word which is appropriate here if we can accept it as a positive not a negative – oppressive. There’s something enveloping about Erika M Anderson’s world, with its tales of small town freaks, angry geeks, and ominous metaphors. There are also plenty of squalls of guitar noise, some of it stately, some of it pure rocking out. It’s shit. Sorry, it’s THE shit. Now there’s a negative adjective turned positive for you.
Best bits:
- ‘The Grey Ship’ – an epic in two parts, a swaying acoustic beginning and a massive rockout ending.
- ‘Milkman’ – distorted glam stomper.
- ‘California’ – fuzzy rant, less a song, more a thrilling sermon with guitar noise.

17 Grimes Geidi Primes/Halfaxa


It was quite odd seeing NME calling Grimes the future of dance music, if only because it’s not that easy to dance to. At all. Yeah I tried. I’m being cheeky and lumping these two albums together which probably isn’t fair. Also she released them as free downloads in 2010, but as they only came out on record this year I am counting them. They’re worth counting too, two albums of dreamy, fuzzy electro. That’s ‘dreamy’ as in the full range of dreams, from twinkling brief half songs, through to terrifying nightmares of sinister little-girl-lost vocals and disconcerting waves of synth. Both albums are hodge-podges of ideas in the best possible way.
Best bits:
- ‘Weregild’ (from Halfaxa) – if only for the bit where the drums kick in.
- ‘Swan Song’ (from Halfaxa) – Crystal Castles if they were dreamy rather than furious.
- ‘Rosa’ (from Geidi Primes) – almost a proper song, twangy guitar and nearly intelligible lyrics, but what’s best about it that it’s groovy.

18 tUnE-yArDs – W H O K I L L


Ah, the unmistakable sound of drums and a car horn. A ragged guitar accompanied by the sound of falling wood. A raw voiced and angry woman harmonising with a police siren. Who knew Little Mix’s album would be so adventurous? Jokes, Merrill Garbus wouldn’t get past the first round of X Factor, if only because rather than some dirgey ballad her audition piece would be like one of the tracks off W H O K I L L, a righteous but often funny rant about the complete shitness of modern life, backed by a percussive cascade. Under Garbus’s command all instruments, including guitars, saxophones and, yes, sampled sirens, are merely shards of percussion to be used like some modern approximation of tribal rhythms.
Best bits:
- ‘My Country’ – a cascade of instruments and vocals, all falling down a hill.
- ‘Gangsta’ – strutting, jerky barrage of noise which somehow resolves itself into a cautionary tale with a sing-a-long chorus.
- ‘Bizniss’ – the lyrical and vocal dexterity here makes it a winner.

19 Zola Jesus – Conatus


Lots of heavy percussion, thudding towards the listener like a relentless army of goth girls, each with a cryptic story of vague sadness to impart. And yet, there’s also a lot of arms in the air rave moments, albeit slowed down from the high tempos of dance music, giving the whole album a weirdly underwater mood to it. Dark and mysterious but still inviting all the neighbours around for a party with black cake, black balloons and black party bags.
Best bits:
- ‘Vessel’ – the mechanical percussion is great.
- ‘Ixode’ – spiralling, layered vocals lead to a thoroughly ecstatic conclusion.
- ‘Seekir’ – this could almost be a pure pop song if it weren’t for the weird backing vocals, but when the drums kick in the dancing’s good.

20 Katy B – On A Mission


Ok, so she’s pop as anything, this isn’t edgy dubstep, and there’s the end of the last track where she goes off on one like an Oscar winner thanking her parents, cat, local lollipop lady for making it all happen, but hey, here’s a good dance record in a year of bad dance records. It helps that Katy has a good voice, distinctive even if the lyrics are a little banal, albeit in a sassy way. Thing is, when this album is good, it’s very very good, exhilarating to dance to, and fun to listen to. And yes, it’s not an album of great lyrical insights, but it’s nice that the overall theme is a girl being confident and honest about wanting a good time on her terms.
Best bits:
- ‘Katy On A Mission’ – huge wub wub wub anthem, resistance is futile.
- ‘Witches Brew’ – captures all the worst keyboard parts from late 90s trance and makes them good again using bleepy bleeps.
- ‘Broken Record’ – the last 45 seconds are possibly the best fade out ending in ages.

21 British Sea Power – Dancehall Valhalla


In which British Sea Power make another British Sea Power record. If that means anything to you then it’s an endorsement. If not then let me explain briefly – someone forgot to tell British Sea Power about any and all developments in indie since 2001. Therefore they make quirky guitar led songs about esoteric lyrical themes (this time round is more military themes, more star gazing, and more celebrations of music itself). These songs are then polished with big epic guitar riffs, and occasional deviations into slightly leftfield areas, but always returning to the slightly unfashionable indie underneath. And then they stick an almost 12 minute wigout at the end. Typical.
Best bits:
- ‘We Are Sound’ – top notch outro, classic BSP tactic of piling more and more sheer stuff in til the song pops.
- ‘Mongk II’ – twisted vocals over a driving insistent beat.
- ‘Observe The Skies’ – the most BSP song on here.

22 Chelsea Wolfe – Apokalypsis


Super-sinister, droning, hypnotic, it starts with a 23 second cover of a death metal song, and then soundtracks the most nightmare waltz through a haunted house you could imagine. Even the songs which don’t sound like nightmares are a bit off, love songs about being weirdos freaks. Glacial beauty, but only if the glacier is made of black ice.
Best bits:
- ‘Mer’ – guitar riffs strangely reminiscent of Brand New at their most haunting.
- ‘Tracks (Tall Bodies)’ – the most unnerving love song of the year, without being at all explicit.
- ‘Moses’ – builds around an unending creeping guitar riff into a woozy finale.

23 Bjork – Biophilia


A very sparse album which actually requires some concentration, but it’s worth it for the rewards. Of course Bjork would never do something as dull as simply release an album of songs you can sing along to, and this isn’t really a collection of songs per se, more some interesting sonic experiments with moments of startling beauty interspersed between moments of “WTF?” and “huh wuh?”. Guaranteed not to be to everyone’s tastes.
Best Bits:
- ‘Crystalline’ – surprise drum’n’bass outro.
- ‘Cosmogony’ – like a really really weird Disney song.
- ‘Mutual Core’ – I love the ‘chorus’ (insofar as there is one) on this.

24 Neon Indian – Era Extraña


Could Alan Palomo have made it more obvious than starting this album with what sounds like Space Invaders launching? I wasn’t that impressed with his debut, but this follow up is a great slice of electro-pop, layering 80s computer game noises over Palomo’s chillwave-ish vocals. It sounds like a distant Wayne Coyne trying to seduce a room full of retro-gamers, probably unsuccessfully because they’re all trying to beat Donkey Kong and save the princess.
Best bits:
- ‘Polish Girl’ – chillwave with bleeps not woozy guitars.
- ‘Fallout’ – see above.
- ‘Suns Irrupt’ – see above… look, they all sound the same but I like it.

25 Lady Gaga – Born This Way


It’s too long, there’s too much filler, one track sounds like Shania Twain, but in the end there’s a reason the Lady is a pop juggernaut crushing all before her and that’s because when she gets it right, she gets it righter than most. The sheer OTT-ness of the album sometimes works a total treat and it is nice to hear a pop star wanting to talk about more than just being ‘in da club’. We all know what it sounds like, and I am cool with that.
Best bits:
- ‘Government Hooker’ – precision engineered for the dancefloor.
- ‘Judas’ – pop as if made by evil robots who will crush and enslave us all, but in a good way.
- ‘Edge Of Glory’ – we’ll regret it in a few years time when they are everywhere, but here is a sax solo which is great!

26 True Widow – An High As The Highest Heavens And From The Centre To the Circumference Of The Earth


Slowly slowly the downtuned guitars and sludgy bass unfurl into… something. Not really songs because they’re more like funeral grooves, as if someone decided to slow down a load of danceable songs then cover them using only guitars dug from prehistoric times. Whack a load of floating and distant vocals on top and voila. An album of gloom which isn’t oppressive. An album where all the songs seem to sound the same, but they aren’t, and besides too much variation would ruin the mood. Which is one of futile despair. One for dinner parties and social gatherings.
Best bits:
- ‘Jackyl’ – for the droning guitars and spooky vocals.
- ‘NH’ – for the droning guitars and spooky vocals.
- ‘Boaz’ – for the amazing drum and bass meets opera bit in the… kidding, it’s for the droning guitars and spooky vocals.

27 Maybeshewill – I Was Here For A Moment Then I Was Gone


More heavy rock meets post-rock from Maybeshewill, the band who like to make post-rock songs but either cut out the first five minutes of build up and just slam in the bit with the loud guitars and drum fills, or they condense it all down into four minutes. It’s definitely worth it for people who like waves of uplifting guitars to wash over them, and I am one of those.
Best bits:
- ‘Red Paper Lanterns’ – for the best in guitar riff and xylophone interactions.
- ‘Critical Distance’ – the lovely cascading piano could have been Coldplay at their best but instead it gets to play with with skittering drums and big guitars and souds all the better for it.
- ‘Farewell To Sarajevo’ – stately and pretty.

28 Yacht – Shangri-La


DFA’s oddballs return with another album of strangeness which could be self-help motivational indie-dance, or an ironic act of such subtlety that it’s impossible to know who the joke is on. Whatever they’re on (and I think they’re being sincere) they’ve added some decent tunes, all in typical DFA style. It’s not up there with LCD Soundsystem, but in that vein cowbells are whacked, beats are dropped, basslines are wobbled and the pair have a giddy enthusiasm which means you’re about halfway through the album before you realise most of what they’re saying is bollox, but it’s danceable and fun bollox.
Best bits:
- ‘Dystopia’ – for sheer balls at nicking the chorus from elsewhere and the lolling rhythm.
- ‘I Walked Alone’ – for using autotune in a way which isn’t irritating.
- ‘Tripped And Fell In Love’ – the longest track, a Juan Maclean-ish groove.


December 01, 2011

Christmas gift ideas

Whispers.... minutes are ticking down for the year and we've reached December.... it must be nearly Christmas *boing* :) I can tell because the lovely family want me to produce a Christmas wish list... well they probably used the term "ideas for presents" but thought that was left wide open for creative interpretation ;-)

Bike lights

bike lights

Hump backpack cover

Humpback cover

Sealskinz socks

Sealskinz


X Socks

X socks

Swim suit

Swim suit

Triathlon gear

ladies tri suit

iPhone 4S

iPhone

or

Samsung Galaxy SII

Galaxy S2

Bike shoes

Bike shoes

A Life Without Limits

Chrissie Wellington

iPad 2

iPad 2


Muppet Christmas Carol night

Muppet Christmas Carol

Helmet Cam

Head cam

Weekend away with family

Nose clip

nose clip

Waterproofs for all weather

Kamaleika

Single Malt

TaliskerBeer

Beer

Wood burning stove

Wood burning stove

Winter wanderings around Kenilworth Castle

Kenilworth Keep


Lock laces

Lock laces


Pics to PC & SD

Pics to SD

Yummy foodie stuff from Kendalls

Kendalls

Snow Jacket

Snow jacket

Track pump

Track pump

Night out at comedy/music gig with friends


Run in snow with Coffee Shop crew followed by pub lunch warmed by open fire

open fireOpen fire

Trip with training buddies to Club La Santa


Digital SLR Camera

Digital SLR camera

MTB Tyres

MTB tyres

Spinster t-shirt

Spinster t-shirt

Eye wear

eye wear

Picture frames

photo frames

Night out at cinema with friends


Moleskine for my non-digital notes

Moleskine

Arm warmers

Arm warmers

Coffee morning with friends

It's a bit of a work in progess but I'm sure it will be fun updating it!


November 25, 2011

Where's the learning technology and philosophy articles?

For my learning technology and philosophy research, see http://www.inspireslearning.com


November 13, 2011

New winter kit.

My new, shorter commute means I can now largely do away with my bike-specific kit, and ride in to work in “normal” clothes. Doubtless a relief for those who don’t have to suffer the sight of my lycra-centric outfits any more, but it has required some thought as to exactly what to replace then with.

So I was very pleased when the nice folk at Berghaus asked me to review some outdoor clothing which is just the ticket for a few miles riding through town on an autumn morning. First up, this:
Ardennes softshell
A splendid softshell jacket. It’s warm, windproof, waterproof-ish (the seams aren’t sealed, so I wouldn’t rely on it for a long time in really foul weather, but it’s stood up to 20 minutes or so of steady drizzle just fine). The cut is slightly more relaxed than a dedicated biking jacket (meaning it looks just fine down the pub), but has enough length in the arms and the back to avoid any annoying cold spots when leant over the handlebars. If I were being really picky, I could note that it doesn’t have pit-zips or any other kind of vents, which means it can get a bit wam if you’re working hard (e.g. when racing roadies on the way into work) – so far the weather’s still too warm to wear it for “proper” long rides. It’s also not very reflective, so you need something high-vis to slip over the top now the nights are dark.
But for riding to work it’s been ideal, and it’s also been great for standing on the sidelines of windswept football pitches watching the kids – which at this time of year is a pretty stern test of any fleece!

Item #2 on the list is a new rucksack – specifically, a Terabyte 25l .
Terabyte 25l
As the name suggests, this is optimised for carrying your laptop to work, rather than your ice axes into the northern Cairngorms or your inner tubes round Glentress. It features an impressively solid-feeling padded sleeve which will comfortably take anything from an ipad to a big-ish laptop and hold it securely, as well as a main compartment big enough for a packed lunch and my running kit, and the usual assortment of well-laid-out pockets and attachments. I particularly like the little strap on the back of the pack for attaching a extra bike light to. It’s comfortable even when loaded up, and plenty stable enough to bike with. Highly recommended.


November 11, 2011

Lest we forget


October 28, 2011

Scala: 3 months in

So, I’ve been using scala in production for a few months now. Is it everything I expected it to be?

First, a little bit of background. The project I’m working on is a medium-sized app, with a Scala back-end and a WPF/C# fat client. The interface layer is a set of classes autogenerated from a rubyish DSL, communicating via a combination of client-initiated JSON-RPC over HTTP, and JSON-over-AMQP messages from server to client. It’s split into about half a dozen projects, each with it’s own team. (I should point out that I have little involvement in the architecture at this level. It’s a given; I just implement on top of it.)

The server side is probably a few thousand classes in all, but each team only builds 500 or so classes in its own project. It integrates with a bunch of COTS systems and other in-house legacy apps.

In functionality terms, it’s really fairly standard enterprisey stuff. Nothing is that complicated, but there’s a lot of stuff, and a lot of corner-cases and “oh yeah, we have to do it like that because they work differently in Tokyo” logic.

So, Scala. Language: Generally lovely. Lends itself to elegant solutions that are somehow satisfying to write in a way which java just isn’t. Everything else? Not so much. Here are my top-5 peeves:

  • The compiler is so slow. For a long time, the Fast(er) Scala Compiler simply wouldn’t compile our sources. It threw exceptions (no, it didn’t flag errors, it just died) on perfectly legitimate bits of code. This meant using the slow compiler, which meant that if you changed one line of code and wanted to re-run a test, you had to wait while your 8-core i7 churned for 2-3 minutes rebuilding the whole world. In a long-past life, I cut my teeth writing mainframe cobol with batch compilation. This was like that, all over again. TDD? Not so much. Recently the FSC has improved to the point where it can actually compile code, which is nice, but sometimes it gets confused and just forgets to recompile a class, which is hella confusing when you’re trying to work out why your fix doesn’t seem to be having any effect.
    I would gladly exchange a month of writing WPF automation code (that’s a big sacrifice, for those who haven’t endured it) for the ability to have eclipse’s hot-code-replace, unreliable as it is, working with scala.
  • The IDEs blow. Eclipse + ScalaIDE just plain doesn’t work – apart from choking on our maven config, even if you manually build up the project dependencies, it will randomly refuse to compile classes, highlight errors that don’t exist (highlighting errors on lines that contain no code is a personal favourite), and ignore actual errors. IDEA + Scala Plugin is better – this is now my day-to-day IDE, despite starting out as a dyed-in-the-wool Eclipse fanboy, but it’s slow and clunky, requires vast amounts of heap, and the code completion varies from arbitrary to capricious.
  • Debugging is a pain. Oh yes,
    data.head.zipWithIndex.map((t) => data.map((row: List[Int]) => row(t._2)).reverse)    

feels great when you write it, but just try stepping through that sucker to find out what’s not working. You end up splitting it up into so many temporary variables and function calls that you might as well have just written a big nested for-loop with couple of if-elses in it. Sure, you can take them all out again when you’ve finished, but are you really helping the next guy who’s going to have to maintain that line?

  • The java interop is a mixed blessing. Yes, it’s nice that you have access to all that great java code that’s out there, but the impedance mismatch is always lurking around causing trouble. Of recent note:
    – Scala private scope is not sufficiently similar to java private scope for hibernate field-level access to work reliably
    – Velocity can’t iterate scala collections, nor access scala maps.
    – Mokito can’t mock a method signature with default parameter values.

The list goes on. None of these are blockers in any sense – once you’ve learned about them, they’re all pretty easy to work around or avoid. But each one represents an hour or so’s worth of “WTF”-ing and hair-pulling, and these are just the ones that are fresh enough to remember. Scala-Java interop is a constant stream of these little papercuts.

  • Trivial parallelisation is of minimal value to me. Sure, there are loads of cases where being able to spread a workload out over multiple threads is useful. But, like a great many enterprise apps, this one is largely not CPU-bound, and where it is, it needs to operate on a bunch of persistent objects within the context of a JTA transaction. That means staying on one thread. Additionally, since we’re running on VMWare, we don’t have large numbers of cores to spread onto, so parallelisation wouldn’t buy us more than a factor of 2 or 3 in the best case. In a related vein, immutable classes are all well and good, but JPA is all about mutable entities. There have been a few bits of the design where baked-in immutability has led to a cleaner model, but they’re surprisingly few and far between.

Not that long after I started work on this project, there was a video doing the rounds, showing how Notch, the creator of Minecraft, used Eclipse to create a pretty functional Wolfenstein clone in java in a 48-hour hackathon. Whilst that kind of sustained awesomeness is out of my reach, it illustrates the degree to which the incredibly sophisticated tooling that’s available for Java can compensate for the language’s shortcomings. If you haven’t watched it, I recommend skimming though to get a sense of what it means to have a toolset that’s completely reliable, predictable, and capable of just getting out of the way and letting you create.

If I were starting this project again, I’d swap the elegance and power of the scala language for the flow of java with a good IDE. Even if it did mean having to put up with more FooManagerStrategyFactory classes


October 09, 2011

MOOC month one

Writing about web page http://change.mooc.ca/

So #change11 MOOC is now entering week five and as expected it's been tough to set aside as much time as I would have liked so really feeling no more than a lightweight engagement. However, MOOCs let you adapt your learning around the time that you have so I'm not too worried about this. This week I've also got the focus of a face to face meeting with colleagues from around the institution who share an interest in discussing MOOC topics, really looking forward to this!


September 25, 2011

Why MOOC?

Writing about web page http://change.mooc.ca/index.html

Whilst I'm wrestling with the question "why have I signed up for another MOOC?" I guess readers of this blog are more likely to be a few steps back asking "MOOC? WTF?" don't worry readers Dave Cormier has put together a video just for you...

So now we have that bit out the way, why do I choose to MOOC?

Simply put, because it suits the way I like to learn and it's FREE.

MOOC "students" are introduced to course facilitatorsand an outline schedulesplit into one week segments. "Students" then choose how they interact with helpful guidelinesreplacing rules and regulations.

My personal challenge for #change11 MOOC is to share more, not just via online networks but through face to face meetings with interested colleagues at University of Warwick.

Watch this space!


September 07, 2011

5 Operations metrics that Java web developers should care about

Sometimes it’s nice, as a developer, to ignore the world outside and focus in on “I’m going to implement what the specification says I should, and anything else is somebody else’s problem”. And sometimes that’s the right thing to do. But if you really want to make your product better, then real production data can provide valuable insights into whether you’re building the right thing, rather than just building the thing right. Operations groups gather this kind of stuff as part of normal business*, so here are a handful of ops. metrics that I’ve found particularly useful from a Java Web Application point of view. Note that I’m assuming here that you as the developer aren’t actually responsible for running the aplicationp in production – rather, you just want the data so you can make better informed decisions about design and functionality.

How should you expose this information? Well, emailing round a weekly summary is definitely the wrong thing to do. The agile concept of “information radiators” applies here: Big Visible Charts showing this kind of data in real time will allow it to seep into the subconscious of everyone who passes by.

Request & Error rates

How many requests per second does your application normally handle? How often do you get a 5-fold burst in traffic? How often do you get a 50-fold burst? How does your application perform when this happens? Knowing this kind of thing allows you to make better decisions about which parts of the application should be optimised, and which don’t need it yet.
Requests per minute graph
Request rates for one node on a medium-scale CMS. Note the variance throughout the day. The 5AM spike is someone’s crazy web crawler spidering more than it ought to.

Error rates – be they counting the number of HTTP 500 responses, or the number of stack traces in your logs, are extremely useful for spotting those edge-cases that you thought should never happen, but actually turn out to be disappointingly common.
Error rates graph
Whoa. What are all those spikes? Better go take a look in the logs…

GC Performance

GC is a very common cause of application slowdowns, but it’s also not unusual to find people blaming GC for problems which are entirely unrelated. Using GC logging, and capturing the results, will allow you to get a feel for what “normal” means in the context of your application, which can help both in identifying GC problems, and also in excluding it from the list of suspects. The most helpful metrics to track, in my experience, are the minimum heap size (which will vary, but should drop down to the same value after each full GC) and the frequency of full GCs (which should be low and constant).

weekly GC performance
A healthy-looking application. Full GCs (the big drops) are happening about one per hour at peak, and although there’s a bit of variance in the minimum heap levels, there’s no noticeable upwards trend

Request duration

Request duration is a fairly standard non-functional requirement for most web applications. What tends not to be measured and tracked quite so well is the variance in request times in production. It’s not much good having an average page-load time of 50 milliseconds if 20% of your requests are taking 10 seconds to load. Facebook credit their focus on minimising variance as a key enabler for their ability to scale to the sizes they have.
Render performance graph
the jitter on this graph gives a reasonable approximation of the variance, though it’s not quite as good as a proper statistical measure. Note that the requests have been split into various different kinds, each of which has different performance characteristics.
smokeping screenshot
Request speed with proper variance overlaid

Worker pool sizes

How many apache processes does your application normally use? How often do you get to within 10% of the apache worker limit? What about tomcat worker threads? Pooled JDBC connections? Asynchronous worker pools? All of these rate-limiting mechanisms need careful observation, or you’re likely to run into hard-to-reproduce performance problems. Simply increasing pool sizes is inefficient, will more likely than not will just move the bottleneck to somewhere else, and will leave you with less protection against request-flooding denial of service attacks (deliberate or otherwise).

Apache workers graph
Apache worker pool, split by worker state. Remember that enabling HTTP keepalive on your front-end makes a huge difference to client performance, but will require a significantly larger pool of connections (most of which will be idle for most of the time)

If you have large numbers of very long-running requests bound by the network speed to your clients (e.g. large file downloads) consider either offloading them to your web tier, using mod_x_sendfile or similar. For long-running requests that are bound by server-side performance, (giant database queries or complex computations), consider making them asynchronous, and having the client poll periodically for status.

Helpdesk call statistics

The primary role of a helpdesk is to ensure that second and third-tier support isn’t overwhelmed by the volume of calls coming in. And many helpdesks measure performance in terms of the number of calls which agents are able to close without escalation. This can sometimes create a perverse incentive, whereby you release a new, buggy version of your software, users begin calling to complain, but the helpdesk simply issue the same workaround instructions over and over again – after all, that’s what they’re paid for. If only you’d known, you could have rolled back, or rolled out a patch there and then, instead of waiting for the fortnightly call volumes meeting to highlight the issue. If you can get near-real-time statistics for the volume of calls (ideally, just those related to your service) you can look for sudden jumps, and ask yourself what might be causing them

Helpdesk call volumes

* “But but… my operations team doesn’t have graphs like this!” you say? Well, if only there were some kind of person who could build such a thing… hold on a minute, that’s you, isn’t it? Building the infrastructure to collect and manage this kind of data is pretty much a solved problem nowadays, and ensuring that it’s all in place really should be part and parcel of the overall development effort for any large-scale web application project. Of course, if operations don’t want to have access to this kind of information, then you have a different problem – which is topic for a whole ‘nother blog post some other time.


August 19, 2011

Barbarella RIP

Follow-up to Heart melting moments from Cath's Blog

Barbarella c.1990

Barbarella (Born May 1980, Died August 2011)

My lovely superstar Barbarella had a really really long life and was still leading a happy active life in her superb retirement home right up to the weekend before she passed away. Although, obviously, very sad I've also been reflecting on how simply amazing she was.

When horse hunting way back in the mid 1980's I'd been searching around the midlands area and found nowt (within budget) that I would consider buying. So when I heard about a youngster, spotted at a HIS sale but returned home after failing to make reserve, in desperation I talked my parents into a rather long drive to Devon! Barbarella looked not so much her almost five years but rather more like a three year old... however for all the "rough around the edges" stuff her kind willing nature shone through and the rest is history!

Barbarella c.1988

I owe a huge debt of gratitude to Clive Milkins and all the team at South Bucks RDA for providing the most perfect "retirement" home for her. She was clearly very happy, well cared for and kept active through her twilight years in the most perfect way.


August 12, 2011

Collective Punishment And The Riots

Writing about web page http://www.independent.co.uk/news/uk/crime/councils-set-to-evict-rioters-2335878.html

Is anyone else slightly scared by the threats from several councils to evict people found guilty of rioting this week from their council homes? In a statement picked up by the Independent, Councillor Paul Andrews, Manchester City Council’s executive member for neighbourhood services, said:

“If you are a tenant of any of our properties, and you or your children are found to be involved in the looting we will use whatever powers are available to us to make sure you are thrown out.”

Does this not strike anyone else as being a bit, you know, collective punishment-y? Specifically the way Andrews goes out of his way to say that even if it’s not the adults in the house but their children, it could still lead to eviction.

As we’re living in one of the more hysterical periods of public opinion I suppose I am obligated to point out the obvious, namely that I don’t condone the riots and think anyone convicted of looting should be punished in accordance to the law (attacks on the local community deserve jail). But I feel distinctly uncomfortable with the idea that we can punish people who might have had no idea that their relatives were out causing trouble, or who might have had no power to prevent their relatives from doing so had they known.

Yes, good parenting will often lead to kids who won’t do this sort of thing, but this does not mean that everyone whose kids took part is a bad person, even when in some cases they might not be top notch parents.


A little levity from the wonderful Photoshoplooter blog.

The idea that doing this will lead to people self-examining and deciding to be better people is also something of a gamble. When I first heard about the proposal it put me in mind of the Israeli policy of last decade whereby the houses of suicide bombers from the Palestinian community were bulldozed as collective punishment. It didn’t stop the suicide bombers from coming and the Israeli army recommended it end in 2005 as “the policy had little deterrent effect and inflamed Palestinian hatred”. Or the Intolerable Acts, passed by the British in America in 1774 as a reaction to the Boston Tea Party and other acts of defiance from the colonists, which provoked mass outrage across the country and lead to the American War of Independence. I find it hard to think similar won’t happen in the cases of some of the looters. They already feel detached enough from regular society to not care that they are smashing it up, making them homeless would surely only lead to more resentment and stored up trouble?

The rioters almost certainly knew they risked jail for their actions, but few would probably have anticipated losing their homes. The powers to evict clearly exist, otherwise they would not have been mentioned as an option, but it sounds like they are being called up as an extraordinary option rather than a usual part of the due process of the criminal justice system. This means anyone subject to an eviction has been specially singled out by the authorities, and this is quite likely a recipe for future antagonism and refusal to engage from the evictees.

Maybe it’s just me, but I find idea of collective punishment is somewhat gross in itself. It doesn’t even follow the judicial convention of innocent until proven guilty as it is essentially inflicting punishment on people who are innocent, alongside the guilty. We need to punish the guilty in these riots, but we need also to avoid making a whole new set of problems, both by fostering further resentment and by escalating the viciousness of our response. If the state can’t behave in a civilised way, why should the people?


August 05, 2011

There's no such thing as bad weather…

...only the wrong clothes. Continuing the camping-kit theme, let’s talk about waterproofs. If you’re going camping in the UK, it’s going to rain sooner or later. There are a few things you can do to make this not be a problem

- a tarp, or gazebo, or event shelter, or other tent-without-a-floor-or-walls, allows you to sit around, cook, and generally be outside without getting rained on or feeling quite as penned-in as sitting inside the tent does. Watch out in high winds though.

- Wet grass will soak trainers and leather boots. Get some wellies, some crocs, or some flip-flops

- An umbrella is pretty handy

- Most importantly, get some decent waterproof clothing . For summer camping, I like a lightweight jacket rather than a big heavy winter gore-tex – drying stuff out in a tent is hard (especially if it’s damp outside), so the less fabric there is to dry, the easier it’ll be. My jacket of choice at the moment is a Montane Atomic DT, but my lovely wife has been testing a The North Face Resolve
It uses a 2-layer construction with a mesh drop liner, dries fast (and the mesh liner means it feels dry even when slightly damp), breathes well, and is slightly fitted so it doesn’t look too much like a giant sack. Packs down nice and small, and, of course, it keeps the rain out. It’s cut fairly short, so if you’re out in the rain for a long time you’ll either need waterproof trousers or a tolerance for wet legs. For 3-season use, I’d say it’s ideal.

Update: We’ve had a bit longer to test the TNF Resolve jacket, and so far (after 3 months) the signs are still good. It’s stood up to some pretty torrential rain without showing any signs of weakness, and I am informed that the colour is excellent (I wouldn’t know about that, obviously). The DWR coating is still working well, which is alway a good sign. The previously-mentioned fitted cut means that it doesn’t flap about when it’s blowy, but it’s not tight or restrictive, even when wearing a fleece underneath. The only shortcoming, which is common to a lot of lightweight jackets, is that the peak on the hood isn’t stiffened at all, so if it’s really windy, it tends to get blown onto your face a bit. This isn’t really an issue unless you’re up in the hills in really foul weather, though, and of course adding a wire to the hood would make the jacket a lot less packable, so for a 3-season jacket it’s a worthwhile trade-off.


August 04, 2011

How to back up your gmail on ubuntu

Quick-and-dirty solution:

1. install python and getmail
2. make a getmail config like this:

[retriever]
type = SimplePOP3SSLRetriever
server = pop.gmail.com
username = your_user_name@gmail.com
password = your_password

[destination]
type = Mboxrd
path = ~/gmail-archive/gmail-backup.mbox

[options]
# print messages about each action (verbose = 2)
# Other options:
# 0 prints only warnings and errors
# 1 prints messages about retrieving and deleting messages only
verbose = 2
message_log = ~/.getmail/gmail.log 

3. enable pop on your gmail account
4. add a cronjob like this:

13,33,53 * * * * /usr/bin/getmail -q -r /path/to/your/getmail/config

You’ll end up with a .mbox file which grows and grows over time. Mine is currently at 5GB. I have no idea whether thunderbird or evolution can open such a big file, but mutt can (use “mutt -f ~/gmail-archive/gmail-backup.mbox -R” , unless you really like waiting whilst mutt rewrites the mbox on each save) , or it’s easy enough to grep through if you just need to find the text of a specific message. If you needed to break it into chunks, you could always just use split, and accept that you’ll lose a message where the split occurs (or use split, and then patch toghether the message that gets split in half.


July 23, 2011

Offensive Times Cartoon

Writing about web page http://yfrog.com/kh6omcj

I know I am a couple of days late on this but did anyone see the Times cartoon from last week commenting on the Somalia famine situation and the phone-hacking scandal? In case you didn’t here’s a shot of it:


Via twitter.com/SaiPang

It’s amazing on how many levels this is a bad cartoon, several of which spill over into being actually offensive. The editor should have sent it back with multiple revisions requested, and ideally it should have been spiked completely.

Whenever I see political and satirical cartoons I am always bearing in mind something Martin Rowson of The Guardian said in a talk I saw five years ago. Commenting on the recent controversy surrounding the Danish cartoons of Mohammed, Rowson said he felt it was the cartoonist’s job to attack those worthy of attack, and that these were the people in power, the people more powerful than the cartoonist. In the case of the Mohammed cartoons this hadn’t happened – as Mohammed is dead it wasn’t him (a powerful religious and military figure) being attacked but followers of his religion, ordinary Muslims who would be in a position of less power than the cartoonists were. Drawing George W Bush as a chimp, as Steve Bell is wont to do, is fine because Bush is a powerful man, but ordinary people with no recourse to reply are not.

And so to the Times cartoon. Obviously it is not a direct attack on the Somali people themselves, but look at the depicted children. Each identical in appearance, and looking like caricatures at that. There are almost overtones of ‘all foreigners look the same’. It doesn’t take much to make people look different in cartoons, and it doesn’t take much to make the people you are drawing look like, oh I don’t know, actual humans.

Then there’s the comparison of the famine with the phone-hacking case. Obviously both are serious. Endemic corruption in a country’s government, press and police can’t be easily dismissed as trivia and fluff despite the efforts of some, mostly journalists associated with News International and its outlets. I am not going to argue, however, that it is more serious than the famine because, quite simply, it isn’t. On the surface this makes the cartoon’s heavy-handed and poorly drawn sentiment agreeable.

But there’s more to it than that. This week only saw the declaration of famine. Official bodies have admitted this was a last resort. As the BBC reported -

The BBC’s Africa correspondent Andrew Harding says the emotive word “famine” is used rarely and carefully by humanitarian organisations, and it is the first time since 1992 that the word has been applied to a situation in Somalia.

The situation in east Africa hasn’t suddenly crept up on us. The Today program was reporting on the imminent announcement of famine a week before it was official, and the crisis itself has been developing for years in a country with no proper government and with militias keeping international aid efforts out.

Yes, the media has been awash with the phone-hacking scandal over these last few weeks, but can it be argued that it’s not a hugely important event? It’s certainly more important and more significant than the Royal wedding or Cheryl Cole’s ongoing problems with X Factor USA/Ashley Cole/breaking a nail. A truly honest cartoon would take this into account, and a truly attentive cartoonist would have highlighted the Somalia situation earlier. As it is it just comes across as a News International employee trying to divert attention from the serious wrongdoings of their bosses.

Anyway, if you only click on one link from this post, make it this one: https://www.donate.bt.com/DEC/dec_form_eaca.html?p_form_id=DEC01 Aid agencies may not currently be able to get into the affected areas, but they need to be prepared in case they do, or if the people in these areas can escape from the combination of environmental and human hostility.


July 15, 2011

Gnome 3 / gnome–shell on Ubuntu Natty

OK, so I’m not the first to do this by a long chalk, but here’s what worked for me:

1: Install the gnome 3 PPAs (c.f. http://nirajsk.wordpress.com/category/gnome-3/) :

sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install gnome-shell
sudo apt-get install gnome-shell-extensions-user-theme

For some reason, the default theme (Adwaita) was missing, as was the default font (Cantarell). (Could be because I didn’t install gnome-themes and gnome-themes-extra – see here). You can download Adwaita from here Get Cantarell from here, copy to /usr/share/fonts/ttf, and sudo fc-cache -rv to update.
I wasn’t too keen on the fat titlebars in adwaita, so I used this to shrink them down:

sed -i "/title_vertical_pad/s/value=\"[0-9]\{1,2\}\"/value=\"0\"/g" /usr/share/themes/Adwaita/metacity-1/metacity-theme-3.xml

You can set the theme and the font using gnome-tweak-tool (aptitude install it if it didn’t arrive with gnome-shell). I’m still looking for a nice icon set; the ubuntu unity ones are a bit orange, and the gnome ones are an unispiring shade of khaki. For now I’ve settled on the KDE-inspired Oxygen (aptitude install oxygen-icon-theme) which is OK, but still doesn’t quite look right.

There’s an adwaita theme for chrome which is nice, and makes everything a bit more consistent.

The London Smoke gnome-shell theme is really nice

Switching from pidgin to empathy gets you nice, clickable message notifications, although I’d rather they were at the top of the screen than the bottom.

Aero-style snap-to-window-edge works fine, except that for nvidia graphics cards with TwinView, you can’t snap to the edges that are between two monitors. Right-click context menus look weird in a way that I can’t quite put my finger on, but they function as expected.

Other than that, it pretty much just works. The only glitch I’ve yet to work out is that spawning a new gnome-terminal window freezes the whole UI for a second or so. Not got to the bottom of why that might be yet; if I find it I’ll post something. In gnome 2 there was a similar problem with the nvidia drivers, which could be “solved” by disabling compiz, but that’s not an option here. Update it seems to be connected to using a semi-transparent background for the terminal; if I use a solid background the problem goes away.

Things I like better than Unity, after a week of playing:
– Clickable notifications from empathy. The auto-hiding notification bar at the bottom of the screen is great, although I’ve found it can sometimes be a bit reluctant to come out of hiding when you mouse over it.
– alt-tab that shows you the window title (good when you’ve got 20 terminals open). I like the ability to tab through multiple instances of the same app in order, too. To get alt-shift-tab to work, I used these instructions
– menus on the application. Fitt’s law can go hang; I like my menus to be connected to the window they control


July 06, 2011

Camping time!

It’s summer time, and that means it’s camping season again. Camping is ace, and it’s doubly ace if you have kids. Almost without exception, kids love weaselling about in the countryside, so once you’ve got them onto the campsite, they’ll amuse themselves and you can get on with the serious business of drinking beer, talking rubbish and playing with fires. What could be finer?

There’s a curious kind of Moore’s Law at the moment, as far as tents are concerned.
Every year, technology trickles down from the top-end, so low and mid-range tents get better and better. My first tent, long long ago, was pretty much bottom-of-the-range and cost about £50 (which was a lot of money for a fourteen year old in ninteen-eighty-something). It weighed approximately a tonne, leaked like a sieve, and stood me in good stead for a few years worth of adventures. Now, for half of that price you can get one of these pop up tents pop-up tent

You don’t so much “pitch” it as just take it out of the bag and stand back. It sleeps two close friends, or one with too much gear, it’s pretty waterproof, and if you peg out the guy-ropes it’s surprisingly sturdy in the wind.

Downsides? It doesn’t pack down small, and I’m not sure it would be my first choice for a week in the Lake District in November – in cold, wet conditions the single-skin design means you’ll end up damp from condensation on the inside of the tent – but for summer weekend trips it’s brilliant; fun, easy, and it costs roughly 1/25th as much as an Ultra Quasar (though if you do have £600 to spare, I can highly recommend one of those as an alternative!).

ProTip: If you want to extend the range of weather you can use this in, get a tarp and pitch it over the top of the tent, overhanging the front by a meter or two. You get an extra layer of waterproofing, and a porch so you don’t have to bring your soggy boots into the tent.


one–liner of the day: quick–and–dirty network summary

If you’ve got a solaris box with a load of zones on, you might sometimes have an issue whereby you can see that the box is pushing a lot of traffic over the network, but you’re unsure which zone(s) are responsible. Here’s a super-hacky way to get an overview:

 snoop -c 1000 | awk '{print $1}' | sort | uniq -c | sort -n

basically, catch the first 1000 packets, find the source for each one (assuming most of your traffic is outbound; if it’s inbound then print $3), and then count the distinct hosts (i.e. your zone names) and list them.

If you have a slow nameserver you may want to add “-r” to the snoop command and then map IPs to names afterwards.


June 30, 2011

The natural beauties of Hungary

1,500 miles down the track going East, surrounded by cuckoos, bitterns, little bitterns, purple herons, golden orioles...an avian conspiracy against the possibility of sleep. We had ridden for two days across Europe, 8 countries on big fat BMW motorcycles, vaguely assuming that the wildlife of Romania would be our eventual target. Without anticipating Hungary.

Trapped by the astounding beauty of the big flat flood plains of the Danube, and stretching westward. First we camped at the great Lake Balaton, then on to the little known Lake Szelid, like a piece of the Okavango, a stranded and slowly salinating Danube ox-bow, with swarms of frogs and birds that I've only ever imagined I would hear or see in Africa. And then, heading towards the Romanian border and Timisoara, we stopped for lunch just a little to the west of Szeged - a small spa town called Mórahalom - the kind of place that immediately impresses with its calmness and welcome. After half an hour, Martin was seriously analysing the estate agent's wares. With the help of the English speaking young ladies at the Library and the Toursist Information centre (Hungarian ladies are beautiful, even when not riding bicycles, although it is rare to see them not riding bicycles, that seeming to be the national habit, in shorts and with very nice legs), we were directed to a small nature reserve along a sandy track (think Paris-Dakar rally). It was, I believe, called Madarász, however the Hungarian language may as well be Martian to us, and most people there seem to speak nothing else. Anyhow, it is one of the world's greatest natural experiences...whiskered terns, black terns, marsh and hen harriers, peregrines, otters, bitterns of both variety, and a raucous colony of purple herons.

Some photos fail to do justice to Hungary's wonder...

Hungary 1\

Crossing on the Lake Balaton ferry...

Balaton from the ferry

Fishermen's punts at Lake Szelid...

Fishermen

Evening on Lake Szelid...

Evening at Szelid

A single representative of the million tiny frogs that we found hopping around the foot path along Lake Szelid. Food for bitterns. A sign of a healthy eco-system.

A million frogs

A statue in the lovely little park in the spa town of Moralohom, Hungary. Notice the nice lady wrapped in a towel. It attracts visitors from all over the world to its waters, and possibly also its population of nice ladies on bicycles.

Moralohom

At the nature reserve, strange sheep with spiral horns, pigs with curly afro style coats...

Farm

Hungarian pony...

Hungarian pony

The reserve contains a series of long artificial lakes, full of life for nature lovers and fishermen...

Lakes

And flowers...

Hungary 2

Hungary 3

Hungary 4

Hungary 5

Hungary 6

Hungary 7

Hungary 8


June 26, 2011

Scala: fun with Lists

So, I’m slowly working my way though some of the programming exercises at Project Euler as a means of learning scala (and hopefully a little bit of FP at the same time).
Problem #11 is my most recent success, and it’s highlighted a number of interesting points. In brief, the problem provides you with a 20×20 square of 2-digit integers, and asks for the largest product of any 4 adjacent numbers in any direction (up, down, left, right, diagonally). Kind of like a word-search, but with extra maths.

For no better reason than the afore-mentioned desire to get a bit more acquainted with a functional style of programming, I chose to implement it with no mutable state. I’m not sure if that was really sensible or not. It led to a solution that’s almost certainly less efficient, but potentially simpler than some of the other solutions I’ve seen.

So, step one: Give that we’re going to represent the grid as a List[List[Int]], let’s see if we can get the set of 4-element runs going horizontally left-to-right:

    def toQuadList()= {
      def lrQuadsFromLine(line: List[Int], accumulator: List[List[Int]]): List[List[Int]] = {
        if (line.length < 4)
          accumulator
        else
          lrQuadsFromLine(line.tail, accumulator :+ line.slice(0, 4))
      }
      data.flatMap(line => lrQuadsFromLine(line, List.empty))
    }

(“data” is the List[List[Int]] representing the grid). Here we define a recursive function that takes a List[Int], obtains the first 4-number run (line.slice), adds it to an accumulator, and then pops the first item from the list and calls itself with the remainder.
Then we just call flatMap() on the original List-of-Lists to obtain all such quadruples. We could call Map, but that would give us a list of lists of quadruples – flatMap mushes it down into one list.
It would be nice to find a way to make the if/else go away, but other than just transliterating it into a match, I can’t see a way to do it.

Given that list, finding the largest product is trivial.

   def findMaxProduct = data.map((x: List[Int]) => x.reduce(_ * _)).max

- take each Quadruple in turn and transform it into a single number by multiplying each element with the next. Then call .max to find the largest.

So now we can do one of the 6 directions. However, a bit of thought at this point can save us some time: the Right-to-Left result is guaranteed to be the same as the left-to-right, since multiplication doesn’t care about order (the set of quadruples will be the same in each direction). Similarly, the downwards result will be the same as the upwards one.

Next time-saver: Calculating the downwards result is the same as rotating the grid by 90 degrees and then calculating the left-to-right result. So we just need a rotate function, and we get the vertical results for free:

   def rotate90Deg() = {
      data.head.zipWithIndex.map((t) => data.map((row: List[Int]) => row(t._2)).reverse)
    }

Doing this without mutable state took me some pondering, but the solution is reasonably concise. Doing zipWithIndex on an arbitrary row of the grid (I used .head because it’s easy to access) gives us an iterator with an index number in, so we can now build up a List containing the _n_th element from each of the original lists. (The outer map() iterates over the columns in the grid, the inner one over the rows in the grid))

So now we have the horizontal and vertical totals, we need to do the diagonals. It would be nice if we could once again re-use the left-to-right quadruple-finding code, so we need to get the grid into a form where going left to right gets the sequences that would previously have been diagonals. We can do this by offsetting subsequent rows by one each time, the rotating; like this:

1,2,3
4,5,6
7,8,9

?,?,1,2,3
?,4,5,6,?
7,8,9,?,?

7,?,?
8,4,?
9,5,1
?,6,2
?,?,3

You can see that the horizontal sequences are now the original diagonals. Initially, I started using Option[Int] for the items in the grid, so I could use None for the “question marks”. However, after more time than it ought to have taken me, I realised that using zero for those would work perfectly, as any zero in a quadruple will immediately set that quad’s product to zero, thus excluding it from our calculation (which is what we want).
The function to do the offseting is still rather complex, but not too bad (it owes a lot to the recursive toQuadList function above:

    def diagonalize() = {
      def shiftOneRow(rowsRemaining: List[List[Int]], lPad: List[Int], rPad: List[Int], rowsDone: List[List[Int]]): List[List[Int]] = {
        rowsRemaining match {
          case Nil => rowsDone
          case _ => {
            val newRow: List[Int] = lPad ::: rowsRemaining.head ::: rPad
            shiftOneRow(rowsRemaining.tail,
              lPad.tail,
              0 :: rPad,
              rowsDone ::: List(newRow))
          }
        }
      }
      shiftOneRow(data, List.fill(data.size)(0), List.empty, List.empty)
    }

We define a recursive function that takes a list of rows yet to be padded, a list of zeros to pad the left-hand-side with, another for the right-hand-side, and an accumulator of rows already padded. As we loop through, we remove from the remaining rows, add to the done rows, remove from the left-padding, and add to the right padding. It kind of feels like there ought to be a neater way to do this, but I’m not quite sure what yet.

To get the “other” diagonals, just flip the grid left-to-right before diagonalizing it.

Once that’s done, all that remains is to glue it together. Because I’ve been thinking in OO for so long, I chose to wrap this behaviour in a couple of classes; one for the list-of-quadruples, and one for the grid itself. Then I can finish the job with:

 println(
      List(new Grid(data).toQuadList.findMaxProduct,
      new Grid(data).rotate90Deg.toQuadList.findMaxProduct,
      new Grid(data).diagonalize.rotate90Deg.toQuadList.findMaxProduct,
      new Grid(data).flipLR.diagonalize.rotate90Deg.toQuadList.findMaxProduct).max)