It has been a rough journey but I finally see the light at the end of the tunnel. I just recently redid the website and thought maybe the full story of how this project came to be would interest you all. Thank you for reading.
There's a crowd of ludds around here who (paraphrasing another Churchill besides the one you wrote about) won't change their minds about AI and can't change the subject. One thing you can be certain of is that even if you rewrite the text to sound more human, they still aren't going to buy the game. Ignore them, and keep doing what you've been doing!
https://urbanists.social/@raineyday@beige.party/115793532206...
It's an inspirational true story and well-written. Then notice if the writing style feels familiar. The short sentences. It becomes the visual equivalent of these realistic AI photos, where it looks mostly right, but some feels a little off in the same way that something else you read recently felt a little off.
I'm glad I read the Brownie Mary Story and this Wall Street Raider story as well, but I also don't look forward to a future flooded with content that's "in the style of a professional writer" without some of the details and authentic voice that helps writing really connect.
Personally, I often find the smell of AI annoying, but I don't mind the way you used it in this article, and after all, there are some good use cases for AI writing.
I assume it will become easier and commonplace to configure LLMs to produce 'de-ragebatified' writing styles.
Pretty soon I reckon we'll be so inundated with AI content in all media that it simply won't be possible or rational to be offended by it, it will just become our new reality, our new world.
It's a tough tradeoff for me both as a consumer and as a do-er. I am very sensitive to LLM-isms. Like many other millennials, (even if perhaps not quite most) I grew up online from a young age when text was the only viable communication medium, so I learned to notice incredibly small nuances of how someone writes and use those nuances to infer/personify the narrator. LLM's not only stick out like a sore thumb, their language actually "jams up" my 'text-personifier' neurological circuits. It's like my brain is saying "WTF? Why can't I synthesize any reasonable model of the person who wrote this?" the entire time, even if I know it's AI. That's frustrating, exhausting, and alienating.
So yeah, as I said: It's a tough tradeoff for me both as a consumer and as a do-er. I'm glad you used an LLM to do the write-up so that it shows up here and I can enjoy the work you did. I often use LLM's to write documentation at my startup for both my own reference and for my cofounders. I don't like it, but it's better than not doing it, and sometimes it's better to spend that time on other things, especially when the thing I'm documenting is subject to change very shortly.
I think the sweet spot, for me, is this:
If you're going to write it with an LLM, do so unapologetically. Put a disclaimer at the top. Understand that what you are delivering to your audience is not the LLM output, but whatever output was generated from your own input (work, vision, ingenuity, perseverance). Keep the LLM generated content concise, sharing only the necessary narrative and information to give consumers the context they need to understand whatever the actual work product is. The less slop I have to struggle through, the better - LLM's are absolutely awful at narration. And then make it easy to explore your actual work product!
I'm not sure my strategy might cause posts to never reach the front-page. I hope that our audiences can understand that this might be the best compromise and come to accept it in some cases. I will continue to point out when HN posts show strong signs of being LLM generated (as judged by my own tuned sense of nuance, empathy, and theory of mind...not whether they use em-dashes) but the intent isn't to tell people "this isn't worth reading". The intent of disclosing LLM generation is to inform people that the best way to consume the content is to switch to their personal "I'm reading LLM generated content"-mode and experience it through that lens.
Interestingly, my startup seems to have taken a somewhat similar strategy with vibe-coding. We're all aware that vibe-generated codebases are objectively worse, harder to read, and harder to maintain than our best hand-written code. It tends to fail on dumb edge cases and just doesn't have the "vision" that hand-written code would, because it glosses over decisions that we'd have paused and thought about for awhile before adjusting our vision and proceeding. But doing the initial proof-of-concept or prototype with LLM's greatly speeds up the period of exploration where we go "We're pretty sure there's a good a way to do this, and we're pretty sure we know what that way is, but there's a few unknowns that need to be proven". With hand-coding, those "unknowns" can take a long time to work through. With vibe-coding, we can try several different strategies, learn about the reality of implementing those strategies, and then go back and hand-write something more maintainable from scratch once we're pretty sure we've landed on the approach that we judge will be "stable". The timeline/priority for converting vibe-code to hand-code depends on how long we expect that code to last, how central it is to the system, and how important it is for humans to be able to debug, maintain, and interface with it.
I know you'll deservedly get a lot of credit for all your work in remastering the game, but you should also get credit for how you've woven this narrative together, it's a lovely read. Thank you for taking the time to write it up, and good luck with the Steam release, and whatever project you take on next! :)
Don't forget to give credit to the LLM too which wrote the story for him.
I enjoyed the narrative. It was true. Who cares if it was written by a ghost writer, an AI or anything else.
So the program most likely is flat: a bunch of global variables (and possibly memory addresses), and instructions ordered by line number, rather than functions or methods.
No line numbers except for goto labels, but gosub is the challenge for transpilation.
(However it wouldn't surprise me if older 'line number' programs still mostly worked. iirc VB6 also supported this.)
No real functions, only `gosub` and `goto` so everything is a global variable.
I think even assembler for x86 is easier to unravel.
MS-DOS 2.0 was a huge improvement, the first release didn't even support subdirectories or hard drives.
There was a time in the world when most PC users could drive the C prompt.
Eh, not really. The file system was very different and these early operating systems were mostly a file system. The system calls were almost identical…
Volatility Skew: An uneven curve indicating directional bias. Commonly, equity markets show negative skew (higher implied volatility for OTM puts), signaling concerns about downside risks.
Options pricing is a real rabbit hole.
https://www.luxalgo.com/blog/volatility-smile-vs-skew-key-di...
As for languages, PB, C++, and JavaScript (Electron/Preact). I chose a no-build UI framework so that it could be modded by players without installing any build tools, just edit the text files in the game folder, and it has been a very good decision.
I am sold on the game and wishlisted it but lack of release date saddens me.
I love spreadsheet games like Terra Invicta/Paradox/Simutrans and this seems like a terrific example of one.
The real problem is idiosyncratic and esoteric coding practices from a single self-taught accountant working in a language that didn't encourage good structure.
I can translate well-written code without understanding what it does functionally, so long as I understand what it's doing mechanically.
The original author seems to build in the assumption you're not going to translate my code you'll need to rewrite it from the the tax code!
I might not be a basic practitioner, but as someone who as written serious things in bash and powershell, I can see the allure.
This story is it's own litmus test. Your story is only as notable as bad as Michaels code is!
Don't get me wrong. It seems fantastic game and like others I'm most interested in playing the original DOS version.
But good programs, written by good programmers are not necessarily made with good code!
I see from other replies that you now understand the code reasonably well and feel you can expand/extend it while keeping it in BASIC. However, I note you've also done project where you automatically ported Fortran to Lua - are you not interested in trying to do something similar for performance/maintainability reasons? Is there an advantage in keeping it in PowerBASIC?
I've wish listed the game, and look forward to playing it, it sounds like great fun - even the manual sounds like a good read.
Is the whole thing going to be open sourced? I feel if enough people had access it could be ported to any language with today's tools and people.
Is it possible to write a black box regression test framework?
I don't really care in this case though, it's an awesome story and it doesn't detract too much. Congratulations!
I know it almost sounds crass, but you should consider letting an LLM take a crack at transpiling the code. Source to source translations are one of the most widely agreed upon strengths of LLMs.
Are there any plans to break out portions of the Basic engine to a modern language? It's frustrating that the heart of the game remains inscrutable. Surely Ward is tempted?
It's a lovely achievement you have pulled off, and Jenkins must be tickled.
"claude code plays wall street raider" would be very very cool.
Copyright © 2025 looks clear?
> So Jenkins waited.
This part made me laugh out loud. It made me imagine Jenkins as a time traveller who had made a mistake and got stuck in the past, but knew that personal computers would be invented.
Consider releasing on GOG. This game is great nostalgia bait, and if you release the DOS version, the GOG staff are quite experienced at building modern, cross-OS installers for DOS games and tuning DOSBox.
FWIW I never played this particular game but around the turn of the millenium I put probably over 100 hours in Trevor Chan's Capitalism games [1].
Out of curiosity, how are the things tested? Or is checking core-engine doing things right only up to the developer and their tribal knowledge?
Thanks for bringing this story to HN!
You can imagine my disappointment when in the end, the code is still basically a mystery, and a wrapper around the core game was made.
Not because what you did is not hard or impressive, it's because, up until the line were you said you are going to use a wrapper, you made it seem like you're deciphering the code. That isn't really clickbait, because I had already clicked and spent 20 minutes reading. Being misled felt a bit bad, considering how beautifully the story is written.
Impressive work nonetheless.
Thank you for sharing your story.
I've always wanted to get my hands on the Championship Manager 92/93 source code to see what gave it its "soul". What made that version so special.
2) the prose is very LLM-flavored, but for once I don’t mind. It’s obvious to me that this blog post only exists because an interesting, intelligent person used an LLM to lower the cost of extracting complex ideas from their brain.
3) the “Fits of Rationality” process sounds a lot like how coding agents work. They’re alive in the moment, then later all they have to work with is the written record of their previous sessions. The Herculean effort to re-implement the result foreshadows the vibe-coding repair industry.
One thing I really don't understand at all is how it's possible to do so much in only 115 kloc. 115 000 lines of code is next to nothing for such a project: there are solo projects with more lines of code than that. It simply ain't that much: how can you simulate mergers, financial derivatives, etc. all in so little lines of code?
It is, simply put, a little codebase. Which makes it all the more impressive.
I mean: it's both a lot (for the time) and nothing for what it does. I'm sure brokerage apps have 10x that amount of code and they only deal with the client side of things. I understand the game doesn't reproduce everything but it still looks incredibly impressive to me to pack so much in so little lines of code. Doubly so if this is sufficient to teach people the basics of finance and trading.
Now something else: this reminds me a bit of a game by the company FTL (created in 1982), who created Dungeon Master. Before that game FTL did "Sundog: The Frozen Legacy". In Sundog they implemented an interpreter for a programming language so that they could write their game (otherwise the default languages available were too limitating) and... You could buy/sell stuff across planets, that you'd transport in your spaceship. They had started writing a complex trading engine for the game: the player was supposed to be able to place buy/sell orders and whatnots but eventually they gave up that part of the game. FWIW when I was playing Sundog The Frozen Legacy I was feeling I was Han Solo in my spaceship: great memories.
Wishing the best to Ben Ward and sending big thanks to Jenkins. These kind of entries are why I'm on HN.
You are the engineer we all aspired to be. Though, you really are the chosen one.
Wish you the best!
I mean, the article means passing the torch but how exactly is this assured in case the author dies and the estate holders don't release the copyright?