Hi! My name is Theo, and I do… things.

my-portrait
Caught you stalking me in 4k

Academics

I am an undergraduate student at Purdue University, majoring in computer science and philosophy.

  • Academic Interests (CS): CS theories, systems programming, programming language, operating systems, CS education
  • Academic Interests (Phil): Philosophy of science, metalogic, set theory, metaphysics
  • 3 - 5 favorite classes each year, bold are my absolute favorites:
    • Undergrad year 1: CS180 (Java OOP), CS182 (discrete math), CS240 (C), MA351 (linear algebra)
    • Undergrad year 2: CS251 (DSA), PHIL302 (hist of medieval phil), CS252 (systems programming), PHIL303 (hist of modern phil), PHIL553 (mathematical logic)

I am a member of Undergraduate Student Board (USB) for the CS department.

Career

My Résumé ⧉

I am interested in CS education, CS research, and software engineering.

From the second semester of my freshman year to the following summer, I worked as an undergraduate teaching assistant for CS18000: Problem Solving and Objected-Oriented Programming. I helped students with topics ranging from fundamental programming skills to Java network I/O and GUI. I was recognized for achieving the third-highest reputation score on Campuswire (student Q&A forum) in course history.

I worked as a course content developer for CS180 during the summer of my freshman year. Using JUnit, I designed and developed coding assignments and auto-graders for exception handling and file I/O.

In the winter of 2022, I worked as a course content developer for CS18200: Foundations of Computer Science. I was in charge of designing a new homework template using LaTeX. I also developed and tested assignment questions for first-order logic, discrete probabilities, and runtime analysis.

Throughout the 2022 - 2023 school year, I worked as an instructor for CS19300: Tools. CS193 is an awesome class managed by the CS193 initiative in USB. I delivered weekly lectures on fundamental development tools, including Git, Unix shell commands, and Vim, to first-year CS, DS, and AI students. I managed 437 students across three sections, and it was a great experience communicating with freshmen and being in charge of a large technical course.

Programming Languages

            C++
         @-------@
 Python  |   @   |
@-------@|   |   |
|   @   ||   |   |   Lua
|   |   ||   |   |@-------@
|   |   ||   |   ||   @   |
 >My PL Preference Podium<
https://codegolf.stackexchange.com/questions/180187/build-ascii-podiums

List of programming languages I am proficient in, ordered by the approximate lines of code I have written:

  • Java: working as a TA and a content dev for a Java OOP class means I have done almost two years of Java homework. Java is the first language I have ever learned, I loved it passionately for some time, and now we hate each other.
  • LaTeX: All my academic writings (homework, review materials, etc.) are in LaTeX. And before you say it, yes it is Turing complete:
    % https://stackoverflow.com/a/24148586
    \def\K#1#2{#2}
    \def\S#1#2#3{#1#3{#2#3}}
    
  • C++/C: I have done a number of systems programming projects in C and C++, both in and out of programming classes. C++ is my favorite language for writing algorithmic question answers.
  • Python: Python is a very versatile language. My use case includes: a script in my tiling WM to get current Spotify music, data engineering, algorithmic questions, and most other tools I make
  • Lua: My Neovim config is 2000+ lines of Lua. I also used it when configuring my terminal emulator (Wezterm) and AwesomeWM. Right, I use Lua for writing pseudocode because of its simple and concise syntax.
  • Shell: I try to make most of my scripts POSIX compliant, but I use a lot of Bash-only features without even noticing. My main interactive shell is Fish (and sometimes Zsh), so I script in them too.
  • Vimscript: Used for my Vim config and custom colorscheme before I migrated to Neovim + Lua.
  • Emacs Lisp: Lisp is weird.
  • Others: SQL, Lex and Yacc for a custom shell project, HTML & CSS for you know what, Javascript to make my life miserable.

Nerdy Hobbies

Checkout My Projects section of the website.

I love (neo)vim. Neovim is my IDE, text editor, file manager, and more. As all Vimmers do, I have spent and will spend countless hours configuring Neovim. Check out my Neovim config: Theovim. My life goal is to take a shower in Vim one day.

I enjoy using Linux and exploring the nooks and crannies of the operating system. Operating systems have always fascinated me, even from a young age. When I was in middle school, my biggest hobby was collecting ISO images of old operating systems (shout out to WinWorld) and installing them in virtual machines. I use Fedora, btw.

Did you just ask what DE/WM I use in Fedora? Thank you for asking! I love tiling window managers and have spent lots of time making them look pretty. Q: Does spending more time finding the perfect gap margins between windows make me more productive? A: … Yes. Okay, in my defense, tiling WM is essential for my workflow.

  • In Linux, I have tried i3, Sway, AwesomeWM, XMonad, and extensions for GNOME before I settled with Sway. Check out my Dracula-themed i3 and Sway configuration: Haunted Tiles.
  • In macOS, I juggle between my Yabai + Skhd + Sketchybar setup and more “stock” solutions like Rectangle and Amethyst. You can find the configuration for my macOS in my dotfiles repository.

I also enjoy configuring other open-source CLI utilities. My favorites include lf, tmux, Wezterm, Fish/Zsh, Emacs, … You can find all my config files in my dotfiles repository.

I enjoy solving competitive programming questions, although I am really slow and bad at it.

I love Python one-liner solutions when solving Leetcode questions, and consequently, I enjoy Code Golf.

I love writing argumentative essays in/out of my philosophy classes. I swear “argumentative essays” is not an euphemism for an online argument.

Because I moved frequently during my teenage and 20s, I have never built or owned a PC. Instead, I developed an interest in watching YouTube reviews for smartphones, laptops, and other mobile devices. Snazzy Labs and MrMobile are my favorite YouTubers in this field.

Hobbies and Interests

I touch grass sometimes.

I love taking photos, portraits in particular. My camera is a Canon EOS M50 with EF-M 22m f2 pancake lens. One day, I will share my photos online.

I collect, modify, and make mechanical watches (mainly Seiko or microbrands with Seiko NH movements).

I have been writing a journal/diary (I call it “Daily Writing”, written using Vimwiki) daily since September 2021. It is a safe place to dump my emotions.

I have been on a journey to find the perfect productivity system. I settled on Emacs with Org-mode, utilizing Org-agenda as a to-do list and Org-roam as a knowledge database.

I enjoy calisthenics and jogging in the morning. I also lift from time to time!

I love cold showers and meditation. I don’t really do them for any self-improvement reason, I do them because they are refreshing and make me feel better.

I like Haribo and tried all the variations released in North America (at least from 2015 to 2023).

Salmon, I love salmon.

My other hobbies and interests are:

  • Minimalism & “Buy It For Life” items
  • Vintage fashion & thrifting
  • Cleaning & Organization
  • Environmentalism
  • Driving, car, and Formula 1 (yeah, maybe not the best combo with the above bullet point)
  • Milk tea
  • Turquoise color (or what I believe to be turquoise – I have a pretty severe color blindness)
  • Vim, again, because it is a lifestyle