Jonathan Tron's Avatar

Jonathan Tron

@jonathan.tron.name

web, mobile and games dev (@games.openhood.com) owner @ openhood.com (dev/ops consulting specialized in Rails and Elixir) France ๐Ÿ‡ซ๐Ÿ‡ท / Luxembourg ๐Ÿ‡ฑ๐Ÿ‡บ

498 Followers  |  281 Following  |  12 Posts  |  Joined: 24.09.2024  |  2.008

Latest posts by jonathan.tron.name on Bluesky

Preview
GitHub - alektron/imgui-odin-backends: A custom backend for 'Dear ImGui' written in Odin A custom backend for 'Dear ImGui' written in Odin. Contribute to alektron/imgui-odin-backends development by creating an account on GitHub.

I wrote a custom Dear ImGui backend for Windows/DirectX in Odin. With thin abstraction layer to allow easy extension for more platforms/renderers:
github.com/alektron/img...

#imgui #DearImGui #Odin #Odinlang

17.07.2025 07:01 โ€” ๐Ÿ‘ 2    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 2

I use ORMs when writing programs, raw SQL when doing analysis, debugging, or database admin.

The problem with raw SQL queries in code is that a) they don't compose well, and b) I still need to convert rows into objects somehow.

19.07.2025 14:06 โ€” ๐Ÿ‘ 7    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
On Shaping Light: Real-Time Volumetric Lighting with Post-Processing and Raymarching for the Web - The Blog of Maxime Heckel A deep dive into Volumetric Lighting implemented via Post-Processing leveraging a custom shader with raymarching to create beautiful light and atmospheric effect for your React Three Fiber and Three.j...

๐Ÿ“ New Blog Post ๐Ÿ“

I finally sat down to write about what I learned building a Volumetric Lighting effect for the web

In it, I detail how to blend raymarching with post-processing to create beautiful atmospheric light to elevate your next WebGL project

blog.maximeheckel.com/posts/shapin...

10.06.2025 15:12 โ€” ๐Ÿ‘ 40    ๐Ÿ” 12    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
News from WWDC25: WebKit in Safari 26 beta Welcome to WWDC25!

Looks like WebGPU will finally be available in Safari 26โ€ฆ

webkit.org/blog/16993/n...

09.06.2025 19:12 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

odin-c-bindgen can now create constants from C macros

Pictured: Generated raylib bindings that bring along constants based on `#define`s in the C header. Also included: Code alignment and comments.

Thanks to xandaron for helping me implement this.

Check it out: github.com/karl-zylinsk...

10.05.2025 22:17 โ€” ๐Ÿ‘ 15    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Load-store conflicts meshoptimizer implements several geometry compression algorithms that are designed to take advantage of redundancies common in mesh data and decompress quickly - targeting many gigabytes per second in...

New blog post! "Load store conflicts", in which we look at some performance sensitive code that has surprisingly dramatic performance swings based on the compiler and the microarchitecture used. Reposts appreciated!

zeux.io/2025/05/03/l...

04.05.2025 14:37 โ€” ๐Ÿ‘ 59    ๐Ÿ” 23    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Four vector icons: a cream-coloured rabbit, green trees, a crimson bird with a white eye, and a silver cloud with raindrops in different shades of blue

Four vector icons: a cream-coloured rabbit, green trees, a crimson bird with a white eye, and a silver cloud with raindrops in different shades of blue

part a: a mix task that will traverse /assets/ (or anywhere else you point it) for svg images of any size and complexity, and merge them together into a sprite sheet in /priv/static/assets/.

โžœ mix phoenix_svg_sprites
โžœ [info] Successfully generated SVG sprite sheet at priv/static/assets/sprites.svg
the sprite sheet contains all of the processed svgs, stored as <symbol />s addressable by ids derived from the processed svg's filenames. bird.svg and rain.svg become:

<svg>
<symbol id="bird"><path d="m1154.3...
<symbol id="rain"><path d="m1047...
</svg>

