Host here. Becky is that old school type of programmer that I don't get to talk to too often.
She recommendations devs today should learn bare metal programming by starting with 6502 assembly.
I miss the elegance and simplicity of writing 6502 code. The code, you enter it, it just does one task, leaves. Next function does the same thing. Whereas in C++, you can write code that actually still maintains that paradigm and it works just fine. But it’s so easy if you don’t really know what’s going on to write what you think is three lines of code, this’ll do everything. But when you look at the output of the compiler, it’s a novel.
That’s my main takeaway. Is that when you truly understand the instruction sets, how the stack works, how memory management works, how the hardware works, how it all interacts, then you have a true understanding of the limitations of computers
Here is a another fav part:
They gave her a retail version of the game for the PC, a CD-ROM. The compiled final version of the game, compiled for a completely different platform with a different architecture, but it’s on a CD and the 3DO has a CD drive.
They said it runs on the PC, so we just say that’s 90% complete.
The type of advice given makes sense if one has either a huge amount of free time (both in the short and long term), or works professionally in that field (like the guest did in the past).
But in real world, that's not something that works. Programming for old platforms is fun and has historical value, but there are a lot of problems that don't make sense today. It's not particularly educative to write lots of lookup tables, or to know optimized (that is, fast enough) 16-bit additions, let alone divisions (and problems like these are typical once one writes something that it's not just a "hello world"). Heck, even programming (optimizing) for a 286 is significantly different from how one would program assembly today.
Having said that, I'm definitely not against learning the lower level, but just to focus on a relevant low level. There are different approaches, but a good starting point to understand modern computers from the bottom up is the series "Write great code" by R.Hyde, volumes 1 and 2.
If one wants to program on 6502 for the sake of programming on 6502, there are plenty of books on archive.org to learn from. It's not easy to find good ones, and they're somewhat hard to read because they're bad scans, but some are very valuable in terms of learning assembly by writing non-trivial, real-world routines.
My personal interest would be in reading assembly for the sake of reverse engineering. So, maybe 6502 is not the best option for me. I'll take a look at those books, thanks.
I've programmed a bytecode virtual machine, and while not the same as bare metal assembly, it made it easier for me make sense of assembly (while also greatly benefiting from learning to code the virtual machine). Crafting Interpreters was the book I followed.
Becky recommends Assembly Lines, by Roger Wagner then writing a game for an apple ii emulator. Others have done similar projects with chip-8, which I think is even simpler.
If you want to get into assembly code in general, I can highly recommend getting into CTFs (capture the flag, "competetive" hacking.) It's a lot of fun and if you go for the reversing or pwning tasks, you'll be directed towards x86 assembly almost immediately. There's _loads_ of content (e.g. writeups) to get you started. I remember using the site pwnable.kr quite a bit :)
This brought back some memories. We had a 6502-based BBC micro at school. I remember the first time I was so hooked trying to understand how comparisons really worked, the caretaker didn’t realise I was still there and locked the doors for the night. I was 10. Caused a bit of a panic when they found out.
That started me down the long road of learning to code. Despite getting a CompSci degree later I still have plenty of bad self-learned habits from those days. But I remember them fondly.
Sounds like compared to Becky I was very fortunate in my childhood. Kudos to her to for her amazing achievements.
(I read the transcript rather than listening to the podcast and it was still great).
The BBC has always had a public education mandate in some form. My memory is hazy but I feel like it’s faded somewhat in the last couple of decades.
Specifically here the BBC Computer Literacy Project ended up creating a line of home computers, and direct government funding put them in (I think literally) every school.
The BBC (computer) is interesting because due to whole project this machine was ubiquitous in UK schools, but at the same time it was a machine that almost nobody owned personally.
I have fond memories of playing "Granny's Garden", and other games during school hours, and some kind of political simulation where you had to manipulate taxes and get voted into power for a second term to win - I can't remember the name of that game though.
At the time children in the UK would be significantly more likely to own the C64, or the ZX Spectrum - the latter of which was by far the most popular computer at that time.
I never knew anybody who owned their own BBC, but numerous friends had the other computers (even weird machines like the Jupiter Ace).
Like many people at that time I learned to program in BASIC, by reading the instruction book(s) that came with the Spectrum, then graduating to Z80 assembly language - used mostly to remove anti-copying protection, and gain infinite lives on games - before moving on to PCs a good while later.
Not so fun fact: Randal "Randy" Letcher Scott, the scumbag founder of Art Data Becky is talking about, went on to found a music school [0] and was later accused [1] of the molestation of two girls, aged 5 and 6 who studied there.
She recommendations devs today should learn bare metal programming by starting with 6502 assembly.
Here is a another fav part: