diff --git a/docs/log.txt b/docs/log.txt
index bbb951a323a..19a7887666d 100644
--- a/docs/log.txt
+++ b/docs/log.txt
@@ -1,41 +1,41 @@
-2024/12/26 15:16:26 error parsing https://mikehudack.substack.com/feed: http error: 403 Forbidden
-2024/12/26 15:16:26 Fetched posts from https://mikehudack.substack.com/feed, took 57.826069ms
-2024/12/26 15:16:26 error parsing https://themargins.substack.com/feed.xml: http error: 403 Forbidden
-2024/12/26 15:16:26 Fetched posts from https://themargins.substack.com/feed.xml, took 65.915935ms
-2024/12/26 15:16:26 error parsing https://highgrowthengineering.substack.com/feed: http error: 403 Forbidden
-2024/12/26 15:16:26 Fetched posts from https://highgrowthengineering.substack.com/feed, took 112.270016ms
-2024/12/26 15:16:26 Fetched posts from https://www.benkuhn.net/index.xml, took 149.597085ms
-2024/12/26 15:16:26 Fetched posts from https://www.slowernews.com/rss.xml, took 153.413776ms
-2024/12/26 15:16:26 Fetched posts from https://anewsletter.alisoneroman.com/feed, took 163.512747ms
-2024/12/26 15:16:26 Fetched posts from https://macwright.com/rss.xml, took 191.149108ms
-2024/12/26 15:16:26 Fetched posts from https://twobithistory.org/feed.xml, took 253.715751ms
-2024/12/26 15:16:26 Fetched posts from https://jvns.ca/atom.xml, took 262.082831ms
-2024/12/26 15:16:26 Fetched posts from https://blog.golang.org/feed.atom?format=xml, took 263.936447ms
-2024/12/26 15:16:26 Fetched posts from https://joy.recurse.com/feed.atom, took 268.279796ms
-2024/12/26 15:16:26 Fetched posts from https://www.wildlondon.org.uk/blog/all/rss.xml, took 296.156029ms
-2024/12/26 15:16:26 Fetched posts from https://danluu.com/atom.xml, took 305.702537ms
-2024/12/26 15:16:26 Fetched posts from https://routley.io/reserialised/great-expectations/2022-08-24/index.xml, took 343.629138ms
-2024/12/26 15:16:26 Content still empty after HTML reader: https://pbat.ch/recurse/demos/trio/
-2024/12/26 15:16:26 Fetched posts from https://scattered-thoughts.net/rss.xml, took 513.044182ms
-2024/12/26 15:16:26 Fetched posts from https://blog.veitheller.de/feed.rss, took 740.406675ms
-2024/12/26 15:16:27 Fetched posts from https://solar.lowtechmagazine.com/feeds/all-en.atom.xml, took 1.032738957s
-2024/12/26 15:16:27 Fetched posts from http://tonsky.me/blog/atom.xml, took 1.558082597s
-2024/12/26 15:16:27 Fetched posts from https://commoncog.com/blog/rss/, took 1.713294999s
-2024/12/26 15:16:28 Content still empty after HTML reader: https://todaythings.substack.com/p/to-acquire-a-goshawk-is-a-major-decision
-2024/12/26 15:16:28 Fetched posts from https://gochugarugirl.com/feed/, took 2.936738041s
-2024/12/26 15:16:29 Content still empty after HTML reader: https://yc-map.vercel.app/
-2024/12/26 15:16:30 Content still empty after HTML reader: http://tinylogger.com/max/wnTJ9xu3fw5UiXLp
-2024/12/26 15:16:31 Content still empty after HTML reader: https://www.youtube.com/watch?v=IQqtsm-bBRU
-2024/12/26 15:16:31 Content still empty after HTML reader: https://papermatch.mitanshu.tech/
-2024/12/26 15:16:31 Get "https://www.fixbrowser.org/": tls: failed to verify certificate: x509: certificate signed by unknown authority
-2024/12/26 15:16:32 Fetched posts from https://blaggregator.recurse.com/atom.xml?token=4c4c4e40044244aab4a36e681dfb8fb0, took 6.584293795s
-2024/12/26 15:16:32 Fetched posts from https://hnrss.org/frontpage?points=50, took 6.66856414s
-2024/12/26 15:16:56 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/26 15:16:56 Fetched posts from https://rachelbythebay.com/w/atom.xml, took 30.001801916s
-2024/12/26 15:16:56 Skipping writing post, no content: https://pbat.ch/recurse/demos/trio/
-2024/12/26 15:16:56 Skipping writing post, no content: https://yc-map.vercel.app/
-2024/12/26 15:16:56 Skipping writing post, no content: https://www.youtube.com/watch?v=IQqtsm-bBRU
-2024/12/26 15:16:56 Skipping writing post, no content: https://papermatch.mitanshu.tech/
-2024/12/26 15:16:56 Skipping writing post, no content: https://todaythings.substack.com/p/to-acquire-a-goshawk-is-a-major-decision
-2024/12/26 15:16:56 Skipping writing post, no content: http://tinylogger.com/max/wnTJ9xu3fw5UiXLp
-2024/12/26 15:16:56 Templated 41 posts, took 5.434664ms
+2024/12/26 16:20:00 Fetched posts from https://www.slowernews.com/rss.xml, took 34.724119ms
+2024/12/26 16:20:00 error parsing https://highgrowthengineering.substack.com/feed: http error: 403 Forbidden
+2024/12/26 16:20:00 Fetched posts from https://highgrowthengineering.substack.com/feed, took 40.48465ms
+2024/12/26 16:20:00 error parsing https://themargins.substack.com/feed.xml: http error: 403 Forbidden
+2024/12/26 16:20:00 Fetched posts from https://themargins.substack.com/feed.xml, took 42.062072ms
+2024/12/26 16:20:00 error parsing https://mikehudack.substack.com/feed: http error: 403 Forbidden
+2024/12/26 16:20:00 Fetched posts from https://mikehudack.substack.com/feed, took 45.746484ms
+2024/12/26 16:20:01 Fetched posts from https://macwright.com/rss.xml, took 80.525753ms
+2024/12/26 16:20:01 Fetched posts from https://anewsletter.alisoneroman.com/feed, took 128.778466ms
+2024/12/26 16:20:01 Fetched posts from https://www.benkuhn.net/index.xml, took 159.641063ms
+2024/12/26 16:20:01 Fetched posts from https://jvns.ca/atom.xml, took 161.336374ms
+2024/12/26 16:20:01 Fetched posts from https://twobithistory.org/feed.xml, took 162.985464ms
+2024/12/26 16:20:01 Fetched posts from https://joy.recurse.com/feed.atom, took 205.953173ms
+2024/12/26 16:20:01 Fetched posts from https://www.wildlondon.org.uk/blog/all/rss.xml, took 230.631267ms
+2024/12/26 16:20:01 Fetched posts from https://routley.io/reserialised/great-expectations/2022-08-24/index.xml, took 311.537901ms
+2024/12/26 16:20:01 Fetched posts from https://danluu.com/atom.xml, took 323.413862ms
+2024/12/26 16:20:01 Fetched posts from https://blog.golang.org/feed.atom?format=xml, took 350.106822ms
+2024/12/26 16:20:01 Fetched posts from https://scattered-thoughts.net/rss.xml, took 357.374621ms
+2024/12/26 16:20:01 Content still empty after HTML reader: https://pbat.ch/recurse/demos/trio/
+2024/12/26 16:20:01 Fetched posts from https://blog.veitheller.de/feed.rss, took 642.68361ms
+2024/12/26 16:20:01 Fetched posts from https://solar.lowtechmagazine.com/feeds/all-en.atom.xml, took 997.618397ms
+2024/12/26 16:20:02 Fetched posts from http://tonsky.me/blog/atom.xml, took 1.065095493s
+2024/12/26 16:20:02 Content still empty after HTML reader: https://todaythings.substack.com/p/to-acquire-a-goshawk-is-a-major-decision
+2024/12/26 16:20:02 Content still empty after HTML reader: https://yc-map.vercel.app/
+2024/12/26 16:20:03 Fetched posts from https://commoncog.com/blog/rss/, took 2.127563324s
+2024/12/26 16:20:03 Content still empty after HTML reader: http://tinylogger.com/max/wnTJ9xu3fw5UiXLp
+2024/12/26 16:20:03 Fetched posts from https://gochugarugirl.com/feed/, took 2.716032231s
+2024/12/26 16:20:04 Content still empty after HTML reader: https://www.youtube.com/watch?v=IQqtsm-bBRU
+2024/12/26 16:20:04 Content still empty after HTML reader: https://papermatch.mitanshu.tech/
+2024/12/26 16:20:05 Get "https://www.fixbrowser.org/": tls: failed to verify certificate: x509: certificate signed by unknown authority
+2024/12/26 16:20:05 Fetched posts from https://hnrss.org/frontpage?points=50, took 5.030483278s
+2024/12/26 16:20:06 Fetched posts from https://blaggregator.recurse.com/atom.xml?token=4c4c4e40044244aab4a36e681dfb8fb0, took 5.826166058s
+2024/12/26 16:20:30 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/26 16:20:30 Fetched posts from https://rachelbythebay.com/w/atom.xml, took 30.003363711s
+2024/12/26 16:20:30 Skipping writing post, no content: https://pbat.ch/recurse/demos/trio/
+2024/12/26 16:20:30 Skipping writing post, no content: https://yc-map.vercel.app/
+2024/12/26 16:20:30 Skipping writing post, no content: https://www.youtube.com/watch?v=IQqtsm-bBRU
+2024/12/26 16:20:30 Skipping writing post, no content: https://papermatch.mitanshu.tech/
+2024/12/26 16:20:30 Skipping writing post, no content: https://todaythings.substack.com/p/to-acquire-a-goshawk-is-a-major-decision
+2024/12/26 16:20:30 Skipping writing post, no content: http://tinylogger.com/max/wnTJ9xu3fw5UiXLp
+2024/12/26 16:20:30 Templated 41 posts, took 6.211949ms
diff --git a/docs/posts/a-minecraft-server-written-in-cobol.html b/docs/posts/a-minecraft-server-written-in-cobol.html
index a1a42475785..b94599be6b1 100644
--- a/docs/posts/a-minecraft-server-written-in-cobol.html
+++ b/docs/posts/a-minecraft-server-written-in-cobol.html
@@ -34,7 +34,8 @@
A Minecraft server written in COBOL
player inventory (limited to creative mode)
chat
commands (in-game and via an interactive console)
-
whitelist (persistent; stored in whitelist.json)
+
configuration via server.properties
+
whitelist (persistent; stored in whitelist.json)
Note that blocks with multiple states, orientations, or interactive blocks require large amounts of specialized code
to make them behave properly, which is way beyond the scope of this project.
@@ -64,14 +65,42 @@
A Minecraft server written in COBOL
Then execute make to build, followed by make run to start a server on port 25565.
To configure the server, edit the server.properties file.
+This file is generated automatically on first run with default values for all supported options:
+
+
server-port (default: 25565)
+
white-list (default: false)
+
motd (default: "CobolCraft")
+
Note: By default, the server is only accessible via localhost (i.e., only on your own system via localhost:25565).
To make it accessible from the outside (your local network, via VPN, port forwarding, on a rented server, ...), you
can start the Docker container like this:
-
docker run --rm -p 0.0.0.0:25565:25565 -it cobolcraft
+
docker run --rm -it -p 0.0.0.0:25565:25565 meyfa/cobolcraft
Well, there are quite a lot of rumors and stigma surrounding COBOL.
This intrigued me to find out more about this language, which is best done with some sort of project, in my opinion.
diff --git a/docs/posts/a-new-learning-experience-on-mdn.html b/docs/posts/a-new-learning-experience-on-mdn.html
deleted file mode 100644
index 166edc59511..00000000000
--- a/docs/posts/a-new-learning-experience-on-mdn.html
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
-
-
- James Routley | Feed
-
-
-
- Back
- Original
-
A new learning experience on MDN
-
-
A major update to the MDN Learn Web Development section started in November 2024 and was finally published in December 2024.
-To summarize, the MDN Curriculum has been merged into Learn Web Development.
-This post looks at the background leading up to this decision being made, what the changes mean specifically, and what updates you can expect to see in the future.
The content was pretty successful — by 2019 it was being used by over a million people per month to learn web development topics.
-However, it was noted that the structure was sub-par:
-
-
The content had become bloated with topics that weren't really suitable for beginner web developers — either they were too advanced, or they were out of scope altogether.
-
Beginners tend to want a robust pathway they can follow to get the knowledge they need, rather than being expected to figure out what to learn and when.
-
Learners these days tend to want interactive multimedia content, not just text.
To solve the second issue highlighted above, we created a resource to help guide people towards learning a better skillset, making them more employable, and enabling them to build a better, more accessible, more responsible web of tomorrow.
-
As part of this project, we did substantial research to find out exactly what skills are seen as essential in new hires, and what the most common knowledge gaps are.
-The resulting curriculum was intended to be useful as a study guide for self-learners, and a syllabus for educators to base courses on.
-We also used it as a place to experiment with including interactive multimedia content via our learning partner, Scrimba.
-We launched the MDN Curriculum in early 2024.
The curriculum was well-received by educators, but we quickly received feedback that users found it confusing having two learning resources on MDN, with the curriculum/learning pathway in one place and the learning content in another place.
-
In addition, the pathway was just a curriculum; learners still had to figure out what content to look at to achieve the learning objectives. And it did nothing to solve the first issue listed above — the content was still bloated.
To provide a less confusing, more streamlined learning experience, we decided to merge the curriculum pathway into the MDN Learn Web Development section, restructuring it in the process. The results can be seen at the following new URL — developer.mozilla.org/docs/Learn_web_development.
-
-
The most significant changes are as follows:
-
-
The articles now follow the same structure as the curriculum, with useful background and environment setup information in Getting started, the web fundamentals everyone should know in Core, and optional extra topics in Extensions. There is a clear pathway to follow between each article in the first two major sections, so readers know what to learn next at each stage.
-
In some cases, content was deemed not suitable for a beginner audience and has been repurposed as extensions/additional articles or migrated to other parts of MDN.
-
The specific learning outcomes detailed in the curriculum have been added to the top of the Getting started, Core, and some of the Extension articles, to match the learning outcomes detailed in the Curriculum.
-
Other features from the Curriculum have been migrated across to the Learn Web Development section, such as the About page and Resources for educators.
-
-
Initially, the Curriculum section will stay, however it will be merged into the Learn area over the next few iterations of this work and will be removed when it is felt the time is right.
-We will keep a downloadable version as a resource for educators.
Moving forward, we will continue to update the content and design to make Learn Web Development even more useful to learners and educators.
-
We are intending to give the article content a significant overhaul as we move into 2025. A lot of the content is timeless and does a good job of teaching the fundamentals, but the pacing is uneven, some of the articles are pretty long (which can be intimidating for beginners), and some of the challenges and examples have been around for a long time. Inspired by resources such as the content produced by our learning partner, Scrimba, we intend to shake our content up a bit to make it more fun, bite-size, and digestible.
-
We are also looking at improving the design of our learning pages, to echo the bright bold design we used on the curriculum and improve the experience further.
-You can expect to see regular iterative improvements going forward, so watch this space.
We hope you find the new Learn Web Development content structure useful — have a look around and let us know what you think.
-
If you still have unanswered questions or wish to report issues, please get in touch via the usual communication channels.
-If your issue concerns a specific piece of content, you might want to file a GitHub issue.
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/crt-simulation-in-a-gpu-shader-looks-better-than-black-frame-insertion.html b/docs/posts/crt-simulation-in-a-gpu-shader-looks-better-than-black-frame-insertion.html
new file mode 100644
index 00000000000..70589ff13ae
--- /dev/null
+++ b/docs/posts/crt-simulation-in-a-gpu-shader-looks-better-than-black-frame-insertion.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+ James Routley | Feed
+
+
+
+ Back
+ Original
+
CRT Simulation in a GPU Shader, Looks Better Than Black Frame Insertion
+
+
+
Please enable cookies.
+
+
+
+
You are unable to access blurbusters.com
+
+
+
+
+
+
+
+
Why have I been blocked?
+
+
This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.
+
+
+
+
What can I do to resolve this?
+
+
You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.
If this post was enjoyable or useful for you, please share it!
If you have comments, questions, or feedback, you can email my personal email.
- To get new posts and support my work, subscribe to the newsletter. There is also an RSS feed.
+ To get new posts and support my work, subscribe to the newsletter. There is also an RSS feed.