Visibility Jam. July 19-21, 2024. See the results.
Featured
Recent
News

&zbiggestprocess jokes, last minute addition to show historical max peak mem usage process. We have new winners 🙂

View original message on Discord

&ldl Floyd's Algorithm has one pointer moving at 1-step per iter, and another at 2-steps per iter
This makes the initial step of "find node in loop" take 3-steps per iter
Brent's Algorithm reduces this to 1-step per iter by having one pointer at 0-steps per iter and another at 1-step per iter
By periodically updating the stationary pointer every power of 2, you'll find a node in the loop (and the loop length) faster
Now that you have the loop length, you can use the same method as before to find the start of the cycle

View original message on Discord

&ldl Added sliders, hit testing, and lots of polish

View original message on Discord

&ldl added some sliders, hit testing, and lots of polish

&zbiggestprocess Calling it there for the jam. Added peak memory usage stat. Overlay always displays the process with the biggest working memory set. I ended up not implementing the system tray, so with all unnecessary code removed the program is less than 100 lines of code.
I thought about always showing the process with the highest historical peak memory usage, but that always was a process called Memory Compression (must be some windows internal thing), so not very useful. Overall I'm surprised by how much I learned and how fun this little program was to make. Goes to show that even small contributions to jams can be quite rewarding.

View original message on Discord

I lied 😁 I was able to use the existing visualization stuff to make a pretty solid interactive live view of core data in the application. All entries are sized and laid out exactly as they are in memory (although some large things are clamped to a maximum width for readability). &llmv

View original message on Discord

&cli2gui finally got it to work! Here I'm showing a bit of how the UI reacts to resizing. Time to sleep 🙃

View original message on Discord

&wmshowwindow I would not consider it finished, but I am releasing my project as it is the end of the jam. While other obligations meant I didn't have too much time to work on it, I found that I ran into a lot of challenges along the way, most remain unsolved. I had some trouble with the window positioning (console positioning with a top-positioned taskbar is still broken). The most troublesome issue was the lag I experienced. It's present in the console version, but becomes particularly obtuse with the edit control version. I experimented with a few things to reduce this lag (reusing the same wndproc, altering when the logging takes place), but to no avail.

I would be lying if I said I was happy with how this turned out, but releasing nothing doesn't feel right, either. Therefore, I've decided to release the code and a build of the master branch "as is". While I did not come away with a nice way to view window messages, I did gain an appreciation for just how much is going on behind the scenes every time basically anything happens in the GUI, and how easy it is to encounter lag and problems if the saber dance taking place inside your wndproc isn't perfectly performed.

GitHub Repository: https://github.com/errorsuccessdev/VisibilityJam2024
Download: https://github.com/errorsuccessdev/VisibilityJam2024/releases/tag/1.0

View original message on Discord

This might have to be where I call it for this jam. There's more I wanted to do, but I'm struggling to get through it after three full days of jamming. Still feel good about the base I've built up, and I feel like if I come back after a break, I'll be able to do a lot more fancy visuals than just the structs shown here. &llmv

View original message on Discord

&nitka now has very ugly text rendering, which pushes this prototype into the "barely useful" stage! You can actually see which stages of the CPU pipeline are taking more cycles than expected

View original message on Discord

&cli2gui I'm sooo dang close, but I'm having trouble creating a process and reading the lines from it in a non-blocking way.

For context (since I didin't post anything about it before), for Visibiliy Jam, I'm creating a tool which allows you to construct simple user interfaces for common tasks normally done with CLI tools.

Also, not shown here in the video, but the user interface is resizable and adjusts somewhat, I spent most of the jam creating the UI framework instead of working on the functionality, which I guess is fair since my app has gui in the name :)

View original message on Discord

Version 0.1 of Process Spy is now available as a zip download in the github repository: https://github.com/PiggybankStudios/ProcessSpy/blob/master/release/ProcessSpy_0_1.zip

There are a bunch of things I wanted to do that I ran out of time for in the jam time window. But I plan to add a lot more features in the near future. Being able to interact with the icons in the main viewport to identify which process icon is which is one of the main things. Also adding animations to the icons so you can more easily see when accesses are occurring, and how many. I also really want to add some filtering options so you can only see certain kinds of access events, or only events for certain processes

SuperHTML showing errors when you write bad HTML. &superhtml

View original message on Discord

