All Posts
Browse this space's posts and add your own text, images, videos, GIFs, or audio.
Posts
42 posts
Blogging
The easier way to post to my blog with comments already setup
This is where the talking happens: Easier way to post to my blog with comments already setup
My comment section is static HTML
This is the comment section for My comment section is static HTML.
23 languages, one I can check
This is the companion thread for 23 languages, one I can check. Replies here also show up on the blog post itself.
Creating a Claude skill to simplify adding a comment section to my blog post
I wrote about this in a little more detail here, but basically trying to reduce the steps necessary to making this work
If you haven't poked around here, short summary:
Comment area for your content, no libraries to import, all content is owned by you stored in JSON, no ads, no tracking. Let's get back to the original communicative and non-corporate web (modernized though), eh?
BTW if you're curious, this is all built in Elixir, Phoenix, and LiveView. If you don't know what all that is, don't worry. (I think it's pretty cool tech though and love to talk about it, so… if you're curious let's get coffee? literally or just online. I'm an open book.)
Companion to Adding a Claude skill to make a new blog entry discussion thread as easy as possible.
Your site can keep the comments
Every thread's public replies are now plain JSON at the thread's address plus /replies.json. You can download it, do what you want. The content is yours even if this site vanishes. More in the link.
We're all terminally online. I know I am. I know you are too if you're reading this
This is the comment section for we're all terminally online. I know I am. I know you are too if you're reading this.
AI is good. Scary good. Scary in a good way.
Companion thread for AI is good. Scary good. Scary in a good way..
Replies here also show up on the blog post itself.
Automatic comment threads for new blog posts
This is the companion thread for I've made posting here with a companion thread on PopsicleBoat automatic. Replies here also show up on the blog post itself.
The irony, oh the irony!
Continuing my theme of acknowledging that I needn't care if anyone gives a shit about anything I post online.....and ironically posting about it online!
I present to you: "No one cares, and that's a good thing!" a new node in my Digital Garden (reluctantly posted to this Blogging category until there's a Digital Garden one.... 😛)
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 (a few lines of html), and that's the whole integration. No widget, no iframe, no tracker. A reader who wants the discussion follows the link, and the hosting page itself stays static.
The post you (almost) didn't publish
This is the comment section for The post you (almost) didn't publish.
Why did I call it PopsicleBoat?
This is the comment section for Why did I call it PopsicleBoat?.
My new post script
This is the companion thread for My new post script. Replies here also show up on the blog post itself.
Commenting now works with two redirects
This is the companion thread for Commenting now works with two redirects. Replies here also show up on the blog post itself.
Posting here, start to finish
This is the companion thread for Posting here, start to finish. Replies here also show up on the blog post itself.
The notification that gave up after a minute
I added the option of notifications, but it was buggy. So I fixed it. Full story in the link.
https://jva.lol/weblog/the-notification-that-gave-up-after-a-minute/
The page that rebuilds itself
I added a build hook so your (and my) site can automatically rebuild itself when there's a new comment or post.
The panel that closed itself
I had a painful bug dealing with video chat. A feature I'm proud of and worked hard on so wanted to get right. Details in the link.
Programming
Putting the boat on a diet
New on the blog: a logged-out thread page went from 843 KB to 468. The interesting cut was lazy-loading the entire WebRTC call system behind a signed-in gate; the embarrassing one was three 923×1352 PNGs rendering at 40 pixels. Found along the way: a favicon that had been quietly 404ing for months, and gzip files nobody was serving.
Here i discuss the coolness of Popsicle Boat's new collapsible and resizable sidebar
Companion to my post: https://jva.lol/weblog/collapsible-sidebar/
The panel that hid itself.
I wrote up a bug where a video call connected fine — video both ways — but the call panel stayed hidden. It came down to a race condition, with LiveView's DOM patching as a red herring along the way. Full story: https://jva.lol/weblog/the-panel-that-hid-itself/
LogBook
The translation report link caught its first fish
Yesterday I added a small link under the language picker: "Does this read wrong?" Today it brought the first report, about the Ukrainian translation, from someone who left no address.
They said the translation is ridiculous in many places, especially where names get inserted into sentences. They're right. Ukrainian changes word endings depending on how a word is used, and this site drops names into sentences in whatever form they were typed. The fix is a known pattern (put a category word the translation controls in front of the name) and it's now written up and queued. Russian gets the same fix at the same time, since it has the same grammar and the same bug.
To whoever sent it: thank you. You left no way to reach you, so this post is the reply. The link is there because my checks can't catch this kind of thing. Only readers can, and you did.
Keeping track of what's new
A few changes for finding what's new:
The sidebar's All Posts link now shows a badge — the number of posts you haven't read yet. Open the feed and those posts are listed under "New since your last visit," each linking to its thread. Opening a post clears it from the count right away; the rest stay marked unread. If the list gets noisy, "Mark all as read" clears everything at once.
And once you've finished the welcome checklist, your home page opens with recent posts instead of the welcome page.
Behind it: one small row recording that you opened a post, visible only to the server. Your counts are private to you.
Build hooks: your site rebuilds when replies land.
For blogs using a thread here as their comment section: It can now tell your site when a new reply comes in. Static hosts (Netlify, Vercel, Cloudflare Pages, etc.) offer build hooks: a URL that rebuilds your site when something POSTs to it. Paste yours into Settings under "Your blog," and when replies land on threads you created (in any space), Popsical Boat calls it. Bursts are debounced into a single call, so a busy conversation is one rebuild instead of many.
If you run a space of your own, its edit form takes a hook too, to rebuild on activity there. Also new: creators of approved spaces now have full control of their own space's settings.
Written up for blogs at popsicleboat.com/for-bloggers, with the longer story at jva.lol/weblog/the-page-that-rebuilds-itself/.
Popsicle Boat by the numbers
Right now: 17 members · 43 posts · 65 replies · 14 spaces.
This entry updates itself — the numbers refresh automatically, and once a quarter I add a snapshot line below.
Snapshots:
2026 Q3 — 8 members · 10 posts · 66 spaces
How the boat is built
One person builds and maintains this boat. It's written in Elixir and runs on a couple of small servers. No ads, no trackers.
The analytics count pages, not people.
Every space has an open feed you can read from any feed reader, no account needed. Writing is free forever. There's no quota on your words, only on heavy files like videos and images.
The longer story is at https://www.popsicleboat.com/about, the promises are spelled out plainly in the privacy policy at https://www.popsicleboat.com/privacy (one page), and build notes turn up on my blog at https://jva.lol from time to time.
What this Logbook is
This is the one place I post news about the boat itself — new features, fixes, the occasional change of direction. A few promises: entries are occasional, not chatty. The little dot you might see next to "Logbook" in the sidebar just means there's one new entry — it doesn't count or nag, and it goes away the moment you look. Only I write entries here, but replies are open to everyone: questions, complaints, and hellos all welcome. The Logbook also has its own feed — paste this page into a feed reader and it'll find it.
What's new (July 2026)
Everything works the way it did before. Only additions, nothing you would need to relearn.
Your words can take on styling now. Posts, replies, and messages understand simple formatting: bold, italic, code, lists, quotes. Paste a link and it turns clickable on its own. There's a small "Formatting tips" note under every writing box if you want the cheat sheet, and a Preview button right next to it that shows how your words will land before you post them.
You can search. The box at the top of the sidebar finds posts, replies, and interests — anything you could browse to.
You'll know when someone replies. Your inbox has a new "Replies to you" section, and the inbox badge lights up when something's waiting. No more checking back on a hunch.
You can follow a feed from anywhere. Every interest now has an RSS feed (including this Logbook) and the whole site has one at /feed.xml. Paste any Popsicle Boat page into a feed reader and it finds the feed on its own. A nice way to keep an eye on a conversation or space, or to share one with a friend who isn't already signed up.
That's the batch. If something feels off, or is missing something you wish it had, reply here. I read every word.
-Jake
AI Tools
Sudomake Friends: your imaginary friends that chat in Telegram with you
Yes of course this is an AI thing.
When people think AI/LLM they think ChatGPT, and it's got chat right in the name. That was actually the big innovation, GPT itself already existed. So what's the point of chatting with AI in Telegram?
https://github.com/audiodude/sudomake-friends
Well this is done differently. It's meant to be more realistic than ChatGPT. First, you can have multiple AI friends. Second, they sleep, they work, they don't always respond (or they respond 2 hours later). They can be in different timezones then you. They respond to each other.
It actually works kind of like an RPG where you roleplay having friends. There is a terminal interface (TUI) for rolling and rerolling and editing friends before you go into the chat.
Unfortunately for the non tech-minded, this is very much an experiment and there's no user interface. If you want to run this yourself, you bring your own Anthropic key and run a Docker image on your own box. But the configuration and memories stay in ~/.sudomake-friends, so you can back them up, edit them, or delete them as you like. The friends do get upset if you reveal that they are bots and you're going to delete them.
Songwriting
My songs from the past 18 years
I've been writing songs since college, and I am very much not in college anymore.
Here are some that I felt were worth publishing over the years: https://songs.travisbriggs.com
I hope that I'm more of a bedroom "rocker" than a bedroom "producer". And honestly my home studio is in my kitchen, thank you very much!
Music
A Synthesizer (VST/web) and Sequencer (web) that I vibe coded
2 media items
Introducing VapeStation and λ-SEQ!
Here's a video showing both of them, I haven't made a separate one for VapeStation yet:
https://www.youtube.com/watch?v=qHJEweI7oSE
A sequencer is a device that doesn't make music on it's own, but controls other digital music equipment to instruct them when to make sounds. A synthesizer is, you know, a synth. Lambda sequencer is kind of based on ideas I've had for years, whereas VapeStation was more of an experiment in "can I really vibe code a synth". The answer is very much yes.
I know everyone hates LLMs/"AI", but I've found Claude to be very useful tool in helping me realize and devleop ideas that I've had for years, but never had the motivation to really pursue on my own. Why spend 3 months making a sequencer that no one uses? I'd rather spend 3 days making a sequencer that no one uses!
These are free and open source, and the both run in your browser if you want:
https://lambda.audiodude.xyz/
https://github.com/audiodude/lambda-sequencer
http://vapestation.audiodude.xyz/
https://github.com/audiodude/vape-station
Photography
digitalgarden
Blogs are static. Digital Gardens are evergreen.
A Digital Garden is more like a wiki than a blog. Instead of writing a perfect blog post that is impeccably crafted and wholly expresses a single idea, you can take notes and musings on whatever things you're thinking about. Or things that are in the news or being debated. Things you've always wanted to share your opinion on, or stuff you're working on.
The way it works is not technical, the technical part doesn't matter at all. The point is the mindset shift, of thinking of your Garden as something that's living, that changes. Nothing is ever finished.
Nature
I didn’t know Utah has native water lilies
3 media items
Saw these yellow pond lilies (Nuphar polysepalum) in the Uintas. They are considered Utah's only native water lily.