HNHacker News
TopNewBestAskShowJobs

mholt

11,919 karma · joined May 8, 2013

I'm the author of the Caddy web server. https://caddyserver.com

Twitter: https://twitter.com/mholt6

Personal: https://matt.life

[ my public key: https://keybase.io/mholt; my proof: https://keybase.io/mholt/sigs/X_pNtQp3_Et_7qwkBKVjmZv4dl7vP8bX83hu4N9lyz8 ]

(I do not use Keybase)

submissionscomments
mholt··on <template>: The Content Template element
I use grid (still find it hard to grok though) -- but Tabler is more than just layout/flow. I like Tabler's component styles and it's highly customizable and easy to use, which I appreciate.
mholt··on <template>: The Content Template element
Yeah, dealing with date/time in JS has been a HUGE pain. I haven't tried Temporal yet but I hope it's better.
mholt··on <template>: The Content Template element
It's this: https://tabler.io/admin-template

Still highly unstable between versions, but for being free, it looks really good and is very flexible. I've been pleased with it for this project.

mholt··on <template>: The Content Template element
It doesn't actually get any of your data, let alone anyone else's. It's just an organizer, so please elaborate.
mholt··on <template>: The Content Template element
Ha, thanks. It's hard, so no shame for being "stuck". I've iterated on this for over a decade at this point. Still more evolution to come... but I really want this for my family.
mholt··on <template>: The Content Template element
Thanks! Hopefully it delivers.

I haven't seen that, actually -- looks very nice. We do render a heatmap already, but I'm learning that heatmaps are very tricky to tune to be most useful/interesting. I will try to learn from that project.

mholt··on <template>: The Content Template element
Awesome -- gonna try this. Thanks for the tip! And lit-html looks cool btw.

Update: I'm using importNode() now -- works great too.

mholt··on <template>: The Content Template element
I'm using the <template> tag heavily in Timelinize[0], which has a fairly sophisticated UI that I'm writing in vanilla JS -- not even jQuery. I use a few libraries (for mapping, datetime, and Bootstrap+Tabler for some nice styles), but that's it.

I wrote some boilerplate JS, yes, but I have complete control over my frontend, and I understand how it works, and I don't need to compile it.

Anyway, it works well so far! The <template> tag is a great way to lay out components and then fill them in with simple JS functions.

One nuance is documented in my code comments:

    // Ohhhhhh wow, we need to use firstElementChild when cloning the content of a template tag (!!!!):
    // https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/template#avoiding_documentfragment_pitfalls
    // I spent way too long on this.
    const elem = $(tplSelector);
    if (!elem) return;
    return elem.content.firstElementChild.cloneNode(true);
Once I figured that out, it's been smooth sailing and very powerful.

Oh, but I haven't cleaned up my code at all yet because I was just experimenting/hustling, so it's a bit spaghetti :) If you go looking, don't mind the mess.

---

[0]: https://github.com/timelinize/timelinize - a self-hosted application for bringing together all your data on your own computer and organizing it onto a single timeline: social media accounts, photo libraries, text messages, GPS tracks, browsing history, and more. Almost ready for its debut...

mholt··on SSL certificate requirements are becoming obnoxious
First line:

> I am responsible for approving SSL certificates for my company.

And that is exactly what the requirements are intending to prevent. Automation is the way.

The system is working!

mholt··on AI tooling must be disclosed for contributions
We also require this in the Caddy project too, but enforcing it is difficult.
mholt··on Show HN: Anchor Relay – A faster, easier way to get Let's Encrypt certificates
If you can't trust your network, you'll want encryption, regardless of devices on it.
mholt··on Nginx introduces native support for ACME protocol
Thank you, this is amazing feedback/info. Yeah, we think the Tailscale integration is pretty neat too!
mholt··on Nginx introduces native support for ACME protocol
Wonderful info, and feedback -- thank you so much. Happy that it works for you!
mholt··on Nginx introduces native support for ACME protocol
I remember you. You're just grumpy because you didn't think of it first. ;)
mholt··on Nginx introduces native support for ACME protocol
2015 in fact. A decade ago.
mholt··on Nginx introduces native support for ACME protocol
Oooh. Can you tell me more about this?
mholt··on Nginx introduces native support for ACME protocol
Maybe inversely proportional to how much the ecosystem moves around it.
mholt··on Nginx introduces native support for ACME protocol
This is one of the main reasons Caddy stopped using lego for ACME and I wrote our own ACME stack.
mholt··on Nginx introduces native support for ACME protocol
Where's that if I may ask?
mholt··on I'm worried it might get bad
Don't worry -- soon after that, there will be high demand for human coders as companies scramble to hire to rewrite all the buggy and vuln-ridden AI-hallucinated software. We're on the verge of two revolutions in tech, not one.
mholt··on LetsEncrypt Outage
Yeah but if you need a cert for a new site you have to use another CA.
mholt··on GitHub API Is Down
Can't merge PRs or run actions either.

According to their status page, seems like all those services require Copilot: https://www.githubstatus.com/

mholt··on Apple introduces a universal design across platforms
This isn't just a gaussian blur though, there's raytracing and refractions happening. The OS is becoming a low-key high-fidelity video game.
mholt··on Why I no longer have an old-school cert on my HTTPS site
It scales to hundreds of thousands of sites.
mholt··on Too Much Go Misdirection
There's io.ReaderFrom and io.WriterTo, which can avoid internal buffering.
mholt··on Show HN: SQLite JavaScript - extend your database with JavaScript
How does it compare to https://github.com/asg017/sqlite-vec ? Already using this in a big project.
mholt··on Too Much Go Misdirection
[]byte is a buffer. (io.)Reader is any type that can read bytes, like as part of a stream. There are `bytes.Reader` and `bufio.Reader` and `strings.Reader`, and many others, depending on what you're reading. These three types allow you to read []byte, any buffered input, and string, respectively, as streams.

Streaming is more efficient for large pieces of data (files, etc; whatever you have), but the buffer is usually easier to work with and grants more flexibility.

mholt··on Cheating the Reaper in Go
Off topic, but I love the minimap on the side -- for pages where I might be jumping around the content (long, technical articles, to refer back to something I read earlier but forgot) -- how can I get that on my site? Way cool.
mholt··on .localhost Domains
When using `.localhost` in the Caddyfile, you don't even need the `tls internal` line since that's assumed for that TLD.
mholt··on Windows 11 is closing a loophole that let you skip making a Microsoft account
How can you set up / use Windows without an Internet connection? Surely that's not an unsupported use case anymore, is it? There's gotta be plenty of places where Internet connectivity is not available or is restricted.
← PreviousPage 5 of 34Next →