There's manual memory management (malloc()), and then there's manual memory management (sbrk()).| Athena's blog
I've made many false promises of blog posts. The two I posted today were both ones I said I intended to write, and got an enthusiastic reply about, and then didn't actually write. But now I finally have.| Athena's blog
Regular expressions have a reputation for being a write-only language. That is, you can write a regular expression, but once it's been written it's very difficult to read it and figure out how it works or how to change it. I believe this is mostly down to the extreme terseness of the regular expression language, and the solution is, at least in part, the same as the solution for other kinds of code that are difficult to understand: Documentation. In the rest of this post, I'll discuss how I p...| Athena's blog
I have four computers that I use personally on a regular basis: A laptop (spock), a home server (hestia), and a VPS (picard), all running various Linux distributions; and a smartphone (alm-ios-04), unfortunately an Apple iPhone (if a miracle occurs, it may someday be replaced by my Librem 5, scotty). I need to back up these computers so I don't lose their contents in the event of some kind of problem with them. In the rest of this article I'll discuss how I handle that.| Athena's blog
Here's a simple acid test for your Web site: Open your network inspector, find the throttling option, and set it to the slowest possible speed. Clear your cache, then browse around your site.| Athena's blog
Excited to see the release of RFC 9787 and RFC 9788 which, if widely adopted, could lead to cryptographically-protected email becoming useful for the first time.| Athena's blog
The MNT Reform Next looks very nice but... I already have a laptop. The most environmentally-friendly computer is the one you already own. And even if I needed a replacement, buying a new computer creates demand for manufacturing of new computers, when I could get a used one instead. Oh, well.| Athena's blog
I'm data-modeling a directory in SQLite as a sort of experiment, and I've started to develop a habit of making tiny little one-to-many without rowid tables for properties like phone numbers and email addresses. I sort of get why LDAP is the way it is a little more now. Not remotely all the way, of course.| Athena's blog
I've started writing SQL with lowercase keywords and it seems largely fine this way. How do people feel about this?| Athena's blog
Every time I add a full name field to a table I stop, go read Falsehoods Programmers Believe About Names, and then seriously consider factoring name into its own table.| Athena's blog
I should really figure out how to customize my locale to get en-US but with metric measurements without having to pretend to be Swedish for measurement purposes only.| Athena's blog
I'm not sure but I think the problem with Akonadi earlier today was locale-related, somehow. The new version must be more sensitive to locale issues. Qt applications have spewed warnings about the locale for some time but only today did I realize that the locale was incorrectly set using utf8 instead of utf-8. I fixed that and installed the new packages again and this time it all seems to be working right.| Athena's blog
Reverted to yesterday's rootfs snapshot (with a minor snafu due to mismatching kernel and modules) and I guess I'm just waiting for them to fix it? It seems like this would be a hard issue to miss.| www.alm.website
One of my main reasons for rejecting Rust libraries has become questionable ownership models. If you talk about an object that contains all the other things and I pass around handles to the things inside of it instead of owning the things myself and passing around borrowed references I am turning around and running the other way. (Because that means you have just reinvented unchecked pointers, is this not obvious?)| Athena's blog
I was just thinking about the zlib format and remembered Chris Ferdinandi's post about gzip's inefficiency on small files, which led me to wonder how much lower the floor of useful sizes to compress would be if the Web had used Content-Encoding: zlib instead of Content-Encoding: gzip as standard.| Athena's blog
Apparently the original IBM Personal Computer design team considered the 68000 as CPU but rejected it over concerns it might not be production-ready soon enough. What a world that would have been.| Athena's blog
As a pedant, I love when a fellow pedant says something like, Technically spiders aren't bugs, they're arachnids, because then I get to come back with something like, They said bug, not insect, a bug is any small terrestrial arthropod, and annoy everyone even more.| Athena's blog
Apparently on RISC-V a word is 32 bits, even on 64-bit machines.| Athena's blog
Huh, apparently cPanel and WHM are still a thing.| Athena's blog
I'm gluing notify-send to some of my little scripts that otherwise run silently. Hopefully it will make me spend less brain-power wondering did it actually finish.| www.alm.website
Some Captain Planet villain has convinced this razor manufacturer to sell their detachable razor cartridges attached to handles in four-packs, exclusively.| www.alm.website
You say you're an engineer? Okay, here's a constraint for you: Your initialization budget is 200 ms. Make it work.| Athena's blog
Talk to me about how advanced computers have gotten when you can make one that goes from cold off to desktop in <1 sec.| Athena's blog
Singletons are just global variables. If using a global variable is a bad idea using a singleton for the same thing is almost certainly also a bad idea. Is this not obvious?| Athena's blog
It would be nice if kdialog had the --forms feature zenity has.| Athena's blog
If your program is not doing anything, your CPU usage should be 0. This doesn't seem like a hard concept.| Athena's blog
This is a fifth test (sorry) of my POSSE note stuff, since I realized I could use the GUI text editor to write the note text.| Athena's blog
| Athena's blog
This is the third and hopefully final test of my POSSE cross-posting script for notes.| Athena's blog
This is a second test of my new POSSE wrapper script for notes posted to my site. It uses my existing scripts/note and curl to cross-post to my fedi account.| Athena's blog
The setup is just a simple shell script wrapped around my existing scripts/note that uses curl to make a Mastodon API request.| www.alm.website
The nav bar has probably been the ugliest part of this site's visual design for its entire history. I improved it by stealing Seirdy's design, i.e. basically none except being horizontal and having some space between links.| Athena's blog
Long ago, in the early days of this site, I was led astray by the (I believe by then already dead) promise of the HTML outline algorithm, which promised to allow authors to use <h1> everywhere with appropriate sectioning elements to define the outline structure. Some browsers had purely cosmetic support for this, but the actual semantics never really materialized, so my site has long had this problem that every heading is a heading 1 according to screen readers.| www.alm.website
I've written another story in the universe of Fast Track, this one what I can only describe as a bureaucratic epistolary story. Requests is a series of records of the Alliance of Free Sentients, documenting an experience resembling Fast Track from a very different angle.| Athena's blog
I'm working on a Web project and somehow I think I'm going to mostly manage the standard of usable in Lynx. At the very least I think I'll manage usable with CSS off.| Athena's blog
I've recently learned to love git rebase and git commit --fixup.| Athena's blog
Rust programmers who publish library crates: When I see a version number less than 1.0.0, that reads to me as my API is unstable and will probably break you at some point. If your API is stable, please use version numbers that indicate that. 1.0.0 does not have to be perfect or complete, just stable in its API.| www.alm.website
After setting up kexec, I started to get annoyed at how long regular boots were, especially as suspend-to-RAM has recently stopped working for me, forcing me to shut my machine down more often.| Athena's blog
HTML forms do not support the DELETE, PUT, and PATCH HTTP methods. In many situations these are the most correct methods to use. It is possible to use JavaScript to send DELETE, PUT, and PATCH requests, but this obviously only works if JavaScript is enabled.| www.alm.website
Matthew Butterick argues that underlining is a typewriter habit but isn't it more of a handwriting habit? You're not going to write in italics or bold-face, the easiest way to emphasize handwritten text is to underline it, and I'd guess that's where the typewriter convention came from. Using a highlighter pen or another color works too but then you need more than one pen.| www.alm.website
For some time this site has had a section called Essays, which held pages that were created before the blog stopped being for meta purposes only, but really ought to be blog posts. I've now moved those to the blog.| Athena's blog
If you use the Archive of Our Own (AO3) and often switch between light and dark color schemes (e.g. you use your phone's dark mode and your laptop's light mode, or you have your computer set to automatically switch according to the time), you may find needing to manually switch between Archive skins too annoying to bother with. It is possible, though, to have an AO3 skin automatically react to your system or browser light/dark setting (known technically as the prefers-color-scheme media featu...| Athena's blog
I've published two stories about some aliens who find other species and cultures fascinating, to the benefit of queer humans trying to get away from the Overall Situation. Fast Track is the main, immigration-themed (??) story; I also published a shorter mildly lewd story, Xenophilia In a Crasser Sense.| www.alm.website
A few days after my previous post about kexec warmboots, I can report a few additions.| Athena's blog
I spent a little bit just now figuring out how to make kexec work on Void Linux, so I figured I'd blog about it.| Athena's blog
The computer and I are not friends. The computer, being incapable of both suffering and joy, is merely a minion.| Athena's blog
So on the one hand, I find it really annoying that science fiction and fantasy are often a single category in book listings, but also I do sort of understand how they're distinctly different from most other genres?| www.alm.website
I have finally managed to write a Star Trek fanfic that is not Weird. Who would like to see Seven of Nine receive pants.| Athena's blog
I looked at the Hare programming language recently, and it is so close to being perfectly something I want. Because, basically, what I want is C but better.| Athena's blog
For reasons I have an iPhone, and because of Apple sabotage and my freeloading I use Apple Music on it. I've always known this is a mistake but it was highlighted recently.| Athena's blog
I've published another piece of fiction, The Shapes of Emma. This one features a technological shape-shifter up against the greed of the world's largest computer manufacturer and the bland evils of capitalist dystopia.| www.alm.website
You may have thought that the EXHL project was dead since I didn't touch it for eight months or so. It is alive though; today, I've been fixing bugs and getting stuff that's been sitting in my working tree committed. Draft 2 is probably a bit off still, but I think I know where it's going.| Athena's blog
A serial bus| www.alm.website
wanna hear something cursed| www.alm.website
Graphical user interfaces (GUIs) can be implemented in a variety of ways. On a multi-tasking operating system, there is a need for some division between the application and the component that actually puts something on the screen. There are many different places that this division can be put, and a variety of ways information can flow across it.| www.alm.website