# About Me
A full stack software engineer that enjoys building products and iterating upon them.
Languages
| Language | Strengths | Libraries/Tools |
|---|---|---|
| Python 3 | RESTful APIs, Concurrency (threads, async, multiprocessing), automation, metaprogramming, OOP, testing | pytest, ruff, sphinx, black, Flask, FastAPI + HTTPX + Pydantic, marshmallow, SQL Alchemy, pyserial, matplotlib |
| C/C++ | Concurrency, OOP, basic templates, STL (containers, concurrency, pointers), ABI, testing, packaging | CMake, GNU Autotools, clang-format, Clang, GCC, Doxygen, Boost, POCO, Nlohmann JSON, cJSON, OpenCV, Google Test, Google Protocol Buffers, ZMQ, DBus, Linux + POSIX APIs, Zephyr RTOS |
| Rust | Concurrency (threads + async), Traits, linking, WASM | tokio, mockito, Tauri, serde |
| Java | Inheritance, interfaces, concurrency, Swing, OpenGL, packaging, Android | Apache NetBeans, Eclipse, IntelliJ, Android Studio, Ant, Google Cardboard, launch4j |
| HTML5 (and other XML things) | HTML DOM, XHTML, DTDs | |
| JavaScript | Vanilla (no build) JS, functional programming, destructuring, async/Promises, HTML DOM, Web Workers | |
| JSX + TypeScript | Basic types and annotations, strict null checking, build process, Dev Ops, package managers | npm, yarn (including berry), tsc, Tauri, React, ShadCN, Material UI, Vue 2, Ember JS (Octane), Axios, Google Blockly, MIDI.JS |
| SQL | Standard SELECT, INSERT, UPDATE, DELETE, and JOINs. | PostgreSQL, SQLite, PG Admin |
| Bash | Control flow, variables, arrays, associative lists, redirection, pipes, set -e and other flags | Debian package maintainer scripts, shellcheck |
| Regular Expressions | Character Sets, Groupings, Quantifiers. Enough that I can probably figure out your mysterious sed commands. Limited forbidden knowledge about how regex API’s differ in different programming languages. |
Other Tools
DevOps: Docker, AWS, GitLab, Bamboo, BitBucket, Git, Trivy, SonarQube
Editors: VS Code, vim, nano, sed, cat, less
Disclaimer
All views, content, and opinions expressed on this website are my own and not my employer’s.
I do not represent in any capacity my employer’s views, ideas, wishes, motives or goals through this website.