Anecdotally, the cassette player that came with the machine had a misconfigured tape head. Because there was no internet nobody knew why it didn't load most of the games I got with the machine. However, saving and loading programs did work. So, I started writing programs from the user manual and game listings from some programming books I found in the library, and saving them on my cassettes. Because the user manual covered not only some tutorial BASIC but also the machine's graphics, sprites, sounds, and what other features I eventually, after getting some hang of writing BASIC, did also realize that what I could create with the machine hardware itself was virtually unlimited. I didn't necessarily know what the commands did with the underlying hardware but I knew if I poked certain numbers into certain addresses I could make my sprites appear on the screen and make them move around.
By the time I got the cassette player fixed by some computer repair shop, learned about tuning the tape head, and I could finally load all the games bundled with the machine, I was seriously hooked with programming and the highly desired games no longer seemed that interesting in comparison. I knew someone sat down and wrote all those games and instead of playing them I could learn to do the same myself.
Been programming ever since.
Our first family computer was bought back in 1995. IIRC it was a 166 MHz Pentium / 16 MB ram machine with Windows 95. It cost around $3500-4000 back then, and that's not adjusted for inflation.
EDIT: As a side note, 3 years later I managed to get my hands on a copy of Half-Life, right after it was launched. Our computer, with standalone graphics card, was barely able to run the game. Back in those days, being a gamer and chasing cutting edge graphics was really expensive.
Prior to this we had a electric typewriter, and the main purpose of the machine was to be used for writing documents and other business activities. My first experience with programming, was editing HTML files. I then went to the library to look for books on programming, and the only book I could find there (rural nowhere with population 3000) was a book on Pascal, or possibly Delphi.
I was told that there was this one wiz kid in our small rural town that as supposed to be "really good with computers", he was a couple of years old. I hit him up, and the first thing I noticed in his room was this big "Borland C++" box on his shelf - he showed me a basic 3D flight simulator clone he was working on, as well as some sort of Doom clone. I was in awe.
Suffice to say, he did very well during the dot com boom. Skipped college, and went straight into employment.
A couple of years later, when I started in high-school, some older semi-retired developer had recently moved to town. He worked with our school, and offered a Java programming class. Really excellent teacher, and that was the moment I decided I wanted to work with computers.
The first was that my father purchased a PC in the early 1990s to help out with his self-employed publishing business, and like most PCs of the time, it came preloaded with QBasic and the source code for a couple of games like GORILLA.BAS that an introverted kid with a lot of free time could mess around with.
The second was attending a high school with a reasonably well funded computer lab and an unusually open minded computer teacher. If you demonstrated that you were dependable, he'd basically let you do whatever you want. While my school was mostly a Mac shop, I was a bit of a Microsoft shill in high school so by graduation I'd figured out how to stand up and run a Windows NT file & web server for our school newspaper. Another guy was a Linux nut and had been allowed to do something similar with RedHat for the school's drafting lab.
Inclination met opportunity, one thing led to another, and I went on to work with technology for the next 25 years of my life.
What worries me now is that so much technology is so locked down. It must be a very rare school today that allows the kind of freedom we had. There is no IDE preinstalled on a phone, and even merely installing an "unapproved" app is under fire.
If for no other reason, for the sake of the kids the industry, the tools, the operating systems need to be more open. They need to be tinkerable. That's how the most motivated kids tend to learn. Our best and brightest are not being made because we've closed things down to maximize some hedge fund's ROI somewhere. The financialization of America was a grave error.
A bit less with Perl and Python under *nixes where the Idle was about two clicks away.
With C# you would get far more performance and much better support.
>The first was that my father purchased a PC in the early 1990s
>The second was attending a high school with a reasonably well funded computer lab
So, you essentially own your career to your parents being well-off and tech inclined.
It's not like you ended up in that high school by accident.
Sure, being born in such a family is a stroke of luck that many people don't get to have.
I did; my mom was a software engineer in the USSR, and I grew up in the 1990s Ukraine with a PC at home, and went to a great high school in Odesa, and later, in Brooklyn when we immigrated.
Like @susam, I played Digger on IBM PC 286 as my first game when I was 4.
I have a PhD in math and Google/Meta/MS on my resume today.
I owe this to many strokes of luck, but how tinkerable the PCs were was not the most significant one by far.
The most important part was access to production tech, seeing it used, and having a role model that made it a natural consideration as a career choice.
And the "luck" of what was available in my K12 was 100% the work of my parents who got me into those schools.
Credit where credit is due, dude.
Made for some funny exams afterwards...
Edit: well, funny for my adolescent self...
With my kid I want to ensure that fundamentals of computing are understood as early as possible, this is what allows you to understand how the world is interconnected.
This means that you could create cool looking graphics easily. For example, you can just compute the points of a circle and draw the points one by one, and in the screen it will show a full circle being drawn.
"Modern" graphics libs (even SDL I think), made this impossible by having redraw the whole screen every frame so that now my program has to remember all the points there the program drew before to get the same effect.
The former workflow made graphics programming so much fun for me and I find the modern "fast rendering pipeline" boring and not a lot of fun.
Things like that, one by one, have sucked the whole fun out of computing.
For example, do you know what combination of flags listed here https://documentation.help/SDL/sdlsetvideomode.html would do the trick? Or anything that is not listed there would also help.
In the early 80s when the IBM PC hit the scene, Hercules had a graphics card that was amazing and offered better than CGA graphics. I was plinking on it at my dad’s friend’s house, drawing circles and stuff, and on HIS computer the graphics were retained. I had to figure out how to clear the screen, whereas on mine, not having the Hercules card, it wasn’t retained. Never understood what was happening until now.
I also remember running over to the neighbor's to make a copy of a working config file after effing up my config file. (Himem.sys?)
I spent much time carefully typing these things in (spy games, horror games, etc), then even more time designing my own adventure games after reading the adventure titles.
https://community.carbide3d.com/uploads/default/original/3X/...
(If someone knows a good/ideal technique for that, I'd be glad to learn of it --- my math background is kind of shaky)
I'm going to make two assumptions based on your screenshot:
1. The large circles A and B are touching each other
2. You know the radius (a,b,c) of each circle and want the third one (circle C) to touch both of the first two.
What I'd do is place the center of both circles A and B on the same horizontal line and choose a frame of reference such that the center of circle A is the origin, and the center of circle B is placed at coordinates (a+b, 0)
Now we are looking for the coordinates (x, y) of the center of circle C, placed above the x-axis. Which by the way is one of two solutions, as there is a symmetrical circle C' placed below the x-axis, with the coordinates (x, -y)
We know that if we traced a straight line from the center of C, it would intersect the x-axis at a 90° angle. So drawing that line creates two triangles which each have a right angle in this spot:
- one triangle on the left, where the hypothenuse goes from the center of A (0,0) to the center of C (x,y). Its length is the sum of the radii of A and C.
- one triangle on the right, where the hypothenuse goes from the center of B (a+b,0) to the center of C (x,y). Its length is the sum of the radii of B and C.
Both of these triangles share a vertical segment of length (y).
The left triangle's bottom segment has a length of (x) and the right triangle's bottom segment has a length of: (a+b) - x
We know from Pythagore that the square of the length of the hypothenuse is equal to the sum of the squares of the two sides of each triangle, so we know that:
(a+c)^2 = x^2 + y^2
(b+c)^2 = ((a+b) - x)^2 + y^2
So y^2 = (a+c)^2 - x^2 = (b+c)^2 - ((a+b) - x)^2
(a+c)^2 - x^2 = (b+c)^2 - ((a+b) - x)^2
Develop it all a^2 + c^2 + 2ac - x^2 = b^2 + c^2 + 2bc - ((a+b)^2 + x^2 - 2ax - 2bx)
Simplify a^2 + 2ac = b^2 + 2bc - (a^2 + b^2 + 2ab - 2ax - 2bx)
a^2 + 2ac = 2bc - a^2 - 2ab + 2ax + 2bx
2 a^2 + 2ac - 2bc + 2ab = 2ax + 2bx
a^2 + ac + ab - bc
x = ------------------
a+b
and from there you find y, from y^2 = (a+c)^2 - x^2.I did notice that in your screenshot A and B are of the same size, so if you knew this from the start it becomes way simpler.
x = a (of course the center of your new circle is at the vertical of the point where both circles touch, which is obvious due to the symmetry of the problem)
and
y = squareroot(c^2 + 2ac)
I am going to make a link to your comment from the forum post in question:
https://community.carbide3d.com/t/knapp-joint-with-cnc/19723 (scroll all the way to the bottom)
and will hopefully be able to translate that into Open(Python)SCAD code so as to make a generalized solution for my current project:
The school computer lab had Visual Basic but you only got an hour week in there as part of the computing subject, the school library computers couldn't have it because the licence was per seat not per site.
You really only had QBASIC which was great but we really wanted to write Windows apps. You'd be up for a thousand dollars for a MSDN academic subscription just to get Visual Basic.
I guess the blessing was instead of Windows apps we made web pages and JavaScript games hosted on our parents ISP webhost accounts while we dreamed of the day we'd have enough money to buy our own .com domain.
40 years later, and I've successfully managed to never use a Microsoft product.
People sometimes underestimate how important search engines are to build applications without official documentation.
Supporting FOSS is more than a convenience for some, as most remember locked ecosystems were not fun at any age. I remember GW-Basic and VB3.0 made building programs easy for kids, but it had other issues besides the license cost. Prior to Visual studio, making standalone binaries was simply too difficult for most until the Internet.
Now the average AAA game is around 40GiB on Steam, and g++/clang is the standard tool-suites. Fun times, =3
Day 2 task was cleaning our Win11 Steam game install drive:
https://www.oo-software.com/en/shutup10
https://github.com/zoicware/RemoveWindowsAI (when it works)
Day 1 task installing Win11 Pro in offline-mode without TPM/Bitlocker speeds up the benchmarks a bit for a game system:
https://github.com/pbatard/rufus/releases
Fun times, but most of the Win experience has always been removing garbage code/adware/shovel-ware. =3
Impressive how that part changed. Today, many computers are cheaper than the desk they are sitting on. Many companies pay over $2000 for office furniture, and that's not even fancy. A $1000 laptop sits on top of it.
Furniture made by an actual cabinet maker will easily get to $5000+. About the price of a maxed out gaming rig, or an enterprise level workstation.
You can definitely go much higher if you really go for TOP of the line though.
Seeing kids nowadays interfacing with just a touch screen makes me fearful that a foundation of knowledge is not being built, even among the more nerdy types.
I also remember that the game speed was set to some factor of the computer's clock speed. When I later tried to run the same game after I upgraded my hardware, the game went so fast, you could not even play it.
https://people.eecs.berkeley.edu/~bh/logo.html
Ah, yes, moving a turtle and yaddah yaddah. Yes, you have it, and material on par (I am no kidding) to "Intro to symbolic computation" from the Common Lisp world. The 3rd volume can be hardcore compared to what I learnt in Elementary with Logo.
One of my strongest-held opinions is that children need to be taught, explicitly and by example, that there is nothing you see on the screen that simply "comes with" the computer, and that of all the fascinating/distracting/useful things on the web, none of it just "appeared." It is all the result of people making creative decisions and doing creative, technical, intellectual work to bring ideas to life.
Lots of stimulating books and messaging for children focus on how things in society and in the physical world come to be. Holes are dug, resources are gathered and processed, smart people create complex things including machines that create even more complex things. People perform hard labor to achieve amazing things. People gather, form consensus, and create social structures and government. People have ideas and create art. People observe problems and create solutions.
Children internalize this messaging and develop an appreciation and understanding of how effort, creativity and intelligence result in amazing things that make everyone's lives better, but (in my opinion) that messaging was never sufficiently updated to ensure that that appreciation and understanding extends to software, which increasingly runs our world. We don't put enough effort into showing children that their favorite games, all the stuff in all the menus on our phones, all the software they use to learn or communicate or play, all of it is made by people who had ideas, made design decisions, and then made them real through accumulated wisdom and great intellectual effort.
Not every kid needs to "learn to code", but they should all learn that everything they look at and tap on their screens was made by people who did, and who wanted to make things to solve problems and make life better.
It's unfortunate that the rise of AI slop has complicated this message; that's all I'll say about that.
- Oregon Trail
- Where in the World is Carmen Sandiego
- Super Solvers (the best of the lot)
I also got a Windows 95 IBM Aptiva PC from my parents that had a lot of educational software. I can only remember some of it:
- The Lost Mind of Dr. Brain (I loved this game - it had logic programming, 3D spatial reasoning tasks, biology, ...)
- Encarta Encyclopedia virtual maze
- Mavis Beacon Teaches Typing (I hated it; I learned to type when I got onto IGN Boards, EZboards, AIM, and IRC.)
- King's Quest VII (this counts as educational logic puzzles, right?)
- MechWarrior II (well, I considered it educational...)
I'm envious of kids today growing up with LLMs and vibe coding. I would have had a blast at that age with the tools we have today.
One particularly hilarious part was right at the beginning of Island of Dr. Brain, back in the old-school days of manual-based copyright protection. The game would give you longitude and latitude coordinates, and you had to look them up in the manual to figure out where you were supposed to parachute. If you got it wrong, your character would just splash into the ocean.
I actually referenced The Island of Dr. Brain in something I made about a year ago. I don’t know if you played it, but it has a jigsaw puzzle as one of the mini-games. It was one of the most unusual jigsaw puzzles I’d ever seen: an animated jigsaw, where the entire image was a effectively looping "cinemagraph". One of the first things LLM-assisted projects I put together was a jigsaw puzzle game with about a dozen custom animated jigsaw puzzles. Link is in my profile.
This is a bit of a deep cut, but my most distinct memory of Super Solvers: Midnight Rescue in DOS was that it used the PC speaker to play “The Sorcerer’s Apprentice.” If you did anything that triggered a sound effect like jumping the music would immediately reset and start over. It was like a weird, primitive version of scratching a vinyl record as if you were some kind of amateur PC-speaker DJ. (and kind of the opposite of Dig-Dug)
Nostalgia for the old web - building websites in HTML on Angelfire and Expage.com. Learning programming on visual basic and how to copy and paste <marquee> to welcome people to the site and to sign the guestbook…
There is a lesson in there somewhere that humanity has not yet woken up to.
I think they became less interesting because they became more homogenous, more standardized, more commercialized
It's like the internet. It was more interesting when everything was spread out and you felt like you had to explore it. Now it's all the same content collected on the same 5 sites, and it feels like there's nothing actually interesting out there anymore
I think it started becoming less interesting as it grew more powerful and with it came more capable displays and GUI interface, and before you know it, computers are indistinguishable from a damn television.
At least for me as computers started showing more realistic graphics, it became less abstract, less magical, less interesting. After all, reality is pretty boring...Not sure how we collectively missed that fact...
There's probably also an aspect of "The computer used to be a place you would go, now it's a rectangle that comes everywhere with you"
It's definitely less magical when it is everywhere and in everythin
You're not alone in missing the magic though. I miss it too