Sign in

Jared Forsyth

@jaredforsyth.com
935 followers 728 following 230 posts

trying to be christian. feminist. mormon. type theory, PLT Mobile dev @KhanAcademy building kipos github.com/kipos-lang/kipos @jaredforsyth on the dead bird site

PostsRepliesMedia
Jared Forsyth @jaredforsyth.com · 08/08/2026
did anyone else play a ton of blobby volley as a kid? So it turns out the source is GPL 😁 been adding a ton of fun stuff to it (after porting to rust, ofc)
081
Jared Forsyth @jaredforsyth.com · 22/07/2026
what if tessera, but a jigsaw puzzle?
000
Jared Forsyth @jaredforsyth.com · 14/07/2026
New post! "Automate typescript refactors with dosido" I made a tool to move files and definitions around, and for extracting folders into new monorepo packages. jaredforsyth.com/posts/dosido...
Automate typescript refactors with dosido
July 13, 2026

I don’t know about you, but my personal projects often metastasize. I start going in one direction, and after a while I’ve learned a lot about what I really want so I start a fresh implementation in a new subfolder, and along the way I’m building tools and libraries as I discover I need them. After a while it’s a tangled mess, where the production app uses maybe 30% of the code, and there are at least three reusable libraries waiting to be born, if only I could get my act together to do the cleanup.

