Joe Wingbermuehle
Education
- 2011 to 2015:
Washington University in St. Louis.
- Ph.D. Computer Science
- 2000 to 2004:
University of Missouri - Rolla.
- B.S. Computer Science
- B.S. Applied Mathematics
Experience
-
Principal Platform Engineer
February 2019 - present
- Well Principled; St. Louis, Missouri
-
Senior Software Engineer
October 2016 - February 2019
- CiBO Technologies; St. Louis, Missouri
- Optimized and ported a ~30k LOC C++ codebase to Scala.
- Implemented several algorithms to perform Bayesian inference, including MC^3 (Metropolis-Coupled Markov-Chain Monte-Carlo) and a novel adaptive multivariate proposer.
- Created a Scala interface to the Stan probabilistic programming language (ScalaStan) and presented it at StanCon 2018.
- Designed a novel plotting API in Scala (EvilPlot).
- Designed and implemented a type-safe client/server API in Scala for describing and running simulation models.
-
Software Engineer
October 2015 - October 2016
- Observable Networks; St. Louis, Missouri
- Created visualizations of AWS services and their interactions.
- Modeled AWS services to uncover malicious behavior in AWS VPCs using Amazon Inspector, CloudWatch, and other other AWS APIs.
- Used unsupervised machine learning techniques to find similar devices on networks and report anomalies.
-
Senior Software Engineer
November 2014 - October 2015
- VelociData, Inc.; St. Louis, Missouri
- Ported C++ code to z/OS and AIX.
- Designed and implemented multi-threaded engines to perform aggregation, conversion and other functions in C++ for a high-performance streaming appliance.
-
Contractor
November 2013 - November 2014
- Observable Networks; St. Louis, Missouri
- Researched and designed analyses to uncover malicious behavior on networks using machine learning techniques.
- Implemented these analyses in Python using Amazon EC2 and RedShift.
-
Contractor
January 2011 - October 2013
- Exegy Inc.; St. Louis, Missouri
- Worked on the design and development of improvements to the multi-threaded last-value cache and the order-book processor.
- Fixed bugs and implemented new features in the software control plane for the hardware-accelerated last-value cache and order-book.
-
Senior Software Engineer
July 2005 - January 2011
- Exegy Inc.; St. Louis, Missouri
- Designed and implemented a high-performance, multi-threaded system to maintain order books from millions of messages per second.
- Implemented a Linux kernel module extension to forward network packets from a NIC to user-land to bypass the network stack thereby reducing latencies to under a microsecond.
- Used Infiniband RDMA as an interconnect for connecting clients and expanding system capacity by sharing work among multiple compute nodes.
- Designed and implemented a system for interfacing with a hardware-accelerated last-value-cache for high-performance proprietary trading by customers.
- Developed the software for configuring a hardware-accelerated order-book solution.
- Debugged hardware problems with custom FPGA accelerator boards.
- Implemented pre- and post-processing for a hardware-accelerated search engine in C++.
- Designed and implemented a customer-facing API for interacting with the hardware/FPGA search solution in C.
-
Analyst
May 2004 - July 2005
- SBC Services, Inc.; St. Louis, Missouri
- Assisted with the design, development, and testing of an enterprise logging and auditing facility utilizing Java, JMS, PL/SQL, Jakarta Struts, and XML.
- Provided support to other developers for internal middleware products.
-
Intern
May 2003 - May 2004
- USGS; Rolla, Missouri
- Built a PNG conversion web service using Java, JNI, and C to support alpha transparency.
- Wrote a Java Swing program utilizing Xerces and Xalan to connect to map web services.
- Developed a map viewer in Java, which connected to a SQL database to get a list of relevant map services to contact.
- Implemented web services in Java to work with Styled Layer Descriptors.
- Wrote an ArcIMS/OGC connector in Java.
-
Intern
2001-2002
- SBC Services, Inc.; St. Louis, Missouri
- Developed a unit test suite for a middleware library in C++.
- Developed web pages and applications using CFML, SQL, HTML, CSS, and JavaScript.
Publications
-
Joseph G. Wingbermuehle, Ron K. Cytron, and Roger D. Chamberlain, "Superoptimizing Memory Subsystems for Multiple Objectives." in Proc. of 4th Int'l Workshop on On-chip Memory Hierarchies and Interconnects (OMHI), August 2015.
Joseph G. Wingbermuehle, "Application-Specific Memory Subsystems." PhD dissertation, Washington University, 2015.
Joseph G. Wingbermuehle, Ron K. Cytron, and Roger D. Chamberlain, "Superoptimized Memory Subsystems for Streaming Applications." in Proc. of ACM/SIGDA International Symposium on Field-Programmable Gate Arrays (FPGA), February 2015, pp 126-135.
Joseph G. Wingbermuehle, Ron K. Cytron, and Roger D. Chamberlain, "Superoptimization of Memory Subsystems." in Proc. of ACM SIGPLAN Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES), June 2014, pp 145-154.
Joseph G. Wingbermuehle, Ron K. Cytron, and Roger D. Chamberlain, "Compiling for Power with ScalaPipe." Journal of Systems Architecture 59(8):615-625, September 2013.
Joseph G. Wingbermuehle, Ron K. Cytron, Roger D. Chamberlain, "Optimization of Application-Specific Memories." IEEE Computer Architecture Letters, online April 2013.
Joseph G. Wingbermuehle, Roger D. Chamberlain, and Ron K. Cytron, "ScalaPipe: A Streaming Application Generator." in Proc. of Symposium on Application Accelerators in High-Performance Computing (SAAHPC), July 2012.
Joseph M. Lancaster, Joseph G. Wingbermuehle, Jonathan C. Beard, and Roger D. Chamberlain, "Crosssing Boundaries in TimeTrial: Monitoring Communications Across Architecturally Diverse Computing Platforms." in Proc. of Ninth IEEE/IFIP International Conference on Embedded and Ubiquitous Computing (EUC), October 2011, pp. 280-287.
Joseph M. Lancaster, Joseph G. Wingbermuehle, and Roger D. Chamberlain, "Asking for Performance: Exploiting Developer Intuition to Guide Instrumentation with TimeTrial." in Proc. of 13th International Conference on High Performance Computing and Communications (HPCC), September 2011.
Conference Talks
- "Scala DSLs and Probabistic Programming" to be presented at Strange Loop 2018
- "ScalaStan" presented at StanCon 2018.
Teaching Experience
-
Co-teacher for CSE 462M: Computer Systems Design
Spring 2014
- Washington University; St. Louis, Missouri
- Created and presented class material.
- Led class discussions.
- Created and graded assignments.
-
Teaching Assistant for CSE 361S: Introduction to
Systems Software
Fall 2011
- Washington University; St. Louis, Missouri
- Assisted students with programming assignments.
- Graded student assignments and tests.
-
Grader for CS 236: Programming Languages and
Translators
Fall 2002
- University of Missouri -- Rolla; Rolla, Missouri
- Graded homework assignments.
Projects
- Implemented ScalaCad, an API in Scala for designing 3D models for printing, etc.
- Wrote ScalaPipe, a domain-specific language embedded in Scala for writing streaming applications targeting FPGAs, GPUs, and multi-core processors.
- Designed and built an 8-bit computer with a 16-bit address bus out of approximately 3,000 discrete bipolar transistors. I also wrote a simulator and assembler in C as well as a Verilog model for the computer.
- Created and continue to maintain JWM. JWM (Joe's Window Manager) is a window manager for the X Window System written in C and included in several Linux distributions.
- Implemented maze generators in 45 programming languages.
- Implemented an Altair 680 system on an FPGA. The Altair 680 is a computer system from the mid-1970s based on a Motorola 6800 microprocessor. I implemented the processor, keyboard driver, graphics driver, and UART in Verilog to run on a Spartan-3 FPGA.
- Created Knockout Knockout is a game for the iPhone written in Objective-C.
- See https://github.com/joewing for more.