Happy New Year, Handmade Network! I hope you all had an amazing holiday season, and I hope you're all looking forward to 2022 as much as I am.
The Handmade movement had a huge year in 2021. The Handmade Seattle conference, hosted by former Handmade Network staff member Abner Coimbre, brought the community together for yet another time, even in the face of the many changing circumstances that 2021 held in store. We on the Handmade Network staff team hosted the Wheel Reinvention Jam, and we had a number of very well-done project submissions. Ben Visness and Asaf Gartner rewrote the entire Handmade Network website backend in preparation for some huge features that are slowly making their way onto the website.
This is, of course, only an incomplete list. The real list of all of the great things that happened for the Handmade movement in 2021 is not enumerable. But let's dig into these.
Abner Coimbre successfully hosted Handmade Seattle for a 3rd year in the face of consistently changing circumstances - local regulations for COVID-19, traveling restrictions for international Handmade community members, and many other things I don't know about or understand. Handmade Seattle, in 2021, hosted 25 different presentations, all being either talks, demos of Handmade projects, or podcast episodes. The conference happened both live in-person and also virtually.
I'm not exactly sure how he manages it, but with each year, Abner has produced a better conference, in the face of COVID-19 restrictions, all while staying independent without any corporate sponsorships. I had the privilege of attending in-person, and I was amazed with how smoothly everything went.
I'm here to tell you that the media - talk recordings, demo videos, podcast episodes - from Handmade Seattle 2021 is starting to roll out, so you can enjoy all of the content from the conference for free, even if you missed it originally. To check it out, go here.
As I mentioned, the Handmade Network staff hosted our "Wheel Reinvention Jam" back in October. This was like a game jam, but instead of being for games, it was all about taking existing "boring" software - the kind of stuff that we regularly depend on as users, like file explorers, word processors, and more - and innovating on it. To put it shortly, the jam was a huge success, and we got a number of amazing project entries.
We on the admin team also did a stream to show off some of our favorite projects. And then, something horrible happened: I lost the recording. Long story short, I downloaded the recording, and unknowingly permanently deleted it as I was cleaning off my desktop one day. In other words, I had a very important lessons about backing up important data on my machine.
Hope was, as far as I was concerned, lost.
But I was mistaken - hope is never lost in a community with a hero protecting it.
Martins Mozeiko, the resident programming wizard in the community, has an automated system set up that records stream VODs so he can enjoy them at his own pace after they air. He had a copy of the stream's recording!!!
So, I'm here to report that - because of Martins - you all have the ability to watch the Wheel Reinvention Jam recap stream. Here it is:
Ben and Asaf have been hard at work at the admin team's plan for projects on the Handmade Network website. We realized that the
#project-showcase channel on the Discord server was so popular because so many projects didn't fit the original model of projects on Handmade Network. These projects were smaller, sometimes not intended to be finished, were experimental and not well-established, but nevertheless demonstrated very great results that people love to see. We figured that this prevalent force in the community - of those who are working on such projects - should be reflected in the services we offer on the website.
Now, Handmade Network has two tiers of projects: Personal Projects, and Featured Projects. Personal Projects can be created by anyone, and do not require approval by the admin team. They give you a place to host media for your project.
Featured Projects are similar to the old Handmade Network website projects; they are like personal projects, but are upgraded with a number of features (forums, episode guide, etc.), and they are presented as being featured (and thus hand-picked by the admin team).
The most awesome part of all this comes with how media is managed for these projects. For a while now, we've had the Community Showcase section of the website - these are posts from the
#project-showcase Discord channel of people showing off work on their projects. We've upgraded this system to also allow associating some of those posts with projects (and other things) through tagging.
On each post, you can add tags:
Here is a screenshot of my awesome work on &hero for the &cooljam. Each word that follows a
& symbol refers to one of these tags. Each project gets one tag name, that it can use to pull in certain resources. And, other things can have tags too (like jam events), that can categorize posts in other ways.
Posts that are tagged will not only go to the regular Community Showcase section of the site, but they'll also be pulled onto their respective project pages (and, yes, a post can be tagged to multiple projects).
Ben is writing a more in-depth post about this. It'll be released shortly, so if you're looking for more details about how these new features work, you'll want to check that out when it's ready.
I am extremely excited for this new upgrade to the site's project features. Go and try it out!
I've just released a new podcast episode I did with community member Rudy Faile, who interviewed me about the current state of Handmade Network, all of the things in the Handmade movement in 2021, and where we are planning to go in 2022. Check it out here!
One final remark I want to make is announcing a temporary hiatus for myself on my side-projects, including Handmade Network. In short, I'm taking at least a few months for self-improvement, to focus on some very important personal matters. Thank you to all of those who have expressed support - I'll be back at some point during this year, and I will keep my finger on the pulse of the community, because I'm so excited for what is yet to come.
That's all for the news, for now. Here's to a prosperous 2022, and let's continue moving the ball forward!
Best wishes, Ryan
It's almost time for the Wheel Reinvention Jam! It's starting on the 27th, which is this coming Monday. Be sure to explore or post project ideas, register for the jam, and get all of your coffee ready. I'm so excited to see what you all cook up!
During the jam, we encourage sharing progress (and result) either on the Discord (we'll have a special channel set up for jam showcase content) or on the forums. If you end up participating on Discord, be sure to connect your Handmade Network account to your Discord account!
To get things kicked off before the jam, the Handmade Network staff (myself, Ben, and Asaf) will be joining the Zig Showtime show tomorrow. We'll be chatting with Loris Cro, who runs the show, about reinventing wheels, the jam, and all things Handmade. Be sure to tune in.
Shortly after, we'll be having a coffee chat in the Handmade Network Discord, as usual for Saturdays.
That's all for now. Looking forward to seeing you all during the jam!
For the past few months, Asaf and I have been working hard on rewriting the Handmade Network website - and as of today, we're pleased to announce that it is live, and you're using it right now!
The new site has been written from the ground-up in Go, replacing the old Python / Django codebase. The whole site should immediately feel snappier and more pleasant to use, but we've tried hard to keep all the features you know and love from the old site.
It's not all the same though. Here's one big new addition that we hope you'll like...
The old BBCode-based editor has been completely replaced with a new Markdown-based editor. It features real-time previews and all the features you'd expect from a Markdown editor, including GFM extensions and some features from Discord (like ||spoiler tags|| - always a favorite!).
However, if you are for some reason a BBCode diehard, that is still supported. You can freely mix BBCode and Markdown, and everything should just work.
In the near future, we're planning to add image uploads, so you can directly paste images into your posts without hosting them elsewhere. This has been a long-requested feature, and with this new codebase we're finally in a good place to tackle it.
With the new site released, we're in the perfect place to start working on lots of new features. Here's a few of the things we have coming up:
You may also notice that a couple features from the old site are in fact missing - the library, and the wiki.
The library will be ported soon, but had to be temporarily cut in order to make some of our other deadlines. When the library comes back, it will be better than ever, with new features that let you save your favorite articles for easy access later.
The wiki, on the other hand, is gone for good - but all the wonderful wiki content written by our community will have a new home. We're still working out the details, but rest assured that it will be back soon.
We really hope you like the new site. It feels great to get this project out into the world, and we're eager to hear what you think about it. If you have any feedback, feel free to leave it as comments on this post, or create new threads in the Site Feedback forum.
I started this project 1.5 years ago, as a side project "just to relax" at home (boring job and 3 small and active kids...). Also, visual projects are funnier than embedded software, which is my main work.
The streams of Casey and Jonathan resonate when they encourage "handmade" code. I indeed learned a lot on this project, from coding on Windows (I am used to Linux), what is really Unicode (and how Windows solved it with the double A & W API instead of UTF-8), how to load GL extensions, all the X11 fun, ptrace for context switches, macro fun and their compatibility on main compilers, ...
It took so long before reaching an acceptable quality for several reasons:
- when a project is private, full freedom is preserved: breaking compatibility, changing deeply base principles...
- good usability and easy interfaces takes time and iterations. Most part were rewritten several times before their actual state. And it is probably not finished.
- it started with having in mind the RAD telemetry demo than Jonathan Blow made in one of his stream, in order to profile another pet project.
And quickly, it got enriched with a lot of features that I would have liked to have for my past projects (tracking data, memory, context switch, locks..., be able to graph all of them under different forms) and in a context which would solve the typical problems when instrumenting (emphasis on compile time work especially for strings, be able to enable instrumentation per group at compile time) or developing (assertions, stack trace...). At the end, be able to reuse the instrumentation to build tests was the last brick to solve the now general goal of the tool: "improve software quality".
I cannot say that the project "pivoted" because it followed its track without really turning, the goal just broadened with time.
In its actual form, the tool (profiler, viewer, scripting module) is fully functional. It needs testers to get better, find bugs thanks to different stimulation, get feedbacks on how to smooth it (details matter...) and improve it little by little.
The Mu project is about making software accountable to the people it affects. Today nobody understands the big picture of what goes on inside our computers. We started out with abstractions we could drill into the details of, but over time have ended up with abstractions we never want to look inside. I want to go back to the old meaning of "abstraction," a computer that exposes its insides to curious observers on their own schedule, and stimulates curiosity by helping them to answer questions about it for themselves.
Over the last month I've wrapped up the core skeleton of the computer: a relatively user-friendly, high-level and safe language built out of a low-level and safe language, which in turn is built out of a low-level and unsafe notation for bare x86 machine code without an OS. The top-most level is interpreted and slow. Speeding it up is a non-goal; it's intended to be for prototyping, and designed to nudge people to reimplement programs one level down once they decide what they want. I hope that way to avoid the tower of Babel in mainstream software, with languages piled ever higher on other languages without regard to comprehension and runtime cost.
I'm undecided on where to take it next. I might try to build a mouse or network driver. Or get it running on native hardware. Both are far out of my comfort zone, and I'd love to get help on them. Another recent idea is an offline reader for http://internet-in-a-box.org/.
As a hobby, I've always wanted to make games and 15 years ago I really started studying what it takes to make a game. I'm not sure if commercial game engines were a thing back then, but the idea of using one to make a game didn't really cross my mind since I really wanted to know all the nuts and bolts that hold a game together. So, I started writing a "game" which was basically a render engine. That's when I started realizing that a game engine is much more than a graphics renderer, and that I actually liked the engine part more than creating the game. Since then I've been just writing game engines that are incrementally better than the previous ones. It's been a real learning journey that's still going on, which also benefitted my professional career as a software developer, simply because of the fact that as a game engine programmer I get to tackle almost all challenges in computer science.
After a while (and a lot of googling stuff, studying open-source game engines and going through StackOverflow), I thought it would be a cool idea to share everything I'd learned with others who're also interested in games and game engines. That's why I decided to make a video series that I'd have appreciated watching when I was starting to write my first engine, and that's how, about a year ago, The Game Engine Programming Series was born. 🙂
Instead of starting with a renderer right away, I decided to take my time and set up the infrastructure and the architecture of the engine and it took me almost a year to get to the point that I found would be a good time to start writing the renderer. This has been the subject of last months videos.
The project(s) drew inspiration from HMH, RayLib and olc::PixelGameEngine. I wanted something more minimal and hopefully simpler to get started with. That means no-brainer setup for both C and C++ with the same codebase and no dependencies.
By comparison, HMH does a ton right but was never meant to be 'minimalist' or reusable/customizable. olc::PixelGameEngine is C++ and uses OpenGL (also the API is not as simple as I would like). RayLib has simple C interface, but is C99 (so needs wrappers for C++) and uses OpenGL. It is also not very minimal - it has a lot of features built-in - so is more of a software stack.
So then, SlimApp is a platform-agnostic application/platform layer(s) for windowed application development. SlimEngine is just SlimApp extended with facilities for interactive 2D/3D application development.
Both come with example apps demonstrating their features with a heavily documented README. Both are available as either a single header file or a directory of headers (a "unity build" setup).
Both can be compiled as-is in either C or C++ with no dependencies (not even OpenGL). SlimApp doesn't use anything from any standard library. SlimEngine only uses the standard math header ('math.h'/'cmath.h') for sqrt(), pow() etc.
Bare-bone executables (on Windows) are ~13KB for SlimApp and ~17KB for SlimEngine.