Starting to visualize the pool allocators in my old regex builder. &llmv

View original message on Discord

&zbiggestprocess My GDI overlay seems to correctly display stats from the process with the biggest memory footprint. Funnily enough its Discord. Not only that, I seem to have discovered that Discord does some wild allocations and deallocations simply from moving the mouse :kekw:

View original message on Discord

and finally, interactivity &hexplorer
the new jump list allows you to quickly find global variables, stack frames, or instances of a given type.
you can now follow pointers by clicking their values.
and, among other things, the new inspector shows you the incoming and outgoing pointers for the selected object.

View original message on Discord

As promised: editing. Now the algorithm correctly classifies the situation when you rename a node somewhere in the tree. &diffest2

View original message on Discord

Using ssh X11 forwarding to test my camera program on raspberry pi remotely, tonight I added manual/automatic controls for white balance and exposure and IR cut feature 😄

View original message on Discord

&zbiggestprocess jokes, last minute addition to show historical max peak mem usage process. We have new winners 🙂

View original message on Discord

&ldl Floyd's Algorithm has one pointer moving at 1-step per iter, and another at 2-steps per iter
This makes the initial step of "find node in loop" take 3-steps per iter
Brent's Algorithm reduces this to 1-step per iter by having one pointer at 0-steps per iter and another at 1-step per iter
By periodically updating the stationary pointer every power of 2, you'll find a node in the loop (and the loop length) faster
Now that you have the loop length, you can use the same method as before to find the start of the cycle

View original message on Discord

&ldl Added sliders, hit testing, and lots of polish

View original message on Discord

&ldl added some sliders, hit testing, and lots of polish

&zbiggestprocess Calling it there for the jam. Added peak memory usage stat. Overlay always displays the process with the biggest working memory set. I ended up not implementing the system tray, so with all unnecessary code removed the program is less than 100 lines of code.
I thought about always showing the process with the highest historical peak memory usage, but that always was a process called Memory Compression (must be some windows internal thing), so not very useful. Overall I'm surprised by how much I learned and how fun this little program was to make. Goes to show that even small contributions to jams can be quite rewarding.

View original message on Discord

I lied 😁 I was able to use the existing visualization stuff to make a pretty solid interactive live view of core data in the application. All entries are sized and laid out exactly as they are in memory (although some large things are clamped to a maximum width for readability). &llmv

View original message on Discord

&cli2gui finally got it to work! Here I'm showing a bit of how the UI reacts to resizing. Time to sleep 🙃

View original message on Discord

&wmshowwindow I would not consider it finished, but I am releasing my project as it is the end of the jam. While other obligations meant I didn't have too much time to work on it, I found that I ran into a lot of challenges along the way, most remain unsolved. I had some trouble with the window positioning (console positioning with a top-positioned taskbar is still broken). The most troublesome issue was the lag I experienced. It's present in the console version, but becomes particularly obtuse with the edit control version. I experimented with a few things to reduce this lag (reusing the same wndproc, altering when the logging takes place), but to no avail.

I would be lying if I said I was happy with how this turned out, but releasing nothing doesn't feel right, either. Therefore, I've decided to release the code and a build of the master branch "as is". While I did not come away with a nice way to view window messages, I did gain an appreciation for just how much is going on behind the scenes every time basically anything happens in the GUI, and how easy it is to encounter lag and problems if the saber dance taking place inside your wndproc isn't perfectly performed.

GitHub Repository: https://github.com/errorsuccessdev/VisibilityJam2024
Download: https://github.com/errorsuccessdev/VisibilityJam2024/releases/tag/1.0

View original message on Discord

This might have to be where I call it for this jam. There's more I wanted to do, but I'm struggling to get through it after three full days of jamming. Still feel good about the base I've built up, and I feel like if I come back after a break, I'll be able to do a lot more fancy visuals than just the structs shown here. &llmv

View original message on Discord

&nitka now has very ugly text rendering, which pushes this prototype into the "barely useful" stage! You can actually see which stages of the CPU pipeline are taking more cycles than expected

View original message on Discord

&cli2gui I'm sooo dang close, but I'm having trouble creating a process and reading the lines from it in a non-blocking way.

For context (since I didin't post anything about it before), for Visibiliy Jam, I'm creating a tool which allows you to construct simple user interfaces for common tasks normally done with CLI tools.

Also, not shown here in the video, but the user interface is resizable and adjusts somewhat, I spent most of the jam creating the UI framework instead of working on the functionality, which I guess is fair since my app has gui in the name :)

