← Prev. | Next →

Curriculum Vitae


Apr 2019–present

Full-stack software engineer, VSware (acquired by Visma)

  1. I improved the performance of several data-intensive endpoints, including Visma InSchool’s roll call webpage, and absence registration pages. These webpages are used by teachers across the entire public secondary school system in Norway (taking roll call with a tablet device or computer). My performance enhancements, taking load times from around eight seconds to fractions of a second in many cases, has at this stage saved Norwegian teachers days of buffering time at the beginning of class.
  2. I enforced application security by recognising API endpoints with gaps in user permissions, then implementing the changes required to fortify those endpoints. I also play a role in code review, ensuring these gaps don’t arise in code committed from now on.
  3. I’m the bash and regex guy in the office. I have often been tasked with writing scripts to modify huge portions of the codebase, to automate a tedious task, to enforce a coding standard rule across different languages, and so on. I led the charge in transitioning date and time standards used within Visma’s InSchool project to ISO-8601. This involved huge collaboration between teams.

Nov 2018–Apr 2019

Software engineer, Datalex

  1. I worked on the airline pricing team, and wrote a web crawler to download, index, and cluster pricing rule documentation (tens of thousands of pages of legalese text). This aided other software engineers in retrieving important information, and recognising related yet vague terms such as ’Category 4 fare’ and ’Record 3’.
  2. I pointed out issues with a deletion procedure on the Linux servers used by the pricing team. The Linux kernel keeps an unlisted copy of a deleted file until every program reading that file has closed it. For months, Datalex’s QA servers kept running out of disk space, despite deletion procedures in place to remove old files. My Linux knowledge got to the bottom of this unexplainable bug.
  3. I fixed many null pointer exceptions.

Oct 2017–Oct 2018

Full-stack software developer, Webio

  1. I improved Webio’s underlying REST API’s readability and maintainability, measured by a 40% reduction in lines of code, by introducing object orientation and static utility functions in areas with code repetition.
  2. I increased sales to new clients by rapidly creating high-demand features. I successfully oversaw the creation, for example, of a smart reply feature, a versioning system for Webio’s core functionality (the bots creation page), and more mission critical features like the ability for human agents to easily intervene in a conversation handled by a poorly performing bot.
  3. I broadened Webio’s market, as measured by a definitive improvement in browser compatibility (the big four browsers), by listening to user feedback and fixing browser-specific bugs.


2018–2020, Trinity College Dublin

MPhil in Speech and Language Processing, ongoing part-time

To extend my knowledge of natural language processing beyond undergraduate level, I enrolled in this part-time masters in 2018. I have received first-class honours in all assignments so far. My academic goal is a distinction for my dissertation, NewsReduce. However, my broader goal is to make a suite of software to help individual consumers regain control of their news intake, in terms of daily reading time and personally important news topics.

I aim to provide this functionality in such a way that respects the privacy of users, and utilises automatically generated decision trees, in order to have an element of explainable AI (XAI). This is as much a software engineering project as it is a research one. I’m using techniques including document summarisation (using TensorFlow) and document clustering (using word embeddings).

2013–2017, Trinity College Dublin

BA in Computer Science, Linguistics and French, first-class honours

My best subjects were artificial intelligence (84% and 94% in related modules), advanced computational linguistics, and programming. I received a note of “distinction in spoken French”.

To push my boundaries and to complement the computational linguistics focus of my degree, I took some more traditionally CS and linguistics modules, including compiler design and software engineering (pure CS), but also “aspects of written language” and second-language acquisition (pure linguistics).

Clubs and societies: Rowing (DUBC), internet society (netsoc), student journalism

2016, Université Paris Diderot

Erasmus student in informatique linguistique (computational linguistics). Classes and assignments were through French.

2007–2013, Portmarnock Community School

Higher level Leaving Certificate (590/625 points).


Highly skilled Java, Spring Boot, Hibernate, JavaScript,
  TypeScript, React.js, Node.js, SQL, C, Python,
  Bash, Prolog, Linux
Moderately skilled Perl, Redis, R, nginx, apache
Previously skilled (rusty) C++, C#, FreeBSD
Still learning SQLite, Haskell, Lisp, serverless


