<-- En robe en jean après trois jours en vêtements androgynes, à me faire appeler « Monsieur », en train d’attendre que mon document LaTeX mentionnant une hypothèse holistique du self-harm s’auto-exporte et se compile avec #Guix et #noweb, flappant en me tapant les mains et en écoutant NIN, me retenant d’éclater d’un rire diabolique

I recently got back to my work on literate #GRASP, and I think things finally started to look good. I implemented a new document representation (the previous one was built from cons-cells and multiple hacks), and I have some working tests that are capable of rendering this representation to "unicode-art" strings, and I'm currently working on a new parser that would work well with that representation.

I still have a long way to go before I get a running system, and I don't think it's a very good literature, but if you're a #Scheme maniac or a fan of #LiterateProgramming and you don't find the #Java runtime environment too repulsive, I invite you to follow the work and provide your feedback:

https://github.com/panicz/grasp/blob/main/literate/grasp.org

Currently, when exported to pdf, the document has about 100 pages, and it mainly describes language extensions that were developed for Kawa Scheme to develop GRASP. I think it might be a delight to people who enjoy studying language extensions, but unfortunately the part about the architecture and implementation of GRASP has yet to be developed.

(the document is written in #Emacs #OrgMode using its #noweb component for literate programming. I recommend reading it from Emacs rather than from its github preview)

grasp/literate/grasp.org at main · panicz/grasp

The GRAphical Scheme Programming Environment. Contribute to panicz/grasp development by creating an account on GitHub.

GitHub

OK j’ai passé une partie de la semaine dernière à lire de la documentation LaTeX, à me lancer dans une crise existentielle, à trouver un nouveau pseudo + éventuellement à accepter mon identité de personne non-binaire, à me mettre en retard de plus d’une semaine sur une fiche de lecture à rendre, à faire planter mon seul terminal Linux, à concevoir (dans ma tête) une infrastructure de blog pérenne™, à tenter d’installer Alpine Linux, MX Linux, NetBSD, et OpenBSD, sur un ordinateur défectueux acheté dans un destockage d’entreprise, et à accepter sur le principe les conséquences du fait que j’avais survécu à un #génocide dématérialisé et hybride, et que mon travail était une responsabilité collective.

Cet après-midi, j’ai donc pris mes responsabilités et contacté une camarade pour lui demander de l’aide sur mon téléphone, et éventuellement lui emprunter un ordinateur d’ici la réception de mon Framework 12.

Bref : mes billets seront directement publiés sur IPFS en tant que documents PDF, et référencés avec #Keyoxide en tant que preuves de type lien.

Cela signifie que si votre navigateur a le plugin #IPFS, il fetchera automatiquement mes billets au format PDF… et, en principe, qu’il les partagera tous.

Mes billets seront convertis du format LaTeX au format HTML avec NoWeb, et peut-être convertis au format GemText pour un export #Gemini avec un fork de Pandoc ou Skribilo (seuls les liens ayant une option [GemText=(...),] seront exportés). Ils seront accessibles à l’URL miroir.blog.tld sauf que je ne suis pas encore sûr·e de l’URL vu que je ne suis pas sûre de vouloir encore m’appeler Océane. Je demanderai conseil autour de moi, je garderai peut-être « Océane » comme pseudo (ou comme prénom) donc je renouvellerai le nom de domaine océane.fr, en tout cas pour l’année suivante.

Je pourrai éventuellement traiter océane.fr comme le miroir officiel de la liste de preuves Keyoxide vers laquelle redirigera un autre nom de domaine, mais je pourrai aussi utiliser un SLD dans la grande tradition du web 3 lol. (Je n’ai pas l’intention de m’investir dans les cryptomonnaies, mais ça peut parler à certaines personnes et faire les ponts entre libertarianisme et anarchisme – je veux partager des ressources au plus grand monde possible, et dire « Twitter est co-responsable d’un génocide » à des libertarien·nes me branche aussi – le FQDN de mon miroir n’a pas de raison particulière de changer le contenu de mes billets.)

Je compte partager mes modifications avec la communauté de rédaction de l’outil utilisé et mettre tout le reste en programmation lettrée avec #NoWeb. Mon éditeur de texte (Emacs) contiendra un script local (au répertoire de mon blog) de pré-remplissage des documents .tex basé sur un script Perl extrayant les éléments de configuration lettrée du document le plus récent dans l’arborescence git (par date de commit), et la syntaxe interprétée sera exportée dans un dossier /tmp/ci-blog/. De la sorte, à quelques exceptions triviales près, mon blog sera entièrement reproductible, en sus du code source de mes documents, accessibles dans mon projet git.

De la sorte, si un serveur OpenPGP devait être partagé sur IPFS, mon blog survivrait littéralement (en théorie et dans le cas de colonies extraterrestres) à une vitrification totale et irrémédiable de la planète Terre. La disparition ponctuelle de mon miroir ne serait même pas à proprement parler une perte car elle stimulerait l’apparition de pairs partageant mes documents IPFS.

J’ai réalisé ce travail grâce au défi #100DaysToOffload (lien), dans Emacs, en configurant et utilisant un système de références académiques pendant un an. cc #ToutEstMieuxAvecEmacs

PS : merci à mon mécène LiberaPay, je suis obligée de me bouger à cause de lui 😅 je n’en demandais pas tant donc je suis très touchée.

#Blog #Blogging #BloggingTools #BloggingSoftware #CIBlog #CIBlogging

Framework Laptop 12 pre-orders are now open!

Framework Laptop 12 is a 12.2” convertible with stylus support. Designed for easy customization, upgrades, and repairs.

Framework

time to iterate for vectors now that I have my punch out grid for enough chars.

all the caps are done. lowers done. this isnthe biiiig version of course. goal is some stamps.
also to mess with subtrsctive modelling and ultimately make a high carbon steel set of them at a few sizes.

then I can do more #programming. LOL

we are bridging #digital and #analogue hard over here.

hammers, steel, wood, chisels, sanding, and letters!!!? yep.

#fontforge #typography #stamps #noweb lol

@nixCraft at the same time, everything related to standard tools is not bloated and works on both relatively weak and more powerful hardware
#noWeb
@alxlg Interesting, but I need actual TeX, because I'm using #noweb for #literateprogramming. Is #Typst #freesoftware?
#Tech #Rant One thing I dislike about #LiterateProgramming in #OrgMode is that code chunks are not cross-referenced or labeled in the finished document, as they are in #noweb. #GNU #Linux #Emacs #programming
NEW by @rrix: A toolkit for Literate Programming imapfilter configurations | Emacs noweb

Over on imapfilter filters my imap I have cooked up a simple Org Babel page which generates a set of mail filtering rules for the imapfilter utility. It's operated using Lua, but with a lot of rules it gets a bit difficult to manage. I broke my configuration up in to a number of org-mode tables that are processed by ten lines of Emacs Lisp which turns it in to Lua code that is written to the imapfilter configuration.

While I don't publish the raw org-mode file since it has un-published headings with rules I don't want to publish, the usage flow is pretty simple, so let me walk you through it:

  • in the imapfilter configuration I define a handful of lua helper functions which take a list of mails to act on, a search key, and a destination to move the matching mails.

  • Define some emacs-lisp which takes a table as variable; these are passed in to the ELisp as list of lists, the inner list being a single row. This is stored in a named Org Mode source block. It takes each row and turns it in to a single Lua statement:

    (thread-last tbl (seq-map (lambda (row) (format "mb = file_by_%s(mb, \"%s\", \"%s\")" (first row) (second row) (third row)))) (s-join "\n"))
  • Define a table with at least three rows

    • the first is the "type" of rule – notice in the format call that the string contains file_by_%s, this first row is used to pick one of the helpers.
    • the second row is the value to filter on, that subject, sender, or destination.
    • the third row is the destination to send it.
  • Create "lua" source code blocks with noweb syntax enabled, and with a tangle destination of the imapfilter configuration. That calls, via noweb, our code generation elisp, passing in each table, and then tangling that generated lua in to the configuration file. <<call-imapfilter-from-table(social-lists)>>

The end result is a set of tables which can be shared or published, edited and reordered etc, easily, and then seamlessly exported as a configuration file.

I do this as well in some other places:

Using literate programming for generating configuration is really fun and lets you scale your code and configuration while keeping it legible!

https://cce.whatthefuck.computer/updates#20231002T162108.807896 #Emacs #noweb #true
Literate Programming with Org Babel - The Complete Computing Environment

The equivalent of #Vinyl on the internet is communicating via mailing lists with people you know and mostly like. Ideally on your own domain. #RetroNet #NoWeb #AsyncCommunication #Decentralised #BringBackThe90s