Skip to content

Instantly share code, notes, and snippets.

View johnwcowan's full-sized avatar
💭
Chief cook and bottle washer

John Cowan johnwcowan

💭
Chief cook and bottle washer
View GitHub Profile
@johnwcowan
johnwcowan / bang.scm
Created October 7, 2020 20:02
The K language's ! operator in Scheme, or, Polymorphism gone wild
(import (srfi 1))
;; The K language's polymorphic ! operator
(define bang
(case-lambda
((x)
(iota x))
((x y)
(cond
((exact-integer? y)
CYRANO (redescendant vers eux):
Mon récit ?. . .
(Tous rapprochent leurs escabeaux,
se groupent autour de lui, tendent le col. Christian
s'est mis à cheval sur une chaise):
Eh bien ! donc je marchais tout seul, à leur rencontre.
La lune, dans le ciel, luisait comme une montre,
Quand soudain, je ne sais quel soigneux horloger
S'étant mis à passer un coton nuager
Sur le boîtier d'argent de cette montre ronde,
@johnwcowan
johnwcowan / dioscuri.md
Last active January 17, 2021 21:36
Dioscuri, a Gemini-adjacent protocol for interaction

This gist will be maintained, and supersedes all IRC and email description of Dioscuri.

Dioscuri, a Gemini-adjacent protocol for interaction

Dioscuri is a protocol intended to supplement Gemini for doing things like performing remote actions or running an application server. It is the POST to Gemini's GET. Dioscuri servers will run on a different port from Gemini servers, so that they do not interfere with each other; it will often be useful to run multiple servers on one host, so no fixed port is specified. The use of client certificates for authorization is strongly recommended, especially if requests are interpreted to affect server-side state.

The name "Dioscuri" is the Latin version of the Classical Greek name Διόσκουροι for the Heavenly Twins, Castor and Pollux/Polydeukes, who were called Gemini in Latin; the constellation is named after them. I say dee-OH-skoo-ree, but Greeks, classicists, and others should feel free to pronounce the name their way.

Great thanks to the members of [#gemini](ir

@johnwcowan
johnwcowan / avsl-nutshell.txt
Last active August 29, 2022 16:34
AVSL (A Very {Simple|Small|Safe} Language) in a nutshell
Goals:
Easy to learn and use by beginning programmers
Easy to relearn and use by "perpetual intermediate" programmers
Suitable for use as a front-end language (not in a browser)
Not infuriating to advanced programmers modulo syntax
Support a "professional" syntax
Case insensitive (except strings)
Everything should be as simple as possible but no simpler
High-level design choices:
@johnwcowan
johnwcowan / FTP.md
Last active August 22, 2022 18:10
FTP protocol for browsers

This document explains the subset of the FTP protocol as defined in RFC 959 which is required to browse FTP directories and download files accessible by FTP. Although there may still exist some conformant but unusual FTP servers around the Internet, this document is intended for accessing the great majority of existing servers hosted on Posix operating systems.

URIs

FTP URIs have the form ftp://example.com/path/to/file,

@johnwcowan
johnwcowan / r7rs-dpk-response.md
Last active June 1, 2021 21:48
r7rs-dpk-response.md

Response to dpk's comments on R7RS-large dockets:

3. Orange

3.1 Random numbers

The idea of a crypto version of the library sounds fine; I don't think we need another SRFI for it, just a ballot question.

3.6 Linear adjustable strings

@johnwcowan
johnwcowan / XCCS-3.0.md
Last active July 19, 2021 18:52
XCCS 3.0 additions

Introduction

This document is a rough specification of proposed additions to XCCS, the internal character set of Interlisp and various other Xerox products and the direct ancestor of Unicode. Since no one else is maintaining it, the Medley Project has taken over the effort. The initial objective here is to be able to make use of more modern fonts, for which we need full XCCS-to-Unicode mappings, and to be able to handle the most important characters required to write modern languages.

#
# Name: XCCS (XC-3-1-1-0) to Unicode
# Unicode version: 12.0
# Table version: 0.1
# Table format: Format A
# Date: 6-Aug-2020
# Author: Ron Kaplan <Ron.Kaplan@post.harvard.edu>
# John Cowan <cowan@ccil.org>
#
# This file contains mappings from the Xerox Character Code Standard (version
2 0x0020 0x0020
2 0x0021 0x0021
3 0x0024 0x0024
3 0x0027 0x0027
2 0x002E 0x002E
2 0x22C1 0x0041 0x0332
2 0x22C2 0x0042 0x0332
2 0x22C3 0x0043 0x0332
2 0x22C4 0x0044 0x0332
2 0x22C5 0x0045 0x0332
2:13 PM <jcowan> "Ever since the great Kyros set up the Persian Empire, to wring all gold an silver has been the policy of the Persian kings.
2:14 PM <jcowan> And what became of this wealth? Was it spent on public works to ease the lot of their subjects? Nay; it was piled up in bags of coin and bars of metal in Sousa and Hagmatana and Parsa, or made into statues..
2:15 PM <jcowan> So, as precious metal became scarcer in the empire, business ran slower, for every man clutched what coins he had, not knowing when he would get his fingers on more.
2:16 PM <mangol> is circulation the fundamental problem here?
2:17 PM <jcowan> Now this vast treasure your Alexander seizes, and in an orgy of profusion spends it: leading armies to India, and paying his soldiers lavish bonuses, and ordering vast public works. Like the Tigris in spring, the stream of money in the Empire rises. Now every man spends his money quickly, lest itts value shrink while it lies in his wallet. So business thrives, and prices rise, and trader