Starting our Journey
What is the purpose of this newsletter?
To be a wizard programmer!
How are we going to get there?
Who knows!
That's part of the fun!
There are so many topics to explore!
Before the internet existed, programmers built software that laid the foundation of computers
A handful of wizards bridged the gap between computing theory and application
A few examples:
John Romero and John Carmack laid the future for first person shooters
Linus Torvalds laid down Linux and Git that run 80% of the computing world
Steve Wozniak laid the foundation of Apple
They were builders with little more than papers, books, and passion
They coded with a terminal, their programming language, and grit
Each of them wizards of computers
Wizards like these are why we enjoy the software we do
In computer science, there's too much in one lifetime to learn
My goal is to become one of these wizards in my lifetime, even if that may never occur
That means I'm going to be doing this for a long time, so Ill be covering how to keep developing to avoid burning out and maintaining health.
To me, its about the journey, what I learn along the way, the friends I make, and the fun I have chasing that goal.
I don't know what Ill learn.
I don't know what the future holds.
But I do know I'm equipped with an insatiable curiosity and desire to learn.
So what will these letters be?
They will be part technical deep dives into topics I dive, usually head first and blind.
They will be part words of wisdom I pick up along the way, pieces of advice I receive or find that aids me in my quest.
They will be part reflection, never taking for granted where I came from no matter how far I go.
And it will be our journey.
My hope is that these letters not only serve me, but also serve you.
That you find value in reading them more than I find value in writing them.
That you gain insights you may not have anywhere else.
Thus, I must lay out my expectations.
I can only assume that if you're reading this, we have similar goals.
You, too, want to become one of these wizards.
You're, too, are curious how various software works.
You, too, want to peek behind the curtain and see how someone learns a new thing.
What can you expect from me, then?
I will explain my process. Every technical letter will include:
what I'm doing
why I'm doing it (context)
code snippets
explanations in the most accessible way possible
If there is jargon or acronyms, I will explain them as best as I can. No prior experience assumed.
Non-technical pieces will be useful. If I don't find it interesting and important, I wont write it.
When using references, you'll find them in the "further reading" section.
Every letter is open to improvement. I'm learning as I go.
So what will we build?
Let's build video games from nothing! Raycasters, raytracers, debuggers, game engines, the whole game development stack!
Let's explore how programming languages work, from simple input to compiling machine code!
Lets dive into retro game consoles using emulation and build games for them!
I have many more interests to dive into!
To name a few:
Compilers
Interpreters
Game development
Calculus
Discrete Math
Linear Algebra
Lambda Calculus
Learning how to learn
How to solve problems
At the moment, I'm working through compilers and interpreters.
My current project is OCrab, the Rust-to-OCaml transpiler that takes low level C bindings in Rust and generates OCaml low level C bindings!
(Letters on this coming soon!)
In any respect, thank you for joining the journey.
I write the letters, but you read them.
And because of that, we are in this together.
If you have questions, feedback, or you'd like to say "hi", send a message!
I will do my best to respond.
I excited to see what the future holds!
Glitchbyte