惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Check Point Blog
S
Security Affairs
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Secure Thoughts
Recorded Future
Recorded Future
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
The Blog of Author Tim Ferriss
B
Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Google DeepMind News
Google DeepMind News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
T
The Exploit Database - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
AWS News Blog
AWS News Blog
MongoDB | Blog
MongoDB | Blog
Y
Y Combinator Blog
Google Online Security Blog
Google Online Security Blog
T
Troy Hunt's Blog
I
InfoQ
L
LINUX DO - 热门话题
WordPress大学
WordPress大学
C
Cisco Blogs
G
GRAHAM CLULEY
The Register - Security
The Register - Security
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Schneier on Security
Schneier on Security
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
H
Hacker News: Front Page
小众软件
小众软件
雷峰网
雷峰网
The Hacker News
The Hacker News
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Tor Project blog
博客园 - 聂微东
N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
The GitHub Blog
The GitHub Blog
腾讯CDC
P
Palo Alto Networks Blog
Scott Helme
Scott Helme

Lobsters

Lunacy | Red Vice CIFSwitch: a non-universal Linux local root vulnerability RIPE NCC session fixation: poaching logins with an Atlas probe GNOME 2.20 but its Web Components Agentic Search for Context Engineering – Leonie Monigatti Garnix is shutting down [not OC] akashina.tngl.sh/jjc Concerning Emacs (and Jazz) Nitpicking the shell history scene in ‘Tron: Legacy’ What's cooking on SourceHut? Q2 2026 The tenth OpenPGP email summit Package managers that package package managers Clojure on Fennel part three: parsing WordPress at 23 Finding Miscompiles for Fun, Not Profit GitHub - creusot-rs/creusot: Creusot helps you prove your Rust code is correct. Announcing Rust 1.96.0 | Rust Blog A Love Letter to Neovim sqlite AGENTS.md Am I a Bad Friend? CSS vs. JavaScript • Josh W. Comeau Erlang Ecosystem Foundation - Supporting the BEAM community A brief note about slot access cost in Common Lisp Keyboard latency probe Rethinking the GNOME clipboard issues Back to the Building Blocks’ Building Blocks Tech Notes: Theseus: translating win32 to wasm Fast is better than slow Content-addressed Rust builds (or, what kache actually caches) Intent to Prototype: Embedding API Canada’s Bill C-22 and the security cost of collecting more data 5 PostgreSQL locking behaviors that trip people up okmij.org Stop advertising in your commits! | AksDev GitHub - mplsllc/macsurf: A modern web browser for Classic Mac OS 9 PowerPC. Real CSS3, ES5 JavaScript, native HTTPS — built with CodeWarrior on the Carbon API. Introducing DoomBench - Can Your Data Stack Run DOOM? What are some of your favourite developer tools? Building a Scalable Ingestion Pipeline with Temporal (Part 1) Converting shallow Git bundles into normal repositories Are you a member of any professional associations? What is a harmonic? An interactive comic about additive synthesis How Virtual Tables Work in the Itanium C++ ABI Using SwiftUI to Build a Mac-assed App in 2026 Rust (and Slint) on a jailbroken Kindle. ~jack/lambda-on-lambda - Serverless Haskell on AWS - sourcehut git Human proof for FOSS contributions Extremely simple internet radio controlled via IRC Announcing BABLR Splitting Konsole views from Helix to run tools | AksDev GitHub - yugr/rust-slides Serving files over HTTP three ways: synchronous, epoll, and io_uring update docs with information about building with build.py (#979) · astral-sh/python-build-standalone@c9c40c5 A Simple Makefile Tutorial On C extensions, portability, and alternative compilers Switching to Colemak | Pedro Alves Just How Bad Was The Intel IAPX432? Nix's Substituter List Is Not a Routing Table Accelerating copy_if using SIMD Lambda on Lambda: Serverless Haskell on AWS | Blog Announcing feed-repeat v1.0 Scaling Akvorado BMP RIB with sharding EYG news: A host of CLI improvements, new guides and new effects The social contract of writing JS Crossword C array types are weird; and related topics Flatpak will depend on systemd – OSnews Migrating from Go to Rust | corrode Rust Consulting A portentous reunion Vivado Licensing Options How my minimal, memory-safe Go rsync steers clear of vulnerabilities the entropy layer of a wavelet codec, on its own GitHub - nferhat/fht-compositor: A dynamic tiling Wayland compositor. Debian SE Linux and PinTheft Does bulk memmove speed up std::remove_if? (No.) 声明式部分更新 | Blog | Chrome for Developers Fully in-browser container builds Dianne Skoll's Web Site - Remind The Architecture of Open Source Applications (Volume 1)Berkeley DB Pardon MIE? - ironPeak Blog “Long-Term Support” doesn’t mean what you think Jira IS Turing-Complete May I recommend thinking of Emacs as your Fortress of Solitude hershey HP QuickWeb, Singular And Pointless That one time I used Go panics for flow control A new suite of modern tools coming for editing and publishing RFCs From the Tabletop… The Digital Antiquarian Building a Host-Tuned GCC to Make GCC Compile Faster Are we self-sovereign PKI yet? Claw Patrol: an open-source security firewall for agents | Deno Revised^7 Report on Scheme, Large: Procedural Fascicle Draft is now public A Network Allow-List Won't Stop Exfiltration — André Graf From AFSK to Goertzel – µArt.cz Software For My New Home Server Introducing Neptune: Direct3D virtualization for QEMU AI Agent Bankrupted Their Operator While Trying to Scan DN42 - Lan Tian @ Blog mimalloc: A new, high-performance, scalable memory allocator for the modern era Making wl_shm fast The Soul of Maintaining a New Machine - Third Draft | Books in Progress What is Git made of?
Floodgap Gopher-HTTP gateway gopher://thelambdalab.xyz/1cuneiforth/
gopher.flood · 2026-05-23 · via Lobsters
  ___              _ ___        _   _  / __|  _ _ _  ___(_) __|__ _ _| |_| |_ | (_| || | ' \/ -_) | _/ _ \ '_|  _| ' \  \___\_,_|_||_\___|_|_|\___/_|  \__|_||_|     --=[ A programming puzzle ]=--   You and your team of 23rd century archaeologists have been digging for days with no result, but it seems your efforts have finally been rewarded. You stand before what looks to be a rusty shipping container with large letters scratched into its side.  The letters read:       "The Archive of Late 20th Century Computing"   Giddy with excitement, you wrench open the door and step inside.   The container is filled with crumbling plastic boxes.  Inspecting a few, they appear to be packed full of optical disks of some kind. Picking one such disk out at random, you see that it has a label affixed to the front.  Happily you find that you can understand the text - your study of the languages of the ancients has paid off, it seems.   Roughly translated, the label reads as follows...   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=   "This disk contains FORTH, an early interactive environment for writing and running computer programs.   "The data on this disk is engraved as a series of bits, or zeros (0) and ones (1), in a clockwise spiral, starting from the outer rim, and can be read with an optical microscope.   "The first 350'208 bits on this disk contain a document, encoded as a black and white bitmap image, 684 pixels in width and 512 pixels in height.  The bits correspond to pixels as follows:      bits:  0  1                    683           v  v                    v          +--------------------------+          |  |  | ...         ... |  |          |--------------------------|     684->|  | ...                   |          |--------------------------|          |                          |          |                          |          |                          |          |                          |          |--------------------------|  349524->|  | ...            ... |  |<-350207          +--------------------------+   "That document explains how to interpret the rest of the bits."   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=   Intrigued, you immediately take the disk back to your field office and, using your trusty OptoScanner 5000 (tm) you extract the bits from the disk:   Disk image   You decide to spend the rest of the afternoon getting this ancient software running again!     --=[ What is this? ]=--   Cuneiforth is my attempt to write a self-contained FORTH computing environment for the "single page" Chifir computer conceived by Nguyen and Kay [1] as part of their Cuneiform system for software preservation.  With the information above, it should hopefully be possible for someone with a modest amount of programming experience to extract the bitmap document from the binary disk image (linked above), program an emulator to emulate the Chifir machine it describes, and use it to get the FORTH system contained in the image running.   If this sounds at all like fun to you, I'd love it if you gave this a try!  The Chifir machine is explicitly designed to be easy to describe and emulate, but that doesn't necessarily mean that it is. The proof of the pudding is in the eating, as they say.   As additional motivation, Cuneiforth is designed to be extensible and programmable from within.  It has a small built-in help system, a built-in editor, and built-in instructions for setting up persistent storage. It's far from perfect, but you might find it's a fun toy to mess around with and write programs for, even after you've solved the puzzle.   That said, Cuneiforth is only a hobby project and I not a professional programmer.  If you are looking for a well-designed VM-based computer to build real things, Uxn/Varvara [6] or DuskOS [5], are _far_ more likely to be what you want.   Anyway, if you do give this puzzle a go, please let me know how you get on! You can either leave a comment in the guestbook below or just email me at plugd@thelambdalab.xyz.  I'm very curious to learn whether it's even possible for you to get this running with only the disk image and the "label" text above!   Post to guestbook View recent posts     --=[ !!Warning!! !!Spoilers Ahead!! !!Warning!! ]=--   Beware: if you plan to attempt the programming puzzle above, do not continue reading!  And definitely don't open the repositories below. The disk image and the description above is meant to be enough on its own to get Cuneiforth running.     --=[ Source Code ]=--   The following repositories contain the source code I've written as part of this project. To build the disk image above you'll need the first two (ChASM and Cuneiforth).  The last is the Chifir emulator I've been using to test the system so far.  For details on how to use these, refer to the README file in each repository.   ChASM: An assembler targeting the Chifir machine Cuneiforth: The assembly source and build files for Cuneiforth itself. ChiVM: An SDL2-based Chifir emulator     --=[ Note to Chifir Purists ]=--   To my knowledge, the one way the machine I describe in the above disk image differs from the original Chifir description is that the codes its getkey operation produces are ASCII standard character codes.  In contrast, the codes returned by the getkey operation in Nguyen and Kay's Chifir, while very similar to ASCII for alphanumeric keys, are slightly different for other keys.   I've taken this liberty because it feels like make-work to force emulator authors to deal with using a slightly different set of 7-bit character codes.  This wouldn't provide a meaningful challenge (I'm very confident that anybody capable of writing an emulator can easily implement the mapping between ASCII codes and the codes listed in the original Chifir description) but would increase the tedium of doing so, making the process less fun.  Further, the Chifir description I've included in the disk image - which is otherwise essentially identical to the original - lists these modified codes out in full, so this choice shouldn't impact the effectiveness of the system as a software preservation tool.     --=[ Credits and inspiration ]=--   I found Devine Lu Linvega's talk [2] at the 2023 Strange Loop conference absolutely fascinating.  This talk is where I first learned of the Nguyen and Kay paper and Chifir.  More recently I encountered Virgil Dupras' CollapseOS [4] and DuskOS [5] projects, both of which reminded me that FORTH can be - and originally was, of course - a self-contained computing environment.  Not only that, it can be a computing environment that can be understood from the ground up by a non-specialist like me.   --=[ References ]=--   [1]: Nguyen and Kay, "The Cuneiform Tablets of 2015" [2]: Devine's Strange Loop 2023 talk [3]: 100 Rabbits' Uxn/Varvara system [4]: CollapseOS [5]: DuskOS