welltypedwitch Profile Banner
Prophet Profile
Prophet

@welltypedwitch

Followers
3K
Following
48K
Media
667
Statuses
10K

There's no sense crying over every mistake. You just keep on trying till you run out of cake. - GLaDOS https://t.co/70SfmxnROe https://t.co/p6LXXU7dGH

Joined July 2019
Don't wanna be here? Send us removal request.
@welltypedwitch
Prophet
2 years
I didn't think I had to say this, but if you try to follow me and I see that your following looks like this, I *will* block you. Trans rights are human rights.Black lives matter.Fuck nazis.(read the alt text for translations)
Tweet media one
Tweet media two
Tweet media three
7
4
102
@welltypedwitch
Prophet
8 months
okay i get that people don't like oop on here but the number of people that genuinely don't understand the point of getters/setters is astounding (including some of the replies to this).
@ptr_to_joel
Joel 🇦🇺
8 months
Imagine unironically writing this
Tweet media one
145
102
4K
@welltypedwitch
Prophet
7 months
@ChShersh okay but why though? being able to open pdfs as browser tabs is such a good feature.
1
2
4K
@welltypedwitch
Prophet
2 years
>try a new programming language.>ask if (%) is rem or mod.>they don't understand.>pull out diagram explaining what is rem and what is mod .>they laugh and say "it's a good (%)" .>(-1) % 4.>-1.
37
355
3K
@welltypedwitch
Prophet
10 months
welp, look what i just found in some code i wrote 7 months ago. (this is not a joke lol)
Tweet media one
@emil_priver
Emil Privér
10 months
Due to my elite programming skillz, I figured out how to shave off THIRTY SECONDS from my app's startup time. Here's my optimization tips:. 1. Remove the sleep(30) call I added a month ago and forgot to remove.
9
49
1K
@welltypedwitch
Prophet
4 months
"ask her what the difference between a compiler and an interpreter is" is such a middle of the bell curve meme question lol.
@xgigglypuff
giggly ♡
4 months
These are simple questions that a lot of people learn during their first college computer science course. If you haven’t, though, it’s never too late. It’s easy to forget things that we don’t use, but I promise that no one graduates from Harvard with a computer science degree
Tweet media one
34
27
1K
@welltypedwitch
Prophet
3 months
Tweet media one
@ccmnlover
maurice ೀ
4 months
what’s your most liked tweet?.
16
41
1K
@welltypedwitch
Prophet
9 months
i still prefer this version
Tweet media one
@equacc
duck eng
9 months
@swlkr this one is important too
Tweet media one
10
69
1K
@welltypedwitch
Prophet
8 months
e.g. if you have. class Person {. private String name;. public String getName(){. return name;. }.}.you can change it to use first and last names in the future without breaking every usage site that depends on the full name.
24
5
904
@welltypedwitch
Prophet
8 months
don't get me wrong, this java tendency to mindlessly throw getters and setters at every variable is a terrible idiom, but that's because "get/set this field" is (usually) a bad interface. a public field would be *worse*.
14
8
809
@welltypedwitch
Prophet
8 months
like, the reason these exist is that you really don't want to expose the fact that `thing` is a class field and have to commit to it for all eternity.
16
3
780
@welltypedwitch
Prophet
6 months
it's insane to me that people actually think fp doesn't have design patterns or that we rarely have names for the ones we use because "they're just obvious" and not because functional programmers would rather wax on about how their favorite language was made by god herself. .
@ChShersh
Dmitrii Kovanikov
6 months
OOP Design Patterns is a scam. All you need is functions.
Tweet media one
17
30
694
@welltypedwitch
Prophet
6 months
rust people i love you but please stop calling lambdas "closures".
21
14
639
@welltypedwitch
Prophet
11 months
okay why does the minecraft font have math ligatures that look this good wtf
Tweet media one
9
47
584
@welltypedwitch
Prophet
10 months
tell me you don't know how compilers work without telling me.
@gfodor
gfodor.id
10 months
honestly anyone who has written software claiming AI isn't dangerous because it's 'just emitting tokens' is being disingenuous or is in a deep state of cognitive dissonance. the first phase of compilers is called "tokenization". emit the right tokens and you can own the world.
15
24
527
@welltypedwitch
Prophet
1 year
this tweet is so funny to me. they had google bard generate go and rust code for the same problem, apparently didn't notice that the results do very different things and then concluded that Rust Is Bad because, uh, the code bard generated does error handling?.
@HubertBosiacki
CallMeMrYogurt!
1 year
My crusade against some RUST zealots continues. Here are examples of build patterns with #golang and #rustlang.Not only do you need to know less about language with Go to understand what is going on here, but look at this rust "simple" error handling. Oh, my Spaghetti Monster
Tweet media one
Tweet media two
27
29
492
@welltypedwitch
Prophet
1 year
AoC day 1 part 1 in x86-64 Assembly vs Haskell
Tweet media one
Tweet media two
27
27
469
@welltypedwitch
Prophet
9 months
Tweet media one
13
31
459
@welltypedwitch
Prophet
3 months
fun problem from my algorithms assignment:. design a data structure that supports the following operations:. insert: O(log(n)).determineMedian: O(1).deleteMedian: O(log(n)).
66
8
425
@welltypedwitch
Prophet
9 months
i can't wait for this bubble to burst.
@headinthebox
Erik Meijer
9 months
As the stragglers are still heatedly debating F# vs C# vs OCaml vs Haskell, the language designers have already moved on to the next generation of AI-based programming languages Skate towards where the puck is going, not where it.
21
18
381
@welltypedwitch
Prophet
5 months
even hotter take: generated source code shouldn't exist. you should be able to use a nice expressive, introspectable metaprogramming system instead.
@ChShersh
Dmitrii Kovanikov
5 months
My hottest tech take: generated source code should be committed. It happened to me so many times when the code generation logic was changed, a bug was introduced and there were no git diff to even compare with the old versions.
33
21
377
@welltypedwitch
Prophet
6 months
okay what the fuck. this is such an obviously terrible idea how did anyone on the rust team ever think this was acceptable??
Tweet media one
26
12
368
@welltypedwitch
Prophet
9 months
jesus christ most "criticisms" of OOP are impossible to take seriously. people will literally complain that OOP forces everything to be an object and then gush about how their favorite language has first class functions.
60
10
362
@welltypedwitch
Prophet
5 months
gleam's best feature strikes again
Tweet media one
7
13
354
@welltypedwitch
Prophet
1 year
unboxed types, traits, linearity, guaranteed data race freedom, freestanding / embedded support, low memory overhead, real time performance guarantees, easy and lightweight FFI in both directions, broad architectural support, low level control over thighs like custom allocators.
8
19
350
@welltypedwitch
Prophet
10 months
Python pattern challenge - Day 6. Best code will be rewarded.
Tweet media one
15
15
329
@welltypedwitch
Prophet
2 years
Type inference is probably the closest thing to magic I know. You could have never convinced me in 2020 that this would just make sense to me now.
Tweet media one
15
27
313
@welltypedwitch
Prophet
9 months
hey folks that like types: please stop pretending that people who don't like types are naive or just haven't been "enlightened" yet. you can think that they're wrong and maybe they are (maybe not), but at least take them seriously, okay?.
74
14
304
@welltypedwitch
Prophet
4 months
i'm sorry, i can accept engagement bait but i will not stand for traverse erasure.
@ChShersh
Dmitrii Kovanikov
4 months
Your brain on FP is believing that remembering ~50 functions is superior to learning a single language construct
Tweet media one
4
6
291
@welltypedwitch
Prophet
6 months
it is kind of wild how when talking about GCs, most people just accept the idea that malloc/free allocators are fast without question.
35
6
292
@welltypedwitch
Prophet
1 year
i must not get baited.bait is the mind killer.bait is the little death that brings total obliteration.i will face my bait.i will permit it to pass over me and through me.and when it has gone past, i will turn the inner eye to see its path.
14
11
277
@welltypedwitch
Prophet
3 months
i don't buy this. in fact, i'm going to claim the exact opposite!. i think it's *easier* to predict what the fold is going to compile to than the loop. (1/a lot).
@stylewarning
'(Robert Smith)
3 months
Despite the merits of the 1st alternative, many people like the 2nd because they can predict the minimum the compiler will do to translate that to machine code, and that minimum is perf-sufficient. Not just that, but the 2nd can also be changed to a map-reduce in one line. (1/5)
Tweet media one
19
26
273
@welltypedwitch
Prophet
1 year
ocaml is just haskell for straight people send tweet.
22
15
263
@welltypedwitch
Prophet
4 months
PSA: don't do this please
Tweet media one
11
8
259
@welltypedwitch
Prophet
3 months
so, haskell peeps if i were to write a "how to write haskell in 2025" blog post, what should i include?. (i'm thinking of things like "don't use string", "just use async", "enable GHC2023", etc.).
32
7
227
@welltypedwitch
Prophet
10 months
jfc how does this have 11k likes? do people actually believe that not rotating a swastika makes it okay to post for a fucking programming challenge.
57
4
221
@welltypedwitch
Prophet
1 year
hot take: the best way for a new functional language to improve performance is to remove linked lists from its standard library.
22
15
225
@welltypedwitch
Prophet
3 months
it's kind of wild that most imperative languages capabilities for robust, typed abstractions are so bad that rust is considered "functional".
11
13
219
@welltypedwitch
Prophet
5 months
i kind of hate how prevalent this idea is that everything is just sort of a wrapper around c. there is just so much more out there!.let's see your c program do moving gcs or segmented stacks. even cps is arguably a lot closer to how the hardware works than c's call/return model.
21
7
220
@welltypedwitch
Prophet
8 months
@hot_girl_spring well yeah because records just do this for you, but the concept of having a function to get the value rather than exposing the field itself is still there with records, right?.
2
0
220
@welltypedwitch
Prophet
7 months
it is really funny to me that some people will say "haskell is too hard because of the math" and then go back to doing gamedev.
22
8
211
@welltypedwitch
Prophet
4 months
cracking eggs.
@_blackfyre__
mertens
4 months
whats the main use of haskell?.
6
13
209
@welltypedwitch
Prophet
6 months
Functional programming languages should be so much better at mutation than they are.
12
25
215
@welltypedwitch
Prophet
1 year
if you want to learn about monads, please read this. seriously!.waders paper and "you could have invented monads" are literally the only good monad tutorials I know.
@FunctorFact
Functor Fact
1 year
Monads are hard because .
14
19
213
@welltypedwitch
Prophet
2 years
Why do people still put character limits on passwords?. Seriously, in what world is a 20 character password more secure than a 40 character one?.
38
11
203
@welltypedwitch
Prophet
6 months
like, another way to phrase the quoted tweet would be. OOP: here is a list of solutions for a bunch of problems with well known benefits and drawbacks and a whole range of literature behind them. FP: just figure it out lol. good luck.
4
9
203
@welltypedwitch
Prophet
9 months
using haskell or rust is fun because you never know when you'll leave your computer alone for 5 minutes and come back to freezing up because HLS/rust-analyzer used up over 32G of memory.
13
9
202
@welltypedwitch
Prophet
4 months
Tweet media one
13
20
201
@welltypedwitch
Prophet
1 year
oh sick, a right associative application operator with precedence 0 to avoid parentheses in javascript!.
@jarredsumner
Jarred Sumner
1 year
guess what this'll be
Tweet media one
4
13
202
@welltypedwitch
Prophet
8 months
periodically being reminded that non compiler people mean something very different when they say "code generation".
7
7
194
@welltypedwitch
Prophet
5 months
i can die happily now.
@HaskellOrg
Haskell
5 months
And Haskell loves you back, Prophet.
3
2
191
@welltypedwitch
Prophet
2 years
I mean. have you seen the list of authors on the Verse Calculus paper?.This is like the Manhattan Project of PL and it's happening in Fortnite and "the Metaverse"
Tweet media one
3
26
189
@welltypedwitch
Prophet
5 months
c is just cope for people who can't understand fast allocators.
6
3
188
@welltypedwitch
Prophet
4 months
i'm toying with the idea of suffixing unreasonably slow but still useful functions with "slow", as in List.indexSlow. so you only use it if you know what you're doing, kind of like how an unsafe function would be called List.indexUnsafe. too weird? ^^.
41
4
186
@welltypedwitch
Prophet
11 months
and if you desugar the vtables, you'll see that this is pretty much just a church encoding :).
@tsoding
Тsфdiиg
11 months
If-conditions are bloat. You don't need them if you have polymorphism.
Tweet media one
8
9
180
@welltypedwitch
Prophet
1 year
Language I dislike: Python.Language I begrudgingly respect: Scala.Language I think is overrated: OCaml >:).Language I think is underrated: Lua.Language I like: OCaml.Language I love: Haskell.Language I dream of writing in: Vega.
@TheRastrian
rastrian.dev 🦀🐫
1 year
Language | dislike: Java .Language I begrudgingly respect: TypeScript.Language I think is overrated: Go.Language I think is underrated: Elixir.Language | like: Haskell.Language | love: OCaml.Language | dream of writing in: Rust.
16
7
176
@welltypedwitch
Prophet
5 months
it's kind of funny that modern programming languages suck so badly at representing graphs that we pretend they're trees.
16
3
182
@welltypedwitch
Prophet
5 months
this is the correct comment to code ratio btw
Tweet media one
8
3
174
@welltypedwitch
Prophet
11 months
I don't think people appreciate the tradeoffs they're making with algebraic data types.
33
20
173
@welltypedwitch
Prophet
3 months
since this is now discourse apparently: "make invalid states unrepresentable" is a *strategy*. it's a good strategy and if it works well it's great, but it is your responsibility to use your judgement to determine when it is worth it and when it isn't.
17
5
171
@welltypedwitch
Prophet
3 months
this is probably my favorite aspect of haskell: haskell just *has things*. there is a common way to misuse your library and you want to tell people what they should do in that case?.just write a custom type error. that's a thing you can do!.
@mattoflambda
Matt Parsons
3 months
custom type errors are seriously underrated
Tweet media one
10
10
166
@welltypedwitch
Prophet
7 months
this also applies to our fancy high level functional languages btw. any time you're storing a static collection of things in a linked list instead of an array because it's easier or because that's what everything else expects is a language failure.
@__phantomderp
Björkus 'No time_t to Die' Dorkus
7 months
I got to watch a person livecoding in C and instead of put themselves through writing Yet Another Hash Find, they just literally wrote a linear scan because "it was easier and this code will never be a critical path". This is what a lot of other people said about their shit too!.
4
12
170
@welltypedwitch
Prophet
1 year
this is such a night and day difference. ocaml docs really have a lot of room for improvement
Tweet media one
Tweet media two
13
7
161
@welltypedwitch
Prophet
5 months
i do think it's really funny that the bar to being """cracked""" on here is apparently now "writing a compiler and using haskell" lol.
@OccultSyntax
occult.syntax
5 months
@tunahorse21 the most cracked dude I know wrote a compiler in uni and was the first person I saw using Haskell. that was 17 years ago. he still hasn’t made it to senior because he’s deadass the weirdest dude to communicate with. coding skills will only get you so far.
14
7
160
@welltypedwitch
Prophet
1 year
go is a dynamically typed language with a static type system send tweet.
12
12
156
@welltypedwitch
Prophet
8 months
@The_MrX_ what performance penalty? i would be very concerned if your java JIT can't inline a trivial getter.
2
0
152
@welltypedwitch
Prophet
7 months
@FreyaHolmer i feel like they should at least allow \infinity as an alias by default.
1
0
158
@welltypedwitch
Prophet
1 year
I don't make the rules
Tweet media one
@0xglitchbyte
Glitchbyte
1 year
I dont make the rules
Tweet media one
9
5
155
@welltypedwitch
Prophet
8 months
since this is apparently still a thing, my only take on the "cs grads not knowing git" discourse is: what kind of universities are you all going to where you never learn about git?? and where you don't even have large scale group projects that need some kind of version control??.
34
0
152
@welltypedwitch
Prophet
11 months
death by 1000 cuts sums up ocaml so well unfortunately. and not just the tooling, even the language itself has soo much like this. just off the top of my head, there is.- polymorphic comparison.- reference equality.- whatever ocaml calls "type variables". .
@ryanrwinchester
Ryan Winchester
11 months
@Aron_Adler opam/dune for sure. opam mostly but, dune isn’t bad but feels a bit lacking. Also things like init project seems like could have some better defaults, and structure/naming. Just many small things. Death by 1000 cuts. Stuff you could probably get used to if you stick it out, but.
10
10
152
@welltypedwitch
Prophet
9 months
pl designers should really come together and standardize their terminology sometime. rust and scala people should have a fight to the death and whoever survives gets to keep the name "trait".
13
11
152
@welltypedwitch
Prophet
10 months
@TheEduardoRFS . why?.
1
0
149
@welltypedwitch
Prophet
1 year
functional programmers will decry the liskov substitution principle as "OOP garbage" and in the same breath go on about how important the monad laws are.
12
3
154
@welltypedwitch
Prophet
4 months
this is a matter of language/ecosystem not personality. i mostly do this but i absolutely couldn't if i had to write python or javascript.
6
6
148
@welltypedwitch
Prophet
10 months
if you know who this house belongs to, we can be friends
Tweet media one
@xgigglypuff
giggly ♡
10 months
If you know who this house belongs to, we can be friends. ♥️
Tweet media one
10
8
149
@welltypedwitch
Prophet
1 year
i'm really starting to think that a lot of "criticisms" of haskell are just people being deathly afraid of not knowing things.
18
13
150
@welltypedwitch
Prophet
1 year
lukewarm take: linked lists are much better than imperative programmers think and much worse than functional programmers think they are.
@ThePrimeagen
ThePrimeagen
1 year
all my homies hate singly linked lists.
15
5
137
@welltypedwitch
Prophet
6 months
than think about how to write good code. functional programmers always pretend that it's just a historical accident that fp didn't catch on but have you like seen a haskell or ocaml code base from 20-30 years ago?.
2
2
135
@welltypedwitch
Prophet
5 months
OCaml is a really nice language but the language it's made out to be is not.
13
11
141
@welltypedwitch
Prophet
1 year
Blazingly Fast™ Type Class Resolution with Tries. (hey it's only been. 11 months. since the last time i published a full length bog posts).
13
22
143
@welltypedwitch
Prophet
4 months
slowly forming the opinion that 80 character line limits are actually kind of bad because they discourage you from using long meaningful names since the formatter is more likely to break lines weirdly with them. or maybe that's just ocamlformat.
28
0
141
@welltypedwitch
Prophet
3 months
i did a thing!!.
17
7
142
@welltypedwitch
Prophet
2 years
Lower your guards is black magic. (This compiles without warnings or errors, even though the second case doesn't handle A, because it is already handled by the first definition).
Tweet media one
13
10
134
@welltypedwitch
Prophet
1 year
I'm really not a fan of currying, but wow,. (Int -> Int -> Bool) -> String -> String. is so much easier to read than. (((Int, Int) -> Bool), String) -> String.
20
4
132
@welltypedwitch
Prophet
6 months
they're distinct concepts. not every lambda creates a closure and not every closure is necessarily created by a lambda.
1
0
128
@welltypedwitch
Prophet
9 months
my type error doesn't fit on my screen help
Tweet media one
16
6
130
@welltypedwitch
Prophet
1 year
One of the main reasons why I think everyone should learn at least one pure language is that it expands the notion of what a side effect even is.
13
5
133
@welltypedwitch
Prophet
1 year
I've looked into what's actually happening here and this is honestly such a strange TS bug. If TS knows that T is a subtype of { x : A | B }, it somehow assumes that T["x"] is *exactly* A | B and *not* a subtype of it, which is just wrong.
@dillon_mulroy
Dillon Mulroy λ
1 year
Woops! Despite doing everything by the books and not using any escape hatches ('as', 'any', or 'non-null assertions') TypeScript let us give a normal 'member' admin permissions! 💥
Tweet media one
5
12
128
@welltypedwitch
Prophet
1 year
hey to be fair: he never said the inferred type had to be correct.
@elonmusk
Elon Musk
1 year
@MarkovMagnifico Done right, a compiler should be able to figure out type automatically. It’s not that hard. Not that it will matter much in the AI future.
7
1
132
@welltypedwitch
Prophet
8 months
Type systems should be consistent (and probably dependently typed).
11
16
130
@welltypedwitch
Prophet
4 months
i'm going to block the next person that says haskell is bad at io jesus christ.
21
0
125
@welltypedwitch
Prophet
7 months
Haskell = Celeste.Idris = Slay The Spire.Agda = Touhou: Lost Branch of Legend.Scala = Wolfenstein II.JavaScript = Fortnite.C++ = Doom.Rust = Doom (2016).ATS = Elden Ring.OCaml = Counter Strike.F# = Valorant.Polaris = Portal 2.Teika = 5D Chess With Multiverse Time Travel.
@ChShersh
Dmitrii Kovanikov
7 months
Programming Languages as Video Games. Java = Call of Duty.TypeScript = World of Warcraft.Python = Sid Meier’s Civilization.C = Counter Strike 1.6.C++ = Dota 2.Go = Slay The Spire.Rust.Lisp = Portal 2.Haskell = Dwarf Fortress.OCaml = Elden Ring.Excel = Minecraft.
21
12
127
@welltypedwitch
Prophet
6 months
but it's frustrating because instead of actually talking about that we have to babysit the egos of a bunch of men with superiority complexes.
7
2
125
@welltypedwitch
Prophet
5 months
Programming is about information not data, or: you might not need dependent types .
11
9
125
@welltypedwitch
Prophet
6 months
and also this!! how is a change that makes previously valid code *stop compiling* not a breaking change?? what
Tweet media one
7
4
123
@welltypedwitch
Prophet
1 year
if someone tells you that ocaml's syntax is elegant, ask them what the difference between. type t = A of int * int. and. type t = A of (int * int). is :). (to be clear: i actually quite like ocaml's syntax but calling it elegant is a bit of a stretch).
26
0
118
@welltypedwitch
Prophet
2 years
@tthbaltazar Yes exactly. _ mod 4 is always in the range 0. =3 which is usually what you want.
1
0
115
@welltypedwitch
Prophet
3 months
it's honestly still wild to me that both ocaml and rust implement type class deriving with *proc macros* that generate untyped code.
13
7
119
@welltypedwitch
Prophet
6 months
@stylewarning i mean, it *is* pretty surprising that default arguments are evaluated once and then shared but that's.1) a property of the language, not the interpreter and .2) something you *really* need to know if you're ever using default arguments.
7
1
111
@welltypedwitch
Prophet
1 year
not to start discourse again but quick rule of thumb: if the first example of a monad someone gives you is List, you can probably ignore their explanation.
21
5
113
@welltypedwitch
Prophet
9 months
oh hey computer scientists accurately named something for a change
Tweet media one
6
2
112