I feel like Retro Computing might be an actually effective way to become a good Programmer today.
All the Rock Stars of today started in a different world. The world of DOS and Amigas where things were simpler. The complexity we are dealing with today did not appear out of nowhere. It was gradually stacked on top to solve immediate problems. What if you try to walk that path?
@tsoding I actually just about linked a 6502 cookbook to a guy the other day who wanted to get into a real meaty understanding of computer systems design, from a programmer perspective. i think your take makes a lot of sense
@tsoding I feel the same way, you avoid a lot of abstract dogma automatically.
@tsoding Love it! Every week I stream myself building a simple x86-32 OS in C like it's 1985, partially for this reason E.g. if you want to understand how modern x86 OSs work with FS/GS these days, eventually you'll find yourself studying how segmentation worked on the i386
@tsoding @MartinShkreli Free up enough conventional memory to play Unreal2 from Future Crew in DOS 5 with Gravis Ultrasound enabled and you have my endorsement
@tsoding Write OS. That was inspiration. One will learn a ton by doing that. I got to a terminal with colors and basic graphics with custom bootloader from a floppy.
At one point @notch was working on a game he called 0x10c where you would need to program different modules of a space ship in DCPU-16. Seemed like a great concept only it never materialized. Similar projects to integrate retro or rudimentary programming into video games have always started conceptually programming-centric, and thus never captured the vibe of a really cool game. Consider the success of Gmod or even Roblox. If you provided a similar sandbox but with an endgame or goal- even if open ended like Minecraft before the End- community would go wild. I think this is such an obvious low hanging fruit that’s been overlooked for the wrong reasons.
@tsoding I have stumbled upon this playlist the other day, starts from the 50s I think and moves up to modern day computing and programming. Then there are also books like Computer Systems: A Programmer's Perspective or Programming from the Ground Up. youtube.com/playlist?list=…
@tsoding Working under resource constraints forces you to get good. But retro platforms are somewhat ironically easier in some ways because they're simpler, which also helps.
Programming today was developed to relieve management of the distateful necessity of tolerating programmers then as employees. Programmers then would read an English language specification, stare at the wall for a few hours, and start writing assembly language code. thomasokken.com/free42/
@tsoding I hate that my childhood is now called retro, lol. I started coding on a commodore Vic-20, Also had a TRS-80 model 2 and a Apple 2 clone called the Franklin.
@tsoding Ive always thought it would be cool to build a really simple 8 bit computer and create a customer assembly for it or something. Like for no reason other than it would be cool and interesting to work on.
@tsoding It teaches you so much about working with limited resources (RAM, CPU, resolution, sound channels, IO bandwidth..)
@tsoding I wonder if it's too hard, though. Like, you might be underestimating your intelligence. It might not be that easy for everyone. Only extreme, dedicated nerds were programmers back then, and now it's pretty mainstream and basic to be a dev.
@tsoding I agree, to an extent. There's a world of difference between modern systems, and retro systems though. I've been considering, for some time now, ways to try and bridge the gap, but I already have enough projects that aren't finished, and no time to get anything done. Some day.
@tsoding The better you understand the platform you're working with, the better programmer you'll be. It was always the case. I feel sorry for people who use just use React/JS and don't focus on the fundamental details beyond that.
@tsoding Apple IIe’s C64s, ZX Spectrums, BBC Micros. All 8bit, you could hold the entire memory map in your head, everything was simple. DOS and Amigas were very complicated in comparison.
@tsoding This is funny when I remember how much we criticized our secondary school for teaching us outdated programming languages in Nigeria.
@tsoding Building a simple CPU Renderer allowed me to learn so much stuff about graphics programming. Using one of the first algorithms (Bresenhams, for example) and actually seeing what is happening in the program gave me mkre confidence than starting with OpenGL
I tend to agree with this. Constraints (and we had way more of those in the "retro" days) can drive one to become more conscious about their work, studying and aspects like resource use. Of course, this is not the only way to become a good programmer – but can be very efficient!
@tsoding It teaches you to do a lot with little resources. Best coding school IMHO.
@tsoding i think that any kind of very low level programming (like OS programming, kernel hacking, drive programming etc) can be a good way to become a (very) good programmer
@tsoding There is weaker pianists in classical music nowadays (contrary to popular belief, the justification is: we know more now b/c more technology therefore we better!) Its the same in tech but it is moreso a pride in not knowing stuff. They are happy they don't know old school stuff.
@tsoding I haven't recovered on you could just swap video mode in DOS and put a pixel on a screen compared to using WinAPI/X11 to do the same. I feel like if I've been lied to.
@tsoding No, instead learn command line, tail, grep, awk, sed, piping, bash/windows batch files. In order to leverage data from your programming or other work. Being able to see what your programming is doing, so you can more quickly ensure it is correct, is better