Salta al contenuto principale



Sweden, Sex Work, Screens: The Criminalisation of Online Sex Work and Article 8 of the ECHR


Sweden has quietly taken a radical step: it is now illegal to purchase online sexual acts. This move advances Sweden’s long-standing “end demand” policy model for tackling sexual services from the physical realm, into the digital. Yet it seems to overlook the significant differences between the two spheres – in terms of behaviour models, profiles, and market dynamics – and how such differences may be taken into account when determining the persuasiveness of the law’s rationale. This becomes especially clear when measured against the protections enshrined under Article 8 of the European Convention on Human Rights (ECHR) and recent Strasbourg case law.

While the criminalisation of the purchase of in-person sexual services has been judged to be compatible with Article 8, the underlying reasoning rests on factors that do not translate to the online sphere: combatting prostitution and human trafficking, a lack of consensus on sex work policy across Europe, and an inability to parse the harms caused by the law from the harms caused by sex work itself. Sweden’s extension of its “end demand” policy into digital sex work thus risks overstepping the boundaries of Article 8 of the ECHR and reveals how laws that are directly transplanted from the offline to the online sphere without due thought may lead to the erosion of private digital rights.



Lavrov Issues Strong Warning Against Goading Ukraine Into Acts of Terrorism






in reply to icegladiator

You would have better luck figuring out the chemical composition of the material then tracking all sales of said material. Still would be next to impossible but that's a more likely means of identifying someone than the printer itself.
in reply to icegladiator

Use a different print head, sections of print bed, or just entirely new print beds and you defeat this 'tracing'


US withdraws from UNESCO over ‘anti-Israel bias’


in reply to daydrinkingchickadee

USA: Humanism and mercy are fine, but don’t use them too much, or for every group
in reply to daydrinkingchickadee

I look forward to the day that we can put our politicians on trial for supporting, enabling, and committing genocide .


How can I share/store sensitive data for family


I need to start making plans for when I am gone, much sooner than I thought, and I realized our finances are pretty opaque to my spouse. Our bank account is shared, but there are other sites that only I have access to.

The easiest solution would be to physically write down logins and what needs done, put it in an envelope, and tell my family where that envelope is. I'm not thrilled about that, because I would have to shred and rewrite it every time I update a password or a URL changes, and it'd be vulnerable to nosy guests.

Putting it in a shared Google Doc would be easiest for everyone. But then Google has that data. Even supposing I trust a cloud SaaS provider not to misuse the data (which is a big 'if') I do not trust them to never have a data breach.

Self-hosting seems like the next step, except I expect my home server to be the first thing to collapse once I'm gone. Filing login info with an estate attorney would still require frequent updates. Putting a document on a flash drive risks data loss, but is what I'm leaning towards.

Is there a solution I'm missing?

in reply to adhocfungus

I use Vaultwarden with two user accounts but with an "organization" that contains passwords that we both might need access to at some point. They then get updated at the same time the password is updated since it's where I store all passwords.
in reply to adhocfungus

I would use Keepass. You would have a single file, opened with a single password, that you could share with them however you want.

Wishing you the best

adhocfungus doesn't like this.


in reply to vermaterc

I quit my job in public accounting for many reasons, but the primary one was the forceful adoption of LLMs to replace associates.

I told the dimwits at the top that it was a mistake, because LLMs are incompetent even when the information fed to it was perfect, and that was rarely the case in practice.

Our ultra wealthy clients were notorious for giving us the most incomplete and asinine information, and it often took someone with decades of experience to decipher what the fuck their personal assistants are even talking about.

They went ahead anyway because of the high cost of wages, of course, and I made my exit because I did not wish to be complicit in such a monumental mistake.

Lmfao the LLM they laid associates off and paid half a million dollars for made up fake ledger accounts when accounts didn't reconcile, and none of the dumbasses left noticed in time because they hadn't done associate-level work in decades.

It also lied all the time, even when you asked it not to.

The damage was done and the biggest clients started leaving, so they begged us all to come back but I got obsessed with baking bread and I ain't about to neglect my sourdough starters to help a group of people who would lose a battle of wits against yeast.

reshared this





UN Statements Undercut New Israeli Report on 10/7 Sexual Violence


