We make software by hand.

The Handmade Network is a community of programmers inspired by Handmade Hero. We love programming, we like to reinvent the wheel, and we like understanding how our software works at a low level.

In a software industry dominated by bloat, waste, and slop, we go in the opposite direction. We care about our craft, we care about how computers actually work, and we take pride in writing truly high quality software. After all, someone needs to show the rest of the software industry what computers are capable of.

Handmade Network Expo
June 6, 2026
Get your ticket
Featured
Recent
News

After 2 years of sitting on it, I've finally released my unfinished port (only 1 level) of Crystal Castles to the Playdate. Even though the repo is a bit of a mess, I hope someone finds value in it

https://github.com/DanB91/Crystal-Castles-for-Playdate

View original message on Discord

Was busy, but finally got catmull-clark going 😄

View original message on Discord

I know I have been relatively quiet and not posting much over the last few months, but there's a good reason for it:
After last year's BSC, a few guys (@sanjacobs, @moritzfalk , @victor.caraulan , @thesandvichmaker and I) started working on a handmade project that has been getting us too excited not to talk about it already.
We're working on a video editor, and we're making it good. We've written it from scratch in Odin, it runs natively on Windows and macOS, (Linux on the plan as well) and it's coming out real soon!
If this interest you, you can join our Discord server for updates: https://discord.gg/AVHVF8sjm4
We currently are running a closed beta and we're adding people periodically.
You can watch a small demo of it here that Sander put together:

View original message on Discord

