Technical Portfolio

The following are some of the larger projects that I have worked on in recent years. I haven't included the dozens of other smaller projects I've completed, or miscellaneous work such as maintenance on legacy systems and so on.

Mindjet Cloud

Single sign-on, third-party service integrations, and support for multiple client applications.

Web Interface for Single Sign-on

The web interface faciliates single sign-on for all Mindjet Cloud users, whether they use the MindManager desktop application (Windows and MacOSx), the browser-based web application, or the offline reader app.

User management is handled via Auth0, a third-party authentication provider. A Node.js application server was created to provide an API around custom logic for authentication and file sharing.

Cloud-based File Storage and Sharing

Users of Mindjet Cloud are able to save their mind map files to the cloud and share their files. They can decide to share a file with other users in their group or with anyone by sharing a link to the file. is used as the cloud-based file storage. The logic for file sharing is handled by the Node.js application server.

Mind Map Viewer for the Web

The web-based viewer uses the Rappid diagramming UI toolkit to render complex mind maps in the browser. The viewer supports many features including search, sharing, uploading of mind map files, downloading for offline viewing, and multiple view modes.

An offline version of the viewer application was created using Electron and is available for Windows and Mac OSx.

eReader Web Application

Web-based eReader application for university-level text books.

Automated Conversion of PDF to HTML

The e-books were provided as PDF files, which needed to be converted to HTML and CSS so that they could be displayed in a web browser. Meta data and content were automatically indexed in Apache Solr, allowing for full-text search of the e-books.

Fully-featured eReader in the Browser

All the e-books include full-text search, bookmarking, and a table of contents. Numerous performance optimizations were required to achieve a smooth reading experience on low-powered mobile devices. The client-side app was created with Backbone.js, a light-weight JavaScript framework.

Subscription-based Paywall

The e-books are protected by a subscription-based paywall. Most of the e-books included a preview available for free. The server-side portion of the system was developed using CodeIgniter.


Migration of existing content, full-text search solution, third-party service integrations.

Content Migration

Existing content from multiple different sources had to be consolidated in the new system. This required a mix of database migrations, API consumption, and web scraping. The content had to be simultaneously stored in a new relational database and added to multiple search indexes.

User-based Permissions System

The new content system included a permission system with varying levels of access rights. The server-side component of the system was built using CodeIgniter.

Full-text Search

All the content was fully searchable and integrated seamlessly with the permission system. The full-text search was powered by Apache Solr.


A web-based poker game with cryptocurrencies, like bitcoin.

Everything in Real-time

The interface updated in real-time; including the game state, chat, and statistics. This was done using WebSockets. The client-side web application was created using Backbone.js, which communicated with a Node.js application server.

Multiple Cryptocurrency Accounting System

The system was setup to support multiple cryptocurrencies, the first being bitcoin. Automated deposits and withdrawals were handled via the RPC API of a full bitcoin node.

User Account Security

Multi-factor authentication was used to secure user accounts from fraudulent withdrawals and account takeover.

Last updated on