news
Free, Libre, and Open Source Software and WWW Stories
-
Jonas Schäfer ☛ Messing with Traceroute
TL;DR: Traceroute is fun tool to investigate how packets travel through the internet. Due to how it's made, we can make traceroute tools show (almost) arbitrary poems. This blog post gives you an idea how.
-
Bozhidar Batsov ☛ Modernizing CIDER’s Completion
CIDER’s code completion has quietly gotten quite good over the years, and I don’t think it gets enough credit. It’s all built on Emacs’s standard completion-at-point, so it works with whatever completion UI you prefer - the built-in one, Corfu, company - without any special setup. Under the hood compliment does the heavy lifting for Clojure (and clj-suitable for ClojureScript), which means smart, backend-driven matching: mai completes to map-indexed, cji to clojure.java.io, and an unimported BiFun to java.util.function.BiFunction. The candidates come back ranked by the backend and are context-aware - it knows when you’re inside a -> or completing a deftype field.
-
Dr Chung-hong Chan ☛ Emacs Writing Machine
I like writing. Really.
However, I have problem finishing my drafts. As you might be able to read in my OKRs, I mentioned multiple times that I have quite a lot of blog drafts that I haven’t completed. I don’t want to blame anyone and it’s completely my fault: I have problem focusing on a task. I have an attention problem. In the past, I could blame things like Twitter for distracting me from getting shit done. But now, I don’t use any of these social media services anymore. I am running out of excuses.
-
Web Browsers/Web Servers/Feed Readers
-
Undeadly ☛ httpd(8) gains support for custom HTTP headers
In a change likely to be widely welcomed, Rafael Sadowski (rsadowski@) committed support for custom HTTP headers in httpd(8). This obviates the need to use FastCGI support or relayd(8) to achieve things like adding SSL/TLS security headers.
-
University of Toronto ☛ An unfortunate limitation of the Apache server status page
As the Apache documentation covers, the server status page offers this information in two forms, a HTML web page that's intended for people and a 'machine readable' version that presents much of the information in plain text in a relatively easy to parse format. The HTML page comes in two versions, a table based version (the default) and a version not using tables (accessed with the no longer documented '?notable' parameter, and I think it may include some extra information in more verbose format but I haven't looked closely). All of this is great, but there's an unfortunate limitation of the server status page, which is that no version of it provides detailed per-request information in an easily processed form.
-
-
SaaS/Back End/Databases
-
DBOS Inc ☛ Postgres LISTEN/NOTIFY Actually Scales
To understand the problem, we’ll need to examine how Postgres LISTEN/NOTIFY actually works.
The root cause of the poor performance is that in Postgres, committing a transaction that calls NOTIFY requires taking a global exclusive lock. This lock is taken as the transaction begins to commit, and is not released until the transaction is fully committed and its contents have been flushed to disk with fsync().
This lock is necessary because Postgres guarantees that notifications are sent in transaction commit order. To enforce this, it stores all outgoing notifications in a global internal queue whose order must exactly match the commit order of the transactions sending those notifications. Adding notifications to this queue must be done transactionally as part of the commit. However, Postgres doesn’t assign transactions a commit order until those transactions are done committing, as committing can take a variable amount of time.
-
-
Content Management Systems (CMS) / Static Site Generators (SSG)
-
Leon Mika ☛ Blog Design Update
Next was the Archives page. Much of this was styling, such as arranging the categories in a grid, and doing something about how entry was rendered as its own card. I didn’t like how it looked, and I think it had an impact on performance, as the browser would slow to a crawl when I opened it. I restyled it to be one card per month, but in order to achieve this, I had to take the plugin-archive-month code and do some horrific things involving half-opened divs. It’s not glamorous code, but it looks and works much better than it did: [...]
-
-
Openness/Sharing/Collaboration
-
Open Data
-
Ben Werdmuller ☛ Can data collectives help strengthen vulnerable cultures in the face of AI?
It’s interesting to contrast the current moment to the “information wants to be free” era of Web 2.0, twenty or so years ago. Back then, everyone was talking about open APIs and open data. Now, it’s become clearer that communities need to control the terms of their data if they’re going to avoid being strip-mined for somebody else’s profit.
-
-