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

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

The most important feature has been implemented. (&games)

View original message on Discord

Finally some progress on drag and drop. Among the bugs I encountered: UI actions triggering on multiple items per frame, UI actions persisting across too many frames, clearing out UI state too early in the frame... (&games)

View original message on Discord

Having some fun with scaling video &ZVideoTrimmer

View original message on Discord

Got card rendering working for solitaire (the next game I'm working on as part of my essential &games collection for the jam)

View original message on Discord

Speaking of &Cacophontonic, I ditched RayGui in favour of something more custom

View original message on Discord

So far I've been working on packet construction, encryption and parsing for &send-files, so no visual updates yet. Also created a GitHub: https://github.com/DanB91/Send-Files

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

I haven't posted in a very long time, so i wanted to give you a update what is going on with my project FPL and about myself.
The short version of that is: Since feb 2026 i fully switched from windows 11 to cachyOS, an arch-based operating system and are working very hard to finish up "final_platform_layer" that will be released this year, that contains all backends i want.

The long version are much more complicated, so here it is:

For the last couple of years i was working on several projects - including final platform layer version 0.9.9 which was released in 2025.
This contained a lot of bugfixes and finally had support for multi-channel audio playback - which was very important for me.
After that, i basically lost all motivations to work on any private development at all for many months - due to my daily programming job and other reasons.

Somehow i got over that, i wanted to do code again - but more in a fun way, so i started writing several emulator prototypes and the result was:
A chip-8 emulator and a crappy game boy emulator that barely works. The chip-8 emulator was easy, but was very limited to the nature of the chip-8 platform.
But i was not satisfied with my game boy emulator, so i watched "The ultimate gameboy talk by CC3C" and several other articles and started over.
After 3 or 4 months i finally had a working game boy emulator that can play a lot DMG games, including sound and i was really happy about it.

That emulator was using FPL as its backbone already, so i decided it to use it as a demo-project for FPL as well.
Since then, it is now included in the "demos/" folder and the emulator itself is its own single-header-file library in the root of the final_game_tech repository.

Seeing a working emulator based on my libraries motivated me a lot, so i started doing more programming again and got back to FPL, fix bugs, added more backends, clean it up, etc.
At the same time i was switching from windows to linux, because i was sick of windows once and for all. Fortuntaly i am very familiar with linux, so switching was not that hard.
In addition i started using AI for troubleshoot linux issues or help me in understanding stuff better.

Of course i am also using AI as a tool to improve my programming skills, learn new techniques, help me find bugs and even implement new features.
For that i use local LLM's and premium AI's that actually costs me money. Fixing bugs is the most valuable for me, because it saves me a ton of time and headaches.

Now we are in the second quarter of 2026 and FPL got a ton of updates:

  • PulseAudio backend
  • PipeWire backend
  • Reworked Input System
  • Much better joypad linux input support
  • DirectInput support
  • Tons of fixes and updates related to linux and POSIX

The source file is now very huge with 1,2 MB and 33k lines of code - but it is still compiling very fast due to its single-header-file nature.

My gameboy emulator called "Final Game Box" is now complete and even supports game boy color.
It is by far not comparable against well-known emulators such as sameboy, mGBA, etc. but it can run and play tons of games, including my favourite game "Shantae" ;-)

So the plan is to finish FPL this year - releasing version 1.0 that contains everything that me and users wanted for this library, but still be bare-bone like FPL was meant to be.

Of course, windows will still be supported. For that reason i have a full windows virtualized setup with GPU passthrough, so i can work on FPL inside windows as well.
But my main focus is linux and unix now using CLion as my primary IDE.

Stay tuned for updates.

https://www.youtube.com/watch?v=xejC5t22YoA been experimenting recently with some super weird color pickers!

View original message on Discord

I'm working on a voxel game and recently completed a big refactor of the chunk meshing. When I initially added the baked ambient occlusion, the frame rate became unplayable in the debug build and I had noticable hitches in release builds. The problem was that when I meshed a chunk, I had to sample from the 26 neighboring chunks to be able to calculate AO and to cull hidden faces. The slowness was likely do to lots of cache misses fetching blocks from the different chunks. My refactor took inspiration from "dual grid tiling" where instead of meshing each chunk, I mesh a quarter of 8 chunks...a reduction of over 3x. I create a bit mask of solid voxels per row. Because my chunks are 16x16x16, I can combine the bitmask for a row of voxels from two chunks into a single u32. Since I only mesh the center 16x16x16 area, I now have instant access to neighboring voxels, and can calculate face visibility and AO for the entire row with only a couple of CPU instructions. This massively improved performance such that I am maintaining 60fps+ even in debug build when meshing new chunks. The noise calculation is done on a separate thread, and meshing is currently done on the main thread.

View original message on Discord

&Muze Got panels working and sound output (kinda).

View original message on Discord
  • more metrics
  • added hints for metrics
  • fixed bug so plot lines go through the end
  • calculated the rates of the metrics since the linux /proc files just add them cumulatively

still need to fix some bugs and test all the metrics but at least its a bit usable now

  • more metrics
  • added hints for metrics
  • fixed bug so plot lines go through the end
  • calculated the rates of the metrics since the linux /proc files just add them cumulatively

still need to fix some bugs and test all the metrics but at least its a bit usable now

Another video for hand made watch party, last one didnt show what the app could do that much.
Here is the link.
https://youtu.be/uVWwBdwP5CU?si=v9u2c2hDkETfZ_lZ&t=374

hi folks. I am curretnly working on an Intel VMX x86-64 type 1 hypervisor. It's implmented a linux kernel module. I'm not sure if anyone here is interested in this kind of stuff. but feel free to check out the updates. if there are any experts in this particular kind of work. I would really appreciate your input .
https://github.com/chrinovicmu/relm

View original message on Discord

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

View original message on Discord

Hi everyone! I recently built a DOD based Zero copy human readable configuration parser and supports Mutations (Educational & Experimental) all while keeping no_std support and low memory usage.
Instead of traditional AST tree nodes, everything parses into flat vectors, and it uses a Arena based mutation. I benchmarked it against TOML Edit and Serde (No other direct competitors unfortunately): Exlex can cold start with 16 heap allocations vs TOML's 13,000+.
Source code is available, Bug reports and constructive criticisms are welcomed: https://github.com/cychronex-labs/Exlex
&exlex

View original message on Discord

Didn't finish &robotype within the jam itself but I thought it was worth finishing. It can be downloaded here: https://el-tejaso.itch.io/robotype

View original message on Discord

A shorter and better version of Demo for pencil.

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

I've been building an arcadey space shooter in Jai for a few months now. It's finally at the point where it's fun to play, so now I'm working on expanding it into something shippable.

View original message on Discord

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

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