Julian
banner
fettstorch.com
Julian
@fettstorch.com
🟦Typescript; 💚Vue; 🎲DnD
🎮 Game Programming/Design 👾
🦊My dog Kleo
34 he/him

https://www.programmier.bar/
Ok if you're still here and still want the impl here it is. But again: You should probably not use this 😅
(code is in alt text)
November 21, 2025 at 11:55 PM
November 21, 2025 at 11:55 PM
unless... the never returning function is received as a function argument for some reason 🫩 (which is the case for my retry function 😭)
November 21, 2025 at 11:55 PM
And I learned that typescript is actually smart enough to determine code as unreachable if it follows a function call that returns never e.g.:
November 21, 2025 at 11:55 PM
The first insight is that we can interrupt foo via the 'retry' function as the retry function throws. This is the only way how a nested function can preempt the calling function I think. While I wouldn't recommend abusing exceptions as a messaging/event system erm... we goofin 🤪🤙🏻
November 21, 2025 at 11:55 PM
Was goofing around with a functional approach to a 'retryable' construct today and learned a few things 🤓
Heres the concept:

- provide a 'retryable' function taking a function (foo)
- it provides a 'retry' function that interrupts the current foo's execution and re-executes foo

🧵

#Javascript #TS
November 21, 2025 at 11:55 PM
Initially I thought I'd get away with being the lazy programmer I am but eventually people discovered that they could vote for their favorite result/contestant without limit 😅 resulting in... a little voting chaos

at one point someone created a script on the spot voting for a contestant endlessly 😆
November 18, 2025 at 4:10 PM
We had different challenges and difficulties. Here the contestants had to create the german flag using vanilla html/css only.
November 18, 2025 at 4:10 PM
I got to host the coding challenge event which was super cool 😊
November 18, 2025 at 4:10 PM
And had some fun with the blind coding challenge app I made for the event 🙈👨🏼‍💻
November 18, 2025 at 4:10 PM
Besides great presentations I especially enjoyed meeting a lot of the people that enjoy the programmier.bar because it seems we have a great community at hand.
We had nerdy conversations, played some beerpong...
November 18, 2025 at 4:10 PM
3 weeks ago we at the @programmier.bar had our first Web- & AI conference 🎉
We had great speakers like @rich-harris.dev (fanboy moment), @mirjam-diala.bsky.social talking about testing and training dogs (I mean come on! 🐶❤️) and @nico.dev showing us how he recreated KITT 🤯🚗

#web #dev #conference #ai
November 18, 2025 at 4:10 PM
I am very fond of the 'tree' program. If you're also in the terminal a lot and like to get a quick overview of a certain dir you can enhance it very easily by using:
-C (for colorized output)
--gitignore (apply .gitignore to the search (!))
--dirsfirst (to sort dirs on top)

#terminal #dev
November 17, 2025 at 4:02 PM
So we just wrap up a minimal Dockerfile like this:
github.com/koyeb/exampl...

Et voilà! 🍷🥖
November 16, 2025 at 5:07 PM
The hosting on koyeb was also really easy!
Since I wanted to use bun I just had to make sure the runtime knows bun. Thats where docker comes in.
Koyeb comes with a dockerfile builder.
November 16, 2025 at 5:07 PM
I thought it was especially cool how easy it is to set up and manage websocket connections.
A websocket can subscribe to a "channel" e.g. "match-${matchId}" and then from anywhere else in the code our server can publish to those channels 😍🧦
November 16, 2025 at 5:07 PM
While i made a 'blind-coding-challenge' I still wanted to be able to show a player's result in an iframe so I could:
1. offer a preview joker (e.g. look at your result once per match)
2. be able to execute the player's code and extract console output (e.g. for a console joker)
November 16, 2025 at 5:07 PM
This is actually also important for the player clients. As they are also just webapps, without an iframe a player COULD define a css rule in their editor (e.g. div background red) and affect:
November 16, 2025 at 5:07 PM
In essence player clients connect to the backend using websockets to update the backend with their current code.

The backend then relays those updates to the host client which will embed each player's code into an iframe.
This is actually important to isolate the players' codes from each other
November 16, 2025 at 5:07 PM
Shoutout to @bun.sh and @koyeb.com! 🎉
I made a blind-coding-challenge app for the evening entertainment at an event.
Both technologies are just chefs kiss 😚👌

🧵

#bun #hosting #javascript #buildinpublic #dev

(host client) (player client)
November 16, 2025 at 5:07 PM
Just learned that in Vi you can use 'zz' to scroll the editor view so that the cursor is centered.
So i immediately remapped {,},n,N to always center the cursor after a 'jump'. Feels great!

I'd be happy to hear about your favorite vimrc configs!

#vi #vim #vimrc
July 17, 2025 at 9:48 AM
Fun!!!! 🤩
May 17, 2025 at 9:33 AM
But what if we just cheat a little and also change the b value with each frame by updating the target value accordingly to the stones position ¯\_(ツ)_/¯.
Well cheating is - of course - the solution here 😌👏🏻👏🏻
And we also won't just stop executing our animation function after one second 💡
May 10, 2025 at 6:02 PM
Worse. The lerp defined a maximum value for the desired target position, so the camera won't ever move further than that and the stone will leave us behind quickly... 😭
May 10, 2025 at 6:02 PM
Then we grow our 𝐭 value steadily towards 1 during a fixed amount of time of e.g. 1 second.

But the stone won't stop moving while we animate the camera towards its new target position 😵‍💫 So even when our camera will ultimately reach its desired position after 1 second the stone will be long gone.
May 10, 2025 at 6:02 PM