Danny Engelman 🌷🏍️🛥️
engelman.nl
Danny Engelman 🌷🏍️🛥️
@engelman.nl
I do modern Web Component Development with technologies supported by **all** WHATWG partners (Apple, Google, Microsoft & Mozilla)

👨🏻‍💻TRS-80 Scriptkiddie '79+
🎓 Computer Science '87 - '92
❤️ Online since 1990 yes! 1990 I started with Email and Gopher
Pinned
What word is spelled?

ChatGPT thought for 7 minutes and 17 seconds, and said:

𝙋𝘼𝙒𝙉𝙎𝙏𝘼𝙍

Wrong word, because AI is great at logic, but can't think...

What word do you see?
shadowDOM is older than React

But us mortal Web Component developers couldn't use it till years later

𝙨𝙞𝙣𝙘𝙚 𝙬𝙝𝙚𝙣 𝙙𝙤𝙚𝙨 𝙪𝙨𝙚𝙧-𝙖𝙜𝙚𝙣𝙩 𝙨𝙝𝙖𝙙𝙤𝙬𝙍𝙤𝙤𝙩 𝙚𝙭𝙞𝙨𝙩 𝙞𝙣 𝙩𝙝𝙚 𝙗𝙧𝙤𝙬𝙨𝙚𝙧𝙨?

#webcomponents
October 8, 2025 at 8:20 AM
september 25th 2025, a young man's superintelligent AI system tells him that he must go on a date or face certain suicide from loneliness.

It's a tall order for a guy who hasn't left his apartment in 42 days and is more than happy to stay at home with technology.

www.youtube.com/watch?v=NZ8G...
Sci-Fi Short Film “A Date in 2025" | DUST
YouTube video by DUST
www.youtube.com
September 25, 2025 at 8:54 AM
What word is spelled?

ChatGPT thought for 7 minutes and 17 seconds, and said:

𝙋𝘼𝙒𝙉𝙎𝙏𝘼𝙍

Wrong word, because AI is great at logic, but can't think...

What word do you see?
September 19, 2025 at 10:53 AM
Dear AI,

You were trained on blog-posts that do not show the chaining of super in:

super().attachShadow({mode:"open"})

That does not make your statement below right.

super() DOES return the this scope
September 15, 2025 at 8:35 AM
AI is trainend on "old" code

It has no clue what can be done in modern browsers

dashed-html.github.io
September 3, 2025 at 3:12 PM
... I would pay big bucks for an AI system that removes all
"You Know" remarks those Muricans make.

That would slash an hour long video in half.
August 18, 2025 at 2:39 PM
August 16, 2025 at 2:42 PM
My StackOverflow challenge entry, built with Chessboard Web Components

stackoverflow-challenges.github.io/cipher/index...

Became the simplest LLM quality tester

GPT5:
August 10, 2025 at 9:10 AM
Am I wrong?

I think we all have been using Custom Elements not to its full extend

You can use Custom Elements/Web Components?
(which extend from HTMLElement)

*Without* using any JavaScript!

Am I wrong?

dev.to/dannyengelma...
Not a DIV inside/in sight/site
<tag-name></tag-name> ANY tagname with a dash is a valid...
dev.to
August 6, 2025 at 9:03 AM
Are you defining your UI Web Components *before* DOM is parsed?

Or are you fighting FOUCs because you defined your UI Web Components (too) late *after* DOM was parsed
(using defer, import module or readystate/DOMContentLoaded)
August 5, 2025 at 11:39 AM
What color is the Web Component background?

⏹️ Error, super() must come first in the constructor

⏹️ Red, ::part styles parts inside shadowDOM

⏹️ Not Red, ::part in the host container can style parts

⏹️ Not Green, the Web Component is 0 height

Multiple answers possible

jsfiddle.net/WebComponent...
August 4, 2025 at 8:47 AM
Had some fun turning a String into an SVG, creating an animated PacMan.

The <sprite-meister> Web Component reads a Template Literal String, processes variables AND functions (pulse, ease and rotate) then creats ONE SVG with 24 frames. All client-side.

jsfiddle.net/WebComponent...

PacMan code:
August 1, 2025 at 8:21 AM
𝘿𝙤𝙣'𝙩 𝙨𝙝𝙤𝙤𝙩 𝙮𝙤𝙪𝙧𝙨𝙚𝙡𝙛 𝙞𝙣 𝙩𝙝𝙚 𝙛𝙤𝙤𝙩 𝙖𝙣𝙙 𝙗𝙡𝙖𝙢𝙚 𝙩𝙝𝙚 𝙜𝙪𝙣!

OP: "𝘸𝘦𝘣 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴 𝘪𝘯𝘴𝘵𝘢𝘯𝘵𝘪𝘢𝘵𝘦 𝘪𝘯 𝘵𝘩𝘦 𝘰𝘳𝘥𝘦𝘳 𝘵𝘩𝘦𝘪𝘳 𝘥𝘦𝘧𝘪𝘯𝘦() 𝘮𝘦𝘵𝘩𝘰𝘥𝘴 𝘢𝘳𝘦 𝘤𝘢𝘭𝘭𝘦𝘥 𝘪𝘯 𝘑𝘢𝘷𝘢𝘚𝘤𝘳𝘪𝘱𝘵. 𝘛𝘩𝘦 𝘏𝘛𝘔𝘓 𝘰𝘳𝘥𝘦𝘳 𝘥𝘰𝘦𝘴𝘯’𝘵 𝘮𝘢𝘵𝘵𝘦𝘳"

