I tried Borland C++ and it was absolutely confusing, but I was probably just too young. Even QBasic was deeply confusing for a long time, but eventually I finally made a simple, terribly written and horribly broken Bomberman clone.
Those looking to experience something similar to that feeling should buy pico8.
For one whole year, I thought that Qbasic and Turbo Pascal were text editors that could also run games. I didn't understood that I had access to real compilers and that I could actually change the programs. Sometimes kids are stupid...
As for your Pico8 suggestion, you can always get the open-source equivalent https://tic80.com/ if you don't have the money.
And yeah, for a while I avoided strings in QBasic because I didn't have any clue how thread or yarn or whatever had anything to do with writing programs.
I used a version of BASIC on my father's accounting computer that had an error message which included the word "ILLEGAL" (I forget what it was, exactly). I always assumed it had something to do with tax laws and the computer warning you not to break them.
I was quite used to loading it up in QBASIC.EXE and then executing it to play.
But I wanted to just run it by opening the file in DOSSHELL.
I knew Windows (possibly just DOSSHELL?) had the concept of file associations, so there I went reassociating things in ways I thought might get .BAS to "just run". It didn't work to get gorillas working, and in the process it seemed to mess up a bunch of other things.
This was very late for still using a 386, I think our friends had pentiums by this point.
I don't know if my Dad realised what I'd done and kept quiet about it, or just didn't realise how I'd been fiddling with those settings, but I think the extra "things seem wonky" was a nice excuse for us to finally get upgraded into the windows 95 and CD-ROM era.
(Hi Steve!)
Unfortunately, now I used print to debug for other languages because I thought debugger is too hard to setup
(One of my favorites is "3D Experiment" in category "Graphics": it shows a wireframe model of a spaceship that can be manipulated with the keyboard.)
By the time I landed in the DOS world aged 8 or so, qbasic was my playground, and was easy to understand from the get-go, and Borland was where I cut my teeth writing something other than basic. One thing it took me a while to get my head around was that a 286 was not a 6502, and practically every little hack, address, anything CPU or memory architecture dependent thing I had learned was now irrelevant.
Coming from Amiga workbench to windows actually felt like a downgrade in many ways, but it was the computer available to me at the time, and retrospectively a good move, as by 3.11 it was clear the wind was blowing to PCs.
Either way, for me, growing with the machine was absolutely formative - the abstraction grew as I did, and I had started near the bottom.
That said, I believe I learned spreadsheets in high school using Lotus for DOS in 1996, but can’t imagine kids 3 years later still doing the same.
- A Franklin ACE (Apple ][ Clone) with an amber screen and two floppy drives
- An Atari ST with a daisywheel printer (Letter quality!)
The newest additions to the school were:
- A Compaq 386 with an amber screen - this is where we had WordPerfect
- A Tandy 1000, 8086 with DOS and a color monitor. Not sure if it could do VGA, definitely CGA was a thing. We ran Where in The World Is Carmen Sandiego and a paint program on that. Because it was in my classroom, this was really the first computer I learned exhaustively. I read its MS-DOS manual cover to cover and enjoyed writing batch files, building launcher menus, etc.
Also I’ve met two Danas that I can remember. Both were lovely people.
The kind of thing people bought computers for. You didn’t need a computer. You needed Word Perfect.
I still remember the little card you could put above the function keys on your keyboard that showed you what alt-F7 or ctrl-F9 did. Each modifier was a different color.
First program I remember seeing people really use on a computer when I was a kid.
http://xahlee.info/kbd/wordperfect_shortcuts_strip.html
And for context, this link has a picture of it on top of a keyboard (cropped):
https://luciamonterorodriguez.com/atajos-de-teclado-y-raton-...
https://archive.org/details/janes-ah-64-d-longbow-95/keyboar...
When magazines reported, or OEMs advertised, that a particular computer had "100% IBM compatibility", generally there wasn't like a formal benchmark for this. It basically meant that the PC versions of Lotus and Flight Simulator ran fine on the machine.
I was trying to get across it was one of the juggernauts of the day. A program normal people knew about if you knew the names of any computer programs.
Perhaps it was the most popular for home users, I don’t know. I was far too young in its heyday.
As productivity software went though it was BIG.
Microsoft Word not only lacked Reveal Codes, it mocked it in an Easter egg in Word for Windows 2.0. Tells you what you need to know about Word, basically.
But if you’re going to have a niche market, that’s a pretty good niche. They care about formatting a lot and have a lot of money to spend if it helps them enough.
Word Perfect was like LaTeX and MS Word at the same time. You could edit text or you could edit the codes and there were no nasty surprises or any random reorganization of the document because you copy pasted something.
Also, by editing the codes you could dictate the precise way the document should look.
I think it was ahead of its time.
Sadly, WP 6.0 changed the macro language too much (they made everything an object and many features were lost) and it was not as successful as WP5.1, because you just don't make all the macros of your customers obsolete overnight.
This is wishful thinking. Google Docs is only hovering around 10% market share.
The vast majority of documents people write for within Google Docs’ limitations. I wouldn’t use it for a book or maybe a dissertation. But it works great for a lot of day to day internal business documents.
It was also very unstable. I remember going to a friend's house to use his better computer and WordPerfect 6 to dress up a paper for school. It took hours longer than it should have due to the constant crashes. It was a very solid lesson in "save often" for teenage me.
I adored WordPerfect under DOS. The experience of WP6 for Windows was so bad that I switched to Word and never tried any future WP versions. Maybe they made it better in 7, but the damage was done.
5.1 was perfection, but the interface was text console. 6.0 was a complete redesign of … everything, and it was more a bad clone of MS Word than an improvement over WP 5.1.
I also remember in the late 90s, before StarOffice/OpenOffice/LibreOffice took off, WordPerfect had a resurgence on Linux, because there was a need for a word processor. I seem to recall a distro shipping with it prominently. Was it Corel Linux?
Does anybody remember AMI Pro? I think that was where I first started to learn about "paragraph styles" and the disciplined way someone could use these WYSIWYG editors a bit like one can use LaTeX styles. Assign styles abstractly, then be able to change in one place and modify all occurrences throughout a document.
However, this just set me up for decades of frustration as the vast majority of business users cannot be bothered to use any discipline at all. Documents would be littered with overlapping bits of manual formatting that would drive me insane with their impossible interactions. And if they defined paragraph styles, it was as endless litter of new styles so that they were hardly ever reused.
It may be my Wordstar indoctrination coming through, but I think these tools would all be better with explicit markup for boundaries, so you could escape the madness of never being able to predict, "which implied style(s) are going to apply to the next character I type with the current cursor position?"
Most of these MS-DOS applications installed into well known folders. Was there any tool that came with Windows to find these applications and put them in program manager groups, or was this something that one had to do for oneself?
[1]: https://devblogs.microsoft.com/oldnewthing/20250505-00/?p=11...
[2]: http://www.bitsavers.org/pdf/microsoft/resource_kits/0030-54... page 183
Also remember taking ages to figure out that it meant "more icons" rather than just a silly made up word.
The good ole' days of having to figure out a meaningful name in 8 chars.
Googling a bit, it looks like a lot of this lore has just been lost. I don't know if there are modern explanations of PIF files kicking around.
⁂ I realize this is an ATM machine phrasing, but we called them PIF files in the day.
https://www.fileformat.info/format/pif/corion.htm
https://web.archive.org/web/20220214185118/http://www.smsoft...
As well as a basic explanation of the file's purpose:
http://justsolve.archiveteam.org/wiki/Program_information_fi...
it's also an onomatopoeia for opening up a can of biscuits
Fun fact: under the hood, PIF files are sent to the same ShellExecute function as EXEs, and if you have an EXE with a PIF extension, it runs the EXE code as normal.
Funnier fact: In Windows 95 and onwards, the UI presents PIFs as a special case of shortcuts, and as with LNK files, Windows always hides (hid?) the extension, even if you have “always show extensions” on. When I get home, I’ll have to check if Windows 11 still has this behaviour…
Edit: Yeah, creating a copy of calc.exe in my ~/Documents folder and renaming it calc.docx.pif does result in a working calculator file that presents gives its name as "calc.docx", albeit with a "shortcut to generic file" icon and a type of "Shortcut to MS-DOS Program" despite the fact that I can't think of any legitimate reason to do anything with a real PIF file on Windows 11 (24H2).
img {
image-rendering: pixelated;
}
Also, I wish I had known about that little trick ... years ... ago.
I learned years later that there are a huge number of changes between 3.1 and 3.0. The biggest being support for more memory and multimedia extensions. The latter was the first time I learned what a dynamic link library (DLL) was and that took me down the rabbit hole of C++.
While "guns don't kill people, people kill people" is a cliché, I think there's still considerable meaning behind it, and I'd say the same holds in the "machines don't do anything to people" sense. Sure, a lot of decision-making and faceless authority is outsourced to machines, but it's still people who are doing that outsourcing, and if those people stopped deciding to put so much weight on the output of (intentionally and unintentionally) black-boxed algorithms then that power of the machines would vanish instantly.
Today I bump into limitations of machines that were put there by manufacturers who are trying to assert ownership of the device after the purchase. In the "before times" limitations were either a fact of the hardware (i.e. you only have so much RAM, storage, CPU cycles, etc) or of your own ability (you don't know how to crack the protection, defeat the anti-debug tricks, etc). Today you're waging a nearly unwinnable battle against architectures of control baked-in to the hardware at a level below a level that the average end user has any hope of usurping.
The machine isn't trying to master me. The people who made the machine are. I wish people in the tech industry wouldn't be party to taking away computing freedom. It pays well, though, and they can console themselves with "It's not a computer, it's a phone"-type delusions (at least until the day "the man" comes for their PCs).
Even in the "before times" we had such limitations: the 486 was shipped as a cheaper version with a functional but disabled math coprocessor. There are meaningful differences in practical terms, but I definitely see it as a clear predecessor of this behavior.
In modern times they also do this because the process of semiconductor manufacturing is imperfect and sometimes some parts of the chip would come out damaged. IIRC this happens with GPUs a lot so they tend to have spare cores.
Also, as a note, unlike modern chips where they fuse off broken cores and sell them as lower specs[1] as part of the binning process, with the early 486SX the FPU was disabled before any testing / binning, so they weren’t selling broken DX dice as SXs.
[1] Or in some cases, fusing if working silicon if the supply / demand curve works that way, see the infamous 3 core AMD Phenom.
In a hypothetical scenario where I somehow "unlocked" the FPU functionality Intel couldn't push out a mandatory firmware upgrade to blow an e-fuse in my chip, fixing the "vulnerability" that allowed me to access the FPU and simultaneously preventing me from ever loading "vulnerable" firmware again (like, say, the Nintendo Switch).
Regular people being able to commit contempt of companies' business models en masse seems to work well to keep them in check, but it's becoming ever harder with so much of everything becoming mobile-centric. And with all smartphones being locked down at the level of someone else's public keys being burned into the SoC at the factory, you can't do shit. They literally have technological supremacy over the rest of the humanity. And we're somehow okay with that.
I'll take consumer protection regulation, at least in the short term.
I wish manufacturers were required to clearly inform consumers which products are sold versus rented, self-hostable versus tied to hosted services, or crippled from running Free software by firmware locks. That would allow a market for freedom-respecting products to actually develop to a reasonable size, and not just to be a fringe thing.
It used to be the case that people valued freedom and the lack of it was something blatantly apparent.
When somebody was a slave, it was a very explicit interpersonal relationship which was very obviously abusive. Even today, some cultures such as Americans are so ashamed of their slaver past that they censor the word on YouTube.
When somebody worked for a company which compensated him not with money but company script which could only be exchanged for goods in company stores, it obviously created a relationship of unequal power which over time put the weaker side at an even bigger and bigger disadvantage. People were able to see and understand this and it was outlawed.
But these days, the power dynamics are so complex and have so many steps and intermediaries, people don't even know what is being taken away from them. It's a salami slicing attack too. There are minor outrages here and there but nothing even changes, two steps forward, one step back to appease them.
---
Bottom line: if a company claims it "sells" you something, the precedent is you own it fully. If you don't, that's theft. Theft, even multi step theft, should be punished in full. That means the company should pay a fine according to how much money they made from their abuse of power, multiplied by a punitive constant.
Additionally, all people involved in the decision making process should also be punished according to how much they stole.
Picking a lock on a device you own shouldn't be a federal crime.
Not if you’re a mainframe customer. Capacity based licensing has been a standard practice in the mainframe world for around 50 years.
The stake was low, because nobody could use your computer to drain your bank account. And someone who would "prank" your computer beyond the social norm would get a stern talking to.
Computers these days have to support your grandma making hotel reservations online without her entire financial information being sent to hackers in Eastern Europe. They're doing jobs that 70s OS designers never thought about. It's a different world.
And when you got them working, they saved so much time that you had extra time laying around.
At least that's how I used them.
Seriously, all of the window .wav files just got loaded from my long term memory, along with the sound of Windows launching from a magnetic HDD.
OR floppy sound - startup button, boop beep trrrrrrrr bomp.
https://devblogs.microsoft.com/oldnewthing/20250505-00/?p=11...
I loved TP, in 93 it was the language we learned for programming in high school. My first compiler was Borland C++ 4.5 bought used from ebay LOL.
The Cicero-approved desktop of MS-DOS programs from this moricons.dll set would include these:
Applause II 1.5
Framework III
Crosstalk-XVI 3.71
PC Paintbrush IV Plus
And of course you’d want dBase III+ and Deluxe Paint II Enhanced.
You would just pick any icon that seemed relevant, with a focus on not choosing the same icon for two different applications.
Computer GUI's were so new then that people didn't really care if the icon was 100% correct or not.
Sometimes for big applications I would draw up an icon and then use it, but mainly try to stay on moricons.dll or any dll's that came with the application that might contain icons.
Local public transport app? Choose something resembling a bus, train or similar. Banking app? Pile of money or bill or whatever. Just as long as two apps don’t end up with the same icon it’s all fine.
What is old is new I guess.
More importantly, though, Raymond Chen is an absolute treasure. I love these posts.
theandrewbailey•3d ago
rbanffy•3d ago