It’s been 7 months since the last post, and I don’t have the energy to write an actual post, so here we go

Theovim

I will make a separate post about it eventually, but here’s a short summary. My friends and I started to take the systems programming course, and our school SSH server was not kind to the use of VS Code with large projects like implementing malloc() and free(). It was not an issue for me though, as I simply copied over my Neovim configuration with full LSP support to the SSH server. My friend Jonathan was particularly interested in adopting the setup, and shortly after, I ended up moving my Neovim config to a separate repository, calling it “Theovim.” The project grew a little bit over time, and I believe I have around 20 users at the moment. It’s quite a different configuration from where it started, as I try to make it as polished as possible. It doesn’t mean it has a bunch of plugins (in fact, it only has 30 including all LSP-related ones), it means it tried to be the best of offering the “Vim way” of getting things done. I’m very proud of Theovim, and it honestly is my dream Neovim setup. Again, I will make a separate post about how it started, what are the philosophies behind it, and why is it special to me.

Command Line Utilities

Some command line utilities that are changing my life.

  • Emacs: I’ve moved to Doom Emacs after giving up managing my own configuration. It makes the experience of using Org Mode substantially better, but I am still not convinced why it is a better text editor than Neovim. Maybe I just don’t like Lisps. I absolutely love Org Mode though, and my life would be lost if Org Agenda isn’t there to tell me what to do
  • tmux: I’ve always used tmux, but I never fully utilized it to its full potential. Now Kitty terminal emulator with tmux open is the first thing I open on the system startup. I changed up a lot of keybindings to my liking, made a custom-made status bar, and added my own built-in help documentation using display-popup. I now cannot live without tmux. It’s essentially a tiling WM for terminal
  • lf: I’ve used ranger before, but I did not like how it was configured out of the box as well as its dependence on Python. lf with a very minimal out-of-the-box experience and shell script integration makes it a perfect file manager for me. I don’t remember the last time I opened up a GUI file manager
  • qutebrowser: Ever since I started using tiling WM, the fact that the web browser requires me to take my hands off of the keyboard bothered me. So a browser with Vim keybindings and configuration through Python code? Sign me up
  • Zsh: Taking systems programming definitely made me more knowledgeable in shell scripting. I made a lot of custom functions such as trash (I know trash-cli is a good utility, but I do not feel a need for another binary when I can just have it in my .zshrc) and theoshell_plug to install Zsh plugins without a need for oh-my-zsh or other plugin managers

Linux Journey

I sold my ThinkPad T460s, regretted it, and bought X270. It came with an i5, 8GB of RAM, 512GB HDD, no internal battery, a 9-cell external battery, and a 1080p display. It was in fantastic condition, there was not even a single wear on the keyboard. I upgraded this thing with a new thermal paste, 16GB of RAM, 1TB Crucial SATA SSD, and an internal battery. I installed Fedora i3 Spin (400MB of RAM usage on the startup, come on, that’s impressive), and I absolutely love it. I use it daily alongside of my M1 Macbook Air, and X270 is shifting me toward a premium Linux laptop (Framework maybe?) for my next purchase.

School

Going pretty well actually.

CS-wise, I took DSA and computer architecture last semester. Computer architecture was horrible, I think I lost all my interest in hardware. It’s my first B in college (I know, wild). DSA was an interesting course, but the boring projects did not live up to my expectation. This semester, I’m taking systems programming and databases. Systems programming is actually really fun! I implemented my own malloc() and free() early this year, and right now I’m working on implementing my own shell interpreter. Really really fun and cool stuff. malloc() probably is the coolest project I’ve ever done, simply because I know that it’s something I use every second of computing. Databases are okay… I expected it to be boring, but I didn’t know it would be this boring. At least I now know some SQL and what databases are.

Philosophy-wise, it’s also going well. As a baby philosophy major, I took an online intro philosophy course and History Of Medieval Philosophy last semester. The intro course was a very easy yet enjoyable course, and I still reference the professor’s well-organized review sheets. Medieval philosophy probably was my top 3 class at Purdue (kind of a low bar to clear though). The professor, who is a new post-doc researcher here, was a very logical person (even though his primary research area is in medieval philosophy/philosophy of mind). He had to make logical deductions for every argument presented in the class, including Anselm’s Ontological argument, Avicenna’s Flying Man, Boethius’s arguments on compatibility between God’s foreknowledge and Free Will, etc. And it was a groundbreaking experience for me in a positive way. Philosophy is not about difficult and lengthy writing, it’s about presenting arguments as concisely as possible. It also helped me become better at philosophical writing, as I started to ditch old “high school habits” and write more straightforwardly to present my arguments. Overall, I loved the class. This semester, I am taking History Of Modern Philosophy and Mathematical Logic. Mathematical logic is really fun, it’s the first grad level course I take, and it’s been a very interesting class. Modern philosophy is… Meh. I will defer the judgment to the end of the semester.

Others

I started to listen to Fleetwood Mac and Lana Del Rey, and they are both really good. Do I finally have something to say instead of “uh, I just listen to various kinds of music” when someone asks who’s my favorite artist?