Tootfinder

Opt-in global Mastodon full text search. Join the index!

@fanf@mendeddrum.org
2026-04-23 11:42:02

from my link log —
Consistent overhead byte stuffing for binary logs.
pvk.ca/Blog/2021/01/11/stuff-y
saved 2021-03-19

@simon_brooke@mastodon.scot
2026-03-23 23:38:33

Yet another blog post on #Lisp memory management. If you are not obsessively geeky, this one isn't for you.
journeyman.cc/blog/posts-outpu

@fortune@social.linux.pizza
2026-02-22 15:00:02

A novice was trying to fix a broken lisp machine by turning the
power off and on. Knight, seeing what the student was doing spoke sternly,
"You cannot fix a machine by just power-cycling it with no understanding
of what is going wrong." Knight turned the machine off and on. The
machine worked.

@simon_brooke@mastodon.scot
2026-02-23 15:04:58
Content warning: Lisp semantics of nth

SBCL #CommonLisp
(nth 2 '(1 2 3 4 5 6))
3
#Clojure
(nth '(1 2 3 4 5 6) 2)
3
#Scheme
(list-ref '(1 2 3 4 5 6) 2)
;Value: 3
So, they differ on the…

@simon_brooke@mastodon.scot
2026-04-19 10:46:15

I did ten hours on #PostScarcitySoftware yesterday, and then slept a bit, and then woke up with an intention to rapid prototype a '#Lisp structure editor in the browser' idea I've been thinking on for a while. I did about five hours on that, and it's looking promising.
I&…

The WEditor prototype, viewing a Clojure project file. The popup text at the mouse pointer shows the underlying s-expression represented by that element in the displayed document. This isn't perfect but it looks usable.
The editor displaying its own source code (in Clojure). Again, this looks usable.
The prototype editor displaying some code from the Post Scarcity 0.0.6 prototype.
The editor viewing some Lisp 1.5 code, from Beowulf (actually taken from page 66 of the Lisp 1.5 Programmer's Manual).
@simon_brooke@mastodon.scot
2026-04-20 15:44:18

It being an astonishingly beautiful afternoon here, instead of sitting indoors hacking #Lisp, I am out in the wood with my pussy cat hauling out timber for the sawmill.
It's a hard life.
#TheJoyOfCrofting (unironically, for once)

Hitching up a log for hauling. The log, which is already cut and lying in a tangle of other timber, is attached to the steel winch cable with a webbing strop. Horrible, my silver grey cat, lies in the sun waiting to assist.
View from the tractor. The cable stretches away into the wood to a turning block, and from there to the log, which is just being pulled into the picture from the right. The floor of the wood is green and grassy; the whole scene is bathed in sunlight.
The log has been dragged right into the middle of the picture, where it has a clear line to the tractor, and the turning block has been removed.
The Little Tractor That Can parked at the edge of the wood, with the log drawn up close behind it.
@simon_brooke@mastodon.scot
2026-03-20 13:10:45

I've written another essay about my mad #PostScarcitySoftware #Lisp system.
"We don't need to know, or have known, these people to build on their work. We don't have to, and cannot in detail, fully understand their work. There is simply too much of it, its complexity wou…

@fanf@mendeddrum.org
2026-03-15 15:42:03

from my link log —
A preview of Coalton 0.2, a statically-typed Lisp.
coalton-lang.github.io/2026031
saved 2026-03-14

@simon_brooke@mastodon.scot
2026-03-18 11:26:15

Oh, Jings, my own execution traces are REALLY hard to read. It's my own fault: these are my traces in my software, there's no-one else to blame, but...
#Lisp

Screenshot from my editor. In the bottom pane, a REPL, in which I'm defining and executing the function `member?`. I'm doing this because it exercises a particular bug in `cond` (I think), which I'm struggling to understand. In the upper pane, an execution trace shows what the Lisp evaluator is doing...

It's really hard to get the level of detail right when writing execution traces. There's far more detail here than I need to trace the particular but I'm working on, even though I have only ena…
@fanf@mendeddrum.org
2026-02-12 18:42:04

from my link log —
Technical issues of separation in function cells and value cells: Lisp-1 vs Lisp-2.
nhplace.com/kent/Papers/Techni
saved 2026-02-12

@simon_brooke@mastodon.scot
2026-04-18 10:37:57

Well,. the good news this morning is that i found a stupid bug in `cdr` which, once you've seen it, you can't unsee, so the seventh #PostScarcitySoftware #Lisp prototype is now completing initialisation and entering the REPL.
The bad news is that there's an unterminating recu…

@cybertailor@craba.cab
2026-04-04 08:04:13

Скучаю по тем временам, когда "ИИ" означал программирование на Lisp и Prolog

@simon_brooke@mastodon.scot
2026-04-17 10:23:35

OK, if I have an environment pointer *in the stack frame*, then not only does it greatly simplify the #Lisp calling convention, it also means that the evaluation time environment is captured in any stack trace and can be inspected in any break.
Downside: it's one more inc_ref/dec_ref for every function call, which is a performance hit.
H'mmm...

@fanf@mendeddrum.org
2026-04-01 11:42:02

from my link log —
Too much locality... for stores to forward.
pvk.ca/Blog/2020/02/01/too-muc
saved 2020-02-02

@simon_brooke@mastodon.scot
2026-03-14 00:52:27

I have written another essay for my blog. This one is about where I'm up to with my mad #Lisp system, and is *really* obscure!
journeyman.cc/blog/posts-outpu

@simon_brooke@mastodon.scot
2026-04-03 22:45:28

I've been hacking on Beowulf again, today; and I'm reminded how enchanted I am with the Beowulf logo, which sort-of designed itself.
I take no credit for it, really.
#Lisp 1.5
git.journeyman.cc/simon/beowulf

A Lisp trace of the evaluation of the function RANGE, in Beowulf. Beowulf is a recreation of Lisp 1.5, and therefore has all its prompts and error messages written in Old English.

The evaluation trace naturally forms the symbol Lambda.
@simon_brooke@mastodon.scot
2026-03-01 12:08:09
Content warning: More Lisp semantics

Modern #Lisp systems distinguish between several different types of string-like-things:
1. symbols
2. strings
3. keywords
By convention we typically use symbols as handles on things bound in the environment, keywords as handles on things bound in maps (hash tables), and strings as data.
However, in all the Lisp specifications I can find, and certainly in

@simon_brooke@mastodon.scot
2026-03-28 11:08:37

OK, folks, I've written yet another incomprehensible essay on the intricacies of implementing a software environment for the hardware of the deep future.
Read this only if you're incurably geeky, and, ideally, interested in #Lisp.
#PostScarcitySoftware

@simon_brooke@mastodon.scot
2026-04-05 12:17:38

#Software peeps: do you still do box diagrams to work out how your structures will sit in memory?
#Lisp

A section of a design document I am working on, comprising text surrounding a box diagram. The text is:

In the beginning was the Word

My intention is that memory will be considered as an array of 64 bit words.

Each word may be considered as

1. a cons cell: two instances of object32, each having one mark bit, three tag bits and 28 payload bits;

2. a single object64, having one mark bit, seven tag bits, and 56 payload bits.

Note that, for any word, the first four bits comprise the mark and …
@simon_brooke@mastodon.scot
2026-04-04 09:59:39

OK, Beowulf bug. Both EVAL and APPLY in Beowulf are straight transcriptions of the mexprs on pages 70 and 71 of the #Lisp 1.5 Porgammer's Manual.
CONC is the only FEXPR I have implemented so far (and one of only three FEXPRs in the manual).
The unit test for CONC fails, because EVLIS is called on the argument list by EVAL (line 20 on page 71) before it reaches APPLY, and therefore b…

@simon_brooke@mastodon.scot
2026-04-04 10:32:41

SO!
I can fix my code so that the arguments to FEXPRs are not evaluated, by deferring the call to EVLIS into APPLY; but this is not what the code given on pages 70-71 does, and so my code will then not directly follow the specification in the #Lisp 1.5 Programmer's Manual;
OR,
I can not do this, in which case FEXPRs will not work as specified on pages 18 and 19.
(Note that…

@simon_brooke@mastodon.scot
2026-04-01 12:02:56

OK, so as I've decided my new #Lisp prototype should use read-tables and read-macros to read anything, I need to implement `eval` before I can implement `read`!
Still, progress is being made.

@simon_brooke@mastodon.scot
2026-02-03 14:26:47

In #Clojure, if you query a set for a member, and that member is present, that member is returned:
user=> (#{:a :b :c} :a)
:a
The traditional #Lisp function ASSOC has the signature
(ASSOC store key) => value
where store is assumed to be a list of (key . value) dotted pai…

@simon_brooke@mastodon.scot
2026-03-01 12:33:05

Two days ago, I had eight (out of one hundred and forty) unit tests failing, and I wasn't happy with my code. Last night, I had forty failing, and I thought things were improving. This morning I have one hundred and twenty four failing, so I *know* I'm on the right path!
#Software
#Lisp

@simon_brooke@mastodon.scot
2026-02-25 08:08:02

Right, problems for today. First. #Lisp problems. I think the bug in `cond` fires when a clause succeeds but returns `nil`.
First, write a unit test which checks for that, but run that test on my laptop where it physically cannot generate millions of stack frames.
Second, rewrite `cond` to call a separate helper function, `cond_clause`, which takes one arg and returns `nil` on failure, `…

@simon_brooke@mastodon.scot
2026-02-24 08:19:12

Last night I discovered a huge 'new' bug in the integer arithmetic of my #Lisp system which I'd been unaware of because I don't have a unit test for it and it isn't something I'd been worried about and don't normally do.
Weirdly, it makes me feel hopeful. It is this:
:: (- 5 4)
1
:: (- 4 5)
4,294,967,295
What's happening here? Integer…

@simon_brooke@mastodon.scot
2026-02-26 10:28:42

Woohoo! I just typed
`(mapcar (lambda (n) (:documentation (meta n))) (keys (oblist)))`
into the REPL of my frankenlisp, and printed out the documentation of every function it knows.
I am getting close to the point that other people can play with this...
#Lisp

@simon_brooke@mastodon.scot
2026-02-25 14:04:03
Content warning: More Lisp semantics

In #CommonLisp, `=` takes arbitrary numbers of args, but `eq` takes exactly two.
In #Scheme `=` takes arbitrary numbers of args, and `eq?` also takes arbitrary numbers of args.
In #Logo, `equalp` …

@simon_brooke@mastodon.scot
2026-03-25 17:40:37
Content warning: Implementing infinity in Lisp arithmetic

David fucking Hilbert wrote 'after infinity, counting continues naturally, infinity plus one, infinity plus two, and so on' (I'm quoting from memory, so could be slightly wrong).
I consider this anathema. I'm proposing that any computation which adds any number to infinity, or multiplies any number by infinity, should return infinity.
This is, as I understand it, the intuitionist heresy.
Is there anyone prepared to argue I shouldn't do this?