This post has been co-authored by Abner Coimbre and Ben Visness.
On November 17, 2014, Casey Muratori went live with the first episode of Handmade Hero. The show was immediately electrifying: a game industry veteran sharing his knowledge with no coddling and no compromises. But Handmade Hero gave us more than just technical knowledge—it gave us an ethos for how to program.
10 years later, it’s clear that Handmade Hero was more than just a show—it started a movement. The Handmade community has grown to encompass thousands of people sharing their knowledge on Discord, attending conferences and meetups, shipping apps, and working to fix the mess that is modern software. In a world where most programming communities are built around a particular language or paradigm, the Handmade community is an anomaly, a place where brilliant programmers of all disciplines gather to help each other make truly great software.
This past July, we spent a week at Ben’s family cabin to reflect on the past ten years of Handmade. The key question: What should we encourage ourselves, and the community, to do for another ten?
First, we should review where we are now. For better or for worse, the Handmade community is under the stewardship of three separate entities:
At the time of writing, Handmade Hero is paused. Casey will share further updates down the line about whether he will continue the series or introduce a new one that better meets the educational needs of his current audience.
But the Handmade Network and Handmade Cities march on. The Handmade Network now runs three unique programming jams per year, has a thriving online community, and runs Unwind as a way of sharing the community’s knowledge. Handmade Cities has expanded to both Boston and Seattle, supports meetups across the world, and now hosts coworking groups and hangouts as well.
These are all amazing developments, but we don’t want to stop there. We want to take the Handmade community to the next level and really make a dent in the software industry, as has been our mission from the start. How do we achieve that? What can we do to scale up the Handmade movement and its impact in the world of software?
Our overarching goal is simple: we want Handmade programmers, and the software they write, to be successful. Straightforward enough. But what’s holding Handmade programmers back from that today, and what can we actually do to help them?
First we need to understand who Handmade programmers really are.
The boat ride up at the cabin yielded our first main conclusion: there are multiple kinds of Handmade programmers, each with different needs.
We’ve had ten years to observe and work alongside dozens, if not hundreds, of incredibly competent programmers. As we reflected on the best of the community, we noticed that they seem to fall into three major archetypes, which we are dubbing:
The Entrepreneur is someone who wants to ship Handmade software. These are programmers like Vjekoslav (creator of File Pilot), Wassimulator (creator of Cactus Image Viewer), or Nakst (creator of the Essence operating system). Their goal is to build the kind of software they know computers are capable of, and they are usually driven by the awful state of software today and motivated to create something better.
The Researcher is someone who wants to do ambitious work and share what they learn with the rest of the world, but their goal isn’t necessarily to make a product. Instead their goal is to dig deep into systems, try new ideas, and share what they learn with the rest of the world. We have a few programmers that fit this mold, such as Allen Webster, creator of Mr. 4th Lab, and BYP, who is always down some kind of interesting rabbit hole.
The Craftsperson is someone who just loves the work of engineering. Their love of their craft gives them a wide breadth of knowledge and experience, and they are less distracted by shiny new ideas and tend to be extremely productive as a result. We have many incredible craftspeople in the community, such as Reuben Dunnington (who contributed an entire libc implementation to Orca), and Skytrias, who has contributed large amounts of code to both the Odin and Orca projects.
These are broad categories and there are many community members who blur the lines. But we think these categories nonetheless describe most of the people in the Handmade community, and they inform what we can do to help them.
So how do we support Handmade programmers? Each archetype has a different set of needs:
There are, obviously, a lot of different needs here. We may not be able to achieve them all right away, but our overall vision for the future of Handmade is to fulfill these needs for the community.
Those are the tangible needs, but before going further, we should actually cover programmers’ emotional needs as well. It may sound strange, but this is actually an issue of growing importance for the community. (This realization came after some post-boat-ride Chocovine.)
At the heart of the issue is an awakening that nearly all Handmade programmers experience. Abner experienced it when he took his job at NASA. Ben experienced it when he read Casey’s article about compression-oriented programming. There are hundreds of Handmade programmers with a similar story, where they have a realization, an awakening, about what programming really is.
We started out as children writing programs for fun. We loved programming and loved making computers do amazing things. But then we went to school, and the joy of programming was slowly drained away. We were taught that it was foolish to write programs yourself, and that you should instead use the library or the game engine that someone smarter had written. We were taught about inheritance hierarchies and design patterns and hundreds of other useless concepts that obscure what the program is actually doing. And when we asked “why”, we were again told that it’s just how things work. Trust the experts. This is how software is made.
Then we found Handmade. We discovered that programming could be fun again. We discovered that there were programmers out there who cared about their craft. We discovered that all the fluff we were taught in school was only making things worse, and that if we instead learned how computers actually worked, a whole new world of programming would open up for us.
The obvious corollary, though, is that the software industry is a disaster. It seems too absurd to be true—surely there must be a good reason why so many programmers install is-number from npm. Surely there must be a reason for a to-do list to use 500MB of memory. Surely so many smart programmers couldn’t be wrong! And yet they are.
Ten years into their programming journey, many Handmade programmers face a crisis. They have grown so much as programmers, and learned so much about how things work, that they can’t stomach working in the industry any more. The thought of installing hundreds of dependencies and slapping together a React app is too much to bear. The money may be good, but if the work isn’t fulfilling, they can’t do it.
The need to fix the software industry is clearer than ever. It’s not enough to just show programmers the way. We need to change the status quo.
How does one change the status quo? The only way is to fill the software industry with the kind of software we want to see.
To that end, the Handmade Network team is in the process of creating the Handmade Software Foundation, a 501(c)(6) nonprofit organization whose goal is to sustain the development of Handmade software and Handmade programmers. The needs of entrepreneurs, researchers, and craftspeople are varied, but we think we can make a big impact with just a few key people. One designer can offer their services to many entrepreneurs’ Handmade products. One “project manager” can meet regularly with the authors of official foundation projects, and one writer can help with a variety of blog posts, documentation sites, and grant proposals. And foundation projects can be an amazing source of work for the Handmade craftspeople who are looking for meaningful work. It will take some time to get going, but we think there’s huge potential as an “incubator” of sorts for all kinds of Handmade projects.
Meanwhile, Handmade Cities is all about growing the in-person events, with a focus on connecting programming in real life. We host two main conferences: Handmade Boston in the summer for masterclasses and Handmade Seattle in the fall, which is our flagship event with talks, demos and even a job fair. We also run monthly meetups around the world with trusted hosts, plus bi-weekly co-working sessions and weekly hangouts. All of this builds on the idea that real change in the software world comes from in-person connections with like-minded people.
Over the years, Handmade events have proven to find people new jobs, co-founders, lifelong friends, and even romantic partners. Our conferences are an anchor to the Handmade community and a platform for pushing forward programming projects.
The Handmade Software Foundation is still getting off the ground, and the process will take a fair amount longer. The Handmade Network team already spent a year waiting for the IRS to review a previous application, only for it to be rejected, and the entire process to start over. The end result will be worth it, but these things unfortunately take time. In the meantime, we encourage you to sign up for the email newsletter, and to start participating in the community. We look forward to scaling up Foundation activities in the coming years, and if you find this exciting, please feel free to ping Ben on Discord (bvisness) or send him an email at [email protected].
Handmade Cities, however, is already an active company run by Abner. All Handmade events are 100% indie, meaning Abner doesn’t take any sponsorship deals: he is funded by individuals like yourself. Organizing is his full-time career for the last couple of years which pays significantly less than any traditional programming job, so the best way to support Abner is throwing five bucks his way or getting tickets for the conferences. If you need to get a hold of Abner, ping him on Discord (abnercoimbre) or send him an email at [email protected].
The first 10 years of Handmade have had more of an impact on our lives than we ever could have imagined. We’re both so proud of everything the community has already accomplished, how many people it’s impacted, and the software it has produced. We are all better programmers, and better people, because Casey decided back in 2014 to share his knowledge and his ethos with the world.
We couldn’t be more excited about the next 10 years.
-Abner and Ben
I have finally made the icon for Our Paint on Android 😄 it's getting closer to becoming a real app
After my last post, a few people pointed out that using heightmaps might be a better approach for this. So I scrapped the previous octree approach, and took a tangent to try out JangaFX's GeoGen, which offer ways to create realistic landscapes, and export meshes, heightmaps and textures out of them. Then that info is imported into the game and wheel collision code looks up the height (z) based on the (x,y) of the position, the rest of the code remains the same. Here's a demonstration of driving the car around the hills:
I was motivated by the energy of the conference and especially Mason's Vulkan talk, so I wrote up my experience making a bare metal system on Raspberry Pi 4, which included programming GPU shaders in assembly. The interface is not too different from Vulkan, so it should be of interest to people comparing his talk to the command lists at the bare metal level.
I can't figure out how to post this to Handmade Network as a blog...
In order to implement ground collision checking between wheels and a terrain mesh, a performant approach to look up the nearest vertices to the wheel was necessary, so today I implemented an octree to subdivide the terrain mesh in manageable chunks, simple code, around 50 LOC
I'm still so hecking happy my selection code managed to reach real-time performance, even with this amount of polygons! :scwee: :acegikHeartShape: I'm doing selection on the GPU with compute shaders, entirely without acceleration structures too, while also taking into account not selecting faces that are obscured/hidden
I recently unified the codepaths for recording data, evaluating expressions "currently", and evaluating them historically. This was primarily so that I could finalize conditional breakpoints with arbitrary expressions.
Because they're unified, it made it straightforward to allow conditions to mix and match current and historical data, e.g. in this video val > val @ 0
is true when the current value is greater than the value at sample 0.
Previously, the assumption was that recording would always use be really simple expressions (e.g. variables, pointer derefs, struct member access etc), and that all the full expression work would be historical.
The new conditions play nicely with other major recent additions to &WhiteBox: breakpoint actions to enable/disable other breakpoints/inspections, and (auto-layouting) hardware breakpoints.
These solve the main things I find frustrating with data breakpoints in other debuggers that I've tried:
In the video:
val > val @ 0
val
was written to when the condition was true.&meeseengine
Mountains with this level of scale and detail were once out of reach on the Dreamcast. But with recent optimizations, they're now a reality:
Been a bit since I've posted, but still making steady progress on my laser puzzle game. Added bidirectional mirrors this morning
fretboard preview on the tab editor/player (starts at 0) 🎶 showing off my own version of "css" but in ini, including colors, cut presets, editor options and element styles
&learningjam2024
Back on the PBR demo. Went off a tangent and implemented my own local "Shadertoy", so that I can use my preferred text editor without having to do additional copy-pasting. I've written a blog post about it.
https://unlitart.com/Blog/#PBR%20Demo%20WIP%20and%20Writing%20Offline%20Shadertoy
I've done so many boring backend plumbing things with &half-edge of late so the only visually interesting thing I have done is having implemented camera zoom :pensivebread:
Juicelutions continues. We've got camera shake on moose impact, better player character animations, grass rustling as the moose charges, and trees that shake when hit by the moose.
Little Guitar Tab player/editor im doing for transcribing my own stuff, the ones played are not mine tho 😛
The (almost) three month crunch is over, it's released!
The old (not so good) prototype has come from left image to right image.
Improvements include:
Get it here if you're into action puzzle games: https://store.steampowered.com/app/3137550/Halloween_Picket_Maze/
been experimenting with making a tabbed interface for &half-edge ! It's just the UI right now, but this is one of those things that would make it feel a lot more modern compared to the big established modeling tools, where every time you want to open a new model, you have to decide whether to save or discard whatever you already have open. tabs like this would let you work much more fluently in terms of UX, something I'm prioritizing a lot with this tool!
Taking a little break from the wasm debugger to integrate harfbuzz into &orca
Finally I've released my new website!
It was made using my own handmade static site generator, a project that has grown to the extent that I'm almost considering registering it.
More information can be found in the showcase, linked below. There's also a blog post.
https://unlitart.com/Tech/#Static%20Site%20Generator
https://unlitart.com
&meeseengine for the Gamecube, Wii, Dreamcast, and PC.
I've been mostly working on the engine's internals lately. The PC port gave me the debugging tools I needed to improve complex systems like the memory manager.
I have finally made the icon for Our Paint on Android 😄 it's getting closer to becoming a real app
mixed statement and declaration allows you to do ```c
{
int a;
char const* foo = ProcessSomething(&a); // first statement
ConsumeFoo(foo, a);
unsigned bar;
// rest of code...
}
Faster scanning with MRI reduces the need to anesthetize the subject and increases robustness to motion. This is especially important for young pediatric patients that have difficulty remaining still and fetuses that have no impetus to do so.
To scan faster, one can simply collect less data. However, reconstructing a high-quality image from less data is a challenge. In this work, I will be developing a novel method to accelerate MRI. The image is the result of a convex optimization problem that can be solved with existing fast algorithms.
We'll talk about all of this. I'm doing this for fun; hopefully it works out.
Working on TempleOS, but even more modern. Bootstrapping the compiler and bootloader using Odin and UEFI. The linking and compilation is done with lld and clang
After my last post, a few people pointed out that using heightmaps might be a better approach for this. So I scrapped the previous octree approach, and took a tangent to try out JangaFX's GeoGen, which offer ways to create realistic landscapes, and export meshes, heightmaps and textures out of them. Then that info is imported into the game and wheel collision code looks up the height (z) based on the (x,y) of the position, the rest of the code remains the same. Here's a demonstration of driving the car around the hills:
I was motivated by the energy of the conference and especially Mason's Vulkan talk, so I wrote up my experience making a bare metal system on Raspberry Pi 4, which included programming GPU shaders in assembly. The interface is not too different from Vulkan, so it should be of interest to people comparing his talk to the command lists at the bare metal level.
I can't figure out how to post this to Handmade Network as a blog...
In order to implement ground collision checking between wheels and a terrain mesh, a performant approach to look up the nearest vertices to the wheel was necessary, so today I implemented an octree to subdivide the terrain mesh in manageable chunks, simple code, around 50 LOC
Having a go at voxel physics. Hope to extend eventually in 3d once worked out 2d.
I'm still so hecking happy my selection code managed to reach real-time performance, even with this amount of polygons! :scwee: :acegikHeartShape: I'm doing selection on the GPU with compute shaders, entirely without acceleration structures too, while also taking into account not selecting faces that are obscured/hidden
I recently unified the codepaths for recording data, evaluating expressions "currently", and evaluating them historically. This was primarily so that I could finalize conditional breakpoints with arbitrary expressions.
Because they're unified, it made it straightforward to allow conditions to mix and match current and historical data, e.g. in this video val > val @ 0
is true when the current value is greater than the value at sample 0.
Previously, the assumption was that recording would always use be really simple expressions (e.g. variables, pointer derefs, struct member access etc), and that all the full expression work would be historical.
The new conditions play nicely with other major recent additions to &WhiteBox: breakpoint actions to enable/disable other breakpoints/inspections, and (auto-layouting) hardware breakpoints.
These solve the main things I find frustrating with data breakpoints in other debuggers that I've tried:
In the video:
val > val @ 0
val
was written to when the condition was true.&meeseengine
Mountains with this level of scale and detail were once out of reach on the Dreamcast. But with recent optimizations, they're now a reality:
Wanting to make a little game from scratch. I finally got some funky Metal rendering going; however, I'm not too happy with the lag in the recording when the window is big.
See this is exactly what i'm going for I just want tons of ideas to research I appreciate it!
I'm trying to build my own lnaguage that is basically C with some nicities
and a few other things but eventually it will just transpile into C and like gcc will run it.
This post has been co-authored by Abner Coimbre and Ben Visness.
On November 17, 2014, Casey Muratori went live with the first episode of Handmade Hero. The show was immediately electrifying: a game industry veteran sharing his knowledge with no coddling and no compromises. But Handmade Hero gave us more than just technical knowledge—it gave us an ethos for how to program.
10 years later, it’s clear that Handmade Hero was more than just a show—it started a movement. The Handmade community has grown to encompass thousands of people sharing their knowledge on Discord, attending conferences and meetups, shipping apps, and working to fix the mess that is modern software. In a world where most programming communities are built around a particular language or paradigm, the Handmade community is an anomaly, a place where brilliant programmers of all disciplines gather to help each other make truly great software.
This past July, we spent a week at Ben’s family cabin to reflect on the past ten years of Handmade. The key question: What should we encourage ourselves, and the community, to do for another ten?
First, we should review where we are now. For better or for worse, the Handmade community is under the stewardship of three separate entities:
At the time of writing, Handmade Hero is paused. Casey will share further updates down the line about whether he will continue the series or introduce a new one that better meets the educational needs of his current audience.
But the Handmade Network and Handmade Cities march on. The Handmade Network now runs three unique programming jams per year, has a thriving online community, and runs Unwind as a way of sharing the community’s knowledge. Handmade Cities has expanded to both Boston and Seattle, supports meetups across the world, and now hosts coworking groups and hangouts as well.
These are all amazing developments, but we don’t want to stop there. We want to take the Handmade community to the next level and really make a dent in the software industry, as has been our mission from the start. How do we achieve that? What can we do to scale up the Handmade movement and its impact in the world of software?
Our overarching goal is simple: we want Handmade programmers, and the software they write, to be successful. Straightforward enough. But what’s holding Handmade programmers back from that today, and what can we actually do to help them?
First we need to understand who Handmade programmers really are.
The boat ride up at the cabin yielded our first main conclusion: there are multiple kinds of Handmade programmers, each with different needs.
We’ve had ten years to observe and work alongside dozens, if not hundreds, of incredibly competent programmers. As we reflected on the best of the community, we noticed that they seem to fall into three major archetypes, which we are dubbing:
The Entrepreneur is someone who wants to ship Handmade software. These are programmers like Vjekoslav (creator of File Pilot), Wassimulator (creator of Cactus Image Viewer), or Nakst (creator of the Essence operating system). Their goal is to build the kind of software they know computers are capable of, and they are usually driven by the awful state of software today and motivated to create something better.
The Researcher is someone who wants to do ambitious work and share what they learn with the rest of the world, but their goal isn’t necessarily to make a product. Instead their goal is to dig deep into systems, try new ideas, and share what they learn with the rest of the world. We have a few programmers that fit this mold, such as Allen Webster, creator of Mr. 4th Lab, and BYP, who is always down some kind of interesting rabbit hole.
The Craftsperson is someone who just loves the work of engineering. Their love of their craft gives them a wide breadth of knowledge and experience, and they are less distracted by shiny new ideas and tend to be extremely productive as a result. We have many incredible craftspeople in the community, such as Reuben Dunnington (who contributed an entire libc implementation to Orca), and Skytrias, who has contributed large amounts of code to both the Odin and Orca projects.
These are broad categories and there are many community members who blur the lines. But we think these categories nonetheless describe most of the people in the Handmade community, and they inform what we can do to help them.
So how do we support Handmade programmers? Each archetype has a different set of needs:
There are, obviously, a lot of different needs here. We may not be able to achieve them all right away, but our overall vision for the future of Handmade is to fulfill these needs for the community.
Those are the tangible needs, but before going further, we should actually cover programmers’ emotional needs as well. It may sound strange, but this is actually an issue of growing importance for the community. (This realization came after some post-boat-ride Chocovine.)
At the heart of the issue is an awakening that nearly all Handmade programmers experience. Abner experienced it when he took his job at NASA. Ben experienced it when he read Casey’s article about compression-oriented programming. There are hundreds of Handmade programmers with a similar story, where they have a realization, an awakening, about what programming really is.
We started out as children writing programs for fun. We loved programming and loved making computers do amazing things. But then we went to school, and the joy of programming was slowly drained away. We were taught that it was foolish to write programs yourself, and that you should instead use the library or the game engine that someone smarter had written. We were taught about inheritance hierarchies and design patterns and hundreds of other useless concepts that obscure what the program is actually doing. And when we asked “why”, we were again told that it’s just how things work. Trust the experts. This is how software is made.
Then we found Handmade. We discovered that programming could be fun again. We discovered that there were programmers out there who cared about their craft. We discovered that all the fluff we were taught in school was only making things worse, and that if we instead learned how computers actually worked, a whole new world of programming would open up for us.
The obvious corollary, though, is that the software industry is a disaster. It seems too absurd to be true—surely there must be a good reason why so many programmers install is-number from npm. Surely there must be a reason for a to-do list to use 500MB of memory. Surely so many smart programmers couldn’t be wrong! And yet they are.
Ten years into their programming journey, many Handmade programmers face a crisis. They have grown so much as programmers, and learned so much about how things work, that they can’t stomach working in the industry any more. The thought of installing hundreds of dependencies and slapping together a React app is too much to bear. The money may be good, but if the work isn’t fulfilling, they can’t do it.
The need to fix the software industry is clearer than ever. It’s not enough to just show programmers the way. We need to change the status quo.
How does one change the status quo? The only way is to fill the software industry with the kind of software we want to see.
To that end, the Handmade Network team is in the process of creating the Handmade Software Foundation, a 501(c)(6) nonprofit organization whose goal is to sustain the development of Handmade software and Handmade programmers. The needs of entrepreneurs, researchers, and craftspeople are varied, but we think we can make a big impact with just a few key people. One designer can offer their services to many entrepreneurs’ Handmade products. One “project manager” can meet regularly with the authors of official foundation projects, and one writer can help with a variety of blog posts, documentation sites, and grant proposals. And foundation projects can be an amazing source of work for the Handmade craftspeople who are looking for meaningful work. It will take some time to get going, but we think there’s huge potential as an “incubator” of sorts for all kinds of Handmade projects.
Meanwhile, Handmade Cities is all about growing the in-person events, with a focus on connecting programming in real life. We host two main conferences: Handmade Boston in the summer for masterclasses and Handmade Seattle in the fall, which is our flagship event with talks, demos and even a job fair. We also run monthly meetups around the world with trusted hosts, plus bi-weekly co-working sessions and weekly hangouts. All of this builds on the idea that real change in the software world comes from in-person connections with like-minded people.
Over the years, Handmade events have proven to find people new jobs, co-founders, lifelong friends, and even romantic partners. Our conferences are an anchor to the Handmade community and a platform for pushing forward programming projects.
The Handmade Software Foundation is still getting off the ground, and the process will take a fair amount longer. The Handmade Network team already spent a year waiting for the IRS to review a previous application, only for it to be rejected, and the entire process to start over. The end result will be worth it, but these things unfortunately take time. In the meantime, we encourage you to sign up for the email newsletter, and to start participating in the community. We look forward to scaling up Foundation activities in the coming years, and if you find this exciting, please feel free to ping Ben on Discord (bvisness) or send him an email at [email protected].
Handmade Cities, however, is already an active company run by Abner. All Handmade events are 100% indie, meaning Abner doesn’t take any sponsorship deals: he is funded by individuals like yourself. Organizing is his full-time career for the last couple of years which pays significantly less than any traditional programming job, so the best way to support Abner is throwing five bucks his way or getting tickets for the conferences. If you need to get a hold of Abner, ping him on Discord (abnercoimbre) or send him an email at [email protected].
The first 10 years of Handmade have had more of an impact on our lives than we ever could have imagined. We’re both so proud of everything the community has already accomplished, how many people it’s impacted, and the software it has produced. We are all better programmers, and better people, because Casey decided back in 2014 to share his knowledge and his ethos with the world.
We couldn’t be more excited about the next 10 years.
-Abner and Ben
The past few months have been a whirlwind. We hosted two jams: the Visibility Jam and the Wheel Reinvention Jam, almost back to back, each with an associated recap show. (We’ll schedule them better next year!)
In between was Handmade Boston, which was a delight—I met so many wonderful people, some of whom even submitted projects for the jam. And throughout it all, we made a slew of website updates, including an overhaul to our Discord integration.
Finally, we have been working with Abner and his team recently to improve the Handmade Cities website. The Handmade Network community scoured the internet to put together this master spreadsheet of all Handmade Cities media since the first conference in 2019. Asaf has mapped out the full sitemap of Abner’s current site and has been working with Devon to prioritize and port the contents of the site to the new one. I’m very excited for the end result, but my excitement has been tempered by recent events—events which provide a stark reminder of why the Handmade ethos is so important.
Here’s the thing: Abner’s site currently runs on WordPress.
Those following the tech sphere will know that the WordPress ecosystem is on fire. Matt Mullenweg, director of the WordPress Foundation and CEO of Automattic, has decided to wage war against a WordPress hosting company called WP Engine. He has publicly called the company "a cancer to WordPress", blocked them from accessing core WordPress infrastructure, and even seized one of their popular plugins. All of this stems from an ostensible infringement on WordPress’s trademark, but the details make it look more like extortion than a trademark dispute.
This is not just drama. Nearly a tenth of Automattic’s employees have already resigned, and I expect more will follow. Mullenweg’s dick-measuring contest with DHH surely won’t help his case. (The post used to say "We’re now half a billion in revenue. Why are you still so small?") WordPress's executive director has resigned, as has most of the company's ecosystem division. What does this mean for the future development of WordPress, or the health of the developer ecosystem surrounding it? Time will tell, but it's a very bad sign for those who have built their businesses on the platform.
The situation is still developing, and information online is constantly being edited or deleted. By the time you read this article, you might need to look up some of the links on the Internet Archive.
Oh wait. That's under attack too.
Until recently, if you wanted to throw together a website, WordPress seemed like a sensible, stable choice. I've personally made multiple WordPress sites that have held up for years, if not decades. But thanks to one man, its future is now in jeopardy, and even the services that would act as a backup are disintegrating too.
This website, on the other hand, is proudly Handmade. The whole codebase is a single application written in Go. It statically links its dependencies. Our data is stored in a Postgres database on the same server. We use a few libraries here and there for syntax highlighting and Markdown rendering, but for the most part we just depend on the standard library HTTP server.
This very post can be authored in Markdown, previewed in real time, and published instantly. It has a full revision history, permalinks, the works. We have a project system, a shadowban system to combat spam, and a robust Discord integration that powers the amazing showcase feeds across the site. The previous admin team did a great job building the foundation, and Asaf and I have rebuilt, extended, and refined it over the past several years. Every link to handmade.network still works, and will always work, for as long as we are around to maintain this site, and when someday we hand this off to another team, they'll have one simple database full of well-organized content.
Was this site hard to build? Kind of. Certainly it took us months to rebuild it from scratch back in 2021, and we've poured many more months into its development since. But this entire site was built by a mere handful of devs in their spare time. It's just a database with posts, threads, and projects, and a bunch of CRUD pages for managing them. Nothing about it is very complicated.
But thanks to our efforts, we are safe. Nobody can take away our platform, because we built our platform. As long as we can connect a computer to the internet, we'll be able to keep this site online.
So with Handmade Seattle approaching, we have redoubled our efforts. Being self-sufficient isn't just about protecting ourselves from the Matt Mullenwegs of the world. It's about empowering others to sustain themselves too.
What we have learned from building the Handmade Network website enables us to build websites for others. Abner's will be the first, but as we spin up the Handmade Software Foundation, we expect to make many more, each specifically tailored to each author's needs. There's no reason for a website to be complicated—each one can be straightforward and simple. And if a project author decides they don't want our help any more? They can just take our code and run it themselves.
We hope this is a model for the whole Handmade community: a group of self-sufficient programmers working together to empower each other. By taking the responsibility on ourselves, we can build better software and share what we learn with the world.
The first step to building a new future for the software industry is to build tools for ourselves. This is why we do jams, this is why we do Unwind, this is why we do conferences. Handmade programmers need to lead the way by proving how much a few programmers can do, and how much better your software can be when you build it by hand.
See you all at Handmade Seattle in November.
-Ben
Hey there, Handmade Network. Since you’re reading this on the website, you may have noticed that things look a little different around here. As I talked about in our last news post, we’ve been working for the last couple months to redesign the Handmade Network website. Today I’m pleased to finally roll it out!
The new site design comes courtesy of Jes Chuhta, a wonderful UX designer who we came to know through Handmade Boston and Handmade Seattle last year. The new website is designed to reflect the new shape of the Handmade Network as it has evolved over time. A quick summary of the changes:
In addition, the new design is actually much simpler to work with! Programmers, trust me, you have no idea how valuable it is to work with a good designer. Our HTML is so simple now, our CSS is so simple now, we have a third of the variables we used to have. It is so easy to slap designs together and they look good because they are consistent and aesthetically pleasing and please programmers listen to me please
Because we needed to get this announcement out, the website is still a work in progress. Several pages are still somewhat broken or need a little more attention. But we hope that you all enjoy the new foundations, and we look forward to expanding the site to highlight even more of the great work the Handmade Network community is doing.
That’s right, just two weeks! Our second annual Visibility Jam is coming up on July 19, two weekends from the time of this posting.
The topic of “visibility” is critical to Handmade goals. To understand our systems we have to see our systems. The underlying realities of computers cannot be known unless programmers like us go to the effort of building tools, visualizations, and editors. Making systems visible is the first step toward improving those systems.
I covered this in my talk from Handmade Seattle last year. We don’t need to be stuck forever with the towering pile of complexity that is modern systems. We can learn how systems work, tear down the layers, and build new systems that are just as nice to use but have a fraction of the complexity. If we are going to build a new kind of “high-level” software, we first have to understand the low levels, and the Visibility Jam is your opportunity to take that first step.
Plus, we’ve now made tons of improvements to projects on the website, so submission should be much more pleasant this year. There’s no better time to join the community and try jamming with us! Check out the jam page for more details.
Hello Handmade Network! 2024 has been great so far. Most notably, we held our first-ever Learning Jam in March, in which participants learn about a topic and share that knowledge with the rest of the community. We had great turnout for an experimental jam in its first year, and I’m excited to revisit it in the future.
But looking back, not everything we’ve done over the last couple years has been quite so successful. We’ve excitedly kicked off projects like our education initiative, Time Machine, even a 501c3 behind the scenes. Sadly, none of these have panned out. Making good educational resources with a Handmade flair is hard (really hard) and requires a huge time commitment from a rare type of person. Time Machine was a fun idea, but was never destined to succeed as a large community project. And the 501c3…we’ll save that for another time.
Community members did great work on these projects, and we learned a lot, but as time passed it became clear that we were neglecting the heart of the Handmade community: projects, and the people who author them.
Handmade software is literally the point of the Handmade Network. Communities that talk about programming are a dime a dozen. But Handmade software are different. It is so fast, so capable, so lightweight, so simple, that it shocks people with what modern computers are capable of.
At the end of the day, Handmade projects are what brings people to the community. This is not just me being nice; our Google Search analytics show that RemedyBG is by far the #1 source of traffic to handmade.network. #project-showcase is also the most popular channel on the Discord, and we frequently hear that it inspires people to dig deeper into their own projects. And ultimately, if we’re not making quality software, what’s the point?
So this year, we are 100% focused on projects. Our sole goal is to promote and boost the amazing work being done by the Handmade community. To that end:
As for our previous initiatives, we’ll be sunsetting them and archiving their content as necessary. Nothing will be lost except our time and our pride, but we’ll recover. 🙂
Before I close, a few key project updates:
Disk Voyager is coming along beautifully and already has dozens of very happy alpha users. He recently added a bookmarks / quick access panel, which I am very excited about. It will soon enter open alpha, so go to https://diskvoyager.com/ and sign up to make sure you get access.
Cactus Image Viewer has been receiving lots of quality updates recently, with more on the way, including a gallery of other images in the folder. You can download the latest version from GitHub.
Orca is on the cusp of another major release. Shaw and I rewrote the Python tooling in C to reduce dependencies, Reuben added a complete libc implementation (no more shim!), and Martin rewrote the vector graphics backend in WebGPU. Make sure to subscribe to the Orca newsletter to be notified when it releases.
And finally, Abner has started a Discord server for Handmade Cities. You can read more about his rationale in this blog post, but if you are interested in meetups or coworking with Handmade folks, I recommend you go join.
Looking forward to many more great things this year! We’re just getting started.
-Ben
I'm pleased to write this final news post of the year together with Abner Coimbre!
Dear Handmade Community,
Warm holiday greetings! Abner Coimbre and Ben Visness here, teaming up to announce that the Handmade Cities Matrix server will remain online permanently. In past years, it has been shut down at the end of conferences, but now it will remain active year-round!
This might surprise you, since most of you are probably already members of the (now rather large) Handmade Network Discord server. So why keep the Matrix server as well?
The Handmade movement has grown an incredible amount in the past several years. Importantly, it has grown both online and in the real world. Both domains are vital to the health of the larger Handmade community - but there are some critical differences between the two. Let's dive into it.
The Handmade Network (HMN) is the online hub for the Handmade movement. Led by Ben and his team, they run programming jams, Twitch shows, and online social gatherings. They provide a place for community members to discuss programming, learn from each other, and share what they're working on. The Handmade Network is also the home of Handmade projects, including the Orca initiative and Abner's own Terminal Click.
In essence, HMN is the online community - and it's accessible to everyone, including those who prefer to remain anonymous.
Handmade Cities (HMC) brings the Handmade movement into the physical realm. Headed by Abner and his own staff, HMC orchestrates tech conferences like Handmade Boston and Handmade Seattle, which are venues to present to the rest of the world our software and ideals. HMC also organizes monthly in-person meetups worldwide.
In essence, Handmade Cities is all about in-person events. HMC emphasizes real-world interactions; by its very nature, those who participate in these events can't be anonymous!
For several years now, Handmade Cities has used a Matrix server for discussions related to conferences and conference meetups. This server has always complemented the Handmade Network Discord server, rather than competing with it. And that is not going to change!
The HMN Discord remains open to all, while users on the HMC Matrix are tied to real individuals participating in Handmade events: ticket holders, local meetup members, and so on. The Discord is the hub for jams and other online events; the Matrix is the hub for meetups and other in-person events.
At the start of the Handmade movement was Handmade Hero, a Twitch series showing how to craft a video game from scratch. Casey Muratori, president of Molly Rocket, started it in November 2014 and quickly found great success, forming a huge community around its values that has lasted almost a decade.
So, what's become of our bouncy little friend? Casey's passions have expanded beyond this project, reflecting Molly Rocket's commitment to multiple initiatives. We're not privy to the specifics of Casey's plans with Handmade Hero, but this year, we collaborated directly with him to shape the opening blurbs for both Handmade Network and Handmade Cities:
handmade.network
:Originally inspired by Casey Muratori's Handmade Hero, we dig deep into our systems and learn how to do things from scratch. We're not satisfied by the latest popular language or the framework of the month. Instead we care about how computers actually work.
handmadecities.com
:Inspired by Handmade Hero
Like Handmade Hero by Molly Rocket we believe in breaking software down to the bare bones and building back an understanding of how it all really works.
While Molly Rocket, Handmade Network, and Handmade Cities share a spirit of mutual support, it's crucial to emphasize that we exist as separate entities, and are not formally affiliated. You might instead see us as independent stewards of the Handmade movement.
And at the end of the day, that's the way we like it. We each have our own expertise, our own experiences, our own goals, and ultimately our own businesses. We feel that we're at our best, and the Handmade movement is at its best, when we are run independently but collaborate at every opportunity.
We look forward to bringing you improved conferences, jams, meetups, shows, and projects in 2024. With our 10-year anniversary fast approaching (!) the future of Handmade shines brighter than ever. 😊
All the best,
Abner and Ben
With the Wheel Reinvention Jam just over a week away, we’re very pleased to finally release the Orca MVP to the community!
For those unfamiliar, Orca is our new cross-platform runtime for WebAssembly apps. It gives you a cross-platform app development system without all the baggage of browsers. It’s a long-term project with ambitious goals, but we are very excited to finally release an early MVP for the community to play with.
All the details can be found in the announcement post over on the Orca website. There you’ll find how to access the source code, the list of features and current limitations, and how to get help and provide feedback. If you’re interested and think it would be a good fit for your project, we’d love to have you try it out during the jam.
Our third annual Wheel Reinvention Jam is less than two weeks away! The Wheel Reinvention Jam is a week-long jam where we build software from scratch. Whether you want to clone an existing app for fun or build something wild and ambitious, this is your chance to try.
If you’ve never participated in a week-long jam before, don’t sweat the time commitment - you can participate with however much time you have. Whether you take days off of work or just participate on the weekend, we’re excited to see what you create!
The jam takes place from Monday September 25 to Sunday October 1. For all the details, visit https://handmade.network/jam.
We owe the name “Wheel Reinvention Jam”, and its logo, to Casey. At the start of Handmade Hero, literally in episode 1, a viewer asked the question: “Why not use an engine? Why reinvent the wheel?”
Casey’s answer deserves to be watched in its entirety, but part of it is shockingly relevant right now:
If you start with an engine, then it changes what you’re learning from the fundamental truth of how to implement a game to someone else’s version of that. […] What you’re really learning is that engine. You haven’t learned how to make games, you’ve learned how to make games in Unity. Right? And if Unity were to disappear, for example, you would no longer know how to make a game at all. I’m not exaggerating this, that’s just the truth.
We could not have planned our jam at a more opportune time. Unity recently announced a dramatic change to their pricing structure that leaves the future of many game studios in doubt.
What Casey said back in 2014, at the very inception of the Handmade community, has now come to pass. For many game developers, Unity is no longer an option. And just like Casey said, their very existence in the industry has now come into question. Will they be able to make games at all?
Casey’s reasoning holds as true today as it did then. The world needs engine programmers! Programmers who understand how engines work aren’t constrained by the limitations of the engine - they know what’s fundamentally possible and can work around constraints to achieve anything they want. But more than that, our current engines are not good enough! We need people making new engines, better tools, better wheels.
This is not just true for game engines. It’s true of the entire software industry. We need new video editors, new platform layers, new code editors, new databases, new networking protocols, new compilers, new typesetting systems, new presentation programs, new graphics APIs, new operating systems.
We will never make progress unless we reinvent the wheel.
See you on September 25.
-Ben
August has already been a big month for the Handmade community! The biggest news, of course, was:
Handmade Boston was the first of two Handmade Cities conferences this year and the first ever held outside of Seattle. I have to say, despite it being the first conference in a new city, in a new venue, the event was a huge success. There were dozens of in-person attendees and hundreds more online, and six fantastic long-form talks. I’ve been working through the homework and thoroughly enjoying my time.
I also had the pleasure of meeting many people in person whom I had only ever met online. For many of them, Boston was the first Handmade conference they had ever attended. It warms my heart that so many people were willing to take a chance on this scrappy first-year conference.
Abner tells me he will be publishing a recap of the conference soon, so if you’d like to hear more from him (and buy your tickets to Handmade Seattle!) then head over to https://handmadecities.com/.
We’ve been hard at work on Orca, our new stack for cross-platform WebAssembly apps. Think of it like Handmade Electron - a runtime that lets you ship the same app on multiple platforms. Unlike Electron, however, we’re throwing away the worst parts of the web stack and keeping the best ones. We’re building all the systems from the ground up to make app development delightful while still giving you the same cross-platform benefits of the web. And we’re doing everything we can to give you freedom and flexibility, so you don’t have to use the parts you don’t need.
We intend for Orca to be completely free and open source. For now, the codebase is still private - but this will be changing soon! We’ve kept the codebase closed since the project is at such an early stage - everything is getting renamed, build tooling is changing, git submodules are being imported and everything is breaking as a result. But we’re stabilizing it as fast as we can, because of this goal:
Orca will be available for use during the Wheel Reinvention Jam in September. It will be very MVP, a “vertical slice” of all the functionality we eventually intend for Orca to have. It will also certainly have bugs. But it will have enough to give you a real taste of our vision for the project. If you’re interested, we’d love to have you give Orca a try.
For more information and updates, and to be notified when the codebase is open, make sure to visit https://orca-app.dev and sign up for the newsletter. It won’t be long until the next one, and in the meantime, you can listen to the latest episode of Allen Webster’s podcast, which is an interview with Martin about Orca: https://conversations.mr4th.com/2204443/13420302-orca-with-martin-fouilleul
As mentioned in previous newsletters, our third Wheel Reinvention Jam will be held from September 25 to October 1. Now is the time to start brainstorming project ideas! No idea is too big or too small. Whether you build a clone of another app for educational purposes, or you try to reinvent programming itself, you have a week to play with new ideas and stretch yourself as a programmer.
More details will be published next month. Stay tuned, start thinking of projects, and consider joining the Discord so you can find others to collaborate with.
Finally, I just wanted to highlight a few fun and noteworthy things that have happened in the community over the past month:
…we’ll be working hard on Orca, jams, education, and other projects I can’t wait to tell you about. This community is going stronger than ever, and I’m so glad to be a part of it!
-Ben
This newsletter brought to you by Ratatat.
Hello Handmade community! It’s been an exciting year for Handmade so far. Here’s what we’ve been up to:
And of course, Abner has expanded his conference efforts and is now hosting two Handmade conferences, one in Boston and one in Seattle. Handmade Boston is less than a month away, so check it out (and don’t forget there’s an online track!)
TL;DR: Orca and Time Machine have both kicked off, and our next Wheel Reinvention Jam is coming in September!
Orca has been in the works for a long time. Many of us were drawn to the Handmade community because we were dissatisfied with the bloated, complicated technologies available to us. The community has spent the last several years learning to make UIs, compilers, debuggers, platform layers - everything you’d need to make a compelling development platform. Now we’re finally putting it all together into something real.
Orca is a whole new stack for making cross-platform applications. It’s designed specifically for WebAssembly, so you can use whatever language you like instead of being stuck with JavaScript. It has a new state-of-the-art vector graphics renderer and we’re developing amazing UI tools that will blow the DOM out of the water. And above all we’re designing the platform to be well-layered - you don’t have to use the parts of Orca you don’t need, and most importantly, you don’t have to ship them to your users either.
The Orca initiative is led by Martin Fouilleul, known in the community by his handle forkingpaths. He originally prototyped Orca as his submission for last year’s Wheel Reinvention Jam, and we’re thrilled to give him the chance to develop his vision further. For more info about Orca, check out the announcement blog post, and subscribe to Orca’s own newsletter while you’re there!
When I attended Handmade Seattle 2019, I visited the (now-closed 😔) Living Computers Museum. I had the opportunity to play with a huge range of computers, from an ancient teletype to a Macintosh Classic to a NeXT cube. While I was playing with Kid Pix on that Macintosh Classic, I was struck by just how fun and responsive the program was, on hardware that pales in comparison to our computers today. How was it possible that a program like that could run so well…or that programs today could run so poorly?
Then in 2021, I found some old computers in our robotics team’s shop that had been in hibernation since 2015. I booted them up and found that they were a perfect time capsule of what we were working on at the time, with our old code still open and everything. And they ran great, with the start menu opening instantaneously (as it should) and programs launching quickly.
And then updates started running.
I watched this computer age five years in thirty minutes. Every Windows update and Chrome update bogged things down more and more. The 4GB of memory that was previously wide open was suddenly almost completely full. And it was slow. So slow.
This is why we’re doing Time Machine. We need more people to remember what it used to be like. And we in the Handmade community need to know exactly what has improved about computers over the past few decades, and what has not.
If you have an old computer or phone lying around, please consider taking a video of it and submitting it to the project! More details can be found on Time Machine’s website.
We’ll be hosting our third annual Wheel Reinvention Jam this September! This jam is an opportunity for you to try out a new project, start something ambitious, explore new ideas, or just learn to build something yourself. Unlike your typical weekend game jam, this jam takes place over a full week so you have ample time to explore a new problem space. (Last year I spent most of my week implementing a toy TCP stack. I do not recommend this.)
This year’s jam will take place from Monday, September 25 through Sunday, October 1. As always, you can participate for as much time as you have available - some people can only participate on the weekend, while others will take entire days off to focus on their jam project. We look forward to seeing what you all submit!
For a recap of last year’s jam, click here.
There are even more things we’re working on behind the scenes that I can’t wait to tell you about someday. Until then, we’ll see you around on Discord, and in Boston in August!
-Ben Visness
Hello, Handmade Network! We’ve got big plans for 2023 and it’s about time we shared them with you all. So let’s get into it!
Last year we launched a new education initiative. Our goal is to cover topics that no one else is covering. And we’re not just making material for beginners - we want to dive deep into each topic and provide a rich understanding that can only come from real experts in the domain.
You see, we’re taking a different approach from most programmer education. We recognize that there are tons of great resources on the internet for a variety of topics. But if you’re new to a particular domain, there’s still an important question: where do I start?
We want to be your guide. We’ll point you to the best books, the best articles, the best resources that will help you gain real understanding. We’ll teach you the jargon and give you the context you need to understand each piece. We’re not just teaching you, we’re equipping you with the knowledge to learn for yourself.
We launched the education initiative with a focus on three topics: networking, compilers, and time. The compiler series will come eventually, but this year we want to laser-focus on one topic: networking.
There is almost no good networking education out there in the world. If you want to learn about TCP, your best bet is an O’Reilly book, Wikipedia, or the RFCs. The space is dominated by Cisco and other companies with expensive certifications. The end result is that almost all programmers are dependent on the network stack, and use it every day, but no one actually knows how it works. This is insane.
We’ve already started the series with an article taking you all the way from HTTP down to the Ethernet protocol, visiting TCP and IP along the way. This year we’ll be expanding the series with two more articles covering NATs, firewalls, internet infrastructure, and many other networking topics that affect programmers every day. We’re very excited to dig into these topics with you!
The core of the Handmade philosophy is the idea that software has been getting worse faster than hardware is getting better. Despite the incredible advances in computer hardware, the user experience of computing today is worse than it was a decade or two ago.
We believe this. But many people don’t. So let’s prove it.
This summer we’ll be launching a project called Time Machine. We’ll be asking you, the community, to dig out your old devices and share video of yourself using them. We want to go back in time and remind ourselves what it was actually like to use these old devices. We’ll be tracking the specs of these devices too, so we have an idea of how computing resources were used.
We hope this will be a fun project for the community and will inspire you all to take advantage of the amazing hardware we have today. We’ll share more details later, but in the meantime, get your hands on some old devices!
Also, if you have installers for old versions of popular software, please ping us on Discord or contact us at [email protected]. When the project rolls around, we’d love to test out old versions of operating systems, browsers, office software, and anything else that represents the day-to-day experience of computing.
We have an ambitious technical project in the works. It brings together all aspects of the Handmade community, from low-level systems programming to forward-thinking developer experiences, all designed to give real users a computing experience hundreds of times better than what’s on the market today.
This project reaches far beyond what a single developer can do. It will only be possible through the concentrated effort of a talented community of low-level programmers, with a common goal, and an inherent desire to make things better. I believe we are that community!
I’m excited to share more this summer. Until then, be intrigued >:)
These are our new flagship initiatives for 2023, but of course we’re still going strong with events for the community. The Visibility Jam starts tomorrow, and we’re going to do our third Wheel Reinvention Jam this fall. Abner has expanded Handmade Seattle into a new initiative called Handmade Cities, with conferences in both Boston and Seattle this year. And we’re still doing weekly Discord coffee chats, real-life meetups, fishbowls on various topics, and more.
I’m so excited for what this year will bring! Now let’s go jam 😁
Handmade Network is different from other software development communities. We promote philosophies and projects that care deeply about software craftsmanship. We criticize common dogma within the software industry that has produced a computing world that is far too sluggish, too bloated, too poorly-designed, and too unwilling to change. We stand for a better computing world.
In the past 4 years, we've done some big things with Handmade Network. The community has grown dramatically, with thousands of (active!) users on the Discord server (where a bulk of Handmade communication happens). We started a podcast. We've had multiple Handmade-themed jams. We transformed the Handmade Network website into a larger repository of Handmade projects and showcase content, to serve as a bastion of Handmade ideas, and concretely demonstrate how Handmade can improve us as builders of software.
Back in 2018, Handmade Network began a new chapter. I took over for Abner Coimbre as the lead of Handmade Network. I was joined by Ben Visness and Asaf Gartner, and together we replaced the original Handmade Network admin team. At that time, Handmade Network had established itself as a large and self sustaining community. It was the new team's job to continue to foster the community, and to take it to new places. The original team was ready to move on to bigger and better things, and they entrusted the keys to the community with myself, Ben, and Asaf.
Today, Handmade Network begins another new chapter. I have decided to step down from my role as Handmade Network lead, with Ben Visness taking my place. Ben has been a great staff member since the beginning. He led an initiative to rewrite and dramatically change the Handmade Network website into what it is today (writing blogs is a lot easier now). He and Asaf are responsible for all of the technology that allows the Handmade Network website to collect amazing showcase material from the Discord server, allowing the website to serve as both personal and project content repositories (in addition to the functionality that the website offered before). Handmade Network would simply not be what it is without Ben, and I know that moving forward, he'll do an outstanding job of leading the community.
I love being a part of Handmade Network, and I will remain a member. It has been an incredible resource to have as I've grown up. I joined Handmade Network in high school as a young and naive programmer, and the community was instrumental in transforming me into a much more capable and responsible engineer. I've decided to step down because I believe that it will be best for both myself and the community. I have found myself preoccupied with work, life, and some of my other personal projects and initiatives. For this reason, I think it will be most productive - not only for me personally, but for the computing world - for me to give undivided attention to those things, and hand the reins over to Ben to ensure that Handmade Network can be given the time and attention it deserves. Ben will be a strong force in continuing to grow, foster, and shape the community, and increasing its impact as a force for change in software.
It has been a thrill being a staff member, and I can't wait to see what the community will do next. Let's all keep going. Let's continue to build new projects, publish new educational material, do new research, and rethink old assumptions. Through all of those efforts, we can change the computing world into something a little better than what it was before.
-Ryan