This page contains links to The Arcology Garden site's new and updated content and occasional tech-ish personal updates by Ryan Rix. You can subscribe to this feed at https://arcology.garden/updates.xml. It's also mirrored to my Fediverse instance.
Drafted a Letter to Senator Prozanski and Representative Holvey in Support of SB619
I wrote a Letter to Senator Prozanski and Representative Holvey in Support of SB619, a promising Oregon state Data Rights and Privacy legislative framework modeled after the California Consumer Privacy Act being drafted by my local representatives. While I missed the window for official testimony in last week's public hearing session, I hope that this letter and legislation are not left on the cutting floor.
Published version 0.7 of the Data Rights Protocol DataRights DSAR Privacy
Today we tagged a new version of the Data Rights Protocol, a new “common denominator” for data rights interchange.
Over the coming months we’ll be integrating it in to Consumer Reports’ Permission Slip and a number of #privacy / data management middleware providers will be integrating it for their customers to provide a simple unified messaging protocol for communicating #datarights requests like data sale #optout, deletion portability and #DSAR between end users and businesses through this ecosystem of authorized agents and privacy infrastructure providers.
This work will stream-line data rights access for consumers and businesses by moving the cost of identity verification to a one-time action performed by Agent applications, and provide a simple taxonomy for companies to automate their data rights pipelines around.
The system we’re designing operates more like a network of notaries
than any sort of self-sovereign hardware-crypto backed decentralized
identity system that folks on the Fediverse may be
excited by, but this has been designed to target the technology that
average consumers and businesses are accessing today while leaving the
door open for more exciting technology down the line. It’s JSON, HTTP,
and libsodium
.
Without regulatory intervention a system like this will never be comprehensive – there is little reason for the nastier data brokers in @yaelwrites@mastodon.social ‘s BADBOOL to implement a DRP interface, but for companies that respect consumers DRP would be a slick part of an automated Data Management/Access/Deletion system that would be cheaper and more resilient than paying a bunch of paralegals to look at blurry smartphone photos of ID cards all day long. With the California Attorney General's recent announcement that requests submitted by services like Permission Slip should be respected, it's natural for businesses and advocates to build systems that can scale these requests up to a society that wants them but feels disempowered to exercise them in a meaningful way. Data Rights are not going away and ignoring even these baseline rights isn't going to work out so well.
I’ve been really happy to work with @kevinriggle@ioc.exchange on moving the DRP forward toward this 1.0 implementation vision, sharpening our safety/security focus, and building something which is informed by more than just my experience/scars serving DSAR and Portability requests at my last job.
Published my 3D printed bike basket boot 3DPrinting Programming OpenSCAD Cycling
This is an older project of mine, but I wanted to link to it today so I published it
I'd like to have the ability to attach a milk crate to the back of my bike sometimes. This 3D print is designed to attach to the bottom of a milk crate and sit snugly on Marra's rear pannier rack. Once sat, it is then bungee'd on to the frame and lower rack points. This plastic milk crate is big enough to hold two grocery bags securely, though it's a bit too tall for me to leave on all the time. That's fine because six bungee points is all it takes to remove it and bring it in to a restaurant or shop with me.
Testing basic integration of feed2toot
In theory this should end up on the The Arcology Garden's Fediverse profile…
I have Forth and Lisp running on a z80 hobbyist board called the MakerLisp Machine
In 2019 I went to the Vintage Computer Festival PNW at the lovely Living Computer Museum (which I miss dearly) and picked up a weird little machine, a laser-cut wood box with a small dev board in it called the MakerLisp Machine. It runs a simple bare-metal lisp on a ez80 CPU. I picked it up and proceeded to do nothing with it until quite recently when I wanted to start to learn Forth and felt that a good way to do so would be on something akin to the hardware in the Forth books which I am reading along with.
Now I have some resources put together on the MakerLisp Machine page including details on how to get a CP/M running on it and doing important things like loading Zork, and connecting to the board over USB with my phone. I also spent some time asking myself and answering Why program a z80? which is perhaps interesting.
I am now running my own Fediverse instance
I am now Self-Hosting on the Fediverse with (Pleroma for now, eventually) Akkoma. Lately I have been yearning to self-publish, and I am still feeling like I am a ways away from being able to self publish directly within The Arcology Project so I set up a new microblog on my old https://notes.whatthefuck.computer domain running Pleroma. I wanted to run Akkoma but it was kind of a pain to get it running in a declarative fashion. There is a NixOS module in nixpkgs pull-request land which I will hopefully swap to.
I'm treating this as an experiment and as a single-user instance. I'm terribly uninterested in community building or moderation right now, sorry. Some day I may host a Fediverse instance that others could use but for now I am the only person I'm willing to be responsible for and to. If it runs decently enough and without trouble, I'll probably kludge together an RSS-to-Mastoapi thing with the Arcology Feed Generator so that my posts here do federate, and then think about some solution like webmention or so to capture responses back in to my document system.
In Protect Me From What I Want, Tim Bray writes about wanting an algorithm that reflects community values and calls for the tools to build them.
Protect Me From What I Want - Tim Bray (direct: https://www.tbray.org/ongoing/When/202x/2022/11/28/On-Algorithms)
This has me thinking once again about the most effective algorithmic system I have used, the client-side, introspectable, customizable Adaptive Scoring system in Emacs's Gnus news reader.
When reading my mail and feeds I add only one bit of information by hitting either `j` or `i` ("was this message worth reading" j as hjkl down/next, i as ignore) and my system extracts sender and subject keywords and stores a big blob of scores for each of those, then applies those scores to every message in every folder I open. After years of training my inbox and my feed reader, it's better than Twitter's social-engagement-focused algorithms or anything a "smart" feed reader could deliver to me, even NewsBlur's training system pales.
I refreshed my document musing about this and wondering once again how to go about doing this on a backend. I've wanted this stuff literally anywhere elsewhere for nearly a decade now.
Updated my NixOS Automatic Partitioning Installer script to support multiple ZFS pools
For my NixOS rebuild of The Wobserver, my general-purpose linux "homeserver" hosted by the wonderful catgirls at Wobscale Technologies, I have gone with a full ZFS installation for both my main partition and my data pools. I wanted to keep them separate so that the OS is only running on the SSD and this week I made some updates to my automated installation script based on cleverca22/nix-tests' justdoit.nix.
With these changes, I was able to set up a mirrored raidz on 10TB of
spinnies, and a root partition and /nix
on
the SSD. My plan is to build out The
Wobserver at home, slowly setting up proxy_pass
directives over Tailscale to plumb services from
the existing Fedora host to the Wobserver before taking these disks up
to Seattle to install in the chassis that is hanging out in the
datacenter. This will be the death-knell of my last Fedora Linux installation. 🫡
{
kexec.justdoit.zfsPools = terra-firma = {
devices = "$ROOT_DEVICE";
volumes = {
root = {
snapshot = false;
compression = false;
mountPoint = "/";
};
nix = {
snapshot = false;
compression = false;
mountPoint = "/nix";
};
};
};
tank = {
devices = "mirror /dev/sda /dev/sdb mirror /dev/sdc /dev/sdd";
volumes = {
home = {
snapshot = true;
compression = "lz4";
mountPoint = "/home";
};
media = {
snapshot = true;
compression = "lz4";
mountPoint = "/media";
};
srv = {
snapshot = true;
compression = false;
mountPoint = "/srv";
};
};
};
};
It took a fair bit of heavy-lifting and debugging to get this script to run on my homeserver, not the least because the little 4-sata HP Microserver I am booting it off of does not support booting from the SSD installed on the ODD sata port, so I have a GRUB2 installation on an USB drive that I'll have to be sure to move to a new flash drive before installing in the wob.
Slowly making Arroyo useful outside of my own system
I spent some time this week making Arroyo Nix importable as <arroyo>
in my NIX_PATH
. With this set up, I was able to
move a bunch of my support functions in to an nixpkgs
overlay as pkgs.lib
including my Nix Version Pins which are a bit easier
to work with as a result (consider Mastodon in Emacs for example).
I also spent some time updating my vsketch and vpype packages to
include some more utilities, and should publish an update with some Plotter Art I made to The Lion's Rear this
week. For a while I'd just kept these package changes in a nixpkgs
branch but keeping that branch up to
date and dealing with the occasional merge conflicts was kind of a big
pain, so they get moved in to the Arroyo overlay.
Having this as an easier to use – i hesitate to call any of this easy to use – overlay means that I'm a bit closer to being able to distribute a package of Nix helpers and a bootstrap script to get Arroyo Emacs running from any Linux with the Nix language installed. With that and some packaged up versions of "minimal" Emacs, Home-Manager and NixOS setups it would be possible to bootstrap a new Arroyo outside of my own. Some day soon perhaps.
I've also stated to work on deploying The Wobserver to a handful of
drives I have in my apartment, but nixpkgs-unstable
had a bug in the Kernel build
scripts which i only found after mysteriously missing the binary cache
and four hours of compiling. I'll try again on Monday, but I would like
to have my Wobscale server moved
to NixOS by year-end.
Updated my Nix Version Pins to contain more magic
My bi-weekly process of updating my system usually goes like this:
- update my
nixpkgs-unstable
git clone because nixpkgs managed bynix-channel
was giving me absurd errors that no one could help me with: "The manual appears to depend on the location of Nixpkgs". That file contains a helper built aroundmagit
which will get me to the point where I usually have merge conflicts to deal with. - one by one, update the revisions in Nix Version Pins to their latest
releases; replace their
sha256
entries withsha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
, an infinite scream to signal to the computer that it shouldn't silently use the version existin on the system. Nix uses thissha256
rather than the Git reference because✨purity✨ - Run arroyo-flood to build the system, this will fail multiple times, one for each scream, telling me what the expected hash is. Copy those in to the document, go to the next one. eventually the build will succeed,
Obviously this sucks. It sucks a lot. But with my whole house of
cards it's hard to do better. If you were working on .nix
files inside of nixpkgs
or a similar monorepo you could just
call out to nix-prefetch-git
to update the
files. jwiegley/nix-update-el
even does this in the editor for you!
After losing two hours yesterday to a mis-copied ref
which caused chaos to
ensue when my system imported home-manager
as emacs-overlay
, I decided to get these automated
update functions working. It was a bit of a pain to get it working for
me, and I documented it along with some useful apocrypha that I learned
in building these durable, programmatic org-mode documents.
In "This document contains
Magic" I described the careful house of cards I built to get nix-update-el
working inside of org-mode documents,
and then documented goofy stuff I did to make org-auto-tangle
insert the cached revisions for functions which aren't
supported by nix-update-el
. The end result
of that is that I can go through these less-stressful steps to update my
machine:
- Call cce/update-nixpkgs-checkout to update nixpkgs and then possibly resolve merge conflicts myself.
- Call
nix-update-branch-revs
to fetch the latest revision for modules usingbuiltins.fetchGit
. - Call
nix-update-decls
to update therev
andsha256
for the rest. Note the prefix argument which will forcenix-prefetch-git
to fetch the latest revisions of the default (or specified) branch. - arroyo-flood only once
is this really better than reinstalling Fedora Linux every six months? maybe… is it fun? sometimes…
How does targeted advertisement surveillance work?
I still don't understand the attack-vector how buying targeted advertisements can be used to unmask particular individuals (the example in mudge's testimony: democracy-desiring Chinese citizens posting on twitter illegally).
can anyone explain this to me?
Update
Someone pointed out to me that 3rd party cookies still exist and now i am thinking about how much effort i have put in to not thinking about these things and the efficacy of the safe little bubble i've constructed for myself…
wrote a Dead Simple Wallabag Fennel client
I use Wallabag
instead of Pocket as a self-hosted read-it-later service. My koreader
configuration will download the articles I save as EPUB
files where I can highlight and annotate
the articles I read.
As I wrote yesterday, the Local parser of KOReader Notes will populate my Knowledge Base with book highlights, and now it will extract highlights from articles I read. Note that this is not extracting or storing the annotations within Wallabag itself, just the local highlights on my e-reader.
I extended the generator to include a Dead Simple Wallabag Fennel client, just enough fennel to get an OAuth2 access token and attach it to some API requests to extract the pages' URLs. This is then injected in to the template which renders the highlights to org-mode, providing me with Refs I can query against, open in the browser, and see in my backlink buffers.
Refactored my Local parsing of KOReader Notes to Org Roam document system
I completed a fairly complicated refactor of the Local parsing of KOReader Notes to Org
Roam literate programming document so only modified files are
written to disk, and there is some better logging of the process. The
most time-consuming part of the process is not parsing and re-arranging
the data coming out of the lua metadata
files that koreader keeps, but in rendering those to org-mode. Now the
process takes about half a second if none of the metadata files are
changed, and about 0.01 second for each note, let's call it:
...
processing... The Hyperion Cantos 4-Book Bundle
parsed 250 highlights
Maybe rendering /home/rrix/mobile-library/books/Simmons, Dan/Hyperion Cantos 4-Book Bundle, The - Dan Simmons.sdr/metadata.epub.lua
Targeting... /home/rrix/org/highlights/The_Hyperion_Cantos_4-Book_Bundle.org
Skipping ... /home/rrix/org/highlights/The_Hyperion_Cantos_4-Book_Bundle.org
processing... The Book of Joy: Lasting Happiness in a Changing World
parsed 307 highlights
Maybe rendering /home/rrix/mobile-library/books/Dalai Lama & Tutu, Desmond & Abrams, Douglas Carlton/Book of Joy_ Lasting Happiness in a Changing World, The - Dalai Lama & Desmond Tutu & Douglas Carlton Abrams.sdr/metadata.epub.lua
Targeting... /home/rrix/org/highlights/The_Book_of_Joy__Lasting_Happiness_in_a_Changing_World.org
rendering 307 highlights to string
Rendered... 131430
...
real 0m4.135s
user 0m4.110s
sys 0m0.026s
It also has some command-line flags thanks to Penlight's pl.lapp
:
[nix-shell:~/Code/koreader-to-org]$ fennel command.fnl -h
Parse koreader metadata files in to org-mode notes
-f,--file (optional string) only parse one metadata.*.lua file
-e,--epubs (optional string) parse epubs from here, otherwise ~/mobile-library/books
-p,--pdfs (optional string) parse pdfs from here, otherwise ~/mobile-library/books
[nix-shell:~/Code/koreader-to-org]$ fennel command.fnl -f ~/mobile-library/books/Baisao/Old\ Tea\ Seller_\ Life\ and\ Zen\ Poetry\ in\ 18th\ Century\ Kyoto,\ The\ -\ Baisao.sdr/metadata.pdf.lua
processing... The Old Tea Seller: Life and Zen Poetry in 18th Century Kyoto
parsed 3 highlights
Maybe rendering /home/rrix/mobile-library/books/Baisao/Old Tea Seller_ Life and Zen Poetry in 18th Century Kyoto, The - Baisao.sdr/metadata.pdf.lua
Targeting... /home/rrix/org/highlights/The_Old_Tea_Seller__Life_and_Zen_Poetry_in_18th_Century_Kyoto.org
Skipping ... /home/rrix/org/highlights/The_Old_Tea_Seller__Life_and_Zen_Poetry_in_18th_Century_Kyoto.org
This system is still really nice to work with, my highlights have deterministic IDs that can be linked to in my notes, and the highlights come out of my Onyx Nova Color without much hassle thanks to Syncthing. Now to actually do some reading… :)
Posted Yeah, I Run Emacs on my Steam Deck, Ever Heard of It?
I did some hilariously stupid hacks to get a whole Emacs running on the SteamDeck so that I can do my SRS flashcards in bed.
Check it out. Or don't, I'm a goblin not a narc.
New CCE Functionality: List Timelines in Mastodon.el
I really should just upstream this but as usual I am lazy. Mastodon.el can support list timelines, and now it does (for me).
New CCE Module: Jump to Missing Org Roam Nodes
Invoking jump-to-missing-node
picks a
random org-roam link which is of the [[roam:Some Text]]
form, i.e. a stub, so that
you can fill in missing parts of your graph. This paired with help:org-roam-refile is a helpful way to
flesh out your Knowledge Base.
Updated my Japanese Study module to make it easier to make SRS cards and learn katakana
I still fuck up katakana a lot. Some of them are very similar in appearance to hiragana of different sounds, some of them are similar to other katakana. smh, some of them map to radicals…
シ ツ ソ ノ
How frustrating! anyways, I wrote some Emacs Lisp which puts the name of these characters in my minibuffer space when I point to them.
I also wrote some code which calls the command line interface for jisho-api and then parses that out. I could write some python that outputs org-mode syntax directly but this is More Funner so nyaaa. Famous last words. Anyways, it does some nice things like set up org-fc cards for the pronunciation of various Kanji characters and building something similar for vocubulary should be pretty straightforward eventually.
New CCE module: Twitter to Sqlite & iNaturalist to Sqlite
Dogsheep sits in the same space as things like karlicoss/hpi, and my Email and News and Information Pipelines, and the IndieWeb concept of PESOS. In this case, it's some easy scripts which pull data from the public facing APIs and stores them in Sqlite databases.
I'll probably use this to generate pages in my Knowledge Base like I want to do with my KOReader Notes – in
fact I might just write a dogsheep module for koreader
notes some time…
In the mean time, twitter-to-sqlite
and
inaturalist-to-sqlite
are installable
through Arroyo now. Some day I'll get
around to contributing to nixpkgs, or maybe
just make rixpkgs 🤔
New
CCE module: Stop using nix-channels
for
nixpkgs et al so that I can update my laptop
I have a new hack in my crappy NixOS setup to deal with an error I have been getting preventing me from rebuilding my system: "The manual appears to depend on the location of Nixpkgs"
For the last few weeks I haven't been able to update Virtuous Cassette because afterwards I couldn't deploy any future revisions without an absurd error "The manual appears to depend on the location of Nixpkgs"… extremely not my problem. I posted on NixOS discourse and got 0 replies and some sympathy "like"s. Well, I finally hacked together a workaround that can be summed up as "run the nixpkgs channel by myself and pray"… I have no idea why this works when the happy path does not.
New in the Archive: What would you do if a grinning psychopath in half-lotus offered you a lottery ticket?
What if that ticket, if it busted, could cost you your house and put you in personal debt to that same grinning psychopath?
New in the Archive: Is Bolt the latest Theranos, or is their CEO just a dirtbag grinning in half-lotus playing the Venture Capital Startup hypergrowth scam like a virtuoso?
This b2b payments company is offering employees an incredibly risky lottery ticket personally backed by a boss posting slapfights online like a 10 year old with ADHD with the ability to seize your is. property. That is a hell of a Devil's Gambit.
I'm not a betting man but that seems like a bad bet even before the economic recession/Financial drawdown we're slipping in to. I mighta taken it if I was in that position at Uber….. 🙁
First post on the Arcology Garden site update feed
Well well. as evidenced in First Post on the dev feed! I have put together a working feed implementation and can now broadcast thoughts in to the void. Powerful stffu. It's getting late here but I want to at least test publishing new content in to FriendFace, my wee-little feedreader social network inside the Matrix.org Ecosystem.
I have, right now, three feeds worth subscribing to, but may make update feeds for my "evergreen" content:
- This page @ https://arcology.garden/updates.xml
- The Lion's Rear Site Feed @ https://thelionsrear.com/updates.xml
- Arcology Site Engine Updates
I wrote in that first dev update how I am sort of … displeased with the current architecture of The Arcology Project – it works, and it's technically sound, but I'm programming it in three different programming languages right now, and that is mentally taxing even with the documentation and re-structuring which I can do with org-mode's noweb syntax… I'm not sure if that means I will or should or want to rewrite the damn thing any time soon, but I might.
But I have a raft of other personal projects, technical and
nontechnical, which I need to work through before I'll feel comfortable
rewriting this thing. The most important and most daunting is that I
need to / want to / shall rebuild my Wobserver with NixOS – this will
give me a good foot-hold to make sure the arcology in its current
iteration can continue running, but there's quite a lot of complexity in
running my own server, and I am loathe to spend 1000$ on new harddrives
for it even if I must as my mdraid
is
degraded.
NixOS has modules for quite a few of the pieces of software I run right now, but some things I need to either package in to NixOS or run unmaintained docker containers, and glue them in to the manifests. Once I have my wobserver less wobbly, perhaps I can evaluate rewriting this thing but it's kind of remarkable how well it works right now; it's about as close to a static site generator as I can get without writing files to disk, and perhaps the next version will come full-circle and just be an SSG once again.