Resume

Software Engineer

Objective

To work on projects in networking, data processing, and machine learning.

Eduction

08/94-12/98
BS EE, Purdue University, West Lafayette.
BS in Electrical Engineering
01/02-12/04
MS ECE, Georgia Institute of Technology, Atlanta.
MS in Electrical and Computer Engineering

Work

10/16-
Software Engineer, Tripwire, Atlanta.
Security Product Software Engineer
  • Python techniques on security product.
  • Python techniques on security product.
  • Python techniques on security product.
09/14-
Software Engineer, Medlytix, Atlanta.
Data Products Software Engineer
  • Created a new batch data processing pipeline in Python and luigi to for data analysis and reporting.
  • Implemented various features for mutliple different Ruby on Rails web applications used for data analysis.
  • Designed a dashboard in Javascript, SVG, and D3 to give clients an overview of the various ways our software has helped to bring in new revenue.
08/15-08/14
Software Engineer, Itaas a Cognizant Company, Atlanta.
Software Engineer
  • Designed and built an EBIF application and associated Python Flask server for STB data collection.
  • Implemented software with Fabric and Ansible to help customers automate their infrastructure deployment.
  • Created various application servers for customers using Bootstrap, Django, Flask, and PHP.
02/14-08/14
Software Engineer, Manheim, Atlanta.
Web Application Software Engineer
  • Implemented various features in Ruby on Rails and Javascript for the main Mannheim auction web site.
  • Worked in an agile extreme programming environment and learned various different software development techniques such as pair programming and TDD.
07/14-02/15
Software Engineer, Independent Contractor, Atlanta.
Software Engineer
  • Designed and built a Python Django social network for software engineering with a rich user interface utilizing bootstrap and D3.
  • Implemented numerous Python Flask applications exploring different web site designs.
  • Researched machine learning and built a custom algorithm for more accurate software engineering metrics.
02/12-07/13
Software Engineer, Cisco Systems, Atlanta.
Middleware Software Engineer
  • Helped port the C/Java RI OCAP middleware stack and Comcast RDK platform to Cisco hardware.
  • Designed tests in Python, Bash, and C++ to measure and improve the RDK’s performance.
  • Created unique analytic techniques using statistics, graphics, and various linux tools such as oprofile to investigate RDK performance bottlenecks.
08/11-01/12
Software Engineer, TVWorks Comcast, San Francisco.
Integration Testing Software Engineer
  • Wrote tests in Java and TestNG for system integration testing of cable network infrastructure.
  • Analyzed cable system servers and server architecture to create test plans and test cases for important components.
  • Studied cable systems and the specifics of Comcast’s cable tv infrastructure.
07/10-07/11
Middleware Software Engineer, Cisco Systems, Atlanta.
Middleware Software Engineer
  • Performed debugging of the C/Java OCAP middleware stack to reduce bugs, improve performance, and to help design a better implementation.
  • Designed tests in Python, Perl, and Bash to measure and improve OCAP’s application bootup, channel change, and general performance.
01/10-07/10
Research Assistant, Georgia Tech Research Institute, Atlanta.
Mobile Application Research Assistant
  • Implemented an Android application to detect other devices and signal a custom video server to enable video forwarding.
  • Designed and implemented a VLC video server to intelligently switch video between devices with multiple different form factors.
  • Researched the use of interactive television and the various different vendor’s interactive television solutions.
05/04-07/10
Research Assistant, Georia Institute of Technology, Atlanta.
Virtual Environment Networking Research Assistant
  • Created various unique signal processing algorithms to reduce the effect of network delay and jitter. Various machine learning techniques were compared to traditional dead reckoning for state prediction and distribution.
  • Architected and programmed various applications and tools in C++ and Python for the proposed research. The software included a 3D animation viewer in C++ and Java, a 3D collaborative virtual environment in C++, a simulator for testing signal processing algorithms in Python, and a Neural Network simulation using C#.
  • Integrated multiple complex sensing hardware systems into the custom collaborative virtual environment.
01/09-08/09
Researcher, Motorola Labs, Atlanta.
Cable Systems Researcher
  • Built a Ruby on Rails application linking semantic web content to video allowing a richer television viewing experience on a second screen.
  • Designed and implemented multiple OCAP Java applications to illustrate good paradigms for interactive television applications and interesting future research directions.
  • Analyzed an internal SIP social networking application to determine the feasibility of porting it to run on various OCAP STBs.
08/05-08/06
Instructor, Georgia Institute of Technology, Atlanta.
Course Instructor
  • Formulated syllabus, tests, and lectures to teach the most important circuit analysis techniques.
  • Lectured on electronic circuits and planned classroom activities for junior level engineering students.
  • Helped students in the art of circuit analysis illustrating standard engineering techniques.
01/02-08/05
Teaching Assistant, Georgia Institute of Technology, Atlanta.
Digital Design and Writing Laboratory Teaching Assistant
  • Responsible for the operation of a digital design laboratory. In addition was also responsible for helping to manage the technical writing laboratory and formulate the writing curriculum.
  • Instructed students in technical writing details and the proper formatting of laboratory results.
  • Administered quizzes, graded students work, and gave students feedback on ways to improve their writing style.
