Sign in

Karl Zylinski

@zylinski.se
1.2K followers 194 following 397 posts

Wrote the eBook "Understanding the Odin Programming Language". Made the game "CAT & ONION". Check out what I'm up to these days: zylinski.se

PostsRepliesMedia
Karl Zylinski @zylinski.se · 29/09/2026
A lot of the interfaces-tweaking I've been done comes from what this PR enabled: github.com/odin-lang/Od... The interesting thing you can do is have an interface where the procs have `self` parameters that match type through a `using`. This removes lots of boilerplate casting.
github.com
Allow pointers to types which have subtype fields at offset 0 to be assignable in proc parameters. by harold-b · Pull Request #6470 · odin-lang/Odin
Allows the following case to be valid: // Virtual interface IFoo :: struct { foo: proc( self: ^IFoo ), } // Implements IFoo interface Foo :: struct { using vt: IFoo, name: string, // .....
020
Karl Zylinski @zylinski.se · 28/09/2026
More Karl2D audio backend interface tweaking... I learned that `using` works even when implicitly casting proc parameter types. This simplified creating interfaces that take a "self" parameter. Handy in my case, because I switch impl on failure: github.com/karl-zylinsk...
github.com
Pass state explicitly to audio backends by karl-zylinski · Pull Request #296 · karl-zylinski/karl2d
Pass state explicitly to audio backends instead of using global. The usage of globals for state inside the audio backends leads to more trouble that in helps. I have to use #+private file etc to no...
020
Karl Zylinski @zylinski.se · 28/09/2026
WIP: making the Karl2D audio backends take explicit state pointers instead of using globals: github.com/karl-zylinsk... The usage of a globals is OK in the main Karl2D public API, but it spread to the backends. I'll change all audio, rendering and platform code to work like this.
github.com
Pass state explicitly to audio backends by karl-zylinski · Pull Request #296 · karl-zylinski/karl2d
Pass state explicitly to audio backends instead of using global. The usage of globals for state inside the audio backends leads to more trouble that in helps. I have to use #+private file etc to no...
030
Reposted by Karl Zylinski
Johanz @johanz.bsky.social · 17/09/2026
Too fun to just press Randomize in our new customization system in PIT OF GOBLIN! :D Most of the time you get pretty cool goblins too! #gamedev #gameart
4659
Karl Zylinski @zylinski.se · 16/09/2026
Doing a little redesign of Karl2D font cache stuff. My previous design could cause too many draw calls. The new idea uses up to 4096x4096 texture and then compacts the atlas by trowing out the 50% least recently used glyphs. How does that sound? github.com/karl-zylinsk...
github.com
Dynamic fonts share one growing atlas that compacts when full by karl-zylinski · Pull Request #284 · karl-zylinski/karl2d
Dynamic fonts now share one atlas for all fonts. It will grow up to 4096x4096. It won't grow past that, instead it will then start compacting the data. The compaction will remove 50% of the gly...
140
Reposted by Karl Zylinski
Matt Mower @sandbags.bsky.social · 13/09/2026
I haven't written much #odin code yet but I have been devouring @zylinski.se book and find much I like. Whatever my next project that isn't a good fit for the BEAM is, I think I will be using Odin. I was hoping to get into the Jai beta but Odin+Raylib(+Clay I hope) feels like a powerful combination.
121
Karl Zylinski @zylinski.se · 11/09/2026
New dynamic font cache for Karl2D that fixes old font rendering issues, reduces font memory usage and runs faster. github.com/karl-zylinsk...
github.com
Replace fontstash with own font cache by karl-zylinski · Pull Request #281 · karl-zylinski/karl2d
Custom font cache instead of using fontstash. It supports multiple textures per font. Each font can have up to 8 1024x1024 textures. If it runs out of textures, then it clear the one that has least...
170
Karl Zylinski @zylinski.se · 09/09/2026
Try Karl2D in the new Karl2D Playground: karl2d.com/playground You can edit and recompile the examples, directly in your browser!
karl2d.com
Karl2D Playground
Edit, compile and run the Karl2D examples in the browser. The Odin compiler itself is WebAssembly, so nothing is compiled on a server.
2100
Karl Zylinski @zylinski.se · 07/09/2026
Karl2D now has a mixer thread. Its a thread run on each audio backend that calls into my custom software audio mixer. github.com/karl-zylinsk...
github.com
Run the audio mixer on a thread owned by each backend by karl-zylinski · Pull Request #259 · karl-zylinski/karl2d
The audio backends now have a thread that runs the mixer. This lowers latency and lowers the time spent on the main thread, freeing up time for your gameplay code. This happens for all platforms ex...
161
Karl Zylinski @zylinski.se · 04/09/2026
Doing some live programming, perhaps something UI related? www.youtube.com/watch?v=F3dd...
youtube.com
Odin Recreational Programming
YouTube video by Karl Zylinski
040
Reposted by Karl Zylinski
Gerry Mander @mandelbaumski.bsky.social · 02/09/2026
Blog cover art time is always fun time. Especially when it's Karl's blogposts.
021
Karl Zylinski @zylinski.se · 02/09/2026
A short Odin blog post about one way to work around annoyances related to named return values zylinski.se/posts/named-...
zylinski.se
Named Return Values Without Oopsies
I have devised a new way of working with named return values in Odin. In some situations, named return values tend to make me a bit uneasy. This new way removes that. This is a subtle problem with a s...
070
Karl Zylinski @zylinski.se · 25/08/2026
Just merged touch support for Karl2D web games: karl2d.com/examples/tou... - Try the two finger pinch zoom on your phone! :)
karl2d.com
Karl2D Web Build
180
Karl Zylinski @zylinski.se · 18/08/2026
Merged a redesign of the Audio API in Karl2D: github.com/karl-zylinsk... This removes a layer of abstraction within the audio system. Playing audio clips or audio streams now directly hands you the handle of the Sound playing in the mixer. This is a breaking change.
github.com
Audio API redesign by karl-zylinski · Pull Request #228 · karl-zylinski/karl2d
Closes #226. Audio_Clip are fully loaded sounds, like a wav. Audio_Stream is audio streaming from disk, such as music or ambience. Both play_audio_clip and play_audio_stream return a Sound. A Sound...
070
Karl Zylinski @zylinski.se · 12/08/2026
New Karl2D feature: Configurable Y up / Y down coordinate system! Use `-define:KARL2D_Y_UP=true` to turn it on. `examples/box2d` (in video) now uses this coordinate system, making that code a lot nicer, since Box2D is Y up. Code here: github.com/karl-zylinsk...
080
Karl Zylinski @zylinski.se · 06/08/2026
Working on a big update for my Odin book. Just finished a first draft of a chapter on multi-threading. It covers thread basics, mutexes, semaphores, atomics and how to implement a lock-free queue.
0170
Reposted by Karl Zylinski
ME @goddy01.bsky.social · 16/06/2026
Spitter is out now on PC! A physics billiards roguelite where your tongue is your engine, your gut is your ammo, and every shot sends you flying. Built with Raylib + Karl2D + Odin. Huge thanks to @raysan5.bsky.social , @gingerbill.org , and @zylinski.se #madewithraylib #raylib #OdinLang
151
Reposted by Karl Zylinski
Sos "Buy Lazy Kickers" Sosowski @sosowski.bsky.social · 13/06/2026
AI CEO in 2019: Our model is too dangerous to release! (releases anyways) AI CEO in 2022: Our model is too dangerous to release! (releases anyways) AI CEO in 2026: Our model is too dangerous to release! (releases anyways) US govt: IT'S TOO DANGEROUS TO RELEASE, SHUT IT DOWN! AI CEO:
static.klipy.com
Pikachu's Shocked Reaction
ALT: Pikachu's Shocked Reaction
1566
Karl Zylinski @zylinski.se · 11/06/2026
A big divider when writing technical books is how much "opinions" the author should put into it. Some readers want straight information (reference book). Some want as much opinions as possible, so it becomes a work of "the author's best programming ideas". There's probably a balance.
191
Reposted by Karl Zylinski
grapefrukt @grapefrukt.com · 04/06/2026
here's a pic of me talkin' business (haha no) with @sosowski.bsky.social and @zylinski.se at @amazefest.bsky.social www.flickr.com/photos/12601...
flickr.com
DSC05943
1132
Karl Zylinski @zylinski.se · 04/06/2026
www.flickr.com/photos/amaze... Pixtute of my workshop at A MAZE 🙃
flickr.com
Amaze-Berlin 2026 (123 von 328)
041
Karl Zylinski @zylinski.se · 22/05/2026
~ Today in Karl2D! ~ Mouse locking (mouse capturing) has been merged: github.com/karl-zylinsk... See the mouse_locking example to see how to use it: github.com/karl-zylinsk...
github.com
Mouse locking (capture the cursor) by karl-zylinski · Pull Request #174 · karl-zylinski/karl2d
Adds support for locking the cursor to the window. When locked, you can still fetch the mouse delta motion, and thus use the mouse for your own custom input needs. Additional changes: Added a mous...
040
Karl Zylinski @zylinski.se · 22/05/2026
Feel like you must learn AI coding without wanting to? My 2 cents: - The hard part is reviewing the code the AI outputs - You'll continue honing that skill by not using AI - Learning to use AI takes just a few days So: Ignore AI until you actually need it, you'll be better off
2241
Karl Zylinski @zylinski.se · 20/05/2026
Merged bitmap fonts into Karl2D, or "static fonts" as I call it: github.com/karl-zylinsk... I now refer to the fontstash fonts as "dynamic fonts". I'll probably reimplement the fontstash path and static path into a single path that just differs in configuration (bake once, or on-demand).
github.com
Static
Add support for pre-baked bitmap fonts. These are referred to as "static" fonts. I've renamed the fontstash fonts to "dynamic" fonts. I may replace fontstash in a future PR ...
130
Reposted by Karl Zylinski
Mike Cook @mtrc.bsky.social · 20/05/2026
Shoutout to the very senior professor in HCI who gave a talk last month about how AI can do qualitative data analysis better than people now.
First, I’d created 2000 free-text responses and labelled them ‘UK’. Then I copied and pasted the exact same 2000 responses but labelled these ‘US’. Finally, I combined them to create a dataset of 4000 total responses, and jumbled them up.

