Skills & Experience

Languages


English

Native speaker, completely fluent. If I didn't like coding, maybe I'd be a writer.

Français

I was in a French Immersion program for two years, and I took the language throughout highschool. Some of my friends come from Québec. I'm not fluent by any means, but I can understand basic sentences with difficulty. I'm actively working on improving my grasp of the language by following francophones on social media and listening to French podcasts.

Rust

This is the newest language I've taught myself. I've grown to love the strong static type system, and the removal of footguns from C++. Rust's guarantees about memory safety and immutability are powerful, and not replicated in any comparably low-level language.

Python

Python is probably my first (programming) language. I taught myself the basics from various websites when I was in grade 6, and used it for various single-file small projects, such as a randomized number-guessing game. I don't believe any of these programs still exist. I continued to use it throughout elementary and highschool, building my skills and experience with small, self-directed passion projects. The concise syntax, freedom from boilerplate, and intuitive English-like language structure are among the reasons that it's my preferred language to this day. I've built GUI applications with Tkinter and webapps with Flask. I've used it for my Chemistry classes as an overpowered scientific calculator, and in my Linear Algebra classes as a substitute for MATLAB. When I have an assignment in another language, like C++ or Java, I will sometimes rewrite the program in Python, thereby cutting the LoC in half.

C++

I first used C++ when I got an Osepp Arduino Uno as a gift, sometime around grade 7. Considering how little I knew about circuit design and electrical engineering, it's surprising that the little Uno still works perfectly to this day. I've definitely shorted it and mismatched voltages at least a couple of times. My largest Arduino C++ project was the IoT smart pet feeder that my team and I built for a class project. C++ seems to be the lingua franca of the computer engineering department at SFU, so I've taken multiple classes in the language. Some are visible on my {{config.extra.github}}, while others cannot be public.

Java

Java is another contender for my first programming language. I was an avid Minecraft player in elementary school, and I created a few simple mods for the game. It's written in Java, so to write mods I had to decompile the source with Eclipse and make changes to the .jar files. I then abandoned the language until my Data Structures class was centred around it. This is the one language that I don't use VS Code for, opting instead for IntelliJ IDEA in light of its decompilation and testing coverage abilities.

VHDL

Hardware design and digital logic was one of my favourite courses yet. Maybe I liked how I was writing code that was close to bare metal than assembly, or maybe it's that I already solve logical puzzles quite similar to common hardware problems in my free time. The final project for this course was to create an ML tensor core, which was a joy to build. My ENSC 252 project repo is private for academic honesty, as the instructors of some courses are concerned about future students copying work from GitHub, but as long as you aren't a student or Chegg, I can give access to anyone that is interested.

MATLAB

MATLAB was the required language for ENSC 180, where we used its matrix analysis and calculation tools, along with some of the toolkits, including image processing. Unfortunately, my professor has tainted my opinions on MATLAB. I can see the power of the environment, and if I was working in one of the fields that MATLAB creates toolboxes for, I'm sure I'd love it. However, my passion projects aren't written in MATLAB for a reason.

HTML and CSS

Do these count as languages? I suppose they're Turing complete, but it doesn't feel right to describe them as programming languages. I'm functional in these languages, and can write a website (obviously, or you wouldn't be here), but I wouldn't consider myself an expert by a long shot. I first wrote a website when I was experimenting with the Flask python web-server, and I've been learning on my own ever since. I follow intelligent, experienced web developers on social media and read their blogs, such as CSS Tricks. Learn from the best.

JavaScript

This is a more recently acquired language. I use it for basic interactivity on this website (e.g. the theme button in the header). In an effort to improve my skills with the language, I'm working on a video game using the Phaser.js game design framework. I'm intrigued by React and Next.js. If you check back later, maybe there will be some more of that hosted here.

Haskell

This language, and the functional programming paradign in general, are very enticing to me. I have extremely limited experience with Haskell, but I've used concepts from functional programming in Python and C++ projects before, and it always results in clean, intuitive code. Monads are scary, but maybe one day I'll get around to properly learning it.

Lisp

Whenever I look for information on Lisp, I feel like I'm browsing the new-age or self-help sections of my local used bookstore. The metaprogramming features of this language seem very powerful, but I haven't explored this language much.

LaTeX

In a similar vein to HTML, this doesn't really count as a language. I've been meaning to learn how to use it for academic papers and note-taking in math class, but have been stymied by incompatibilities between WSL and the VS Code LaTeX extension. If I ever manage to get a local development environment working, I'll update this section with a MathJAX rendered LaTeX logo, instead of the bootleg version seen here.

Dart

I've experimented with Flutter in the past, and the idea of creating a cross-platform native app from a single codebase is quite interesting.

Operating Systems


Windows

This is the typical OS that I use day-to-day. I run the latest beta Insiders build, and keep it up to date. I dislike it for development, so whenever possible I work with my code using Visual Studio Code running out of Ubuntu on WSL2.

Linux

My software development work is done primarily out of an Arch Linux VM under WSL2. I wish I could use Linux as my primary OS. I love the customizability, and unified package management, and the no-safety-rails approach to user experience. I've installed Arch, struggled with GRUB modifications on an ornery netbook with a 64-bit CPU that can only boot 32-bit UEFIs, and broken more installations than I can remember. I tried it for real for a few weeks, with Mint on an old laptop and Manjaro on my main desktop, but it doesn't work for a few key features. Whether it's my ENSC courses requiring Quartus or Visio, my projects using Ableton and Illustrator, or my hobbies requiring DX12, there's always been some program that flat-out doesn't run on Linux. 2021 may be the year of the Linux Marstop, but $NEXT_YEAR will always be the year of the Linux desktop.

FreeBSD

The following opinion is born of trauma and does not represent the views of myself or my employer.

I really dislike FreeBSD. My main server runs it, and any time I have to interact with FreeBSD directly, I die a little inside. The ports system is backwards compared to apt or pacman, and pkg is hardly better. Jails without vim installed was a particularly frustrating pain point until I realized I could just use vi. It probably didn't help that I spent a weekend debugging the server remotely, over an ssh connection with multi-second latency.

macOS

I don't actively use macOS, but, as the resident unpaid tech support for my family, I'm required to keep at least somewhat familiar with the operating system. If I needed a regular laptop and had the budget for one, I'd probably get an M1 Macbook Air. However, my main usecases for computers involve either multiple monitors (desktop) or touchscreen writing/drawing (convertible laptop), neither of which are happy paths for Macs.

Android

My phone runs Android 11, and I've written a couple apps in Java and Kotlin.