Software engineer at . Second-year ISE student at the University of Limerick.
I'm a second-year Immersive Software Engineering student at the University of Limerick, started September 2025 with zero prior coding experience.
ISE alternates study with industry blocks, so I'm balancing coursework in systems programming, data structures, OS design, and Java alongside my JNJ residency in Vision Care. The academic side covers the fundamentals: algorithms, architecture, maths, a year-long Entrepreneurship module, and big team projects.
It's an integrated BSc/MSc. The JNJ side grounds that in industry. KPI dashboards, process optimisation, analytics in Power BI, figuring out how to move numbers that matter across teams and time zones. It's not one or the other; it's both at once, which is the point. Theory needs practice, and practice without theory is just habit.
The J&J residency itself sits inside the Vision Care franchise, where I'm a GenAI Resident collaborating with IT, Data & Analytics, and business stakeholders to prototype GenAI tools for knowledge automation and productivity. Work emphasises secure, GxP-aware design: model validation, data governance, reproducibility, and auditability for healthcare contexts.
Coursework: Problem Solving with Computers (Python), Effectively Building Software with Others (Java, JavaFX), Data Centric Computing (SQL), Computation and Architecture Parts 1 & 2 (Linux, kernel programming, systems), Residency 1: Software Systems / Dev Part 1 (currently at Johnson & Johnson).
View all modules ↗All higher level: Maths H1, Business H1, Physics H2, Biology H2, Chemistry H2, English H2.
Distinctions (90–100%) in Maths, Irish, English, Science, History, Geography, Classical Studies, and Business.
Prototyping GenAI tools for knowledge automation and productivity with IT, Data & Analytics, and business stakeholders — focused on model validation, data governance, and GxP-aware design for healthcare contexts.
Built & launched an AI-powered exam question generator with a React + TypeScript frontend and a FastAPI backend supporting both local and Anthropic Claude models.
Visit ExamHype ↗Built EcoLens, a fully offline carbon-footprint analyser running MobileNetV3 and TinyLlama on a Snapdragon X Elite NPU.
View on GitHub ↗Won the NDRC Startup Sprint, a rapid ideation-to-pitch programme for early-stage founders.
Started with zero prior coding experience. Within the first year, shipped a Linux kernel module with custom character device drivers, a JavaFX text-adventure game, and several other projects — and joined the UL Philosophy & Debating Club.
Recognised among the top entries in NASA's International Space Development Conference competition.
Took first place nationally in Ireland's Junior History Competition.
Won the national Junior Maths Competition.
JobSearcher was one of my first real projects, built back in January 2024 before I'd properly learned to code, mostly by following YouTube tutorials. It searches LinkedIn for a given job title through Selenium, summarises each listing with the Hugging Face API, and pushes the results straight to a GitHub repo through the GitHub API, so it ends up working like a self-updating job tracker. It's rough: the code is messy and I gave up on Python not long after finishing it, but it was the first time I'd chained multiple APIs together into something that actually did what I wanted, and I'd rather leave it as it was than clean it up after the fact.
For Dr. Mark Burkley's course, Aidan, Cathal, Tom and I built a WarioWare-style micro-game engine where the game logic runs inside a custom Linux kernel module instead of userspace. The kernel exposes /dev/kernelware as a character device: userspace reads events, writes inputs, and drives seven mini-games through ioctls. Timing runs on hrtimers and kthreads, with spinlocks and waitqueues keeping state consistent between them, since none of that can lean on userspace scheduling guarantees. The module also rewrites the real system hostname through init_uts_ns, tracks its own memory use through live kmalloc/kfree accounting exposed at /proc/kernelware, and keeps an in-kernel leaderboard, all surfaced through an ncurses frontend.
This is a webcam-controlled tennis game in C/C++. OpenCV tracks your hand in front of the camera in real time and maps its position directly to the player's paddle, while SDL2 handles rendering and physics: gravity, collisions, spin, particle effects. The opponent runs four AI difficulty levels. Since hand-tracking accuracy varies a lot with lighting and camera angle, I added a live HUD showing tracking confidence and raw hand position alongside score and FPS, plus a built-in camera preview window, so I could tune detection thresholds without guessing.
A Java system-info tool built with a small team, mainly as a Git collaboration exercise for Computer Organization and Architecture. The point was less the tool itself and more learning how to work on the same codebase as other people without stepping on each other's changes: agreeing on a branching workflow, resolving merge conflicts, and keeping a consistent project structure with Maven (pom.xml) managing the build. It's a simple tool by design; the switch-case logic routing between system checks was never meant to be the hard part.
Built for CS4431, this is a JavaFX text-adventure game structured around a full MVC architecture, since the module's whole point was seeing that pattern applied properly rather than just described. The world is a multi-room map with NPC dialogue and puzzles that unlock through specific items, plus a minimap that updates live in the GUI as you move through rooms. Saving and loading uses Java's Serialization; commands are parsed through a custom Parser and matched against an Enum of valid command words, and Generics and custom Annotations show up where they made the code noticeably cleaner rather than because the brief demanded it. Players can drive it with WASD or the on-screen GUI buttons, whichever they prefer.
A side project to actually understand how a neural network works, rather than just calling a library function and trusting it. Written in NumPy with no ML framework underneath, it predicts pass/fail outcomes from a synthetic study-hours dataset, small enough that I could check forward propagation, loss calculation, backpropagation, and gradient descent by hand against what the code was actually doing. Still a work in progress alongside coursework, and I'd rather it stay that way for now than rush it to look finished.
Built in a weekend for the Snapdragon: AI Unplugged Hackathon (Qualcomm × Lero, University of Limerick, April 2026), this points a laptop camera at an everyday object and shows its lifecycle CO₂ cost, pulled from a database of 40+ items built on DEFRA 2023, EU JRC, and EPA Ireland figures. MobileNetV3-Large handles the object recognition and TinyLlama-1.1B turns that into a plain-English recommendation, and both run on the Snapdragon X Elite's NPU through the ONNX QNN Execution Provider at around 12ms per frame, so nothing leaves the device and there's no network request anywhere in the pipeline.
Built at HackUPC 2026, this compares a source and target database schema and works out how to migrate one into the other. It flags conflicts like type mismatches, missing keys, and places where the migration would actually lose data, then scores each proposed field mapping by confidence rather than presenting a single guess as fact. From there it generates the migration script itself, in whichever format the team needs: Generic SQL, Flyway, Liquibase, or AWS DMS, complete with rollback. The backend is FastAPI, the frontend React and TypeScript, and since schema decisions are rarely made by one person, we added real-time collaboration and a visual diff view so a team can agree on a mapping together instead of one person guessing alone.
ExamHype turns whatever you're studying from, a PDF, a slide deck, a set of notes, into a set of multiple-choice questions you can actually quiz yourself on. The frontend is React, TypeScript, and Tailwind CSS, built on Vite; the backend is FastAPI, and it can generate questions through either a local Ollama model or the Anthropic Claude API depending on what's available. I added the parts I actually wanted as a student: a timed mode, streak tracking, difficulty ratings, and a way to resume a quiz through localStorage if you close the tab halfway through. The landing page is live on Vercel; the full product is still coming.
Irish Fuel Trend answers one question: is it worth filling up today, or is it worth waiting? Every morning it pulls Brent crude prices and the EUR/USD exchange rate, since Ireland buys oil in dollars but sells petrol in euros, and combines them with recent Irish pump prices from the EU's Weekly Oil Bulletin and crowd-sourced FuelWatch.ie reports to forecast direction over the next three weeks, with a confidence score attached rather than a single confident-sounding number. That national forecast then gets adjusted per county, since prices in Donegal don't move the same way as prices in Cork, using the current gap between local and national reported prices. The backend is FastAPI, pandas, and scikit-learn, with SQLite storage and a GitHub Actions cron re-ingesting data every morning; the same codebase runs either as a live service or ships fully static to GitHub Pages.
ASL Live is a real-time American Sign Language translator. MediaPipe Hands extracts 21 hand landmarks per frame directly in the browser, and only those 63 floating-point numbers, never the video itself, get sent over a WebSocket to a FastAPI backend, which keeps latency low since there's no video stream to push. An MLP trained on the collected landmarks predicts the ASL alphabet plus a handful of common words (hello, thanks, yes, no, please). Landmarks are normalised, centered on the wrist and scaled by hand size, before both training and prediction, so the model doesn't care how close to the camera your hand is or where in the frame it sits. Since prediction quality depends entirely on how much data went into training it, the whole workflow, collect samples, export a CSV, train, run, is built to make adding new signs straightforward rather than a one-off setup.
Sonic Fingerprint turns a Last.fm listening history into a single interactive dashboard, built entirely client-side. Point it at a Last.fm username and API key and it pulls the full scrobble history to build a day-by-hour heatmap of when you actually listen, alongside things like a persona classification (night owl, weekend warrior, and so on), genre drift over time, and a predicted date for your next round-number milestone. Since it never touches a server, there's no account to create and no database anywhere; everything is computed and cached in the browser, and a one-click export saves your whole history to a file if you want to move it. It also pulls in MusicBrainz for artist metadata and iTunes for short preview clips on the "on this day" view.
Visit Sonic Fingerprint ↗FoodBridge is a real-time platform connecting restaurants, cafes, and supermarkets with food banks and charities that can use their surplus. A donor posts a listing with a location and a collection window, and it shows up on a live map for nearby recipients within about a second, since Socket.io pushes the update out instantly rather than waiting on a page refresh. Claiming a listing notifies the donor the same way, in real time, and the whole thing runs on React, Node.js/Express, and PostgreSQL (with an in-memory fallback so it still runs without a database configured). It was built for a hackathon, so a few pieces, like driver coordination for recipients who can't collect in person, are designed for but not built yet.
iDaVIE is an open-source Unity VR tool for poking around 3D astronomy data. For our first-year EPIC, 28 of us spent 15 days refactoring it. We didn't actually touch the code, we just pitched the maintainers a plan for how to break the codebase apart cleanly. My sub-team took VolumeDataSetRenderer, a 1089-line monolith, and carved it into three interfaces: IVolumeTextureManager, IRenderPipelineAdapter, and IMaskMode. I rotated through PO Liaison, Scrum Master, and Quality Champion over the two sprints.
I build software with a focus on AI and intelligent systems. My toolkit spans full-stack development, machine learning integration, and modern architectures that power scalable applications.
I started university in September with zero coding experience. Now I'm chasing internships, digging into systems programming, and looking for open source projects worth contributing to.
If you're building something or just want to talk, reach out.