C Programming on System 6 – Implementing Multi-User Chat
jcs.org
jcs.org
My question is, how does he record the display?!
Also user->name for the love of god!
He talks in the intro video also linked there that he's trying to get a better set up to directly connect into the screen but for now has to deal with looking through the screen on his phone recording the Mac.
Interesting observation, and something I hadn't really though about. For my own stuff I increasingly pick older technologies, not really retro, like jcs does here. Personally I think I've just grown tired of the modern "stuff", it's way to complex for me to find it relaxing to write a few lines of code for the fun of it. I wonder if that's true in a boarder sense for others working in IT.
I've watched a few of these videos, where jcs just hacks away on his old Mac and I'm extremely impressed with what's actually possible on these old machine. I do think the compile times would drive me insane, but others might see it as a nice little break.
I think there are far better retro hardware choices to relive writing native programs for. Stuff you'll actually be able to ensure will run successfully with full graphics and sound capabilities on every instance of the thing. C64, Amiga, etc. There's a reason the x86 PC severely lagged behind in the demoscene for ages, it was just miserable hardware to support.
Granted, I'm using it on homemade game engines, which are very amenable to the simple type of code C allows you to write. I wouldn't want to write an HTTP server in it. But for what I build, I find using C to be the equivalent of woodworking, compared to the Ikea furniture I put together at work.
Some of them have been programming it before it was even proper silicon, when it was being developed via FPGA. Lots of really in-the-weeds discussions on machine code and cycle timings and such. Worth diving in if you like seeing "how the sausage is made."
One of the current projects is implementing a sega genesis/megadrive console, using the different cores to emulate different components: https://forums.parallax.com/discussion/173381/console-emulat...
Offers will vary, but, if impromptu answers carry any weight, then off the top of my Sunday afternoon head, this is the first reference that percolates to the surface.
I had a computer programming class in high school, we got to pick our compiler out of a box of old software. For some reason it's what I chose, and spent the first day installing it from floppy disks.
I am pretty sure the machine I used was a Macintosh LC III, already obsolete by the time I got my hands on it. But the other computers were Pentium 100's running Windows and I had a PC at home, so that wouldn't have been any fun.
I later found out it became Symantec C, but I really only used Codewarrior for the rest of my Mac classic endeavors.
Languages like Apple Pascal had too much of a banana Republic dictatorship underpinning (due to Nicklaus Wirth/European fascism) and didn't allow much freedom of expression. It's why Apple had to add so many extensions just to make Pascal usable and so many people moved to Think C. With a 3-second turnaround compiler and a decent IDE it was a great system.
It's painful to watch, coming from a 486 PC era background using Borland Turbo C/C++.
This is a bit before 486s AFAIK though, he's using a Mac Plus from 1986. Software-wise, System 7 came out in 1991 and was a big update.
I don't think Macs were every famous for being developer-friendly, though, but I'm curious what features Turbo C have that you're not seeing here?
I want to assume that the actual professional developers or programmers working at Apple creating the system probably weren't using this kind of workflow. It's just so awfully slow and serialized, the whole single compilation error shown at a time in a GUI popup for every build strikes me as the IDE going far out of its way to not overwhelm the programmer with walls of scary error text at great expense to iteration speed. Especially considering how long the builds take. That would make sense if the tooling was intended for hobbyists/beginners, trying to make programming more approachable than efficient.
Ron Gilbert has described developing Maniac Mansion for the C64 using UNIX editors and cross-toolchains run on DEC machines, never actually writing any software using a C64. I wonder if the video is more representative of what end-users were suffering through to write small programs, and not what the professionals or Apple devs experienced.
The big constraint on IDEs in the first few years of Macs, including this system, is the screen size. 512x342 pixels is not a lot. In the early 90's people most developers would have had something more like a desktop Mac with more real estate, so the editors evolved fairly quickly. But the first version of Photoshop was written on this exact machine (Mac Plus) according to Wikipedia.
I've never heard of anyone cross-compiling end-user software from Unix, except for pre-1984 system bring-up. In the first year or so, I think you needed a Lisa to code for the Mac, but it became self-hosting quite quickly. Mac applications until OS X need a bunch of Mac-specific stuff that lives in the file's so-called "resource fork", and the final artifact (application file) can therefore only exist on the Macintosh file system.
That brings back memories! Loved MPW C.
By circa 1990, it became clear that C was the future of Mac app development, though. IIRC, one of the big selling points of CodeWarrior when it arrived was that it had a Pascal compiler that would compile to native PowerPC code, so existing apps didn’t need to be rewritten completely in C.
Apple used MPW internally for Mac development by ≈1986, as others have noted. MPW was a Unix-like environment. However, the MPW toolchain was much slower to compile and link.
In any case, by the 486 era, a serious developer would have wanted to run a 68030-based Mac at minimum, which would have been a similar experience to this video, but much faster and often on a larger screen.
I wrote about this at length in part two of this article on MacRelix:
Early Macintosh development (before Apple's Macintosh Programmer's Workshop) was done on a Lisa running a version of the UCSD Pascal environment. It was a big deal when Lightspeed C and its competitors (in both Pascal and C) made it feasible to develop software directly on a Mac, though of course there were tradeoffs due to limitations of the early Mac hardware. (Now, with the recent release of Swift Playgrounds 4, which allows apps to be developed and submitted to the App Store on an iPad, we've come full circle...)
The Mac's 8MHz 68000 CPU is more like an 8086 than a 486.
Though 4MB of RAM probably helped a bit with the workflow.