2026 New Year Sale, and A Ton of Videos

First batch of Learn Go the Hard Way Videos are Live

By Zed A. Shaw

2026 New Year Sale, and A Ton of Videos

You can read this email at https://learncodethehardway.com/emails/25-winter-sale-and-the-vulkan-saga/

2026 New Year Sale

Happy New Year everyone. Hopefully everyone is having a great new year and will continue to have one in 2026.

Currently everything on my site is 15% off, including the Epic Supporter pack which gives you everything I have now, and will make in the future. If you've been waiting for a sale, then it's live now and will be active until Jan 15th.

The Sale: https://learncodethehardway.com/courses/

Shutting Down Discord

I'm going to shutdown the Discord in 2026 as I want to reduce the number of services I have to manage going forward. I haven't checked into Discord in many months and it's honestly not as good as email for helping people. I may try to start some other kind of community collaboration service, but I'm not sure what. It'd have to be something that is very low effort to manage and isn't really tied to a company doing weird things for weird reasons.

You'll get another email in the future when it's officially dead, and I'll be booting everyone out and closing it so that nobody can come and squat the name to take advantage of unsuspecting beginners.

DASH-VP9 Status

The DASH-VP9 videos are live, but there's a few issues I've been too busy to fix. I'm hoping to hit it this week, and then once it's working I'll roll it out across the whole site. I even bought a Arc A380 GPU to see if its built-in encoder will speed things up enough to switch to AV1. That'd be awesome if I could, but I'm not holding my breath given the AV1 encoding time is about 18 hours per 30 minutes of video.

If you try the videos in the Go Course and they have problems please report to me the following:

  1. OS
  2. Browser and Version
  3. Try other browsers too.
  4. Any JS exceptions from Console.

The code for the tool I made to compress these videos can be found here:

https://lcthw.dev/go/vidcrunch

It's open source, and your feedback will be incorporated into this code so other people don't have to suffer through this stupidity again. I'll also be writing up a short guide on how to solve many of these video hosting problems.

My Practitioner Meta-Series

In 2026 I'm going to publish more cohesive series from my live streams that I'm dubbing The Practitioner Meta-Series. The idea is that there's not too many people that create small-ish projects from start to finish in a way that someone getting started can study. I feel as if posting what a "real programmer" actually does could help folks cut through weird beliefs some people have about how people actually code. The series will follow a typical format:

  1. Either learning something people say is "impossible" or implementing an idea in a short amount of time.
  2. Small cohesive videos that are under 2-3 hours, easy to watch casually while you work, and hide nothing about the process.
  3. About 6-10 videos at a time, unless the topic is really complex so might be more.
  4. Focusing on getting a first version going that demonstrates the idea of "Making many little projects is better than one giant project."

I have two series right now that you may be interested in:

A Weird Game I Made in Go

This is the Turing's Tarpit Series where I implement a "Roguelike for Programmers". This is a program that watches your files, and when you save it runs your build. If your compiler reports errors then you take "damage." Take too much damage and you'll die, which means you have to run git checkout . and try again. Thus the "roguelike" aspects.

You can see a demo of me playing it here:

https://x.com/lzsthw/status/2006544940659257560

Which is also another way to access the series...for you people who prefer Twitter/X over Youtube. Actually, who are you? Can you tell me why? I'm so curious.

Vulkan Saga on Youtube

I also started teaching myself Vulkan in C++ using the resource VKguide. You can view the Vulkan Saga which also features a parody of a certain Star Trek movie poster which--if you know Star Trek--should make this one of the most involved visual puns you've every witnessed.

I have 14 videos for this series but haven't finished editing them. I got to a point where I had to stop because vkguide uses fastgltf is a hot piece of garbage that not even a racoon would bother with so I stopped. The main issue is that fastgltf's author has changed the API in bizarre ways that don't improve anything, but that break all of the vkguide model loading code.

Once I get back to Vulkan my first task will be to rip fastgltf out of the damn guide and use anything with better docs than just "read my code bro."

My Thoughts on Vulkan Thus Far

If you've been curious about Vulkan, or heard from old-school graphics heads that "Vulkan is hard" then I have a few thoughts that might get you to try it:

  1. Vulkan is basically an extremely verbose transactional API for the GPU. Imagine if you could do SQL BEGIN/COMMANDS/COMMIT style transactions on the GPU and you've got Vulkan.
  2. For me this was way easier than OpenGL which was nothing but a bunch of "spooky action from a distance" function calls that seemed to magically connect variables with no explanation.
  3. This weird design to OpenGL is also why threads crash your games. It's obvious that OpenGL is not thread safe given it's use of sequences of functions to control an internal state machine.
  4. I think your average web developer would find Vulkan to make way more sense, since it's designed for multi-processing and is really similar to many things you use today.
  5. I also found that working with Vulkan on Linux was infinitely easier than doing the same on Windows. On Linux is just...did Vulkan. Didn't really install much. On Windows it was 2 days of installs and fixing PATH and other useless things just to get it to barely work.
  6. While Vulkan is complex, a lot of that complexity is from some odd design decisions like using huge enums in C to tag the types in structs and strangely verbose ways to configure the structs.
  7. Once I figured this out I was actually able to use nlohmann::json to configure Vulkan with a JSON file. Yes, take a look:

However, even though learning Vulkan is interesting, I think NVRHI is really what Vulkan should have been. I tried it out and it looks more promising, but it does have that weird kind of "works for me" build that many large companies make. The companion Donut framework is also pretty nice and something I want to play with more.

Thanks Again

Thanks again everyone, and I hope you have a good year,

Zed


More emails we've sent.

2026 New Year Sale, and A Ton of Videos

First batch of Learn Go the Hard Way Videos are Live

UpdatePublished Jan 1, 2026

A Whole New Video Infrastructure

First batch of Learn Go the Hard Way Videos are Live

UpdatePublished Nov 29, 2025

First Batch of Learn Go the Hard Way Videos

First batch of Learn Go the Hard Way Videos are Live

UpdatePublished Nov 10, 2025

Learn Go the Hard Way, Module 3 Almost Done

I have almost finished Learn Go the Hard Way, Module 3.

UpdatePublished Nov 7, 2025