Hello Dear Readers!
We've hinted about our educational push since the year started, and it's time to discuss it openly. Your comments are always useful and we hope you encourage everyone involved!
Handmade Education (Overview)
If you haven't heard the recent audio podcast discussing Handmade's role on education, check it out here. These lessons are meant to be centralized, comprehensive, and cross-referenced enough for readers to go up and down different abstraction layers.
The idea to be unafraid to go up an down that ladder of knowledge is at the core of Handmade. For example, a command line tools lesson might encourage the reader to see how to implement grep themselves, by referencing another handmade lesson. Indeed, any programming concept that is hand-waved away could, say, have some Wikipedia-style notation saying "lower-level lesson needed."
Finally, these lessons are not some generic tutorials; they will have the imprint and personality of a passionate author, just like the caring software projects that reside here.
Handmade's First Batch of Lessons
Intro to Programming through C
Author: Allen Webster
Allen 4coding Webster takes on a difficult task--teach beginners how to program their computers, using C as their first language. This can potentially have a profound impact on how a programmer appreciates / understands their craft for years. I'm sure he's not stressing over it though.
Intro to Python
Author: William Bundy
Much like Allen, Bundy has an important role teaching beginning programmers how to program computers, in this case with the Python language. Python is famous for allowing rapid application development, as well as an easy-to-pick-up scripting / glue language to connect existing software components together. Our author has formally been a teacher before with vast programming experience, and his introduction through Python will be as illuminating as the rest.
Intro to Numerical Computation
Author: Demetri Spanos
Numerical computation covers a broad range of topics such as understanding and dealing with sources of error, data fitting, and ordinary differential equations. To start things off with enthusiasm, Demetri will be teaching us how to create a face-detection program without the use of popular libraries like OpenCV (which is admittedly more practical). Instead, he'll be working from the ground-up using C, and using raw RGB values as our starting point. Intense!
Building an 8-bit breadboard computer
Author: Ben Eater
Ben Eater designed his own 8-bit computer, and decided to do something interesting. He wrote a Fibonacci program in C, and compiled it to the assembly instructions needed to run on his Mac. He then explained which instructions came out of which statements from the original source. Going a step further, Ben translated the assembly to his own 8-bit machine language, explaining the Instruction Set Architecture (ISA) differences along the way.
The reaction from the YouTube community was such that he's undertaken a series of videos to show eager users how to build their own 8-bit computer on a breadboard. The series is still ongoing. With his permission, we will be taking his videos and making them into a proper project like Handmade Hero here on the network--with annotations, threads, and summaries along the way.
Intro to Unix Command Line Tools
Author: Abner Coimbre
A staple in the software development industry is the command-line interface (CLI). I started programming on Linux, using nothing but a terminal emulator and C. My work at NASA is done purely from a terminal (with some rare exceptions). Being able to explore an operating system through commands is a liberating experience, and it's still the lingua franca for any advanced configuration. It also opens up a pathway to understanding what is out there without a graphical user interface limiting what you can do.
I suspect the CLI will be a subject of many lessons here in Handmade, but I'll provide a general introduction for those unfamiliar to it.
Writing a Platform Layer
Author: Jeroen van Rijn (Kelimion)
Casey Muratori is one of the developers who has popularized the idea of creating your own
platform layers. We'd like to provide a written lesson on how to approach making your own layer for your software projects, and the website's lead dev Jeroen is more than up for
Author: Martins Mozeiko
We all know and love the guide on how to remove the C Runtime on Windows, by Martins Mozeiko. We'd like to provide a proper lesson on what the C Runtime is, its importance and why it exists, and why it sometimes isn't desired on a project. Then, we'll show how to remove it from your life and have as barebones a software project as you can ever imagine.
Peer Review Process
I've developed a set of guidelines to peer review the lessons, which I could share once they've been ratified by the educators. We have great members such as Ginger Bill, Vassvik, and Mattias Gustavsson who are chatting regularly with the authors and providing insight as we develop the lessons.
If you are interested in peer reviewing, or maybe even become an educator yourself for Handmade, shoot me an e-mail [email protected].
Handmade Wiki System
Last but perhaps most important of all is version 2.0 of the website, which is underway. The team will be developing the wiki system necessary for these lessons to exist. We're moving from bbcode to markdown before the wiki comes to life. Each software project will also benefit from this because they may use the wiki on their own page for FAQ, documentation, and the like.
You may wonder when these lessons will be done. The authors and I will be meeting every other Sunday to discuss progress, and some material will necessarily be finished before others (based on author's free time and the level of complexity inherent in the lesson). We do, however, plan to have all our planned lessons ready this very year. Let's encourage, support, and extend a helping hand to our authors! I hope you find this roadmap attractive, but your critical feedback is welcome.