Major news organizations, most prominently the New York Times, have promoted the idea of systematic sexual violence at opportune moments to justify Israel’s ongoing genocide in Gaza. The first major salacious headlines and assertions emerged in late 2023, when Israel was campaigning to restart its killing during a brief ceasefire. The latest effort to revive this narrative follows the same pattern as its predecessors—and, indeed, is more overtly political, with the report spending less airtime on the well-being of women than on reasons we should roll back what is left of international law.

The UN, however, has stated multiple times that it does not have evidence of systematic sexual abuse by Hamas or any other militant group on October 7, 2023. A top United Nations official issued a statement last week that stands in direct contradiction to the new Israeli report.

Reem Alsalem, the UN Special Rapporteur on violence against women and girls, affirmed in her statement this week that though the UN had not found “systematic” sexual violence: "It is my understanding that neither the Commission nor any other independent human rights mechanism established that sexual or gender-based violence was committed against Israelis on or since the 7th of October as a systematic tool of war or as a tool of genocide," Alsalem wrote in the statement, first reported by NBC News.

In a move that is highly unusual, the Dinah Project report is now hosted on the UN’s website among its own reports on sexual violence and global conflict. Drop Site News asked Patten why she was hosting the report, but she did not respond. The UN fact-finding mission led by Patten and so dearly held by the Dinah Project, at times, directly contradicts what the Dinah Project argues.



basically every Jubilee video - Man Carrying Thing



in reply to LihmaLähmäLehmä

Probably part of their plan to get rid of ad blockers for good.
Questa voce è stata modificata (1 mese fa)
in reply to LihmaLähmäLehmä

It looks a lot like their smart TV interface which has always been less functional than their web or mobile app interface. They're probably trying to cut the UI down to just the bare minimum that the majority of casual users regularly use. In part I'd assume to reduce the maintenance overhead, but I'm sure it likely will also make things harder for ad blockers.

in reply to geneva_convenience

So if a Black person votes for something, all who vote for it are Black?
in reply to miss_demeanour

AOC says that progressives (including those who voted for the amendment) are welcoming Neo Nazis this is very clear cut.
Questa voce è stata modificata (1 mese fa)


KI-Tool ver­steckt Inkompetenz


Ein Vibe-Coder schreibt ohne es zu mer­ken auf X, wie kaputt Vibe-Coding ist: Ein Sta­­ging-Sys­­tem greift direkt auf die Pro­duk­ti­ons­da­ten­bank zu. Kei­ne Ver­si­ons­kon­trol­le mit Git. Tests funk­tio­nie­ren laut den Posts nur auf dem Pro­duk­ti­ons­sys­tem. Und der Höhe­punkt: Ein KI-Tool warnt expli­zit „I can not be trus­ted, I will vio­la­te the rules“ und „hire human deve­lo­pers you can trust“ – trotz­dem ver­wen­det der Typ das Tool weiter.

Da hab ich schon Mei­nung zu.

jascha.wtf/ki-tool-versteckt-i…

#Claude #Inkompetenz #KITools #MonsterEnergy #Softwareentwicklung #VibeCoding

Questa voce è stata modificata (1 mese fa)


Larry Johnson: West Doubles Down on Failed Wars in Ukraine & Middle East


Larry Johnson is a former intelligence analyst at the CIA, who also worked at the US State Department's Office of Counterterrorism. Johnson discusses why the West is doubling down on the failed wars in Ukraine and the Middle East


Larry Johnson: West Doubles Down on Failed Wars in Ukraine & Middle East


Larry Johnson is a former intelligence analyst at the CIA, who also worked at the US State Department's Office of Counterterrorism. Johnson discusses why the West is doubling down on the failed wars in Ukraine and the Middle East


ChatGPT advises women to ask for lower salaries, study finds


in reply to chobeat

AI chatbots may reinforce real-world discrimination


You mean, something trained on real world data, reflects the biases of that data!



Quanto costa un funerale oggi in Italia?


Organizzare un funerale in Italia può costare da 1.800 a oltre 6.000 euro. Scopri cosa è obbligatorio, cosa no e quali aiuti economici esistono.
#News


ChatGPT advises women to ask for lower salaries, study finds


reshared this

in reply to chobeat

Everything going extremely wrong with these guys: chatgpt, grok, gemini, etc etc.
in reply to chobeat

