Fatih Altinok
fatih.6nok.org
Fatih Altinok
@fatih.6nok.org
Web dev, functional programming a11y

ADHD, he/him

blog.6nok.org
If it takes more than half an hour to do with CSS, you’re legally allowed to render a different tree.
December 24, 2025 at 6:52 PM
Sad music corner :(
December 24, 2025 at 6:43 PM
I’m no expert on either, just that they are so simple. Last expression in a file is the export, and it can be a function.

Sadly ESnext is full of short sighted decisions :(
December 23, 2025 at 10:19 AM
And here I am thinking that utf-8 is ubiquitous. Apparently not!
December 23, 2025 at 10:17 AM
No worries, me neither 😂 just that these structures need to obey laws, in case of monads they are left identity, right identity and associativity

I didn’t memorize them, looked up from here wiki.haskell.org/Monad_laws
December 23, 2025 at 10:16 AM
ES modules were made to enable static analysis as opposed to whatever CSM was doing, but I think some happy medium could’ve been found.

Nix and Dhall are great.
December 23, 2025 at 6:08 AM
Okay I read your post properly this time and you mention functors 🙏
December 23, 2025 at 6:06 AM
I thought functors in Ocaml were parametric modules? And there was a backpack initiative in Haskell. Hope I’m not making these up :D
December 23, 2025 at 6:06 AM
Just had one today, the contact form didn’t submit and had no indicator either, I deleted the offending character and it was all dandy!
December 23, 2025 at 5:54 AM
It looks very cool but not sure how it’s a monad. Does it have flatMap (or similar) defined?
December 23, 2025 at 5:50 AM
Non-branching code is easier to read and more predictable. Good example!
December 20, 2025 at 7:28 AM
I don’t think it’s rude, you’re an open source maintainer and if I’m asking for tour time I should at least put the minimal effort.
December 19, 2025 at 3:21 AM
Good rule of thumb! Similar to what I alluded to by "vibe check", for a piece of code that's not in a tight loop, how it expresses intent and blends in with the surrounding code is more important than raw performance.
December 18, 2025 at 6:55 PM
This seems pretty similar in construction and lookup complexity, also a Map. In practice there could be differences due to JS engine optimization though.
December 18, 2025 at 10:32 AM
If the array is constructed just to be searched too, I’d reach for set in that instance. But I guess there’s an internal vibe check, if the search space is small (<10 elements) I could still go for array since Set doesn’t have a nice constructor syntax.
December 18, 2025 at 5:34 AM
Hm it kinda depends? JS sets are hashsets so constructing a set is O(n), which is same as a linear search. So if the set is constructed only to search, linear search would be better at n/2 avg time, assuming hashing is free and memory is infinite.

If set will be reused it’s a different story tho
December 18, 2025 at 5:24 AM
But it takes effort and solves actual problems :(
December 17, 2025 at 1:49 PM
Gotcha. So it seems like it was only an assumption that effect events can’t be called asynchronously
December 17, 2025 at 11:44 AM
Is this screenshot the error, or the correction?
December 16, 2025 at 8:47 PM