part a: a mix task that will traverse /assets/ (or anywhere else you point it) for svg images of any size and complexity, and merge them together into a sprite sheet in /priv/static/assets/. โžœ mix phoenix_svg_sprites โžœ [info] Successfully generated SVG sprite sheet at priv/static/assets/sprites.svg the sprite sheet contains all of the processed svgs, stored as <symbol />s addressable by ids derived from the processed svg's filenames. bird.svg and rain.svg become: <svg> <symbol id="bird"><path d="m1154.3... <symbol id="rain"><path d="m1047... </svg>

part b: a phoenix component, <.sprite />, that will render the specified svg sprite in your heex template, the same way you might render a heroicon with core component's <.icon />.

the four example sprites at the top of this page are rendered with this code:

<.sprite icon="animal" class="animal" />
<.sprite icon="nature" class="nature" />
<.sprite icon="bird" class="bird" />
<.sprite icon="rain" class="rain" />
css classes are applied to the examples to allow for specific colour styling. however, an svg's internal fill, stroke, and other colour values will be preserved, and you can also use currentColor to colour your sprites dynamically through the text colour of a parent element.

default tailwind size classes are applied automatically, but you can apply arbitrary classes and other attributes as well.

part b: a phoenix component, <.sprite />, that will render the specified svg sprite in your heex template, the same way you might render a heroicon with core component's <.icon />. the four example sprites at the top of this page are rendered with this code: <.sprite icon="animal" class="animal" /> <.sprite icon="nature" class="nature" /> <.sprite icon="bird" class="bird" /> <.sprite icon="rain" class="rain" /> css classes are applied to the examples to allow for specific colour styling. however, an svg's internal fill, stroke, and other colour values will be preserved, and you can also use currentColor to colour your sprites dynamically through the text colour of a parent element. default tailwind size classes are applied automatically, but you can apply arbitrary classes and other attributes as well.

I just published my first Elixir + Phoenix LiveView package: Phoenix SVG Sprites!

Merge all of your SVG assets into one file, and display them individually, just like you do with <.icon />.

more info: www.argylewerewolf.com/code/sprites/
GitHub: github.com/ArgyleWerewo...

#Elixir #PhoenixLiveView

02.05.2025 16:47 โ€” ๐Ÿ‘ 35    ๐Ÿ” 7    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
GitHub - karl-zylinski/odin-handle-map: Map a handle (index + generation) to an item. Map a handle (index + generation) to an item. Contribute to karl-zylinski/odin-handle-map development by creating an account on GitHub.

Handles update: I've made a handle-based map that uses growing arenas for storing the items. This gives good performance while keeping the pointers stable.

Check it out: github.com/karl-zylinsk...

Web support (uses dynamic arena instead of virtual growing arena): zylinski.se/odin-handle-...

28.03.2025 14:05 โ€” ๐Ÿ‘ 7    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
"Handles are the better pointers": An Odin gamedev follow-up Background Andre Weissflog wrote an article in 2018 called โ€œHandles are the better pointersโ€. In it he talks about how one can use handles instead of pointers when one wants to store permanent referen...

New blog post: zylinski.se/posts/handle...

This is my own personal follow-up to @flohofwoe.bsky.social's classic article "Handles are the better pointers"

25.03.2025 22:25 โ€” ๐Ÿ‘ 29    ๐Ÿ” 5    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Hi Karl, I recently picked up Odin (and your book).
I'm interested in making games/apps and generally playing with graphics APIs (webgl / wgpu / vulkan / metal) on desktop and wasm (I got two PRs accepted this week for fixes in the "core:sys/wasm").
Feel free to add me to the list.

23.03.2025 09:05 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
Prototype 03 - Fog of War ยท Openhood Prototype 03 with Fog of War, sounds, merchant, and hero

Prototype 03 released: playing with Fog of War, Merchant stall for new units, sound effects for battle and more.

Try it and tell us what you think.

games.openhood.com/2025/3/16/pr...

16.03.2025 12:47 โ€” ๐Ÿ‘ 0    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
bundler/inline for single-file ruby scripts ยท Openhood Openhood technical blog.

TIL: bundler/inline

