video game write-offs

2026-04-08

It seems that companies might have very good reasons to hang on to a video game IP even if they have no intention of using it. I imagined this would mainly be to prevent another company from using the IP, but Michael Cain, a developer on Arcanum, has another reason: taxes!

When Microsoft bought Activision, they had to assign a dollar value to every "dead" IP they acquired—including Arcanum. Let’s say they assigned it a value of $5 million.

If Microsoft decides they will never make Arcanum 2, they can write that $5 million off as a total loss to lower their tax bill.

So that means that if anyone wants to buy the IP, even if Microsoft is never planning on doing something with it, it can still be more valuable to sit on it. It's worth more as a tax-shield than a source of revenue.

the light of a CPU

2026-04-08

Just quoting this tweet.

I would like to make my apologies for defending M$, but I must from time to time. I have to put respect on github for handling the amount of shit code that has been added over the last 3 months. literally 10s of billions of lines of code that will never see the light of a CPU

It does a good job of describing something that I've been wondering. How many of those lines of code are written only to never ever run anywhere?

once the ball is rolling

2026-04-07

It can be hard to go from 0 to 1. But once you're there, it's much easier to go from 1 to 2.

I was reminded of this today when I looked at the YT stats for the marimo channel. It took 6 months to get our first 500,000 views. But it only took 3 months to go from 1,000,000 to 1,500,000.

notes on youtube and devrel

2026-04-01

I've been doing developer relations for over five years now, and YouTube has been a big part of that. The marimo channel sits around 1.5 million views and 10k subscribers after a year, so I like to think I've learned a thing of two that others might learn from.

I'm writing this for DevRel people who might be curious to upload videos to share their (hopefully good) ideas.

  • YouTube is a huge. It stands as one of the largest search engines ever now. If you have a tool that's worth knowing about, odds are people are going to learn from it by searching on YouTube as opposed to Google. That means that either you put a video there such that you can own the message, or you're going to have to accept the voice of some influencer to do this for you.
  • Thumbnails and titles are important. People click before they watch something. As always in life, try to keep things simple. You can overdo it with thumbnails. But a small pro tip. Try to go for a background that's common across all the videos. That way if someone likes your content, your background is a thing that they will recognize.
  • Hooks matters less than story. Grabbing a hook to pull someone's attention tends to be common advice, but it will only get you so far. If you overpromise, people will remember and it's your job to stand out as a reliable source of information. So instead of worrying about the introduction, maybe you should worry about the full story of the video first. Once the story is solid, making the introduction is going to be a lot easier.
  • Short form content is increasingly becoming the norm. It's content that's easier to make, easier to get high view numbers for, but it's also content that shows up much less when users search for you.
  • Subscribers matter way less than they used to. It used to be the case that the algorithm would favor a high subscriber count. It feels that that's less the case. It's more preferred that you have a video that is watched till the end.
  • Resist the views temptation. Views, that's the thing that's measurable. But that's also a distraction. Remember that anything you do on YouTube is meant to be a funnel for "another thing" you're trying to promote. Views matter less than that "other thing". It's not necessarily the case that download numbers correlate with view counts on YouTube. So you want people to see your video, sure, but the video should also convince people to do something after they see it. Influencers might care more about viewcounts for their sponsors, but you should care
  • Analytics are deceiving. A view doesn't imply a single person saw one video. If it's a YouTube short a view is counted twice, or even three times, if the video loops back to the start. More important metrics exist, like number of (new) viewers, but these require a drill down in analytics.
  • Show don't tell. Too many videos don't take the actual efforts to even run a line of code. When you're doing developer relations, you're talking to adults here. So why would you repeat what's listed on the documentation page? Go a step further. Be enthusiastic. Show that you care!
  • Having a popular channel is very valuable. When the channel was small, it was hard for us to find guests who might want to appear on a livestream. Now that the channel is bigger, there's a lot more inbound for this. Sure, it might take a year before you get there, but do consider it's an investment. One that can pay off well.
  • Buy decent gear. The camera matters less than the microphone. But you can't expect to get people to take your video serious with a potato quality video.

Just some points, feel free to take a lesson out of it. I also have this video and this video on my recording setup for extra details.

prune early and often

uv is amazing but it does come with a sneeky little downside. Every time and you create a cache there's a good chance that it will stick around for-ever. Especially if you create many demo projects with their own environment.

