Portfolio
Welcome to my portfolio. Below is a brief description of the projects listed and the technology used in them. To view a more detailed description including source code and screen shots, please click the project name in the navigation above.
Albmek
The major project for Albmek was a PHP/MySQL based tool for monitoring safety compliance of safety equipment and generating reports on this equipment. Prototype/Scriptaculous is the javascript library used.
Bill@Ease
Bill@Ease is a multi-part custom billing software that has been developed over 3 years as a java applet. The technologies used include swing, RMI, SSL, JDBC and MySQL.
Dashboard
In my role at IBM Development Labs I have developed a number of tools around the maintenance of servers across a number of different architectures. The technologies used in these tools includes RSS, XML, Java, PHP, HTML/CSS, JQuery, Prototype/Scriptaculous, JSP (JSTL), Derby and MySQL.
Bits & Pieces
This section has some smaller bits and pieces I have developed recently using technologies such as Python, Bash, HTML/CSS and JQuery.
-
Detailed Project Description
Bill@Ease is the project that sparked my passion for development. A business owner that my business partner (Luke Fromhold) and I knew, had a fairly niche billing company and all the off the shelf billing software he had tried just didn't cut it. We got together and developed a proposal for a java applet based billing application that would be developed in three stages. The first stage was the internal billing software, the second an intranet based reporting system and the third, a client facing secured applet to allow clients access to the system.
The Core Billing Software
The core of the project is the internal billing software that now runs in the company's offices in Australia, New Zealand, Canada and the United States. The GUI is a swing based applet. The next screen (right) has some screen shots of the GUI we designed and developed. The applet itself communicates with the database server by Remote Method Invocation (RMI) over SSL. The database is built on MySQL and contains 20 tables, as well as numerous views. One of the main selling points for us was our ability to integrate directly with the bank's payment processing system by generating a number of different format files including CSV and ABA.
The Reporting System
The reporting system back end takes a month worth of data, manipulates it and makes a number of calculations which are then used to generate up to 10 reports per client. During this phase of the project, there was a redesign of parts of the database after some new functionality was included. This new functionality also allowed us to tweak the database to improve its performance further.
-
Detailed Project Description continued...
The Client Side
The final stage of this project was to build the applets that would be client facing. A large part of this project was duplicating the core to only write to staging tables that we set up to ensure these clients couldn't edit the live business data directly. All requests for change in data (adding/removing/editing) would be submitted then an alert would be provided to the in office staff to either accept or deny the request.
Some of the problems we overcame
I have blogged about a few of the problems we overcame while developing Bill@Ease. The notable problems were:
Alternating colors in table rows in swing.
RMI, SSL client based authentication in applets.
-
Source Code Samples
Please find a few examples of source code from this project below. It has been overly commented through for demonstration purposes.
AdvancedLogin.java - This is the initial login screen that staff see when they first open the application.
RmiRegistry.java - This file is the RMI registry used in the project. The port has been changed for security reasons.
-
Screenshots
Screenshots will be posted very shortly.
-
Web Development
Some of the freelance projects I have been involved in have required me to create a wireframe for a website, to then have the site completed by the company's offshore developers. The following two sites had the wireframe created by me. When I created them, they were both valid XHTML Transitional, and valid CSS. I cannot guarantee that these sites will be valid anymore as the main project manager didn't enforce this of his junior and offshore developers.
Hero's Pizza is a Pizza business in Western Australia. The features that I developed on this site:
* Site look + feel.
* Food Menu look and feel, images and (highslide) image zoomer.
* Initial implementation of javascript on Winners page.
* "Click the wheel to win" javascript lightbox style form.
* Contact Us page, as well as implementation of Google Maps
* Merchandise page's Paypal integration and javascript implementation.
The Intelligence Group is an accounting and financial planning company that required a new menu for their website redevlopment. The main menu on this development site was built by me - though when I built it, the website was a dark blue/grey/charcoal type colour with gold features. The wireframe of the site was initially developed by me, though the design iterations have been done by another person, and they haven't changed the colour scheme of the menu yet.
-
Twitter Bots
When learning python, I decided to use the twitter api to help. The following are 2 bots I developed, once successful (sickipedia) and the other not so much (lyricbot).
-
Detailed Project Description
The height safety equipment register was developed to replace a very manual process that involved copying and pasting up to 3 times between Microsoft word and excel applications. The beta iteration of the project simply gave a web interface (on an internal only web server) to enter the information that was previously contained in excel and word and used this to generate a "per item" or "all items" report. The reports were displayed as webpages and there was no user authentication.
The next iteration improved the interface by adding inline edits and real time input validation using the prototype and scriptaculous javascript libraries, enabled the reports to be viewed as web pages or dynamically generated PDFs and added user authentication. This iteration was loaded onto Albmek's public facing site to allow their technicians to use the system remotely while on site. It was while working on site that the push for the next feature set came.
That next feature set was a client facing offering that allowed clients to generate real time reports and monitor their equipment's status. The staff would generate a username password and send that out to the clients, so that they could look up individual pieces of equipment or their entire inventory.
I will be uploading a demo of the register very shortly, so check back soon.
As well as the equipment register, I also redeveloped the Albmek website (demo coming soon). While the design was signed off on, the complete content was never added to it, therefore it wasn't launched before the company wound up.
-
Source Code Samples
I will be posting a few samples of source from the equipment register here soon!
-
Dashboard Project Description
The dashboard was built to monitor the numerous serves in our lab. Each server has a combination of the software stack we develop including various web servers, application servers, databases and LDAPs, so the dashboard has to reflect each specific configuration.
The way we do this is by installing a small java based client application on each server that collects all this information and pushes it to the dashboard's database. The dashboard then (using a timed JQuery.load()) updates the main content of the dashboard, every 5 minutes.
When I took over this role, the dashboard was a very monolithic, slow moving, difficult to navigate (and use) tool. I have added functionality to make it more user friendly, and it is now the homepage of most browsers in our lab and a vital part of most people's day-to-day work.
Please find a demo of the dashboard here.
-
RSS/Virtual Machine Generation Project Description
Much of my role at IBM ADL is based around bash scripts that run for between one and four hours. We were finding that often we would start a script running and forget about it, only to find that 3 hours later it had failed, so we had to start again. For this reason, I built a small RSS framework that I added into each of our bash scripts. The framework has 3 parts to it - the MySQL JDBC driver, the java class and the rss.sh script that calls the java class. The rss.sh and java class are attached on the source code page, and there are screen shots of the feed in action.
The install properties page allows users to select the specific properties of the software stack that they want built onto a machine. The data is all real-time showing builds and setups the moment they are downloaded/built/setup. It has a JQuery based AJAX interface with a number of intuitive features ensuring the highest level of usability.
There is a demo of this property selector tool here.
The next step for this project is to integrate it with our current VMWare infrastructure to be able to deploy a Virtual Machine, install an OS and the required software stack; then move it to an ESXi host and update the user with an IP address and the other access information all completely autonomously from a single web based form. Stay tuned for more details on this!
-
Source Code Samples
Because this project was developed whilst working for IBM, there is only a limited amount of source that I can share. I will post the bits that I can, soon.