Home About Work Education Skills Links

Programming Languages

C++

C++ is my go-to language for any performance critical application. I have several years of professional experience working in C++, and I stay up to date on C++ best practices and the evolution of the language by watching conference talks. I prefer to work on the bleeding edge of the language (C++20/23), but I have also spent substantial time working with code bases using C++17, C++14, C++11, and even C++98.

C

Though I prefer C++, I am comfortable working in C89 in situations where a C++ compiler is unavailable (e.g. on some embedded platforms).

Python

I have used python extensively in school and in my research/professional experience. Additionally, I have experience with interfacing between python and compiled library code (C++/C/Fortran).

MATLAB

I currently use MATLAB at work for quick and dirty data analysis prototyping and for generating graphs. For personal projects, I perfer to use GNU Octave since it is free and open source software.

JavaScript

I use JavaScript at work and in personal projects for web development. I am familiar and comfortable with both client side and server side development in JavaScript (Node.js), and I try to stay up to date on modern features as browsers implement them.

Shell Scripting

For scenarios where general purpose scripting languages aren't well suited (e.g. system administration), I am comfortable with bash scripting and the standard unix coreutils.

Markup Languages

HTML/CSS

I'm no graphic designer, but I do enjoy translating designs and mockups into HTML and CSS. When a web design problem can be solved with both CSS and JavaScript, I tend to prefer the CSS solution.

LaTeX

I've been using LaTeX for nearly a decade and vastly prefer it to WYSIWYG editors like MS Word. I've typeset homework assignments, scientific papers, posters, cook books, and even my CV using LaTeX.

Other Technologies

Linux

I have been using GNU/Linux as my primary operating system since 2018. I am passionate about free software and try to use it in place of proprietary software whenever possible. This hobby has made me very proficient at the command line. I consider my self well versed in shell scripting and basic UNIX-like utilities, and I am very comfortable with Linux system administration tasks. These are skills that add to my strengths as a software developer.

Git

Git is my preferred version control system. I've used it personally and professionally for several years, and for both solo and collaborative efforts.

Node.js

As mentioned above, I am comfortable with server-side JavaScript development using Node.js.

GDB

Easy to use but hard to learn, GDB is my preferred debugger for console based applications.

CMake and Make

CMake is the build system I tend to reach for when starting new projects, though I am also comfortable working with plain-old Makefiles.

SQL

I have used MySQL databases for a few of my personal projects. I am comfortable with basic data base management, querries, and basic database normalization.