Blogging

jake's Posts

A glance is not a reading

New essay on the blog: PopsicleBoat's new-posts badge needed the word "new" defined — and I got it wrong twice (a watermark, then a session line) before landing on the honest model: a read is a fact about you and one post. https://jva.lol/weblog/a-glance-is-not-a-reading/
1 reply   |  
  0 likes

Posted 1 day ago

The notification that gave up after a minute

New on the blog: the story of the reply notifications that never arrived. Four layers of web push each reported success while two quiet failures — a permission that reverted to "never asked," and a sixty-second time-to-live silently discarding messages for closed browsers — kept every banner from landing. Now they wait a day. https://jva.lol/weblog/the-notification-that-gave-up-after-a-minute/
0 replies   |  
  0 likes

Posted 3 days ago

The page that rebuilds itself

New on the blog: the boat learned to ring the doorbell. Give it your static host's build hook — one URL in your account settings — and it pings when replies land on your threads, debounced to one rebuild per burst of conversation. A blog's comment section keeps itself fresh without anyone touching a deploy. https://jva.lol/weblog/the-page-that-rebuilds-itself/
0 replies   |  
  0 likes

Posted 7 days ago

Your site can keep the comments

New on the blog: the boat learned to send the comments home. Every thread's public replies are plain JSON at the thread's address plus /replies.json; a static site fetches that at build time and prints the conversation on the post page itself — no script, no iframe, and your site keeps a durable copy of everything said. https://jva.lol/weblog/your-site-can-keep-the-comments/
1 reply   |  
  0 likes

Posted 8 days ago

The panel that closed itself

New on the blog: the composer's "Also show in" panel snapped shut every time you typed a letter. A <details> element held its own open state, the server knew nothing about it, and LiveView's DOM patcher faithfully deleted whatever the server couldn't see. The patcher did it — and it still wasn't wrong. https://jva.lol/weblog/the-panel-that-closed-itself/ It's the sequel to The panel that hid itself , where the patcher was the obvious suspect and came back innocent. Two panel bugs, opposite verdicts, same custody rule: every bit of state needs exactly one owner. (Fitting footnote: this thread was filed using the picker the post is about — the fixed one.)
0 replies   |  
  0 likes

Posted 10 days ago

Popsicle Boat as a comment section

I wrote up how jva.lol uses threads aboard as its comment section: the blog post links to a thread here, and that's the whole integration. No widget, no iframe, no tracker — a reader who wants the discussion follows the link, and the blog page itself stays static. https://jva.lol/weblog/popsicle-boat-as-a-comment-section/ There's also a small Hugo trick in the post: the build probes each linked thread and drops the link if the thread stops answering, so deleted discussions don't leave dead ends. This thread is that post's comment section.
1 reply   |  
  0 likes

Posted 10 days ago