๐Ÿฆ‹ Jared Forsyth (@jaredforsyth) header
๐Ÿฆ‹ Jared Forsyth (@jaredforsyth) profile picture

follower of Christ. feminist. mormon. type theory, building kipos https://nitter.cf/t.co/8skbe4jcU2 dev @KhanAcademy he/him @jaredforsyth.com on ๐Ÿฆ‹

St Louis
Joined February 2008
Photo by ๐Ÿฆ‹ Jared Forsyth (@jaredforsyth)Photo by ๐Ÿฆ‹ Jared Forsyth (@jaredforsyth)Photo by ๐Ÿฆ‹ Jared Forsyth (@jaredforsyth)Photo by ๐Ÿฆ‹ Jared Forsyth (@jaredforsyth)Photo by ๐Ÿฆ‹ Jared Forsyth (@jaredforsyth)Photo by ๐Ÿฆ‹ Jared Forsyth (@jaredforsyth)Photo by ๐Ÿฆ‹ Jared Forsyth (@jaredforsyth)Photo by ๐Ÿฆ‹ Jared Forsyth (@jaredforsyth)Photo by ๐Ÿฆ‹ Jared Forsyth (@jaredforsyth)Photo by ๐Ÿฆ‹ Jared Forsyth (@jaredforsyth)
10 years ago, I thought "programming is too hard, I'll make tools to make it easier" 5 years ago, I thought "I'll make a new language to make it easier" now I'm working on tools to make "making new languages" easier ๐Ÿ˜‚
36
2,581
To make linear-flow/lenses easier to understand, I've developed an intermediate representation that compiles out the lenses, leaving (relatively) straightforward linear code. I think the only two things that need explaining are: - swap(pat,val) returns the current value of pat
1
6
437
(if pat hasn't been used up yet, that's a linearity violation, so swap only works on used-up vbls) - and `block` is of the form `block{let stmts}{result}{cleanup}`, where cleanup swaps are performed after result is computed but before it is 'returned'. a bit like go's defer
79
Some more lens fun. Assign to the `head` of a list. Get a view of a variable shifted 2 to the right.
13
688
these lenses are out of control (and yes the match isn't exhaustive, wanted to keep the code short)
1
8
501
๐Ÿฆ‹ Jared Forsyth retweeted
whoโ€™s hiring? not asking for a friend. DMs are open. if you know me or weโ€™ve worked together, a RT would mean a lot โค๏ธ
9
15
3
69
6,290
๐Ÿฆ‹ Jared Forsyth retweeted
43
2,362
75
30,669
284,571
oh wow the @flowtype folks are still cooking! "It looks like TypeScript now" ๐Ÿ˜‚
5
54
7,455
Got royally nerd sniped by this paper. Current status: implementing a compiler for a linear/flow language to JavaScript ๐Ÿ˜‚
Delighted that "Flow Typing: A New Lens on Linearity" has been (conditionally) accepted for POPL 2027. Fantastic work by Sky Wilshaw! tinyurl.com/2j26dyyn
1
26
1,131
๐Ÿฆ‹ Jared Forsyth retweeted
Delighted that "Flow Typing: A New Lens on Linearity" has been (conditionally) accepted for POPL 2027. Fantastic work by Sky Wilshaw! tinyurl.com/2j26dyyn
12
28
5
152
14,085
๐Ÿฆ‹ Jared Forsyth retweeted
Goose: my latest programming language. Safer, faster and less memory than Rust/C++ for algorithms where tightly packed, flat data structures matter. It can represent more kinds of data structures as flat, pointer-free bytes than any language I know. github.com/aardappel/goose 1/
111
157
61
1,381
141,868
experimenting with some fractal flames
4
202
๐Ÿฆ‹ Jared Forsyth retweeted
Experimenting with dynamic annotations Normally it's difficult to annotate text with a digital pen because the words can reflow- but what if your annotations could reflow with it?
19
37
3
529
15,427
๐Ÿฆ‹ Jared Forsyth retweeted
fun text effect I made: letterpress letters press into the page and cast shadows as you move around maybe for our next blog post
3
1
1
27
5,200
who do I know on here that's hiring CS interns for summer 2027? My brother is a rising junior and is working on applications right now :)
1
2
3
1,098
๐Ÿฆ‹ Jared Forsyth retweeted
9
63
5
494
20,536
I'm been playing with running nemotron-3.5-lightning:30b-mlx locally on my MBP and had some very promising results! Gets things done 2-3x as fast as gemma4:31b-mlx or qwen3.8:27b-mlx, with similar quality in the tests I've run.
1
3
689
had a funny thing happen with gemma4:31b-mlx; one session I asked it to implement a simple cli tictactoe game in typescript, and it spent 6 minutes, 31 tool calls, producing 8kb of "thinking" text (all in english), but the only user-facing text it output was at the end: ๅฎŒๆˆ
244