It makes testing specific versions of gems in a single file and run it so easy. Highly recommended for creating reproducible test cases.

experiments.openhood.com/2025/3/4/rub...

05.03.2025 09:55 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Odin 7 Day Jam A game jam from 2025-03-08 to 2025-03-23 hosted by Karl Zylinski. Make a game in 7 days using the Odin Programming Language ! Ever wanted to make video games using a low-level programming language? Od...

Join my game jam if you:
- Want to learn game development
- Want to learn Odin or low-level programming

No prior knowledge required! You have 7 days to figure things out. You'll be able to make something!

No worries, no pressure. Just have fun!

Starts on March 8.

itch.io/jam/odin-7-d...

03.03.2025 16:56 โ€” ๐Ÿ‘ 10    ๐Ÿ” 5    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
How Clay's UI Layout Algorithm Works
YouTube video by Nic Barker How Clay's UI Layout Algorithm Works

What an incredible explanation of how to implement layout in UI!

www.youtube.com/watch?v=by9l...

02.03.2025 12:33 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

Here comes the second prototype, iterating on the previous one we added a new archer, and tried to have working controls for keyboard/mouse, touch and controllers.

Play it on our blog: games.openhood.com/blog/2025/2/...

28.02.2025 21:04 โ€” ๐Ÿ‘ 0    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Release notes โ€” fish-shell 4.0.0 documentation

Fish 4.0 just landed. From C++ to Rust transition is done!

#rust #rustlang #shell

fishshell.com/docs/current...

28.02.2025 04:57 โ€” ๐Ÿ‘ 21    ๐Ÿ” 7    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
A list of images being displayed in the new app I'm developing, zooming, filtering by name and picking color.

A list of images being displayed in the new app I'm developing, zooming, filtering by name and picking color.

New application window right after launch, with text explaining you have to drag and drop images or folders on it.

New application window right after launch, with text explaining you have to drag and drop images or folders on it.

I couldn't find a basic and fast assets viewer for browsing and searching our growing collection.

Godot 4.4-rc1 being just released, it was time to implement one.

It's so fun how versatile Godot can be.

Given how useful it is for us, I'm thinking of releasing it to more people.

23.02.2025 18:00 โ€” ๐Ÿ‘ 7    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Games ยท Openhood We're a small indie game studio from Luxembourg.

We decided to play with small prototypes, the first one is about some RTS melee movements. You can try it on games.openhood.com/blog/2025/2/...

20.02.2025 21:33 โ€” ๐Ÿ‘ 0    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Been reminded today that NIFs taking more than 1ms should be flag to run on "dirty schedulers" to not block regular #erlang / #elixirlang processes schedulingโ€ฆ and that is one macro away in Rustler: #[rustler::nif(schedule = "DirtyCpu")] for CPU intensive, "DirtyIo" for IO intensive functions

20.02.2025 21:30 โ€” ๐Ÿ‘ 7    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
The Bustling World - Official Trailer #2
YouTube video by IGN The Bustling World - Official Trailer #2

Speaking of cool stuff coming from China check out this upcoming open-world RPG / city builder / infiltration game / ... set in ancient China www.youtube.com/watch?v=AY0u...

08.02.2025 17:11 โ€” ๐Ÿ‘ 1    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Video thumbnail

Holy smokes this is awesome, a new debugger for Phoenix LiveView. Think React devtools, but not a chrome extension.

github.com/software-man...

#ElixirLang

07.02.2025 14:37 โ€” ๐Ÿ‘ 152    ๐Ÿ” 41    ๐Ÿ’ฌ 6    ๐Ÿ“Œ 5
Preview
Pro v1.5 Releases Oban is a background job system built in Elixir and Postgres, and packed with enterprise grade features, real-time monitoring with Oban Web, and complex workflow management with Oban Pro.

โœจ Oban Pro v1.5.0 is out!

๐ŸŽจ Job Decorator
๐Ÿฆ† Unified Migrations
๐Ÿฆ„ Enhanced Unique
๐Ÿช Improved Batches
๐Ÿ”— Streamlined Chains
๐Ÿ–‡๏ธ Improved Workflows
๐Ÿ‘ญ Worker Aliases
๐Ÿงฐ Performance tuning and bug fixes

