#dev 2026-07-17
2026-07-17 UTC
ZodiacalComet, hypha, rossabaker, grufwub and hypha_ joined the channel
#
WinnerWind going to undertake something big: going to add LSP support for my SSG. was wondering if people have done this before, and if so, how the experience was
hypha_, mahboubine and blacklight joined the channel
#
[capjamesg] What is LSP?
#
Loqi It looks like we don't have a page for "LSP" yet. Would you like to create it? (Or just say "LSP is ____", a sentence describing the term)
#
WinnerWind [capjamesg]: LSP stands for Language Server Protocol, it provides autocomplete/documentation when programming
#
WinnerWind something that understands the source code provides an LSP server for something that doesn't understand the source code (eg. text editors), to hook into and use for user friendly features
#
WinnerWind this is mainly plumbing though
#
[capjamesg] Got it. Autocomplete is always fun!
#
WinnerWind indeed! it would save me a lot of sanity too, right now im getting really tired of having to open 30 files to see the documentation i wrote
#
[capjamesg] I could use some opinions on a URL pattern I have been designing.
#
WinnerWind shoot! im interested :)
#
[capjamesg] My category pages list all my posts in that category (i.e. https://jamesg.blog/coffee).
#
[capjamesg] Today I wanted to share a link showing when I did most of my coffee writing, which was in 2021-2022.
#
[capjamesg] I can now use #2021-01-02 to link to the most recent post published on January 2nd 2021, #2021-01 to link to the most recent post published in January 2021, and #2021 to see the most recent post published in 2021.
#
[capjamesg] The downside of this approach is that for the current year and day, the anchors might vary. Linking to #2026-07 today will point you to a different point on the page tomorrow if I published a post today.
#
[capjamesg] Maybe this is okay? But I thought I’d share here in case anyone had thoughts!
#
[capjamesg] (I don’t want to do /coffee/2022, etc.; I want to keep everything on a single page)
Saphire joined the channel
#
WinnerWind dont URL anchors only work within one page?
#
[capjamesg] Exactly. So these links would be /coffee#2021-01-02, /coffee#2021-01, etc.
#
[capjamesg] You can try it out now if you’d like 😄
#
WinnerWind ah! it clicked
#
[capjamesg] I didn’t include full links everywhere here because Slack is doing a weird thing where it doesn’t even show me the anchor I have typed if I put it in a link and send the message,
#
[capjamesg] Looking at my messages, I think this is what I want? Sometimes writing things out helps 😂
barnaby, Saphire and d1s1nf3ct joined the channel
#
WinnerWind that sounds like a lovely way to structure things, but i wonder what's the point of this? as in, what does it do that linking the article itself, doesn't
#
WinnerWind does the use of the anchor highlight multiple entires?
#
[capjamesg] Great question. I don’t want to link to the specific article, I want to link to the time so that people can explore further (i.e. to look at all my 2021 coffee posts).
#
[capjamesg] The idea of highlighting multiple entries is a _really_ good one.
#
[capjamesg] That will take a bit more engineering though haha.
#
[capjamesg] [artlung] gRegor I wrote a blog post about our discussion at FrESH last night, now with updated code: https://jamesg.blog/2026/07/17/multi-line-links-on-my-home-page
#
WinnerWind [capjamesg]: i see, i can't see how text anchors could be used to highlight multiple entries, though :( maybe there's a way? the way I'd do it is make a heading for each year and subheadings for each month then anchor to those
#
WinnerWind that would highlight the anchor only, though
#
[capjamesg] I was just tinkering with this. You can do it with CSS, but you also need a sprinkle of JS.
#
[capjamesg] `li[id^="2025"]` would select all `li` with an ID that starts with `2025` , but you’d need JS to know that you want to select the year 2025.
#
[capjamesg] I could enclose the `li` in a div for each year, year/month, year/month/day but I’d prefer not to do that haha.
#
WinnerWind I see, personally not a fan of JS but if it makes the work easier, why not, i guess?
#
WinnerWind though the anchors would immediately break for users of noscript (myself included)
#
[capjamesg] The anchors would still work, but the colour wouldn’t.
#
[capjamesg] What is progressive enhancement?
#
Loqi progressive enhancement is the web development practice of building web pages, sites, apps so they are at least readable, and preferably allow for most if not all interactions, from any kind of browser, and optionally take advantage of additional capabilities (like various CSS & JS features) when available https://indieweb.org/progressive_enhancement
#
[capjamesg] I really love this idea ^^
#
[capjamesg] Yeah I can’t see a way do to this CSS only without the divs. Hm…
#
[pcarrier] [capjamesg] `:target .post
{ … }` then enclose in elements for years and months that you can target with `#2025-03` seems like the cleanest solution though?#
[capjamesg] Yeah 😭
#
[capjamesg] I was hoping I wouldn’t need divs haha.
#
[pcarrier] You can use <section> 🙂
#
[capjamesg] 😂
#
[capjamesg] Aghh this template is going to be a mess 😂
#
[pcarrier] bake the data structures outside the template so it can traverse sections cleanly?
#
[capjamesg] Yeah that’s a good idea.
d1s1nf3ct joined the channel
#
[capjamesg] Maybe a task for another day!
#
[capjamesg] But thanks WinnerWind++
#
[capjamesg] and [pcarrier]++
#
[capjamesg] for the ideas!
#
[pcarrier] [capjamesg] you're using cloudflare turnstile? I'm sad

#
[capjamesg] Yeah I actually don’t think I have a reason for that on my main site…
#
[capjamesg] I just turned off proxying on my main site.
ZodiacalComet joined the channel
#
[pcarrier] oops

#
[pcarrier] might only happen with https://cc.me/shot which is kinda weird given it only drives a local chromium
blacklight joined the channel
#
[capjamesg] [pcarrier] -> #indieweb-random
#
[capjamesg] Ooh thanks for the context!
#
[artlung] Folks were discussing text fragment styling? As in https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/:target ? I am not seeing an example where someone had something that was not working.
#
[capjamesg] The issue is that :target can’t read the fragment on the page, so I can’t do li[id^=:target]
#
[capjamesg] Admittedly I haven’t tried that but I don’t think it would work?
#
[pcarrier] hmmm wdym can't read the fragment?
#
[capjamesg] :target says if the element is the target. It doesn’t return the value of the #xyz part of the fragment in a URL.
#
[capjamesg] I’d have to do li[id^=“2025”] but there’s no way to get the 2025 from http://example.com/#2025 without JS.
#
[pcarrier] well, if you have a <li id="2025"> and navigate to #2025 and use `:target` as the selector that `li` will be selected no? I'm lost
#
[pcarrier] I don't quite understand why you need JS here?
#
[capjamesg] I’d want to select every ID that starts with 2025.
#
[capjamesg] (^= 2025 checks for text that starts with)
#
[capjamesg] That way I wouldn’t have to add the extra divs/sections/etc.
#
[pcarrier] ah yes, "starts with" is addressed by having id=2025 parent of id=2025-01 parent of id=2025-01-31 and then targetting descendants of :target not :target itself?
#
[pcarrier] I don't think there's a JS-free way to avoid the hierarchy
#
[capjamesg] Hm…
#
WinnerWind what if you wrapped divs in divs?
#
[pcarrier] that's what we're suggesting WinnerWind
#
WinnerWind <div id="2025"><div id="2025-05"><div id="2025-05-02">
#
WinnerWind oh, my bad
#
[pcarrier] no worries, great minds
#
[artlung] I am using `figure:not(:target)
{ }` and `figure:target { }` to do this on https://artlung.com/art/#galletas-de-mar#
WinnerWind my irc client didnt load in the historical messages when i sent that
#
[capjamesg] Okay I have 90% of this working in my jinja template haha.
#
[capjamesg] If this could work with CSS though that would be amazing.
#
WinnerWind [capjamesg]: you use jinja too? neato!
#
[capjamesg] jinja is great!
#
[capjamesg] TIL there is a loop.nextitem to get the next item in a loop.
#
WinnerWind indeed! i use it for my ssg too and i spend less time writing python and more time writing jinja markup
#
[capjamesg] Ah the jinja logic has gotten way too complex. Maybe I’ll get to this some other time.
#
[capjamesg] Yeah sorry please refresh.
#
[capjamesg] I just removed the nesting.
ax562 joined the channel
blacklight joined the channel
#
[artlung] There was (is?) apparently an issue with Cloudflare handling of POST requests https://www.cloudflarestatus.com - like, they were not doing it. Not sure how large, but seeing a few folks mentioning it around.
#
[capjamesg] Oof.
#
gRegor Resolved apparently, though we're not gonna touch it till next week :) https://new.cloudflarestatus.com/incidents/652w59bvnbsj
#
[capjamesg] Neither did I!
#
[capjamesg] MDN to the rescue again.
#
[capjamesg] It’s always nice to remove a line of code and maintain feature parity 😄
#
[capjamesg] If I ever write an EDM album that’s what I will call it ^^
#
[capjamesg] What about EDM?
ttybitnik and [keithjgrant] joined the channel
#
[keithjgrant] One of the most constant points of friction & frustration for me has been maintaining a micropub server and figuring out where to host it for cheap (or better, free). It recently occurred to me (in a dream, believe it or not 😆) that I could just run a server locally to do it. Since Omnibear supports manual editing of the micropub endpoint and auth token, I can just point it at my local server with a hand-created auth token.
#
[keithjgrant] So here's a minimal micropub server for static sites, meant to run on localhost. It creates the MD file and commits/pushes the change to git: https://github.com/keithjgrant/local-micropub
#
girlonthemoon [keithjgrant]: this is so cool!
[Al_Abut] joined the channel
#
[artlung] !tell aciccarello to check out https://github.com/keithjgrant/local-micropub by [keithjgrant] when you get back from vacation
blacklight and barnaby joined the channel
#
[capjamesg] Are there any feed readers that tell you when a feed for which you have set a custom name has changed its name?
#
[capjamesg] The example I have right now is People and Blogs is now run by Zachary. I had the feed under “Manuel”. It would be cool if a reader automatically told you that the name has changed.
#
[capjamesg] (“Manuel” was the person who started the series, for context.)
#
[social] Didn’t the feed location change as well?
#
[capjamesg] Yeah.
#
gRegor Is it this one? https://zacharykai.net/assets/rss.xml
#
gRegor Ah no, probably https://zacharykai.net/assets/files/feeds/pb.xml
#
[capjamesg] Yep!
kussich, karmaten and barnaby joined the channel
#
girlonthemoon i've seen that girl scouts message in two channels now, from different users. wonder if it's a spam thing?
#
[capjamesg] Most likely 😭
blacklight, bterry and claudinec joined the channel
#
[pcarrier] I have automatic HTTPS support through LetsEncrypt, not even something you can disable or override, [tantek]. Feel I'd need to offer a choice for IndieAuth, but opt-out feels better specially when the options are set through a config file rather than a UI?
#
[pcarrier] That does feel a bit intrusive as a feature though, claiming automatically that I can authenticate you
#
[pcarrier] OK OK. baked-in, opt-out IndieAuth coming to my hosting platform tonightthen :)
#
[pcarrier] there we go
blacklight, thatoddshade and rey joined the channel
