Top
Best
New

Posted by blenderob 7 hours ago

Childhood Computing(susam.net)
118 points | 66 comments
yason 1 hour ago|
I got my C64 in 1985. Obviously, I can revisit the graphics and sounds of that machine online now, via emulators and youtube videos. But one thing I always remember is the smell of warming circuit boards that oozed from the casing soon after you turned on the computer.

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.

TrackerFF 5 hours ago||
At school we had a bunch of older machines with windows 3.1, which had some touch typing program installed - it was the only thing we were allowed to use

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.

safety1st 4 hours ago||
I essentially owe my career to two great strokes of luck.

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.

RiverCrochet 1 hour ago|||
A silver lining is that Javascript code will run on any modern browser+OS and can be created with nothing but a text editor. Even though this is many degrees of abstraction from facing the bare metal that was there in the 80s and 90s, it's better than nothing.
anthk 12 minutes ago||
Windows XP (since SP2? )came with a C# compiler and it was pretty much ignored, CSC.exe.

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.

stavros 3 hours ago|||
But making tools tinkerable is incompatible with extracting maximal value from them!
steve1977 3 hours ago||
I once discovered where the texts for our touch typing exams were saved on the network.

Made for some funny exams afterwards...

Edit: well, funny for my adolescent self...

pixel_popping 6 hours ago||
I'll always remember that moment on RPG maker (probably around 9 years old) where suddenly I've understood Variables (I was experienced with HTML and so-on prior), a whole world was unlocked, VB6 programs became possible, everything "clicked" suddenly. I feel once you understand the fundamentals on how it works, it's easy to progress very fast as a child/teenager afterward.

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.

embedding-shape 5 hours ago|
I similarly remember struggling with understanding what "classes" were in PHP as a kid and why on earth they'd ever be useful for, seems like needless abstractions, but finally it clicked, and a whole world opened up, suddenly I could understand much more of Zend Engine than before, and software engineering became a thing I started caring about. Of course, later I was enlightened again so now I avoid classes.
anthk 51 minutes ago|||
Classes where undertood under Inform6 (a literal OOP language compiling against ZMachine, for text adventures -even more, as Tetris, Madbomber...) with two lines.
pixel_popping 4 hours ago|||
I also remember the infamous "OOP" PHP war :)
qsera 4 hours ago||
One thing that was nice about the graphics programming those days was that when you drew something on the screen, it remained there until your program erased it.

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.

PaulDavisThe1st 4 hours ago||
Both so-called "retained" and "immediate" mode graphics libraries continue to exist for most platforms, and you can choose to use whichever one you prefer.
qsera 2 hours ago||
I have looked it up in the past, and I have looked it up now, but I cannot find a reliable documentation that describes it.

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.

rhyperior 2 hours ago|||
Your post just clicked something from of a deep memory into place.

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.

Jtsummers 4 hours ago|||
It's been a while (over a decade now), but I think SDL allows you to leave the contents on the screen if you don't call the clear function before you render new content. I don't know how well that'd work with resizing a window though.
qsera 4 hours ago||
I think it works like that if acceleration is no enabled. But even then I think it does not work reliably..I might be missing something though.
PhilipRoman 4 hours ago||
SDL is a relatively high level API and framebuffer style graphics work fine on it. I think there are some edge cases for X11 with non-compositing window manager where you will get interesting glitches if the window moves.
s1mon 2 hours ago||
I'm old enough and lucky enough to have had my first computing experiences (1978-80) be on a teletype in our elementary school which was connected to a minicomputer that the town owned. The connection was an acoustically coupled modem/analog phone line that ran at 300 baud. The exciting thing was to write very basic BASIC programs and see results on the printout. There was no CRT, everything was via the literal teletype - a keyboard and a clunky printer.
joak 1 hour ago|
You could use this audio at 300 baud by recording it on a standard audio cassette. Then play the audio back as input to the modem to retrieve the data
Enivel 5 hours ago||
For me it was the view source era. Around 2001 I was copying HTML from Geocities pages and modifying them in Notepad. I didn't know what a programming language was but I knew how to change the background color and add a marquee. That instant feedback loop -- save, alt-tab, refresh -- was enough to get me hooked.
mfld 49 minutes ago||
Does anyone remember the art of optimising MSDOS startup to have enough free memory for games? And inspecting gorillas.bas? For me, this probably contributed to an interest to learn more and experiment. In fact, I'd like to encourage my son to a similar creative exploration, but don't how this is going to happen when pulled into the current generation of games and videos.
nosioptar 40 minutes ago|
It's been a long time, but I remember it a bit.

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?)

darepublic 45 minutes ago||
In 92 as I recall my school's unremarkable computer lab had apple iis and Macintosh mix. We never learned any programming we wrote essays in word software and got to play kidpix, Carmen San Diego, Oregon trail if we were good
lelanthran 3 hours ago||
These books should be rewritten for a modern platform: https://usborne.com/za/books/computer-and-coding-books

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.

WillAdams 5 hours ago|
I actually had to revisit this sort of thing in a recent design for a CNC --- for want of a good way to determine the location of a smaller circle nested into the region between two larger circles, I made a Circular Array of circles of the desired size, adjusting the number of them until one lined up as desired:

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)

sebastiennight 4 hours ago|
Let's give it a try.

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)

WillAdams 3 hours ago||
Thank you for that!

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:

https://github.com/WillAdams/gcodepreview

More comments...