Goals for 2022

Originally written: January 1st, 2022

How did I fare resolving my Goals for 2021? I learned a bit of Rust, TypeScript and Lisp (through Racket). I have greatly improved my Vim abilities (cf. Vim Tips), from reading through the Vim Tips Wiki and the Practical Vim book.

That being said, I didn't complete a lot of tasks on my list, such as developing games, a chess engine, a SMT solver, although I didn't expect to complete all of my tasks. Some I still want to do -- such as building a bootstrapping compiler -- but some I don't find interesting anymore. In any case, here is my ambitious list for 2022.

Computer Networks

Seeing the recent outage of Facebook services, I want to learn more about networks, which I know almost nothing of. Peer-to-peer connections, IP addresses, DNS, BGP, etc. -- how does the internet work?

Arduino

One of the most fun I ever had was building a CPU by FPGA programming. I want to do an Arduino project, where I forcibly put myself in constrained conditions where I have to think about problems I rarely ever have to, such as space complexity. The catch is that I don't really see any Arduino projects that entice me, but I'll try to find one.

Mobile Development

I want to try my hands at mobile development! Whether that would entail React Native, Flutter, Kotlin, Swift, or any combination of the above, I want to create an app.

Bootstrapping Compiler

My most serious project of all the ones listed above. I want to design and implement a language, and write a compiler for itself in itself.

I don't even expect to complete this project within 2022, even if I start it next month. Current plan is to target LLVM, and have the initial compiler written in Haskell, and the runtime in Rust.

I currently have an idea for a language I've piped up, in part from frustrations I've had learning Rust. It will be a high-level, general-purpose, statically typed, imperative, functional, and garbage-collected language. It will owe majorly to Rust's idiom of "immutability by default", but automate memory management via garbage collection.

Live Inside the Terminal

I want to live inside the terminal. I want to set aside a laptop to not have X installed, and only boot into terminal. Use only tmux and vim, maybe dashes of emacs here and there. This will allow me not to be distracted with many things on the internet that derail me of my goals, which I have so little of life for.

PowerPoint

Often times, it's necessary to spread information and explain to others. Still, many presentations are given with a visual aid. Just like I learned how to use Vim, I want to master a tool that I leverage to its fullest extent while saving the time I spend on communication.