That's why, like flossing, you'll want to frequently do this:

uv cache prune 

Just today this saved 168.2Gb from my drive!

marathon data

This paper had an interesting chart:

Uploaded image
The time it took for a large group of people to finish a marathon.

Notice how this marathon chart has spikes at precise half-hour marks? These numbers are self reported and they also serve as an interesting reminder not to trust data at face value.

3b1b setup guide

2026-03-25

This is an AI generated guide I wrote for myself that I put up on my blog for safekeeps.

This tutorial covers how to replicate Grant Sanderson's interactive math animation environment (as seen at the start of this video) using the ManimGL engine and the uv package manager.


1. Environment Initialization

Grant uses ManimGL (the OpenGL version), which allows for real-time interaction. Use uv to manage the specific legacy dependencies required.

# Create project and pin stable Python version
mkdir math-animations && cd math-animations
uv init
uv python pin 3.12

# Install ManimGL and legacy compatibility tools
uv add manimgl "setuptools<70.0.0"

2. Fixing LaTeX Dependencies

Manim renders math via LaTeX. If you see .sty file errors, you are likely using a minimal LaTeX install (like BasicTeX) and need to add specific packages via your terminal:

sudo tlmgr install calligra relsize standalone preview doublestroke fundus-calligra

3. The Interactive Script

Create start.py. This script uses self.embed() to open the interactive window and an IPython terminal simultaneously.

from manimlib import *

class InteractiveScene(Scene):
    def construct(self):
        plane = ComplexPlane()
        self.add(plane)

        # Input Dot (Yellow)
        dot = Dot(color=YELLOW).shift(RIGHT)
        self.add(dot)

        # Output Dot (Pink) following w = z^2
        out_dot = Dot(color=PINK)
        out_dot.add_updater(lambda m: m.move_to(
            plane.c2p(plane.p2c(dot.get_center())**2)
        ))
        
        # Visual trail
        trace = TracedPath(out_dot.get_center, stroke_color=PINK)
        self.add(out_dot, trace)

        self.embed() 

4. Running the Setup

Execute the following command:

uv run manimgl start.py InteractiveScene

5. Interaction Controls

Once the window opens:

  • Mouse: Click and drag the yellow dot to see the pink dot react.
  • Terminal: Type dot.set_color(BLUE) in the IPython prompt to see the change live.
  • Camera: Right-click and drag to rotate into 3D; use Z + scroll to zoom.

From ride to movie

2026-03-22

Pirates of the Caribbean supposedly went ride to movie, not the other way around. The Disneyland attraction opened in 1967 and supposedly it was one of the last projects Walt Disney personally worked on before his death. After more than 35 years of the attraction entertaining guests, the story was adapted for the screen (Disney Gallery archive).

What I like about this is the reminder that at if you have multiple assets that they can inspire each-other in both directions. Disney has a bunch of movie-inspired rides, but that doesn't mean there can't be a ride-inspired movie.

I'm sure this effect can go well beyond movies and across other aspects in industry too. Food for thought.

The Sediment of Software Chart

2026-03-08

I started maintaining a new project that tracks the evolution of a Github repository using "sediment" charts. The final output is a Github Pages site that lets you explore sediment charts for different Python projects. Here's one example for the sentence-transformers library.

Uploaded image
There's not a whole lot of action between 2022-2024. But then huggingface took over maintainership.

These charts track each line of code in the project and how it's changing over time. The resulting chart looks like layers of sediment that changes over time.

For Python projects you can also overlay the version number, to try and get some extra context. Usually, Bitco changes coincide with the new version, like with the Django projects shown below.

Uploaded image
Around version 4 you can see a big shift where a lot of *recent* code is changing. Maybe they updated the docs here? Or possibly switches from flake8 to ruff?

I like to think these charts also say something about the health of a project. A good project shows more code being added over time, but without huge changes to past code. The most healthy image I found so far is for marimo. This is my employer, and it is nice to see how the chart matches my experience with the culture there.

Uploaded image
This project is relatively young, so time is measured in quarters instead of years.

Over time I hope this project might track the effect of coding agents. Are we going to see a big spike up? Is it going to rewrite everything from the past? Time will tell, but these charts will give me a nice summary. If you are curious you can run the notebook yourself if you want to give it a spin for your own projects.

I also recorded a YT video for this work here, if you prefer to see a live demo.