home
projects
articles
devlogs
about

PROFESSIONAL EXPERIENCE

I have over a decade of experience as a professional software developer. Though, outside of a professional environment, I've been programming since a young age.

  • Programming/Data Languages

    • Very Comfortable: C, C++, JSON, Markdown, Rust, YAML
    • Comfortable: Bash, Go, Python, SQL
    • Need a Refresher: Assembly, C#, GLSL, Objective-C
    • Only as a Hobby: CSS, JavaScript, HTML, Lua, Verilog
  • Development Tools

    • Very Comfortable: Cargo, CMake, Git, VSCode
    • Comfortable: Clang, CLion, GCC, rustc, Sanitizers, Valgrind, Qt Creator
    • Need a Refresher: Bazel, GDB, LLDB, Make, Mercurial, Perforce
    • Only as a Hobby: Docker, Xilinx Vivado
  • Libraries & Frameworks

    • Very Comfortable: Clippy, Google Test, Serde, syn&quote, Protocol Buffers
    • Need a Refresher: Check, CUnit, OpenSSH, Qt
    • Only as a Hobby: ALSA, OpenCV, Rayon, Tokio, Vulkan, XCB
  • Domain-Specific

    • Very Comfortable: Daemons, Linux, System Programming, Teaching, Training & Leading
    • Comfortable: Compilers & Parsers, Data Analytics, Databases (Relational & Non-Relational), Distributed Systems, Game Engine Programming, Security Engineering
    • Need a Refresher: Graphics Programming, Pub/Sub Feeds, REST
    • Only as a Hobby: Gameplay Programming, OpenAPI

PROGRAMMING PHILOSOPHIES

I believe...

  • ... in prototypes and experimentation.

    • You don't always need a prototype, but when you do it's important to be comfortable throwing away what you made. (The point was to learn, not to build.)
    • A prototype is admitting to the world "I don't know enough yet" - prototype-to-production is a trap, you should avoid it.
  • ... in solving problems earlier in the software lifecycle.

    • Sometimes you can turn a run-time problem into a compile-time problem, and in some cases you can even design away from a problem entirely.
    • Though, it's also important to know when not to do this (like when it solves a small issue, but brings in a lot of complexity to do so).
  • ... that good software is thoughtfully-crafted.

    • You should not just blindly follow a design - if the code is difficult to work with, it's usually because something isn't designed well.
    • Nobody's designs are perfect. You should learn about your problem as you develop it, and change your design if needed.
  • ... that test code is just as important as production code.

    • Tests grant us confidence that we haven't regressed systems when making changes. But carelessly authored tests can lead to brittleness and churn.
    • There's many things to test (though usually not enough time): unit tests, integration tests, fuzz tests, build times, run times, binary size, sanitization, etc.
  • ... that more documentation != better documentation.

    • If everything is documented, but nobody can find anything, that doesn't do anyone any good - there's a user experience to reading documentation.
    • The ideal documentation will get the reader to understand more than what is even stated, by clearly defining the specific points it aims to focus on.
  • ... that you should always back-up your assertions with data.

    • You'd be surprised how often code flows down the "this should never happen" codepath - the phrase "trust but verify" comes to mind.
    • If you don't have an automated way to watch things and prove them to yourself, then you're putting yourself at a huge risk.

PERSONAL INTERESTS

Here's a recent list of things I'm into (these are not complete lists, this is just for fun).

  • Hobbies

    • Often: Anime, Music (Listening), Japanese Language, Walks
    • Occasional: Drawing, Manga, Movies, Video Games
    • In the Past: Electrical Engineering, Music (Creating)
  • Anime

    • Random Favorites: Azumanga Daioh, Bocchi the Rock, Frieren, Ghost in the Shell, Katanagatari, Makeine, Odd Taxi, Madoka, Nichijou, Tatami Galaxy
    • Well-Liked (But Hard to Recommend): Flip Flappers, Mawaru Penguindrum, Neon Genesis Evangelion (not the recent remakes...), Serial Experiments Lain, Takopi's Original Sin
  • Video Games

    • Random Favorites: 13 Sentinels, CrossCode, Deltarune, Fatal Frame, Momodora, Phoenix Wright, Ray Crisis, Resident Evil, Triangle Strategy, Umamusume, Undertale, Xenoblade
    • Want to Play: Chrono Cross (yes, I haven't played it), Sea of Stars, Unicorn Overlord, Xenogears, Xenosaga