A challenging data analytics/scientific C/C++/Java/JEE/Python programming position in Unix/Windows environment.
COMPUTER SYSTEMS, SOFTWARE, LIBRARIES, AND LANGUAGES:
SYSTEMS: UNIX (Solaris 8, Sco - Unix OpenServer 5, GNU/Linux 2.6), WINDOWS 7/2010, MAC OSX 11.1.
DATABASES: SQL Server 2005, Oracle 11g, MySql 5.5, PostgreSQL 8.1.9, Hadoop/Hive Node Clusters.
BUILD SYSTEMS, VERSION CONTROL AND DEBUGGERS: Make, Ant, Maven, Git, Mercurial, gdb, dbx.
SOFTWARE DEVELOPMENT METHODS: Agile Development; Test Driven Development (TDD); Waterfall; Scrum.
Confidential, Irving, TX
Senior Java Software Engineer
Technologies: Java/JEE 7, Linux 2.6, MySQL 5.5, Tomcat 6.0, JBoss 7.1, Hibernate 3.5, Spring 2.5, Python.
- Programmed using Java/JEE 7 on Red Hat Fedora Linux 14 to enhance a Java/JEE 7 SOAP JAX-WS and RESTful JAX-RS iLender pricing engine web services running in a Tomcat 6.0 web container, that was called from auto dealerships to originate auto loans for new, used and certified pre-owned vehicles, so that in addition to the mandated sales taxes, rebates on new vehicles, and document fees, iLender would suggest auto warranties, gap insurances and sales prices, if those were not already specified by the auto dealer, so that loan default risks are minimized by constraining the sales prices to be close to the Black Book market value of the vehicle, the loan to value ratio, monthly payment to monthly income ratio, and the monthly total cost of ownership to the monthly income ratio, are constrained to be within a specified target range.
- The problem was implemented as a linear integer constrained optimization problem, since the auto warranties and/or gap insurances incur fixed costs and are either added or not added, and the problem was solved using the cutting planes algorithm, with the simplex algorithm used to solve the linear programming sub-problems that are generated during program solution.
- Each web-service request created a Spring 2.5 Java bean that fetched requested vehicle pricing from MySQL 5.5 tables via Hibernate 3.5 and with support for second-level Hibernate bean and query-level cache across Hibernate sessions with the EHCache cache provider and read-write caching concurrency strategy.
- Responses from the web-service were sent to a Java JMS message queue running on a JBoss 7.1 application server, which sent the response asynchronously back to the auto dealership clients.
- Enhanced Python 2.7.2 scripts to load Black Book market value of vehicles data, and Vincentric vehicle ownerships costs data per vehicle type and zip codes, such as average repair costs, fuel costs, miles per gallon, warranty costs, gap insurance costs, depreciation costs, etc., into normalized MySQL 5.5 tables.
- Tuned the MySQL database by examining the query execution plans, and re-writing queries or adding query hints.
Confidential, Irving, TX
Senior C# Software Engineer
Technologies: C# 2.0, Multi-threading, Web-services, WinForms, ADO.NET, SQL Server 2000.
- Wrote multi-threaded C# 2.0 codes to interface using XML web-service asynchronous messaging NEC 7-Eleven point-of-sale (POS) devices to Gilbarco-Veeder-Root (GVR) inside store credit card authorization pin-pad devices, outside store credit card authorization card reader in dispenser (CRIND) devices, and fuel dispensing devices.
- C# EventWaitHandle objects were used to synchronize threads between POS threads and threads running web-services with GVR credit card authorization devices.
- Wrote C# codes to execute web-services to network configure and bring "online" over secure virtual private networks, the GVR credit card authorization devices to their host credit card authorization networks using connection-oriented TCP sockets, and with network configuration data, such as IP address, port number, DES encryption usage, read using ADO.NET from new SQL Server tables.
- For reporting purposes on daily fuel sales, using either cash/check tenders or credit card authorizations, wrote T-SQL stored procedures that were accessed from back office programs using ADO.NET.
- Wrote several C# WinForm utilities to automate the stress testing of the system.
Confidential, Plano, TX.
Senior Software Engineer
Technologies: C/C++, STL, MFC, OpenGL, Image Processing, Computer Vision, Machine learning.
- Wrote Visual C++ MFC image rendering, image processing and computer vision codes for:
- Rendering of 24-bit color/8-bit grayscale/1-bit binary images using MFC multi-document interfaces.
- Grayscale values histogram plotting using a MFC owner-drawn custom control and Graphical Device Interface (GDI), and 3d histogram plots with OpenGL.
- Spatial-domain filtering using convolution kernel filters to remove image noise, and detect edges.
- Threshold 24-bit color/8-bit grayscale images to 1-bit binary images using one threshold computed by variance minimization, edge pixels, entropy methods, and local adaptive regional thresholds computed by the iterative selection algorithm.
- Multi-threshold 24-bit color/8-bit grayscale images to three gray levels images using two thresholds computed by variance minimization, K-means clustering, and Bayesian network unsupervised Gaussian Mixtures clustering with three Gaussian components and the expectation-maximization (EM) algorithm used to estimate the parameters of the three Gaussians components.
- Implemented the Hough transform to detect straight lines, circles, and ellipses in an image.
- Skew detection and correction on images by computing using the Hough transform to get the skew angle of the most probable straight line through the bottom - center pixel locations of the connected pixel clusters that form characters, and then rotating the image by the skew angle that was detected.
- Cropping the scanner background of images by classifying the pixels of 2-bit four gray level images into scanner background pixels and non-scanner background image pixels by sampling from the top, bottom, left, and right of the images to locate the non-scanner background non-noise image pixels and then computing the largest bounding box around the non-scanner background non-noise image pixels, followed by cropping the image by translating the largest bounding box to the origin of the image.
- Principal component analysis (PCA) of the three (red, green, and blue) often correlated bands of a 24-bit color image by computing the 3 X 3 symmetric positive-definite non-deficient covariance matrix that shows the pair-wise correlations between the bands, followed by computing the three eigenvalues of the covariance matrix, all of which can be proved to be real and positive but not necessarily unique, followed by Gaussian elimination to solve a 3 X 3 system of linear equations from which the three linearly independent eigenvectors of the covariance matrix were determined, and which are the three 8-bit grayscale un-correlated principal components bands images. The first principle component band is a 8-bit grayscale maximum contrast image, and is useful for minimum-error image segmentation.
- Using Bayesian linear-discriminant analysis to detect arbitrary objects in an image.
Confidential, Dallas, TX.
Linux Point-Of-Sale Senior Software Engineer
Technologies: C, C++, gcc, gdb, Valgrind, Linux Programming, PostgreSQL 8.1.9, Perl, Unix Shells.
- Programmed using ANSI/POSIX C/C++ on SuSE Enterprise Linux 10 to enhance the NCurses graphical-user-interface Confidential point-of-sale (POS) software for driver dispatching, employee maintenance, and driver scheduling, to support automatically setting a driver employee on a lower-rate driver tip wage pay code while the employee was dispatched on a delivery, without having to do a manual clock-in and clock-out from both point-of-sale devices, and back-office administrative devices.
- Employee and pay code information was read from Linux shared memory segments and a PostgreSQL 8.1.9 database using libpq, and all transaction information, such as changing the pay code of the driver employee to a driver tip wage pay code while the dispatched, was written to a transaction file.
- Formulated an algorithm for a constrained stochastic weighted linear optimization problem to create an optimized driver scheduling program that forecasts pizza delivery tasks for future weeks as a Poisson stochastic process of rate determined by historical data from previous weeks, and generates a group of legal shifts and assigns one forecasted pizza delivery task to one and only one driver, while also satisfying the imposed labor and operational constraints and providing the smallest possible cost.
Confidential, Ft. Worth, TX
Windows C++/Java Point-Of-Sale Senior Software Engineer
Technologies: C++, STL, Boost, MFC, SSL, SQL Express, Java2/J2EE, JSP, Struts, EJB, Oracle 10g.
- Programmed using Visual C++ 2003 to enhance, maintain, and fix bugs in a new release of Radiant Aloha restaurant POS system, and with support for: (i) sending information about items ordered, using connection-oriented TCP sockets, to multiple video devices running MFC windowing applications at remote locations in the kitchen, and (ii) ATL/COM OLE for point-of-sale (OPOS) devices.
- Wrote a stack-based recursive-descent parser to support adding to guest checks configurable messages consisting of arithmetic expressions on tokens representing check sales data, such as a message containing a suggested tip based on total check sales. The arithmetic expressions on the tokens, with support for parenthesis ‘( )’, addition ‘+’, subtraction ‘-‘, multiplication ‘*’, and division ‘/’, was expressed as a context-free grammar (CFG) with production rules to enforce operator precedence rules, such as multiplication ‘*’ and division ‘/’ having a higher precedence than addition ‘+’ and subtraction ‘-‘, and parenthesis ‘()’ used to change operator precedence rules.
- Enhanced the multi-threaded secure-socket-layer (openSSL) POS credit-card payment system using public key encryption cryptography, to support Comdata, a credit-card payment processing gateway.
- Enhanced an on-line Java/J2EE customer gift-card and loyalty-card web application running on a JBoss 4.0 Application Server, and used to view, create, modify or delete customer gift card accounts, using Struts 2.0 MVC, JSP 2.0 along with JSP master layout pages with Tiles, JSTL with JSP Expression Language (EL) to dynamically generate HTML 4 pages with CSS 2 style sheets. Each web request created an EJB 2.1 stateless session bean, and entity beans with container-managed persistence with EJB Query Language (EQL) to an Oracle 10g database, and with support for form-based authentication and logging using HTTPServlet filters, HttpSession objects, and caching of JSP page fragments using the Jakarta Cache Taglibs. Emails about account creation or account changes were sent to a Java JMS message queue, to asynchronously send the emails to the clients.
Confidential, Arlington, TX
Senior Software Engineer
Technologies: C++, STL, Boost, MFC, Multi-threading, Sockets, Python, OpenGL, Image Processing.
- Programmed using Visual C++ 6.0 to enhance, maintain, and fix bugs in DBL, a software used in Siemens mail sorting machines and used to parse and reconcile addresses read from mail pieces by an optical-character reader (OCR), possibly with spelling errors or poor writing quality, against a national address database consisting of valid address range information, such as valid street number ranges and apartment number ranges, and choose the best possible address from several possible addresses.
- Replaced an embedded proprietary interpreter interface to DBL with Python as the interpreter.
- Wrote C++ codes to test a new dictionary-based LZ77 variant for lossless compression, and establish an optimal data block-size with respect to compression ratios and de-compression speeds for address data.
- Wrote a probabilistic Bayesian decision classifier to convert from a Siemens proprietary OCR address block ZVU format, which consists of the interpretations of each character along with their confidences by both an alpha-numeric character recognizer and a specialized numeric character recognizer, to a USPS standard AAR address block format, which consists of the interpretations of each character along with their confidences by only a single alpha-numeric character recognizer.
- Wrote a multi-threaded TCP-socket based networking software to allow concurrent address directory downloads on multiple terminals attached to the mail sorting machine(s).
- Wrote Visual C++ codes for tiff image rendering, zooming, converting 24-bit color images and 8-bit grayscale images to 1-bit binary images using variance-based thresholding, grayscale values histogram plotting, histogram-equalization contrast stretch image enhancements, and low-pass and high-pass filtering of images in the frequency-domain using Discrete Cosine Transforms (DCT) and in the spatial-domain using convolution kernel filters to remove image noise, blur and sharpen images, and detect edges, etc. Image enhancements while reading/writing images to OpenGL frame buffers.
Confidential, Herndon, VA
Senior Consultant- UNIX/C++ Programming
Technologies: Solaris, C++, STL, Multi-threading, XML, Oracle 8i.
- Wrote using a Sun Workshop C++ compiler in a SunOS 5.6 platform, a multi-threaded, MQSeries 5.1 message based web-service framework that would receive xml-based requests from lenders for services, such as credit, pricing, loan delivery, property, underwriting, etc., to Confidential, the nation’s largest home-mortgages business-to-business lender.
- During processing, the service request xml file was parsed using an IBM XML4C SAX 1.0 parser, an Oracle 8i database was accessed using Pro*C and PL/SQL stored procedures, and after processing a response xml file was sent to the lender.
Confidential, Dallas, TX
Visual C++ Applications Developer
Technologies: C++, MFC, ATL, Multi-threading, COM/ActiveX, FoxPro.
- Programmed using Visual C++ 5.0 and Microsoft Foundation Classes (MFC) to enhance, maintain, and fix bugs in K1 Plus, the Confidential partnership tax compliance software, which uses a FoxPro DBF files database system accessed using CodeBase.