Chatgpt can also be convinced that unicorns exist and help you plan a trip to Fae to hunt them with magic crossbows

Not that......



ChatGPT advises women to ask for lower salaries, study finds


reshared this

in reply to chobeat

women who ask chatgtp for financial advice should make less money.
in reply to Alsjemenou

You mean *people. Even though I might not agree. ChatGPT is better at financial advice than alot of people. Just dont ask it how to become rich. Because you cant.
in reply to themurphy

What if I kill a rich and wear its skin like a suit ?
How do I get its family to accept me as their ruler ?
Questa voce è stata modificata (1 mese fa)
in reply to interdimensionalmeme

Keep paying for their expenses. It's why they like you to begin with.
in reply to chobeat

And the study should also mention, that the LLMs don't do anything by themselves, they do what they are trained to do... noting more. They are just machines.


more questions about yt-dlp arguments on debian (excluding av1, aborting an active download not shutting the terminal down)


debian 12.11, yt-dlp stable@2025.07.21

aim: to download the best video available with the largest height but no better than 1080p, excluding av1 as well.

What works:

yt-dlp -f bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] -S height:1080 --all-subs


but this command downloads, if possible, av1, which target hardware doesn't support for longer than 5 minutes.

Argument I don't know to add correctly:

[vcodec!*=av01]


I tried:

yt-dlp -f bv[ext=mp4]+ba[ext=m4a]/b[ext=mp4][vcodec!=av01] -S height:1080 --all-subs


and other variations, but it didn't work.

second question, aborting an active download not shutting the terminal down: neither ctrl+c nor ctrl+q work and opening htop to kill the process seems overkill. What I now do is to simply shut the active tab, but there must be a faster way.

Questa voce è stata modificata (1 mese fa)
in reply to merompetehla

second question, aborting an active download not shutting the terminal down: neither ctrl+z nor ctrl+q work and opening htop to kill the process seems overkill. What I now do is to simply shut the active tab, but there must be a faster way.


Ctrl+C.

in reply to kungen

neither ctrl+z nor ctrl+q work


Ctrl + z will send the task to the background. You can use jobs to see all active background work. Fg will bring background work to the foreground. Ctrl + q is not a valid shortcut as far as I know. Looks a bit like a mac thing (command + q).

Questa voce è stata modificata (1 mese fa)
in reply to FrostyPolicy

It's been a while, but ^S suspends output to the terminal and ^Q resumes, I think. I don't know if it's really supported in the modern era.
in reply to kungen

thank you for pointing that out, corrected.

what happens on my computer: on a terminal, I press ctrl+c but the process keeps working, yt-dlp keeps downloading. As said, the only way to stop it is to shut the tab down (or htop and kill)


in reply to Lyra

Purtroppo me l'hanno regalato, quindi l'autore è stato pagato e non posso fare resi

16.50€ per questa porcheria!

All'interno altre gemme "ai slop" come fette di banana con il picciolo, petti di pollo con ossa, forchette dai denti storti, ecc

Questa voce è stata modificata (1 mese fa)
in reply to Moonrise2473

puoi usarlo come ferma porte o come sottobicchiere 🙂

L’angolo del lettore reshared this.




Ofcom (British Watchdog): Public service TV should work 'urgently' with YouTube.


Ofcom warns traditional public-service TV is endangered
Recommendation for prominence on third-party platforms part of six-point action plan
Urgent clarity needed from Government on how TV will be distributed to reach audiences in future
Broadcasters must work more together, and with global tech firms, to survive

Urgent steps must be taken to ensure that public service media content is easy to find and discover on third-party platforms, under new Ofcom recommendations to secure the system’s survival.

https://www.ofcom.org.uk/tv-radio-and-on-demand/public-service-broadcasting/public-service-content-should-be-findable-on-youtube

Questa voce è stata modificata (1 mese fa)

in reply to Davriellelouna

If openai can find a use for the government that'll be swell.

They tend to get it under everybody's feet otherwise.

Questa voce è stata modificata (1 mese fa)

in reply to Davriellelouna

Yeah. I have had a real issue with the kids smoking in my Metaverse based VR app. /s

in reply to sabreW4K3

But if you say that almost all adult Israelis are IDF militants, which is actually correct, everyone loses their mind.


