My "No Graphics API" blog post is live! Please repost :)
www.sebastianaaltonen.com/blog/no-grap...
I spend 1.5 years doing this. Full rewrite last summer and another partial rewrite last month. As Hemingway said: "First draft of everything is always shit".
Posts by Jonathan Tron
Screenshot of a dark futuristic UI with glowing neon blue and red accents, showcasing sci-fi styled panels for sales, subscriptions, calendar, and fitness goals with sleek charts and buttons.
Tired of liquid glass already? Meet cosmic UI, a fun set of futuristic very components, with a cyberpunk look and feel.
(to be clear, they have many accessibility issues, this is more for inspiration and for the joy of having something fun than for using in actual projects)
www.cosmic-ui.com/
Our GitHub repository is now public!
github.com/elixir-lang/...
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
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.
π 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...
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...
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...
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 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
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-...
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"
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.
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...
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...
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...
What an incredible explanation of how to implement layout in UI!
www.youtube.com/watch?v=by9l...
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/...
Fish 4.0 just landed. From C++ to Rust transition is done!
#rust #rustlang #shell
fishshell.com/docs/current...
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.
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.
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/...
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
Holy smokes this is awesome, a new debugger for Phoenix LiveView. Think React devtools, but not a chrome extension.
github.com/software-man...
#ElixirLang
β¨ 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...
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
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...
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...
This VSCode extension for #elixirlang refactoring looks amazing github.com/gp-pereira/r...