Programming

2025-09-03

When I was an 18-year old freshman and first starting to venture into programming, I dabbled in all sorts of things without knowing what I was doing. The world of programming seemed so vast, arcane, intimidating, and exciting. Learning how to program was so confusing to me. How did one start? What was the best first language to learn? The number of choices were overwhelming.

I dabbled in some HTML and picked up K&R but quickly gave up. Nothing really stuck. Eventually at the library I discovered Java Programming: from the Beginning by K.N. King which put programming into the most understandable language I had found at the time.

Java Programming: From the Beginning finally allowed me to dive deep into programming. Function, method, class, type, null, void. Before I even knew what the words meant, just the sounds of them were beautiful, evoking sci-fi or mathematical images in my mind. I still love those sounds. Words that introduced concepts which expanded my mind into delightfully abstract vistas.

Importantly, Java Programming: From the Beginning stressed the importance of actually programming to learn programming, as opposed to just reading about it. This was not obvious to me at the time. The book contained exercises at the end of each chapter and I did them all; I hated school – this was the first time I was ever excited to learn something from a book.

I remember building my first non-trivial (to me) program at the time: a Java program that would ask the user for a number, ask for a second number, ask for a mathematical operation (+, -, *, /) and then output the result of <number 1> <operator> <number 2>. I thought this was so cool. I excitedly showed my friends, naively thinking they would also be impressed. They looked back at me with raised eyebrows and confusion on their faces.

I talked to my college advisor early on about what my major would be. She told me that Computer Science was about building computers, which I wasn’t interested in. I told her I just wanted to program. She told me to major in Computer & Information Systems, which was (I later found out) a less technical, more business-focused major. I now realize that she was confused about the difference between Computer Science and Computer Engineering.

Near the end of my sophomore year, I met a senior Computer Science student who offhandedly mentioned his homework for Compilers class. I stopped in my tracks. “You’re building a compiler!?” It intrigued me on the spot. I want to do that, I thought, and immediately switched my major to Computer Science, at the cost of staying in school for an extra year.

When I remember this 18-year old Jake, first beginning to dip his toes into the esoteric world of computing, a couple of emotions come to mind: curiosity, awe, intimidation, but foremost among all of them is excitement. I was so excited to learn about how computers worked and what my life would look like in ten years time, what interesting work I’d be doing. Would I be working on a programming language, an RPG, scientific simulations?

I’m 32 now. I don’t know what younger Jake would think of my work today, but if he watched me work for an hour he’d likely be disappointed. I don’t hate my job as a full-stack engineer; I do find it interesting at times. But I do regret never pursuing my interests of game development and programming languages & compilers more.

It’s been a while since I’ve felt that sort of awe and excitement from programming. But every now and then I encounter someone who makes me feel excited again: people like 100 Rabbits, John Carmack, Jonathan Blow, Linus Lee, and Julia Evans.

I want to work on more interesting projects, like building things from scratch just for the fun of it. The first thing I’m going to build is a web server to host this blog. I hope to write about it when I’m done.