English First-language
French Professional working proficiency
Irish Good reading and listening, but I have very bad spelling.

Outside the office

March 2020

“N-dimensional 2048”. I designed and implemented a higher dimensional version of the game 2048, based on other implementations of 3-dimensional and 5-dimensional variants. This version is distinguished from the rest by the user’s ability to set an arbitrary number of board dimensions and dimension sizes. The implementation was in C. I learned a lot about memory allocation in C, as well as cartesian space.

July 2019

“Dobble deck generator”. I wrote several programs over the summer, with the goal in mind of automatically generating Dobble decks, using symbols personally relevant to any group of friends. The first program, written in python (the brains of the problem), took a deck size, and returned a matrix describing a Dobble deck. Numbers represented symbols.

Another program I wrote in JavaScript took this traditionally 57x8 matrix, and returned an image file with cards laid out on it. This involved knowledge of SVG elements, as well as the ability to program collision detection, geometry, object rotation and image manipulation. I did all this in order to achieve the task of placing symbols on cards, with no overlap, using as much white space as possible, and without making the computer fan whirr too loudly.

January 2019

“C HTTP Server”. To learn more about the networking stack closer to the metal, I wrote a HTTP server from scratch in C, following a tutorial from Nigel Griffiths of IBM. The server went through several iterations, starting as a single-threaded yet very simple server that could provide a single HTTP file to sequential users easily. Later, I added concurrency, first using C forks (bad practice), then transitioning to a thread pool (what nginx does). This still limited the number of concurrent users to the number of threads in the pool, so finally I implemented a queue-based approach that served chunks of files to multiple clients, round-robin style, all at the same time. This allowed the server to scale smoothly with number of concurrent requests, at the cost of response time. I used it as my main server for my personal webpage for a few months, finally switching back to nginx when I wanted extra features like SSL.

September 2018

ConverCon. I spoke at ConverCon 2018 on the topic of Webio’s chat bot methodologies.

July 2018

“Facebook crawling demonstration”. I demonstrated how easily “extended friend networks” can be scraped, by writing 140 lines of perl in a rapid prototyping session. My approach leveraged Facebook’s pure-HTML site for low-spec mobiles, which was easier to crawl that a React.js site.

Jan 2017–Apr 2017

“TimeML and monadic second-order logic”. I made links between TimeML documents (from TimeBank corpora) and monadic second-order logic; built on the work of my supervisor, Dr. Tim Fernando. This B.A. dissertation received first-class honours.

Nov 2016–Jan 2017

“Register allocation by graph colouring for the ARM compiler of the Tastier procedural language”. Led a team of three in the design, implementation and documentation of a register allocation system for CS4071’s ’Tastier’ language. This project received a grade of 80%.

Hobbies & interests

Long-distance running. I run almost every day, usually 10km, but I go lighter on weekends. My personal best for 10km is 35:45.

Cycling. I spend almost nothing on public transport, and my holidays usually involve a boat and a bike.

Writing. In my spare time, I nurture an interest in writing. In college I wrote fourteen pieces for student newspapers. I also enjoy creative writing; I wrote a Sci-Fi novella for the fun of it a few years ago, and a few of my short stories have been published in small zines across Dublin over the years.

Web scraping. I collect information from the internet and format it in a way that may be useful to me or others. I’ve written scrapers for a few sites, most notably a jsoup scraper for dublinbus.ie that converted site data to Google’s GTFS standard.


“Seán is a self directed learner who sets the highest standards for himself and others. Very focused, very motivated, and an excellent developer. He makes the difference because he goes the distance. There is no mountain he will not climb. We had a lot of mountains.”

  1. Quote by Paul Sweeney (paul.sweeney@webio.com)
    EVP of Product at Webio, Co-founder of ConverCon
  2. David Power (david.power@webio.com)
    Technical Team Lead at Webio
  3. Dr. Tim Fernando (tim.fernando@tcd.ie)
    Lecturer and undergraduate dissertation supervisor

(References from my current colleagues upon request.)

Author: Seán Healy

Created: 2020-06-05 Fri 14:59