
If you can make things better, do so. @thisissethsblog
Switzerland
Joined October 2007
- Tweets15.3K
- Following111
- Followers503
- Likes48K
Ievgen Pyrogov retweeted
Replying to @zack_overflow
I'd say it is a bit trickier than that.
We most likely don't have a type system that can precisely express all JavaScript idioms. Elixir is not as complex as JavaScript in many respects, and we still had to develop a lot of new theory for its type system!
So when you find an unsupported idiom, your options as a type system developer are:
1. Develop new theory and prove it correct (which I am skeptical models can do autonomously today)
2. Reject the idiom, sacrificing compatibility (which would make adoption harder)
3. Being a gradual type system, fall back to dynamic typing
Option 3 then introduces its own trade-offs because dynamic code has to interact with static code (and the more unsupported idioms, more dynamics!). So you need to choose between:
a. Calling static code from dynamic code returns dynamic(), dropping the opportunity of further static typing checks (this is sound)
b. Calling static code from dynamic code returns the static types, potentially leading to mismatched types at runtime (this is unsound)
c. Calling static code from dynamic code returns the static types with additional runtime checks, unifying both behaviours but potentially impacting performance (this is sound)
d. Use the strong arrows theory we developed for Elixir (elixir-lang.org/blog/2023/09…) but it may not be a great for highly polymorphic languages like JS
On the other hand, my understanding is that TypeScript made deliberate trade-offs, especially around developer ergonomics, and a new type system could certainly explore different choices aligned with the current trends.
PS: I'm not a type theorist by training, although I have implemented one used at scale. The above my contain inaccuracies!
Ievgen Pyrogov retweeted
What frustrates me the most is the lack of curiosity.
People saw the numbers they wanted to see and ran with the story. They didn’t ask about the process. They didn’t question the results. They didn’t explore the code. They didn’t look at the history.
You could have even asked a coding agent to do an initial investigation.
There has never been a better time to be curious, dig deeper, learn... but this is what we’ve got now.
Oh well.
Ievgen Pyrogov retweeted
I can’t stress enough how little an idea matters compared to the agency of the people executing the idea.
I have had the privilege of knowing and sometimes even working with some of the most successful people (by various metrics).
The difference between mediocre and excellent work and outcomes is predominantly one of agency.
In practice this means: they dont wait for things to happen to them they go out and make things happen for them.
They don’t wait for someone else to do something, for someone to teach them, for someone to give them the path, etc. They just go out and find a way to do it.
I think the single biggest superpower these people have is the realization/belief that the world around them is completely mutable. Most everything that happens is because a person made it happen.
I used to tell people to look around the room you’re sitting in. Look at everything. Every noun. It almost all exists because a person willed it into existence. Nothing is stopping you from doing the same.
I see people online all the time dismissing someone else’s success because “I had that idea first” or whatever. I mean… yeah? If so then the difference is… you. So a bit of a self own whenever I hear that.
Number one tip: act with agency.
Ievgen Pyrogov retweeted
“Look at my incredible new factory!”
Yo that’s cool, what do you make?
“It’s highly optimised, fully automated, zero tolerance for defects and with a continuous feedback cycle”
Cool cool, so what do you actually make?
“I can interact with it on my phone, laptop, messenger, completely async, and the shared context means it’s always learning how to get better”
Very impressive, but what do you make?
“Every agent has full context, can spawn other agents, review their work, fix defects, and ship continuously.”
yes yes. WHAT DOES IT MAKE?
“Software.”
Oh nice. What software?
“Well right now we’re mostly using it to improve the factory.”
Improve it to make what?
“Anything!”
Such as?
“…a better factory.”
ievgenpyrogov.com/movies/
made a web page to explore festival movies, with ability to filter for high-rated ones
Ievgen Pyrogov retweeted
Mandatory reading. gruhn.me/blog/2026-08-03/
github.com/gmile/urp
urp is an #ElixirLang package I've been working on lately, to enable interacting with LibreOffice over a TCP
run your own vanilla LibreOffice service on the network, use URP to convert docx to pdf (and do other things)
#MyElixirStatus
it is performant, implements connection pooling (with caveats!), ships with telemetry and testing helpers
this been made possible by having the coding agent "study" the sources of "binaryarp", a C++ libreoffice bridge implementation
git.libreoffice.org/core/+/r…
Ievgen Pyrogov retweeted
wow. so after four years of excusing mass silence with fear or repressions, turns out russians in russia can speak out after all. just before they couldn’t care less about their country genociding Ukrainians. but their delivery packages turning to ash is where they draw the line
Ievgen Pyrogov retweeted
This is a Ukrainian interceptor drone carrying an actual shotgun, closing in on a russian recon drone mid-air, and pulling the trigger once in sights.
Pretty successful results I'd say.
Ievgen Pyrogov retweeted
Kyiv. There are no words. 31 people were murdered just a few days ago.
Today... it's hell all over again.
We don’t hate russia enough.
Ievgen Pyrogov retweeted
Put Killswitch on a dependency diet: stripity_stripe & ex_aws → thin Req clients, tzdata → tz, hackney gone — ~20 packages deleted. We only used ~10 Stripe endpoints and 8 S3 calls. Tests green. You use less of your SDKs than you think.
Ievgen Pyrogov retweeted
I’m currently witnessing dozens of huge explosions in Kyiv city centre. A hotel near my apartment is on fire. Residential buildings damaged. This is not war against soldiers, it’s Russia terrorising civilians in their homes. A sad and pathetic nation.
Ievgen Pyrogov retweeted
… it is night in Ukraine right now, almost 4 a.m. Ukrainians are underground, those who have such an opportunity in their cities, while others are just in their homes and apartments, hearing, and even watching from their windows, yet another round of nightly explosions and flashes. Some are closer, some are further away, but the explosions are felt with the entire body.
As always, the morning will reveal more.
Ievgen Pyrogov retweeted
One of the best programmers in the history of computing and my role model for decades, retweeting my little open source project. Incredible. ❤️
It isn’t the point of this project, but looking at the triangulations made me think about some GPU optimization esoterica.
Everyone knows “triangle count” has an impact on performance. Graphics programmers also know that the ordering of the triangles can also make a significant difference, and integrate mesh optimization tools.
For the special case of planar figures like these, total triangle edge length can become the distinguishing performance characteristic. GPUs work with 2x2 blocks of pixels so they can generate derivatives for texture sampling and shaders. At triangle edges, they still usually have to do calculations for complete 2x2 blocks, regardless of whether 1,2,3, or 4 pixels in the block are actually needed. Long, skinny triangles can require over double the fragment shader invocations that area-maximizing triangles do.
Consider triangulating a circle: the obvious way is to make a single triangle fan, but you can reduce the total edge length by inscribing a polygon inside the circle and only fanning out from that to the circle. Slightly more vertex work, but less fragment work.
There probably isn’t any real world case where this would be a crucial optimization, but having an “optimization worldview” means always noticing the tradeoffs.




