British government to ban public bodies from paying ransoms to hackers


Questa voce è stata modificata (1 mese fa)

Technology reshared this.

in reply to Davriellelouna

Though this is a good idea it's kind of important to also work on the other side, you know, ensuring IT has enough resources to make backups and do their job so that this shit doesn't happen in the first place.

Ransomware mostly happens when your systems are badly protected

in reply to Davriellelouna

You know that they only are prepared to offer cyber security experts minimum wage.

I was literally looking at this yesterday, if they doubled what they are offering it would still be well short of an entry-level wage in the private sector. Up to a point you can get away with it and rely on "patriotism" to fill the difference but not to this extent.



Can you help me arrange these video formats from better to worst?


Tinkering with yt-dlp -F

I know av1 is even better than h.265, h.265 being better than h.264

However, I don’t know where to put vpP09, vp9 and avc1

Audio formats: what’s better? m4a or webm?

Questa voce è stata modificata (1 mese fa)
in reply to hendrik

Vorbis is deprecated in favour of Opus, which is the direct replacement and exceeds it in every metric.


Pirate Service 'MagisTV' Fails to Secure U.S. Trademark, Faces Malware Backlash


MagisTV, a leading pirate streaming brand in Latin America, finds itself caught between a legal storm and a mounting malware backlash. This week, the service saw its U.S. trademark application abandoned amidst growing scrutiny from authorities and rightsholders worldwide. At the same time, a barrage of local news reports warn consumers that using MagisTV's software could lead to identity theft and expose them to viruses.


Laura Santi è morta dopo aver avuto accesso al suicidio assistito, infine


Molto toccante anche la lettera lasciata da Laura Santi sul sito dell'associazione Luca Coscioni
#News


Combining TLS and MLS: An experiment


Technology reshared this.

in reply to cityroler

The QUIC plus MLS proposal sounds more interesting
in reply to iopq

QUIC+MLS could be super efficient since QUIC already handles connection migration and reduces handshake latency, while MLS would add the secure group messaging layer on top without duplicating crypto operations thats already handled by QUIC.

in reply to themachinestops

And Nintendo JP says that “Nintendo Switch and Nintendo Switch 2 cannot be remotely located, their users remotely identified nor disabled over the Internet” (tweet in Japanese warning people against accidentally losing or getting their consoles stolen over summer vacation)

twitter image

But I bet it is more like “Nintendo won’t disable them remotely even if people report ones stolen to them with serial numbers and police reports”, but they’ll happily do so if they caught you using the console in an unapproved manner in their eyes.

Questa voce è stata modificata (1 mese fa)
in reply to 1Fuji2Taka3Nasubi

This is by definition "we are just assholes"

Someone play for 5 minutes with a mig switch a legit dump of their own, legally purchased game, just for convenience, to have multiple games on the same cart? The console is now almost useless. You can't play any digital games that you purchased with real money, and physical games can't get any update. Game requires a 20gb day one patch to be playable? Though luck buddy, go to buy a new console!

They stole your console? Oh no! Yes, we absolutely could do the same, as it's bound to your Nintendo account and we could add a button "report as stolen and ban it from internet" in your profile. But we won't, go to buy a new console!

in reply to themachinestops

Guys hi, just looking for some support share, a Fantasy Adventure Story, for all ages and just some entertain with some storyes: - maybe you are curious (many was not very kind just for share a film), heartless with hatefull speach and respekt always


Nvidia's CUDA platform now supports RISC-V — support brings open source instruction set to AI platforms, joining x86 and Arm


At the 2025 RISC-V Summit in China, Nvidia announced that its CUDA software platform will be made compatible with the RISC-V instruction set architecture (ISA) on the CPU side of things. The news was confirmed during a presentation during a RISC-V event. This is a major step in enabling the RISC-V ISA-based CPUs in performance demanding applications.

The announcement makes it clear that RISC-V can now serve as the main processor for CUDA-based systems, a role traditionally filled by x86 or Arm cores. While nobody even barely expects RISC-V in hyperscale datacenters any time soon, RISC-V can be used on CUDA-enabled edge devices, such as Nvidia's Jetson modules. However, it looks like Nvidia does indeed expect RISC-V to be in the datacenter.

Technology reshared this.



