High Performance Forensic Disk Imager (via Toptal) (Development)
I developed high performance parallel pipeline based disk imaging software for use in digital forensics applications. The software was developed in C++ and runs on Linux and Windows platforms.
High Performance Video Lottery Game Server (Development)
I developed a J2EE-based video lottery game server for the Chinese gaming market. The system was constructed entirely with open source technology (JBoss 7), including an in-memory database (MySQL Cluster), and will support up to 20,000 gaming machines and process over 1,500 transactions per second in its standard configuration. The system has no single point of failure and is horizontally scalable via clustering.
The server interfaces with an account-based player management system using a secure REST interface, and persistently maintains the game state in real time for each gaming machine. It is able to maintain game state through cluster failovers, system restarts, and even gaming machine failures. It employs a plugin architecture for game modules that allows new games to be added as pre-packaged, digitally signed Java archives.
The system employs a number of advanced cryptographic techniques to ensure system security and game integrity.
The system is fully internationalized. All user interfaces and REST API messages are dynamically switchable between Chinese and English.
The server has passed all Chinese government certification testing for security and integrity. It includes a separate turnkey audit system that I developed which is capable of auditing every transaction at every gaming machine. The audit system is also capable of independently verifying and then digitally signing the gaming software modules. It was implemented using a GWT front-end and a REST back-end based on Jetty and Apache Derby (JavaDB).
The server was developed almost exclusively remotely from the US, with only 10 days on-site in Beijing over the course of the 18-month project.
The server went live in Hainan Province in January 2015.
Windows POS Platform Back-end Server Integration (Development)
I developed a platform framework and associated Windows services in order to integrate a Windows 7 Embedded POS device that controls gaming machines located in geographically diverse venues (bars, hotels, etc) with a central network management service (NMS) and a content distribution service (DLS).
The project involved integrating an existing Java-based windows service that provides the basic gateway connector to the central services, and developing two new C# Windows services to allow application components on the POS platform to communicate with the central services through the Java gateway. The C# services communicate with the Java gateway using a proprietary TCP/JSON based protocol, and expose WCF Rest endpoints to talk to the POS applications.
The project was done primarily in C# with some Java, and used a SQL Server Express DB.
Slot Machine Interface Board (Development)
I migrated a proprietary legacy C++ gaming machine controller code base from a Red Hat Linux-based server platform to an off-the-shelf Freescale I.MX6-based system module (EDM-1). The application was a Slot Machine Interface Board (SMIB) that will be installed in video lottery terminals (VLTs) in order to convert the machine's native proprietary serial protocol to a TCP-based protocol that can be run over a LAN.
The project including building the appropriate embedded Linux kernel and file system image for the target hardware using the Yocto-embedded Linux development environment and adapting the application build procedures as appropriate. The migrated code base was turned back over the the client's engineering team for further adaptation to their proprietary I.MX6 SMIB.
The project was completed entirely remotely using components shipped from the client and my own lab systems and equipment.
The product is expected to be deployed to several hundred locations in South Australia sometime in late 2015.
Architecture for a National Account-based Lottery System (Development)
Architecture and design consultant for a project to build a national account based lottery gaming system for the China Sports Lottery. The system employs a service-oriented architecture and supports player account management, retail location management, and game service interface.
It is designed to allow seamless integration of diverse third-party game providers using a standardized plug-in interface.
The system is designed to scale to millions of player accounts, thousands of physical gaming locations and any number of game content providers. It supports land-based as well as online (Internet) gaming.
Once the architecture was complete, I performed the design and initial development of the retail location and gaming machine management module, then moved on to developing the first game server implementation to be used with the framework.
The architecture and development was conducted exclusively remotely from the US, with only a 4 day brainstorming session in NYC to kickoff the project.
The system went live starting in Hainan Province in January 2015.
Mobile Gateway for Lottery Ticket Sales (Development)
I designed and developed a high-performance mobile gateway system for the Shanghai Welfare Lottery Corporation (SWLC).
The system enabled lottery ticket purchases acquired by diverse mobile application providers to be executed on the lottery's legacy back-end transaction processing system.
The system was implemented based on JBoss 7 and employed a JAX-RS REST API to communicate with the mobile application providers and a custom JCA resource adapter to communicate with the lottery's proprietary back-end transaction processor. It employed JPA/MySQL as the persistence solution.
The system serves as a gateway for potentially tens of millions of mobile users, and thus has very stringent requirements for both response time and transaction rate.
It was developed almost exclusively remotely from the US, with only 5 days on-site time in Shanghai to support the initial production roll-out.
The system went live in Shanghai in March 2013.
Enhancement and Ongoing Maintenance of a POS VLT Controller (Development)
I was responsible on an as-needed basis for the maintenance and enhancement of a JBoss 6-based "embedded" POS product.
The product functioned as a local controller ("site controller") for gaming machines (VLTs) in geographically diverse locations. It communicated with the gaming machines using a standard XML-based protocol (G2S) over TLS. It also communicated with a central State/Provincial management system using similar protocols. The original implementation was based on JBoss 6 with a PostgreSQL database.
The client had inherited the code base from a partner team that had failed to deliver a functional product. Over the course of numerous engagements, I re-factored and reworked the code base into a functional product, and added features and enhancements as requested, eventually migrating it to JBoss 7. The product is currently used for demonstration purposes and is considered highly successful in that role.
Mobile Electronic Instant Ticket Game Server (Development)
I designed and developed a high-performance electronic instant ticket (EIT) game server, used as a component in an SOA used for a mobile EIT sales system in Jinan Province, China.
EITs are the virtual equivalent of "scratch-off" lottery tickets. Instead of a paper ticket, the player uses a mobile application to obtain an encrypted ticket, which they then "scratch" using a mobile application. For any particular EIT game, there are pools with a fixed number of EITs and a predetermined number of winners at each prize level. These EIT pools are generated by proprietary algorithms and encrypted.
I developed the server, which allowed the EIT pool files to be securely loaded, verified, and distributed to the mobile users via REST interface. I developed the core code, UIs, and REST API.
I designed techniques using public key cryptography that ensured the EIT files could only be read by the gaming server that they were generated for, and developed the cryptographic techniques used to secure the "tickets" in transit and ensure that an EIT was only readable by the purchaser.
The system was implemented in Java on JBoss 7 using JSF for the UI and JPA/MySQL for the persistence layer.
Online Medical Survey System (Development)
I was the architect and principal developer for the creation of a J2EE-based internet medical survey system for a medical metrics firm.
The system is completely turnkey, and allows researchers to design complex custom medical surveys for targeted populations and then deploy them on the internet without any incremental web or back-end development.
The implementation was done on JBoss 5, using JSP, Hibernate, and MySQL.
Dial-up WAN TCP Proxy Service (Development)
I developed a serial line TCP proxy solution that allows TCP clients on geographically distributed systems to communicate with a central server over a secure dial up telephone connection. The solution is transparent to both the client and the server. Both sides think they are communicating over an ordinary TCP connection.
My client had originally planned to use the Microsoft Remote Access Service (RAS) to allow local controllers in several hundred geographic locations to communicate with the central server. However, at the time, RAS on Windows Server 2008 could not handle that large number of connections and Microsoft was not able to provide a solution.
To solve the problem, I built a proxy system where a proxy application on the remote Linux client listens on a TCP port for incoming connection requests, and forwards them over a dial out connection to the proxy server. The proxy server receives the request over the serial connection, and emulates the RAS service, forwarding the connection request to the central server on a TCP port specifically assigned to the specific remote client. Once the server accepts the connection, the connection is also accepted at the remote side and data sent either way between the client and the server is forwarded over the serial link.
The proxy service can handle multiple port-pairs, and is also used in production to proxy the RSync protocol.
The serial link is secured using AES encryption and authenticated using a proprietary protocol that I developed. The security scheme was certified as secure by South Australian gaming regulator.
The service is implemented in C++. and most of the code base is common between the Linux client side and the Windows server side.
The proxy has been in production in South Australia since 2009.
Lottery Retailer Management System Integration (Development)
I developed a web service-based interface that allowed the Maryland Lottery to integrate the retailer management function between the lottery's UniSys back-end business systems and the POS system operator's proprietary Windows Server based system.
Just for background, in the US, state lottery agencies usually sub-contract the deployment and operation of the online retailer point-of-sale network (POS) to specialist vendors. The lottery itself will manage the back-office business operations with their retailers (convenience stores, etc.). However, a subset of the information regarding the retailers must be shared with the POS vendor in order for the vendor to properly provide and service the retailers' lottery point of sale equipment.
The service I developed allows the lottery to push updates to the on-line vendor's system via a SOAP RPC-based web service. The service is fully automated and requires no operation intervention except to verify the reporting data. This replaces a manual process that required the retailer information to be redundantly entered into both systems.
The system was implemented in C# on IIS using ASP.NET technology. It has been in operation since October 2006.