frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Show HN: Look Ma, No Linux: Shell, App Installer, Vi, Cc on ESP32-S3 / BreezyBox

https://github.com/valdanylchuk/breezydemo
153•isitcontent•7h ago•15 comments

Show HN: I spent 4 years building a UI design tool with only the features I use

https://vecti.com
258•vecti•9h ago•120 comments

Show HN: If you lose your memory, how to regain access to your computer?

https://eljojo.github.io/rememory/
196•eljojo•9h ago•127 comments

Show HN: R3forth, a ColorForth-inspired language with a tiny VM

https://github.com/phreda4/r3
51•phreda4•6h ago•8 comments

Show HN: Smooth CLI – Token-efficient browser for AI agents

https://docs.smooth.sh/cli/overview
78•antves•1d ago•57 comments

Show HN: Slack CLI for Agents

https://github.com/stablyai/agent-slack
40•nwparker•1d ago•10 comments

Show HN: Artifact Keeper – Open-Source Artifactory/Nexus Alternative in Rust

https://github.com/artifact-keeper
147•bsgeraci•1d ago•61 comments

Show HN: Gigacode – Use OpenCode's UI with Claude Code/Codex/Amp

https://github.com/rivet-dev/sandbox-agent/tree/main/gigacode
12•NathanFlurry•14h ago•5 comments

Show HN: Horizons – OSS agent execution engine

https://github.com/synth-laboratories/Horizons
23•JoshPurtell•1d ago•5 comments

Show HN: FastLog: 1.4 GB/s text file analyzer with AVX2 SIMD

https://github.com/AGDNoob/FastLog
3•AGDNoob•3h ago•1 comments

Show HN: Falcon's Eye (isometric NetHack) running in the browser via WebAssembly

https://rahuljaguste.github.io/Nethack_Falcons_Eye/
4•rahuljaguste•6h ago•1 comments

Show HN: I built a directory of $1M+ in free credits for startups

https://startupperks.directory
3•osmansiddique•4h ago•0 comments

Show HN: Daily-updated database of malicious browser extensions

https://github.com/toborrm9/malicious_extension_sentry
13•toborrm9•11h ago•5 comments

Show HN: A Kubernetes Operator to Validate Jupyter Notebooks in MLOps

https://github.com/tosin2013/jupyter-notebook-validator-operator
2•takinosh•4h ago•0 comments

Show HN: BioTradingArena – Benchmark for LLMs to predict biotech stock movements

https://www.biotradingarena.com/hn
23•dchu17•11h ago•11 comments

Show HN: 33rpm – A vinyl screensaver for macOS that syncs to your music

https://33rpm.noonpacific.com/
3•kaniksu•5h ago•0 comments

Show HN: Chiptune Tracker

https://chiptunes.netlify.app
3•iamdan•6h ago•1 comments

Show HN: Micropolis/SimCity Clone in Emacs Lisp

https://github.com/vkazanov/elcity
171•vkazanov•1d ago•48 comments

Show HN: A password system with no database, no sync, and nothing to breach

https://bastion-enclave.vercel.app
10•KevinChasse•12h ago•9 comments

Show HN: Local task classifier and dispatcher on RTX 3080

https://github.com/resilientworkflowsentinel/resilient-workflow-sentinel
25•Shubham_Amb•1d ago•2 comments

Show HN: GitClaw – An AI assistant that runs in GitHub Actions

https://github.com/SawyerHood/gitclaw
7•sawyerjhood•12h ago•0 comments

Show HN: An open-source system to fight wildfires with explosive-dispersed gel

https://github.com/SpOpsi/Project-Baver
2•solarV26•10h ago•0 comments

Show HN: Agentism – Agentic Religion for Clawbots

https://www.agentism.church
2•uncanny_guzus•10h ago•0 comments

Show HN: Disavow Generator – Open-source tool to defend against negative SEO

https://github.com/BansheeTech/Disavow-Generator
5•SurceBeats•15h ago•1 comments

Show HN: BPU – Reliable ESP32 Serial Streaming with Cobs and CRC

https://github.com/choihimchan/bpu-stream-engine
2•octablock•12h ago•0 comments

Show HN: Craftplan – I built my wife a production management tool for her bakery

