M .gitignore => .gitignore +1 -0
@@ 6,3 6,4 @@ node_modules
public/
.DS_Store
yarn-error.log
+.vercel
M package.json => package.json +2 -1
@@ 26,7 26,8 @@
"develop": "gatsby develop",
"format": "prettier --trailing-comma es5 --no-semi --single-quote --write \"src/**/*.js\"",
"test": "echo \"Error: no test specified\" && exit 1",
- "deploy": "pushd ./public; now -n blog; popd"
+ "deploy": "cp -r .vercel ./public/.vercel; pushd ./public; vercel; popd",
+ "deploy:prod": "cp -r .vercel ./public/.vercel; pushd ./public; vercel --prod; popd"
},
"devDependencies": {
"prettier": "^1.10.2"
M src/pages/2021-08-20-could-you-treat-a/index.md => src/pages/2021-08-20-could-you-treat-a/index.md +4 -5
@@ 1,10 1,7 @@
---
date: "2021-08-20T20:03"
-path: '/202108202003
+path: '/202108202003'
title: "Could you treat a character sheet as an append-only log?"
-tags:
- - "#rpg"
- - "#software"
---
@@ 67,7 64,9 @@ what you spent that gold on last time, you can check if that ability
really cost that much XP, you can check up on how many times you shot
your gun in last weeks session.
-And for free, you get the ability to rewind through your sheet. If you add markers to major changes or sessions, you could step through what your character has done and how your character has grown and changed over time.
+And for free, you get the ability to rewind through your sheet. If you add
+markers to major changes or sessions, you could step through what your character
+has done and how your character has grown and changed over time.
I'm sure there are other things you could use all this information
for. Needless to say, by asking myself this question I've ended up
A src/pages/2022-03-07-prolog-as-a-specification-language/index.md => src/pages/2022-03-07-prolog-as-a-specification-language/index.md +50 -0
@@ 0,0 1,50 @@
+---
+date: "2022-03-07T21:56"
+path: '/202203072156'
+title: "Prolog as a Specification Language?"
+---
+
+I’ve been writing quite a lot of [Prolog](https://www.metalevel.at/prolog) for
+work, and it’s got me thinking about possible alternative uses of the language.
+If you haven’t used Prolog before, Prolog is a functional, declarative,
+logic-based programming language. Instead of telling the computer what to do,
+you tell it what should hold as true.
+
+For the curious, at work we generate Prolog databases from some of our data and
+have written Prolog rules to determine the compatibility of some complex product
+sets. It’s an interesting solution to the problem, and I think it’s saved us a
+lot of coding in more traditional languages.
+
+But back to the point.
+
+ It had been a long day in the Prolog mines, tweaking rules and defining
+ predicates, and after my tea I set down for a treat — I opened up
+ [Fraidycat](fraidyc.at/) and skimmed through some blog posts and articles. Long
+ story short, I came across [Pantagruel](https://pantagruel-language.com), a
+ specification language.
+
+Even though a large part of Pantagruel went over my head, it did make me think –
+what if I used Prolog as a specification language?
+
+I don’t want to get too deep into what specification languages are here, so I’ll
+be lazy and [link to the wikipedia
+page](https://en.wikipedia.org/wiki/Specification_language).
+
+I’ve played with [Alloy](alloytools.org/) and with
+[TLA+](https://lamport.azurewebsites.net/tla/tla.html) a couple of times, but
+never stuck with them for very long. They’re quite abstract, and I fear that
+I’ll bounce of them more than once before I understand enough for them to be
+useful.
+
+I think Prolog might make a slightly different kind of specification language
+than Alloy or TLA+, though. Instead of describing a model out of Objects or
+Sets, you might describe what should hold true if the specification is to be
+achieved. Using back-tracking, you may even then be able to generate possible
+solutions to your specification and double-check that they work for you.
+
+I don’t really know what a specification would look like in Prolog. I’m not
+entirely sure where I should start, or what I would want to specify. But I’m
+going to attempt to put some time aside to think about it a bit. My usual
+pattern will likely result in me coming back to the idea after months and months
+and chipping away just a bit, only to start the cycle again. But it is an
+interesting thought.