MEGA launches new large file transfer service Transfer.it (without end-to-end encryption) as WeTransfer competitor with no file size limit.


For over a decade, MEGA has been the trusted choice for secure, encrypted file sharing. But not every file transfer needs end-to-end encryption. Sometimes, simplicity and speed matter more, especially when dealing with large files or recipients unfamiliar with the limitations around their browsers having to decrypt their downloads.

That’s why we created Transfer.it, a new service from MEGA designed for effortless file transfers, without end-to-end encryption.

Questa voce è stata modificata (1 mese fa)


Google removes nearly 11,000 YouTube propaganda channels linked to China, Russia in global disinformation purge.


Questa voce è stata modificata (1 mese fa)


Lyle Lovett - Release Me (2012)


La sorte toccata da tempo ad altri colleghi è giunta anche per Lyle Lovett: il musicista texano scioglie il quasi trentennale rapporto con il colosso country della Curb records (seppure in anni recenti passato per le maglie della Lost Highway) per affrontare una inevitabile indipendenza... Leggi e ascolta...


Lyle Lovett - Release Me (2012)


immagine

La sorte toccata da tempo ad altri colleghi è giunta anche per Lyle Lovett: il musicista texano scioglie il quasi trentennale rapporto con il colosso country della Curb records (seppure in anni recenti passato per le maglie della Lost Highway) per affrontare una inevitabile indipendenza. Questione già affrontata e d'altronde dirimente in quest'epoca: come John Hiatt, Steve Earle e altri campioni dell'Americana il ruolo di Lovett non è più quello di capofila, né evidentemente le vendite e l'appeal dell'artista possono convincere un baraccone discografico a mantenere in piedi contratti che nella loro logica non fruttano i risultati di un tempo... rootshighway.it/recensioni/lov…


Ascolta: album.link/i/507810558


HomeIdentità DigitaleSono su: Mastodon.uno - Pixelfed - Feddit




A Self-hosted, BSD-native Gemini Protocol Server Stack


For those who are adventurous enough to explore the non-http corners of the Internet, the Gemini protocol is a delightful experience to use. It has been around a number of years, making the biggest bang around the time when discontent with the web’s gener

For those who are adventurous enough to explore the non-http corners of the Internet, the Gemini protocol is a delightful experience to use. It has been around a number of years, making the biggest bang around the time when discontent with the web’s general demise started to reach current heights (so maybe around 2022).

My “capsule”, Vigilia, is self-hosted, and has been since its inception. It used to run on a disused Macbook Pro running Fedora Server, under our TV at home, but since then I have become much more confident in using OpenBSD. It used to run on a little Python CGI script I wrote, which also started to feel too bloated and complex, with too many bells and whistles that I frankly had no need for. It was time to make a change, so I replaced the old Macbook with a Raspberry Pi, and Fedora with OpenBSD, and then took my time to figure out a new “status quo”.

0. Philosophy


I wished to create a more Unix-minded stack. The more I have been using OpenBSD and Unix systems the more I have been sold on the “everything is a file” philosophy, as well as opting to use internal tools as much as possible rather than reinvent the wheel on my own. That is to say, I’d much rather work with simple scripts and shell commands than write complicated and buggy code.

So with that in mind, here’s the stack that I settled on after a some trial and error:

1. Hardware


I have absolutely no intention to expose our home IP address via DynDNS or similar. However, I like to be in control of my data as much as possible: ideally as little of my data should be hosted on “someone else’s computer”. If I can’t unplug the hard disk and put it in a drawer, I can’t guarantee it’s security from a hack.

So Vigilia is actually two servers. The server with the actual data is at home, in running on a Raspberry Pi 4B. But as a “public front” vigilia runs a reverse-proxying gemini server on a standard VPS over at OpenBSD.amsterdam.

2. Network setup


I will not go into the intricacies of the dual-wan setup in this post I have at home; but to keep things connected to each other I am using Tailscale to tie the servers together in a Virtual LAN. This is incredibly handy because they get to have easy to remember static IP addresses, all over an encrypted channel.

So here’s the rough idea:

  • Vigilia.cc’s DNS records resolve to the OpenBSD.Amsterdam VPS running gmid
  • VPS and home server both run tailscale
  • VPS reverse-proxies incoming gemini connections to home server