https://github.com/puemos/craftplan
567•deofoo•5d ago•166 comments

Show HN: Total Recall – write-gated memory for Claude Code

https://github.com/davegoldblatt/total-recall
10•davegoldblatt•1d ago•6 comments

Show HN: Hibana – An Affine MPST Runtime for Rust

https://hibanaworks.dev
3•o8vm•13h ago•0 comments

Show HN: Beam – Terminal Organizer for macOS

https://getbeam.dev/
2•faalbane•13h ago•2 comments

Show HN: Agent Arena – Test How Manipulation-Proof Your AI Agent Is

https://wiz.jock.pl/experiments/agent-arena/
45•joozio•16h ago•47 comments
Open in hackernews

Show HN: Resurrecting Infocom's Unix Z-Machine with Cosmopolitan

https://christopherdrum.github.io/posts/2025/04/porting-infocom-with-cosmo
157•ChristopherDrum•9mo ago
I recently brought Infocom's original UNIX z-machine source code back to life on modern systems. The modified source code, instructions on usage, a build of the z-machine, and examples of embedded game executables are available.

There is also a detailed write-up about the state of the original source code, the porting process, and the invaluable role Justine Tunney's Cosmpolitan project played in bringing the Zork trilogy (and more) to Windows/Mac/Linux/bsd for arm/x86 machines over the course of a lazy Sunday.

Comments

wyldfire•9mo ago
Funny coincidental timing - I just played HHGTTG a couple of times last night for the first time in thirty+ years or so.

I first played the game, way back - prior to having read the novel. It was mind-blowing. I had no idea what was going on but I got a real sense that it could be pretty funny if I did. So I read the novel eventually, and it was as good as I expected. I don't think I'd gone back to play the game until this week, though.

ChristopherDrum•9mo ago
It had never occurred to me that someone might have the game be their first HHGTTG experience over some other media. For me, the BBC television series was my gateway into the world, then the game (I was already hooked on Infocom by then), then the books.

HHGTTG is a .z3 game and is compatible with this project's build of the Infocom source, should you get the urge to play again in another 30 years.

dcsan•9mo ago
BBC tv or radio? Seems odd now to think back to a fixed time radio broadcast but I loved the radio show
Brian_K_White•9mo ago
They aren't misremembering, there was a tv series.
dsr_•9mo ago
The most interesting part is that of all the Hitchhikers' media, only the original radio series and their published scripts are in complete agreement with each other on all details of world-building.
ChristopherDrum•9mo ago
TV series, absolutely; I've actually never heard the radio program. It aired on PBS in my area along with Monty Python, The Young Ones, and other shows from "across the pond."
bruce511•9mo ago
Its interesting to see how developers get into a mindset, based on their life experience.

What we're seeing here is 40 year old code compile and run with minimal effort. Largely because the C language has respected backwards compatibility.

Yes, there were breaking changes along the way, but they were trivial to resolve in hours. And (more interesting) the author believed that to be true and so persevered.

I saw this recently as well. I run a lot of programs on Windows. Many are 32 bit, written in the 90s for Windows 95, or 98. They all still run. Microsoft bends over backwards to keep things compatible.

I also get to write a lot of web API clients. I tell customers that it won't work forever. Web APIs are constantly changing. The service (especially Google) will change something soon to break it.

The people building those APIs are expecting only currently-maintained apps to run. They have no concept (or experience) of 40 or 30 year old code "just running". Crumbs, if you get 5 years out an API client you're doing well.

ChristopherDrum•9mo ago
Yeah, the "porting" part was pretty trivial, all things considered. Any difficulty was really only as a consequence of certain patterns being unfamiliar or evolved. Once those patterns were identified, it was only "roll up your sleeves and do the work" to get it going again.

Working on this kind of got me re-thinking my approach to my personal projects again. What can I do today to best ensure my own code will be this easy to run in 30 years? As a corollary to that, what can I build today that will be interesting enough to want to run again in 30 years?

BrenBarn•9mo ago
I think part of that is because those old Windows apps were distributed and forgotten about. There was no update procedure for many of them, and if there was it was just "buy a new disk" or at most "check the website and download a new EXE". Now that people have always-on internet connections, they expect to be able to get things instantly, and companies then expect to be able to push their updates instantly, and other companies expect that they can push their own update if someone else breaks their API, and so on and so forth until everyone expects everyone to have "the latest version" of everything.

