Tobias Anderberg

Tobias Anderberg

@anderberg.bsky.social

Founder of Minimal Machines. Building creative software. 20+ yrs in graphics & game tech. Ex-Sony/PlayStation. Minimalist with too many interests.

128 followers19 following120 posts

Pinned

I ended up doing a complete rewrite of this and added iOS support. I now call it Otone: a native iOS and macOS audio notebook for musicians. Quick capture, sync, drag-to-DAW export.

Tobias Anderberg@anderberg.bsky.social

My guitar ideas used to be a fragmented mess across DAWs and phone memos. Finding a riff was an archaeological dig. So I deviated from graphics to audio and built Songnote, a native macOS app to organize and instantly audition song ideas. Now all that’s missing is some actual good ideas.

The great thing about being up at 4:30 AM is that you get a lot done in the quiet morning hours. The downside is that you have had a week's worth of coffee by 8 AM.

Got tired of looking at debug cubes while working on the reflection system. So added basic mesh rendering. Unfortunately, I'm equally tired of looking at Sponza having done so for at least 10 years at this point...

I found an old doodle of mine in one of my countless notebooks. Turned into a 3D character and I kind of like it. Feel like it could be a game character. Be a pain to rig though. Need a cool name for "it". Suggestions?

After a hiatus from everything I wanted to get back to graphics, so naturally I spent time revising my reflection system instead. I'm ok with the feature set, but it's too verbose. I detest macros for reflection though. Any suggestions for a clean reflection API?

For someone who's used to writing C++ with minimal external dependencies, seeing GPUI bring in about 426 dependencies is somewhat of a hard pill to swallow. But, see no evil hear no evil, I suppose.

Tobias Anderberg@anderberg.bsky.social

Starting to put together my own AI orchestrator so that I can build an... AI orchestrator? I'm a fan of tiling WMs so I wanted a tool with split view for multiple live sessions. Early+buggy, but kind of useful.

Starting to put together my own AI orchestrator so that I can build an... AI orchestrator? I'm a fan of tiling WMs so I wanted a tool with split view for multiple live sessions. Early+buggy, but kind of useful.

Working on a on-device ML discovery layer for surfacing previously recorded ideas that could work together. Still tuning the weights, but some interesting results already. Half the time I don't know what to do with my guitar snippets, and this is a "hey, you can pair it with these" ideation tool.

Decided to go on slight detour and get Arch Linux setup with Wayland+Hyprland and the zen kernel. Figured I also get my RHI test harness, which kind of turned into engine+editor+dynamic game module loading (you know how it is), up as well.

I'm all for coding agents and the improved workflows they enable, but there is something zen-like with just sitting in Vim writing the code without any helpers. I curse myself for insisting on using "-Wall -Wextra -Wshadow -pedantic -Werror" every time I add new platform support though...

1/ Some nostalgia. After so many years of Vulkan, DX12, GNM, et al, I kind of miss the old-school brutalism and elegance of mov ax,13h int 10h Those two beautiful lines was how I started my game/graphics programming journey on PC (Commodore 64 before that).

View full thread

3/ Almost all of those initial graphical adventures were a side effect of not fully understanding what I was doing. But even when completely screwing up the VGA frame buffer at that glorious 0xA0000 address, it always lead to a bunch of "oh, that's cool" moments, which kept me going.

4/ I still find it "Ah, that's kind of cool though" when something is not quite working visually. Which I guess is why I'm still doing this all these years later. Anyway, anyone feel like making an old-school assembly game/demo again? :)

1/ Some nostalgia. After so many years of Vulkan, DX12, GNM, et al, I kind of miss the old-school brutalism and elegance of mov ax,13h int 10h Those two beautiful lines was how I started my game/graphics programming journey on PC (Commodore 64 before that).

2/ I would spend an inordinate amount of time going over the 80386 instruction set to figure out how to make those glorious pixels dance across the screen. Crashing the computer from some misuse of a register only fueled the flame for how to figure it out to make it work.

Someone asked me how my macOS app is only 3.8 MB in size. Well, native only APIs, C++ for some audio processing, and no third party libraries. Decades of game engine programming formed optimization habits that's hard to break. Thankfully.

And because exploring worlds is more fun than just watching them spin I added a camera to get close and personal with the cellular blobs. Kind of feels like a blobby Tron. Maybe a Escape the Blobs game? Anyway, back to Swift...

Tobias Anderberg@anderberg.bsky.social

I've been wanting to mess with WebGPU for a while, and needed a break from Swift, so inspired by @mmalex.bsky.social colorful point visualizer, I hacked together a kind of isometric (hello SimCity, my old friend) SDF-based Game of Life. Isolife, maybe? The convenience of WebGPU vs VK/DX12 is nice.

I've been wanting to mess with WebGPU for a while, and needed a break from Swift, so inspired by @mmalex.bsky.social colorful point visualizer, I hacked together a kind of isometric (hello SimCity, my old friend) SDF-based Game of Life. Isolife, maybe? The convenience of WebGPU vs VK/DX12 is nice.

Did a pass on the iOS app - loop playback, notes, tags, timeline and scrubbing. It's starting to come together for capturing and organizing your audio ideas on the go. Still undecided on the waveform rendering, especially after seeing all the cool DoF point renders lately...

Every so often I get an inexplicable urge to switch over to Android (like now). Like I sometimes switch from Vim to Emacs. The end result is always the same though; right back in the comfort of the familiar. Procrastination, such a devious joy.

Added macOS menubar quick record for Otone to quickly capture those elusive guitar noodling ideas before they are gone. No need to set up projects or arm tracks, just record. One day I might even do something about the programmer art UI I've got going. Function over form, amirite?

Every time I try and use a coding agent I end up in a half-heated discussion that invariably ends like today's response: "You're right — I misread my own output." Either I'm not using them efficiently, or I am too critical of the output. Perhaps it's time to just YOLO it and see what happens...

I decided to build Otone as a native iOS and macOS app using Swift and SwiftUI with shared packages and C++ interops. Which, as a decades-long C++ wrangler, is an interesting challenge. I briefly considered cross-platform frameworks but for audio capture/processing and sync, native felt better.

Solo builders, what tools do you use to keep track of things - todos, projects, notes, ideas, brainstorms, etc - that has the least amount of friction? I feel like I've tried all the hip productivity tools but always end up with either pen and paper or the equivalent of a text file.

For the longest time audio apps have annoyed me with having to restart or go through some convoluted process when your audio interface changes. So I decided to handle that cleanly in my app. Plug and play audio interfaces to your hearts content, no restarts needed!

Having worked with C++ since forever, I've had my moments of madness with template errors. All outdone by Swift's: "The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions." Which doesn't highlight line of the error.

The goal of Songnote is to be as quick to record an idea as it is to find it. I'm trying to decide on a "fun" waveform visualization. I've always preferred how Pro Tools render waveforms (great for editing). Perhaps it's here I can sneak in some "fancy" graphics rendering for old times sake.

My guitar ideas used to be a fragmented mess across DAWs and phone memos. Finding a riff was an archaeological dig. So I deviated from graphics to audio and built Songnote, a native macOS app to organize and instantly audition song ideas. Now all that’s missing is some actual good ideas.

I have just spent an inordinate amount of time debugging my D3D12 backend, at times questioning how it was even able to render anything. Fixed it. Only to fire up the Vulkan backend and have that crash. Some days are seemingly not meant for productive graphics work.

LLMs are a lot of fun to play with, but I wish they had a mini-map like code editors to serve as a table of contents for your input prompts to quickly navigate long chats. Or, a threaded reply layout like Slack for when things invariably go off the rails.