Wheel Reinvention Jam

September 25 - October 1, 2023

A one-week jam where you start from scratch.

The Wheel Reinvention Jam is a one-week jam where we build software from scratch.

Why build things from scratch? Because that's the only way real progress is made. Every impactful project started life as a small experiment. Plus, writing something from scratch turns theory into practice. You may think you know how a piece of technology works, but until you write it yourself, it won't really stick. There's no substitute for direct experience.

And let's face it, most of the software we use is basically the same as it was twenty or thirty years ago. Our "wheels" are terrible! They need to be reinvented!

So take this opportunity to try something ambitious, something weird, an unfamiliar take on a familiar problem. Who's gonna stop you?

Recap show

Watch the livestream celebrating this year's submissions:

Submitted projects

Cactus Image Viewer

A lightweight image viewer written in C/C++.

Wassimulator

Aura

A build server. Lightweight, extensible, good.

abec

saw

A new experimental music sequencer.

Mitya Selivanov

kibi proof assistant

an interactive proof assistant

leddoo

Stvff's image splicer

Simple utility program for basic image editing in a way that I often miss in common simple image editors.

Stvff

org-mode clone

An org-mode clone

Joseph RIchards

ZUnderglow

ZUnderglow is a windows app to setup and control "underglow" for a vehicle.

Zeanith

Dragit

An experimental visual Git client with an emphasis on history editing.

Ben Visness

RDIC

Retained Data, Immediate Code. Hybrid of immediate mode and retained mode.

Zelaven

ShapeUp

A 3D modeling tool

Daniel Hooper

badpaint

An experimental real-time image corruption editor

Ahmaykmewsik

Exif Tools On A Gui

A GUI for viewing and overriding EXIF data on JPEG files.

rock0n

Organette

Programmable music box for the Playdate game console.

Amin Mesbah

Minecraft Clone in C++

Reinventing Minecraft for the millionth time

grootoakbeard
lfmutton
Releaf

Jymbo

Jymbo is a symbolic differentiation tool for scalar-valued functions.

therealjtgill

Rift Build

Because fuck make files

Ali

Discord Proximity Chat

Proximity chat for discord voice channels

bitwitch

lux-editor

A editor for dynamic light pixel art

biowater
Igor Fagundes [ifaresi]
Samuel Deboni Fraga

IMP

Immediate Mode Plotting (IMP)

CireNeikual
dev_dwarf

Sound Maker

WYSIWYG audio tool for sound synthesis, processing and experimentation

IcyLava

Halcyon Demo

A tool for building composable programs which can be embedded into a project via Lua.

Quentin Carver

Why reinvent the wheel?

We owe the name “Wheel Reinvention Jam”, and its logo, to Casey Muratori. 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 this 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.

How to participate

The jam takes place from Monday, September 25 through Sunday, October 1. Here's how you can participate:

Pick a project and form a team.

Find a project idea that excites you! Join the conversation over on our Wishlist, brainstorm ideas on Discord, or just invite some friends to jam with you.

Jam.

Create a Handmade Network project to track your work. Then, build your program! Share your work in progress in #project-showcase on Discord, or directly from your project page. Posts on Discord can be tagged so they automatically appear here on the website.

Submit your work!

Your Handmade Network project is your submission. Fill out the project description, making sure to explain the goals of the project and why you chose to build it. Also consider posting an update with video of your program in action!

Submissions are now closed.

Rules

  • Any tech is allowed. Popular tech choices in the community are Raylib, SDL, Dear ImGui, and microui. Or if you're feeling ambitious, you can even use our new app platform, Orca!
  • You may work solo or in a team.
  • Submit your work by the end of the day on October 1.

There are no explicit winners, but we will be selecting a few of our favorite projects to highlight in a recap stream following the jam.

Submission rules

Your Handmade Network project is your submission. We will be looking at the project's description and any extra updates you share toward the end of the jam.

  • Explain the project's goals and why you chose to build it. Also share some closing thoughts - did it turn out how you hoped? What did you learn? If you continue the project, what will you do differently?
  • Your description must contain multiple screenshots of your software in action. You should ideally also share a project update with a demo video. We recommend Mārtiņš Možeiko's wcap for recording desktop video on Windows. On Mac, just press ⌘-Option-5 and record a video, or use QuickTime.
  • If possible, please provide a way for people to either build or download your program.