View original message on Discord

Version 0.1 of Process Spy is now available as a zip download in the github repository: https://github.com/PiggybankStudios/ProcessSpy/blob/master/release/ProcessSpy_0_1.zip

There are a bunch of things I wanted to do that I ran out of time for in the jam time window. But I plan to add a lot more features in the near future. Being able to interact with the icons in the main viewport to identify which process icon is which is one of the main things. Also adding animations to the icons so you can more easily see when accesses are occurring, and how many. I also really want to add some filtering options so you can only see certain kinds of access events, or only events for certain processes

SuperHTML showing errors when you write bad HTML. &superhtml

View original message on Discord

Starting to visualize the pool allocators in my old regex builder. &llmv

View original message on Discord

&zbiggestprocess My GDI overlay seems to correctly display stats from the process with the biggest memory footprint. Funnily enough its Discord. Not only that, I seem to have discovered that Discord does some wild allocations and deallocations simply from moving the mouse :kekw:

View original message on Discord

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:

  • Showing off activity from Discord. The website forums aren’t used much these days. The Discord, on the other hand, is thriving. With well over 7,000 users, thousands of messages sent per week, and a steady stream of #project-showcase posts, the Discord is the most active part of the community right now. The new website design puts that content front and center. The new feed-focused design prominently features the work being shared on Discord, right alongside the other content typical of the website.
  • Your own customized feed. If you’re logged in, you can now follow users and projects here on the website. The home page will show you a new Following feed of just the content that matters most to you. In the near future, we’ll add RSS support for this feed as well, enabling you to keep up with community activity in whatever way you prefer.
  • Tons of improvements to projects. Handmade Network projects have been overhauled, making important information much more prominent and totally redesigning the project-editing experience. The new link editor replaces the confusing old textual format, and the distinction between primary and secondary links enables project authors to highlight the actions that are most important. Plus, projects now support header images, allowing you once again to show off what your project is capable of outside the long description.

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.

The Visibility Jam is just two weeks away!

TwitterCard.png

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:

  • We’re doing more jams. In addition to the Learning Jam, we’ll bringing back both the Visibility Jam and Wheel Reinvention Jam for another year—and plan to keep doing so indefinitely. The Visibility Jam will be in July, while the Wheel Reinvention Jam will be September. See this page for all the details.
  • We’re doubling down on Unwind. Our monthly Twitch show Unwind is an opportunity to dig deeper into technical details with the authors of various projects. The first few episodes have been a great time, but there’s so much more we can do with the show, and we hope to increase the show’s reach so that even more people can be aware of the great work being done by members of the community.
  • We’re redesigning the website. The current website design is very old, and doesn’t do a good job highlighting the actual work people are doing. Additionally, although the project system has been working pretty well for jams, there are many quality-of-life issues. The wonderful Jes Chuhta has been crafting a new design for us, and Asaf and I have been implementing it this month. In fact, I’m streaming the work every Monday and Friday this month over on Twitch.

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.

    A screenshot of Disk Voyager's new bookmarks panel

  • 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.

    A screenshot of Cactus Image Viewer's new gallery UI

  • 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.

Two communities? Not quite.

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.

What about Handmade Hero? How's that going?

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!

Orca's UI

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.

Jam! Jam! Jam!

Wheel Reinvention Jam: September 25 - October 1

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.

Why reinvent the wheel?

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!

boston.jpg

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/.

Orca is nearly ready…

Screenshot 2023-08-18 at 10.56.49 PM.png

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

The Wheel Reinvention Jam is a month away!

TwitterCard.png

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.

Around the community

Finally, I just wanted to highlight a few fun and noteworthy things that have happened in the community over the past month:

  • We had a whopping 100 updates shared in our #project-showcase channel on Discord in the last month alone. And these are some high-quality updates! NeGate got an NES emulator to build using his new C compiler Cuik and backend Tilde, which is now being integrated into the Odin compiler. Saalty also got an NES emulator up and running, but on bare metal using his own custom bootloader and kernel. And after years of work, torogadude released a demo of his game Puppetmaster on Steam, and you can go try the demo and wishlist it now!
  • Programming YouTuber Tsoding published a video delving into the GDB frontend gf, made by our very own nakst, the creator of the Essence operating system. It’s a very entertaining watch - Tsoding crashes the debugger while debugging his own program, and in just an hour is able to debug the debugger using the debugger, isolate the issue, and submit a pull request to fix it. It’s a testament to the quality of nakst’s code that someone entirely new to the project is able to dive in and immediately fix their issue!
  • WhiteBox continues to receive amazing updates, now with concurrency support, and a disassembly view that gives you rich information about control flow at a glance. I love to see new ways of visualizing low-level programming concepts - programmers have deserved better UI for a long, long time.

