A Wolfenstein 3D-like multiplayer game. It started off as an attempt to see if I could write a ray-casting 3D engine in plain JavaScript, but one thing sort of led to another and I ended up writing my own WebSocket server implementation in PHP and making it a multiplayer game.

There is only one server instance that exists, so it is technically an MMO game.

Technologies: TypeScript, WebSocket API, Canvas API, PHP

Parfait (パルフェ)


Originally built as a WordPress site with a Rails app powering an unused user forum, rebuilt as a mobile-first single-page web app with minimal PHP mailer backend.

Frontend highlight is the 3D graphics, powered by three.js.

Technologies: three.js (WebGL), Parcel.js, PHP

三寺郷美 踊るタップ ソロリサイタル公演 Tickets


In Japan ticket sales go through big companies who not only take a large percent of fees from the performers, but also charge the customers fees on top of ticket prices.

The cost for an indepent performer to sell tickets for their shows is unacceptably high, so I developed this ticketing system which strips down ticketing to its basics and provides a leaner solution by throwing out things like the idea of ticket kiosks in convenience stores, and by reducing payment methods to credit card and bank transfer.

Customers can select the seats they like, pay online or offline through their bank, and print the tickets themselves (or show the QR code on the phone on the day).

A companion iOS app reads the ticket QRs codes and verifies the validity of tickets on the day of the performance.

Technologies: Rails, payment processing (WebPay), PDF ticket generation with prawn and barby

Irish Wi-Fi Map


Irish Wi-Fi Map is an iOS app which provides access to a database of wireless access points throughout Ireland. It can be handy to find an open network when out and about.

Technologies: Objective-C, Cocoa

Seabed (#5eabed)


Seabed, whose name is a pun on the HTML colour #5eabed, is a simple iOS app which converts colours to HTML colour codes. Dragging the slider picks the hue, and the saturation and variance can be adjusted by moving your finger around the screen. The HTML code can then be copied for use elsewhere.

This app was born from an experiment in making custom controls with Core Graphics, and is a component of Gribble.

Technologies: Objective-C, Cocoa



dessid probably does not need much of an introduction. After release, it was #1 on the Irish App Store for 40 consecutive days.

Unfortunately it was short-lived, and in November 2010 it went to the great big App Store in the sky.

Technologies: Objective-C, Cocoa



UltraJLPT is designed to help Japanese students study for the Japanese Language Proficiency Test (JLPT). It has a database of vocabulary and kanji from the test, and can quiz you on the content, keeping track of your scores over time. It is not yet updated to support the new JLPT “N”levels.

This app uses Core Data to power the database, and uses some clever query predicate simplification logic to improve database search speed.

Technologies: Objective-C, Cocoa, Core Data, Core Graphics


Current Master's Degree Research

Logue is my current research at the University of Tokyo.

Logue uses smart algorithms and hardware acceleration to achieve real-time speech processing on the iPhone.

Technologies: Objective-C, C, Cocoa, OpenGL, Core Graphics, Core Animation, multi-threaded programming & multi-threaded rendering, digital signal processing, vDSP, Grand Central Dispatch


2008 — Undergraduate Final Year Project

As my final-year project at the University of Limerick, I decided to make a game based on Katamari Damacy (塊魂). This was made possible by Havok's free binary-only Physics SDK, and the open-source Ogre 3D graphics engine.

The game can be controlled by a companion iPhone app, which operates wirelessly.

I made a lot of effort to use as much open-source software as possible in the project, and this was recognised by IBM when they awarded the project the 2009 IBM Open Source Software Competition in UL.

Check out the YouTube video to see it in action.

Technologies: C++, Objective-C, Ogre3D, Havok Physics, multi-threaded programming, TCP/UDP networking, zero-config networking (Bonjour), Cocoa

UL Timetable 2.0


I made this timetable app in a bout of frustration with the University of Limerick's timetable website. The university website does not provide any graphical representation of classes, and does not show class names but only their module codes.

This web app is currently used by hundreds of students at UL on a variety of devices. It also includes iCal functionality so that students can synchronise their personal calendars with their timetable.

Technologies: PHP, HTML, CSS



While studying remote procedure calls in a class, I realised that I had a solution to a problem that had been bugging me.

I used to use a Windows PC to store all my media, but often had trouble accessing content because I had forgotten to turn on some application on the PC. This often resulting in a unpleasant (but healthy) jog up and down the stairs to turn on the application.

Determined to innovate a solution for this unwanted exercise, this Java app connects to a PC and shows a set of icons corresponding to the Windows quick launch shortcuts (beside the Start menu). Clicking any of these opens the shortcut on the PC.

The controller can be run from any Java-supporting system, but the server application only works on Windows.

Technologies: Java, remote procedure calls (RPC), zero-config networking (mDNS)



After failing to find a set of properly timed Japanese Star Wars subtitles to play along with my DVDs, I threw this app together to allow users to manually play back subtitle files on top of a movie. It's not ideal to have to press the keyboard for every line of dialogue, but it's better than nothing at all and served its purpose very well.

It is written in Java, and works on Mac OS X and Windows. On OS X, it even allows you skip through subtitles with your Mac's remote.

Technologies: Java, C (JNI), Windows API (MFC), OS X (Carbon)


This site. It was designed in Photoshop, and coded in HTML5/CSS3 with a jQuery-powered menu. It also looks great on iOS.

I made all the graphical elements in Photoshop: the social buttons at the top, the project category icons in the side menu, and the “coming soon” scroll bar.

Technologies: HTML5, CSS3, jQuery, PHP



I built this little web app as a way of presenting my Twitter timeline in the way I wanted to: concisely, without mentions, and with embedded media.

A little bonus is that the site's background matches the visitor's current sky. It converts the user's computer's address to latitude/longitude coordinates, calculates the sun's position in the sky at that location, and then creates a sky colour pattern based on the sun's position. Stars even start to come out at dusk.

Technologies: Ruby on Rails, Twitter API, jQuery, Masonry, CSS3, shell scripting



I wanted to keep a copy of Wikipedia on my computer, and couldn't find an acceptable solution, so I made this as a project to help me learn Rails.

rails_offline_wikipedia uses a compressed (bzip2) copy of Wikipedia, so it uses minimal disk space. Each article is extracted from the archive as you browse the web interface.

Images are not included, but they are supported. When used online, any images are downloaded from Wikipedia's servers and stored locally. When you go offline, the cached images are used. You can use wget to crawl Wikipedia and prompt the caching of as many images as you want to keep.

Technologies: Ruby on Rails, shell scripting



It's hard to keep track of new episodes of TV shows. There are often breaks in the middle of seasons, it's easy to miss the start of a new season, and the schedules can change. ShowSync uses's database to create iCal content for pretty much any show on TV.

By subscribing the iCal URLs, you can keep a live list of upcoming episodes on your calendar, as shown on the left.

Technologies: Ruby on Rails, AJAX