Jake Lazaroff's Avatar

Jake Lazaroff

@jakelazaroff.com

nyc-based programmer and designer. alum @recurse.com. azzajew. public transit enjoyer. thoughts on local-first software, javascript frameworks, web components, css and other web minutiae. 🌐 https://jakelazaroff.com

3,062
Followers
513
Following
1,831
Posts
17.05.2023
Joined
Posts Following

Latest posts by Jake Lazaroff @jakelazaroff.com

"why do you use safari?"

06.03.2026 14:15 πŸ‘ 23 πŸ” 4 πŸ’¬ 0 πŸ“Œ 0
Blink: Intent to Prototype: HTML toolbar element Blink: Intent to Prototype: HTML toolbar element

Blink: Intent to Prototype: HTML toolbar element

06.03.2026 00:06 πŸ‘ 28 πŸ” 7 πŸ’¬ 0 πŸ“Œ 0

would love for this lil web component i wrote to become obsolete!

npmx.dev/package/rovi...

05.03.2026 21:42 πŸ‘ 16 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

I'm so tired of automated thinking machines.
Make my thinking *better* or it's worthless.

AI gets better if it makes humans better

04.03.2026 22:24 πŸ‘ 17 πŸ” 4 πŸ’¬ 3 πŸ“Œ 1

i can't get over describing the coalition of the mayor of new york city as "young people in cities" πŸ˜‚

04.03.2026 19:41 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
WebHaptics – Haptic feedback for the mobile web. Haptic feedback for the mobile web.

this is so cool
haptics.lochie.me

02.03.2026 19:40 πŸ‘ 222 πŸ” 47 πŸ’¬ 13 πŸ“Œ 14

maybe find a way to cope without telling jews to accept the support of someone who wants to murder us

03.03.2026 01:24 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

if you are telling me to welcome the support of a neo-nazi i'm gonna assume that you're a neo-nazi as well

03.03.2026 01:18 πŸ‘ 4 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

modern CSS is so good

01.03.2026 17:08 πŸ‘ 27 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0
Video thumbnail

Another custom select list using using appearance: base-select.

On browsers that don't yet support this, a normal select list will be displayed.

See the full demo on @codepen.io codepen.io/cbolson/pen/...

28.02.2026 11:43 πŸ‘ 40 πŸ” 5 πŸ’¬ 3 πŸ“Œ 1
Preview
Learn Yjs by Jamsocket Learn Yjs is an interactive tutorial series on building realtime collaborative applications using the Yjs CRDT library. Learn about handling state in distributed applications using Yjs shared types, w...

thank you so much! i actually also built learn.yjs.dev 😁 (with @paulbutler.org and @taylorbaldwin.bsky.social)

28.02.2026 20:23 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

i mean, i hope you're right! but i don't think that's a forgone conclusion

19.02.2026 05:13 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

i agree but you don't also see LLMs as a threat to the web, in the sense that people may come to use them as an intermediary to summarize websites without visiting them? there are a lot of techbros who want their chatbot to be *the* information gateway and it's not implausible that one will succeed.

19.02.2026 05:06 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

i think if you aren't sure what the semantics are then it's fair to say that this is not actually standard functionality that everyone already uses

18.02.2026 23:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

i do too, but the level of effort required today to write a full-blown HTML parser with declarative bindings is orders of magnitude higher than: given that templating system, write a few lines to add syntax sugar for event listeners

18.02.2026 23:38 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

same question as with the @event thing though β€” why does this need to be part of a native templating API? you could do this in userland with whatever semantics you wanted by writing a tagged template function.

18.02.2026 23:32 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

sure. the line is subjective. i think the crux of our disagreement is that i see a native templating API as a low-level tool on top of which to build abstractions, rather than something app devs should be using directly. i'd cover the slow/error-prone parts rather than add sugar

just my two cents πŸ€·β€β™‚οΈ

18.02.2026 23:26 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

it just makes the web platform as a whole more complicated than it needs to be. like, browsers now have to support popovertarget and popovertargetaction in perpetuity even though command and commandfor are an all-around better API. all these little papercuts add up!

18.02.2026 23:13 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

right but what does this mean with regard to HTML templating? like, what are the semantics? does a function get `children` as a DocumentFragment? does it need to return an Element? can you pass other "props" to it? etc

18.02.2026 23:10 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

i think they are

18.02.2026 22:59 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

that's my point β€” with directives/custom attributes/etc it's easy to write your declarative event binding in userland. if we standardize @event and .prop… i mean, it doesn't *totally* close off the ability to use that syntax for something else in userland but it would make it extremely weird

18.02.2026 22:55 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

unclear to me what html`<${Fn} />` would do?

18.02.2026 22:47 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

i meant your example. <button ${event("click", () => console.log("hello"))}> builds it into the template system in a more general way.

imo the platform is just the wrong place for syntax sugar like this. easy to write a tagged template function that converts @click={foo} to ${event("click", foo)}

18.02.2026 22:42 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

is that not building it in? the issue with the lit syntax isn't whether it's possible, it's whether to add a very specific syntactic sugar on top of it.

18.02.2026 21:41 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

a DOM templating API would let you pass arbitrary javascript objects, right? so you could in theory do something like

<button on-event=${["click", () => console.log("hello")]}>

18.02.2026 21:27 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

frankly the syntax is the least of my concerns. i don't think the functionality should exist at all. i'd much rather see
something like custom attributes, which would let us implement the same thing much more flexibly in userland

18.02.2026 21:11 πŸ‘ 5 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

i mean fwiw the .prop and @event prefixes feel pretty idiosyncratic to lit

18.02.2026 20:38 πŸ‘ 1 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

yeah trying to get htm playing nicely with typescript led me to that issue too. i think it would be a big squandered opportunity to add something peculiar to html templates rather than a primitive that we could use for generalized parsing of template strings.

18.02.2026 20:03 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

idk if i'd call it visual noise… the whole reason i'm not using raw hyperscript in the first place is because i find HTML-ish syntax easier to read.

i think the function call syntax is tolerable if you use it for a few leaf components. if you have a bunch of complex or nested components it's rough.

18.02.2026 19:51 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

both approaches kinda suck though imo!

18.02.2026 19:30 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0