I’m building a service that lets you:
create and manage disposable, brandable email aliases so you can track leaks, forward important messages, and keep your real inbox clean.
I’ve just finishing building it for the most part, and have cut a v0.1.0 release. It’s currently closed source (to be decided later) and now open to beta testers. cc @bender@twtxt.net 🙏 I fully intend to monetize and offer this as a paid service in teh coming weeks/months, but beta/invite-only testers and early adopters/users first 🤟
🥳 Just released Gatherly v0.3.0 🤟 – My instance is available at: https://gatherly.mills.io (free for anyone to use)
How I Mastered Blind SQL Injection With One Simple Method
Transforming my web security skills by learning to listen to a silent database
[Continue reading on InfoSec Write-ups »](https://infosecwriteups.com/how-i-mastered-blind-sql-injection-w … ⌘ Read more
‘In the form of his life’ - How England players rated
BBC Sport assesses how England performed against Latvia during the Three Lions’ 5-0 victory. ⌘ Read more
CTF to Bug Bounty: Part 1 of the Beginner’s Series for Aspiring Hunters
From CTF flags to real-world bugs — your next hacking adventure starts here.
[Continue reading on InfoSec Write-ups »](https://infosecwriteups. … ⌘ Read more
NI down but not out after ‘sore’ Germany defeat
Northern Ireland’s young squad were down but not out, as Michael O’Neill describes the 1-0 World Cup qualifying defeat by Germany as “sore”. ⌘ Read more
Git Developers Talk About Potentially Releasing Git 3.0 By The End Of Next Year
Comments ⌘ Read more
“Trade war 2.0? China just told Trump: We’re not afraid of a tariff war” 🇨🇳🔥🇺🇸 ⌘ Read more
Unbelievable Security Hole: JWT Secret in a Series-B Funded Company
It started as a routine penetration test. Little did I know I was about to uncover one of the most basic yet catastrophic security…
[Continue reading on … ⌘ Read more
A Beginner’s Guide to Finding Hidden API Endpoints in JavaScript Files
How to discover what others miss in plain sight
[Continue reading on InfoSec Write-ups »](https://infosecwriteups.com/a-beginners-guide-to-finding-h … ⌘ Read more
Harsh lessons and ‘hurt egos’ for Bellamy’s Wales
Craig Bellamy and Wales learn harsh lessons in their 3-0 defeat at England, in preparation for their big World Cup qualifier against Belgium. ⌘ Read more
‘No energy’ - Tuchel unhappy at ‘silent’ Wembley
England boss Thomas Tuchel sees his side score three times in 20 minutes in their 3-0 friendly win over Wales, but is left frustrated by the Wembley atmosphere. ⌘ Read more
‘Dictated the game’ - how England & Wales’ players rated
BBC Sport assesses how the England and Wales players performed at Wembley on Thursday, during the Three Lions’ 3-0 victory. ⌘ Read more
How I found Multiple Bugs on CHESS.COM & they refused
I found JS crash, disallowing anyone to view your profile and HTML Injection. But they ignored everything.
[Continue reading on InfoSec Write-ups »](https://infosecwriteups.com/how-i-found-multiple-bug … ⌘ Read more
CORS Vulnerability with Trusted Insecure Protocols BurpSuite Walkthrough
CORS misconfig + HTTP subdomain XSS analysis showing API key exfiltration, exploit breakdown and remediation.
[Continue reading on InfoSec W … ⌘ Read more
Security updates for Wednesday
Security updates have been issued by Fedora (apptainer, civetweb, mod_http2, openssl, pandoc, and pandoc-cli), Oracle (kernel), Red Hat (gstreamer1-plugins-bad-free, iputils, kernel, open-vm-tools, and podman), SUSE (cairo, firefox, ghostscript, gimp, gstreamer-plugins-rs, libxslt, logback, openssl-1_0_0, openssl-1_1, python-xmltodict, and rubygem-puma), and Ubuntu (gst-plugins-base1.0, linux-aws-6.8, linux-aws-fips, linux-azure, linux-azure-nvidia, linux-gke, linux-nvidia-tegra- … ⌘ Read more
Optus email mishap left department in dark about triple-0 outage
The telco operator sent two emails about its outage, which understated its extent, to a departmental email address that had been changed a week earlier. ⌘ Read more
Live: Officials to be grilled over Optus outages in Senate estimates
Officials from two departments will be questioned today about the government’s handling of the Optus triple-0 outages. Follow live. ⌘ Read more
Telcos face surprise ‘stress test’ within weeks as Optus fallout continues
The adequacy of Australia’s emergency call network will be stress tested with a surprise drill ahead of bushfire season, as the opposition ramps up its assault over the communication minister’s handling of last month’s fatal triple-0 outage. ⌘ Read more
Python 3.14.0 released
Version\
3.14.0 of the Python language has been released. There are a lot of
changes this time around, including official support for free threading, template string literals, and much more; see
the announcement for details. ⌘ Read more
Python 3.14.0 (final) is here
This is the stable release of Python 3.14.0
Python 3.14.0, the newest major release of the Python programming language is here!
Notes from the 2025 Git Contributor’s Summit
Taylor Blau has posted an\
extensive set of notes from the recently concluded Git Contributor’s
Summit. Covered topics include the SHA-256 transition, Rust, Change-ID
headers, Git 3.0, and many more. The note are also available on\
Google Docs for those who prefer that format. ⌘ Read more
IBM Granite 4.0 Models Now Available on Docker Hub
Developers can now discover and run IBM’s latest open-source Granite 4.0 language models from the Docker Hub model catalog, and start building in minutes with Docker Model Runner. Granite 4.0 pairs strong, enterprise-ready performance with a lightweight footprint, so you can prototype locally and scale confidently. The Granite 4.0 family is designed for speed, flexibility,… ⌘ Read more
The project cost blow-out rivalling Snowy Hydro 2.0 and Hobart stadium
It’s taken 10 years, blown out by hundreds of millions of dollars, and is still nowhere near becoming operational. Now there are calls for the Darwin ship lift project to be scrapped. ⌘ Read more
Announcing ORAS v1.3.0: Elevating artifact and registry management workflows
The ORAS community is thrilled to announce the release of ORAS CLI v1.3.0, a version packed with stability improvements and pioneering capabilities. In addition to strengthening existing functionality, this release introduces three major new features designed… ⌘ Read more
Security updates for Monday
Security updates have been issued by AlmaLinux (kernel), Debian (dovecot, git, log4cxx, and openssl), Fedora (containernetworking-plugins, firebird, firefox, jupyterlab, mupdf, and thunderbird), Oracle (ipa), Red Hat (container-tools:rhel8, firefox, gnutls, kernel, kernel-rt, multiple packages, mysql, mysql:8.0, nginx, podman, and thunderbird), Slackware (fetchmail), SUSE (afterburn, chromium, firefox, haproxy, libvmtools-devel, logback, python311-Django, python311-Django4, and … ⌘ Read more
Not shown here but, this Shape class used on the linked sketch helps eliminate (by adding them to a set) not only Polygons that are visually the same but also shape rotations using a custom .hash() method :)
(A caveat to the reader: The code can be is messy because it sometimes retains remnants of abandoned ideas and lateral explorations. This is creative coding not software engineering)
Not shown here but, this Shape class used on the linked sketch helps eliminate (by adding them to a set) not only Polygons that are visually the same but also shape rotations using a custom .__hash__() method :)
(A caveat to the reader: The code is messy because it sometimes retains remnants of abandoned ideas and lateral explorations, also, this is creative coding not software engineering)
Random musing from a #Python creative coder:
I have this naïve cumbersome thing for dealing with collinear vertices in a polygon (like a vertex in the middle of an edge that doesn’t change the shape of the polygon, and I tried to replace it with some clever #shapely method such as .simplify(…) or .buffer(0) and failed miserably. So I’ll have to keep my home made check-area-every-three-vertices thing for now…
I’m kind of proud of my idea of representing polygons as a set of frozensets of edge vertex pairs because it eliminates all visually equivalent rotations and reverse ordered rotations (that is, if you don’t have pesky collinear vertices).
Singapore PM gives condolences to families impacted by Optus outage deaths
Singapore’s Prime Minister, Lawrence Wong, offers his condolences to the families of four Australians who died during an Optus network technical failure last month, which impacted hundreds of triple-0 calls. ⌘ Read more
Seven calls, 16 minutes, no answer. More Optus emergency failures exposed
Optus customers have come forward to report more cases of triple-0 calls failing outside the embattled telcos previously admitted outages. ⌘ Read more
Topmanager: Wo das Kabelnetz in Deutschland Docsis 4.0 bekommt
In Deutschland fällt der Sprung auf Docsis 4.0 so schwer, dass das Thema jeden Pressesprecher nervös macht. Ein Manager erzählt uns, warum. ( Docsis 4.0, Vodafone)
I experimented with a 2.4x7mm aluminium rivet I had on hand. As expected, it was quite a bit long. Using my pliers wrench, I was able to crush it down by quite some bit. I should have taken a photo right after the hand riveter for comparison. Now, it’s much smoother and the chance of cutting my hand open is reduced by quite a bit. But breaking the burr with a few file strokes is still necessary. I should get 2.4x4mm rivets and try with them. I reckon they would be more suited for my 0.5mm sheet metal.
With the pliers wrench again, I was able to also crush down the chopped off 3mm copper nail and form a second head. That was surprisingly easy. Now, I need to figure out how to efficiently make a head on the remaining copper nail shaft, so that I can use this again.
Both are rock solid, there’s absolutely no movement at all between the two sheet metal cutoffs.
Security updates for Friday
Security updates have been issued by AlmaLinux (idm:DL1), Debian (gegl and haproxy), Fedora (ffmpeg, firefox, freeipa, python-pip, rust-astral-tokio-tar, sqlite, uv, webkitgtk, and xen), Oracle (idm:DL1, ipa, kernel, perl-JSON-XS, and python3), Red Hat (git), SUSE (curl, frr, jupyter-jupyterlab, and libsuricata8_0_1), and Ubuntu (linux-aws, linux-lts-xenial, linux-aws-fips, linux-fips, linux-gcp-fips, linux-azure, linux-azure, linux-azure-6.8, linux-fips, linux-gcp-fips, and l … ⌘ Read more
KubeCon + CloudNativeCon North America 2025 Co-Located Event Deep Dive: Kubernetes on Edge Day
The inaugural Edge Day launched as a co-located event at KubeCon + CloudNativeCon EU in 2022, recognizing that data at the edge is here to stay. Once called the ‘Internet of Things’ and later ‘Industry 4.0,’… ⌘ Read more
[$] LWN.net Weekly Edition for October 2, 2025
Inside this week’s LWN.net Weekly Edition:
Front: Fedora and AI; Linting kernel Rust; openSUSE Leap 16; mmap() file operation; 6.17 statistics; dirlock.
Briefs: Bcachefs removal; Alpine /usr merge; F-Droid; Fedora AI policy; OpenSUSE Leap 16; PostgreSQL 18; Radicle 1.5.0; Quotes; …
Announcements: Newsletters, conferences, security updates, patches, and more. ⌘ Read more
Security updates for Wednesday
Security updates have been issued by AlmaLinux (kernel, kernel-rt, mysql:8.0, and openssh), Debian (libcommons-lang-java, libcommons-lang3-java, libcpanel-json-xs-perl, libjson-xs-perl, libxml2, open-vm-tools, and u-boot), Fedora (bird, dnsdist, mapserver, ntpd-rs, python-nh3, and rust-ammonia), Oracle (kernel and mysql:8.0), Red Hat (cups, postgresql:12, and postgresql:13), SUSE (cJSON-devel, gimp, kernel-devel, kubecolor, open-vm-tools, openssl-1_1, openssl-3, and ruby3.4-ruby … ⌘ Read more
MacOS Sequoia 15.7.1 & MacOS Sonoma 14.8.1 Updates Released with Security Fixes
Apple has released MacOS Sequoia 15.7.1 and MacOS Sonoma 14.8.1 as security patch releases for Mac users who are not yet running the Tahoe operating system, of which MacOS Tahoe 26.0.1 was just released. The updates are focused on security patches and do not include any other changes or features for the Sequoia or Sonoma … [Read More](https://osxdaily.com/2025/09/30/macos- … ⌘ Read more
Radicle 1.5.0 released
Version 1.5.0
of the Radicle peer-to-peer Git collaboration platform has been
released. This release includes better support for bare repositories,
structured logging, and improvements in the output of rad patch
show:
The previous output would differentiate “updates”, where the original
author creates a new revision, and “revisions”, where another author
creates a revision. This could be confusing since updates are also
revisions. Instead, the output sh … ⌘ Read more
MacOS Tahoe 26.0.1 Update Released to Fix Mac Studio Installation Bug
Apple has issued MacOS Tahoe 26.0.1 as a software update for Tahoe users. The update focuses primarly on resolving an issue for Mac Studio owners who were not able to install the initial MacOS Tahoe 26 release onto the M3 Ultra version of the Studio. Apparently other bug fixes and security improvements are included as … [Read More](https://osxdaily.com/2025/09/29/macos-tahoe-26-0-1-update-releas … ⌘ Read more
iOS 26.0.1 Update Released to Fix Various iPhone 17 Issues, & Blank Screen Icons
Apple has released the first update for iOS 26.0.1, which includes a handful of bug fixes specifically aimed at the new iPhone 17 lineup, as well as addressing an issue for all devices where Home Screen icons can appear blank after using various Liquid Glass customization settings, and another issue where VoiceOver might disable itself … [Read More](https://osxdaily.com/2 … ⌘ Read more
For a very first attempt, I’m extremely happy how this tray turned out: https://lyse.isobeef.org/tmp/blechschachtel/ The photos look rougher than in person. The 0.5mm aluminium sheet was 300x200mm to begin with. Now, the accidental outside dimensions are 210x110mm. It took me about an hour to make. Tomorrow, I gotta build a simple folder, so I don’t have to hammer it anymore, but can simply bend it a little at a time.
Hey @itsericwoodward@itsericwoodward.com, I just wanna let you know that twtstrm/0.4.0 sends a broken User-Agent header. Instead of the URL, the nick is repeated.
ProcessOne: Why Europe’s ‘Chat Control’ Proposal Will Cripple European Communication Industry While Failing to Protect Children
On October 14th, the European Concil will vote on a regulation that … ⌘ Read more
Kaidan: Kaidan 0.13.0: Multi-Account Support and Secure Password Storage
Kaidan 0.13.0 is out now!
And it comes with a bunch of shiny new features.
Most of the work has been … ⌘ Read more
Ignite Realtime Blog: Openfire 5.0.2 release!
The IgniteRealtime community is happy to announce a new release of its open source, real-time communications server server Openfire! Version 5.0.2 brings a number of stability improvements and bug fixes.
Notably, it addresses a recently identified security vulnerability, identifies as CVE-2025-59154. The issue allows for potential identity spoofing via unsafe Common Nam … ⌘ Read more
we are now parsing and recursively fetching remote feeds somewhat successfully, gotta work on the media proxy and markdown way more, so so many fucky edgecases….my friend’s feed with like four posts parsed correctly so i tried this account’s feed and well now im not going to bed on time
search page, bookmarks page, improved thread view (that i will probably improve further), as well as a logo and a whole ui redesign. it is truly all coming together…were i to mark any items off the roadmap :p
@lyse@lyse.isobeef.org that’s cool!!! i didn’t know that :0
replies and following implemented! next step is further parsing of post contents, rendering threads, and then maybe i can finally start adding remote feeds…! though i kinda wanna redo the whole ui ^^’
Hmm: gopher://uninformativ.de/0/phlog/2025/2025-08/2025-08-18--permacomputing.txt
That’s fairly recent, but fully justified. I give up! :-D
I should have checked the CHANGELOG first. LOL.
@movq@www.uninformativ.de I noticed that:
gopher://uninformativ.de/0/phlog/2018/2018-06/2018-06-01.txt
Is the first non-justified, and it is when you started using Markdown. The last justified one was:
gopher://uninformativ.de/0/phlog/2018/2018-05/2018-05-27.txt
So, I might have found the mystery! :-D
@bender@twtxt.net The address is/was correct but probably got mangled by the Markdown renderer. Let’s try again in a code block:
gopher://uninformativ.de/0/phlog/2025/2025-09/2025-09-03--roophloch.txt
@movq@www.uninformativ.de getting:
3Invalid request. Error Error 0
On that address.
@bender@twtxt.net Yeah, the acronym is funny. 😅
Wandering through the woods for 8km … gopher://uninformativ.de/0/phlog/2025/2025-09/2025-09-03–roophloch.txt
ProcessOne: Spotify’s Direct Messaging Gambit
Last week, Spotify quietly launched direct messaging across its platform in selected areas, allowing users to share tracks and playlists through private conversations within the app. The feature was rolled out with mini … ⌘ Read more
This is soooo bloody cool, @movq@www.uninformativ.de! https://www.uninformativ.de/blog/postings/2025-08-30/0/POSTING-en.html
@dce@hashnix.club I switched over to following you on Gopher, because why not. 😅
So, in addition to HTTPS and Gemini, my twtxt should now also be available over Gopher (gopher://hashnix.club:70/0/~dce/twtxt.txt). Not sure who, if anyone, would need this; but since my tilde provides Gopher hosting, I’d may as well mirror my twtxt there as well.
Interactive demo of #shapely’s centroid for the triangle :)
import py5
from shapely import Polygon, Point
def setup():
py5.size(400, 400)
py5.stroke_join(py5.ROUND)
def draw():
py5.background(200)
pts = ((100, 100), (300, 100),
(py5.mouse_x, py5.mouse_y))
xs, ys = zip(*pts)
cx = sum(xs) / len(xs)
cy = sum(ys) / len(ys)
tri = Polygon(pts)
py5.no_fill()
py5.stroke_weight(1)
py5.stroke(0, 200, 0)
py5.shape(Point(cx, cy).buffer(5))
py5.stroke(0, 0, 200)
py5.shape(tri.envelope.buffer(2))
py5.shape(tri.envelope.centroid.buffer(5))
py5.stroke_weight(3)
py5.stroke(0)
py5.shape(tri)
py5.fill(0)
py5.shape(tri.centroid.buffer(2))
py5.run_sketch(block=False)
ProcessOne: 🚀 ejabberd 25.08
Release Highlights:
This release includes the support for Hydra rooms in our Matrix gateway, which fixes high severity protocol vulnerabilities.
- Improvements in Matrix gateway
- Fixed ACME in Erlang/OTP 28.0.2
- **[New
mod_providersto serve XMPP Providers file](https://www.process-one.net/blog/rss/ … ⌘ Read more
Erlang Solutions: MongooseIM 6.4: Simplified and Unified
MongooseIM is a scalable and efficient instant messaging server. With the latest release 6.4.0, it has become more powerful yet easier to use and maintain. Thanks to the internal unification of listeners and connection handling, the configuration is easier and more intuitive, while numerous new options are supported.
New features include support for TLS 1.3 with optional channel binding for improved security, single round-trip authent … ⌘ Read more
After around 3 years, I managed to make my “smallest recognizable canine”, even smaller. So here’s the all new, smallest recognizable canine 2.0:

Regarding Mourning Posts 2.0 ⌘ Read more
What’s Missing from “Retro”: gopher://midnight.pub/0/posts/2679
[47°09′31″S, 126°43′37″W] Reading: 0.77 Sv
My website has 0 depreciated tags now and all identical IDs, were merged into a single class. This also improves, how the text on top of the page, is aligned on mobile.

[47°09′57″S, 126°43′45″W] Reading: 0.87000 PPM
[47°09′56″S, 126°43′19″W] Reading: 0.36000 PPM
[47°09′32″S, 126°43′25″W] Reading: 0.07 Sv
@movq@www.uninformativ.de According to this screenshot, KDE still shows good old application icons:
And GNOME used to have them, too:
I like the looks of your window manager. That’s using Wayland, right? The only thing on this screenshot to critique is all that wasted space of the windows not making use of the full screen!!!1 At least the file browser. 8-)
This drives me nuts when my workmates share their screens. I really don’t get it how people can work like that. You can’t even read the whole line in the IDE or log viewer with all the expanded side bars. And then there’s 200 pixels on the left and another 300 pixels on the right where the desktop wallpaper shows. Gnaa! There’s the other extreme end when somebody shares their ultra wide screen and I just have a “regularish” 16:10 monitor and don’t see shit, because it’s resized way too tiny to fit my width. Good times. :-D
Sorry for going off on a tangent here. :-) Back to your WM: It has the right mix of being subtle and still similar to motif. Probably close to the older Windowses. My memory doesn’t serve me well, but I think they actually got it fairly good in my opinion. Your purple active window title looks killer. It just fits so well. This brown one (
) gives me also classic vibes. Awww. We ran some similar brownish color scheme (don’t recall its name) on Win95 or Win98 for some time on the family computer. I remember other people visting us not liking these colors. :-D@movq@www.uninformativ.de I fully agree with you on https://www.uninformativ.de/blog/postings/2025-07-22/0/POSTING-en.html!
Although, in the first screenshot, the window title background is much darker in the new version than the old one!1!1 :-P Kidding aside, the contrast in the old one is still better.
Also, note the missing underlines for the Alt hotkeys now. I just think that the underline in the old one is too thick.
[47°09′09″S, 126°43′14″W] Reading: 0.13000 PPM
[47°09′48″S, 126°43′05″W] Reading: 0.30 Sv
[47°09′11″S, 126°43′57″W] Reading: 0.34 Sv
[47°09′09″S, 126°43′30″W] Reading: 0.61 Sv
[47°09′53″S, 126°43′13″W] Reading: 0.99 Sv
[47°09′35″S, 126°43′25″W] Reading: 0.83 Sv
[47°09′46″S, 126°43′48″W] Reading: 0.18 Sv
[47°09′49″S, 126°43′48″W] Reading: 0.74 Sv
I did a “lecture”/“workshop” about this at work today. 16-bit DOS, real mode. 💾 Pretty cool and the audience (devs and sysadmins) seemed quite interested. 🥳
- People used the Intel docs to figure out the instruction encodings.
- Then they wrote a little DOS program that exits with a return code and they used uhex in DOSBox to do that. Yes, we wrote a COM file manually, no Assembler involved. (Many of them had never used DOS before.)
- DEBUG from FreeDOS was used to single-step through the program, showing what it does.
- This gets tedious rather quickly, so we switched to SVED from SvarDOS for writing the rest of the program in Assembly language. nasm worked great for us.
- At the end, we switched to BIOS calls instead of DOS syscalls to demonstrate that the same binary COM file works on another OS. Also a good opportunity to talk about bootloaders a little bit.
- (I think they even understood the basics of segmentation in the end.)
The 8086 / 16-bit real-mode DOS is a great platform to explain a lot of the fundamentals without having to deal with OS semantics or executable file formats.
Now that was a lot of fun. 🥳 It’s very rare that we do something like this, sadly. I love doing this kind of low-level stuff.
Saw this on Mastodon:
https://racingbunny.com/@mookie/114718466149264471
18 rules of Software Engineering
- You will regret complexity when on-call
- Stop falling in love with your own code
- Everything is a trade-off. There’s no “best” 3. Every line of code you write is a liability 4. Document your decisions and designs
- Everyone hates code they didn’t write
- Don’t use unnecessary dependencies
- Coding standards prevent arguments
- Write meaningful commit messages
- Don’t ever stop learning new things
- Code reviews spread knowledge
- Always build for maintainability
- Ask for help when you’re stuck
- Fix root causes, not symptoms
- Software is never completed
- Estimates are not promises
- Ship early, iterate often
- Keep. It. Simple.
Solid list, even though 14 is up for debate in my opinion: Software can be completed. You have a use case / problem, you solve that problem, done. Your software is completed now. There might still be bugs and they should be fixed – but this doesn’t “add” to the program. Don’t use “software is never done” as an excuse to keep adding and adding stuff to your code.
Okay, here’s a thing I like about Rust: Returning things as Option and error handling. (Or the more complex Result, but it’s easier to explain with Option.)
fn mydiv(num: f64, denom: f64) -> Option<f64> {
// (Let’s ignore precision issues for a second.)
if denom == 0.0 {
return None;
} else {
return Some(num / denom);
}
}
fn main() {
// Explicit, verbose version:
let num: f64 = 123.0;
let denom: f64 = 456.0;
let wrapped_res = mydiv(num, denom);
if wrapped_res.is_some() {
println!("Unwrapped result: {}", wrapped_res.unwrap());
}
// Shorter version using "if let":
if let Some(res) = mydiv(123.0, 456.0) {
println!("Here’s a result: {}", res);
}
if let Some(res) = mydiv(123.0, 0.0) {
println!("Huh, we divided by zero? This never happens. {}", res);
}
}
You can’t divide by zero, so the function returns an “error” in that case. (Option isn’t really used for errors, IIUC, but the basic idea is the same for Result.)
Option is an enum. It can have the value Some or None. In the case of Some, you can attach additional data to the enum. In this case, we are attaching a floating point value.
The caller then has to decide: Is the value None or Some? Did the function succeed or not? If it is Some, the caller can do .unwrap() on this enum to get the inner value (the floating point value). If you do .unwrap() on a None value, the program will panic and die.
The if let version using destructuring is much shorter and, once you got used to it, actually quite nice.
Now the trick is that you must somehow handle these two cases. You must either call something like .unwrap() or do destructuring or something, otherwise you can’t access the attached value at all. As I understand it, it is impossible to just completely ignore error cases. And the compiler enforces it.
(In case of Result, the compiler would warn you if you ignore the return value entirely. So something like doing write() and then ignoring the return value would be caught as well.)
@aelaraji@aelaraji.com I use Alt+. all the time, it’s great. 👌
FWIW, another thing I often use is !! to recall the entire previous command line:
$ find -iname '*foo*'
./This is a foo file.txt
$ cat "$(!!)"
cat "$(find -iname '*foo*')"
This is just a test.
Yep!
Or:
$ ls -al subdir
ls: cannot open directory 'subdir': Permission denied
$ sudo !!
sudo ls -al subdir
total 0
drwx------ 2 root root 60 Jun 20 19:39 .
drwx------ 7 jess jess 360 Jun 20 19:39 ..
-rw-r--r-- 1 root root 0 Jun 20 19:39 nothing-to-see
@prologic@twtxt.net I’m trying to call some libc functions (because the Rust stdlib does not have an equivalent for getpeername(), for example, so I don’t have a choice), so I have to do some FFI stuff and deal with raw pointers and all that, which is very gnarly in Rust – because you’re not supposed to do this. Things like that are trivial in C or even Assembler, but I have not yet understood what Rust does under the hood. How and when does it allocate or free memory … is the pointer that I get even still valid by the time I do the libc call? Stuff like that.
I hope that I eventually learn this over time … but I get slapped in the face at every step. It’s very frustrating and I’m always this 🤏 close to giving up (only to try again a year later).
Oh, yeah, yeah, I guess I could “just” use some 3rd party library for this. socket2 gets mentioned a lot in this context. But I don’t want to. I literally need one getpeername() call during the lifetime of my program, I don’t even do the socket(), bind(), listen(), accept() dance, I already have a fully functional file descriptor. Using a library for that is total overkill and I’d rather do it myself. (And look at the version number: 0.5.10. The library is 6 years old but they’re still saying: “Nah, we’re not 1.0 yet, we reserve the right to make breaking changes with every new release.” So many Rust libs are still unstable …)
… and I could go on and on and on … 🤣
OpenBSD has the wonderful pledge() and unveil() syscalls:
https://www.youtube.com/watch?v=bXO6nelFt-E
Not only are they super useful (the program itself can drop privileges – like, it can initialize itself, read some files, whatever, and then tell the kernel that it will never do anything like that again; if it does, e.g. by being exploited through a bug, it gets killed by the kernel), but they are also extremely easy to use.
Imagine a server program with a connected socket in file descriptor 0. Before reading any data from the client, the program can do this:
unveil("/var/www/whatever", "r");
unveil(NULL, NULL);
pledge("stdio rpath", NULL);
Done. It’s now limited to reading files from that directory, communicating with the existing socket, stuff like that. But it cannot ever read any other files or exec() into something else.
I can’t wait for the day when we have something like this on Linux. There have been some attempts, but it’s not that easy. And it’s certainly not mainstream, yet.
I need to have a closer look at Linux’s Landlock soon (“soon”), but this is considerably more complicated than pledge()/unveil():
orb v0.1.0 - tiny metasearch | https://nilfm.cc/orb.html
So I was using this function in Rust:
https://doc.rust-lang.org/std/path/struct.Path.html#method.display
Note the little 1.0.0 in the top right corner, which means that this function has been “stable since Rust version 1.0.0”. We’re at 1.87 now, so we’re good.
Then I compiled my program on OpenBSD with Rust 1.86, i.e. just one version behind, but well ahead of 1.0.0.
The compiler said that I was using an unstable library feature.
Turns out, that function internally uses this:
https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.display
And that is only available since Rust 1.87.
How was I supposed to know this? 🤨
Hmmm 🧐 Not what I thought was going on… No bug…
time="2025-06-14T15:24:25Z" level=info msg="updating feeds for 8 users"
time="2025-06-14T15:24:25Z" level=info msg="skipping 0 inactive users"
time="2025-06-14T15:24:25Z" level=info msg="skipping 0 subscribed feeds"
time="2025-06-14T15:24:25Z" level=info msg="updating 80 sources (stale feeds)"
基於 Kubernetes 事件驅動的自動縮放
KEDA 是一種基於事件驅動的自動伸縮工具,能夠解決 Kubernetes 原生 HPA 在靈活性和複雜性上的不足。KEDA 支持多種事件源(如 Prometheus、Kafka、RabbitMQ 等),可根據實際需求動態調整 Pod 副本數量,甚至將副本數縮減至 0,從而優化資源利用率並降低成本。通過 ScaledObject 對象,KEDA 能夠靈活配置伸縮策略,快速響應負載變化,實現高效擴展 ⌘ Read more
[47°09′25″S, 126°43′53″W] Reading: 0.33 Sv
Radxa UFS/eMMC Module Reader and Storage Solution Enables Fast Flashing and Scalable Embedded Storage
Radxa’s UFS/eMMC Module Reader is a compact USB 3.0 adapter for flashing OS images, accessing firmware, and transferring large files. It supports both eMMC v5.0 and UFS 2.1 modules with speeds up to 5 Gbps The adapter is compatible with eMMC and UFS modules from Radxa, and also works with modules from platforms like PINE64 and […] ⌘ Read more