It’s a fine comparison in the context of what computer science means to programmers.
Prior to the 00s, software engineering was a lot more technical, low-level, and skilled work.
Today, a bootcamp will tech anyone to copy and paste things together from SO into a product.
To the average programmer, programming is much less science and much more art these days. Much less any kind of science (including rocket science) and much more something you slap together.
I worked in companies where an internet outage made all programming grind to a halt without Stack Overflow. You really can’t hope to go to the moon with that kind of mindset.
I’m not saying that we don’t have brilliant programmers who still write very rigorous low level code. But I am saying that they’re not really in demand all that much these days.
This also makes computer science courses focus on things like JavaScript in programming only. I would know as I work with low level systems, but only through my own tenacity, perseverance, and continuous learning. In my CS BSc I didn’t learn almost anything about low level work on modern day hardware that I use. It really was all Java and JavaScript, Web design, really basic computing and math. Af the end of my studies, I could explain a pumping lemma is and how to use a few JS frameworks, but not how large an L1 cache is on various machines.
So yeah… UX/UI vs rocket science — the scales in computer science have tipped a lot.
If you're using that smartphone as the control surface for operating some sort of vehicle, you're doing it wrong is more to the point. Cars removing buttons in favor of touch screens is a horrendous decision that we're only starting to back away from much too slowly for my tastes.
I am fascinated by old tech like this. It really makes computing seem "real" to me. That you had someone weaving ROM to capture the program just shows it's a bunch of 1s and 0s. Stuff like rope core memory and mercury delay line memory are just this fun intersection of mechanical and electrical.
Indeed and it should make the moon landing more 'real' to everyone. This incredible thing really could get us to the moon and land on it. It's like the secret sauce.
There's this eletrical circuit schematic from a very old arcade game. The circuit literally encoded the graphics of the game. It was a 2D grid of wires with connections meaning 1 and bypasses meaning 0. You could see the shape of the thing on the circuit.
I wish I could find it again. I've searched the internet many times but to no avail. Perhaps someone here will know.
I know this. I’ll dig up the reference in the am.
It’s diode rom graphics.
Atari GranTrak 10 used it for graphics, but the then new rom chips for code/data.
The Space Race game. Like a bitmap soldered onto the circuit, as the article points out. This isn't the one I had in mind but it's still an excellent example.
I can't recommend "The Apollo Guidance Computer: Architecture and Operation" book highly enough. It's an awesome book that looks into details of AGC's inner workings.
One interesting tidbit: the raw machine code in AGC was a veritable Turing Tarpit-style hell. So instead of just powering through it, they added an interpreter for a much more human-friendly language that ran on top of it.
Levels of abstraction: they're not just for enterprise applications!
"Digital Apollo" by David Mindell is also excellent. It covers the development of the AGC and other flight computers at the Instrumentation Lab, and puts a lot of the design details of the AGC in context.
Agree with this recommendation. There's also a lot on the related 'cultural' aspects as the designs evolved, e.g. pilots vs. mission control in terms of who has primacy, who has the best instrumentation, etc.
Of course levels of abstraction aren't just for enterprise applications - any non trivial assembly language program introduces some level of abstraction. The VM was a clever idea, especially for the sixties in such a compact machine. I used to use Sweet16 by Woz in the early eighties and used in in a similar manner adding to the instruction table to give me high level disk drive commands for example.
Indeed, abstraction goes all the way down, and electrical components like resistors, capacitors, and transistors are abstractions. The components themselves are largely different configurations of the similar materials and subject to the same forces. Eg, every resistor is to some degree a capacitor, and an LED, a transistor, and a solar panel are all variations on the same technology (and you can usually abuse them to fulfill one of the other roles). The distinctions are a structure we impose to create an environment friendly to engineering - abstractions.
A good chunk of code being written today is machine microcode that's been abstracted into opcode then abstracted into an OS that runs code written in C/C++ compiled into an executable pretending to be another machine which executes its own bytecode interpreted from JavaScript code that was transpiled from TypeScript.
Not sure how many more levels of abstraction you'd want.
The way you worded this, I'm not sure if you're attacking my point or corroborating it.
It sounded like you appreciated that the AGC simplified things via abstraction and then implied it wasn't possible to do today, despite that being the basis of all modern tech. I wasn't attacking abstraction in any way.
Sunburst and Luminary [1] mentioned using the native LGC assembly for some performance-sensitive parts of the flight; do you know how common that was/how much of the code was written that way?
The AGC (and the larger system around it) had so many firsts. A big one is it's one of the first interactive computers, where you would interact with it with a keypad rather than having it computer a batch job. And one of the first embedded computers - controlling the spacecraft.
Obligatory shoutout to curiousmarc and Mike Stewart. I’m stunned by the amount of work that have put into making this national treasure (partly) operational again
Here,s a deep, deep dive into AGC rope memory. My mental model was stuck on core memory until I saw this and finally got the difference. Tl;dr Way higher information density. https://www.youtube.com/watch?v=hckwxq8rnr0
From 1965, talks about how it was actually constructed and tested, showing, for example, the factory machinery and people who constructed the read-only rope memory (Gentle warning that there's some anachronistic language where they refer to women working on the hardware as "girls")
I loved Robert Wills talk about the AGC, linked by @leetrout elsewhere in this thread
> it was the first computer to use silicon integrated circuits (ICs).
I dispute this. The Minuteman II guidance computer was first. Perhaps there's a confusion with between the block I and block II designs of the AGC. Only the block II used ICs; this version was designed in 1966. The Minuteman II guidance computer was already being installed in a missile in Sept. 1964.
No, the Apollo Guidance Computer block I also used integrated circuits: 4100 3-input NOR gates according to Eldon Hall's book. It's a bit murky what computer was the first to use ICs. Texas Instruments built the Semiconductor Network Computer in 1961, calling it "molecular electronics" or "Mol-E-Com". The AC Spark Plug MAGIC and Martin MARTAC 420 development started in 1961. The Minuteman II computer (Autonetics D37C) started in 1962. For more see https://www.computerhistory.org/siliconengine/aerospace-syst...
"Block I was basically the same technology as the Polaris system. Block II incorporated new technology within the original architecture."
"The most important reason for going to Block II was the availability of new technology. The Block I design used core transistor logic. It had several disadvantages: [...] These disadvantages led MIT to being studying, as early as 1962, the possible use of integrated circuits (ICs) to replace core transistor circuits."
Your source is slightly confused. The original design of the Apollo Guidance Computer used core-transistor logic and they built three prototypes 1A, 1B, and 3C in large racks. In 1962, they switched to integrated circuits and built rack-mounted IC prototypes (AGC3 and AGC4) using Fairchild Micrologic. They built the Block I AGC systems starting in 1963 and launched one on an unmanned flight in 1966. Block II planning started in 1963 with qualification tests in 1966. All crewed flights used Block II systems. Source: "Journey to the Moon" by Eldon Hall, designer of the AGC.
50 comments
[ 5.5 ms ] story [ 79.8 ms ] threadDon't think we would've made it to the moon if it were up to present-day UI/UX folks.
Prior to the 00s, software engineering was a lot more technical, low-level, and skilled work.
Today, a bootcamp will tech anyone to copy and paste things together from SO into a product.
To the average programmer, programming is much less science and much more art these days. Much less any kind of science (including rocket science) and much more something you slap together.
I worked in companies where an internet outage made all programming grind to a halt without Stack Overflow. You really can’t hope to go to the moon with that kind of mindset.
I’m not saying that we don’t have brilliant programmers who still write very rigorous low level code. But I am saying that they’re not really in demand all that much these days.
This also makes computer science courses focus on things like JavaScript in programming only. I would know as I work with low level systems, but only through my own tenacity, perseverance, and continuous learning. In my CS BSc I didn’t learn almost anything about low level work on modern day hardware that I use. It really was all Java and JavaScript, Web design, really basic computing and math. Af the end of my studies, I could explain a pumping lemma is and how to use a few JS frameworks, but not how large an L1 cache is on various machines.
So yeah… UX/UI vs rocket science — the scales in computer science have tipped a lot.
It's neither art nor science; it's more like manual labour.
IMHO it was much more of an art back then than it is now.
I wish I could find it again. I've searched the internet many times but to no avail. Perhaps someone here will know.
So nice to finally learn the term of art.
https://www.retrogamedeconstructionzone.com/2020/01/graphics...
The Space Race game. Like a bitmap soldered onto the circuit, as the article points out. This isn't the one I had in mind but it's still an excellent example.
One interesting tidbit: the raw machine code in AGC was a veritable Turing Tarpit-style hell. So instead of just powering through it, they added an interpreter for a much more human-friendly language that ran on top of it.
Levels of abstraction: they're not just for enterprise applications!
https://en.wikipedia.org/wiki/SWEET16
I found some of the interpreted commands for Apollo 11 here
https://www.ibiblio.org/apollo/Documents/HSI-208472.pdf
Not sure how many more levels of abstraction you'd want.
It sounded like you appreciated that the AGC simplified things via abstraction and then implied it wasn't possible to do today, despite that being the basis of all modern tech. I wasn't attacking abstraction in any way.
[1] https://www.amazon.com/Sunburst-Luminary-Apollo-Don-Eyles/dp...
https://youtu.be/B1J2RMorJXM?si=XPNHLyXWmLewrOV7
More info and links to other videos on https://mattfife.com/?p=4982
[0] https://www.curiousmarc.com/space/apollo-guidance-computer [1] https://www.youtube.com/c/CuriousMarc/channels [2] https://www.youtube.com/watch?v=hckwxq8rnr0
I also want to give Mike Stewart a shout out - and the entire team including Ken Shirrif and Carl Claunch,
If you read this Mike. Wow! Great effort - I'm very thankful.
Also here's his AGC replica on github!
https://github.com/virtualagc/agc_hardware
I was there! Great presentation
https://www.righto.com/search/label/Apollo
> [The AGC software] was literally woven into the core rope memory by factory workers, which took several months to complete.
So that's how the core rope memory works. I've always wondered about it.
https://www.youtube.com/watch?v=ndvmFlg1WmE
From 1965, talks about how it was actually constructed and tested, showing, for example, the factory machinery and people who constructed the read-only rope memory (Gentle warning that there's some anachronistic language where they refer to women working on the hardware as "girls")
I loved Robert Wills talk about the AGC, linked by @leetrout elsewhere in this thread
I dispute this. The Minuteman II guidance computer was first. Perhaps there's a confusion with between the block I and block II designs of the AGC. Only the block II used ICs; this version was designed in 1966. The Minuteman II guidance computer was already being installed in a missile in Sept. 1964.
https://ntrs.nasa.gov/api/citations/19880069935/downloads/19...
"Block I was basically the same technology as the Polaris system. Block II incorporated new technology within the original architecture."
"The most important reason for going to Block II was the availability of new technology. The Block I design used core transistor logic. It had several disadvantages: [...] These disadvantages led MIT to being studying, as early as 1962, the possible use of integrated circuits (ICs) to replace core transistor circuits."
TL;DR: the core-transistor logic AGCs were prototypes before Block I; Block I used ICs. You can see a photo of a Block I module with flat-pack ICs here: https://www.computerhistory.org/revolution/digital-logic/12/...