Sign in

Florian Hehlen

@zenwork.eurosky.social
57 followers 63 following 91 posts

Reluctant architect and software engineer at heart. I work in the digital healthcare world and looking for a way to make a difference with hl7.org/fhir

PostsRepliesMedia
Florian Hehlen @zenwork.eurosky.social · 10/05/2026
I have found that mixing shadow and light DOM elements works for me. I use sDOM for most of my leaf components and then use lDOM compose more complex things or to create wrapper components that provide shared hidden context/state.
010
Florian Hehlen @zenwork.eurosky.social · 04/05/2026
I mistook you for an anti-wc troller 🤣
100
Florian Hehlen @zenwork.eurosky.social · 04/05/2026
Only the 1st load, and there's ways to deal with it. Saying that FOUC is solvable ignores the nature of async loading on the web. You can always hide everything until all is loaded, but that has its own problems. I prefer a bit of FOUC to waiting seconds looking at a spinner for everything to load.
110
Florian Hehlen @zenwork.eurosky.social · 20/04/2026
zenwork.leaflet.pub
Test Blog
foo bar baz
000
Florian Hehlen @zenwork.eurosky.social · 19/04/2026
I have moved my account to eurosky.social to take one small action to move my data to a more sovereign data space.
eurosky.social
Eurosky Portal
Your Portal to the Atmosphere
000
Florian Hehlen @zenwork.eurosky.social · 09/02/2026
Constructible stylesheets are the best way to share styles across multiple shadowDOM elements. The CSS is loaded and parsed once but assignable inside the web component at instantiation time. Usually sorts out most FOUC issues.
110
Florian Hehlen @zenwork.eurosky.social · 21/01/2026
🚀v0.7.1 of the Vento plugin(@webstorm.jetbrains.com, @intellijidea.com) is out. Added since 0.5.0: - navigation to file references - formatting - destructured vars in 2.2 - support for default blocks and data references in 2.3 - bug fixes Use with lume.land and @deno.land
010
Florian Hehlen @zenwork.eurosky.social · 15/12/2025
🚀v0.5.0 of the Vento plugin for @webstorm.jetbrains.com and @intellijidea.com is out. In this release, I added: - front-matter support - fragment support The Vento template engine is used in the @lume.land framework, which is designed for @deno.land plugins.jetbrains.com/plugin/29036...
021
Florian Hehlen @zenwork.eurosky.social · 29/11/2025
Feedback welcome!
010
Florian Hehlen @zenwork.eurosky.social · 29/11/2025
I just released a new plugin to use with the #SSG Vento template engine for @webstorm.jetbrains.com and @intellijidea.com. Vento is a @deno.land library and notably used with the @lume.land framework. plugins.jetbrains.com/plugin/29036...
plugins.jetbrains.com
Vento Template Engine - IntelliJ IDEs Plugin | Marketplace
Vento plugin for JetBrain's WebStorm & IntelliJ IDEA Ultimate IDE Provides support for the VentoJs template engine. Vento is used in the SSG Lume framework to...
130
Florian Hehlen @zenwork.eurosky.social · 24/10/2025
People complain a lot about shadow Dom. I think it's a matter of adoption. Once you are used to them they deliver some advantages. I generally like to have strong boundaries with CSS, event propagation, slots, strict API, and reactivity. I can remove it when it truly is in the way.
010
Florian Hehlen @zenwork.eurosky.social · 21/09/2025
Hi all... Sunday, feeling good about my progress helping out with the Lume (lume.land) project (#Deno SSG engine) and the underlying Vento (vento.js.org) templating engine. I am wrking away on a plugin for #Jetbrains #IntelliJIDEA and #Webstorm
lume.land
Lume, the static site generator for Deno
Support for multiple file formats like Markdown, YAML, JavaScript, TypeScript, JSX, Nunjucks etc.
021
Florian Hehlen @zenwork.eurosky.social · 20/08/2025
Brings back memories. Is this the version of the browser that included dialup software directly into the browser.
010
Florian Hehlen @zenwork.eurosky.social · 18/08/2025
And the shadow DOM is a feature too. The cascade can lead to lots of issues in complex/large apps or libraries.
000
Florian Hehlen @zenwork.eurosky.social · 18/08/2025
I don't think that the cascade is inherently bad. I think that the shadow DOM now gives me a choice. And it's a useful choice. Choice makes it more complicated. You have to learn about loading CSS in components. But coping with the cascade can also lead to a lot of complexity in bigger projects.
100
Florian Hehlen @zenwork.eurosky.social · 17/08/2025
You can call using the shadow DOM to encapsulate CSS js-centric, but I do not think this is helpful. Shadow roots are part of the DOM and CSS models. What can and can't penetrate (IE: fonts, properties, parts, etc.) is part of the CSS spec. I am just using JS to define boundaries.
100
Florian Hehlen @zenwork.eurosky.social · 16/08/2025
What you present as disadvantages are relative. I don't see global styling as an absolutely great thing. And, I think that creating web components without JS doesn't make much sense to me.
100
Florian Hehlen @zenwork.eurosky.social · 15/08/2025
Full disclosure: I 💕 all coffee!
000
Florian Hehlen @zenwork.eurosky.social · 15/08/2025
Hot holiday take: an Americano coffee is a terrible thing to do to an espresso and makes it nothing like an actually good cup of Jo! #holiday #coffee
000
Florian Hehlen @zenwork.eurosky.social · 15/08/2025
I was wondering if this indicates that people finally get that WCs exist, so they don't need hello world examples anymore.
100
Florian Hehlen @zenwork.eurosky.social · 15/08/2025
☝️
000
Florian Hehlen @zenwork.eurosky.social · 15/08/2025
Looking forward to this working in webstorm/intellij . This is a missing link for WC adoption
000
Florian Hehlen @zenwork.eurosky.social · 15/08/2025
I agree that you have to leave your favourite framework paradigm at the door. I don't agree that slots and shadow DOM should be ignored. Understanding them as a browser-primitive is key though. Their quirks become something that you can leverage then.
130
Florian Hehlen @zenwork.eurosky.social · 07/08/2025
I agree. Although I like my components with Lit. OOP + events is what OOP was always supposed to be.
000
Florian Hehlen @zenwork.eurosky.social · 04/08/2025
Oh. Hmm... I didn't know about these issues. I almost never do any initialisation in the constructor other than initializing default state on variables when necessary.
000
Florian Hehlen @zenwork.eurosky.social · 04/08/2025
*returned
000
Florian Hehlen @zenwork.eurosky.social · 04/08/2025
I knew it was red. I did not know I could call super() later or that super() retired a reference.
200
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
I guess you have all the answers you want at this point, and don't seem interested in any other experience. For what it's worth I think you misunderstand what Justin has been doing and proposing for over a decade.
100
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
I followed v0 in 2016 or so. I started with v1 when released. I think you are ignoring the flux the whole space was in back then. The framework authors were not speaking with one voice at all. The disagreements between Angular, React, and Vue, Svelte, etc. universes was a big deal.
100
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
I have agreed and disagreed with stuff all three of these people have written. To say that the vitriol has come from one side ignores a lot of the story. To assert that there's some kind of collusion by one side and imply only good will and good intentions on the other is pretty simplistic at best.
100
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
That's a fair point. But you are also conflating the initial discussion raised in the article about having template support in the browser as some kind of concession by the WC community.
110
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
lit-html is a template lib you can use any where. Lit is the WC lib. The markup is 100% valid html. It extends html with extra syntax. JSX does it differently. MyComponent as a tag name is non-conformant. JSX doesn't distinguish between attributes and properties. "className" instead of "class". Etc.
100
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
Really. It's been that bad? And there's been no conflation and strong opinions by anyone in the big frameworks? There's been no outright criticising of web components for not being close enough to their favourite framework?
120
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
For everyone else, Webawesome is successor Shoelaces which will soon be released and exist as a base Oss library complimented by a for money pro version. webawesome.com
webawesome.com
Web Awesome
Build better with Web Awesome, the open source library of web components from Font Awesome.
000
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
One and the same! I have been using it since the early days. I am also a Kickstarter participant in Webawesome.
110
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
My go to reference for web components done right is Shoelace. Custom properties are mostly a flat list of tokens a d global properties. Well designed and documented CSS parts are used to provide access to override components at well defined points. shoelace.style/getting-star...
shoelace.style
Customizing
Learn how to customize Shoelace through parts and custom properties.
120
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
I think it's interesting that one of the trendiest frameworks out there is adopting web components. It doesn't make me like Tailwind more though
030
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
I see a difference. BEM relies on convention and practices. When Custom Properties are combined with shadow Dom, then nesting is maintained. Throw in CSS parts and it becomes even more solid.
100
Florian Hehlen @zenwork.eurosky.social · 26/07/2025
I see more real world use than ever. I also see more recognition of the value. That said, it's still an uphill battle for people to separate market/popularity driven arguments from other aspects of the debate.
010
Florian Hehlen @zenwork.eurosky.social · 25/07/2025
JSX without react is a thing but it's certainly not what made it popular. I mentioned the virtual DOM because lit's approach to reactivity and incremental Dom updates is intimately bound to the lit-html template. This template implementation fully respects html semantics.
100
Florian Hehlen @zenwork.eurosky.social · 25/07/2025
I think that this could be said of many technology circles. I have been through angular, angularjs, react, and finally into the WC world. The nature of web components fits well with my need for less rather than more when I code.
000
Florian Hehlen @zenwork.eurosky.social · 25/07/2025
I test with vitest + playwright. You can run in visual and headless mode.
000
Florian Hehlen @zenwork.eurosky.social · 25/07/2025
Justin's criticism has always been specific. JSX breaks HTML semantics in significant ways to map to React's component model. Second, although virtual DOM was a powerful idea when it was introduced about 10 years ago, it's today a liability. That's about it. No cabal.
120
Florian Hehlen @zenwork.eurosky.social · 24/07/2025
My understanding is that there's a requirement that all the frameworks (react, angular, Vue, etc ) and web component libs (lit, FAST, LWC, etc.) all have. The paper calls for agreeing on this common definition of a template for browsers to implement. This should not be JSX though.
110
Florian Hehlen @zenwork.eurosky.social · 24/07/2025
Read the article. It's not an endorsement of JSX. It uses it as a starting point to argue what a proper native templating approach would look like.
100
Florian Hehlen @zenwork.eurosky.social · 24/07/2025
I think you are reading-in things that aren't there. The popularity of JSX is just a fact. React and JSX do not have a monopoly on declarative ways of working. The article is pretty clear that JSX is not the solution. It just uses it as a vehicle because there's a large audience that can relate.
110
Florian Hehlen @zenwork.eurosky.social · 26/06/2025
It's so hard to recover the truth about web components!
010
Florian Hehlen @zenwork.eurosky.social · 04/06/2025
"IT is not the biggest problem in healthcare, there are very big problems, but it is a blocking problem" --Grahame Grieve #fhir #fhirdevdays
000
Florian Hehlen @zenwork.eurosky.social · 03/06/2025
If a template is a composition of multiple templates should cache() be used at the top or on each template?
100
Florian Hehlen @zenwork.eurosky.social · 03/06/2025
AI and LLM integration are one big challenge in #digitalhealth that promises to unlock many things. Huge progress is happening but cost (time and money) are still a big hurdle to reach usable solutions. #fhirdevdays #fhir
011