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)
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
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.
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
format call that the string contains file_by_%s, this first row is used to pick one of the helpers.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:
kwriteconfig5 shell scripts which are run by home-managerUsing 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