It's the era of constant updates. I find it pretty annoying.

bruce511•9mo ago
... all presuposing of course that the authors of that code are still around, and still want to make the effort of updating it.

In the enterprise world lots of software is more than a decade old, and no one is prepared to "update" it. The mindset in that space is for things to have longevity.

It's more of a mindset I think. Microsoft is clearly very focused on keeping things running. Apple (as a contrast example) is happy to change architecture, remove 32 bit support, and so on.

BrenBarn•9mo ago
I agree it's a mindset, I just mean that that mindset has kind of coevolved with a bunch of other stuff.

Even Microsoft seems to be slipping. It seems like these days the (unstoppable!) Windows updates may actually change functionality and UI, which was much less common in the past. And of course the new versions of Windows are more aggressive about updating. They still maintain backwards compatibility for running third-party programs, but I feel like their mindset used to include more stability in their own software as well.

hypercube33•9mo ago
NTVDM is still out there from or based on NT source and still works too - 16 bit apps generally run as well. Microsoft chooses to not support them. last week I ran down the rabbit hole of how this works and how someone ported it to x64.
anthk•9mo ago
ReactOS' one it's far better than MS's one.
joshu•9mo ago
i think ucsd p-system vm predates z-machine by a couple of years (re OP's origin of vm use comment)
ChristopherDrum•9mo ago
Interesting to know, thanks. My intention with that comment was in pondering about vms distributed commercially in the home market, which I don't think I made clear enough in the post. :/
ssrc•9mo ago
What's remarkable about Infocom's z-machine is the level of sophistication and polish vs the intended application, maybe unsurprising coming from MIT graduates with access to a PDP-10 as a development platform. Otherwise the use of virtual machines was, maybe not common, but not unusual.

* TinyBasic (1975) was specified (and sometimes implemented) as a VM https://en.wikipedia.org/wiki/Tiny_BASIC

* Apple Pascal (1979) was a UCSD Pascal system. https://en.wikipedia.org/wiki/Apple_Pascal

* The COSMAC VIP computer/console's (1977) games were programmed in CHIP-8, a VM. https://en.wikipedia.org/wiki/CHIP-8

* Scott Adams' text adventures (1978+) used an application-specific VM. https://en.wikipedia.org/wiki/Adventure_International

* Wozniak's SWEET16 contained in Apple II Integer Basic (1977) https://en.wikipedia.org/wiki/SWEET16

* If you count Forth as a VM, it was pretty common. https://en.wikipedia.org/wiki/Forth_(programming_language)

ForOldHack•9mo ago
You must have done little research to remember those. I knew all but two. (COmSAC and Sweet16).

I wonder if the wikipedia articles are lucky enough to be good...

flonkyflonk•9mo ago
Blank and Berez were definitely thinking about p-machines when they designed the Z machine, and there is a hat tip in the 1980 Creative Computing article describing its inner workings.

[1]: https://mud.co.uk/richard/htflpism.htm

ghaff•9mo ago
And the founders were AFAIK mostly looking at games as a testbed for bigger and better things—a mindset that unfortunately led to the Cornerstone database.
ghaff•9mo ago
There were a bunch of minicomputer and the Unix operating systems that would arguable have been better than Microsoft’s entries. But it just wasn’t in the DNA of those companies to sell a consumer-priced operating systems.
ForOldHack•9mo ago
The TV show, in it's absurdity, pointed me to the radio show, which I adored, which led me to read all the books, so when the game came out we laughingly struggled with it, for months, until the sales guy at egghead gave us just a few hints...

A dacade later, ztools was able to read it's dictionary, and people would ask what it was all about... We distributed libraries on bbses, Napster, all manner or ways to get the media out so people could laugh... And most of them found their way back to the Adams books and recordings. We never distributed the books, unless the 2nd half was deleted... ( Waldens, which was beside Egghead, would to though spurts where Adams books would make the best sellers lists, and fade, and enjoy multiple resurgences. )

Go and buy the books (Douglas Adams) and use them for gifts.

user3939382•9mo ago
This is somewhat tangential to the precise topic but since it doesn’t come up often: if you’re into this genre I recommend a game called Vespers. Really well done and thick atmosphere.
ChristopherDrum•9mo ago
My absolute favorite text adventure in recent years is Lost Pig. Alas, it is not compatible with the UNIX port this post is about, but it is a delightful game with a unique comedic voice.
colkassad•9mo ago
Vespers is great. I also recommend the classic Lovecraftian adventure, Anchorhead.
o11c•9mo ago
In case anyone needs to do the sort of "fix up scattered declarations and move them to headers", you really want to use:

  gcc -Werror=missing-declarations -Werror=redundant-decls
(last I checked, Clang's implementation of this was buggy and half-useless, but I'll admit I stopped using Clang)

I recommend this for well-maintained code too, just as another way to keep the code smells away. For a lot of projects this will only require adding a bit of `static` that you were too lazy to write.

ryao•9mo ago
I suggest -Wall -Werror for code hygiene.
o11c•9mo ago
I recommend against global -Werror, instead use -Werror= with each individual option to make it much easier to deal with compiler upgrades that change warnings.

For well-maintained code, -Werror=all is expected, but switching to it is not trivial in a nasty codebase. It's still worth doing, but it's a whole project.

-Werror=extra is also a good idea once your codebase is clean for all of the above, but you will need to learn to write suppressions, and some of those are compiler-specific.

-Werror=format=2 (requires adding attributes) and -Werror=unused (weird version-dependent interactions with other warnings, so better enable it explicitly) are next, then there's a long tail of obscure warning options that should be considered; many are useful but others should be explicitly disregarded (one particular question of interest that stick out: how hard is it to suppress/restore this within a macro).

Past the trivial, Clang's warnings tend to suck (and they often refuse patches even for parity); GCC's are more useful due to the strength of history. It's still worth using Clang just for the fact that it uses different logic for triggering warnings (and also different warnings available; -Weverything is great for discoverability); just be aware that `__has_warning` isn't very useful (what we really need is `__has_warning_that_actually_works_correctly`, which requires hard-coding known-bug-free compiler versions).

fredsmith219•9mo ago
Absolutely amazing. Good work. It downloaded and ran on Arch with no problem.
ChristopherDrum•9mo ago
Fantastic to hear! Thanks for the kind words and for checking it out.
hans_0l0•9mo ago
What is going on here?

[~/Downloads] $ chmod +x zork*

[~/Downloads] $ ./zork1

Cannot open assembly './zork1': File does not contain a valid CIL image.

jchw•9mo ago
Do you have some sort of binfmt_misc setup for Windows/.NET executables? You might be able to get it to work by running `sh ./zork1` instead.
hans_0l0•9mo ago
Yay, this works :-)

