Reliable and Horizontally Scalable NoSQL Data Store (via Toptal) (Development)
The client, a fast growing web startup in India, was faced with increasing schema complexity in their traditional SQL-based data tier, which hampered their ability to quickly onboard new developers. Their rapid growth and aggressive expansion into new markets was also straining the scalabilty limits of their current MySQL-based infrastructure.
Working with the company CTO, I researched, designed, and developed a prototype for a lightweight NoSQL data store which provides persistent data storage for all use cases specific to the client's products.
The data store architecture consists of a set of sharded MySQL database servers, divided into index shards and data shards. Application data is stored in the data shards as JSON strings, and Apache Avro is used to provide schema support for the JSON data.
The data store interface was implemented as a Swagger documented REST API exposing CRUD-like semantics. The service supports code generation in both Java and PHP, allowing clients to read and write application layer objects from the data store without having to manipulate or even know the underlying JSON representation.
The system was implemented in Java as a Spring Boot-based microservice.
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)
A J2EE-based video lottery game server developed for the Chinese market, constructed entirely on open source technology (JBoss 7) with an in-memory database (MySQL Cluster). It supports up to 20k gaming machines and 1.5k transactions per second.
The system has no single point of failure and is horizontally scalable. It employs advanced cryptographic techniques to ensure security and integrity and is fully internationalized, dynamically switchable between Chinese and English.
The server interfaces with an account management system using a secure REST interface and persistently maintains the game state in real time for each machine through cluster failovers, system restarts, and machine failures. It employs a plugin architecture for modules that allow for new games added as pre-packaged, digitally-signed Java. It passed Chinese government testing for security and integrity and includes a separate turnkey audit system to audit every transaction, verify, and digitally sign the 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 remotely, with only ten days on-site over the course of the eighteen-month project.
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 four-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 five 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, implemented in C++, for TCP clients on geographically distributed systems to communicate with a central server over a secure dial-up connection. The solution is transparent to both client and server, who think they are communicating over ordinary TCP. My client had planned to use MS Remote Access Service (RAS) to allow local controllers to communicate with the central server, but RAS on Windows Server 2008 couldn't handle that number of connections at the time.
I built a system where a proxy application on the remote Linux client listens on a TCP port for incoming connection requests and forwards them to the proxy server, which receives the request over the serial connection and emulates the RAS service, forwarding it to the central server on a TCP port assigned to the client. The connection is accepted by the server and then at the remote side; data sent between the client and server is forwarded over the serial link.
The proxy service can handle multiple port-pairs and is used in production to proxy the RSync protocol. The serial link is secured using AES encryption and authenticated using a proprietary protocol certified as secure by South Australian gaming regulators.
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 online 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.