02/99-08/01
Systems Engineer, Lucent Technologies, Atlanta.
Telephone Equipment Engineer
  • Worked with traffic engineers, installers, and factory personal to complete telephone equipment orders for 5ESS switches and other central office equipment.
  • Trained in telecommunication systems fundamentals and the details of Lucent’s switching equipment.
  • Programmed a tool to bring a graphical interface to the equipment configuration process.

Projects

02/16-
Personal Website

I suppose listing my work on this site is a bit meta. I used to have a wordpress site that contained all of my work but I changed that out for my own custom built rails site you see here. Unfortunately I don't have a good reason to explain my switch. As a software developer I just felt if I am going to have a website that I might as well just build it myself. In my career I have also flipped back and forth between using rails and Python for web development. After starting this project off in Django I switch to rails as still think it is the most complete framework out there. No thanks node.js. On this site I spent a lot of time making my web resume look like my latex one and I think it turned out well. Think of this site as my ongoing research platform for putting new ideas and technologies up.

08/16-
Audio Signal Processing

This research is just starting to get under way. I have a strong background in signal processing that I gained in grad school at Tech. My goal was to implement a platform for audio signal capture so I could work on interesting data analysis problems. Working with stock data does really interest me as not having control of the data collection is a huge hinderance to doing really interesting things. So far the hardware portion of this has been quite a bear so we will have to see how far this goes.

07/13-03/14
Reconfigurable Lexer and Parser for Unstructered Data

For a while now I have been interesting in gaining more information on working software systems. This information could be useful for bug detection, security, or more for use in more advanced formal methods. A while back I wrote some code to parse logs of many different system. One of the hardest parts of this problem is how to deal with the unstructured portion of portions of a log. For the mean time I have put this project on the back burner but would like to pick it back up again.

06/13-
Data Science Education

In grad school I had two specializations. The first was networking and the second signal processing. Networking was my stronger focus at first but working in the DSP group I was determined to make algorithms that could be game changing. I spent many years collecting data, running the data through simulations, and doing analysis of my algorithms. The recent development of data sceince as a highly desired profession sparked my interest in refreshing my data skills. In addition to reading books, I have taken a decent amount of online classes and short courses. Working at Medlytix I was able to do a lot of work on data processing pipelines for batch processes. Maybe all of this will lead to something great, but for the time being I plan on trying to keep my algorithm skills up to date.

09/15-09/15
Game Networking Algorithm Research

When I first started working in the the signal processing lab my professor was interested in the streaming of 3D meshes since that was what his PhD was on. The first task I was instructed to do was to network together a very rough virtual environment prototype. This project led to me researching the networking done in gaming and virtual environments. Most of the previous research on the topic was done on a technique called dead reckoning. I spent many years researching this and experimenting with algorithms for the transmitter and the receiver to lessen the effects of the network on the end user experience. My research was more specifically done on human hand movement which is different than avatar movement in a typical first person shooter. I collected data, wrote algorithms and simulations, and eventually a few research papers. I always thought this problem was a hard one as the current techniques are good but more advanced techniques are very difficult. My only consolidation to this was in the passing on of my 100 page proposal to a friend working on the networking at the gaming startup Artillery.

09/15-09/15
Network Gaming Research

In addition to the more algorithm oriented research on network gaming I did various research projects where I wrote networking software. One interesting project was the networking of a sort of treasure hunt game done in the real world with mobile phones. At this point mobile phone development was much more rudimentary that it is now and phone API’s were not close to being as rich. In spite of this we put together a rough prototype which was pretty cool. I learned a lot of things on the practical aspects of game networking and mobile phones. Using the GPS and network on those old phones drained the battery like a college frat boy drains a beer. Between the old phones, the huge battery drain, and the horrible network coverage I would say I learned the most in how the real world often kills good research ideas. If I ever have any free time I would love to reimplement something similar with todays hardware. I did some other research and built some prototypes streaming other media forms, but I think the ideas were less novel and interesting.

09/15-09/15
Second Screen Semantic Linking Research

One of the coolest research projects I worked on was with Motorola labs. Once again I think we were at the forefront of the idea of a tv linked to a second screen. No one had done anything in the literature at the time and I was teamed up with a researcher at Motorola labs who wasn’t drinking as much of the corporate Kool-Aid as the typical corporate employee. I built a Ruby on Rails application that linked interesting web sites to the current video on the tv. Our prototype was very basic and the idea has since been done, but at the time I thought it was novel. In the course of this project I learned a lot about OCAP as well which led me to later work. Unfortunately the the cable world at that timed cared more for OCAP than cool novel tv centric application ideas. The closed nature of the cable tv system has really soured me on anything interesting happening in this field.


Skills

Programming langauge
Python, Ruby, Java, C++, Javascript, Bash, Go, HTML, CSS, SQL, EBIF, XML, JSON, Perl, SASS, R, PHP
Libraries and frameworks
Django, Flask, Ruby on Rails, Bootstrap, Android, OCAP, RDK, Boost, STL, Matplotlib, D3, TestNG, Junit, Numpy, Pandas, Seaborn
Networking and telecommunication
TCP/IP, UDP for multimedia, IMS, SIP, RTP, Socket programming, SOAP, REST, Various MAC layers
Other
Linux, OSX, Arduino, Raspberry Pi, Oprofile, Valgrind, LTTng, Maven, BitBake, Gradle, signal processing, machine learning, neural networks, mvc