Until next time…

…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:

  • We announced Orca, a new toolkit for cross-platform WebAssembly apps.
  • We launched Time Machine, a community project where we collect video of old devices to see how the experience of computing has changed over time.
  • We hosted the Visibility Jam, a jam where we make invisible things in computing visible.
  • We held another fishbowl about software testing, and we’ll likely revisit this topic in the future.

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

an Orca app running on both Windows and Mac

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!

Time Machine

image.png

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.

Wheel Reinvention Jam: September 25 - October 1!

WRJ2023TwitterCard.png

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.

Final remarks

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!

Education: diving deep on networking

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!

Time Machine: reminding ourselves how things used to be

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.

****: the Handmade answer to ********

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 >:)

Community events

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

Hello everyone! Just dropping by to make three announcements of upcoming events and projects here on the network over the summer:

1. Fishbowl on Saturday, May 28

Our next fishbowl conversation will be happening on the Discord on May 28! If you've never joined us, a fishbowl is essentially a panel conversation held over text chat, where a select few participants can hold a focused long-form discussion on a specific topic. We're a big fan of this format because of the way it allows participants to write thoughtful, long-form answers that would be impossible in any other medium.

We've had fishbowls on the future of operating systems in the age of the Internet, the relationship between simplicity and performance, "configuration" and how to avoid it, and many other topics. This time we are excited to tackle a subject near and dear to all our hearts: object-oriented programming.

We hope for this to be the definitive community conversation about OOP, since it's such a frequent topic of conversation and such a confusing issue to discuss. If you'd like a preview of the topic or would like to contribute thoughts or resources, please check out the planning discussion over on GitHub.

The fishbowl will be held in the #fishbowl channel on Discord at noon CDT. To see the time in your local timezone, and be notified when the fishbowl starts, bookmark this whenisit page!

2. Jam in August

We've held two jams as a community in the past, and they have both been smashing successes. In particular, last year's Wheel Reinvention Jam produced tons of great projects and introduced us to lots of amazing community members. Naturally, we're going to do another jam this year!

We are still working out all the details, so a proper announcement and final dates are yet to come. But we will confirm that this year's jam is happening in August! Expect it to follow a similar format to prior years—so, one week, and working in teams is allowed and encouraged.

More soon. 🙂

3. A new education initiative

This project is still in its early stages, but too exciting not to tease. Spearheaded by long-standing community member cloin, we are hard at work behind the scenes on a new kind of education initiative for programmers. This new initiative will subsume and replace the old library, which we know many people sorely miss, and will also hopefully live up to the dream of the old wiki and old education initiative.

We are very excited to share more about this project with you in the coming months. For now, if you're interested, nag us on Discord and maybe we'll drop a few more hints. 😉

A call for volunteers!

These are just a few of the projects we have in the works for the coming year, and there is even more we'd like to be doing. We'd love to get more people involved in the following:

  • Helping maintain the website and build new features for the community
  • Developing and organizing starter projects for people to use (particularly for the jam)
  • Beta testing new initiatives

If you're interested in any of these, please reply to this post or hit us up on Discord!

Happy New Year, Handmade Network! I hope you all had an amazing holiday season, and I hope you're all looking forward to 2022 as much as I am.

The Handmade movement had a huge year in 2021. The Handmade Seattle conference, hosted by former Handmade Network staff member Abner Coimbre, brought the community together for yet another time, even in the face of the many changing circumstances that 2021 held in store. We on the Handmade Network staff team hosted the Wheel Reinvention Jam, and we had a number of very well-done project submissions. Ben Visness and Asaf Gartner rewrote the entire Handmade Network website backend in preparation for some huge features that are slowly making their way onto the website.

This is, of course, only an incomplete list. The real list of all of the great things that happened for the Handmade movement in 2021 is not enumerable. But let's dig into these.

