#dev 2026-06-21
2026-06-21 UTC
d1s1nf3ct, cotsuka, grufwub, girlonthemoon, parnikkapore_x, hisacro, mossymaker, CRISPR, Tilman1, Tilman2, vidak and [KevinMarks] joined the channel
#
[KevinMarks] There is the classic html2text (by Aaron Swarz) to mung html into markdown
cotsuka, vidak, lockywolf_, barnaby and Speedrunner joined the channel
#
WinnerWind im having trouble making a filebrowser for my static site. the TLDR of the issue is i want to make a file browser automatically. I could do it by making a markdown file, making it look like a filebrowser then using that. However, i kind of want to try making an automatic solution.
#
WinnerWind Now the issue: my SSG runs in these phases. First run Global plguins, which are handed a path to the input directory and spit out some data for the next phase, Pre Transformers, which decide what files will be allowed into the static site. After that comes Analyzers and Modifiers, which analyze and modify individual files. Then come post transformers, which decide which files will
#
WinnerWind make it in based on all the data put forth by everything beforehand.
#
WinnerWind The issue is that this phasing is kind of rigid and the filebrowser would somehow have to know the path of everything AFTER their file names have been set in stone
#
WinnerWind (i.e. after post-transform)
bterry, ttybitnik and cotsuka joined the channel
#
chr0m4 I think that you will benefit greatly from having a backend server.
#
chr0m4 you kind of can do what you want to do with markdown, SSG and Git. But it’s gonna suck
#
chr0m4 in the sense of, it’s gonna be overly complicated?
#
chr0m4 you want to keep things 100% static for any reason?
ZodiacalComet, ax562, CRISPR and cotsuka joined the channel
#
WinnerWind chr0m4: i want to keep things 100% static because i think making server stuff will just complicate things even further
#
WinnerWind im not very experienced with making python servers and i fear that if i did that i could accidentally introduce a vulnerability onto my site
#
WinnerWind + this gives me the freedom of ogoing back to github pages if my website ever sinks ship
#
[pcarrier] plenty of hosting options for static sites (including the one I operate :))
#
WinnerWind indeed! besides keeping it static means that i can keep my site up for muuuuucccccchhhhh longer
#
WinnerWind i think ill make a compromise: a semi-automatic filebrowser. i define what files are there and inw hat order they're displayed and how they're displayed but the SSG will do the rendering for me
#
WinnerWind this lets me, say, club up multiple folders into one area
ZodiacalComet joined the channel
#
ZodiacalComet what is the filebrowser for, exactly? To list the assets?
#
WinnerWind ZodiacalComet: not exactly, it'll show all the available files that can be read/viewed
#
WinnerWind so that includes blogposts and things
#
WinnerWind but i think doing it fully automatically would mean having to teach the filebrowser what is "content" and what isn't "content" (in my SSG what is and isnt content is very very very loosely defined)
#
WinnerWind it all goes into one directory so i didnt bother defining what content meant
#
ZodiacalComet ah, a complete view of everything. And yeah, that lack of distinction sounds like a problem.
#
WinnerWind it is, so I'm just going to make it semi automatic (define what files to show and how to show them)
#
WinnerWind besides the current loop is way too rigid. even if i stuffed a third transformer step (which would be.... messy....) it wouldn't be very nice
#
ZodiacalComet defining the files made me think of gitignore style and include/exclude listings
#
ZodiacalComet "Let's stick this in here. No, it's not a good place but there is nowhere else it can be right now"
#
WinnerWind i actually really like that idea. In my head i was thinking of manually typing out each file using a template of sorts. something like
{{FILENAME}}proofreed joined the channel
#
WinnerWind this way the user can choose the layouting as well
#
WinnerWind even if its kind of tedious
#
ZodiacalComet Happy to help!
#
WinnerWind thanks! though i dont think you can help with the code (its spaghetti, even by my standards)
#
WinnerWind im only now introducing classes into this hot mess
#
WinnerWind im 80 commits in mind you
#
WinnerWind ironically introducing classes is making it faster? using the old dictionary style generation finished in about 600ms but now with classes it finishes in 370ms
#
ZodiacalComet No problem, it happens to me too when I just start. Making the first commit proper its actually something that is difficult for me because of not having direction
#
ZodiacalComet Huh, interesting tibit there
#
WinnerWind The first commit is the easiest for me, haha. by the time i get to the 50th i go "oh god what am i doing?"
#
ZodiacalComet "Who is the one that made this? Or right, it was me. The only one in the project."
#
WinnerWind thats how i feel about half my projects
#
chr0m4 WinnerWind: isn't it worse to use git for this? you're dealing with tokens and not owning the pipeline of the data
#
WinnerWind im using git for version control, not for the site generation itself
#
chr0m4 you're using git as a backend basically
CRISPR joined the channel
#
WinnerWind im not sure how? im using git just to maintain the code, the site generation is all in python
#
chr0m4 I mean, what I understood its that you want to create a filebrowser, where does this filebrowser lives? maybe I'm misunderstanding the concept, whats the flow?
#
WinnerWind oh, the filebrowser is just another HTML file that is spit into the output directory
#
chr0m4 Ah ok, now I get you
#
chr0m4 my SSG is just obsidian built by jekyll so content tagging isn't an issue
#
ZodiacalComet Something like this https://zodiacalcomet.gitlab.io/assets/ , but WinnerWind wants to apply it to every accessible resource. So differencing what should and should not end in there is the problem
#
WinnerWind my static site allows for plugins to "manifest" their own files which COULD be part of the included set of files. That's useful for stuff like adding CSS files and stuff. it also allows for plugins to remove files which shouldn't be part of the finished build
#
WinnerWind ZodiacalComet: oh yeah, kind of, but i did kind of want to filter for useful resources only, so i guess a manual approach makes most sense. other SSGs have a defined folder which shouldn't be scanned but mine doesn't because of how freestyle it is
#
ZodiacalComet np
#
WinnerWind this ssg is very freestyle and a part of me wonders whether i should keep it that way or make the flow a bit rigid. the benefit of this is that any plugin can do anything including deciding "this static site will have NOTHING!" (in one line too)
#
ZodiacalComet or a plugin to generate multiple pages from a single file, cool
#
ZodiacalComet *an entire site
#
WinnerWind yup! you can do that as well :)
#
chr0m4 what about appending something to the filename?
#
chr0m4 like a suffix?
#
WinnerWind chr0m4: then that would appear in the output HTML files unless another plugin jumps in and renames it
jjuran joined the channel
#
chr0m4 yep, you need a step
#
chr0m4 what template language are you using?
#
WinnerWind Jinja for the HTML but there's a few steps before that
#
chr0m4 in liqudi you would just do | replace "suffix", ""
#
chr0m4 I'm unfamiliar with jinja
#
WinnerWind no i meant as in the URL. the URL would include said suffix
#
chr0m4 ah
#
chr0m4 what web server are you using for serving the files?
#
chr0m4 what about url rewrites?
#
chr0m4 or there's no server at all, no nginx no anything?
#
WinnerWind oh ill be using NGINX for this but ideally i wouldnt like to use a rewrite ^_^other thantry_files` so that there isn't a .html after everything
#
WinnerWind but for testing im using a basic python server
#
chr0m4 I would go with suffix and generating the rewrites block automatically with a plugin, what's your current solution to this?
#
WinnerWind my current solution is to make the filebrowser thing semi automatic. i dont need to display every single file, so it should be fine
#
WinnerWind this lets me control what images are shown as well
#
WinnerWind but thanks for the solution! i feel like in the future i might go with the rewrites thing
cotsuka, CRISPR, ttybitnik, ax562 and [rose] joined the channel
#
[capjamesg] Exciting!!
#
[capjamesg] Oooh looks good!
#
[capjamesg] Yeah. Part of technical writing is deciding what is relevant and what is necessary to include in a given guide.
#
[capjamesg] Exactly!
[rose], aaronpk and ZodiacalComet joined the channel
#
ZodiacalComet cheers! [rose]++
#
chr0m4 That's genuinely useful, specially for me that im very close to buy a homelab!
#
chr0m4 [rose]++
#
girlonthemoon [Rose]: i am superrr passionate about shell scripts for these use cases; your project looks great!
#
chr0m4 Bash is really tough to code, I did something completely unrelated once for one of my hobbies (I usually repair old cassette decks and I like to record modern music in cassette) but the music needs to be processed in order to be correctly recorded since modern music is deep into the loud wars
#
chr0m4 So i created this bash software to automate it: https://codeberg.org/devcarlosmolero/mxtp
#
chr0m4 For me it's hard to deal with the different versions/syntax
cotsuka joined the channel
#
chr0m4 I mean supporting older bash versions is a pain, either you use old syntax to make it compatible with everything but accepting that the code will be less elegant or you won't have some functionalities or you force everyone to use the same version
#
chr0m4 I opted for the latter in the end 😄
#
[rose] as an example of some of my laziness scripts... On my computer, there is "copy-from-vps" and "copy-to-vps" because I always get something wrong if I'm not careful... A manual intercolo-prone.sh script - basically to make my server-side backups to intercolo (an S3-compatible storage provider) immutable by the server, so it's not lost if I get hacked, that one has only write capabilities. So pruning is done from my PC instead. 😄 And sitemap -
#
chr0m4 girlonthemoon: I had a stroll through your website and found the videos part, I'm a diehard fan of retro aesthetic and the videos look exactly how I like for that matter, what equipment are you using to record?
#
girlonthemoon chr0m4: oh thank you so much! i'm pretty sure you're referring to the camcorder videos lol, it's a sony handycam DCR-DVD650! i got it for christmas a few years ago
#
chr0m4 Wow, they look really good, I always tell my wife that I would love to get more pictures together with that quality because that way I feel less pressured to look good xDD
#
chr0m4 I do photography sometimes, and I have to edit the pictures a lot to get a look like that: https://i.postimg.cc/t4JjprV7/IMG-6754.jpg
#
girlonthemoon yeah the quality is pretty great! i've recorded to MMC and DVD, comes out the same
#
girlonthemoon oh that is beautiful
#
chr0m4 That's around 직지사 temple in Korea, 5 minutes away from where I live
#
[rose] Just continuing the list of bash scripts in case it inspires anyone... The server has a much longer list. Restic backup script is the most important one perhaps, plus the cold copy script to copy the restic backup to intercolo via rsync (needed for immutable state). Plus some bulk update scripts for nextcloud, docker containers, wordpress. Minification. Generation of brotli files for the current folder and below. Matomo log importer. Restic
#
[rose] mounter and unmounter for most recent and oldest. And a few switchers for services I only keep on temporarily - along with closing the corresponding ports. Sharing all those for inspiration (and can share scripts if they are of use to others). It's all cos I hate having to look up commands each time!
#
girlonthemoon [Rose]: do you have these scripts in a git repo by any chance? i'd love to read them
#
girlonthemoon hahahah i get you
#
girlonthemoon oh i haven't been here in a while i was wondering where the bot was lol
#
chr0m4 having to write a readme is the hardest part haha
#
girlonthemoon [Rose]: just a bunch of random stuff :P they're mostly for fun
#
girlonthemoon chr0m4: so true
#
girlonthemoon lol i don't think that one's necessary anymore, iirc discord has an apt repository now, but i got so fed up with manual downloads lol
#
girlonthemoon aliases are the best
#
ZodiacalComet aliases 4 the win
#
[rose] alias traggo='ssh cloudword "sudo python3 /srv/traggo/exporter_v3.py"'
grufwub joined the channel
#
girlonthemoon i have an alias called `unfuckwifi` that just restarts networkmanager lol
#
[capjamesg] Haha
#
chr0m4 girlonthemoon: so common, I miss linux
#
chr0m4 [rose]: don't get me started with audio on linux in general xD
#
[capjamesg] I have one called `dnsrefresh` that I use to refresh the DNS cache on my Mac.
#
[capjamesg] I do DNS-level blocking and so if I for some reason want to access a site I have blocked (i.e. Instagram) I make a rule change, use the command to refresh the cache, read the page I want, and then undo the rule change.
#
[capjamesg] Yeah it’s clunky but it works 😂
#
chr0m4 any machine you would recommend to run these services + a small mastodon instance (me, wife and a friend) at home: https://postimg.cc/VJ3KwfT2
#
chr0m4 the apis and stuffs I do are written in Go or Rust, the biggest offender would be Mastodon
#
chr0m4 [rose]: yep, most of them are nginx reverse proxies with something running at the other side, between all of them they don't reach 2gb of RAM memory, almost no CPU usage or disk storage
cotsuka joined the channel
#
girlonthemoon chr0m4: i don't have a recommendation besides that self hosting mastodon is painful lol
#
girlonthemoon it's so resource heavy that i will recommend literally anything else in its place (but usually gotosocial)
#
chr0m4 the issue is mastodon, the machine will be connected through ethernet and i have a very good stable connection (it's korea ha)
#
chr0m4 I'm currently using masto.host
#
girlonthemoon ohhh ok
#
girlonthemoon interesting
#
chr0m4 but, man, its 20 bucks a month, in 2 years I would have saved for a machine
#
chr0m4 uhmm I thought NUC was discontinuecdx
#
chr0m4 discontinued*
#
chr0m4 I will have a look, I'm trying to avoid amazon
#
[rose] I got my husband an Asus NUC just before the RAM crisis hit with a view to using it as an always-on Pi-equivalent to host stuff while he uses it for surfing and everything else he does on a computer, but then realised it was more practical to just use a rented VPS for everything. Apart from uptime monitoring, obviously, but I already had the Pi 2 😄
CRISPR joined the channel
#
chr0m4 Then, you found rented VPS more practical in the end? What made you come to that conclusion, bandwidth like you said?
#
chr0m4 Or just monitoring/reliability?

#
girlonthemoon hell yeah authelia
#
ZodiacalComet girlonthemoon++ for the peak alias name
#
girlonthemoon lmao thank you
#
chr0m4 https://i.postimg.cc/3xNzGdBs/image.png damn, I run nothing compared to you
#
chr0m4 client projects in my vps was a no-no
#
girlonthemoon i have so many docker containers across my 3 home servers that i lost count
#
girlonthemoon i'm not even joking, my uptime page doesn't even cover everything i host lol
#
girlonthemoon i'm a caddy warrior, i run it bare metal
#
chr0m4 someone was recommending caddy the other day if i want "one-click installs" of my VPS stuff
#
chr0m4 in case I want to migrate
#
girlonthemoon iirc my caddyfile is about 600 lines long
#
girlonthemoon chr0m4: highly recommend caddy, it makes getting stuff online so easy but secure at the same time
#
chr0m4 caddy is infrastructure as code as far as I know
#
chr0m4 and also a web server
#
chr0m4 nginx is only a web server
#
girlonthemoon i wouldn't call it infrastructure as code
#
chr0m4 well, fancy term yes, but you can define a template for all your services kind of
#
girlonthemoon to me the benefit is a simpler/easier to pick up config file + automatic HTTPS
#
ZodiacalComet And that it is a single binary that you can pick up and run
#
chr0m4 I don't know, I know it might be unreliable but after the whole AI thing I don't want even to have my stuff in a VPS, now everything is training data to create horrors beyond my imagination
#
ZodiacalComet Ooh
CRISPR joined the channel
#
chr0m4 [rose]: nginx is so, so efficient, thats right
#
chr0m4 Got into the crowdsec website "AI driven threat detection" no thanks, my anti AI stance is so strong
#
chr0m4 I cannot use their stuff
#
chr0m4 I use AI, don't get me wrong, 3b and 7b fine tuned models trained on my repos and with baseline data which was given under consent
#
chr0m4 but yeah, the whole industry is going to hell with this stupidity
#
chr0m4 ah I see, I use cloudflare built-in bot detection for that
#
chr0m4 fail2ban is connected to cloudflare
#
chr0m4 what are your thoughts on that?
#
chr0m4 oh
#
chr0m4 CCBot
#
chr0m4 why?
#
chr0m4 i see
#
chr0m4 yes, I should go all in with european companies, I've been going that direction for long
#
chr0m4 yep, let's certificate, DNS registries etc, same use case, but on top of that I connected fail2ban to them and use their ai bot protection. Might change to crowdsec thanks for the suggestion
#
chr0m4 Yep, but I appreaciate the explanation! Thanks
#
chr0m4 Btw, I connected with you on LinkedIn/Mastodon, hope is all right
#
chr0m4 We share common anti AI connections on LinkedIn xD
#
chr0m4 nah nah, it's always better to explain, we don't know who are we dealing with so it's better to accompany everything with an explanation, especially when it comes to security
#
chr0m4 But yeah, the moment i pay my house I'm done with companies, I want to go back to have clients. Companies are sucking the life from me
#
chr0m4 My wife discovers a new white hair everyday xD and I'm not that old
#
[rose] I saw your post about translation plugins etc. for SSGs... Now I have to ask - I saw it was gonna be included in the header, as JS? Asking cos that can cause major issues, if a site's content and language is changed via JS. Or is that for the generation stage? I only really got to grips with Hugo...
#
[rose] I made a sustainable translation plugin for WordPress and really need to do more testing and monetise it, tbh. Cos the normal systems for WP are just so ridiculously inefficient. For my static sites, I've generally used JSONs for anything a bit more dynamic or liable to change, and would probably do similar. But then I discovered I was kind of re-inventing Hugo.
#
chr0m4 is client-side, I don't like the idea of cumbersome solutions for translations. The post is unfinished I will address all the issues when I finish it: screen readers, layout shift etc... What I don't like is the idea of dealing with url prefixes and such. I don't do SEO so my translation runs at runtime
#
chr0m4 is you're doing SEO absolutely, go SSG (with a plugin or similar) or SSR
#
chr0m4 for me, it's just not important for THAT specific website
#
chr0m4 i would say for SEO only, accessibility can be managed clientside, you can get the right info to screen readers even if the initial HTML is in another language
#
chr0m4 that post, truth be said, is for a lot of neocities people that are starting out and doesn't even have a site generator setup
#
chr0m4 i have 2-3 friends that are getting started with html/css/js, I want to onboard them a bit on translation without droppin jekyll/elevently hugo or whatnot
#
[rose] I decided to use it to make a brand hub template... Sort of a work in progress. But yeah, it's wonderfully efficient for that purpose! See: https://brand.timwritesgerman.com
#
[capjamesg] Oooh that page looks great!
#
[capjamesg] I love the buttons on the colour page.
#
chr0m4 for me it's just that, if you're not doing SEO, and even doing SEO most people won't translate their posts to 2-3 locales, what's the point aside from keyword mining?
#
chr0m4 just the name and ++
#
chr0m4 well done haha
#
chr0m4 at some point, when I go back to freelancing I will probably selfhost wordpress for my another domain: carlosmolero.com and set a minimal portfolio
#
chr0m4 but to be honest I want to dropout from engineering
#
chr0m4 yeah, absolutely
#
chr0m4 theres a difference between: I want to be able to read this page in another language and I want to position this page in another language because is part of a business strategy
#
chr0m4 is broken
#
chr0m4 doesnt lead anywhere
#
chr0m4 there's nothing, I just have the domain haha
#
ZodiacalComet [rose] fyi the karma thing only works at the start or end of a message, I also tripped on that before
#
chr0m4 jekyll does the exact same, most setups for translations involve duplication, modifying the project folder structure etc...
#
chr0m4 you end up with a lot of files just to sustain the translation engine
#
chr0m4 like everything in engineering, it's a trade-off, worth if it's ok with your use case
#
chr0m4 if you're not aiming with that is just... complexity
#
chr0m4 for*
#
chr0m4 what happens with my english today omg
#
chr0m4 it's an option, I never used hugo
#
chr0m4 my first is spanish, then english, then korean
#
chr0m4 and korean is breaking the other 2
#
chr0m4 for me, the issue is how they talk
#
chr0m4 they don't say: "this is delicious" o "esto esta riquisimo" which follow a very similar structure
#
chr0m4 they say "there's taste"
#
chr0m4 so that way of thinking gets into you slowly and fucks up any other western language you know
#
chr0m4 it's... interesting to self-reflect about it
#
chr0m4 anyhow I'm gonna get going, tomorrow I have an amazing interview with the tutor of my 3 years old daughter to discuss racism
#
chr0m4 Same, Rose, it was a pleasure to chat with you!
#
chr0m4 [rose]: yeah, mixed kids get and gives some shit to other kids at school
#
chr0m4 wasn't ready for this xD
#
ZodiacalComet chr0m4 gl!
#
[capjamesg] [Rose] Encouragement is definitely a big part of the indie web community!
#
[capjamesg] Making web pages is hard and so people definitely deserve kudos when they make something!
cotsuka joined the channel
ance, CRISPR, cotsuka and barnaby joined the channel
