Channel about Elm, JS, and React best practices. React developer. Functional Programming advocate.

Joined November 2018
I'm going to follow in the footsteps of @Aron_Adler and uninstall Twitter from my phone. I hope this helps me focus more on the important stuff, both in here and out.
4
Wollantine retweeted
on my language wishlist is a language that makes it super easy to describe type level checklists. i think this sort of exists already but im not sure how clean it is. like im thinking about opengl rn. shader programs will often have some global values, like positions for lights or cameras. each time you switch shaders you gotta configure whatever uniform data the program needs before you start using it to render objects. you can modify this data, but it is usually an error to not initialize it. the naive fix is to wrap up all of opengl in something functional. each invocation of a shader program could have these values as parameters. which would totally work and make everything type safe but now you are sending data to the GPU for every single draw call. if you only need to configure the shader once and are gonna reuse the config on 1000 different objects then you are sending a lot of redundant info on the wire. you could alternatively try to do some sort of reactive programming system, where you have the trad functional API but under the hood the program checks if there has been a state transition and skips the data upload if there isn't a change to the shader config. but this is pretty hard to get right. and i suspect it is really hard to get the compiler to eliminate all the checks for changed data at comptime, so there is still some runtime overhead what seems like a nice lightweight alternative would be some kind of type level checklist. in order to run a shader program you need to provide evidence of initialization of each of the relevant uniform data fields. the signature for the shader execution would be something like `runShader : ShaderProgramID -> ProofThatLightingIsConfigured -> ProofThatCoordinateTransformIsConfigured -> IO ()`. in order to obtain evidence you'd have to run other programs, like `configureLighting : LightData -> IO ProofThatLightingIsConfigured`. in principle all this evidence should be erasable at compile time. so no overhead. but it also guarantees that the shader is configured before it is used. also opens the door to things like skipping the data upload. it is technically legit to skip configuration; opengl initializes unconfigured uniform buffers to predictable default values. but imo it's still good practice to be explicit. so you could add a `useDefaultLightingConfiguration : ProofThatLightingIsConfigured` and now it is clearly documented and checked by the type system that you wanna use the defaults. i know there are things out there like this. idk ATS at all but i get the vibe that this is the sort of thing ATS is all about. also seems probably pretty easy to implement a crude version of this with linear type systems + phantom types otoh i don't see a lot of implementations of this sort of system and so that makes me wonder if there is a reason for that. given it doesn't seem terribly sophisticated i'd expect to see it show up places if it were actually useful maybe the devex isn't that great? it kind of seems like modeling a state machine at the type level with a million phantom types could feel very cluttered. maybe with the right syntax support this would be useful? or maybe its the kind of thing that you can get stuck admiring and improving your fancy type level model instead of getting work done. maybe its the sort of thing where the amount of time spent building the evidence management system eclipses the time spent debugging and so economy suggests not doing it so idk maybe this is a dumb idea. but i really love checklists and so i imagine id love a good system for representing them at the type level
3
3
14
Wollantine retweeted
Anyone who prefers M*crosoft Teams over google meet doesn't deserve employment
One of the new interns just asked "Why are we using GMeet are we too poor for Teams?" Bitch we gave him a M4 Macbook Pro what does he mean poor 😭
13
1
2
124
Addendum: Slop is Senior Level Objective Programming.
1
To make goop you just need Go and Objective Programming.
1
1
Wollantine retweeted
To all my fellow freedom-fighters out there, I highly recommend you check out NOSTR. It's a decentralized social media PROTOCOL (like email) where banning is impossible, as nobody owns it. This is clearly the future for social media & free speech 👇 benwehrman.com/what-is-nostr…
A moment to appreciate the innuendo of "what is not safe, can't be considered infrastructure".
1
Wollantine retweeted
“If you have an SLA and don’t use a type system, you are being unethical.” — @pandam0nial, quoting me from rehearsal
Replying to @typememetics
Banking systems with dynamic typing is a logic-defying paranatural anomaly. We know we are not in the root reality thanks to this stuff.
4
3
2
33
Wollantine retweeted
I'm putting together a crew 😏 (if you do @leanprover and you want to be added to this list lmk) x.com/i/lists/19597176630281…
27
2
56
My tribute to @kitlangton: @EffectTS_ is a... Functor! (and, of course, many other things!!). Hope you enjoy! [link below]
5
2
64
Wollantine retweeted
If you care about functional programming, the history of programming languages or military-grade weaponized autism, this tweet is for you. There's a legend walking among us that you don't know about, so let me introduce him. @A64mQ has been writing a book on the history of FP languages, now sitting at 150k words. He's put an absurd amount of unpaid unacknowledged effort into research. The right screenshot is the literature used. Just for the first part of the book. He's writing the third part currently. The catch is, the book is in Russian. He's translating it into English, but translating that much text isn't particularly exciting. So if you care at all, please check out boosty.to/fphistory where the translation is happening and consider subscribing or donating. The left screenshot is a fraction of what's being translated. Please repost, this severely underappreciated project deserves some attention.
Wollantine retweeted
Dear JavaScript pipeline spec authors, Point-free isn't optional sugar, it's the whole point. % is an ugly hack. In fact, hack is literally in the name! 🤣 Thanks, Every functional programmer
2
10
Wollantine retweeted
Best Code Architectures For Indie Games (Thread)
24
154
16
1,502
Wollantine retweeted
Replying to @potetm
some have spoken on this
Hot take: small functions are *only* advantageous when they are pure. If you have any mutation happening in your codebase you want all the code mutating a certain piece of data visible at the same time. Otherwise, splitting code into small procedures only hides the mutation behind a dozen different opaque functions, thereby obscuring where the mutation happens – which is going to make your code much harder to reason about
1
1
15
Wollantine retweeted
One of the biggest mysteries of the web platform is why there's no way to run some JS code in a completely safe/unprivileged way. Figma is running a JS interpreter in WebAssembly to solve this problem. Why can't I just start a worker with 0 privileges that can only send messages?
8
2
44
Wollantine retweeted
"Left to Right Programming -- Programs Should Be Valid As They Are Typed"
Wollantine retweeted
If you are at all interested in type checking, you should definitely check out Stephen Diehl’s Typechecking Zoo! It has in-depth walkthroughs of implementing progressively more advanced type systems. Link below 👇
4
35
4
220
Wollantine retweeted
I will treat jsdom as an anti-pattern and discard any related issues in 2026. This is your call to migrate to in-browser component testing. - Vitest Browser Mode - Playwright & Cypress components The tools are there. Use them for better tests.
Wollantine retweeted
Replying to @christophcsmith
I typically say that experimentation is necessary, and that it will appear as if the project is stalled as I work through tackling the next problem. It's all about meeting the client's emotional needs. Mostly they just want to feel safe and like they're in good hands.
2
1
2