Danville, California, United States
Senior Software Engineer experienced in backend Java, C++, Python, Linux/Unix, Windows, distributed computing, LLVM-based compilers, high-frequency trading, GPU’s, CUDA, 3D graphics.
Startup offering a GPU-accelerated SQL database with graphical querying (charts, maps, and dashboards). • C++ and Cuda coding for both GPU and CPU for HeavyDB: a SQL database backend with LLVM-based query compiler. • Upgraded HeavyDB’s GPU/CPU memory management and iteration logic for SQL joins, removing previous query-size limitations. • Designed a distributed cluster feature to provide dynamic horizontal scaling, allowing multiple servers to access the same database instance. • Query plan graph-visualization improvements. • Added many SQL and security features.
AI-powered resume-classifying startup. • Responsible for Python webapp optimization and backend infrastructure. • Profiled and fixed performance hotspots. • Technology stack: Django, Flask, uWSGI, MongoDB, PostgreSQL, ElasticSearch. • Designed webhook connections to RESTful API services including: Zapier, ZipRecruiter, Indeed. • Created SQL triggers to watch a list of tables, recording a history of all changes.
Multinational bank headquartered in Australia. • C++ and Java coding to support trading operations at an energy-trading desk. • Wrote confirmation feeds for electronic markets: ConfirmHub (CME) and ICE exchange. • Streamlined huge systems to use a NoOps philosophy (self-service, auto restarts). • Modernized & optimized accounting software.
Proprietary trading firm that was a pioneer during the original high-frequency trading (HFT) boom. • Invented low-latency C++ futures trading software infrastructure using epoll and kqueue technology that was state of the art at that time. • Wrote trading feeds in C++, Python, Ruby, Java for several electronic markets: CME, Eurex, CBOT/Liffe, Citibank, BrokerTec, eSpeed, Bank of America, FAST/FIX. • Designed a time-series market data streaming service for trading apps. Apps would request product symbols and an open or closed time range, then receive historical data and/or live tick data from the exchange.