diff --git a/docs/index.html b/docs/index.html
index 986ae04af2e..4f649b2a837 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -35,15 +35,6 @@
News
-
- The new science of controlling lucid dreams (www.scientificamerican.com)
-
-
-
-
-
-
-
I send myself automated emails to practice Dutch (github.com)
@@ -188,6 +179,15 @@ News
+
+ The trap of "I am not an extrovert" (orkohunter.net)
+
+
+
+
+
+
+
LFFS: Simplicity vs Efficiency (bytes.zone)
diff --git a/docs/log.txt b/docs/log.txt
index 8dcbca44a66..859c4dc06e4 100644
--- a/docs/log.txt
+++ b/docs/log.txt
@@ -1,40 +1,41 @@
-2024/12/27 16:19:35 error parsing https://themargins.substack.com/feed.xml: http error: 403 Forbidden
-2024/12/27 16:19:35 Fetched posts from https://themargins.substack.com/feed.xml, took 92.106944ms
-2024/12/27 16:19:35 error parsing https://highgrowthengineering.substack.com/feed: http error: 403 Forbidden
-2024/12/27 16:19:35 Fetched posts from https://highgrowthengineering.substack.com/feed, took 92.391108ms
-2024/12/27 16:19:35 error parsing https://mikehudack.substack.com/feed: http error: 403 Forbidden
-2024/12/27 16:19:35 Fetched posts from https://mikehudack.substack.com/feed, took 105.443556ms
-2024/12/27 16:19:35 Fetched posts from https://macwright.com/rss.xml, took 173.356168ms
-2024/12/27 16:19:35 Fetched posts from https://www.benkuhn.net/index.xml, took 174.919025ms
-2024/12/27 16:19:35 Fetched posts from https://twobithistory.org/feed.xml, took 182.234043ms
-2024/12/27 16:19:35 Fetched posts from https://www.slowernews.com/rss.xml, took 224.118799ms
-2024/12/27 16:19:35 Fetched posts from https://jvns.ca/atom.xml, took 258.542921ms
-2024/12/27 16:19:35 Fetched posts from https://rachelbythebay.com/w/atom.xml, took 268.567774ms
-2024/12/27 16:19:35 Fetched posts from https://www.wildlondon.org.uk/blog/all/rss.xml, took 292.292736ms
-2024/12/27 16:19:35 Fetched posts from https://routley.io/reserialised/great-expectations/2022-08-24/index.xml, took 322.243712ms
-2024/12/27 16:19:35 Fetched posts from https://anewsletter.alisoneroman.com/feed, took 342.673888ms
-2024/12/27 16:19:35 Fetched posts from https://scattered-thoughts.net/rss.xml, took 352.513821ms
-2024/12/27 16:19:35 Fetched posts from https://danluu.com/atom.xml, took 394.341505ms
-2024/12/27 16:19:35 Fetched posts from https://joy.recurse.com/feed.atom, took 448.077652ms
-2024/12/27 16:19:35 Fetched posts from https://blog.golang.org/feed.atom?format=xml, took 518.046692ms
-2024/12/27 16:19:36 Fetched posts from https://blog.veitheller.de/feed.rss, took 918.897194ms
-2024/12/27 16:19:36 Fetched posts from https://solar.lowtechmagazine.com/feeds/all-en.atom.xml, took 1.270626207s
-2024/12/27 16:19:36 Fetched posts from http://tonsky.me/blog/atom.xml, took 1.540953436s
-2024/12/27 16:19:36 Fetched posts from https://commoncog.com/blog/rss/, took 1.581587984s
-2024/12/27 16:19:37 Content still empty after HTML reader: http://openai.com/index/why-our-structure-must-evolve-to-advance-our-mission
-2024/12/27 16:19:37 Content still empty after HTML reader: https://vrklovespaper.substack.com/p/software-for-stationery-lovers
-2024/12/27 16:19:38 Get "https://eyeondesign.aiga.org/why-did-so-many-mid-century-designers-make-childrens-books/": tls: failed to verify certificate: x509: certificate signed by unknown authority
-2024/12/27 16:19:38 Content still empty after HTML reader: https://todaythings.substack.com/p/to-acquire-a-goshawk-is-a-major-decision
-2024/12/27 16:19:39 Fetched posts from https://gochugarugirl.com/feed/, took 3.694939226s
-2024/12/27 16:19:39 Content still empty after HTML reader: https://www.cell.com/device/fulltext/S2666-9986(24)00583-0?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS2666998624005830%3Fshowall%3Dtrue
-2024/12/27 16:19:40 Content still empty after HTML reader: https://ghostty.org/
-2024/12/27 16:19:40 Content still empty after HTML reader: http://tinylogger.com/max/wnTJ9xu3fw5UiXLp
-2024/12/27 16:19:41 Fetched posts from https://hnrss.org/frontpage?points=50, took 5.814511053s
-2024/12/27 16:19:42 Fetched posts from https://blaggregator.recurse.com/atom.xml?token=4c4c4e40044244aab4a36e681dfb8fb0, took 7.601968653s
-2024/12/27 16:19:42 Skipping writing post, no content: http://openai.com/index/why-our-structure-must-evolve-to-advance-our-mission
-2024/12/27 16:19:42 Skipping writing post, no content: https://www.cell.com/device/fulltext/S2666-9986(24)00583-0?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS2666998624005830%3Fshowall%3Dtrue
-2024/12/27 16:19:42 Skipping writing post, no content: https://ghostty.org/
-2024/12/27 16:19:42 Skipping writing post, no content: https://vrklovespaper.substack.com/p/software-for-stationery-lovers
-2024/12/27 16:19:42 Skipping writing post, no content: https://todaythings.substack.com/p/to-acquire-a-goshawk-is-a-major-decision
-2024/12/27 16:19:42 Skipping writing post, no content: http://tinylogger.com/max/wnTJ9xu3fw5UiXLp
-2024/12/27 16:19:42 Templated 37 posts, took 5.647657ms
+2024/12/27 17:13:36 error parsing https://highgrowthengineering.substack.com/feed: http error: 403 Forbidden
+2024/12/27 17:13:36 Fetched posts from https://highgrowthengineering.substack.com/feed, took 53.389758ms
+2024/12/27 17:13:36 Fetched posts from https://macwright.com/rss.xml, took 57.1302ms
+2024/12/27 17:13:36 error parsing https://mikehudack.substack.com/feed: http error: 403 Forbidden
+2024/12/27 17:13:36 Fetched posts from https://mikehudack.substack.com/feed, took 57.245166ms
+2024/12/27 17:13:36 error parsing https://themargins.substack.com/feed.xml: http error: 403 Forbidden
+2024/12/27 17:13:36 Fetched posts from https://themargins.substack.com/feed.xml, took 63.609381ms
+2024/12/27 17:13:36 Fetched posts from https://www.slowernews.com/rss.xml, took 115.957353ms
+2024/12/27 17:13:36 Fetched posts from https://jvns.ca/atom.xml, took 148.445316ms
+2024/12/27 17:13:36 Fetched posts from https://www.benkuhn.net/index.xml, took 162.166399ms
+2024/12/27 17:13:36 Fetched posts from https://routley.io/reserialised/great-expectations/2022-08-24/index.xml, took 171.955365ms
+2024/12/27 17:13:36 Fetched posts from https://twobithistory.org/feed.xml, took 176.474462ms
+2024/12/27 17:13:36 Fetched posts from https://anewsletter.alisoneroman.com/feed, took 196.79704ms
+2024/12/27 17:13:36 Fetched posts from https://joy.recurse.com/feed.atom, took 262.362621ms
+2024/12/27 17:13:36 Fetched posts from https://scattered-thoughts.net/rss.xml, took 332.114325ms
+2024/12/27 17:13:36 Fetched posts from https://blog.golang.org/feed.atom?format=xml, took 345.30341ms
+2024/12/27 17:13:36 Fetched posts from https://danluu.com/atom.xml, took 356.564239ms
+2024/12/27 17:13:36 Fetched posts from https://www.wildlondon.org.uk/blog/all/rss.xml, took 391.369813ms
+2024/12/27 17:13:36 Fetched posts from https://blog.veitheller.de/feed.rss, took 677.00762ms
+2024/12/27 17:13:37 Content still empty after HTML reader: https://vrklovespaper.substack.com/p/software-for-stationery-lovers
+2024/12/27 17:13:37 Fetched posts from https://solar.lowtechmagazine.com/feeds/all-en.atom.xml, took 874.837915ms
+2024/12/27 17:13:37 Fetched posts from http://tonsky.me/blog/atom.xml, took 969.03638ms
+2024/12/27 17:13:37 Content still empty after HTML reader: http://openai.com/index/why-our-structure-must-evolve-to-advance-our-mission
+2024/12/27 17:13:37 Content still empty after HTML reader: https://todaythings.substack.com/p/to-acquire-a-goshawk-is-a-major-decision
+2024/12/27 17:13:37 Get "https://eyeondesign.aiga.org/why-did-so-many-mid-century-designers-make-childrens-books/": tls: failed to verify certificate: x509: certificate signed by unknown authority
+2024/12/27 17:13:38 Fetched posts from https://commoncog.com/blog/rss/, took 1.860476748s
+2024/12/27 17:13:38 Content still empty after HTML reader: http://tinylogger.com/max/wnTJ9xu3fw5UiXLp
+2024/12/27 17:13:38 Content still empty after HTML reader: https://www.cell.com/device/fulltext/S2666-9986(24)00583-0?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS2666998624005830%3Fshowall%3Dtrue
+2024/12/27 17:13:39 Fetched posts from https://gochugarugirl.com/feed/, took 2.93725792s
+2024/12/27 17:13:39 Content still empty after HTML reader: https://ghostty.org/
+2024/12/27 17:13:40 Fetched posts from https://blaggregator.recurse.com/atom.xml?token=4c4c4e40044244aab4a36e681dfb8fb0, took 4.188897366s
+2024/12/27 17:13:40 Fetched posts from https://hnrss.org/frontpage?points=50, took 4.455470706s
+2024/12/27 17:14:06 error parsing https://rachelbythebay.com/w/atom.xml: Get "https://rachelbythebay.com/w/atom.xml": dial tcp 216.218.228.215:443: i/o timeout
+2024/12/27 17:14:06 Fetched posts from https://rachelbythebay.com/w/atom.xml, took 30.006288625s
+2024/12/27 17:14:06 Skipping writing post, no content: http://openai.com/index/why-our-structure-must-evolve-to-advance-our-mission
+2024/12/27 17:14:06 Skipping writing post, no content: https://www.cell.com/device/fulltext/S2666-9986(24)00583-0?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS2666998624005830%3Fshowall%3Dtrue
+2024/12/27 17:14:06 Skipping writing post, no content: https://ghostty.org/
+2024/12/27 17:14:06 Skipping writing post, no content: https://vrklovespaper.substack.com/p/software-for-stationery-lovers
+2024/12/27 17:14:06 Skipping writing post, no content: https://todaythings.substack.com/p/to-acquire-a-goshawk-is-a-major-decision
+2024/12/27 17:14:06 Skipping writing post, no content: http://tinylogger.com/max/wnTJ9xu3fw5UiXLp
+2024/12/27 17:14:06 Templated 37 posts, took 6.282244ms
diff --git a/docs/posts/bad-research-idea-false-statements-in-e-graphs.html b/docs/posts/bad-research-idea-false-statements-in-e-graphs.html
index 95063e89ac2..6ef76b0838c 100644
--- a/docs/posts/bad-research-idea-false-statements-in-e-graphs.html
+++ b/docs/posts/bad-research-idea-false-statements-in-e-graphs.html
@@ -23,7 +23,7 @@ bad research idea: false statements in e-graphs
OK after much squinting at the progression of rewrite rules... I think I have found an example of where the logic goes wrong.
Can you spot the error?
-
+
The issue here is that the empty int list TupleInt.EMPTY is unified with TupleInt(0, partial(lambda i, self, j: Int.if_(j == self.length(), i, self[j])), 101, TupleInt.empty) aka TupleInt(0, lambda j: Int.if_(j == 0, 101, TupleInt.EMPTY[j])))
Now let's say we do a naive index the empty list like TupleInt.EMPTY[0] . We could say this incorrect, or how we can represent it is that it unifies with Int.NEVER . But it can show up in the e-graph, because in if_ conditionals, the false branch can end up doing indexing that is not allowed. So we want it to not mess things up.
And in this case then, it will evaluate to (lambda j: Int.if_(j == 0, 101, TupleInt.EMPTY[j])))(0) which is Int.if_(0 == 0, 101, TupleInt.EMPTY[0])) which is 101 ... So then what we get is that 101 is unified with Int.NEVER which... isn't good! Is really bad! Because it means all numbers can be unified together basically, i.e. false is true whatever.
diff --git a/docs/posts/does-current-ai-represent-a-dead-end.html b/docs/posts/does-current-ai-represent-a-dead-end.html
index 7e4b6655a7d..d08d8dbe594 100644
--- a/docs/posts/does-current-ai-represent-a-dead-end.html
+++ b/docs/posts/does-current-ai-represent-a-dead-end.html
@@ -44,12 +44,12 @@ What can I do to resolve this?
- Cloudflare Ray ID: 8f8aa21829149e64
+ Cloudflare Ray ID: 8f8af1354ecec599
•
Performance & security by Cloudflare
diff --git a/docs/posts/i-send-myself-automated-emails-to-practice-dutch.html b/docs/posts/i-send-myself-automated-emails-to-practice-dutch.html
index 663e3c09e67..56ecafc14d9 100644
--- a/docs/posts/i-send-myself-automated-emails-to-practice-dutch.html
+++ b/docs/posts/i-send-myself-automated-emails-to-practice-dutch.html
@@ -20,13 +20,13 @@ I send myself automated emails to practice Dutch
This project automates the daily delivery of an email containing three C1-level Dutch words, their English translations, and example sentences. The email looks like this:
-
+
I created this project because I couldn't find a suitable app to help me build a C1-level Dutch vocabulary. I discovered that ChatGPT provides good word suggestions and decided to automate the process. Additionally, I know that I check emails more consistently than apps, making this method more effective for learning.
This project also provided an opportunity to refresh my skills in Terraform and Python.
A CloudWatch Event Rule triggers a Lambda each morning at 7:00. The Lambda retrieves all previously sent Dutch words from DynamoDB. It then retrieves three new words from ChatGPT, stores them in DynamoDB, and sends them to SES. SES delivers them to the end user's email.
-
+
To deploy this project, ensure the following tools and configurations are in place:
diff --git a/docs/posts/into-cps-never-to-return.html b/docs/posts/into-cps-never-to-return.html
index c235f52601d..09ba6f44599 100644
--- a/docs/posts/into-cps-never-to-return.html
+++ b/docs/posts/into-cps-never-to-return.html
@@ -308,7 +308,7 @@ How do I…?
* alphatisation gives you SSA-like
-->
-
+
Now, you might have noticed that we’re giving names to a lot of trivial
expressions—unnecessary cont forms used like let bindings. Why name the
@@ -443,7 +443,7 @@ To C, perchance to dream
You can generate naive C code pretty directly from CPS. The fun and cont
forms become top-level C functions. In order to support closures, you need to
do free variable analysis and allocate closure structures for each.
-(See also the approach in scrapscript in the section called
+(See also the approach in scrapscript in the section called
“functions”.) Then you can do a very generic calling convention where you pass
closures around. Unfortunately, this is not very efficient and doesn’t
guarantee tail-call elimination.
@@ -497,21 +497,21 @@ Acknowledgements
See also
- - No-Brainer CPS Conversion (PDF) by Davis,
+
- No-Brainer CPS Conversion (PDF) by Davis,
Meehan, and Shivers
- - Richard Kelsey has a nice paper (PDF) on
+
- Richard Kelsey has a nice paper (PDF) on
transforming CPS to SSA form. Unfortunately, I have tried to implement it and
it is not as simple as it looks. I think I’m missing something.
- Scheme implementation of naive CPS and hybrid/meta-continuations
by Matt Might
- 90 minute Scheme to C compiler with slide deck (PDF) by Marc Feeley
- - The Orbit paper (PDF) which lays out a bunch of
+
- The Orbit paper (PDF) which lays out a bunch of
interesting optimizations. It’s very terse.
- scheme2c by Joel Bartlett
- - PreScheme (PDF) by Richard Kelsey which lets you
+
- PreScheme (PDF) by Richard Kelsey which lets you
write your compiler and runtime not in C but in a low-level Scheme-like
language
- - ParentheC (PDF), which I should read at some
+
- ParentheC (PDF), which I should read at some
point, and implementation
- Appel’s Compiling with Continuations
- An algorithm for optimal lambda calculus reduction by Lamping, which
@@ -529,7 +529,22 @@
See also
-
+
+
+ -
+
Earlier this year, my grandmother mentioned offhand that she was
+getting brunch with the Plotkins. I, midway through a course by Olin
+Shivers on compiling functional programming languages, did a double take.
+Surely she couldn’t mean… but yep, apparently my grandmother and Gordon
+Plotkin are friends! ↩
+
+ -
+
It’s a several-line change to the compiler to handle
+multiple parameters but for this post it’s just noise so I leave it as an
+exercise. ↩
+
+
+
|