STORY · · 7 MIN
The one time I listened to my Dad's advice, getting started in tech
In the backdrop of the great recession, I left secondary school (high school) determined to row in the 2012 London Olympics, sadly that didn't pan out and is a story for another time. Instead that summer of 2012 I needed to get a real job but no one wanted to hire a peak fitness psychology student. My father who had worked in Dell, said I should #LearnToCode. I listened to his advice. This is the story of those first steps into tech and part of a series on my experiences over the past few years.
There’s a photo of me from October 2013, standing in front of a projector at the Dublin Node.js meetup, presenting a search engine to an audience sitting on beanbags. About eighteen months earlier, I couldn’t program.

Presenting MetaSearch.js at the Dublin Node.js meetup, October 2013. Photo from Eoin Brazil’s tweet.
I had studied Applied Psychology at UCC while trying to make it to the 2012 London Olympics. That did not work out. In the middle of the recession, I had a psychology degree, a CV dominated by rowing and no obvious route into a job. My dad, who had worked at Dell, told me to learn to code.
For once, I took his advice.
This is the first in a series about how that eventually led me into security.
Computers had featured in the degree, but mostly for college work on statistics using SPSS, a classic applied psychologist’s tool. In 2012 I started an MSc in Computer Science (conversion), aimed at taking in unemployed folks from varying walks of life and doing the whole UCD BSc Computer Science course, in 2 years instead of 4, with a Masters thesis component (a search engine we’ll talk about later).
Rowing is also where my first website came from. I rowed for St. Michael’s Rowing Club and loved every minute of it. Even having left the sport, it was still on my mind, so when it came to my first project on the Masters, I created a “United Limerick Rowing Federation”, something anyone from Limerick who rowed at that time knows is not likely (in a good way)! Hand-written HTML and CSS, assembled in a copy of Adobe Dreamweaver, and the only JavaScript on the whole site was a stylesheet-switcher I lifted from thesitewizard.com, credit comment still intact, because I couldn’t have written one myself. Still, I liked being able to create something from scratch myself.

The United Limerick Rowing Federation site, 2012.
I’d like to say it was good for its time. It wasn’t good for any time. The layout is hard-coded to 975 pixels, every page is its own near-identical HTML file because I didn’t know templates existed, and Dreamweaver’s dwsync.xml droppings are still scattered through the image folders. The one thing in it I’ll defend is the button in the top corner marked “Dyslexic Aid”, which swapped the stylesheet for a more readable one. Nobody asked me for that. I just thought it should be there. I later learned this was “accessibility features”, something AI is actually great at doing in websites and I use all the time now.
The thesis was for me the most enjoyable part of the course. The topic we were given was to build a metasearch engine, with no real other instructions, no limits, and about four months to do it while working on the other modules. Keep the four months in mind, it will matter at the end. A metasearch engine takes one query, sends it to Google, Bing and Blekko at the same time, and fuses the three ranked lists into one better one. I implemented two fusion algorithms, Reciprocal Rank Fusion and CombMNZ, and a k-means clustering mode that split results into topics, so a search for “tiger” could separate Tiger Woods from the Apple operating system from the river. I called it MetaSearch. I was fascinated by Joyent and Ryan Dahl’s work at the time and had been attending meetups like the one run by the NearForm crew on Node.js in Dublin, so I wrote it in Node.js, which was young enough then to be a slightly contrarian choice: callbacks all the way down, Express 3, Jade templates, and socket.io pushing autocomplete suggestions on every keystroke.

The live app, mid-word. The suggestions arrived over a websocket, which felt outrageous in 2013.

Seven views of one query, and a pop-out calculator I bolted on using an undocumented Google API. Note the speed: 300 results in 8.507 seconds.
The results page had seven tabs: the two fused rankings, the clusters, a three-column view, and the raw feeds from each engine. There was also a calculator, a thesaurus, related searches and an IP lookup, none of which anyone needed in a search engine. The lava-rock logo was made in Textcraft, a Minecraft-style text generator. I thought the whole thing looked brilliant, and I now accept it did not.
In October 2013 I stood up at the Dublin Node.js meetup and talked through it, which is where the photo at the top comes from. The deck survives, so rather than link to it somewhere that might rot, here it is running on this site:
My favourite slide in it is the pair titled “Old Blekko” and “NEW BLEKKO”, which exists because Blekko changed their API on me mid-project and I was clearly still annoyed about it on stage.
For the thesis component you had to not just build the metasearch engine but also perform quantitative analysis to generate metrics. Fifty test queries were scored, and the raw ranked lists, fusion outputs and hand-built relevance judgements survive for a handful of them. The result was the one I was hoping for: averaged over the fifty queries, CombMNZ hit 0.52 mean average precision against 0.33 for Google, the best single engine, with RRF just behind at 0.41. Fusing the engines beat any one of them.
I finished the Masters with a near perfect GPA, an A+ in every module except one, where I got an A-. Hilariously, that was Security (I am now a fulltime security engineer).
From the Masters I went to IBM in Dublin on the graduate scheme, working on data-heavy systems around Smarter Cities and the i2 intelligence tooling. IBM had just launched Bluemix, its platform-as-a-service, so I pushed MetaSearch onto it, and for a couple of years there was a live demo at metasearch.mybluemix.net. It didn’t survive the decade. Blekko was acquired and shut down, by IBM as it happens, and Bing’s API went away with the old Azure marketplace, which left a fusion engine fusing exactly one search engine. You can still see the struck-through Bluemix demo link in the readme of the official repo.
At IBM I also met Colin Grogan, a colleague who was an exceptional programmer and a great mentor, though sadly I don’t know if I was as good a student. After work we pointed the same crawl-and-aggregate idea at music. Chart Zone scraped the well-known charts, the BBC Top 40, the Billboard Hot 100, the Irish Top 100, German and European charts, even movie soundtracks, and turned each one into a playlist you could put on and leave running. I was in charge of the web design and Colin built the backend, written in D on the vibe.d framework, a language Colin was, and perhaps still is, great at. He even got some of his PRs accepted into dub, D’s package manager. We liked it enough to buy the domain.

Every chart a flag button. The ice lettering is Textcraft again, a different element from the MetaSearch lava.

The player view: SoundCloud and YouTube embeds, a numbered bubble per song, and a background gradient running from red to purple for no reason I can reconstruct.
Neither of us will pretend these were well-designed, then or now. They were things we wanted to exist, built at the speed we could build them, and the BBC changing their page markup every few months kept breaking my scraper for as long as we ran it.
Earlier this year I gave a talk at SecOps Reset about the future of security tooling, and one line in it came straight from this era:
Your old Masters project has been one-shotted.
Everything on this page, the fusion engine, the crawler, the calculator nobody needed, is now an afternoon’s work for an agent. Four months of thesis, an afternoon of prompting.
In 2015 I left IBM for Zurich Insurance and my first security job. That’s the next post.
Thanks Dad, learning to code was good advice, and hopefully in the future too.