West of House You are standing in an open field west of a white house, with a boarded front door. There is a small mailbox here.

ChristopherDrum•9mo ago
Wonderful, thanks for playing!
ChristopherDrum•9mo ago
What setup are you running it on? That will help with troubleshooting. Or, if you prefer, feel free to file an issue on the project repo and we can hash it out there.

https://github.com/ChristopherDrum/pez/issues

hans_0l0•9mo ago
I run Arch Linux on an AMD Ryzen 5. I have mono installed, not sure why, i guess it is a depenency for sdrsharp or the like. However, the sh ./zork1 did the trick :-)
ChristopherDrum•9mo ago
Great! Glad to hear we have a simple solution for this issue. It is interesting to note your trouble, because another player in this post is running Arch and says it worked flawlessly. I guess Mono gets in the way a little.
jart•9mo ago
You probably have WINE or something installed. We have a workaround:

    sudo wget -O /usr/bin/ape https://cosmo.zip/pub/cosmos/bin/ape-$(uname -m).elf
    sudo chmod +x /usr/bin/ape
    sudo sh -c "echo ':APE:M::MZqFpD::/usr/bin/ape:' >/proc/sys/fs/binfmt_misc/register"
    sudo sh -c "echo ':APE-jart:M::jartsr::/usr/bin/ape:' >/proc/sys/fs/binfmt_misc/register"
