- Ubuntu, Centos/RHEL
- Intellij IDEA
- Visual Studio Code
- Sublime Text
- Markdown and Restructured Text
- Linters: Pylint, MyPy, Clang-Check, TSLint
- Formatting tools: Clang-Format, GoFmt, Autopep8, YAPF
- Continuous Integration: GitLab CI, Jenkins
- Continuous Delivery: Docker, Docker-Compose, Docker-Swarm, Kubernetes
Python is my favorite language and I’ve used it for many professional and side projects. Over the years I’ve developed an opinionated Python workflow that uses community best practices such as using a linter (pylint), formatter (yapf), and an abstraction on top of setuptools – Python Build Reasonableness (PBR) to develop and ship Python modules with non-trivial dependencies.
I’ve used a number of advanced language features and libraries for Python including data analysis and machine learning libraries such as: numpy, pandas, matplotlib, and scikit-learn.
I’ve also done web development in Python using SQLAlchemy, jinja2, django, and flask to name a few.
I am experienced in object oriented and functional programming styles in Python. I have implemented complex Machine Learning algorithms and large web and desktop applications in Python.
Java is the first language I learned and I am very comfortable using it. I know many of the nuances of the language and prefer to use it for constructing large Object Oriented systems. I have developed a few GUI tools using Java and the Swing framework.
I have used Maven to manage Java dependencies and am comfortable with its lifecycle model and how sub-projects are resolved with its parent.
I am more familiar with writing new-style C++11, 14 than old C++ constructs but I’m generally able to understand code that was written in an older style. I’ve implemented software frameworks for other teams using C++ that included template declarations for generic code.
I’ve adapted legacy C++ code using SWIG and exposing it via Python as web services. I generally will not choose C++ as a tool for implementing software unless its performance demands are high, and if that is the case I would likely opt for using Python and writing either Cython or C++ Python modules instead of using C++ directly.
I’ve used PHP briefly for my Intro to Databases project and wrote a full website that interacted with a MySQL database using embedded raw SQL queries with it. I don’t think I’d choose to use PHP if given the choice of languages.
Experience in Computer Science Fields
I have created AI programs that have played Tron on a hex grid, solved puzzles, waited in line and worked at a virtual DMV, and fought wars against one another.
I have implemented classic classification algorithms including Decision Tree classification, Naïve Bayes, and Logistic Regression. I created a program that predicted stock prices using Support Vector Regression and had a mean average error of around 10%.
I have experience with SQL databases including MySQL and SQLite. I have been exposed to NoSQL databases and have briefly used MongoDB.
I have taken CS 522: Digital Image Processing at the University of New Mexico where we implemented geometric transforms, Laplacian pyramids, and Daubechies wavelets. We also created a program that could count the monetary value of an image of a set coins, and a program that could detect and color varying components on a circuit board.
I have experience with Hadoop, the Hadoop File System (HDFS), and the Mahout and Spark distributed machine learning frameworks from Apache.
I have used matplotlib and Google Graphs for data visualization. I have visualized traffic patterns in San Francisco using data provided by Uber Cabs to analyze a difference in driving patterns for difference in time of day and days of the week. Matplotlib and Matlab have been used extensively in my academic career to plot and visualize data in multiple formats.
Data structures and algorithms
I have implemented the classic data structures including LinkedLists, HashMaps, Trees, Graphs, and Heaps. I have also implemented search algorithms including breadth-first and depth-first search and a variant of Djikstra’s algorithm. I have implemented a couple of maze solving algorithms (one in C and one in Java) and an algorithm to find the shortest distance between two points on a weighted infinite grid.