So now I’ve finally gathered the will to do some refactoring, but why do the work by hand when I can automate the process?
480
Jared Forsyth @jaredforsyth.com · 08/07/2026
ok I've also made a jigsaw puzzle designer
1170
Jared Forsyth @jaredforsyth.com · 04/07/2026
Oops! All Aperiodic Monotiles!
020
Jared Forsyth @jaredforsyth.com · 03/07/2026
a puzzle on a möbius strip
010
Jared Forsyth @jaredforsyth.com · 01/07/2026
ever done a jigsaw puzzle on a torus before? 🤔 🧩
030
Jared Forsyth @jaredforsyth.com · 01/07/2026
I'm so proud of my voronoi puzzle piece generator
060
Jared Forsyth @jaredforsyth.com · 28/06/2026
Anyone up for a little local-first crdt-backed collaborative wordsearch? crdt-wordsearch.quick.jaredforsyth.com?peer=3e27c3a... while supplies last 😅
020
Jared Forsyth @jaredforsyth.com · 26/06/2026
somebody stop me, I'm creating an everything app. vega charts, slide decks, polls 🎉
140
Jared Forsyth @jaredforsyth.com · 26/06/2026
did somebody say inline math? no? well here it is anyway! seamlessly integrated into the collaborative editing experience.
030
Jared Forsyth @jaredforsyth.com · 25/06/2026
real-time collaborative, rich-text ... mermaid diagrams? Sure why not 😄
0110
Jared Forsyth @jaredforsyth.com · 17/06/2026
annnnotations! proving out "marks, but more complicated". and yes, you can have a footnote in a footnote, or a comment on a footnote in a popover etc.
140
Jared Forsyth @jaredforsyth.com · 14/06/2026
I came across plim (github.com/darylcecile/...) and couldn't resist integrating it with my new block-rich-text CRDT 😄 very helpful in fleshing out my own API surface
151
Jared Forsyth @jaredforsyth.com · 09/06/2026
ok I think I've really got this working. - rich text CRDT (peritext-based) - movable blocks with split & join, retaining provenance and collaborative editing - strong cycle prevention both for split/join and block nesting annnd just for fun I've also implemented multicursor in the demo (cmd+click)
7625
Jared Forsyth @jaredforsyth.com · 09/01/2026
who wore it better (pattern from the Alcázar of Seville in Spain)
020
Jared Forsyth @jaredforsyth.com · 16/12/2025
020
Jared Forsyth @jaredforsyth.com · 16/12/2025
120
Jared Forsyth @jaredforsyth.com · 16/12/2025
ok I can't get enough of these
130
Jared Forsyth @jaredforsyth.com · 30/11/2025
This one is from the Alcázar in Seville, Spain
000
Jared Forsyth @jaredforsyth.com · 30/11/2025
doin some animatings. This pattern is from the Minbar of Saladin in Al Aqsa Mosque in Jerusalem
130
Jared Forsyth @jaredforsyth.com · 21/11/2025
021
Jared Forsyth @jaredforsyth.com · 20/11/2025
that scene from little women where jo march is saying "women" with emotion, except the subtitle says "compilers"
030
Jared Forsyth @jaredforsyth.com · 31/10/2025
pattern from the Alhambra in Granada, Spain
islamic geometric art patter, woven styleislamic geometric art patter, colored shapes styleislamic geometric art patter, contiguous lines stylephoto of the original in the alhambra
080
Jared Forsyth @jaredforsyth.com · 03/09/2025
an art based on a macro-pattern from the Mirador de Lindaraja in the Alhambra
a 3d rendering of an islamic geometric pattern
070
Jared Forsyth @jaredforsyth.com · 30/04/2025
I'm struggling to understand what www.npmjs.com means by "Recently updated" 🤔
a screenshot of npmjs.com's "Recently updated packages" list, the first of which was last published 2 years ago
010
Jared Forsyth @jaredforsyth.com · 26/04/2025
Here's another flex 💪 we can have a function of two arguments where *at least one* of the arguments needs to have a given attribute defined.
010
Jared Forsyth @jaredforsyth.com · 25/04/2025
ok this is just really cool. the constraints system I set up gives you "optional record arguments" for free! it would be simple to add syntax affordances for it as well, e.g. ({one, two, three = true}) => ...
020
Jared Forsyth @jaredforsyth.com · 24/04/2025
Ok so it's possible I'm overlooking something crucial, but I think I might have gotten polymorphic records to work?? without needing a distinction between (extend) and (override), as well as allowing for multiple-extend, e.g. {...a, ...b, c: 2} I haven't seen papers that can pull this off 😳
1130
Jared Forsyth @jaredforsyth.com · 20/04/2025
we have full rewind & replay, including viewing live results of evaluation at every step 🎉 😎
090
Jared Forsyth @jaredforsyth.com · 16/04/2025
it's aliiiiiiiive
020
Jared Forsyth @jaredforsyth.com · 10/04/2025
update test snapshots inline 🎉
172
Jared Forsyth @jaredforsyth.com · 09/04/2025
inline test success/failure reporting
092
Jared Forsyth @jaredforsyth.com · 08/04/2025
fixture testssss
020
Jared Forsyth @jaredforsyth.com · 05/04/2025
Type inference of mutually recursive values!
160
Jared Forsyth @jaredforsyth.com · 30/03/2025
status update: parser & basic type inference hooked up for ground level language. once I finish fleshing out the type inference, I'll move on to inline execution
150
Jared Forsyth @jaredforsyth.com · 26/03/2025
slides for my talk at #EpicWebConf2025 docs.google.com/presentation...
4547
Jared Forsyth @jaredforsyth.com · 26/03/2025
reppin OCaml at #EpicWebConf2025
Me with an OCaml shirt in front of a projector screen
2110
Jared Forsyth @jaredforsyth.com · 06/02/2025
020
Jared Forsyth @jaredforsyth.com · 06/02/2025
Are there any languages that allow you to "re-enter" the switch control flow, if you determine that the branch you're on isn't right? I sometimes find myself having e.g. nested switches, and I want to be able to "jump out" to the parent switch and keep going, often in a default case. same with "if"s
a code snippet illustrating two cases; a nested if block where the inner if "continues" out to the parent else, and an if nested in a switch that "continues" back out to the switch.
230
Jared Forsyth @jaredforsyth.com · 25/01/2025
triiiiangles
040
Jared Forsyth @jaredforsyth.com · 25/01/2025
imagine, conway's game of life, but, hexagons (the rules are the same, cells still have 9 neighbors, every other row is just shifted over a bit. it's a display-only change)
150
Jared Forsyth @jaredforsyth.com · 25/01/2025
was feeling a little braindead the 3rd day of POPL so I made a colorific game of life inspired by @todepond.com's huegene (www.todepond.com/lab/cells/dr...)
1302
Jared Forsyth @jaredforsyth.com · 18/12/2024
a screenshot of code where the variable is an ascii representation of a game of "snake"
040
Jared Forsyth @jaredforsyth.com · 14/12/2024
finally implemented decimal-point handling, so 2.3 doesn't get parsed as attribute access 😅
020
Jared Forsyth @jaredforsyth.com · 13/12/2024
considering switching from in-place "placeholders" to tooltips that only show when your cursor is over the blank node. Thoughts?
120
Jared Forsyth @jaredforsyth.com · 12/12/2024
hey I heard you like xml in your codes
191
Jared Forsyth @jaredforsyth.com · 11/12/2024
I'm thinking a regex literal as a match case, so like
110
Jared Forsyth @jaredforsyth.com · 07/12/2024
tables! these are a critical feature of my CST; they account for any syntax form that has children that need to be "paired"; such as records, switch statements, and more! Because you can have more than 2 columns, it unlocks features you couldn't reasonably have in a text-based syntax.
020
Jared Forsyth @jaredforsyth.com · 06/12/2024
placeholders! (generated for free from the parser definition) the syntax becomes somewhat self-documenting, which seems quite nice!
151