Generally available after six months of RCs. Read the full release notes: oban.pro/releases/pro...

28.01.2025 15:26 โ€” ๐Ÿ‘ 26    ๐Ÿ” 7    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 2
Video thumbnail

View a step-by-step playback of your feature test incl. JS console and network.
Powered by PhoenixTest + trace.playwright.dev
Great tool to debug feature test failures in CI.
#ElixirLang

15.12.2024 07:36 โ€” ๐Ÿ‘ 13    ๐Ÿ” 4    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
libc for GPUs โ€” The LLVM C Library

"Very Experimental" GPU support for the LLVM libc: libc.llvm.org/gpu ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ

15.12.2024 18:39 โ€” ๐Ÿ‘ 1    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
ruby-the-future-of-frozen-string-literals.md GitHub Gist: instantly share code, notes, and snippets.

On the topic of frozen string literals and Ruby 3.4, this post we wrote together with @byroot.bsky.social may be helpful to share again.

gist.github.com/fxn/bf4eed25...

13.12.2024 16:45 โ€” ๐Ÿ‘ 40    ๐Ÿ” 18    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1
Rendering Tiny Glades With Entirely Too Much Ray Marching
YouTube video by Graphics Programming Conference Rendering Tiny Glades With Entirely Too Much Ray Marching

You just don't realize how much work goes in the rendering of such a beautiful game as #TinyGlade from @pouncelight.bsky.social until its creators explain the crazy journey to get there. Thanks @h3r2tic.bsky.social and @anopara.bsky.social for the presentation! www.youtube.com/watch?v=jusW...

07.12.2024 20:38 โ€” ๐Ÿ‘ 5    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
GitHub - gp-pereira/refactorex: A VS Code extension for fast and reliable Elixir code refactoring. A VS Code extension for fast and reliable Elixir code refactoring. - gp-pereira/refactorex

This VSCode extension for #elixirlang refactoring looks amazing github.com/gp-pereira/r...

02.12.2024 19:15 โ€” ๐Ÿ‘ 14    ๐Ÿ” 2    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Preview
OrioleDB beta7: Benchmarks | OrioleDB OrioleDB is a storage extension for PostgreSQL which uses PostgreSQL's pluggable storage system. Designed as a drop-in replacement for PostgreSQL's existing Heap storage, OrioleDB aims to overcome sca...

today @supabase.com is releasing a Postgres storage system that's ~5.5x faster than the default storage system

the storage system is called OrioleDB, the work of Alexander Korotkov and his team. it's not production-ready but available for testing:

www.orioledb.com/blog/orioled...

01.12.2024 19:24 โ€” ๐Ÿ‘ 52    ๐Ÿ” 8    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Screenshot of Slang x WebGPU README on GitHub (where the link in the post points)

Screenshot of Slang x WebGPU README on GitHub (where the link in the post points)

Sharing a starter setup for using @shader-slang.bsky.social with #WebGPU in C++ with #CMake, either for native or web targets. ๐Ÿ”น Uses the #reflection API to auto-generate boilerplate code! โœจ

๐Ÿ‘‰ github.com/eliemichel/S...

Very happy to take feedback about what's good and bad in this demo! Moreโคต๏ธ 1/8

26.11.2024 21:27 โ€” ๐Ÿ‘ 39    ๐Ÿ” 15    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Preview
Release v0.5.0 ยท elixir-error-tracker/error-tracker This release includes a a new feature of breadcrumbs to track code execution before the error, a better support for Ash framework exceptions and various fixes and improvements. NoteThis release inc...

We've just released the ErrorTracker v0.5.0 ๐Ÿ›!

It includes a new feature to store breadcrumbs, improved support for @ash-hq.org applications, better mobile experience and minor fixes.

You can check it out here: github.com/elixir-error...

#ElixirLang

26.11.2024 16:20 โ€” ๐Ÿ‘ 18    ๐Ÿ” 7    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 2

@jonathan.tron.name is following 20 prominent accounts