Despite the responses being identical for the UK and US, Copilot produced a rich, detailed summary of how US and UK respondents differed.
11387187
Karl Zylinski @zylinski.se · 20/05/2026
Working on adding "bitmap fonts" to Karl2D: github.com/karl-zylinsk... Previously I've only supported fontstash. But perhaps fontstash isn't a good for shipping games. Generating atlases of unknown sizes feels flaky. My plan is instead bitmap + slug (two separate modes).
github.com
Bitmap font by karl-zylinski · Pull Request #172 · karl-zylinski/karl2d
Add support for pre-baked bitmap fonts. I don't think fontstash is very useful for actually shipping games since it generates an unknown amount of texture data. My idea is to instead support bi...
2100
Reposted by Karl Zylinski
Erik Svedäng @eriksvedang.com · 19/05/2026
141
Karl Zylinski @zylinski.se · 18/05/2026
A MAZE Berlin was great. It's an art house video game festival. It's more design and art heavy than programming. But they managed to squeeze in my Odin workshop despite that! Thanks :) Personally I like the art focus, as I find game design harder than programming. Got lots of inspiration!
1131
Reposted by Karl Zylinski
Gerry Mander @mandelbaumski.bsky.social · 17/05/2026
Crafted some on brand cat stamps at @amazefest.bsky.social with @zylinski.se today!
011
Reposted by Karl Zylinski
Gerry Mander @mandelbaumski.bsky.social · 14/05/2026
Ha! @zylinski.se at his workshop at @amazefest.bsky.social , where they learn about making games from scratch using Odin and Karl2D as an example :)
061
Karl Zylinski @zylinski.se · 13/05/2026
A MAZE time! 🙃
170
Reposted by Karl Zylinski
Gerry Mander @mandelbaumski.bsky.social · 12/05/2026
Drawing cover art for @zylinski.se is one of my favorite things to do. I can go full crazy and silly :D
021
Karl Zylinski @zylinski.se · 12/05/2026
Showcase video of the top 10 games from the Karl2D Jam: www.youtube.com/watch?v=hArE...
youtube.com
People made these games using my library
YouTube video by Karl Zylinski
032
Karl Zylinski @zylinski.se · 11/05/2026
A short story about how Tom tries Odin and struggles a bit with namespaces zylinski.se/posts/toms-n...
zylinski.se
Tom's Namespaces: An Odin Fanfic
Tom likes making games. He has worked professionally as a game developer, but he also likes to make games in his free time, as a hobby. He makes these hobby games in a “from scratch” kind of way. This...
050
Reposted by Karl Zylinski
Sos "Buy Lazy Kickers" Sosowski @sosowski.bsky.social · 10/05/2026
Super Open Sound System is back at @amazefest.bsky.social this year for it's 10th anniversary! Everyone can be a DJ! 14 May, Thursday, 22:00-XX:00! Sign ups will be live during the festival! If you make your own music and want to secure a spot, contact Sos on AMAZE Discord! discord.gg/Tfhxtmz53
0276
Karl Zylinski @zylinski.se · 10/05/2026
The winner of the Karl2D Jam is "A book about puzzles". Such a satisfying little game. Play it in the browser: lars-kristian.itch.io/book-of-puzz...
lars-kristian.itch.io
A book about puzzles by lars-kristian
A short game about puzzles in a book
150
Karl Zylinski @zylinski.se · 10/05/2026
Live now: Karl2D Jam Awards - I play the top 10 games! www.youtube.com/watch?v=P5ru...
youtube.com
Karl2D Jam Awards: I play the top 10 games!
YouTube video by Karl Zylinski
040
Reposted by Karl Zylinski
Gerry Mander @mandelbaumski.bsky.social · 07/05/2026
"EN TILL, TACK!" One of the most useful phrases to learn in Swedish imo. My first use of it was at a bar hehe. Much confidence after one beer, to order the next. I felt cool while saying it.
022
Karl Zylinski @zylinski.se · 07/05/2026
Explaining the two new features in Odin 2026-05: www.youtube.com/watch?v=DzGP...
youtube.com
Two new features in the latest Odin release
YouTube video by Karl Zylinski
090
Karl Zylinski @zylinski.se · 07/05/2026
Next week, I am hosting a workshop at A MAZE in Berlin. Want to make games where you start from the `main` function of a plain program and then just write the code? I'll show you how to get started with that, but also how the library we use works, all the way down to the OS and rendering APIs.
372
Reposted by Karl Zylinski
Voxandra @voxandra.gay · 07/05/2026
733091502
Reposted by Karl Zylinski
A MAZE. @amazefest.bsky.social · 05/05/2026
Ready to plan your days for #amaze2026? 🦩 Our program is now live! We've got four days of full programm planned. 🌴 Featuring, workshops, talks and of course games! 💃🕺 Let's dance, game and party together! 🦩🎉 Link to full program: 2026.amaze-berlin.de/schedule #playfulmedia #amazeberlin
13013
Reposted by Karl Zylinski
Tanat (making Building Relationships) Boozayaangool @tanatb.housefuckinggame.com · 06/05/2026
hosting a writing workshop at A MAZE with @daisyfern.bsky.social next week !! i sure hope that the expectations are clear from the description lol
a writing workshop (about storytelling through weird mediums)

