Joe Tortorello > Portfolio

Please note that this is a static copy of my portfolio. I maintain a version online that I regularly update with new projects, and remove ones that are old or no longer important to me. If possible, please see the online version at instead of this static copy.

This is a collection of some of the more recent projects I've worked on. Everything shown here was done in my spare time, not for profit of any kind, just for my own personal utility and/or entertainment. Some things were used all or in part for course credit at my college.

Many of the things are available on the web and have links to them below. I invite you to check them out for yourself.

I also have some additional public projects on Github

Firefox and Thunderbird Packager Scripts

I got tired of the Debian packages for Mozilla Firefox and Thunderbird always being out of date compared to the official releases, so I build a script that builds a package for the official release of each.

Firefox:, Thunderbird:


GroupPay is an application that allows for payment-sharing within small groups of people who share resources purchased by one member. The purchaser of the items enters them into GroupPay, and marks what other members used the item. Those users will then recieve a notification regarding how much they owe and to whom. Users can connect their PayPal accounts to allow other users to pay them electronically.

GroupPay is currently in use and is live on the Internet at Please contact me for access to a demo account.

Exactly what it says on the tin

Ladybug Chase

Developed jointly with Tanner Nielsen.

Ladybug chase is a browser game that uses JavaScript to do drawing and animation. It can be played on a computer or mobile device. The goal is to eat as many aphids as possible without being touched by the frog.

You can play it at

Guitar Player App

This is an electronic guitar simulator that I developed for an algorithms class. It is a good demonstration of how we can use algorithms to make frequencies that model real musical instruments.

More information and download at

Drawing Tiles in JavaScript

Modified from original code by Leon Tabak

A demonstration of drawing tiles in JavaScript. This was produced for a class called Programming Language Concepts, and demonstrates some of the principles of functional programming languages like JavaScript.

You can view the result, but the source code is probably more interesting.

For this project, I was also asked to demonstrate the use of the documentation tool JSDoc. You'll see the documentation comments in my code, and you can view the compiled JSDoc here.

Minecraft Server Extensions on the Web

I run a Minecraft server that is used by myself and a few of my friends. It's not free to run the server, so we developed a way to split the cost of operating it based upon the amount of time spent using it. An existing plugin called PlayTime was used to log the amount of time that each user was logged in for to a MySQL database, and I wrote a PHP script to make this information available on the web and do the calculations for the cost of the server.

The PlayTime web interface is still online at, but now I am running it on my own hardware so the cost is zero, and there isn't much to see. If you'd like to take a look anyways, you can log in with my username, JRT600.

We also wanted a way to see a zoomed-out view of the Minecraft world on the server. A plugin for Minecraft called Dynmap was used to provide the web interface. However, the problem with Dynmap is that it runs it's own web server on port 8123, and this server does not support HTTPS. I'm a big believer in online privacy and encrypting the entire web, so nothing visible under my domain name is sent unecrypted (in fact, when you first loaded this page, my server told your browser to never even try to connect without encryption again). As such, I adapted the plugin's web interface so that it could be served by a standard Apache installation instead of the internal server. The interface works and all resources are now served securely.

You can see the live map at

Building my Own E-Mail Server

Without giving too much away, I'll tell that I have built my own e-mail server without any hosted services — that is, without the help of Mailchimp, Gmail, or the like. The server uses Postfix as the mail transfer agent and Dovecot to allow users to get messages via the IMAP or POP3 protocols. A web interface is also available. The server handles mail for several domain names, and supports virtual mailboxes, aliases, spam filtering, and many other features of the big-time e-mail services. Messages are protected from spying as encryption is used to transfer all incoming and outgoing messages. The server identifies itself using industry standard authentication protocols so other providers know it can be trusted and messages avoid the Spam folder.


JamesFarm is a simple farming simulator game that uses minimal JavaScript. While the entertainment value of JamesFarm leaves something to be desired, it acts as a proof-of-concept that exclusively server-side applications are still very viable in modern browsers. A small amount of JavaScript is used to draw parts of the user interface only — all the game logic is in PHP.

You can play JamesFarm at, but it is not optimized for mobile devices.