Recreational Programming

(cphiri.dev)

178 points | by jslakro 11 hours ago ago

76 comments

  • mrandish 8 hours ago ago

    The definition perfectly describes how I started out in computers in 1981. Brought home a 4K, 8-bit computer from Radio Shack that I could barely afford and hooked it to the TV. Had never touched a computer before, zero prior knowledge and only had the manual in the box (which was surprisingly good). No one I'd ever met owned a computer at home or used one at work and I'd never really considered that you could make money with computers. I just thought the games seemed fun and the idea of learning about programming seemed cool. Turns out typing in long listings from B&W hobbyist zines and then finding all the typos was a fine way to learn.

    Teaching myself assembler was harder because I had no docs. I was so clueless I actually looked up Motorola in the phone book and called to ask where I could get a manual. The sales rep who answered the phone must have taken pity on me because he mailed the CPU manual for free. I still have the purple reference card and remember the common opcodes by heart (https://colorcomputerarchive.com/repo/Documents/Datasheets/M...)

    The first time I made money was about 18 months later when I wrote a pretty handy disk utility program. Stayed up all Friday night finishing it. Copied onto floppies I sold for $5 at the local user's group Saturday morning. Made $140 and got my first 28 customers. That was enough to get me hooked on making software and selling it. ~40 years, three startups, over a dozen products, hundreds of good people employed, a couple million customers and two PC Magazine Product of the Year awards later - I regret nothing. Started on a lark to learn and have fun. Much was learned, fun was had. Wonderful journey - highly recommend.

    • thwarted 2 hours ago ago

      > Turns out typing in long listings from B&W hobbyist zines and then finding all the typos was a fine way to learn.

      My mom and I used to take turns reading the code from the magazines out loud while the other typed the code into our Commodore 64. She used to say things like "I was just having fun, typing in the games and playing them, but thwarted was actually learning something" (no, my mom doesn't call me "thwarted").

    • glimshe 7 hours ago ago

      This is a great life story. I had similar beginnings as a curious child but no PC Magazine Product of the Year! I'm sure you'll find many people here who also started curious and with no friends who cared or had even seen a computer.

      Is there an equivalent to that today? As soon as a cool technology appears, there are startups selling something within a few weeks. What is the "weird" kid doing today?

      • mrandish 6 hours ago ago

        > but no PC Magazine Product of the Year!

        Well, hitting the first home run took about a decade full of base hits and more than a few strike-outs on the way to figuring out what I needed to know to do a tech startup well.

        > What is the "weird" kid doing today?

        Over the last decade I've spent increasing pro bono time trying to 'pay it forward' talking to classes and groups of erstwhile entrepreneurs, so I've heard versions of that question a LOT. It actually took me a couple years before I realized there is no 'right' answer because the right thing for each person differs depending their unique personality, skills, interests, context and life journey.

        The most helpful thing I can share isn't a guess about which target you should aim for but rather some advice about how to approach your journey. First, I hope you want to be a tech entrepreneur because that's the only thing I know about. I have no idea what skills will be in demand to get a high-paying, secure job or how to get promoted. I had to become an entrepreneur because I was terrible at being an employee.

        I never aimed for my guess at what would be "hot" next and I doubt my guess would be right anyway. Every time I found success it was by starting with a real problem some customer actually had. Initially that customer was me or a friend but it doesn't matter. It just has to be a serious enough problem that motivated customers are actively looking for new and better solutions than what exists. Then figure out a way to solve their problem better enough that they'll actually buy it. It doesn't have to be perfect in every way, just better enough in most ways and perfect in at least one way.

        In fact, some of my best products became hits by cleverly solving one part of a problem SUPER well, but only did so at the cost of some odd downsides in other areas. Here's a generic example of the pattern that worked: my friends and I all desperately wanted a Zig-Zag Widget but good ones were stupid expensive and the ones ordinary schmoes like us could afford Zigged and Zagged like shit. But while we were bitching about this sorry-ass state of affairs over pizza and beer one night we theory-crafted how it might be possible to make a Zig-Only Widget ordinary mortals could afford. The dumb idea was by not Zagging at all, it just might be able to Zig even better than the best. Since we all had no Zig or Zag, that seemed like a trade-off we might be pretty okay with. Turns out other people were too... especially after we worked on adding some 'pseudo-Zag' features that worked around the worst parts of not Zagging. And that's how we came up with the world's best Zig (but no Zag) and sold it at 1/4th the price of even a half-assed Zig-Zag. Not really new technology, just a very clever mixture of the exact right old tech with a little new stuff, some clever UX innovations and cool workflow integrations. Blam! First Product of the Year.

        If prototyping dozens of different iterations and trying each one out with real, live problem-having customers and listening empathetically for hours to their constant complaints, ridiculous demands and occasional awesome suggestions sounds like fun, then you may have found your calling. If you just want to write great code for a good paycheck and be left in peace, then, my friend, run the other way. :-) It's ironic because I got into making products because I loved programming but after the first few years, I wasn't writing much code anymore. It was invaluable that I'd learned the business by starting as a self-taught, down-to-the-metal, assembly language, real-time graphics programmer because I was able to identify and hire programmers far more skilled than I'd ever been but after the first million in revenue and 20th employee I personally spent more time writing or reviewing ad copy and legal contracts than code. But that's also invaluable because as the company grew and various fires flared up in every part of our business, I got pretty damn good at doing marketing, sales, PR, finance and even legal stuff myself when necessary. And all that was the best prep ever for being able to run the place when we hit a hundred million in sales and hundreds of employees.

        I used to hate the constant looming threat of existential doom always hovering over our tiny startup. Then one day I finally understood that the constant stream of scary new challenges were there to force me to keep growing and learning new skills. not only survive, but to level up and feel the satisfaction of summitting ever higher peaks. I hope you'll find the same on your journey. The best part is now that I'm retired, I'm back to programming in 8-bit assembler and 4K of RAM, except now I have a rather expansive collection with every model Atari, Commodore, Sinclair and Amstrad ever sold. :-)

        • glimshe 27 minutes ago ago

          I'm retired too, but after the opposite journey, one of a successful employee. :) Thanks for the insights!

        • bananaboy 3 hours ago ago

          I love this! Thanks for sharing!

  • smnplk 9 hours ago ago

    Shout out to Tsoding [1]. He is my favorite recreational programmer.

    [1] - https://www.youtube.com/@TsodingDaily

    • ge96 8 hours ago ago

      I saw another guy I'm trying to find, he's Asian, one of the projects he did was make a map from raw OSM nodes I think. But he used a "niche" language like Zed and worked directly with GL idk was trying to find him. One of those really really good programmers. His videos are in English. The map is like Brooklyn or some part of NY.

    • glouwbug 9 hours ago ago

      I always champion Bisqwit too

    • metaltyphoon 4 hours ago ago

      Mista Azosin!

    • bitwize 8 hours ago ago

      Tsoding's streams are so my jam. Right up there with Bisqwit.

  • passive 9 hours ago ago

    I did not like how this handled scrolling, made my navigation feel constrained. Maybe I was supposed to use the keyboard to navigate? It doesn't seem particularly clear.

    • kmoser 4 hours ago ago

      Navigation was easy. What I didn't like was having no idea where I was and how much farther there was to go. It was like the world's least intuitive HyperCard stack.

      • brabel 3 hours ago ago

        There is a progress bar of sorts on the right side, little squares tell you where you are.

    • randfur an hour ago ago

      It really needed prev/next buttons, using the scroll wheel with such a long debounce was laborious.

    • vostrocity 4 hours ago ago

      This looks like it was meant to be presented to a live audience.

    • praet 7 hours ago ago

      Besides arrow keys, hjkl (vim-style) apparently also works for navigation

  • prophesi 4 hours ago ago

    Recreational programming used to be one of the rubrics to hire a software developer. If you have an intrinsic motivation to code, it would often be more valuable than your credentials. That's why junior devs would push up sites showcasing their resume of random projects they've done outside of education in order to give them an edge over their competition. Some companies would even encourage some time on the clock for working on side projects to prevent burnout.

    At the same time, some of the workers in the industry were disgruntled that you were expected to enjoy coding in your spare time to keep up. While some truly just wanted to do it because they were good at it, and would rather turn off the software dev brain after work to do other things they enjoy in life.

    With the advent of high-performing LLM's for coding, though, it seems more important to showcase how you can harness AI for your recreational projects than the projects themselves. It's a bit of a catch-22 for junior devs though.

    I still think it's good rubric to get into programming if you like to do it recreationally, but these are just a few of my thoughts on how it can be problematic.

    • d-u-d-e 2 hours ago ago

      That's not the goal of recreational programming though. You don't do it for the ROI. It may have a ROI, but I don't do this for that, I do it because I am genuinely curious.

  • testerius an hour ago ago

    THIS IS IT.

    I know and understand it. However I see a lot of people being sad and angry because of LLMs/AI agents. I would like to add to this website section about LLMs/AI. You can use them or not at all if you want. I guess nobody forces you to use "magic" AI in your hobby projects.

  • tjansen 2 hours ago ago

    Interesting idea (on a web site that is hard to use).

    AI taught me that I don't really like programming per se. I was very good at it, I believe, but it's never been what I really wanted. I want to build stuff. AI let's me do it faster than ever before. But more important: it takes care of the boring, tedious stuff that caused me to abandon far more projects than I completed.

    So far, 2026 has been my most productive year, by great margin. Things that I wouldn't have even dreamed of starting became possible. And the pace keeps accelerating.

    • lonelos 15 minutes ago ago

      This is exactly my experience. It's interesting to see how some people are completely drained by agentic development (even though their management is not forcing them to be 10x engineers), and others thrive. I’d say those of us who thrive are in the minority, though.

      The only thing that bothers me about this new era is that many projects are built on shaky foundations, as it is easier to ship, and expectations of delivery speed are often unrealistic. But that is more of a question of prioritizing quality and reliability, and not an inherent feature of development with AI.

  • sudo-bendg 2 hours ago ago

    I would add to the "what it's not" with one extra point, building without the expectation of others using the product. Not even buying, just using.

  • beej71 3 hours ago ago

    I kinda wonder if the hacker community is going to eventually be like the ham radio community in that there are no more jobs in it, and we just have the dedicated enthusiast tinkerers working on the side.

  • monkmartinez 6 hours ago ago

    Thats me!!!! More than 20 years of hobby programming.

    It has never been a better time to be a recreational programmer and I have never been more excited with all the changes! As someone that started making html pages with dial-up, I am just gobsmacked with LLM's! Programming has helped me immensely in my career as a professional firefighter and I hope to have a second act in tech... we'll see!

    • soulofmischief 5 hours ago ago

      I'd love to know more about how hobby programming and your professional firefighter career intersect, this sounds very interesting.

      • DonHopkins 3 hours ago ago

        In my professional DevOps role I'm firefighting all the time, and in my professional programmer role I'm arsoning fires all the time, but I'd also love to hear how real firefighters apply programming skills!

  • xyzzy_apps 7 hours ago ago

    If painters have a canvas then programmers have a buffer.

  • LastTrain 7 hours ago ago

    This describes me, or described me - AI has brought on some existential feelings about programming as a hobby for the moment.

    • brabel 3 hours ago ago

      I use AI to program at my job but at home I am trying to keep writing everything by hand. It’s very tempting to just let the AI do stuff for me when it gets tiring, especially when tests are failing and I know the AI could fix it for me in seconds while I have to spend hours figuring it out, but I try my best to do it without AI. I just ask the AI questions sometimes for things I would have used StackOverflow in the dark ages. I feel like people need to do this if they want to keep being programmers in the old fashioned way! Junior programmers especially.

  • Hydraulix989 7 hours ago ago

    Too bad it is all over after this year because AI killed it all :(

    • Lerc 7 minutes ago ago

      I definitely align with a lot of styles 2, 3, and 4

      I have many years of expeiments, a selection of just 3

      https://k8.fingswotidun.com/static/ide/?gist=ad96329670965dc...

      https://c50.fingswotidun.com/

      https://lerc.neocities.org

      But lots of things like evolving pictures, palettes, or little creatures. Fluid simulation, cellular automata. Fluid simulation in cellular automata. Enough game Jams that I no longer know how many games I have made.

      I have done all sorts of things, I am undeterred by AI. For some things I will now get AI to explore entire ideas. Other things I will do entirely myself, and many things will be varying degrees of each.

      I see more opportunities for exploration. If you can see further by standing on the shoulders of giants, why begrudge a personal giant assistant?

    • emptybits 6 hours ago ago

      One of the first slides clarifies that recreational programming is INTRINSICALLY MOTIVATED. I agree with this definition.

      So if an external factor like LLM prowess “killed it all” for you, I would suggest you may not have been intrinsically motivated in the first place.

      Long live recreational programming. It’s fun and, personally, it’s satisfying building things close to the metal.

    • scronkfinkle 7 hours ago ago

      I feel you're missing the point. AI has no impact on recreational programming, it's about satisfying your personal curiousities and interests. I'm currently hand rolling a database project in rust because I find writing rust is fun. If you're pausing to ask yourself "what's the use if you can just use AI" then you may not have liked programming intrinsically to begin with, but instead the second order effects it gave you.

      • bemtevi 7 hours ago ago

        It somewhat does have an impact on it, because a cool part of recreational programming for SOME people is to share their hobby with others, but the value that others will place on that sharing is diminishing with AI. It's just human nature to value something less or find it less impressive when it can easily be made with a machine.

        • argee 6 hours ago ago

          The internet is increasingly full of the types of people it's pointless sharing anything nascent with anyway. I'm sure a local meetup will see your side project very differently than a subreddit or hacker news (the latter will even send armies of bots to take you down).

        • d-u-d-e 2 hours ago ago

          It seems to me that you are still doing it to showcase it to others. I understand it feels great to talk about it with people understanding the effort you put in, but it really is a personal thing IMO.

        • jmkr 7 hours ago ago

          This is how I feel, I like to share the cool thing I did and be part of creative spaces with other people, but I feel those spaces have gotten smaller, or changed.

      • kscarlet 7 hours ago ago

        I was so pissed when I wrote a cool data visualization tool then some people at work immediately assume Claude did it.

    • sixtyj 4 hours ago ago

      Would you stop swimming just because chlorine started being added to the pool water?

      I like to swim.

      (Just in case: Above is metaphor attempt.)

      • weezing 43 minutes ago ago

        Well at least that's different because you have choice to use slop generator to vibe code or not and the chlorine is there no matter if you want it or not.

    • brandonmenc 7 hours ago ago

      You can still write a program even though AI can do it.

      You can still build a table from scratch even though you can buy one from Ikea.

      etc etc

    • iperov 3 hours ago ago

      why? Has AI taken away your permission to create useless things?

    • DonHopkins 3 hours ago ago

      You must be holding it wrong, because I'm using AI to bring lots of old dead code back to life!

      https://hyperties.org/databases/playground/sun-founders-big-...

    • whateveracct 4 hours ago ago

      you can just not use AI

      • iperov 3 hours ago ago

        That's the whole point: they can't, because even in any useless "fun" programming there was motivation that it might be useful to someone in the future, or simply to fill the internet with information. But now there is absolutely no usefulness in creating useless projects.

        • whateveracct 3 hours ago ago

          sounds like a psychological skill issue

          • DonHopkins 2 hours ago ago

            Some people aren't into recreational programming, and think it's more fun to complain about AI and post unoriginal comments like "AI Slop" and "Stochastic Parrot" that are even less interesting and original than the AI slop and stochastic parroting that they're criticizing.

            If you want to call something AI Slop, and parrot terms from papers you've never read and whose meaning you don't actually understand, then please at least write in complete sentences and explain exactly what it was that made you think it was AI Slop, and what you think of the paper that coined the term "Stochastic Parrot", because your drive-by one-line anti-AI comments are much more tedious and unoriginal than anything an LLM can generate.

            • whateveracct 2 hours ago ago

              the comment you are replying to is a complete sentence

              also i never said "stochastic parrot" lollol

              what a weird non sequitur

            • imtringued 2 hours ago ago

              Here is some AI slop

              https://news.ycombinator.com/item?id=48070022

              I checked it out several months later and the UI issues are still there.

              I try to extrude a sketch (you know, a basic and critical feature in a CAD program) and click on add profile and it does nothing, it doesn't even explain what I did wrong.

              You get the diagnostics "warning

              Select a derived sketch region or planar face before previewing extrude.

              feature-preview-missing-profile"

              but no matter how you select the sketch ahead of time, it doesn't change anything.

              I think this comment I just wrote was an even bigger waste of time than just saying "AI slop", "stochastic parrot" and it was really stupid of me to even bother spending time on this.

              • whateveracct an hour ago ago

                people use Ai for stuff they don't care about

                that's kinda the gist of it

                i don't wanna use software that nobody cares about

    • Muromec 6 hours ago ago

      If anything, I'm having more fun with programming since the lying machine was invented

    • charcircuit 3 hours ago ago

      If anything AI super charged it. I'm taking on more and more ambitious projects and am able to make tremendous progress in just a weekend.

  • GMoromisato 8 hours ago ago

    Recreational programming is great! I'm always reinventing the wheel because it's more fun for me to (e.g.,) write my own XML parser than to learn some library.

    But, IMHO, the difference between writing programs for fun and writing programs that other people find valuable is like the difference between masturbating and making babies. The former is fun, the latter is fulfilling.

    There is nothing wrong with having fun. But if you ever find yourself unsatisfied with all your half-built projects, maybe consider writing software that other people value or even love.

    Yes, it can be frustrating to try (and often fail) to satisfy others. But seeing someone enjoying your software is an amazing feeling. It makes you feel proud, useful, and talented all at once.

  • mintflow 8 hours ago ago

    Like the points in this presentation, recently I kept thinking it seems I need find the joy of fiddling and learning, not build some thing for money but for fun only.

    Have been used some spare time to learn common lisp and write a manual project, still use web based AI as a quick search method.

    But I managed to learn some common lisp and how to do cffi in common lisp and

    - use gtk4 cffi binding to start a GUI app - write a ghostty cffi to encode/decode terminal escape sequences - write a libssh2 cffi to communicate with a ssh server

    Hope I can build a minimal SSH Terminal using common lisp to keep on experiment and exploration

  • markus_zhang 8 hours ago ago

    I’m definitely strong type 2, strong in the sense of I don’t care about activities of other types, not in the sense that I’m very good at programming.

    I have a bunch of abandoned repos. I used to want to finish some of them, so perhaps I can show them to some people and get a in-domain job, but recently I realized that it is probably impossible for me to do so. I don’t have success because I don’t chase it. I chase fun and that’s what I should expect, not other things like career switch or monetary rewards.

    • Waterluvian 8 hours ago ago

      I have so many abandoned repos. Once I see the finish line and I know exactly how they solve the problem, it stops being interesting to me.

      • makapuf 3 hours ago ago

        I, like the author, stopped worrying leaving aside unfinished projects. I cobsider learning or having fun was the project, and that I did finish. And I frequently come back to projects a while after.

  • iperov 2 hours ago ago

    That text sounds like a programmer's depression in the era of AI.

    • __m 2 hours ago ago

      Yeah, i too am sad that my hobby is no longer the biggest part of my job, it’s still fun to create things though.

  • vitalnodo 9 hours ago ago

    Nice presentation, I've been asking myself about exactly this lately. Speaking for myself, I like to build a small copy of some big project, and then I put big hopes on it and start feeling guilty that it's unfinished. It turns into a kind of ban on picking up anything else, while the big one keeps getting put off too. And here there are so many different styles and approaches laid out.

    • DonHopkins 2 hours ago ago

      My rule of thumb is that if you've been talking about how cool doing something would be for longer than it would take you to do it, you should "Shut Up 'N Play Yer Guitar".

      https://www.youtube.com/watch?v=fKMk6fcKbwE

      Now that AI makes it so easy to play yer guitar, there's a lot more shutting up to do!

  • sonderotis 4 hours ago ago

    Loved this presentation. I personally know the presenter and he presented it at a hackathon :)

  • bitwize 9 hours ago ago

    A Proustian "eating the madeleine" moment occurred when I booted my MiSTer into TI-99/4A mode and began typing programs in TI BASIC, redefining characters and drawing little images with them on screen. In the midst of a tech hellscape, I suddenly remembered why I loved programming to begin with.

    • markus_zhang 8 hours ago ago

      I keep seeing posts about MiSTer on X and HN. Maybe I should get one.

      • platevoltage 7 hours ago ago

        It's a fun little device, I recommend it. It gives me a break from this world of slop.

  • globular-toast 2 hours ago ago

    I've been lucky enough that that for most of my career so far I've been able to do a lot of stuff that I genuinely enjoy. In other words, I've been paid to do recreational programming. It hasn't all been like that, but there's been enough to keep me happy.

    It's changing now, though. I don't really get joy from programming any more. I used to do things because they were challenging. I would ask myself "can I really do this" and the joy came from seeing that, yes, I really can. But now the answer to "can I do this" is increasingly just "yes". Actually doing it is just work at that point. I don't get joy from being a mindless button pusher.

  • sublinear 9 hours ago ago

    > Style 4: The Problem Solver

    I was looking for this one. It's far beyond a mere "style". It breaks the entire premise.

    Being a "problem solver" means you live with the code you write on a daily basis the same way as anyone with any other skill such as woodworking or sewing/knitting.

    For the people who think writing code (without AI) is so hard that they make it a separate "thing" away from their usual life, I have to also wonder whether they can cook their own breakfast.

    • ivolimmen 2 hours ago ago

      I am style 4 and 5. I run 2 websites I use daily myself. And yes I can cook. And no I do not use LLM's

  • vandyswa 8 hours ago ago

    Painful website, tho

  • DonHopkins 3 hours ago ago

    "Recreational Programming" sounds like a fun legal alternative to "Medical Programming" that you don't need a prescription from your doctor to do.

    I prefer the term "Pleasure Programming", to de-emphasize how addictive it is.

    >Permission to build useless things.

    I prefer the term "Ultimate Things", to de-emphasize how useless they are.

    https://en.wikipedia.org/wiki/Useless_machine

    >The Italian artist Bruno Munari began building "useless machines" (macchine inutili) in the 1930s. He was a "third generation" Futurist and did not share the first generation's boundless enthusiasm for technology but sought to counter the threats of a world under machine rule by building machines that were artistic and unproductive.

    >The version of the useless machine that became famous in information theory (basically a box with a simple switch which, when turned "on", causes a hand or lever to appear from inside the box that switches the machine "off" before disappearing inside the box again) appears to have been invented by MIT professor and artificial intelligence pioneer Marvin Minsky, while he was a graduate student at Bell Labs in 1952. Minsky dubbed his invention the "ultimate machine", but this nomenclature did not catch on. The device has also been called the "Leave Me Alone Box".

    So here's a live demo of an ultimate thing I pleasure programmed:

    https://hyperties.org/cabinet/ultimate/

    What this is:

    I've been using Claude to recreationally develop a PDP-7 and Type 340 vector graphics display emulator for the web browser, in order to run an early CAD system called PIXIE, which has the first known radial menus, driven by a light pen, developed at Cambridge in the late 1960's, whose 128 pages of PDP-7 assemblxy language source code the author Heinz Lemke scanned and sent me.

    Once I got it working, I told Mitch Bradley about how much I wanted a Forth system for it. Mitch has written useful things like OpenFirmware and CForth, and I was his summer intern at Sun in 1987, where we had a fun time hacking his CForth into CADroid (a circuit editing system developed at LucasFilms) as an extension language and macro system.

    https://github.com/MitchBradley/openfirmware

    https://github.com/MitchBradley/cforth

    http://www.art.net/~hopkins/Don/lang/forth.html

    Since then, Mitch developed his Sun Forth system into OpenFirmware for the boot ROMs of systems like the Sparcstation, PowerPC Mac, and the OLPC. So naturally I thought it would be fun to run Forth on the same machine that ran PIXIE, mainly because I'd love to work together and hack Forth with Mitch again after all these years, but also because Forth was the perfect language for the PDP-7.

    So then Mitch used Claude to whip up a PDP-7 Forth in one day, with Turtle Graphics!

    https://github.com/MitchBradley/pdp7forth

    https://hyperties.org/cabinet/forth/

    It turns out that the PDP-7 instruction set is ideal for Forth. It has an "XCT" instruction for indirectly executing other instructions, which makes the Forth inner interpreter loop only require 3 instructions.

    PDP-7 Forth — Mitch Bradley, 26 September 2026:

    https://github.com/SimHacker/WillWrightShowForFood/blob/main...

    PDP-7 Forth, by Mitch Bradley:

    https://github.com/SimHacker/WillWrightShowForFood/blob/main...

    PDP-7 Forth Source Code, NEXT: The Inner Interpreter:

    https://github.com/SimHacker/WillWrightShowForFood/blob/main...

      " --- NEXT: the inner interpreter ---
      " Only LAC/LAW-tag cells fall through to "dac i 012"; CAL/JMP-tag cells
      " transfer control elsewhere and never reach it.
      next:   xct i 010     " pre-increment IP, execute the thread cell
              dac i 012     " push AC (only reached by constant/variable cells)
              jmp next
    
    Now that Forth runs like a bat out of hell, I'm hacking virtual hardware devices for the PDP-7, and controlling and visualizing them with Forth.

    First I made an "Ultimate Machine" device for the PDP-7, inspired by Claud Shannon and Marvin Minsky, whose only purpose is to turn itself off!

    https://en.wikipedia.org/wiki/Useless_machine

    Bruno Munari called it a "Useless Machine", but Minsky was more compassionate, and appreciated its purpose of turning itself off as being ultimately useful, so he renamed it the Ultimate Machine.

    I think there are some deep implications to the halting problem, but I can't quite put my finger on it the way the Ultimate Machine puts its finger on its own off switch.

    The Ultimate Machine emulator plugs into the PDP-7 emulator as a virtual device cabinet, which has its own device control IOTs that augment the PDP-7 instruction set.

    DEC sold a lot of "plug-in instruction sets in a cabinet" like the Type 340 vector graphics display, its light pen, character generator, subroutine executer, advanced math instructions, etc.

    https://gunkies.org/wiki/Type_340_Precision_Incremental_Disp...

    The Ultimate Machine device, an emulator of device 56 with its registers, phases and IOTs:

    https://github.com/SimHacker/WillWrightShowForFood/blob/main...

    https://github.com/SimHacker/WillWrightShowForFood/blob/main...

    Then I made a Forth program that draws an animation of the Ultimate Machine on the 340 display, with a switch activated by the light pen. It's not a "simulation" -- it's an actual interactive visual representation of the emulated Ultimate Machine device state that FORTH controls via IOT instructions, the same way it controls the 340 display and light pen!

    The Forth 340 view, with the IOT words, the hand, lid and lamps, and the light-pen switch, so you can turn it on (and off) with the light pen (check out the tool tips the emulator user interface shows you when you point at the graphics):

    https://github.com/SimHacker/WillWrightShowForFood/blob/main...

    Instead of halting there, for even more Turing completeness, I made a Turing Machine device, which is like the 340 display in that it not only adds device control IOT instructions, but also executes its own Turing Machine instructions and tape via DMA from of the same 18-bit core memory as the PDP-7 and 340 display.

    The 340 display and the Turing Machine are both co-processors that execute their own instructions from the shared 18-bit core memory of the PDP-7, which generates code for them to execute, and controls them via IOT instructions.

    The Turing Machine device issues an interrupt when its head page faults off the edge of the tape window in core, so the PDP-7 can implement virtual memory to support "infinite" tape.

    Live Demo:

    https://hyperties.org/cabinet/turing/

    Turing Engine:

    https://github.com/SimHacker/WillWrightShowForFood/blob/main...

    Forth => Turing Machine Compiler I made based on Christopher Cherniak's "TM*" courseware from the "Philosophy and Computers" course I took from him in the 1980's:

    https://github.com/SimHacker/WillWrightShowForFood/blob/main...

    https://terpconnect.umd.edu/~cherniak/philcomp/

    https://terpconnect.umd.edu/~cherniak/PhlCogSci.pdf

    Ostensibly the real use is for education, but I actually did it because it was fun, and I felt like working with Mitch and programming Forth again.

    Forth, the 340, and co-processors in one core: what the cabinet teaches:

    https://github.com/SimHacker/WillWrightShowForFood/blob/main...

    Here's a demo video that tries to explain it:

    PIXIE and FORTH on PDP-7 Cabinet Emulator with Type 340 Vector Graphics Display:

    https://www.youtube.com/watch?v=lo8kdY-5i6c

  • jan_m_savage 4 hours ago ago

    maybe use a shade of gray on black bg? white is too hard on the eyes.