Get silly! Or get sad! Because it’s time to write! In this workshop, you’ll be tasked with pairing a personal topic with an esoteric structure. Maybe you'll write about the crippling nature of anxiety, but express it through a song meant for kindergarteners to dance to. Or perhaps you'll tackle complicated familial love through Deutsche Bahn train delay announcements.

It’s like creative writing meets improv. Come and explore the weird, the heartfelt, and the whimsy :)

(No LLM usage or Gen AI in this workshop)

AUDIENCE: Open to folks with any level of writing expertise (No Gen AI)
REQUIREMENTS: Just an interest in writing (No Gen AI)
BRING: Laptop or pen & paper
46916
Karl Zylinski @zylinski.se · 03/05/2026
Last 6 hours of karl2d jam www.youtube.com/watch?v=QCog...
youtube.com
Karl2D Jam: Last day
YouTube video by Karl Zylinski
000
Karl Zylinski @zylinski.se · 02/05/2026
Back with second day of Karl2D Jam stream! www.youtube.com/watch?v=kLB4... You can still join the jam!
youtube.com
Karl2D Jam: Second day
YouTube video by Karl Zylinski
031
Karl Zylinski @zylinski.se · 01/05/2026
Karl2D Jam Intro livestream starts very soon: www.youtube.com/watch?v=hrNF...
youtube.com
Karl2D Jam Intro Stream!
YouTube video by Karl Zylinski
020
Karl Zylinski @zylinski.se · 30/04/2026
74 people registered for Karl2D Jam so far!! My jams usually have a high submission/registration rate, so it's looking good! 💖 It's a jam where you use Odin and my Karl2D library to make a game in 48 hours :) itch.io/jam/karl2d-jam
itch.io
Karl2D Jam
A game jam from 2026-05-01 to 2026-05-10 hosted by Karl Zylinski. Spend a weekend making a game using Karl2D and Odin! What? Karl2D : A library for creating 2D video games that is beginner friendly an...
060
Reposted by Karl Zylinski
Gerry Mander @mandelbaumski.bsky.social · 29/04/2026
Had fun learning and playing with pixel art for this library demo! 😻
042
Reposted by Karl Zylinski
Gerry Mander @mandelbaumski.bsky.social · 28/04/2026
Am going to be at Leoparden's art market (in Uppsala) on 9 May, 12-4pm! Will be selling a zine, "Working Class Cat"🐈, as well as some prints and stickers. Kinda feels a little "for real" now... I guess that's good for all that imposter syndrome... 😅👀
144
Karl Zylinski @zylinski.se · 29/04/2026
New Karl2D example. Short zelda-ish demo with movement, collision, shooting and minimap. Play in browser or check out source code: karl2d.com/examples/spa...
191