Caleb Hailey
banner
calebhailey.com
Caleb Hailey
@calebhailey.com
HyperText junkie. RSS prosumer. Founder, @herd.works. Blogging at https://calebhailey.com.

Portland, OR. 🌹⚽️🌲
Err, I guess chapters are embedded in the MP3, not the feed. Still! 🤓
October 1, 2025 at 10:43 PM
Yeah you said it better, haha.
July 3, 2025 at 11:46 PM
Defaults man.
July 3, 2025 at 10:27 PM
Sure, makes sense.
July 3, 2025 at 10:25 PM
Looks neat! The use of attributes to write/eval JS expressions feels very alpine-esque.

alpinejs.dev

With HyperTemplates I'm purposely avoiding any opinions about JS beyond the fact that a richer initial HTML document (i.e. a static site) makes progressive enhancement easier.
Alpine.js
A rugged, minimal framework for composing behavior directly in your markup.
alpinejs.dev
June 30, 2025 at 4:52 PM
Nice blog post!

I don't think my project is as ambitious in scope as you are proposing, but I built a pure-HTML templating system and static site generator that I'd love any feedback on. 🙏

hypertemplates.net

It pairs super nicely with Web Components IMO. No JS frameworks required.

#HTML
HyperTemplates
The pure-HTML templating system for the modern web.
hypertemplates.net
June 28, 2025 at 3:17 AM
You can build incredible modern websites with pure #HTML, #CSS, and #Javascript! No frameworks, no build tools, no sacrifices, and no nonsense (unless you're into those sorts of things). 😊

We hope you will give HyperTemplates a try, and we can't wait to see what you make with it! 📐

#MakeHyperText
June 12, 2025 at 6:15 PM
The first major component of the @makehypertext.com movement is HyperTemplates – a pure-HTML templating engine and blazing fast static site generator. 🚀

hypertemplates.net/blog/introdu...
Introducing HyperTemplates
The pure-HTML templating system for the modern web.
hypertemplates.net
June 12, 2025 at 6:15 PM
We'll have a lot more to say about this in the coming weeks and months. Until then, we're looking forward to feedback! 💬
June 12, 2025 at 5:40 PM
Nice article!

This isn't exactly what you were asking for, but I discovered while doing some AWS automation some years ago that Amazon offers a public API for getting your public IP address that I have aliased in my shell:

alias whatismyip="curl -s checkip.amazonaws.com"
May 15, 2025 at 7:51 PM
That first line just checks to make sure the component argument is a JS class.

And yeah, I think this is maybe the first time I’ve ever extended a third-party object in this way. But it was such a small little hack I didn’t even give general "best practices" a very thorough consideration. 🤪
February 12, 2025 at 9:46 PM
And by "shortcode template" I mean something like a layout partial (an HTML DocumentFragment) that gets included into a layout, server side.
February 12, 2025 at 8:14 PM
What I’m doing is akin to shortcodes, but in pure HTML. So instead of checking which elements needs JS loaded for progressive enhancement in my static site build, I’m just adding a <script src defer> tags to the shortcode templates.

Then customElements.apply handles any redundancy.
February 12, 2025 at 8:12 PM
OK, yeah, this is almost exactly the situation I’m in. And I’ve done something similar in my hugo projects (where I *love* using shortcodes).
February 12, 2025 at 8:10 PM
I probably should have illustrated the problem better with some examples.
February 12, 2025 at 7:33 PM
Why? ¯\_(ツ)_/¯

I’ve started using custom elements (instead of <div> soup), even when no JS is needed. Then I’m adding a <script src> tag when I want to progressively enhance the element with JS. Then in some cases, my templating system adds multiple instances of a custom element to a page.
February 12, 2025 at 7:32 PM
The challenge I’m having isn’t multiple components with the same name. I’m (lazily) importing the same component more than once.
February 12, 2025 at 7:30 PM