Stefano on littleFedi
It's me, Stefano, the BSD and illumos Cafe Barista - aka @stefano@bsd.cafe and @stefano@illumos.cafe
I'm testing something cool - #littleFedi !
This instance is efficiently running on a Raspberry PI Zero W, powered by #NetBSD.
I'll post general stuff - for more littleFedi news and updates, follow my other profile: @stefano@littleone.littlefedi.social
Let's go!
After the OpenSMTPD article, I am now working on an article to uncover the things that #httpd on #OpenBSD has to offer. Yes, it does not have all the features of #nginx, but still it can do a lot.
Want to know when the article is available? Follow the RSS feed on https://bsd-audit.com/ or follow me here.
If you are using httpd a lot, then a question for you: what are the tips that those new to OpenBSD and httpd should know? Why httpd and not nginx?
Yawn...oh sorry 😪
How background workers work in littleFedi
Every littleFedi instance runs a background job queue. Jobs are split by kind, but they all share one thing in common: they sit in a database table and are executed by the "main" worker pool, whose size you control with queue.workers (default min(8, GOMAXPROCS), 1 on the low_power preset).
The kinds fall into two groups:
-
Heavy, mostly CPU/DB-bound work - inbox (ActivityPub signature verification, actor fetches, home-feed fan-out) and media_cache (image decoding). These block a worker synchronously while they run.
-
Light, mostly network-bound outbound work - delivery (one signed POST to one remote inbox), its delivery_fanout expander, push_notification, and send_email. These are short and often latency-sensitive: a boost that hasn't landed yet or a push that hasn't arrived is visible to real people.
By default every worker can pick up any kind of job. That is perfectly fine for most instances. The only caveat: job priority only orders queued rows, it cannot preempt a job that is already running. So if a slow inbox or media job is occupying the single (or few) workers, timely outbound delivery, push and email can end up waiting behind it.
light_workers (default 0, disabled) spins up a second, dedicated worker pool for exactly those four light outbound kinds. It is a strict either/or, not extra capacity: with light_workers > 0, delivery, delivery_fanout, push_notification and send_email run only on this pool. The main pool stops touching them, even when idle, and there is no overflow between the two. So workers=8 + light_workers=2 gives outbound federation exactly 2 workers, not 10.
The light pool also yields to interactive requests like the main one does, but with a shorter wait (3s vs 10s) when both compete for the single foreground-recovery slot - so short, people-visible outbound jobs win that one job while every other worker keeps yielding to keep the web UI responsive.
It's totally optional.
With 0 (the default) all four kinds stay on the main pool. The extra goroutine(s) cost is negligible even on constrained hardware.
It can be useful for:
-
low_power devices (e.g. Raspberry Pi or similar): keep workers=1 for the heavy inbox/media work and enable light_workers=1 so outbound delivery, push and email keep flowing even while your single main worker is blocked on a slow inbox job. This is the recommended combination on a small box.
-
Instances where inbox/media loads spike: a burst of incoming activity (a big follower purge, backlog of signature-verification work) can stall time-sensitive outbound delivery on a shared pool; giving the light kinds their own pool decouples them.
-
Visibility matters: push notifications and federation delivery are things users notice immediately; if you care about their latency on a busy instance, the dedicated pool is a cheap way to protect it.
Running a single pool is the right default for most instances. Also note both pools share the DB connection limiter (sized from MaxOpenConns): the database is the serial resource, so worker counts beyond the connection count buy nothing, extra workers just deepens the queue in front of it. Size light_workers for your real outbound throughput.
Hello from the other side!
Yes, it's true. This instance is now running from the Orange PI PC (NetBSD, armv7). It's currently using the SD Card. The performance is...you judge! And it's not set to low_power mode!
I share with you a modest timelapse of the #eclipse.
In our case, it has not reached the totality but it has been exciting all the same.
I've found two possible Braille displays that I could buy and try to get working with #FreeBSD: Harpo BraillePen 12 and APH American Printing House Refreshabraille 18
Which one do you think could have a bigger impact on the community because it is more widely used or more common?
#FreeBSD #UNIX #OpenSource #AssistiveTechnology #Accessibility #Braille
Good news, the reboot of the sun has been successful. Please bear with us for the next 90 minutes or so as illumination returns to full power.
Best I could manage - couldn't get telescope webcam working so... Hugo took a photo through the eyepiece! 🔭🌒👍
#eclipse
There's a solar eclipse.
The sun is exactly behind a single, big cloud.
Good morning!
I just deployed a new build live. It should resolve the Mastodon API login issue with certain apps. I personally tested it with IceCubes, Ivory, and Mona (though with Mona, it might fail initially, if you hit 'X', it asks if you want to continue with Safari - just select 'yes' to proceed, and it will work. I'll look into it later). It has not been tested with other apps at the moment.
I also merged a couple of optimisations for the PWA and improved the Web Interface, which now uses significantly less CPU. Thanks as always for your help!
@mjack@bsd.cafe we will also provide the complete builds, so you won’t even need to compile it. More, there is a make target that will compile for all the platforms. It’s cross compiling by default.
The plan is to run a littleFedi instance, once the dust settles.
1) First time running NetBSD on anything, and I only started using *BSD a year ago. Do I need to compile go from source?
2) My ISP needs to provide me with a modem that can run in bridge mode with a static IP. It seems they can only do one, or the other, but not both. Using LTE modem as backup.
3) littleFedi is not yet available (not complaining!)
Am I the only Monkey Island fan who think that it would be awesome to have Ron Gilbert on @peertube ?
(Thimbleweed Park 1 was really awesome, I’m really happy that there will be a 2)
Exclusive for Mastodon users: https://blog2.thimbleweedpark.com/podcasts/
Hey on #OpenBSD we also had a #PatchTuesday.
4 patches for NPPPD and IKE altogether.
Sorry we are lagging behind the 570 patches #Windows needed this month, we keep trying to write bad code but it just won't come to the devs. Our numbers are pitiful and we must try harder. Maybe if we used AI the codebase would be buggy enough to catch up?