John Welch

  • Design
    • Systems
    • Object Oriented
    • Relational Database
    • User Interface
    • Multimedia
  • Environments
    • iPhone & iPad
    • Mac OS-X
    • Windows
    • Unix/Linux
    • Oracle
    • MySQL
  • Technologies
    • Boost Libraries
    • Drupal
    • X-Cart
    • Google Search Appliance
  • Programming
    • C++
    • PHP
    • SQL
    • HTML/XML
    • Objective-C
    • Java
    • Python
    • Common Lisp

Owner and Software Engineer, Couchworld Games Inc.

November 2007 - Present

Responsible for company operations and software development.

Currently writing a new casual  puzzle game for iPhone with In-App purchase and user shareable levels.

Full product cycle for Shards, a puzzle and arcade game for the iPhone platform, from design to sales on the Apple App Store. Development included design adaptation for the iPhone, implementation of interface, game logic, and level content pipeline. In addition, I wrote and edited game content. The game is 98% C++ with a small portion of Objective-C to bridge between the iPhone APIs and the game engine. Much of the C++ code leverages Open Source Software and open APIs including the Irrlicht 3D engine, Boost C++ Libraries, OpenAL, and OpenGL.

Full production of Hedronism, a permutation puzzle game for the iPhone. Leveraging the game framework of Shards the project constituted a short development cycle of three weeks. Most of which involved refactoring of the Shards game framework into a generic component for future projects.

Vice-President, Redshift Software, Inc.

July 2001 to Present

Responsible for company operations and software development.

Ongoing consulting for various clients in a mix of languages including C++, Java, PHP, Python, and SQL.

Ported existing sales presentation, written in Flash, to the iPad device for Marsh. The existing interactive presentation runs on a large format 16/9 touch screen. To do the port involved re-designing the presentation to fit the 3/4 iPad aspect and doing various improvements now possible with the capabilities of the iPad.

Developed "MarketingStandees.com" e-commerce web site. The development included a full service design, configuration, site copy, implementation, and deployment based on a customized X-cart system.

Wrote an iPhone app for conducting customer surveys.  The app transmitted survey results to a secure web server where they could be reviewed and exported for further processing. The surveys themselves could also be updated via an administrative web interface. The app would then automatically sync to the latest survery questions.

Wrote the server of a multiplayer web game for a client. Written in Java, this game uses the Unity framework and the Hibernate persistence library.

Created the software design of game from a client's functional specification. This downloadable puzzle and trading game will be written in C++.

Web development for Follett Library Resources (www.flr.follett.com). Including both back end and front end development. The site uses both PHP and Perl with mod_perl backed by an Oracle 8i database.

Development of Gulo Solutions Web Content Management System (gulosolutions.com). This is a PHP based system backed by MySQL database. The system supports client editable content and a flexible structure to facilitate online content creation and maintenance.

Enhancement of client sites for Gulo Solutions. Added features to existing web management system written in Coldfusion, including a balloting system for web site members and a dynamic zip facility for large downloads.

Implemented a web database schema maintenance system for a client. This PHP based system reads a database schema from an XML document, validates it, then installs or updates it on an SQL Server or MySQL database.

Web development for Northwest Community Hospital (nch.org). Using PHP and MySQL, added pages to dynamically display care quality. Added administrative pages to allow staff to update quality metrics. Integrated third party media content, including dynamic querying of audio, video, and animations from a web service. Also assisted in deployment of a complete site redesign.

Software Engineer, DARC, Development Inc. - Software Division (ISIX)

January 1999 to June 2001

Designed and implemented a Java server program to load XML documents into the ISIX database integration product. This program, known as the XML Gateway, is a server consisting of a set of Java components that provide asynchronous processing of XML documents from a Java Message Service (JMS) compliant provider into a database staging table and are responsible for scheduling the data to be processed by ISIX.

Designed and implemented a data visualization tool in Java to aid internal developers. This tool, known as DataScope, allows developers to examine data stored in an Oracle database schema that drives the data processing functions of the ISIX product. This allows developers to "debug" complex data processing controlled by ISIX metadata.

Lead Programmer, Institute for the Learning Sciences - Northwestern University

September 1991 to January 1999

Designed and implemented in Java a tool for creating course content for a web based instruction program.

Redesigned the existing API for our tools and rewrote the interface to migrate from Lisp to Java. Designed and implemented a database schema to store data for the multi-language and cross-platform API.

Redesigned and implemented a new user interface for a tool I had previously created to make it fit better into a modular "plug in" architecture for our tools.

Rewrote and extended the Lisp foreign function interface for Macintosh. to provide access to shared libraries, allowing existing tools to use libraries written in C++.

Wrote the application code for Sickle Cell Counselor, a serious game teaching players about sickle cell anemia.

Designed and implemented a conversational knowledge base creation tool, known as the Asktool. This tool allowed multiple individuals to simultaneously view and edit the knowledge base. Implemented a variety of backend storage solutions including an Oracle database, a C++ object database, a high performance RAM implementation, and a file based system for deploying the finished knowledge base.