Sign in

hayleigh

@hayleigh.dev
2.1K followers 490 following 763 posts

• Drawing boxes and writing words at xyflow • Core Team at Gleam • Author of Lustre I’m just a 🏳️‍⚧️ girl learning 🇫🇷 and vibing in 🇧🇪🇬🇧 Fuck Nazis. ACAB. Black Lives Matter. Trans Rights Now.

PostsRepliesMedia
hayleigh @hayleigh.dev · 20/08/2026
fyi you're still mailing out copy from the last event, might want to fix that up in case folks accidentally head to grenwich!
110
hayleigh @hayleigh.dev · 05/08/2026
shhhhhh don't tell anyone
A remix of the "cooby doo mask reveal meme." In the first frame, a character labelled "atproto" stands in front of a masked villain labelled "a renewed vision of the internet." In the next frame the mask is removed, with the villian's label now reading "left-leaning politics."
1283
hayleigh @hayleigh.dev · 29/07/2026
what i see right before i read something that instantly pisses me off
0141
hayleigh @hayleigh.dev · 26/07/2026
made this my wallpaper i hope thats ok 💕💕
040
hayleigh @hayleigh.dev · 23/07/2026
me since @localfirstconf.com
A remix of the "friendship ended with blank" meme. it reads: "friendship ended with frontend development. Now atproto development is my best friend."
2690
hayleigh @hayleigh.dev · 21/07/2026
ignoring the fact the code is literally The Worst, i thought building a lexgen cli would be a good way to dogfood `at` its not much but working out how to resolve the actual lexicon json just from the name was pretty satisfying 😌
2360
hayleigh @hayleigh.dev · 20/07/2026
here is the published spec, and here is the official implementation: ``` const documentData = z.object({ did: z.string(), rotationKeys: z.array(z.string()), verificationMethods: z.record(z.string()), alsoKnownAs: z.array(z.string()), services: z.record(service), }) ```
120
hayleigh @hayleigh.dev · 19/07/2026
oh hey that wasn't so bad. WE HAVE ACHIEVED FIREHOSE!
3120
hayleigh @hayleigh.dev · 23/06/2026
hmm 🤔 but thats alright, if you drop me an email at few_joinery.9v[at]icloud.com i'll forward it to my actual address ^.^
110
hayleigh @hayleigh.dev · 27/04/2026
whether or not you care about that.. i think it would be good to be more-consistent with how you style border accents in general, you effectively have three different variations of this effect
130
hayleigh @hayleigh.dev · 27/04/2026
this is a very specific nit but if this design system hasn't been vibe coded (and you don't want people to think it was) then you might want to rethink this left-border-accent-colour thing. LLMs absolutely love this particular effect and i know some people will be put-off by it.
A screenshot from the design system's styled "Pullquote". There is a coloured rounded border on the left side of the container.
130
hayleigh @hayleigh.dev · 06/02/2026
dis u?
A screenshot of Giacomo sharing an article from anthropic titled "Building a C compiler with a team of parallel Claudes." He has posted the link without comment.
230
hayleigh @hayleigh.dev · 03/02/2026
Is the raw data available anywhere? I'd love to see some of those "other answers" 👀
The "Other front-end frameworks" chart for the state of js survey. This chart shows what frameworks folks are using outside the most-common ones like React. Among options like Astro and Nuxt, 58% of the responses have been grouped under "Other Answers" with no way to see any more information.
110
hayleigh @hayleigh.dev · 30/01/2026
Huh that's so weird, none of my tickets for sncb look like this at all 🤔 as long as it has the qr code im very confident it'll be fine though!
010
hayleigh @hayleigh.dev · 11/01/2026
in our benchmark we're now comfortably beating react and among the fastest options when using `element.memo`. if performance concerns were one of the things holding you back from trying lustre, well.. they shouldnt! github.com/lustre-labs/...
A graph of frontend framework benchmark results. From left to right: Alpine v3.14.9 time 465.79ms, Elm v0.19.1 time 346.8ms, Elm v0.19.1 optimised time 143.34ms, Gren v0.6.2 time 341.74ms, Gren v0.6.2 optimised time 141.07ms, Lustre v5.5.0 time 244.6ms, Lustre v5.5.0 optimised time 138.32ms, React v19.1.0 time 349.95ms, React v19.1.0 optimised time 254.86ms, Solid v1.9.5 time 163.42ms, Svelte v5.25.7 time 140.92ms, Vue v3.5.13 time 275.81ms
0243
hayleigh @hayleigh.dev · 09/12/2025
well holy shit we only went and did it???? it was only last march that i started to work on lustre "seriously". since then we've average ~100 stars a month, have a bunch of companies using it in prod, and so many kind words from folks 🥺 i guess i better work on a 5.5 release now!
The counter for "stargazers" on GitHub showing 2000.
1330
hayleigh @hayleigh.dev · 07/12/2025
all i'm saying is if we average 5 stars a day lustre can hit 2k in time for my birthday 🥺👉👈 thatd be pretty cool huh huh what if i promise a release when we hit 2k 👀 github.com/lustre-labs/... gogogogogo
23710
hayleigh @hayleigh.dev · 19/09/2025
renata has been on a warpath recently, she's released a bunch of really good libraries and shipped two real-world sites with gleam/lustre go give her some love github.com/renatillas renatillas.pages.dev
A window on renata's personal website. it reads: "Renata Amutio, Gleam developer, functional programming enthusiast." she then lists some stats: 17 libraries, 2 production sites, 100% gleam.
180
hayleigh @hayleigh.dev · 19/09/2025
i've not even released clique yet and someone is already using it to build out their personal site!! the gleam community is just built different i swear
2266
hayleigh @hayleigh.dev · 13/09/2025
any svg wizards know what the deal with this <path> is :(
150
hayleigh @hayleigh.dev · 13/09/2025
ok and backgrounds too
170
hayleigh @hayleigh.dev · 12/09/2025
Update on my reactflow ripoff, we have properly functional handles and connections! I think almost all the fundamentals are here enough to publish a v1. Before I do that it's time for a round of docs and polish ^.^
2250
hayleigh @hayleigh.dev · 11/09/2025
An image of lucy, gleam's mascot, squashed into the erlang logo. the typical "e" in the logo has been changed to a "g" and the text reads "Gleam".
2290
hayleigh @hayleigh.dev · 09/09/2025
cracked itttttttttt, the html for this is killer too like: <clique-viewport> <clique-edge-renderer> <clique-edge from="a.out" to="b.in" type="bezier" /> </clique-edge-renderer> <clique-node id="a" x="0" y="200"> <clique-handle name="freq" /> </clique-node> </clique-viewport>
1110
hayleigh @hayleigh.dev · 09/09/2025
tonight i added panning inertia and rewrote how the core rendering works, i'm super pleased. that's the fundamentals down i think, tomorrow is on to all the events required to implement real things. first up is connecting handles together.
1221
hayleigh @hayleigh.dev · 07/09/2025
Earlier this year I left @xyflow.com to, among other things, spend more time working on gleam and lustre. it was a bit of a running joke that eventually i'd make a lustreflow fork... i'm still a long way off but i'm giving it a shot and already have the basic pan/zoom/nodes/edges canvas down!
5350
hayleigh @hayleigh.dev · 09/05/2025
i.imgflip.com/9tft00.jpg
140
hayleigh @hayleigh.dev · 19/04/2025
the @gleam.run community is made up of some of the most incredible trans folks i know. even when it feels like the rest of the world is stacking up against us, gleam will always be a safe space. come join us! 💕
A screenshot of a section of the Gleam website. It says: 

"As a community, we want to be friendly too. People from around the world, of all backgrounds, genders, and experience levels are welcome and respected equally. See our community code of conduct for more.

Black lives matter. Trans rights are human rights. No nazi bullsh*t."
0349
hayleigh @hayleigh.dev · 19/04/2025
We've written a BUNCH of examples to help people get on their feet quickly, there's over 20 now and we'll be adding more over time! hexdocs.pm/lustre/refer...
140
hayleigh @hayleigh.dev · 19/04/2025
We rewrote the entire vdom from scratch, and now we're way faster than we used to be. Fast enough that we compete with latest versions of Elm and React. Which is great news for me because it means I can never think about this again, and neither do Lustre users now ^.^
160
hayleigh @hayleigh.dev · 03/04/2025
look at this blasphemy!
Part of the bio for the Lambda Days BlueSky account. It reads:

"2 days full of immersion in languages like Haskell, Scala, Elm, Elixir, and Clojure".
270
hayleigh @hayleigh.dev · 25/02/2025
Wait this is actually fucking genius
A snippet of code that adds a computed property accessible using the % symbol to the Number prototype. The code reads:

```js
Object.defineProperty(Number.prototype, '%', {
  get() {
    return `${this * 100}%`
  }
})
```

It can be used like 0.75['%'] to return '75%'
1130
hayleigh @hayleigh.dev · 02/02/2025
Creator of @gleam.run talking about SQL for some reason, weird
1361
hayleigh @hayleigh.dev · 20/01/2025
like?????? incredible. no js!
280
hayleigh @hayleigh.dev · 14/01/2025
They already made concessions on the home page. We need to push harder ✊
The home page of Code BEAM America. The title reads "The conference for all BEAM lovers using Erlang, Elixir and Gleam"
130
hayleigh @hayleigh.dev · 14/01/2025
The only way I'm going to convince @codebeam.bsky.social to update their promo materials is if I bring an army of gleamlins to SF. If you've missed what we've been up to the last year you've missed *a lot*. You can still grab an early bird ticket and listen to me yap about it 👀 codebeamamerica.com
A promotional banner that reads "I'm speaking at Code BEAM America - the Erlang and Elixir Conference!" It is unfortunately missing a reference to Gleam: the topic of my talk.
2171
hayleigh @hayleigh.dev · 13/12/2024
satisfactory
040
hayleigh @hayleigh.dev · 27/11/2024
Unironically stuck buffering on gleam, its a sign from the gods.
220
hayleigh @hayleigh.dev · 18/11/2024
Not yet! 😘
The heading of the Code BEAM America website. It reads: "The Erlang and Elixir conference is coming again to San Francisco." The phrase "Erlang and Elixir" has been highlighted.
120
hayleigh @hayleigh.dev · 18/11/2024
As part of my ongoing effort to follow @codesync.bsky.social around the playground until we're best friends, I'll be speaking at #CodeBEAMAmerica next march 🎉 Gleam has had a super busy year since we released v1, so I'll be giving an update for all y'all that haven't been paying enough attention 👁️👁️
A banner for Code BEAM America taking place in San Francisco on March 6 and March 7 2025. The banner is for a talk titled "Gleam: a year in review"
2255
hayleigh @hayleigh.dev · 18/11/2024
I'll be honest elm really fumbled the bag by not having nested TEA. Building components at this abstraction level with lustre has been an absolute *joy*, here's the message type for this accordion. It's just so explicit, we can see all the interaction up front; its great!
The message type used for this accordion component:

pub opaque type Msg {
  ParentChangedChildren(List(#(String, String)))
  ParentSetMode(Mode)
  UserPressedDown(String)
  UserPressedEnd
  UserPressedHome
  UserPressedUp(String)
  UserToggledItem(String)
}
170
hayleigh @hayleigh.dev · 18/11/2024
✅ Accordion... - each item navigable in the page tab sequence - up/down/home/end keyboard navigation - "multi" mode allows many items open at once - "exactly-one" mode prevents collapsing
2221
hayleigh @hayleigh.dev · 17/11/2024
so we can tweak things like radius, spacing, and colours trivially by modifying the theme, for example!
010
hayleigh @hayleigh.dev · 16/11/2024
lustre/ui is built around a theme system so it's also pretty easy to add your own visual identity to these components, and themes can be scoped to a css class or data attribute so its possible to have multiple themes on a page if you need that for some reason ^^
1110
hayleigh @hayleigh.dev · 16/11/2024
lustre/ui also has dark mode support out of the box which is honestly super slick tbh
170
hayleigh @hayleigh.dev · 16/11/2024
Here's a little status update with what I have for lustre/ui so far, with a few others not shown here ^^ Unlike the tailwind trend these days, all the css for lustre/ui is lovingly hand-crafted so even if you change *nothing* you might stand out a little against the 100s of shadcn drop-ins 💕
6506
hayleigh @hayleigh.dev · 08/11/2024
Super exciting to see Elixir's research into static analysis already paying off in the real world (whoda thunk it?)! I do worry that types like `dynamic(false or {term(), binary()})` are going to alienate some people though github.com/phoenixframe...
An error message from Elixir's experimental type checker. It reads the following:

Remove dead code found by the type system
    warning: incompatible types given to String.to_atom/1:

        String.to_atom(template)

    given types:

        dynamic(false or {term(), binary()})

    but expected one of:

        binary()

    where "template" was given the type:

        template = Phoenix.LiveView.Utils.normalize_layout(template)

    typing violation found at:

        Phoenix.LiveView.Router.validate_live_session_opts/3
2265
hayleigh @hayleigh.dev · 26/04/2023
Ada and Haskell 💕
140