Made a small physics engine (in C++) that is decently stable. It is not much, but it is something
It supports 2d capsules and circles as colliders (with friction support), and objects can have multiple colliders (the center of mass that is used as origin for rotation is calculated from each of the colliders' surface area).

View original message on Discord

After very complicated struggles on piece-wise gregory patch for G1 continuity and found out the twist compatibility condition is still a hit and miss, I decide to rework the evaluation to using iterative catmul-clark... fingers crossed, it should be actually easier

View original message on Discord

I implemented a machine learning based upscaler from scratch. To do this, I created my own custom CNN (and GAN) framework (implementing forward/backward passes, dataset batching, etc) using SYCL (C++) for wide compute device support such as GPUs (GPGPU).
The gallery shows a CNN that has 300k parameters upscaling various game screenshots/images, sometimes 2x and sometimes even 4x is used because my model can handle arbitrary upscaling factors.
The CNN is trained with a 120k-sample dataset, compiled and preprocessed by my code, using my custom framework to train of course. The architecture uses a Pixel Shuffle layer to do the tensor reshaping necessary for upscaling, and 7 layers of 3x3 convolutions to do feature extraction, as well as a Sobel edge-detection texture passed in as an input channel.
Text is also upscaled well (well, you guys should be judge for that)
Trained completely using my framework (no external ML libraries used like tensorflow/torch.)

I recommend clicking on each of the images to fully see the upscaled details

View original message on Discord

Added array accessors to my calculator language, in the video i initialize an array, access the indexes, then change the value at index 2, and then show accessing them again to initialize a new array.

View original message on Discord

Silhouette POM on dynamic rounded corners with seamless tiling:
https://youtu.be/yphiknZNO9E

View original message on Discord

&zvideotrimmer Went a bit overtime but calling it there for the jam. Couldnt quite get encoding working well. But will definitely finish this up post-jam. Learned a bunch about the Media Foundation api and video encoding. Also that multithreading is super important in this domain as video decoding is computationally VERY expensive, even with modern hardware.
Also noticed how bad almost all video players scrub video, even high quality ones like MPV. I did not realize that pre-jam. Feel like its certainly doable to do better job and get close to what proper video editors like Davinci offer with scrubbing/trimming in a much lighter weight package. Even though I'm not encoding well, it is close, and the program is only 149kb with zero dependencies on windows. So even though this jam project was a fail, I really enjoyed diving into this problem domain, and look forward to improving it. Thanks very much Handmade Network admin, this jam was awesome.

View original message on Discord

Sadly, I didn't make much past this yesterday. The only progress I made yesterday was an internal architecture decision on how to interact with Odin's nbio. I guess I didn't have the time I thought I would, and spent too long hemming and hawing on some design decisions. All I have at the end of the jam for &send-files

  • A mostly non-functional UI layout
  • Able to copy and paste contacts
  • A rough idea of how the protocol will work
  • A rough implementation of the first step of this protocol in the form of a unit test

I do plan to continue on working this in some capacity after the jam though. I like where I am going with it

View original message on Discord

I pervasively can’t use &foo with these fixed-cap dynamic arrays

View original message on Discord

Great! Really my only complaints are a couple bugs (?) with the &foo syntax in loops

View original message on Discord

Our final Jam submission video - had to upload to youtube as the video was too big for this site:

https://www.youtube.com/watch?v=be4MmWPEgRs

&Cacophontonic coming along nicely

definitely picking fun / silliness over professionalism due to it being a jam project!

View original message on Discord

Parallax Occlusion Mapping with Silhouette on columns with proper curvature:

View original message on Discord

At first I managed to get really fast scrubbing, but then I realized that was because only key frames were being previewed by IMFSourceReader_SetCurrentPosition. Things slowed significantly once I started decoding all the frames around the cursor. It made me realize why scrubbing is generally slow in most video players, frames need to be decoded in real time when you seek, as all the frame information isn't actually present in the video file. Mainly key frames and diffs.
But that made me think of a slight optimization, outside of caching all frames, you could just display key frames while scrubbing quickly, then decode all frames if scrubbing really slow. Practically, human speed of mouse cursor movement should be enough information to do this well. If I dont manage to actually finish the trimming part (handling video using the MediaFoundation api is a bit trickier than I realized), I'll try implementing the seek optimization. &ZVideoTrimmer

View original message on Discord

&send-files progress:

  • Got copying and pasting contact information working (attached)
  • Wrote a test that will reflect the flow for sending a "file send request" and "accept file send request" packets

Yea... there's no way I am getting anything remotely close to actually transferring files by tomorrow lol

View original message on Discord

After 2 years of sitting on it, I've finally released my unfinished port (only 1 level) of Crystal Castles to the Playdate. Even though the repo is a bit of a mess, I hope someone finds value in it

https://github.com/DanB91/Crystal-Castles-for-Playdate

View original message on Discord

Was busy, but finally got catmull-clark going 😄

View original message on Discord

I know I have been relatively quiet and not posting much over the last few months, but there's a good reason for it:
After last year's BSC, a few guys (@sanjacobs, @moritzfalk , @victor.caraulan , @thesandvichmaker and I) started working on a handmade project that has been getting us too excited not to talk about it already.
We're working on a video editor, and we're making it good. We've written it from scratch in Odin, it runs natively on Windows and macOS, (Linux on the plan as well) and it's coming out real soon!
If this interest you, you can join our Discord server for updates: https://discord.gg/AVHVF8sjm4
We currently are running a closed beta and we're adding people periodically.
You can watch a small demo of it here that Sander put together:

View original message on Discord

I've published a public domain Odin package for colour space conversions targeting UI development. It implements OKLab, OKLCh, sRGB and Display P3 transform pipelines with piecewise gamma encoding and decoding. Based on Björn Ottosson's perceptual colour spaces. Gamut clipping, OKHSL and OKHSV are going to be included in the future releases. https://github.com/heavyrain266/colourspace

View original message on Discord

Porting Alula's zuma deluxe decompilation project to other platforms, right now it's running on macOS and Android
(game data not included, you need to buy it on steam)
https://ksylvestre.itch.io/zuma-portable

View original message on Discord

Made a small physics engine (in C++) that is decently stable. It is not much, but it is something
It supports 2d capsules and circles as colliders (with friction support), and objects can have multiple colliders (the center of mass that is used as origin for rotation is calculated from each of the colliders' surface area).

View original message on Discord

After very complicated struggles on piece-wise gregory patch for G1 continuity and found out the twist compatibility condition is still a hit and miss, I decide to rework the evaluation to using iterative catmul-clark... fingers crossed, it should be actually easier

View original message on Discord

Color pickers are now here with my own ui and rendering for it all.

Have been working on pencil since jam. Got d3d rendering for ui, turned off for the application itself, working on shaders to be able to have ui running. Here is a color picker.

I implemented a machine learning based upscaler from scratch. To do this, I created my own custom CNN (and GAN) framework (implementing forward/backward passes, dataset batching, etc) using SYCL (C++) for wide compute device support such as GPUs (GPGPU).
The gallery shows a CNN that has 300k parameters upscaling various game screenshots/images, sometimes 2x and sometimes even 4x is used because my model can handle arbitrary upscaling factors.
The CNN is trained with a 120k-sample dataset, compiled and preprocessed by my code, using my custom framework to train of course. The architecture uses a Pixel Shuffle layer to do the tensor reshaping necessary for upscaling, and 7 layers of 3x3 convolutions to do feature extraction, as well as a Sobel edge-detection texture passed in as an input channel.
Text is also upscaled well (well, you guys should be judge for that)
Trained completely using my framework (no external ML libraries used like tensorflow/torch.)

I recommend clicking on each of the images to fully see the upscaled details

View original message on Discord

Did another largish refactor so that all the vertices are in a single buffer so that I can render everything with multidraw indirect. Then I added a second pass for foliage. The change significantly improved performance, it's pretty insane how fast computers are

View original message on Discord

I just added the ability to diff directories in gap. It makes it so much more usable via git difftool -d since now you can view all the diffs in a single invocation of gap.

View original message on Discord

Added array accessors to my calculator language, in the video i initialize an array, access the indexes, then change the value at index 2, and then show accessing them again to initialize a new array.

View original message on Discord

Thanks to everyone who participated in the Handmade Essentials Jam last month! It was our biggest jam turnout ever, and there was lots of energy on the Discord as everyone was sharing updates about their projects. We just published the recording of the recap stream, so give that a watch if you’d like to see several of our favorite submissions:

https://youtu.be/kcQN_uYbyjE

The Essentials Jam is yet another case of people really resonating with challenges that make them a better programmer. (I hate to use the term “tradcoding”, but, here we are.) Our Handmade Hero Replay group is going strong too (a Handmade Hero book club, basically). More and more people keep joining the Discord server (we’re over 10k members now!) and whether they are a seasoned programmer or a fresh college dropout, they are all eager to be part of a community that actually cares about the craft of programming.

There’s a moment in the early episodes of Handmade Hero that I particularly enjoy. On da

We’re pleased to announce that ticket sales for the Handmade Network Expo are now open!

The Handmade Network Expo is our first-ever in-person event. We didn’t want to just run another “conference”; after all the years of Abner running Handmade Seattle (and our subsequent split), we weren’t interested in having a typical lineup of tech talks. Our favorite part was always the demos: real Handmade software made by members of the Handmade community. So in that spirit, we decided to make an event that was all demos, all the time.

You can find all the details on the event page, but the short version is that it’s one day in the heart of Vancouver, with a flexible schedule full of small demos, and plenty of opportunities to show off your own work, learn from others, experiment with new ideas, and generally celebrate Handmade software. Tickets are just $100, but space is limited. If

TL;DR:

  • The first-ever Handmade Network Expo will take place on June 6, 2026
  • Join us in re-watching Handmade Hero! (starting February 7, 2026)
  • A few thoughts about Handmade's position in the industry

We are very excited to announce the Handmade Network’s first-ever in-person event: The Handmade Network Expo!

2025 was a quiet year for us where we focused on the fundamentals of the community: jams, projects, a healthy community, and interesting discussions. But we love seeing other people in person, and were sad that we didn’t have the opportunity last year. So we decided it was time to bring people together again, and with our renewed focus on real, tangible Handmade software, a day of demos seems like the perfect fit.

So: Join us in Vancouver, BC on June 6, 2026, for a day packed with demos, discussion, socializing, and celebrating the achievements of the talented programmers of the Handmade community!

(By the way, don't miss more news at t

Hello Handmade Network, and happy new year! 2025 was a relatively quiet year for us where we focused on just running our jams and building relationships across the Handmade community. But we’ve got lots of plans for 2026 and we’ve already been at work kicking them off!

TL;DR:

  • We are finally launching the Handmade Software Foundation and using it to support the development of more Handmade software
  • We’re planning an in-person gathering for this spring, more details forthcoming
  • We’ll be doing two jams as usual, dates TBD based on other events

Launching the Handmade Software Foundation

A few years ago we announced that we were creating a nonprofit to support the development of Handmade software. Well, it took some time, but I am pleased to announce that the Handmade Software Foundation is now officially a 501(c)(6) nonprofit corporation.

What does this mean? It means we are a nonprofit under the category carved out for business leagues, chambers of commer

Happy fall to everyone in Handmade! I hope you had a wonderful summer, and that you spent the perfect amount of your summer writing amazing Handmade software. Ideally you were actually outside enjoying the sun and the air while doing this, and ideally you climbed a mountain or jumped in a lake afterward—but if this is wishful thinking, then I hope you at least have some cool software to show for it.

Fall is a wonderful season for Handmade, because it means that we get to do another Wheel Reinvention Jam. And this is our fifth annual WRJ!

Wheel Reinvention Jam, September 22 - 28, 2025

For me, the Wheel Reinvention Jam is one of the most important things we do as a community, because it reminds us that wheels do need to be reinvented, and that even the most ambitious projects need to start somewhere. I wrote this on the jam page, but whe

It's June 9, and that means that the X-Ray Jam has officially begun!

image.png

Participants have one week to make a project that exposes the inner workings of software. If this is your first time hearing about it, it's not too late to participate! Head over to the jam page to find more information about the theme, submission instructions, and inspiration to get you started.

After the jam, we plan to do another recap show like usual. The show is tentatively scheduled for Sunday, June 22, one week after the conclusion of the jam, but stay tuned for official confirmation.

We look forward to seeing all the updates this week!

-Ben

The official page for the X-Ray Jam is now online! Check it out, invite your friends, and join us on June 9 to dig into how software works.

image.png

The premise of the X-Ray Jam is to point an X-ray at software and see how it works "on the inside". It's a riff on the Visibility topic from previous years and a refinement of what made that topic interesting.

See, the original concept of "visibility" was not about "visualization"—the point was to make visible the invisible workings of the computer. To "visibilize" it, not necessarily "visualize" it. Obviously I love what the community chose to submit for those jams, but they admittedly did not stick to that topic very well. Even my own submission to the first Visibility Jam was a tool for automatically tracing a network, not really a tool to "make the pac

Hello Handmade! 2025 is moving right along, and Handmade projects along with them. But first:

Introducing the X-Ray Jam!

We are doing two jams this year, and the first is a new jam we’re calling the X-Ray Jam. This is a riff on the “visibility” topic from years past that I’m very excited about.

In short: point an X-ray at your software! The purpose of the X-Ray Jam is to explore our systems and learn more about how they work on the inside. It combines the best parts of the Visibility and Learning jams into one. Here’s the details:

  • When: June 9-15, 2025
  • Topic: X-ray some program and figure out what's happening inside.
  • You submit: A program or tool, like previous years, or a blog post, like in the Learning Jam.

For example, maybe you'd build a program to record and replay all the window messages received by your program. Or you'd investigate why the Windows 11 right-click menu is so slow to open. (What is it doing?!) Or perhaps you coul

Hello Handmade community! I hope your 2025 is going brilliantly so far. I have a few key updates for you to kick off the year.

Unwind is back!

I am pleased to announce that, after a bit of a hiatus, our interview show Unwind is back. Our latest episode is an interview with Alex (aolo2), a web developer turned CPU engineer whose projects are a constant inspiration. We discuss the creation of his collaborative whiteboarding app, the Slack replacement he made for a previous job, and his latest project, a lightning-fast CPU trace viewer. You can watch the episode on YouTube.

unwind_aolo2_screenshot.jpg

For this re-launch of Unwind, we’ve changed the format of the show from live to pre-recorded interviews. It’s basically a podcast now instead of a live show, and we hope this will h

I regret to announce that the Handmade Network and Handmade Software Foundation will no longer be working with Abner Coimbre and Handmade Cities going forward.

This is obviously not a decision we made lightly. Since Handmade Seattle concluded just over two months ago, we have been attempting to come to an agreement that would allow us to continue working together. Unfortunately, it has become clear that Abner’s vision for Handmade has diverged from ours, and despite our best efforts, we have been unable to reconcile our differences.

This means that the Handmade Network will no longer support, promote, or endorse any Handmade Cities conferences or meetups. We disclaim all affiliation with Handmade Cities going forward. Community members are of course still welcome to attend Abner’s events if they wish, but with the understanding that we have zero influence over any content, logistics, or attendee experience.

How did we get here?

I realize this announcement may come as