I got interested in programming because I wanted to make a website. But as I learned more, my curiosity grew, and I wanted to understand how computers work on the inside. I started studying all kinds of things—watching lectures, reading books, and learning about the history of computers. I explored everything from how early processors worked to mechanical computers and punched cards. Understanding the history helped me see how computers evolved over time.

To really understand how computers work, I dived into topics like UNIX, timesharing, and how operating systems manage the resources that programs need to run. I learned about system calls, which are like special commands that let programs talk to the operating system and access things like memory and files.

After spending seven years coding in JavaScript and TypeScript and building websites, I decided to try something new: creating my own toy programming language. This is helping me understand how programming languages work and how they turn high-level code into the machine code that computers can run.

In today’s fast-paced tech world, tools like Language Server Protocol (LSP) and Tree-sitter rely heavily on low-level details like Abstract Syntax Trees (AST) and Concrete Syntax Trees (CST). As the number of programming languages continues to grow, understanding them at a deeper level is crucial. It’s not just about keeping up with new languages; it’s about choosing the right tool for the right job.