3. Gemini server config


Both the VPS and the local server run [url=https://gmid.omarpolo.com]gmid[/url]. It’s a fast and simple gemini server that mirrors OpenBSD’s httpd; which means it is very easy to configure, it is stable and secure. It can run in chrooted environments, and as its own user, so it’s just a Good Thing all over. Most importantly, it can relay and reverse-proxy TCP connections with sni fields intact, which is something for example OpenBSD’s relayd, built primarily for HTTP, does not do.

My gmid config files look something like this:
### REMOTE_SERVER:/etc/gmid.conf#user "_gmid" # running it as its own user to achieve privilege separationchroot "/var/gemini" # and in a chroot so it can't just access random bits of the file systemlog { syslog # log to /var/log/messages}vigilia_pem = "/etc/ssl/PUBLICKEY.pem"vigilia_key = "/etc/ssl/private/PRIVATEKEY.key"public_ip = "46.23.93.41" # OpenBSD Amsterdam VPS' public addresshomeserver = "100.REDACTED.REDACTED.101" # TailScale IP of the home machine public_port = "1965"homeserver_port = "2965"server "vigilia.cc" { listen on $public_ip port $public_port cert $vigilia_pem key $vigilia_key proxy { proxy-v1 # this directive enables some advanced features like forwarding IP Addresses of visitors verifyname off # I found I need to specify this somehow, maybe because of self-signed certs sni "vigilia.cc" relay-to $homeserver $homeserver_port }}
This above allows to listen for connections to vigilia.cc:1965 and forward them to HOME_SERVER:2965. So thus the homeserver has the following configuration:
### HOME_SERVER:/etc/gmid.conf#user "_gmid" chroot "/var/gemini" log { syslog }internal_address = "100.REDACTED.REDACTED.101" # TailScale IP of the home machine internal_port = "2965"# The below are the same certificates that are in use on the VPSvigilia_pem = "/etc/ssl/PUBLICKEY.pem"vigilia_key = "/etc/ssl/private/PRIVATEKEY.key"server "vigilia.cc" { listen on $internal_address port $internal_port proxy-v1 # add proxy-v1 support for relayed connections cert $vigilia_pem key $vigilia_key log on location "*" { auto index on # enables directory listing }}

4. Getting the files to the Server


Because I am lazy I want to edit files locally and I want them to magically appear on my capsule. So I am using [url=https://syncthing.net/]syncthing[/url] to copy things over automagically from DESKTOP:~/public_gemini to HOME_SERVER:/var/gemini.

Syncthing runs most reliably as my own user, I found. To do this it is best to follow the documentation for the Syncthing OpenBSD package — but basically it involves starting it via the user’s crontab with the “@reboot” directive. But as it runs as my own user, I need to set the permissions properly. HOME_SERVER:/var/gemini is owned by the _gmid user in the _gmid group so I also added MYUSER on both machines to the same _gmid group, and made sure MYUSER has write access:
#!/bin/sh# HOME_SERVERusermod -G _gmid MUYSERchown -r _gmid /var/geminichmod -r ug=rwx,o=r /var/gemini
Then I set up syncthing on HOME_SERVER. As it is running headless, I needed to access the web interface, which I achieved via SSH tunneling:
$ ssh -L 9999:localhost:8384 HOME_SERVER
This way I could open a browser on DESKTOP and access the server’s Syncthing settings.

So here are the settings:

On the DESKTOP:

  • Syncthing web interface -> Add folder
  • Folder path: ~/public_gemini
  • Folder label: Gemini files (or something)
  • Ignore patterns: “*.sock” (Unix sockets might confuse the poor thing)
  • Sharing: HOME_SERVER
  • Pause syncing for now

On HOME_SERVER:

  • Establish ssh tunnel to HOME_SERVER as described above
  • Open remote Syncthing webinterface on DESKTOP: localhost:9999
  • Accept the incoming share request for “Gemini files” from DESKTOP; but point it to /var/gemini
  • Folder path: /var/gemini
  • Folder label Gemini files
  • Advanced: UNTICK “Wach for changes” because OpenBSD doesn’t seem to allow Syncthing to poke around in /var with those various Go modules and you’d just get errors, like I did
  • Check the Ignore patterns — if it didn’t synchronise “*.sock” then specify it manually

On DESKTOP:

  • Unpause syncing

Now any file you write into DESKTOP:~/public_gemini will sync across to HOME_SERVER:/var/gemini. Yay!

6. Setting up automatic static site generation


Now if you are content to maintain your capsule manually, you are done. As I said I am lazy so I want my little “ssg” script, Lumen, to create index pages for each directory for me. Lumen, I promise, will be made available once I tidy it up.

Lumen basically lists all files recursively and generates an index.gmi for each directory. This means that Lumen has to be re-run each time the folder changes. OpenBSD is acquiring some degree of file watching natively.1 However [url=https://openports.pl/path/sysutils/entr]entr[/url] already exists in ports.

It took a bit of tweaking but basically here’s the command I ended up using, adapted from one of the examples provided in the entr manpage:
$ while sleep 0.1; do find /var/gemini/vigilia.cc/* | entr -nd python3 /var/gemini/cgi/lumen.py -d /var/gemini/vigilia.cc; done
What it does is, in a loop it recursively lists all files every 0.1 seconds in /var/gemini/vigilia.cc, and feeds the output to entr. Then entr runs with -n to specify a non-interactive session (in interactive sessions it also responds to e.g. keystrokes and tty changes – so to be safe, I don’t want that); and with -d to specify it should be looking for changes in the parent folder of any changing files. The looping and the -d directive were added because sometimes I ran into issues when a file got deleted: entr just quit because it could not find the removed file in a “stale” file list it was provided on launch. Lumen needs a -d argument as well to specifiy which directory it needs to work on.

7. System config


Because there are a few other servers like “auld.vigilia.cc” also running on the home machine (the configs for wich aren’t reproduced above for brevity’s sake) and because those rely on a number of CGI scripts I have to start them on launch. I ended up using supervisord for these. Supervisor is a cool little daemon for launching things. I could use rc but supervisord allows me to specify a few extra bits more easily, like redirecting output to syslog and other things.

So for HOME_SERVER, here is my supervisord configuration:
#### HOME_SERVER:/etc/supervisord.conf## [... snip ...][program:gmid]command=/usr/local/bin/gmid -f ; the program (relative uses PATH, can take args)process_name=%(program_name)s ; process_name expr (default %(program_name)s)directory=/var/gemini/ ; directory to cwd to before exec (def no cwd)priority=100 ; the relative start priority (default 999)autostart=true ; start at supervisord start (default: true)startretries=3 ; max # of serial start failures when starting (default 3)autorestart=true ; when to restart if exited after running (def: unexpected)killasgroup=true ; SIGKILL the UNIX process group (def false)stdout_syslog=true ; send stdout to syslog with process name (default false)stderr_syslog=true ; send stderr to syslog with process name (default false)[program:lumen-vigilia_cc]command=/bin/ksh -c 'while sleep 0.1; do find /var/gemini/vigilia.cc/* | entr -nd python3 /var/gemini/cgi/lumen.py -d /var/gemini/vigilia.cc; done'process_name=%(program_name)sdirectory=/var/gemini/priority=102autostart=truestartretries=3autorestart=trueuser=MYUSERNAMEstderr_syslog=truestdout_syslog=true
There are other directives that start the CGI scripts for “auld.vigilia.cc” in the config, omitted here.

Note that you can specify “priority” to control in what order you want the scripts to run. I first want the gemini server to run (100); then I want it to run the CGI scripts (101 — left out of the above example); then I want to run the static site generator’s watcher (102). Notice I am telling explicitly it to run /bin/ksh with a command specified in -c; this is because simply feeding it a complex command confuses supervisord, as I discovered.

One nice feature of supervisord is that it can redirect both stderr and stdout to syslog, so any commands and processes supervisord runs will have their output sent to /var/log/messages, neatly tagged and organised.

Conclusion


So there you have it — my Gemini stack from start to finish. It was a really fun experiment to start to use OpenBSD, instead of reinventing the wheel, or relying on some monolithic CGI scripts. You can do quite a lot with just system internals and a few packages.


  1. The watch utility was added to 7.7-current on 2025-05-19; it will make its way into 7.8 hopefully. ↩︎

Adapted from the original article “Vigilia’s New Gemini Stack” published via Gemini at vigilia.cc on 21 July 2025.