NO!

WCs defined *BEFORE* DOM is parsed execute in DOM order
WCs defined *AFTER* DOM is parsed execute in define() order
July 31, 2025 at 8:30 AM
I love semantic HTML
July 31, 2025 at 7:29 AM
There are THREE types of "Custom Elements"

NOT using any Web Components core technology:
❌ Custom Elements API
❌ Templates
❌ shadowDOM

then creating a HTML tag,
by only typing <𝙩𝙖𝙜-𝙣𝙖𝙢𝙚>...

Have I then created a "Web Component" ⁉️

You tell me...

dev.to/dannyengelma...

#webcomponents
July 21, 2025 at 3:35 PM
Since its impossible to edit BlueSky posts,
and they are posts anyway,
I made my post a blogpost.

#webcomponents / Web Components

𝙉𝙤𝙩 𝙖 𝘿𝙄𝙑 𝙞𝙣𝙨𝙞𝙙𝙚/𝙞𝙣 𝙨𝙞𝙜𝙝𝙩/𝙨𝙞𝙩𝙚

dev.to/dannyengelma...
Not a DIV inside/in sight/site
&lt;tag-name&gt;&lt;/tag-name&gt; ANY tagname with a dash is a valid...
dev.to
July 18, 2025 at 9:07 AM
Still writing DIV-soup?

ANY tagname with a dash becomes a valid HTMLElement,
NOT HTMLUnknownElement as some gurus claim.

That means you can replace ALL DIVs with semantic HTML.
Absolutely NO JavaScript required, only HTML and CSS!

Should we call them "Web Components"? You tell me

#webcomponents
July 16, 2025 at 7:28 AM
In which Web Component can you disable shadowDOM
with 2 keystrokes?

#webcomponents
July 2, 2025 at 9:31 AM
𝙄𝙩𝙨 35+𝘾 / 95+𝙁 𝙝𝙚𝙧𝙚 𝙞𝙣 𝘼𝙢𝙨𝙩𝙚𝙧𝙙𝙖𝙢

𝙄 𝙖𝙢 𝙤𝙣𝙡𝙮 𝙪𝙨𝙞𝙣𝙜 𝙨𝙝𝙖𝙙𝙤𝙬𝘿𝙊𝙈 𝙩𝙤𝙙𝙖𝙮 😎
July 1, 2025 at 12:40 PM
Its only slightly more code... which I trained GitHub CoPilot to create, so I am hardly using more keystrokes than a library.
June 16, 2025 at 9:35 AM
my entry for the StackOverflow "cipher" Challenge is online

"𝘞𝘩𝘢𝘵 𝘭𝘦𝘵𝘵𝘦𝘳 𝘪𝘴 𝘥𝘪𝘴𝘱𝘭𝘢𝘺𝘦𝘥 𝘰𝘯 𝘵𝘩𝘪𝘴 𝘣𝘰𝘢𝘳𝘥?"
ChatGPT can decipher a simple one, not the 'complex' ones humans can decipher.

100% Vanilla Web Components
build on top a I wrote in 2020

stackoverflow-challenges.github.io/cipher/
June 12, 2025 at 2:21 PM
I have to stop refactoring, just publish the damn book.

Civil𝑨𝑰zation - life on Mars - civilaization.github.io

100% native Web Components
every chapter an .MD file
Languages translated by ChatGPT

95% AI generated story

#webcomponents
June 10, 2025 at 3:16 PM
June 4, 2025 at 12:05 PM
No need to write Web Components like:

𝙨𝙪𝙥𝙚𝙧();
𝙩𝙝𝙞𝙨.𝙖𝙩𝙩𝙖𝙘𝙝𝙎𝙝𝙖𝙙𝙤𝙬({𝙢𝙤𝙙𝙚: '𝙤𝙥𝙚𝙣'});
𝙩𝙝𝙞𝙨.𝙨𝙝𝙖𝙙𝙤𝙬𝙍𝙤𝙤𝙩.𝙞𝙣𝙣𝙚𝙧𝙃𝙏𝙈𝙇 = ``

you can write:

𝙨𝙪𝙥𝙚𝙧()
.𝙖𝙩𝙩𝙖𝙘𝙝𝙎𝙝𝙖𝙙𝙤𝙬({𝙢𝙤𝙙𝙚: '𝙤𝙥𝙚𝙣'})
.𝙞𝙣𝙣𝙚𝙧𝙃𝙏𝙈𝙇 = ``

#webcomponents
June 2, 2025 at 12:40 PM
NO!

This only works when you treat Web Components the OLD jQuery or Framework way
When you process PARSED DOM, then do something with it.

Web Components defined *BEFORE* DOM is parsed can NOT access DOM content in the constructor or the connectedCallback *because* it is not there yet!!
May 29, 2025 at 9:32 AM