Cathal O'Callaghan

Bank of Cans

Debit Card

contactless payment symbol
sim card contact

4319 1054 2022 1916

Expires

Ends

Never

Cathal O'Callaghan

two smiley face emojis merged together to look like the mastercard logo

cathalsocallaghan@gmail.com

CATHAL

O'CALLAGHAN

Hi, I'm Cathal. I really like backend development (cloud native applications especially) and I love to push myself and learn new technologies and tools through new projects like with two of my most recent projects, Req and Fellowship Wrapup (both of which came first in their respective competitions).


My favorite project is Neo, a distributed system I developed for my final year project. Developing, maintaining and monitoring a distributed system was great craic. Although the project is no longer being hosted a static snapshot showcasing all of the core features is available. My overall grade for Neo was 90%. Read more about in the projects section below


Outside of programming I'm big into techno. Click here for a random whopper.

TOOLS &

TECHNO LOGIES

I love

Honourable mentions

I hate

matlab logo r programming language logo jsp logo
black and white image of a concrete brutalist style building

Projects


Generate an indepth analysis of your friend network on Steam to see exactly what kind of friends you have or find the shortest distance between two steam users. This project was my NUIG CS&IT Final Year Project 2022.

Neo is a distributed system deployed across 9 servers with three main microservices written in Go. Listed below is the supporting infrastructure:
  • Databases: MongoDB and PostgreSQL
  • Logging: ELK stack
  • Metrics: Grafana, InfluxDB and Uptime Kuma
  • Queue/Messaging: RabbitMQ
go logo javascript logo mongoDB logo postgres logo rabbitmq logo grafana logo influxdb logo docker logo ovh logo
screenshot of the landing page of neo
screenshot of a generated statistics page in neo for a given crawl with two users showing the users in the shortest path
screenshot of a generated statistics page in neo for a given crawl
screenshot of a generated 3d graph of two crawled friend networks who share a common mutual friend

So I'm standing there at Charlie Byrnes looking for some new book. I pick one up and all I can go off of is the blurb on the back and maybe the picture on the front. Not something that I like doing. Looking up the book on GoodReads takes too long since my data there is always horrendous.

To fix this I've made this little application. I scan the barcode (which is the ISBN) and the backend then queries GoodReads and sends back a tiny response with the key points that I want to know (genres and overall rating etc). No data is wasted on loading UI, js frameworks or images that I don't care about and I can therefore query more books faster. It also visually highlights the genres that I love and the ones that I hate
go logo javascript logo

UI screenshot of the web extension being used showing previous pulls with transactions found
Import and filter transaction data from N26 into your lunch money dashboad. 100% experimental at the moment but security is my number one priority
go logo javascript logo

UI screenshot a crawl of a given goodreads shelf. It shows how many books were retrieved and how many were available for sale on TheBookshop.ie
UI screenshot of the available books page. Shows all books currently available for purchase from TheBookshop.ie from past crawls
I use GoodReads for my book reccomendations and I buy my books mostly from TheBookshop.ie. I made this project to be able to automatically check if books on my "shopping list" are available on TheBookshop. view a static snapshot here
go logo javascript logo

three mobile phones showcasing the UI for the Req application
Req is a real life based betting app made to enable anyone to bet on anything. With geolocation being an integral part of the app bets can be locked to users within certain areas which incentivizes people to go out and get some fresh air. This was my first group project and I acted as the project lead. The following was my contribution:
  • Email alert service (authentication and newsletters)
  • Dockerized and deployed to AWS
  • CI testing for all features through Travis CI
  • User authentication/management system
node logo go logo mongoDB logo react logo docker logo aws logo

a gif scrolling through the website for the fellowship wrapup project
A summary showcase of all your contributions made as a graduating gift from the MLH Fellowship! I came up with the project idea and worked on the backend. My team of 4 students made this project during the MLH halfway hackathon Backend uses a Go web server powered by Gmux and utilises the GitHub GraphQL API for fetching data. Frontend uses Nextjs for rendering and Vercel for hosting. Service is currently hosted on GCP
go logo google cloud platform logo graphql logo next js logo

image showing the discord logo and howdoi name
A discord bot interface for the popular howdoi python cli tool that serves instant coding answers via the command line. This project was made for the initial MLH Fellowship hackathon. Powered by Flask on the backend for handing queries and hosted on Heroku. Uses some light regex for parsing of queries before passing it onto howdoi. The bot can be invited to any discord
screenshot of a discord message from the bot
python logo heroku logo

Scrapes current articles from a dozens of topics off of multiple websites for later data analysis.
go logo python logo

A chrome/firefox extension designed to manage online browsing workspaces. Create snapshots of all active tabs to save for later viewing. One of my favourite projects as it solved a real life problem of keeping track of browsing sessions that I wanted to come back to at a later date. Utilizes chrome's sync storage to sync the saved snapshots across all chrome browsers a user is signed in to.

This feature is officially supported now in Firefox when browsing bookmark folders
javascript logo

gif showing the automated use of the program to the humanbenchmark minigame
⭐ Read my guide on how to make this on the NUIG Compsoc wiki page! ⭐
⭐ Or on Dev.to if the compsoc page is innacessable ⭐
I combined Google's Tesseract OCR alongside python to make a script that is capable of highscores of thousands compared to my own which is around 12.
python logo

two mobile phones showing the UI for the mobile app. One screen with the ports being used and the other showing line counts for tracked csv files
Built my first flutter app as a means of keeping track of things such as who's hosting on the college server and the status of one of my scraping scripts from my phone. Golang API used to compile and serve the information
go logo flutter logo

decorative screenshot of a graph that acts as a thumbnail for the pdf report
I did analysis of the userbase of the popular exam related website studyclix.ie, compiled the stats of all the users and compared them to the average student based on official SEC (State Examinations Commision) data.
javascript logo

decorative screenshot acting as a thumbnail. One half has a test report output fom travisCI and other other has the name of the project
This is a nice little i3blocks indicator script to help you monitor the current build state of a github repository.

go logo

A program to parse and provide search functions for a global database file on airports. I am using the data from OpenFlights which has over 10,000 entries. Each entry has 14 data points that range from name and ICAO code to it's exact coordinates. I took this on as my end of year C project to strengthen my knowledge of memory allocation, use of structures and apply my work to some real world data to do something interesting.
c logo

decorative screenshot showing the extension displaying the QR code for a soundcloud page
Instantly generate a QR code for any webpage to allow for easy scanning on a mobile device.

Implemented 532 days before Chrome officially supported this functionality
javascript logo

Blog Posts

Browse my dev.to profile or view my few blog posts here on my website