Alexis King Profile Banner
Alexis King Profile
Alexis King

@lexi_lambda

Followers
12,691
Following
24
Media
913
Statuses
7,153

computers can be understood • DMs open (but responsiveness varies) • she/her, ⚢

Chicago, IL
Joined October 2012
Don't wanna be here? Send us removal request.
Explore trending content on Musk Viewer
Pinned Tweet
@lexi_lambda
Alexis King
4 years
“Put up in a place where it's easy to see the cryptic admonishment T.T.T. When you feel how depressingly slowly you climb, it's well to remember that Things Take Time.” — Piet Hein
5
23
147
@lexi_lambda
Alexis King
7 years
“I don’t need macros, they’re too complicated and not useful,” says the programmer as they use Flow with JSX with Babel with two dozen plugins and maintain two hundred line webpack configs for code with machine-checked comments that parses CSS in template strings at runtime and—
15
366
1K
@lexi_lambda
Alexis King
3 years
I really wish people were more familiar with the original context of the “premature optimization” quote, because it is not nearly as general a statement as a lot of people seem to want it to be. Here is the actual text from Structured Programming with go to Statements, by Knuth.
Tweet media one
Tweet media two
26
228
989
@lexi_lambda
Alexis King
4 years
people: “Oh so you work for a GraphQL company, huh? What architecture do you recommend for my CRUD app?” me:
Tweet media one
14
181
783
@lexi_lambda
Alexis King
5 years
I’m pleased to present the flame-bait sequel to my previous blog post: “No, dynamic type systems are not inherently more open.” (Please send me your hatemail at your earliest convenience.)
38
255
677
@lexi_lambda
Alexis King
3 years
based on the number of comments I see in which programmers are presented with extremely simple and straightforward code and respond with roughly “I would never understand this if I encountered it without context” I can only conclude they have some sort of learned helplessness
Tweet media one
65
34
661
@lexi_lambda
Alexis King
3 years
“C++ and Rust are compiled languages and therefore don’t have runtimes” is one of the more audacious confidently wrong assertions I have seen on the orange website, and that is saying something
Tweet media one
22
48
635
@lexi_lambda
Alexis King
3 years
It is done: my 10,000 word introduction to typeclass metaprogramming (and type-level programming in general) in Haskell.
15
142
572
@lexi_lambda
Alexis King
3 years
“is this a place of honor? are any highly esteemed deeds commemorated here? is the danger still present in our time, as it was in theirs? I want to know if it is safe to hold my birthday party here. thank you.”
@ideolysis
You
3 years
Tweet media one
7
142
1K
8
125
553
@lexi_lambda
Alexis King
2 years
Tweet media one
5
55
534
@lexi_lambda
Alexis King
7 years
Hot take: getting the most significant benefits of static type systems requires a meaningfully different mental model of program construction, and gradual/optional type systems make static types *feel* terrible because they, by design, don’t demand or encourage that mental shift.
20
127
521
@lexi_lambda
Alexis King
3 years
haskell is a domain specific language for writing a haskell compiler
7
38
527
@lexi_lambda
Alexis King
3 years
Tweet media one
10
81
508
@lexi_lambda
Alexis King
3 years
single page apps, microservices, and blockchains are popular these days because, as we all know, distributed systems are a famously easy problem in computer science, and it’s important to include as many of them in your CRUD app’s architecture as possible
4
78
510
@lexi_lambda
Alexis King
5 years
I wrote a longish comment about one of the ways I think Haskell is hard that gets overlooked by people in the Haskell community a lot:
Tweet media one
25
91
499
@lexi_lambda
Alexis King
7 years
this comment from /r/haskell manages to summarize a point I have tried and failed to make (to myself) in 100 times as many words.
Tweet media one
8
175
502
@lexi_lambda
Alexis King
7 years
It been a while since my last blog post, but it’s finally done. “An Opinionated Guide to Haskell in 2018”.
24
141
466
@lexi_lambda
Alexis King
3 years
someone asked me in a conversation today to elaborate on why I have such an intensely negative opinion of SICP, and seeing as I took the time to type out my answer, I figure I might as well post it here, because it’s something people have often seemed surprised about
Tweet media one
39
51
457
@lexi_lambda
Alexis King
4 years
Hello new followers! I am glad you have joined me from my tweet about pragmatically sticking to simple, tried and true technologies. You will all be thrilled to learn I am currently employed writing [checks notes] a real-time GraphQL compiler in Haskell.
11
21
443
@lexi_lambda
Alexis King
3 years
it’s always funny to me when I see “AI ethicist” types refer to Asimov’s three laws of robotics in ways that make it clear they never actually read the books, because a massive number of Asimov’s short stories were about robots interpreting the laws in highly unintuitive ways
13
62
435
@lexi_lambda
Alexis King
2 years
I’ve always loved building systems robust enough that people using them don’t have to know or care about all the problems I had to obsess over while building them, but as an unfortunate effect, I’ve often realized it’s likely nobody else will ever fully appreciate the work I did.
12
34
436
@lexi_lambda
Alexis King
2 years
Tweet media one
8
64
424
@lexi_lambda
Alexis King
4 years
I present: my one-line change to Control.Category, accompanied by a 61-line comment.
Tweet media one
9
46
415
@lexi_lambda
Alexis King
3 years
The program It escaped its sandbox fuck FUCK The payload is out
13
54
415
@lexi_lambda
Alexis King
2 years
This may be a hot take, but I think writing a configuration file in a data language by hand is almost always worse than writing a program in a sufficiently expressive general-purpose programming language that generates that data either at build time or at check-in time.
@mycoliza
neural oscillator of uncertain significance
2 years
@ag_dubs now the yaml is turing-complete. is this good. do you like this.
3
8
50
36
47
408
@lexi_lambda
Alexis King
3 years
Tweet media one
5
90
389
@lexi_lambda
Alexis King
5 years
whenever the Haskell gets rough, remembering that I haven’t had to write for (int i = 0; i < arr.length; i++) in several years is usually enough to remind me why I’m happy I get to do typed FP for a living
12
46
399
@lexi_lambda
Alexis King
2 years
I think PL/compilers would benefit a lot from more papers like this one
Tweet media one
Tweet media two
8
42
375
@lexi_lambda
Alexis King
2 years
I am pleased to announce that after an extended (and much needed) break from employment, I have just joined @tweagio , where I’ll be working on GHC and other Haskell-related things. (In fact, I technically started last week, but I’m only just getting around to stating it here.)
16
13
375
@lexi_lambda
Alexis King
5 years
Bless this sequence of slides. This is one of those things that is super obvious to anyone who struggles with executive dysfunction but is difficult for someone who hasn’t to understand since the mind usually keeps such a good illusion of control. (from )
Tweet media one
Tweet media two
Tweet media three
Tweet media four
@gregdeon_
Greg d'Eon
5 years
Signal boosting: Kenny Foner's amazing talk on mental health in grad school . Thanks to @gnviviani for the link
1
13
54
3
137
365
@lexi_lambda
Alexis King
4 years
. @cvlad asked me on /r/haskell how I usually explain monads to people with an imperative programming background, and this is my answer.
Tweet media one
Tweet media two
Tweet media three
9
65
367
@lexi_lambda
Alexis King
6 years
It’s been a long time coming, but I am excited to finally announce that, starting next month, I am going to be working with @racketlang full-time at Northwestern University’s programming languages group!
27
13
367
@lexi_lambda
Alexis King
2 years
every once in a while I think about how my ideal notetaking app is essentially just a really nice/flexible direct manipulation GUI for a SQLite database, but I don’t think anything like this exists, and I unironically think that says a lot about the failures of personal computing
42
27
363
@lexi_lambda
Alexis King
5 years
I decided to collect some of the thoughts on parsing vs. validation I was reflecting on about a month ago into a new blog post:
12
137
352
@lexi_lambda
Alexis King
2 years
Wrote a comment about why I think the way people describe the merits of their favorite programming language almost always sucks and gave an example of how I think we could do a much better job of this for Haskell.
Tweet media one
9
39
346
@lexi_lambda
Alexis King
6 years
found this gem in the GHC user’s guide
Tweet media one
4
99
343
@lexi_lambda
Alexis King
5 years
For all I complain about Haskell, sometimes I just have to sit back and marvel at how unbelievably pleasant I find building complicated software in it relative to every other programming language I’ve ever used. I have so much gratitude for all the people who have worked on it.
5
58
322
@lexi_lambda
Alexis King
4 years
I am happy to announce Part 3 of my unplanned trilogy on static typing: “Types as axioms, or: playing god with static types”
12
88
314
@lexi_lambda
Alexis King
1 year
I am pleased to announce the release of Part 1 of my new video series in which I attempt to convince you that lazy evaluation is good, actually. (Yes, I said I would make this six months ago, and yes, there’s probably a joke to be made there.)
6
47
303
@lexi_lambda
Alexis King
7 years
me: oh, my blog post was posted to hacker news, maybe I should see if there was any insightful commentary or criticism them:
Tweet media one
10
47
305
@lexi_lambda
Alexis King
3 years
society if propositional and first-order logic were included in primary and secondary education mathematics curricula
Tweet media one
@lexi_lambda
Alexis King
3 years
@iximeow sometimes I wonder if this sort of ∀-vs-∃ confusion would be less pervasive if students were exposed to literally any formal logic in middle/high school, because first-order logic is very accessible, and it seems a lot more generally useful than, say, matmuls devoid of context
6
4
78
15
39
299
@lexi_lambda
Alexis King
2 years
what if… I returned to mostly tweeting about extremely esoteric Racket stuff that at most 20 of my followers understand… and provided absolutely no explanations. any sickos out there who would support me in this journey
29
3
294
@lexi_lambda
Alexis King
3 years
Tweet media one
Tweet media two
8
46
289
@lexi_lambda
Alexis King
3 years
the worst part of living alone is how bad the ratio is between productive hours and time spent on the acquisition and preparation of food. like, c’mon, body, you already ate food yesterday, can’t you be satisfied with that for once and give me a day to write this computer program
14
22
293
@lexi_lambda
Alexis King
2 years
for those confused about why I have played almost 1,500 hours of Factorio despite not really playing many other games, consider that it is the kind of game for which its players are actively trying to solve one of its subproblems by reducing it to SAT
Tweet media one
8
28
286
@lexi_lambda
Alexis King
2 years
it is a common misconception that the name “C++” is a joke implying that C++ is “one better than C”. in fact it implies that C++’s existence makes C seem better in comparison, due to its use of the post-increment operator.
9
33
287
@lexi_lambda
Alexis King
7 years
this is the worst valentine’s day present I have received to date
Tweet media one
5
34
267
@lexi_lambda
Alexis King
5 years
I am excited to announce that, as of today, I am writing Haskell professionally again at @HasuraHQ !
5
7
262
@lexi_lambda
Alexis King
5 years
I went down a perf hole in Racket over the past few days, and as obvious as it might seem in retrospect, it makes me sad to realize just how much better GHC’s optimizer is than anything we could ever hope to do. It turns out static types and purity enable a lot of optimizations.
7
66
258
@lexi_lambda
Alexis King
5 years
I don’t usually use twitter for this sort of thing, but I want to ask: are there any other women in Chicago who write Haskell or are interested in learning? If so, let’s talk? (No offense to the rest of you, but I’ll be honest: it can be lonely being a woman in this community.)
9
75
251
@lexi_lambda
Alexis King
4 years
one of my least favorite things about twitter is the number of extremely average people with absurdly obnoxious profiles like “code bender, 10x CEO, type wizard, ops demigoddess, dad” while everyone smart enough to know better has too much impostor syndrome to say anything at all
17
13
247
@lexi_lambda
Alexis King
9 months
I dare you guys to guess what this is replying to
12
10
247
@lexi_lambda
Alexis King
6 years
As a polyglot programmer for many years now, it is still a little stunning to me when I realize someone’s mental model of a simple program involves language-specific constructs like “for loop” or “list comprehension” rather than the language-agnostic “data transformation”.
6
63
243
@lexi_lambda
Alexis King
3 years
Your heap needs to be getting bigger. You need to be allocating memory. You need to be collecting garbage constantly. Marking, sweeping, copying, chasing pointers, pushing activation records, starting threads and scheduling tasks. Your page file needs to be huge.
Tweet media one
3
46
243
@lexi_lambda
Alexis King
5 years
Automatically generating a JSON parser from types is such a killer feature I don’t even think that much about until I have to interact with a third-party HTTP API and suddenly have to write reams and reams of code to very carefully ensure the data is the right shape.
5
43
243
@lexi_lambda
Alexis King
4 years
Names are not type safety
9
56
235
@lexi_lambda
Alexis King
3 years
I don’t know how to explain to programmers that API documentation exists, it has all the answers in it, you can read it at any time, and referencing API docs constantly as you work is an extremely normal part of the process of writing software
@URozmej
Łukasz Rozmej
3 years
@lexi_lambda But it is cryptic. You have something that results to a bool, seems an int, both of those can be inferred from code. In reality is an Option<int>, which is nowhere mentioned in the code. You either know it or don't.
7
0
16
16
16
231
@lexi_lambda
Alexis King
5 years
This project has been months in the making, but I am extremely pleased to say that my prototype delimited control-based effect system for Haskell now passes every one of my unit tests. (9 tests may not seem like much, but almost all of these test tricky edge cases!)
Tweet media one
8
30
232
@lexi_lambda
Alexis King
5 years
You ever spend weeks working on something and then finally find a paper that you realize you’ve been slowly reinventing? It’s a weird feeling—positive in the sense that it’s very validating but a bit negative in the sense that it feels like you’ve done a lot of “wasted” work.
24
11
228
@lexi_lambda
Alexis King
3 years
Was reminded of one of my very favorite papers today: “A fork() in the road”
Tweet media one
7
29
225
@lexi_lambda
Alexis King
3 years
if anything, the best part of I, Robot is how it consistently presents robots doing undesirable things not as AI “gone evil” or “run amok” but implications of their programming that humans did not anticipate, which must be understood and fixed like any other engineering problem
4
24
221
@lexi_lambda
Alexis King
1 year
entering my “big glasses and ponytail” era. increasingly uncertain how I’m still single
Tweet media one
13
1
222
@lexi_lambda
Alexis King
3 years
was reminded today of that one time the PHP developers tried to fix an overflow bug by adding a check if (size > INT_MAX) where `size` has type `int`
4
17
217
@lexi_lambda
Alexis King
4 years
currently making Haskell programmers uncomfortable on the FP slack by pointing out that all the same rigor people try to use to explain why the State monad is “actually pure” also applies to IO
16
14
215
@lexi_lambda
Alexis King
3 years
type of girl who uses lots of emojis and aggressively fights anyone who complains about her overuse of “pictographs” by insisting that they are “first-class unicode grapheme clusters” that “convey the same amount of semantic content” as other characters
4
12
209
@lexi_lambda
Alexis King
3 years
Well, it can’t do much, the interface is still extremely low-level, and the implementation relies on various unmerged patches to portions of the Racket drawing stack, but I finally have a functional API for building and manipulating math terms that seems to basically work.
Tweet media one
4
15
211
@lexi_lambda
Alexis King
1 year
sometimes I get the sense that a lot of programmers hate programming, which is interesting because I love programming but hate programmers
7
20
213
@lexi_lambda
Alexis King
4 years
I try not to succumb to the “everything sucks” mindset too much, but sometimes it would sure be nice if GUI software had evolved to be even just slightly compositional by design rather than the weird “desktop of hermetically sealed bubbles of functionality” we ended up with.
6
27
212
@lexi_lambda
Alexis King
4 years
reading the OpenMP specification
Tweet media one
9
19
211
@lexi_lambda
Alexis King
6 years
A surprisingly big obstacle to my programming productivity is simple indecision—I often become more productive with a particular library or in a particular domain once I settle on a (sometimes arbitrary) set of conventions to cut down on the number of decisions I have to make.
14
24
214
@lexi_lambda
Alexis King
9 months
yesterday I used hoogle to look up what module IORef is in while writing a regression test for a GHC bug that took four hours in gdb to diagnose. it took about two seconds. rarely have I seen a piece of advice that would be a bigger waste of my time
@jimmykoppel
Jimmy Koppel
9 months
Programming tip: Memorize your standard libraries Make flashcards for the standard functions. If you don't use spaced repetition, then start. I did this for Haskell years ago. It brought me from constantly looking at documentation to coding at the speed of thought
Tweet media one
Tweet media two
19
19
201
16
6
210
@lexi_lambda
Alexis King
3 years
trying my hardest to spook people by posting about bash scoping semantics
Tweet media one
27
15
207
@lexi_lambda
Alexis King
4 years
Have you always been confused about the relationship between Cabal, cabal-install, and ghc-pkg? Have you wondered what the deal is with those weird Setup.hs files? I have finally written up a comment that provides answers to all those questions and more:
3
34
206
@lexi_lambda
Alexis King
5 years
left: the JavaScript I write when I work with other people right: the JavaScript I write when there’s nobody else to complain
Tweet media one
Tweet media two
14
17
207
@lexi_lambda
Alexis King
1 year
if you are attending Lambda Days or ZuriHac: please come to my talk and watch me attempt to explain what in the world a “delimited continuation” is
Tweet media one
Tweet media two
6
23
206
@lexi_lambda
Alexis King
6 years
To anyone intrigued but intimidated by the prospect of learning Haskell (or something like it): I wrote a thing tonight about why you shouldn’t be.
Tweet media one
Tweet media two
3
65
202
@lexi_lambda
Alexis King
3 years
LRT: “Type theorists have written MILLIONS OF GREEK LETTERS and yet inexplicably have not produced a SINGLE VALID GREEK WORD” is one of the funnier jokes I’ve seen in a while
0
9
200
@lexi_lambda
Alexis King
4 years
Random inconsistency I’m sure nobody else notices but bothers me: on iOS, you can type °, U+00B0 DEGREE SIGN, via a long press on the 0 key, but on macOS, Option+0 types º, which is the near-visually indistinguishable but semantically unrelated U+00BA MASCULINE ORDINAL INDICATOR.
10
26
200
@lexi_lambda
Alexis King
4 years
…and it’s over! Really glad people have seemed to appreciate the talk—I was a bit terrified it was simply too rushed with too much stuff in it! Either way, this was a lot of fun, so my many, many thanks to all the @ZuriHac organizers.
@ZuriHac
ZuriHac
4 years
In one hour, we're hosting @lexi_lambda 's talk “Effects for Less” live on our YouTube channel. We hope you're as excited for this as we are! Join us here:
2
22
100
21
20
199
@lexi_lambda
Alexis King
11 months
[I am linked to an HN discussion thread] please do not ascribe meaning to the statements produced by programmers. they’re just sampling from a large corpus of things they’ve seen before. they aren’t really intelligent and don’t really “understand” anything
4
30
199
@lexi_lambda
Alexis King
3 years
Tweet media one
3
27
193
@lexi_lambda
Alexis King
4 years
recently been getting back into Blender by modeling random objects we have around the house
Tweet media one
Tweet media two
Tweet media three
Tweet media four
9
4
194
@lexi_lambda
Alexis King
3 years
working on a blog post
Tweet media one
7
9
193
@lexi_lambda
Alexis King
6 years
For those of you attending @strangeloop_stl : join me tomorrow afternoon to talk about my programming language, Hackett!
Tweet media one
Tweet media two
Tweet media three
Tweet media four
5
39
190
@lexi_lambda
Alexis King
3 years
C and C++ are one of the few things I think I’ve gotten dramatically more terrified of handling since I was a kid, back then I thought they were just kind of tricky but now that I know better writing code in them is like how I imagine it must feel to work with high explosives
9
16
193
@lexi_lambda
Alexis King
5 years
I got so frustrated dealing with email clients that spit out horribly-formatted HTML emails that I started writing a script to send plain text + HTML emails from Pandoc markdown source files.
Tweet media one
Tweet media two
Tweet media three
13
24
191
@lexi_lambda
Alexis King
4 years
This is really funny to me.
Tweet media one
8
24
190
@lexi_lambda
Alexis King
2 years
these are some really impressively bad semantics to choose for your programming language
@glowcoil
micah johnston
2 years
and so does this one:
Tweet media one
7
2
49
14
8
188
@lexi_lambda
Alexis King
7 years
I’m looking for work! I’m really good at FP, and you should hire me. I’m most interested in local or remote positions, but I might be open to relocation within the US. Haskell is preferred but not required, though I’d like to avoid the JVM. More info:
17
134
180
@lexi_lambda
Alexis King
9 months
I have published a Racket implementation of Haskell’s MVars. I’ve had this sitting around for a while, but it wasn’t on GitHub anywhere, so I decided to polish it up today and add tests and docs
Tweet media one
5
14
181
@lexi_lambda
Alexis King
6 years
I’d just like to interject for a moment. What you’re referring to as the “IO monad” is in fact “the IO type which happens to have a Monad instance”, or as I’ve taken to calling it, “Monad IO”—
2
38
175
@lexi_lambda
Alexis King
3 years
thinking about how I’d like to meet more people who might actually be interested/patient enough to enjoy listening to me just explain shit for hours at a time and slowly realizing this just amounts to the fun subset of “teaching a class” except I also want them to be my friend
13
12
179
@lexi_lambda
Alexis King
5 years
ngl, I mostly wrote this comment as an excuse to make the diagrams
Tweet media one
4
11
177
@lexi_lambda
Alexis King
5 years
None of us will ever be as good at software engineering as the Factorio developers, and we just have to accept that
Tweet media one
1
31
178
@lexi_lambda
Alexis King
2 years
need to know what this person thinks designing a PL with the best features of every programming language would look like
Tweet media one
36
3
178
@lexi_lambda
Alexis King
3 years
I would like to formally request that everyone please stop doing blockchain because lately the stupidity has been far too rapidly approaching levels that are an active threat to my health and well-being thanks in advance
3
14
174
@lexi_lambda
Alexis King
1 year
Tweet media one
2
18
175
@lexi_lambda
Alexis King
5 years
implement an effect system, they said it will be fun, they said (who am I kidding, I brought this all upon myself. but still, send help)
Tweet media one
8
9
168