Mark Grealish

Cats and wizardry.



Handball alley tomfoolery

We took a long new year’s day walk and wound up in the town’s old handball court that’s been turned into a grafitti gallery by all accounts! Total edginess ensued.

We’re hot

Potato quality, but whatever: this post comes to you from the kingsize bed of the luxury XII suite in Barna’s Twelve Hotel.

The edgy edge of edginess

Too cool for school.

The Archivening

A major gap in the Sheepie theme has been the absence of templates for category, tag and date archives. This update adds such. Changes: Added archive templates for categories, tags and dates. Made a pass to simplify theme CSS by removing dual output of px and rem values for rules. Only rem values are now […]


Here is hard-learned wisdom: a 365 project is difficult. One picks a subject, for which one then must prepare one photograph every day. As a then-professional photographer, I was defeated on Day 149 by the lengthy workflow: capture, import, cull, process, refine, upload, author, revise and submit, repeated every day. It just took too much […]

My free dev stickers from Notifuse arrived!

It’s a step up on my missing Hacktoberfest t-shirt. :( An offer from Notifuse came to light on Reddit, and like the rest of the masses I slammed their site with my order. And now, against hope, the stickers arrived! \o/

Dublin, January 2016

Hacktoberfest bragfest

My Hacktoberfest t-shirt arrived! \o/

On death

Don’t mourn for the dead, but celebrate their lives! You’re the conscious end product of seventeen billion years of wheels and cogs a-whizzing in an unconscious universe-sized machine, and when you’re gone, you’re gone; there’s no heaven, God, gods or any other kind of happy forever after waiting to receive your shriven leftovers. This is […]


So, I shit you not, but last night I dreamed about SQL queries. I was sat at my desk, at work, and there I SELECTED, JOINED, INSERTED AND LIMITED with all the fury of someone who has a job to get done. I don’t know how, but I have managed to avoid any knowledge of […]

Light tig theme

Tig (Text-mode interface for git), is a text-mode interface for git, a tool which provides a handy text interface for any git repository. While tig is great, it hasn’t picked up much of a broad following, or theming community, so it fell to me to create my own light theme for use on a dark […]

Order of the Stick(ers)!

Yeah, fuck it. I was so pleased by my free Notifuse stickers that I went full hipster with an Order of the Stick sticker set from Ookoodook.

Oh, my week?

As a self-taught coder, two of my (supposed) comforts are the intelligence and formal education of my peers. I mean, they literally went to school for this! They graduated, and then behold!, the depth of their expertise is such that they were hired on as Serious Professional Coders. It’s a big comfort blanket I can […]

2 srs 4 u

Eadaoin snapped me on a swing after breakfast at The Dean yesterday morning, and added it to our syzygy.

Reset a file to last committed version in vim

Random but useful. Eh, it works for me. My entire vim profile is available to pull at GitHub. nmap <leader>gr :!git checkout %<CR>

Thursday morning Dublin symmetry

I’m an idiot

So yeah, I may have had a silent permission problem with mod_pagespeed: root@caira apache2 $ {zcat error*gz & cat error.log{,.1}} | grep 'mod_pagespeed' | wc -l 4789168 root@caira apache2 $ {zcat error*gz & cat error.log{,.1}} | grep -v 'mod_pagespeed' | wc -l 7 Let’s just sweep this one under the rug…



Here’s a queer sight for you: nacreous clouds over Dublin and the rest of the British Isles caused by winter storm Henry. It was a rare and resplendent occasion that I duly celebrated through the time-honoured act of gaping.

Dublin, early February 2016

Valentine’s day 2016

Bought champagne. Didn’t have a fucking bottle opener. Kill me.

vim colourcolumn shorthand function

While there’s probably an efficient, pithy, three-character, way to accomplish this, this works for me: If arguments are passed, take in the first. Coerce it to a number and set colorcolumn with it. There are some things I want to try (like ranges), but that’s for the future. function! RightRuler(...) let &l:colorcolumn = a:0 > […]

vim FIXME keybind

I’m onna roll, rite? This inserts a dated (format YYYY-MM-DD) FIXME comment into the above line. nmap <leader>fm :exe ':normal O# FIXME ' . strftime('%Y-%m-%d') . ': '<CR>i

Caira and Garrett, February 2016

In Temple Bar

zshell: cp the last file in a given directory

It’s come in useful for some small tasks. cp-last() { if [[ -d "$1" ]]; then echo "cd: ${1}: Not a directory" exit 1 fi cp "${1}/$(ls -A1t $1 | head -n 1)" "${2}" }


I was ordered to write

From on high an order has given unto me: I need to blog more. Okay, sure, fine, whatever. Here we are. Most of the real meaty content on this blog came out of my personal pain. A few years ago, shit blew up on me, I had a breakdown, and I poured it out here. […]

So now I have to fucking type again anways

I bought a mechanical keyboard: the Vortex POK3R/Poker 3 keyboard. I mean, I sit at a desk and type six hours per day, five or six days out of any seven. A keyboard is my tool as much as a plumber uses a wrench, and my work-provided Magic Keyboard it shit. It controls the Mac […]


vim clipboard one-liners

Yank and replace all lines in a file without consuming the clipboard. " Quickly yank all lines in the file. nmap <leader>yy :%y+<cr> " Replace all lines in the file with the contents of the clipboard. nmap <silent><leader>rp gg"_dGVp

Joanna Newsom!

Joanna Newsom is on a tour of Europe, and her Irish stop has seen her perform at Dublin’s Olympia Theatre. Eadaoin adores Newton’s-and I enjoy-Joanna’s music. She loves to point out the deeper meaning of lyrics; the reflections on love and time and meaning matter a great deal to Eadaoin. And here I just like […]

Snow day

…and I’m sick as shit. Eadaoin woke me up at about six am because there was a heavy snowfall. I, sick, proposed a walk around the neighborhood, which we promptly undertook. I got soaked, came home, emailed work to let them know I wouldn’t be in and then fell asleep until about one o’clock this […]

Thanks Gar

Garrett has figured out that he can call me whenever, and now does so at 1am. Thanks, kiddo.

Eadaoin’s birthday dinner was deep

It started right off with explanations of arrays and hash tables.

Mandatory vim porn

I fixed a bunch of crap (Powerline font display, mostly). Go check it out!

Have the greenest of days

I used to be a remorseless asshole when it came to the Irish diaspora because of the amount of dipshit hyphenated Americans who flouted their misunderstood past. To me you were either Irish, or you were whatever else. Never could you be both together. Great example: two ladies I knew at Expedia, one named O’Shaughnessy, […]

Eadaoin’s birthday debauchery

Eadaoin’s birthday weekend was Roman in its decadence, with high tea served at the resplendent Powerscourt Hotel in Enniskerry on Saturday, and a three-course feast of Mexican food consumed on Sunday.

Saturday out

Alanna and Casey came down last night. What a night it was! We had coffee in Clement & Pekoe, sushi and ramen next door in Kokoro and a round of pints at the Brew Dock. Then we went back to Dundrum for homebrewed mead on the couch. On Talbot Street saw two scumbags fighting (or […]

Caira and Garrett, Easter 2016

My Ireland at 100

The Irish Republic turned 100 today and Dublin hosted a huge parade today at the culmination of events centered on the 1916 Easter Rising. The city and country turned out in pride and today was the day to be Irish.

We did it Reddit!

NPM exploded last week. The Listos version is that Kik were not happy with a developer, azer. azer had a package in NPM named ‘kik’. Kik, compelled their trademark, first reached out to azer to ask him to rename or remove his package. azer cursed out Kik, so the company escalated the matter to NPM […]


Bash spaceship function

I have no idea why this spaceship comparison is important, but a note in the file marked it so, and now here we are. #!/usr/bin/env zsh spaceship() { if [[ $1 -lt $2 ]]; then echo -1 elif [[ $1 -eq $2 ]]; then echo 0 else echo 1 fi } spaceship $1 $2

Nonstop 5k run!

In January I got sick of being fat. All around me, clear to see, were middle-aged (45-60) year old people who didn’t take care of themselves. Most of my ex-wife’s family struggle with being overweight; diabetes is ubiquitous and even my ex-wife is seriously obese. My dad died of an asthma attack at 63 which […]

If recruiters worked in bookshops…

Spotted this afternoon in Hodges Figgis.

Typewriter sort returns!

I am revisiting 2014’s Typewriter Permutation Simulator. Now powered by Node.js, because I want to learn more JavaScript. I have a healthy start made for a web-based performant bogosorter. var args = process.argv.slice(2); var permute = function() { var letters = this.split(''), count = letters.length; while (--count > 0) { var rand = Math.floor(Math.random() * […]

Bull Island

Eadaoin got us out of the house this morning for a walk through Saint Anne’s park in Clontarf and across North Bull Island. Gorgeous day, showers aside!

Show untracked git files

This has been a real lifesaver at work. [alias] untracked = !git ls-files -o --exclude-standard

Killiney Hill

Many meetings

Here’s a blast from my past: I was an avid gamer in my teens. I can’t remember every game that I played. I can say that they included Magic, L5R, D&D, and Middle Earth. I put hundreds of hours into Tribes. I collected all the things, played all the things, and that was before had […]


Yet despite all that, I bought one anyways

Paul Mac Eoin and I have kickstarted a new technology podcast. The Future Of. Our slogan is ‘infinity…awaits!’ The Future Of is not just about technology: I want to explore European views and the wider shifts in culture that new gadgets wreak. There are dozens of American technology podcasts full of the Bay Area or […]

I think we were burgled

I’m confused as fuck. On Wednesday our lodger reported that €150 missing from her wardrobe. On Thursday I discovered somebody had stolen from my change jar. They took only the €1 and €2 coins. On Friday, after a lot of talk, our lodger reported this to the Gardai. We had a 10pm visit from two […]

A hot new look

I changed the site’s layout because I didn’t like the old version. Along the way I fixed a good deal of shit code and poor design decisions. Gone is any compatibility with Internet Explorer. Off the top of my head, I: Removed KnockoutJS in favour of a teeny jQuery pub/sub model. Removed convoluted avatar […]

Wordscramble on npm

Wordscramble is also my first npm package ever! I try to learn something new each Saturday, and today I wanted to create, test and publish my own npm package. The first subject to pop into my mind was my typewriter bogosort. Wordscramble is gloriously useless. You pass in a JavaScript object and you get it […]

Dun Laoghaire ice cream

[summer intensifies]

When the work is out of hours

Data binding with jQuery for madness, fun and profit

I began to cringe before I even finished the title. Data-binding, sure, but jQuery data-binding? The fuck? So, yeah, bear with me here. This is a weekend project that I did because I could, but there’s no way in the world I would use this on a production server. The code is brittle and has […]

And then I left

In need of a beard trim, I entered a trendy new barbershop on Exchequer Street and requested one. They asked me for my name and email address.

Extend JavaScript object, and convert object into an array

Turns out I use these stupid methods in a bunch of places, and the search on Github isn’t the most effective. /** * Merge and extend JavaScript object. * * @param {...object} Objects to merge. * @return {object} object - Merged object. */ var extend = function() { var object = {};, function(argument) { […]

Three people called me smart last week

“Intelligent,” declared one. “Clever and driven,” said another.


Every programmer writes this at least once in their career. def kill_orphans end

I have the flu

Influenza, the black death, the red death, greyscale, galloping crotch rot, cooties, leporsy. Call it what you will, death is nigh.


That one time when I was the headline of an Irish Times article

Luas strike: Getting a bus like ‘The Hunger Games’ Mark Grealish, Windy Arbour, said his previous experience of getting the bus during a strike was like “The Hunger Games” and “way too hard”.


It’s saturated as fuck, but who’s counting? Killruddery House, Bray, Co. Wicklow.

Start of summer dinner

Big cheers to Aafke, Eric, Petra, Sinead, Vlastik, who joined Eadaoin and I for a gratuitous start-of-summer dinner at the Cedar Tree Lebanese restaurant.

The view from the window

I like my office.

Google Cardboard

Subtitle: literally a white guy wearin’ a virtual reality headset. Google Cardboard is expensive as fuck in Ireland for no good reason. There are no Irish vendors who sell the cardboard headsets, and the single Amazon vendor who sells them demands €20 + shipping. Ebay? Four euro if I wait an extra week for delivery […]

I did it!

200,420 blocked spam comments!

Looking for Zen in all the wrong places

I subscribe to the idea that we are the byproduct of a dumb, deterministic universe, although I stop stop of acceptance of full-on causal determinism. Everything, everywhere came about because the physical constants of the universe all permit stuff to happen. Worlds form, stars fuse hydrogen and galaxies fly away from one another into the […]

I saved the day with math!

(OR: How to determine whether one array contains a subset of another in JavaScript) Web development in the Rails universe is like code Lego: pick the right Bootstrap classes, fiddle the jQuery selectors and align the sprockets, among other such crap. This is fully as intensive (and boring) as any other area of programming, but […]

Teeny Minecrafters

The stars aligned, we got to play Minecraft with Caira and Garrett.

Great Blasket Island

There are seals and dolphins and Fastnet Rock in this photograph if you look!


Strandhill panoramics

These are panoramas taken over the past few days in and around Strandhill, Co. Sligo.

Accidental mutual panoramas

We shot in opposite directions, each telling the other to frigging move.

Eadaoin at Ballysadare Bay, Sligo

We had showers and wind and rain and sunshine and rain and sand and rainbows and sunshine in the space of ten minutes. Strandhill is a truly gorgeous spot. Pointless cross-processing effects for the win. \o/

Farthest Galway, the Maamturks, Kylemore Abbey and Killary Harbour

These photographs are presented with only light consideration given to their proper order.

Slea Head and the Blasket Islands

Spoiler: there were dolphins, and the views were as cold as they were spectacular. Naive and stupid as we were, we didn’t dress for summer on the Atlantic west coast. By this I mean that we should have dressed for winter on the east coast.

Two views on the road from Dingle to Inch Strand

The Killiney Hill obelisk

It’s been four years since I last processed a black and white image. Be gentle.

Sligo Bay from the peak of Knocknarea

We climbed up, got lost in a cloud, then climbed right back down. Then we had a seaweed bath which caused me to have a panic attack.

Selfies from the roof of the world

And this during our ‘conquest’ of Knocknarea.

Spectacular sunset skies over Dublin

Converging anticrepuscular rays and a forming lenticular cloud photographed from Churchtown, Dublin.

Yeah, we got a kitten

Meet Cookie:

Manly Sugarloaf selfie

I have it, so eh, why not flaunt it?

Cookie naptime



Blue eyes, red hair, big heart.

Airplane casting its own shadow on the sky

The title, uh, says it all.

On the side of the Sugar Loaf, July 2016

Alanna and I climbed the Great Sugar Loaf last Saturday, then hiked down into Enniskerry. Great afternoon!


This was my Saturday

Cats, cats, cats.

Shiny new Roost laptop stand

The Roost laptop stand is awesome! It has freed up a chunk of space on my desktop, and moved my laptop far enough away from my USB hub that I no longer get the bad EM interference that kills my WiFi connection.


Cloud forest at Bray Head

Eadaoin on (and after) Bray Head

Posts lag behind reality because the month past was intense, being both stressful and tiring. The pair of us climbed Bray Head on the Monday of the August bank holiday weekend. So Eadaoin thought I was mad in my insistence that we wear proper outdoor gear for the walk. Some little girl, on our way […]

Bray Head from Bray train station

This is life with Cookie

I’m now a pedestal, a platform for her attacks on Eadaoin’s ferns.

This is our life meow

Aged 35.25

Nobody told me how hard it is to be an adult. When I fucked off out of school at eighteen with the dregs of a Leaving Certificate clutched in hand, there were no expectations laid down. Like, I was a graduate fuck-up whom no college or university would touch. I fucked around for six months […]

Strange days, dark days

I’m gonna say it: today was strange. A person I worked for last year committed suicide on Monday night. While I know their reasons, they aren’t mine to share, but I can understand and sympathise with their underlying motive. That I can talk about. There are a million stupid “think about the suiciders!111one” posts floating […]

Writing off WordPress

I have begun the move away from WordPress that I promised I’d make. My first steps were to: Submit Sheepie to the WordPress theme codex. Publish the the underlying Sass library, Charon, npm (the description needs work at the time this post went up). I have ceased all development and support for all PHP- or […]

Literally Markour

Eadaoin asked for urban exploration, for parkour and excitement. I have no idea why she giggled at me when I delivered.


Cookie in the kitchen

Photograph by Eadaoin.

To be honest, we’re hot shit

Yeah, look at us.

To mum

Mum, There are many things that I’ve wanted to say to you for years. I’ve tried to say some of it, now and again, but it always seems to come out wrong; usually someone will get their back up; or you stonewall me; or you get upset and Jennifer drags herself into the conversation to […]

“Hello world!” from elm

I am teaching myself functional programming and MV JavaScript applications by way of Elm. Although Elm has so far managed to wreck my head, parts of it have begun to be less opaque. /tooting intensifies import Html exposing (Html, text, div, button, h3) import Html.App exposing (beginnerProgram) import Html.Events exposing (onClick) main = beginnerProgram { […]

Misty morning at the River Dodder

Eadaoin and I caught some gorgeous light on our walk to work.

Garrett’s seventh birthday

Disapproving Cookie

I don’t know why I feel so judged, but I do.

Spanish Point Eadaoin

Taken at Maria and Adrian’s wedding in September 2016. :)

Dublin skies, September 2016

Cloud iridescence and lenticular clouds in one day!


Simple recursive array map. function map(arr, callback) { return !arr.length ? [] : [callback(arr[0])].concat(map(arr.slice(1), callback)); }

Like three times worse

Overheard today at work: God keeps killing unicorns. This is worse than kill_orphans.

This is my life meow

I’m a Cookie cot.

Cookie says hi!

with recursion

today i solved a problem with recursion today i solved a problem with today i solved a problem today i today solved i recursion i today with^C^C^C

Dump (and pretty print) all function arguments to the console

A Lodash-infused variant of this function is my lifeline at work (ALL the ES6 syntaxes!): function dump() { [...arguments].forEach(arg => { console.log(JSON.stringify(arg, null, '\t')); }); } For example: dump( { messages: { hello: 'World!', goodbye: 'Moon!' } }, ['Apples', 'Oranges', 'Peaches', 'Pears'] ); { "messages": { "hello": "World!", "goodbye": "Moon!" } } [ "Apples", "Oranges", […]

Lough Glenicmurrin

I close my eyes now, and open them two years ago. The sun is on my face. There are only two colours in the world, green and blue. Water laps, insects buzz, and the wind sighs soft in my ear. The only things I see are the lake, the mountains, and my friends. Eadaoin’s by […]

I went full hacker

Friends don’t let friends friends go full hacker. It turns out that a 76 centimetre monitor turned to portrait is completely unusable for teh hax0ring-I had a neck ache inside of a half hour, and I went back to a single screen before lunch. Years of Openbox with powerful keyboard shortcuts have ruined my ability […]



Recursive factorial in one line. function factorial(number) { return number < 2 ? 1 : number * factorial(number - 1); }


Simple recursive array each method. function each(array, callback) { if (array.length) { callback(array[0]); each(array.slice(1), callback); } }

Coding Zen in all the strange places

I continue to return to Zen as a way to reach peace with myself. Zen encourages introspection and meditation alongside expressive acts such as calligraphy. The core of Zen calligraphy, such that I understand it, is to cultivate the beginner’s mind. The expert mind is packed with presumption; while an expert mind has a powerful […]

The best kind of Saturday morning

Eadaoin and Cookie both cuddled up while I study.

Twilight at Sandymount Beach

We missed the best of the golden hour, but I for one am satisfied with the twilight we caught.

La chat noir


Tonight went well.

Right-cyclic array rotation

The solution is ugly, but fuck it: the code works. Also, code Zen. ;) TL;DR: Create a new array by plucking the last element from the array and making it the first. def rotate(array, count) return array unless (count >= 1 && array.present?) rotate(cycle(array), count - 1) end def cycle(array) [array[-1]] + array[0..-2] end And […]

Odd occurring element in an array

I dug into the problem and discovered that any number XOR’d with itself an odd number of times equals zero, whilst an even number of times equals the number itself: 7 ^ 7 = 0 7 ^ 7 ^ 7 = 7 The trick here is: Numbers which appear in the array an even number […]

Even occurring element in an array

This solution employs the previous solution. With the XOR method explained, you invert the array: Find the unique elements in the array. Concat the new array to the original. This makes the even (even count) numbers odd, and the odd numbers even. Use the XOR method as before. Behold: function evenOccurring(array) { return [].concat(array, array.filter(unique)).reduce(xor); […]

Recursive Sieve of Eratosthenes

Call me stupid, but the Sieve defeated me for years-I could never quite seem to make it click. TL;DR: Return the first element of the array, joined with the rest of the array with all multiples of the first element removed. A non-zero value is truthy in JavaScript, which is coerced into true, so non-multiples […]

Git branch name

It’s a greatly stupid-simple alias: git config --global alias.branchname '!git branch | grep -E "^\*" | tr -d "* "' git config --global alias.dammit '!git push -u origin $(git branchname)' git dammit

October at the Digital Hub

Rogue One cinematography

It doesn’t matter to me if the rest of Rogue One is awful, not when this is how Gareth Edwards’s presents the Star Wars universe. See, I’m a written science fiction fan. While I don’t keep count of what books I’ve read, I put the count somewhere in the mid hundreds. Some novels I’ve read […]

Get the prime factors of a given number

This solution uses the Sieve of Eratosthenes and the range() functions I detailed a while back. Hurray for function composition! function factors(number) { const primes = sieve(range(2, number >> 1)).filter(n => !(number % n)); return primes.length ? primes : [number]; } The code is simple: Generate a list of primes in range 2-(n / 2) […]

Decadent kitty comfort

You can’t fake this level of luxury.


Reddit jokes aside, holy shit: I wooed Eadaoin with space facts. We would spent hours on Skype at night when we first went out, where I’d talk about the universe to help get her to sleep.

We’re on a plane!

To Brussels!

Moody me

Taken by Eadaoin in Brussels, Belgium.


Hackoberfest has made Tic-tac-toe a thing in my life. tictactoe-server opened an issue for a ES6 refactor of the solution checker. I kicked around the lengthy imperative code check and found I wanted to expand the solution, that I wanted to drop in Tic-tac-toe boards of arbitrary size, and to check them in an efficient […]

The Irish Sea from Blackrock

I wanked around with some sliders in Photoshop because I liked the net effect.

Eadaoin and I at La Maison d’Érasme, Anderlecht, Brussels

Erasmus lived and taught at the house by all accounts. The garden is beautiful, a serene green space in built-up Anderlecht.

La Maison d’Érasme, Anderlecht, Brussels

Erasmus House is gorgeous.

Galeries Royales Saint-Hubert, Brussels

Like with everywhere else famous, there’s a weird discontinuity between a Google Maps lookup or a Wikipedia article, and the reality of walking through the arch. It stops being some far off exotic location, and becomes a collection of expensive chocolate and bag shops, and a cafe where I had a great coffee.

Pretty green postbox, Anderlecht, Brussels

There are many such beautiful details to be found if your eyes are adventurous and discerning. :)

Rue des Poissonniers, Brussels

I had Jamaican Blue Mountain coffee right after I took this, which is all kinds of awesome.

Eadaoin at Maria and Adrian’s wedding

Taken at Spanish Point Co. Clare on September 1 2016.

Platform #12, Brussel-Zuid Train Station

Foggy and dark and cold-the perfect platform for a trip to sunny Brugge!

Brugge from the Dijver

The Dijver is a traditional canal, street and marketplace in the heart of Brugge, although today’s markets sell tourist tat. :) I took this panorama while on a boat trip with Eadaoin.

Brugge, Flanders

Brugge is one of the top tourist spots in Belgium, and indeed, most of Western Europe. A PDF I pulled up asserts “…29 million overnight stays and 11 million tourist arrivals” to Flanders. Tens of millions of people visited to Brugge over the last half century. Those visitors took somewhere between hundreds and thousands of […]

Eadaoin in a Christmas Cave

Taken at De Witte Pelikaan in Brugge, Flanders.

Holy shit, two thousand posts!

This post will be the two thousandth on my blog, give or take. I want it to serve as a bridge between the eleven years of ups and downs in my life behind me, and the bright and unknown future ahead. Eadaoin pointed out to me that, yes, I threw up other retrospectives in the […]

Rainy Ranelagh

Autumn has arrived in full force. :(

I mean it this time

That’ll be the title of my autobiography: I Mean It This Time: A lifetime of apologies from my strange self. The diagnosis turned me into some kind of quantum special snowflake. ASD flags me as a Tumblr-grade special snowflake, but at the same the stress of my stress is boring and ordinary. I wrote the […]

Eadaoin at Zonnekemeers, Brugge

Zonnekemeers leads the way out of the old city and into the newer suburbs. You can see the progression in architecture from the 1700s to the 2000s as you walk from one end of the street to the other.

Rue de Formanoir, Anderlecht

About the only thing remarkable about Rue de Formanoir is Erasmus House at the far end from the metro station. There’s a weekend tradition where all the residents come out and turn out their homes to sell knick-knacks and mathoms on the street. The street market is a fantastic idea made possible by the high […]

Eadaoin takes photographs at La Maison d’Érasme, Anderlecht

Belgian railway platforms

The first is a different angle on Platform #12.

Eadaoin at Spanish Point, September 2016

Taken the day after Maria’s wedding. Sore heads abounded.


Eadaoin and I were in Brussels to meet her nephew Oisin, who turned out to be an awesome little kid full of life and wonder at the world.

Dawn from Windy Arbour

The last couple of weeks make me feel like my photographic mojo is on its way back.

Cookie in the kitchen

She quickly decided she was through with my shit.

Bank holiday Monday at Knocksink Forest

Eadaoin looked beautiful, I looked like a bum.


Eadaoin and a dog at Knocksink Woods

A dog arrived and a dog left. Our story lies somewhere in between.

Diptych at Knocksink Woods

The Huntress

Cookie never stops stalking. Not once, not ever, not even for a second.

My programming pair partner

I have no idea how Cookie found it comfortable underneath my laptop, let alone for six hours, but six hours she stayed.

Two trees in Knocksink Woods

I sat on these photographs for a week while I agonized about colours and controls. Too much contrast? Too yellow? Too saturated? In the end I decided to present them as-is.

Cookie in a windowsill

Cookie at rest

Project Euler Problem #8

Functional JavaScript is cleaner than my C# solution, for sure! const raw = '731..450'; // Snipped for clarity. const chunkSize = 13; const multiply = (previous, current) => previous * current; const largest = (previous, current) => current > previous ? current : previous; function chop(string, size, chunks) { chunks = chunks || []; if […]

A karmic ditty for developers everywhere

Whenever you start to complain First take the time to git blame!

Project Euler Problem #12

Once again, it’s more readable than my last solution. I used a generator to get the next triangle. function divisorCount(number) { let end = Math.ceil(Math.sqrt(number)); let divisorCount = 0; for (let i = 1; i < = end; i++) { if (!(number % i)) { divisorCount += 2; } } return divisorCount; } function* triangleGenerator(number) […]

Project Euler Problem #22

Again, better. :) #!/usr/bin/env node const fs = require('fs'); const add = previous, current) => previous + current; const toNumbers = string => { return string.split('').map((_, index) => string.charCodeAt(index) % 64); } fs.readFile('./p022_names.txt', 'utf8', (_, data) => { const names = JSON.parse(['[', data, ']'].join('')).sort(); const reduced =, index) => { return toNumbers(name).reduce(add) * (index […]

Project Euler Problem #24

#24 defeated the fuck out of me first time through: My solution to this was basically stolen elsewhere, and it took me a whole year to come back, sit down, and work through my own solution. The poor wording (I’ve since edited it) of the Wikipedia article didn’t help me. The specific piece of information […]

Project Euler Problem #16

Ruby this time, and a wee bit shorter too. (2**1000).to_s.split(//).map(&:to_i).reduce(:+)


I went back and owned the fuck out of Problem 24. I present to you a fully-functional functional lexicographic permutation generator generator. Hail Satan! \m/ #!/usr/bin/env node const lexicographer = require('lexicographer'); const array = [...Array(10).keys()]; const breakpoint = 1000000; let permutations = 0; for (let value of lexicographer.permute(array)) { permutations++; if (permutations === breakpoint) { […]

Project Euler Problem #36

function range(start, end) { return [...Array(end + 1).keys()].slice(start); } function palindrome(number) { return number.toString() === number.toString().split('').reverse().join(''); } function toBinary(number) { return (number >>> 0).toString(2); } function add(sum, current) { return sum + current; } const palindromes = range(1, 999999).filter(number => { return palindrome(number) && palindrome(toBinary(number)); }); console.log(palindromes.reduce(add));

Project Euler Problems #18 and #67

The new solution for Problem #18 (compared to the old one) is more elegant: I reverse and reduce the triangle in a manner that doesn’t require me to check. The solution for #67 is a bit more longform, so I turned the method I use here into an NPM package: Triangutron. const eighteen = ` […]

Project Euler Problem #30

Problem #30 was solved on new ground: my first run through Project Euler was in rigid order of first to last ending at #25. The recent round of solutions mostly cover old ground, which works well for me by itself because it shows off how my code has improved since 2012. Also, the run of […]


Mount Usher Gardens

Found during a cleanup of photographs from the summer. :)

I’m not sure what kids consider hip these days, but I think it involves concussions


Mindey Blindey

My life since the Autumn of Autism has become a chain “oh, huh” moments, little pieces of self-discovery that flow one into the next. Put together, they outline a substantial blindness in myself, of myself. It’s a thing called alexithymia, where I don’t know what I feel, when I feel it, even though I still […]

<3 Gentle Monday night cuddles with Cookie <3

My kitty cat loves me so. :3

Hello Newry, Goodbye Newry

I came, I mailed, I left. To paraphrase the problem: An Post will not accept any package with a battery or electronic device inside. No way, no how. Except when such a package comes in from outside the country, and then they’ll happily deliver it. But An Post still won’t accept such a package for […]

Recursive hash operation in Ruby which fowards a block

Recursive hash operations were annoying as heck to puzzle out because, you know, functions aren’t just functions in Ruby: You have functions and procs/lambdas, all of which have subtle differences. Like a regular function cannot be passed as a block. Well, whatever, I had a problem where I had to walk, reject-from and then compact […]

Hackerstation v2005

You can just feel the Linux dripping off those nicotine-stained walls. Yeah, fuck parents who smoke in their own home.

Hacker Mark v2005

Sure what else did you expect when I had a shit battlestation?

Eadaoin by the sea, November-December 2016

All hail Queen Eadaoin of Dublin Bay and Galway Bay.

Dawn light

The view from our room leads to the production of many beautiful dawn photographs, whatever else you might care to say about it.


There are times when I envy what gods give to their believers: a sense of identity and place in life, and a higher power you can call on in times of need. I grew up with a growing realisation that the godstuff made no sense. I’m logical and literal and limited by my fundamental lack […]

What I did on my summer holiday

I finished with one programming job on Friday and I start my next Monday. That means it’s time for some good ol’ retrospection. I used to think I was a special snowflake because I fell into coding, but Stack Overflow says otherwise. I wrote a great sob story about my hard-luck, self-taught career, but I […]

Cookie, home from boarding


Typing right is hard

Something something legacy shoulder injury, proper ten-fingered touch typing is hard. I type fast in a ten-fingered style, but it is weird and left-dominant. Correctly keeping both hands on the home row is hard. Grumble.

2005-era Linuxy desktop goodness

And by “retro” I mean “cringeworthy,” but that’s part and parcel with haxx0r Mark and his ghetto battlestation. In clockwise order: Gnome desktop environment on Fedora Linux, Wednesday August 18 2004. Gnome desktop environment on Gentoo Linux, Thursday February 16 2006. Fluxbox window manager on Gentoo Linux, Monday November 15 2004. Gnome desktop environment on […]