Watch
Postcraft, my massively overengineered static site builder just got a bit more complicated (but a lot more efficient). It's actually a series of apps ("transmissions") using Transmissions, my pipeliney thing. This is what they used to do :
- md-to-sparqlstore - walked a given dir on my local fs, reading all the markdown files, posting these off to a SPARQL store
- sparqlstore-to-html - queries the SPARQL store and renders the individual results as HTML pages
- sparqlstore-to-site-indexes - ditto, to make an
index.html
of recent posts
For every new blog post I made, every single one of the hundreds of existing posts also got re-processed. Not very efficient.
So I've added a filesystem Watch service. When a file changes, then it goes through the processing.
When I say I, Claude Code did most of the work. I have looked at node's watch
before and it is relatively straightforward to use. But there was a fair bit of textbook-like code that needed implementing. Now I have a watch-config.json
that looks like this:
[
{
"name": "postcraft-render",
"dirs": [
"~/sites/danny.ayers.name/postcraft/content/raw"
],
"apps": [
"md-to-store ~/sites/danny.ayers.name/postcraft",
"store-to-html ~/sites/danny.ayers.name/postcraft",
"sparqlstore-to-site-indexes ~/sites/danny.ayers.name/postcraft"
],
"watchEvents": [
"change"
]
}
]
It watches dirs
and on changed files triggers a call to the apps
in sequence. The path given with each app is the location of a tt.ttl
file which contains the settings for the app. Here's the core of the transmissions.ttl
for md-to-store
:
:md-to-store a :Transmission ;
:pipe (:p10 :p20 :p30 :p40 :p50) .
:p10 a :Restructure ;
:settings :prepFilename .
:p20 a :FileReader ;
:settings :readerSet .
:p30 a :Escaper .
:p40 a :MakeEntry ;
:settings :entryExtras .
:p50 a :SPARQLUpdate ;
:settings :storeArticle .
Here are the statements for the settings for Restructure
process :
:prepFilename a :ConfigSet ;
:rename (:pf1) .
:pf1 :pre "sourcePath" ;
:post "sourceFile" .
Restructure
modifies the shape of the data, a message passed along the pipeline transmission in the form of a JSON object. It's needed here because the watch system does a call using sourcePath
as the name of the changed file, but the Filereader
process expects a sourceFile
.
Like I said, this is all seriously over-engineered for a static site builder. But the component processors like Restructure
and Filereader
have no direct coupling and are totally reusable. A major reason for applying this to the static site builder is that the posts going into the SPARQL store are now part of my Personal Knowledgebase. Using that is over in the realm of Semem.
Having said all that, what I don't have yet is an easy way of tidying up. I created lots of blog entries in setting this up, the only reliable way I have for cleaning now is to empty the graph in the SPARQL store and run the process-everything transmissions. Hey ho.
Predicting Earthquakes with AI
This is a problem I've been intermittently looking at for a few years now. I'm strongly convinced it is feasible to get useful notification ahead of dangerous seismic events...with some major caveats.
There is a lot of reliable, historic and real-time seismic data available. It's typically expressed as motion over time of points on the surface of the planet. It's possible to correlate between data from different monitoring locations to pinpoint with reasonable accuracy the source of particular sets of measurements, after the fact.
AI tools have, in recent years, got very good at making predictions about the behaviour of physical systems over time. Synthetic videos can be generated that convincingly show apparent real-world events.
But the system in which earthquakes occur is massive, extremely complex and chaotic.
Radio Precursors
of the behaviour of multidimensional time series data
But t
to be in condition to receive radio seismic precursors it takes very strong earthquakes and we must be very close to them
http://www.vlf.it/opera_2015/opera_2015.html
Journal 2025-07-27
tl;dr Problem-solving is the navigation of scale-free conceptual spaces to achieve intentional state changes, where agents with finite working memory dynamically adjust their viewport through decomposition and abstraction operations until unknown system patterns align with known behavioral templates.
Micro Burn-Out
I wish to mint this phrase. You know exactly what it means without any more explanation. I've been hit by one, was overwhelmed by what I was working on, while also determined to give myself a holiday. So after months of fairly intensive work on code projects, I switched off for a couple of weeks. Now, totally lacking momentum. Ok, figure out where I was trying to do.
Adaptive Problem-Solving through Scale-Free Knowledge Navigation
An approach to problem-solving is to regard it as navigating between different scales of conceptual representation to fit patterns within the constraints of finite working memory. This is the motivation behind the Ragno and ZPT ontologies, and what I've been playing with in the Semem project.
Ragno is an attempt to capture a knowledgebase, independent of domain. That is the corpus. ZPT and attempt to describe a navigation system over that corpus. The controls are : Zoom (abstraction level), Pan (conceptual domain), Tilt (representation perspective) - serving to find the optimal knowledge frame for pattern matching within memory constraints.
Consider :
- Pattern Matching as Navigation - Problem-solving involves finding the right "view" into a knowledge space where unknown patterns match known ones
- Working Memory as Viewport - The agent's finite capacity defines the maximum complexity processable at once (like a camera's field of view)
- Scale-Free Architecture - Concepts exist at multiple abstraction levels simultaneously, allowing zoom in/out navigation
Dynamic Chunking - Decomposition/abstraction operations adapt the knowledge representation to fit the working memory constraints
- Dynamic Chunking - Decomposition/abstraction operations adapt the knowledge representation to fit the working memory constraints
What I'll do when I get cancer
Dramatic title, but legitimate. I estimate there's 1/3 probability cancer sees me off, 1/3 general decline because aging, 1/3 hit by a bus/asteroid. I still smoke, spent most of my life drinking at a risky level. So I can do a first-person view on this.
I'm actually prompted because a friend's mother got a bad diagnosis. Wish I could help. I'm a little embarrassed about how little I know the science around cancer. I lost my wife to a very aggressive leukemia. I think it was the aggressive chemo that did for her, but I do believe the medics were doing their best.
What do I know? Well for starters, despite the cultural norm on it, it's not a death sentence. My dad got bladder cancer 4? decades ago. Had radiotherapy, left him with a tangerine for fluid storage, but he's still happily plodding through his 90s.
What do I know? Well quality of life is the overarching principal. Health issues are monsters at sapping the will to live. One day at a time, sweet Jesus H. Yeah, that's a thing - religion can mitigate the deathiness. I don't think it's necessary for making the best of things. One of the physicists' models of the universe ("block"?) has reality as a smear over space-time. Also, like butterfy wings, a person's existence modifies the universe. Caroline has persistence.
Sod Dignitas. I have a serious phobia there - suicide, and nearby capital punishment. I'm blubbing up now, cannot think on such things. Bit ironic given that I repeatedly have the ideation, very prone. Actually got ropes hanging from the ceiling in most of my rooms, for fun stuff. Loads of sharp things and toxins. But just no.
Point there, IMHO, if you're thinking Dignitas, you are missing the point. And being a drama queen.
The only good suicide : Cheree
I have very strong reservations about the power of positive thought in fixing physical problems. But there's no argument against the converse, if you have negative thoughts all the time, you have a shit life. Very likely to cause physical problems.
What? Ok, practically. Cancer is cells that have slipped out of kilter, reproducing when they shouldn't be. So on an intuitive level I think this suggests that encouraging the norm is likely to be helpful.
We have evolved to be creatures to survive in this bizarre environment. Got brains even. I don't know, it sounds nonsense as I type, but bear with me. We move around, gather food, are very sociable, procreate.
Oh yeah, first, that's a point. When I get my own bad cancer diagnosis, all kinds of crank ideas will be worth considering. It might be nonsense, but if there's a 0.001% chance of some Siberian tree snot being helpful, why not.
Nobel prize smartypants Linus Pauling got convinced Vit C was the cure for cancer. I remember throwing the notion to AaronSW and he threw it back, he said it speaks for itself - no supporting evidence, and prostate cancer got Pauling.
But I do suspect high dose Vit C might be useful. What I think is important is that the human body doesn't neatly categorise its subsystems. When I'm crashing with my internal organs destroying themselves at a cellular level, I will be extremely vulnerable to external forces - viruses, bacteria, yeasts and the crew. Vit C is good for boosting immune system before infection, Vit D good for chasing off the infection after it's got you (I read a lot during Covid).
As far as I can gather, an awful lot of the human system relies on gut bacteria. To the pile of Vit C & D, plus a multi I'll add Saccharomyces boulardii as a supplement worth taking. Lactic stuff is probably useful if you like cheese. Water kefir aka tibicos (lovely word, like chisanbop) is a bit pot luck, but I grow it, it has sorted bad guts for me more than once. Avoid heavily processed food, yadda yadda...
I'm about to make myself blush. The feeling that doing the stuff that we were built to do, normalise the system : forage/hunt, socialise, procreate. The first is well-documented, physical exercise and creative thought is good for you. People are massive, community, friends - health issue, bring people closer.
Ok, blush time : have sex, or more conveniently : masturbate a lot. Do you see now why I'm narrating this cancer as my problem? Suggest to my friend to suggest to his mother that she masturbates a lot.
Laughing is medicine for aching wrists. I'll get my coat.