<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: bennypowers</title><link>https://news.ycombinator.com/user?id=bennypowers</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 13 Apr 2026 20:25:19 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=bennypowers" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Show HN: Backlit – Lit Web Component SSR for Drupal via Go and WASM, No Node.js]]></title><description><![CDATA[
<p>Two years ago I posted about server-rendering Lit web components in Drupal
using a Node.js sidecar container. It worked but felt like a proof of concept
-- Docker, inter-container networking, an extra process to babysit.<p>Backlit replaces all of that with two lines:<p><pre><code>  composer require bennypowers/backlit  
  drush en backlit
</code></pre>
Composer downloads a pre-compiled Go binary for your platform. The binary
embeds a WASM module (QuickJS + @lit-labs/ssr, compiled via Javy). Drupal
pipes page HTML to the binary's stdin; rendered Declarative Shadow DOM HTML
comes back on stdout. The WASM instance stays warm across requests: ~350ms
cold start once per PHP-FPM worker, ~0.32ms per render after that.<p>The funny part: I didn't build this for Drupal. I built lit-ssr-wasm to add
live component previews to `cem serve` -- a dev server for custom elements
manifest tooling (<a href="https://github.com/bennypowers/cem" rel="nofollow">https://github.com/bennypowers/cem</a>). Once the WASM module
existed, the Drupal integration was an afternoon's work.<p>WASM is to backend runtimes what web components are to the browser: write it
once, run it anywhere.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47440918">https://news.ycombinator.com/item?id=47440918</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 19 Mar 2026 15:15:38 +0000</pubDate><link>https://bennypowers.dev/posts/drupal-lit-ssr-wasm/</link><dc:creator>bennypowers</dc:creator><comments>https://news.ycombinator.com/item?id=47440918</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47440918</guid></item><item><title><![CDATA[New comment by bennypowers in "Ladybird Web Browser becomes a non-profit with $1M from GitHub Founder"]]></title><description><![CDATA[
<p>Excellent! Thank you</p>
]]></description><pubDate>Tue, 02 Jul 2024 19:50:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=40859877</link><dc:creator>bennypowers</dc:creator><comments>https://news.ycombinator.com/item?id=40859877</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40859877</guid></item><item><title><![CDATA[New comment by bennypowers in "Ladybird Web Browser becomes a non-profit with $1M from GitHub Founder"]]></title><description><![CDATA[
<p>Are you running the web platform tests?</p>
]]></description><pubDate>Tue, 02 Jul 2024 10:37:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=40855255</link><dc:creator>bennypowers</dc:creator><comments>https://news.ycombinator.com/item?id=40855255</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40855255</guid></item><item><title><![CDATA[New comment by bennypowers in "Ask HN: Anyone know of any largish applications built with WebComponents?"]]></title><description><![CDATA[
<p>SpaceX Dragon capsule's screens<p>Wordle<p>Photoshop<p>GitHub - Freaking GitHub!<p>Nintendo's website<p>Salesforce<p>Innumerable startup SaaS dashboards</p>
]]></description><pubDate>Wed, 04 May 2022 14:14:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=31260727</link><dc:creator>bennypowers</dc:creator><comments>https://news.ycombinator.com/item?id=31260727</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31260727</guid></item><item><title><![CDATA[New comment by bennypowers in "Ask HN: Anyone know of any largish applications built with WebComponents?"]]></title><description><![CDATA[
<p>should have posted this in r/confidentlyincorrect<p>Yeah, here's my youtube video from 3 years ago preemptively proving you wrong<p><a href="https://www.youtube.com/watch?v=Vz433mJR2ow" rel="nofollow">https://www.youtube.com/watch?v=Vz433mJR2ow</a></p>
]]></description><pubDate>Wed, 04 May 2022 14:13:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=31260707</link><dc:creator>bennypowers</dc:creator><comments>https://news.ycombinator.com/item?id=31260707</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31260707</guid></item><item><title><![CDATA[New comment by bennypowers in "Alternatives to JSX"]]></title><description><![CDATA[
<p>Why JSXBelPack when you can<p><pre><code>  import { html, render } from 'https://unpkg.com/lit-html';

  const benefitTpl = ({name, desc}) => html`
    <dt>${name}</dt>
    <dd>${desc}</dd>
  `;
  
  render(html`
    <lit-rocks>
      <dl>${benefits.map(benefitTpl)}</dl>
    </lit-rocks>`, document.body)

</code></pre>
And updates are fast without any VDOM overhead.</p>
]]></description><pubDate>Mon, 25 Feb 2019 17:17:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=19247275</link><dc:creator>bennypowers</dc:creator><comments>https://news.ycombinator.com/item?id=19247275</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19247275</guid></item><item><title><![CDATA[New comment by bennypowers in "WebComponent libraries lit-HTML and litElement released"]]></title><description><![CDATA[
<p>Build GraphQL apps using lit-element for rendering with lit-apollo:<p><a href="https://npm.im/@apollo-elements/lit-apollo" rel="nofollow">https://npm.im/@apollo-elements/lit-apollo</a><p>I built a demo chat app that got a 98 lighthouse performance score<p><a href="https://lit-apollo-subscriptions.herokuapp.com" rel="nofollow">https://lit-apollo-subscriptions.herokuapp.com</a></p>
]]></description><pubDate>Tue, 05 Feb 2019 21:05:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=19089817</link><dc:creator>bennypowers</dc:creator><comments>https://news.ycombinator.com/item?id=19089817</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19089817</guid></item><item><title><![CDATA[New comment by bennypowers in "Stripe Elements: Pre-built UI components to help you create checkout flows"]]></title><description><![CDATA[
<p>I built a little Polymer wrapper for stripe elements </plug> unfortunately, it only works with the polyfill. It seems at first blush to be an issue between Stripe's react components and shadowDOM.<p><a href="https://github.com/bennypowers/stripe-elements/issues/2" rel="nofollow">https://github.com/bennypowers/stripe-elements/issues/2</a></p>
]]></description><pubDate>Wed, 04 Oct 2017 07:24:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=15398839</link><dc:creator>bennypowers</dc:creator><comments>https://news.ycombinator.com/item?id=15398839</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15398839</guid></item></channel></rss>