I worked my way through some of its source code many years ago during my post-graduate studies and it was very _strange_. I see it is now on GitHub [0].
They used C macros to implement object oriented programming, with symbols like `me` and `my` and `thee` scattered throughout the source code. It seems the code has been converted to C++ (IIRC it used to be in C), but I still see the `my` keyword in there.
They have their own BASIC-like scripting language. The weirdest property for me was that it allowed for whitespace in the identifiers. Just look at the example in [1]: The `Create simple Matrix` is actually a function in the scripting language that constructs a matrix object. The function name corresponds to a menu item and IIRC they used some more preprocessor magic to reuse the same code for the menus on the GUI and the functions in the scripting language.
I don't think you're supposed to write the scripts by hand. Rather it recorded your actions as you worked your way through the GUI and then you could export and modify those recordings as scripts.
They also implemented their own cross platform GUI toolkit rather than using one of the existing cross-platform GUI toolkits, so it works on Windows, Linux (or any X Windows I believe) and MacOS.
I find myself marveling at how much stock the store at my local petrol station carries.
There are shelves full of different varieties of chocolate bars, and each of those wouldn't be there if people weren't buying them. Yet if you look at how many people are in the store at any given time, and how many of those people are buying chocolate bars and extrapolate then it _feels_ as if it shouldn't be worth anyone's while to carry so much stock.
There’s an entire supply chain behind that too. Cut off trucking into town and even the big grocery stores will run out of everything within days at most.
the stock of over-the-counter medications is wild.
there's are a few places synthesizing complex chemicals with insanely high degree of precision to go into asipirin and cold medicine and such. and then they get thrown into a broad distribution network that ensures almost everybody is within 5 miles of access to them
I started with a notes.txt file for the system I maintain. I found myself gradually adopting Markdown syntax because I need bulleted lists and headings to separate different sections. I also needed hyperlinks to documentation or StackOverflow answers.
So one day I just added the Markdeep tags to the bottom of the file and renamed it to notes.md.html
I still keep it open in a text editor for day to day use, but it looks really nice when you open it in a browser.
My daily driver has been in for repairs, so for the past couple of weeks I've been using my Raspberry Pi 4-based "Hack-in-the-box" cyberdeck that I built in 2020.
The more I use it, the more I love it: Everything I need is readily available through the package manager. There are no interruptions and no nag screens. There is an unobtrusive icon at the top telling me that an update is available, but I get to install it on my schedule.
I've resisted the urge to sign into Google for Gmail and YouTube and my other social media accounts and I'm actually amazed at how little I miss it (though I still use those services from my phone, but I've been using them less)
Also, it being a home-built computer it comes with a couple of quirks: Its fan is extremely noisy, when you scroll the mouse wheel you hear a crackling noise on the speakers and the keyboard is very uncomfortable, but all of these gives it a "personality" that only endears it to me.
Thanks for this. I vaguely recalled reading that Magic Carpet featured a stereogram mode, but then never got around to checking it out.
I remember that the DrDobbs' Journal once featured a stereogram program that ran excruciatingly slow. I wonder how Bullfrog got it performant on the hardware of the era
I was fascinated by the Amiga when I was young, but they weren't widely available in my country.
Lately I've had an itch to do some retro programming work and was looking at the Amiga specifically. I tried Aztec C natively in UAE and VBCC as a cross-compiler, and got some command-line and hello world Intuition programs working.
But going beyond that has proven somewhat difficult. Documentation seems to be scattered all over the internet. I found a bunch of books on archive.org, but they mostly seem to focus on Intuition applications or beginner programmers.
I don't think you can follow the path originally trodden (competing on asmone 68K/hw with your fellow local coders, exchanging snippets of hw reg info and source) however there's a terrific short series of videos on youtube you might consider:
Wei-ju Wu lays out how to code directly on the hardware in an accessible manner and, importantly, from C, instead of 68K, with lots of examples. Then, if (or rather: when) you have to, you can always step down a level into 68K assembly to get better performance.
If you're at all interested in the technical aspects or retro computing, I highly recommend Fabien Sanglard's Game Engine Black Book: Wolfenstein 3D: https://fabiensanglard.net/gebbwolf3d/
The technical wizardry that went into making it fast went way beyond the raycasting graphics engine. There were all kinds of tricks used to speed up the engine:
One that comes to mind was compiled scalers - they basically JIT-compiled the code of an unrolled loop that drew each scaled vertical strip of a wall. That was why the game had to do some slow processing when you resized the view area.
Another one was that if two vertical strips were the same, they could be sent to the VGA card at the same time.
There were also a couple of tricks to speed up drawing sprites if they contained lots of transparent pixels.
I vaguely also recall seeing the "fizzlefade" effect discussed here a while back: When you die the screen is faded to red through a linear feedback shift register that touches each pixel on the screen once in a seemingly random way.
Kids today have it so easy with their Unitys and their Unreals... :P
The Black Book on Doom is also worth a read for comparison - it is quite remarkable how much the PC improved when 16-bit real mode was replaced by 32-bit protected mode and how different the design of Doom was from Wolf3D.
I worked my way through some of its source code many years ago during my post-graduate studies and it was very _strange_. I see it is now on GitHub [0].
They used C macros to implement object oriented programming, with symbols like `me` and `my` and `thee` scattered throughout the source code. It seems the code has been converted to C++ (IIRC it used to be in C), but I still see the `my` keyword in there.
They have their own BASIC-like scripting language. The weirdest property for me was that it allowed for whitespace in the identifiers. Just look at the example in [1]: The `Create simple Matrix` is actually a function in the scripting language that constructs a matrix object. The function name corresponds to a menu item and IIRC they used some more preprocessor magic to reuse the same code for the menus on the GUI and the functions in the scripting language.
I don't think you're supposed to write the scripts by hand. Rather it recorded your actions as you worked your way through the GUI and then you could export and modify those recordings as scripts.
They also implemented their own cross platform GUI toolkit rather than using one of the existing cross-platform GUI toolkits, so it works on Windows, Linux (or any X Windows I believe) and MacOS.
[0]: https://github.com/praat/praat [1]: https://github.com/praat/praat/blob/master/test/script/comma...