Handmade Seattle 2021

Abner Coimbre successfully hosted Handmade Seattle for a 3rd year in the face of consistently changing circumstances - local regulations for COVID-19, traveling restrictions for international Handmade community members, and many other things I don't know about or understand. Handmade Seattle, in 2021, hosted 25 different presentations, all being either talks, demos of Handmade projects, or podcast episodes. The conference happened both live in-person and also virtually.

I'm not exactly sure how he manages it, but with each year, Abner has produced a better conference, in the face of COVID-19 restrictions, all while staying independent without any corporate sponsorships. I had the privilege of attending in-person, and I was amazed with how smoothly everything went.

I'm here to tell you that the media - talk recordings, demo videos, podcast episodes - from Handmade Seattle 2021 is starting to roll out, so you can enjoy all of the content from the conference for free, even if you missed it originally. To check it out, go here.

Wheel Reinvention Jam

As I mentioned, the Handmade Network staff hosted our "Wheel Reinvention Jam" back in October. This was like a game jam, but instead of being for games, it was all about taking existing "boring" software - the kind of stuff that we regularly depend on as users, like file explorers, word processors, and more - and innovating on it. To put it shortly, the jam was a huge success, and we got a number of amazing project entries.

We on the admin team also did a stream to show off some of our favorite projects. And then, something horrible happened: I lost the recording. Long story short, I downloaded the recording, and unknowingly permanently deleted it as I was cleaning off my desktop one day. In other words, I had a very important lessons about backing up important data on my machine.

Hope was, as far as I was concerned, lost.

But I was mistaken - hope is never lost in a community with a hero protecting it.

Martins Mozeiko, the resident programming wizard in the community, has an automated system set up that records stream VODs so he can enjoy them at his own pace after they air. He had a copy of the stream's recording!!!

So, I'm here to report that - because of Martins - you all have the ability to watch the Wheel Reinvention Jam recap stream. Here it is:

Personal Projects Update & Discord Integration

Ben and Asaf have been hard at work at the admin team's plan for projects on the Handmade Network website. We realized that the #project-showcase channel on the Discord server was so popular because so many projects didn't fit the original model of projects on Handmade Network. These projects were smaller, sometimes not intended to be finished, were experimental and not well-established, but nevertheless demonstrated very great results that people love to see. We figured that this prevalent force in the community - of those who are working on such projects - should be reflected in the services we offer on the website.

Now, Handmade Network has two tiers of projects: Personal Projects, and Featured Projects. Personal Projects can be created by anyone, and do not require approval by the admin team. They give you a place to host media for your project.

Featured Projects are similar to the old Handmade Network website projects; they are like personal projects, but are upgraded with a number of features (forums, episode guide, etc.), and they are presented as being featured (and thus hand-picked by the admin team).

The most awesome part of all this comes with how media is managed for these projects. For a while now, we've had the Community Showcase section of the website - these are posts from the #project-showcase Discord channel of people showing off work on their projects. We've upgraded this system to also allow associating some of those posts with projects (and other things) through tagging.

On each post, you can add tags: Here is a screenshot of my awesome work on &hero for the &cooljam. Each word that follows a & symbol refers to one of these tags. Each project gets one tag name, that it can use to pull in certain resources. And, other things can have tags too (like jam events), that can categorize posts in other ways.

Posts that are tagged will not only go to the regular Community Showcase section of the site, but they'll also be pulled onto their respective project pages (and, yes, a post can be tagged to multiple projects).

Ben is writing a more in-depth post about this. It'll be released shortly, so if you're looking for more details about how these new features work, you'll want to check that out when it's ready.

I am extremely excited for this new upgrade to the site's project features. Go and try it out!

State of the Network Podcast 2021

I've just released a new podcast episode I did with community member Rudy Faile, who interviewed me about the current state of Handmade Network, all of the things in the Handmade movement in 2021, and where we are planning to go in 2022. Check it out here!

Closing Remarks

One final remark I want to make is announcing a temporary hiatus for myself on my side-projects, including Handmade Network. In short, I'm taking at least a few months for self-improvement, to focus on some very important personal matters. Thank you to all of those who have expressed support - I'll be back at some point during this year, and I will keep my finger on the pulse of the community, because I'm so excited for what is yet to come.

That's all for the news, for now. Here's to a prosperous 2022, and let's continue moving the ball forward!

Best wishes, Ryan