Lead Software Engineer
Developed new features for an existing loyalty platform, supporting both grocery and convenience stores. On the back end, I worked with Struts and Spring, using DB/2 for database management, while enhancing front-end functionality with AngularJS.One of the new features, above, required I revisit my compiler/parser background to build a LALR(1) parser for a small expression language used in the feature editor. This was done in Java REGEX for lexical analysis, with a hand-coded syntax analyzer.Another feature translated XML messages in and out of an existing point-of-sale back end, making that communication stream available in a more standardized dialect for a different point-of-sale. This translation used Orika to perform deep mapping from one dialect to the other and back, submitting translated requests to the original back end, and translated responses back to the requester upon return.Created tablet app that used the iPad camera to read UPC/GTIN and PDF417 barcodes at the point-of-sale, to scan loyalty cards and drivers licenses. This communicated with the back end over an existing communications channel to register new cards, issue rewards, redeem rewards, and view balances. This replaced aging VX570 devices, which were no longer supportable.Developed iOS and Android applications for client retailers and built a progressive web app (PWA) in Angular 2+ for tobacco retailers. Additionally, created and maintained a Spring-based REST service, which provided support for the above mobile apps, the PWA, and third-party developers.