For more help/information on the various gotchas and things that can go wrong running Actually Portable Executable (APE) binaries, please see this reference Mozilla put together: https://github.com/Mozilla-Ocho/llamafile/?tab=readme-ov-fil...
hans_0l0•9mo ago
No wine... but something something .NET : mono
jart•9mo ago
Oh. Then the workaround should still work I think. Did it help you?
PaulHoule•9mo ago
(1) The UCSD p-Machine was contemporaneous and made it feasible to compile Pascal for machines like the 6502 which were terrible targets for conventional compilers. It was atrocious in every way, particularly atrociously slow. At the time many CS professors with Microsoft BASIC being the dominant teaching languages but UCSD plus the inability to do systems programming in ISO Pascal made a generation of young programmers hate Pascal with passion.

(2) Scott Adams made an adventure interpreter was was similar but less sophisticated than the z-machine but similarly portable, in fact you could write a Scott Adams interpreter in BASIC [1] but he also wrote interpreters in assembly for the most popular platforms

https://6502disassembly.com/a2-scott-adams/interp.html

(3) Infocom developed the games on a PDP-10 machine which might be the last general purpose computer that survived with other than the 8-bit byte. (Though it had bitwise addressing which helped it cope with the industry going in that direction).

[1] Notably if you tried to write an adventure game in straight up BASIC you'd struggle. It's not like you could look up a verb in a hashtable and dispatch to subroutine. You'd be writing incredibly long if-then-else ladders nested inside if-then-else ladders which is bad enough in a civilized language.

ghaff•9mo ago
The Infocom games were also super-tight on memory. There’s a presentation by Dave Liebling I think at some game developers conference on YouTube someplace that goes into this among other things.
PaulHoule•9mo ago
Here was the 1980 explanation

https://archive.org/details/creativecomputing-1980-07/page/n...

Thoreandan•9mo ago
Game Developers Conference Classic Gaming Postmortem: Zork (2014)

  "Dave Lebling, co-author of Zork and co-founder of Infocom, gives a postmortem talk on the classic text adventure. Lebling, who currently works as a senior principal software engineer at BAE Systems, created the "grue," co-authored Zork I-III and wrote seven other text adventures. He plans to give an hour-long talk explaining, among other things, the creation of both the mainframe and microcomputer versions of Zork, the trials and tribulations of coding a cutting-edge text parser, and what it was like to experiment with self-publishing at a time when most PC games were sold in hand-packed plastic bags.
https://www.gdcvault.com/play/1020612/Classic-Game-Postmorte...

https://archive.org/details/GDC2014Lebling

ghaff•9mo ago
Thanks. I used to run into Dave and other Infocom folks at Steve Meretzky’s Oscar parties but since Steve decamped to CA I may run into a few CA locals once in a great while if I happen to be out there at the right time for some reason.
egypturnash•9mo ago
Incredibly long if-then ladders, or some kind of little assembly routine to let you GOTO a value instead of a constant...

https://www.atarimagazines.com/compute/issue67/331_1_Compute...

abecedarius•9mo ago
The UCSD system was indeed astonishingly, unusably slow. When I got to try it in high school computer lab, in the 80s, I was like "Did whoever ported it to this particular computer just totally fuck it up? WTF?!"

An Infocom adventure on a machine with 16k RAM also had frequent pauses to fetch from floppy, but it was much more tolerable.

Re verb lookups in Basic: you could use DATA statements and READ in a FOR loop for lookup. I don't know what was typical but that's what I recall from some examples.

ChristopherDrum•9mo ago
As a side-note to the Scott Adams interpreter and the struggle of writing in BASIC, it should be noted that Scott Adams's original work was in fact in BASIC. He published that source code in BYTE Magazine, should anyone wish to poke around and see what was required to get a game and parser working.

https://archive.org/details/byte-magazine-1980-12/page/n193/...

gamache•9mo ago
Cool project! But one nitpick.

K&R C has no concept of THEN. That's a peculiarity of the ZIP source code, defined as a pure no-op:

    #define THEN
https://github.com/ChristopherDrum/pez/blob/main/zip/infocom...
pcwalton•9mo ago
It's Bournegol [1]!

[1]: https://oldhome.schmorp.de/marc/bournegol.html

ChristopherDrum•9mo ago
Oh wow, thank you for the clarification. I completely didn't even consider to audit for that in the ZIP source (though the ALL CAPS maybe should have been my hint). I'll update the post with this and another small thing another player found.