[HN Gopher] Lisa Source Code Release
       ___________________________________________________________________
        
       Lisa Source Code Release
        
       Author : bitsavers
       Score  : 363 points
       Date   : 2023-01-19 14:41 UTC (1 days ago)
        
 (HTM) web link (computerhistory.org)
 (TXT) w3m dump (computerhistory.org)
        
       | mrcwinn wrote:
       | Oof, emotions.
       | 
       | My uncle took receipt of a Lisa in the 80s but didn't have much
       | use for it, so he gave it to our family. Lisa was my first
       | computer. I used to use LisaDraw as a very primitive city
       | builder: rectangles with circles to represent cars; boxes for
       | buildings. I'd use the arrow keys to move things around. I can
       | remember seeing the Lisa redraw pixels, top to bottom, as I
       | pressed the keys.
       | 
       | By the time I moved on to my first Mac (Performa 638CD with
       | SoftFPU installed), I learned more about Apple and understood the
       | Lisa to be a failure in the market, but it will always hold a
       | special place. I assume this is Pascal and I can't really follow
       | it very well, but it's quite a special thing to read the inline
       | comments written by engineers who paved the way for me and
       | inspired me.
       | 
       | Writing this many, many years later on a 16" MacBook Pro with M1
       | Max.
        
         | HarHarVeryFunny wrote:
         | "Took receipt of" ?! I wonder when in the 80's this was ? At
         | launch in 1983 the Lisa cost $10,000 (about $50,000 in 2023
         | dollars)... Not exactly the sort of thing one casually gets
         | handed!
        
           | mrcwinn wrote:
           | He had a very successful business and Apple sales talked to
           | him about modernizing his office and workflows. And then he
           | promptly continued to use what he already had. Not an
           | uncommon story even in 2023. :) But it did create a truly
           | remarkable opportunity for me, because certainly, to your
           | point, my family could absolutely not afford this computer.
        
         | sgu999 wrote:
         | > I used to use LisaDraw as a very primitive city builder:
         | rectangles with circles to represent cars; boxes for buildings.
         | 
         | Oooh you just reminded me that I used to do the same a decade
         | later on my dad's Macintosh. Can kids have fun with super basic
         | toys on computers these days? Or are they too used to seeing
         | more advanced things on screens to even be interested?
        
           | somat wrote:
           | My nephew(5 years old) loves text-to-speach software. He
           | likes to type in wierd stuff and then starts laughing, And
           | that makes me start to laugh, we have a lot of fun with it.
           | 
           | I still think the best gift you can give to a young child is
           | a big cardboard box.
        
       | fsckboy wrote:
       | "False!" - Dwight Schrute
       | 
       | >FTFA: _a majority of personal computer users interacted with
       | their machines via command-line interfaces...in which users had
       | to type arcane commands to control their computers._
       | 
       | ARCANE!?!? you say!?!?!
       | https://en.wiktionary.org/wiki/arcane         arcane:         1.
       | Understood by only a few.
       | 
       | the majority of personal computer users (your words, not mine)
       | did understand them, in fact _it was the defining feature of
       | personal computer users_                   2. (by extension)
       | Obscure, mysterious.         3. Requiring secret or mysterious
       | knowledge to understand.
       | 
       | the commands were well documented and did what the documentation
       | said                   4. Extremely old (e.g. interpretation or
       | knowledge), and possibly irrelevant.
       | 
       | not old, it was newly invented, current state-of-the-art, and
       | nothing but relevant to the tasks at hand, they were the only way
       | to accomplish the tasks at hand, and nary a byte of the command
       | line lacked morphologic or semantic significance
       | 
       | The serious point I'm trying to make is, young and up-and-coming
       | programmers who are learning textual programming languages (more
       | or less the definition of a computer programmer at present)
       | should not be scared off from learning command lines. They're
       | very powerful, and not that obscure or hard. Unix had/has a
       | feature that can be confusing, which is the command line is first
       | processed according to the rules of the shell, and then it is
       | reprocessed according to the rules of the app you are invoking,
       | making command lines be a subtle mix of several languages at a
       | time (by analogy, a bit like html+javascript+css). You need to
       | learn how this works, despite being confusing it is the
       | innovation necessary for unlocking the power of shells.
        
         | wmf wrote:
         | Arcane by today's standards I guess.
         | 
         | Also, many people in those days never consulted the docs and
         | just memorized commands without understanding them so they
         | probably felt arcane.
        
           | fsckboy wrote:
           | the average person doesn't understand the ancient notation
           | used for calculus; that doesn't make "calculus" arcane; and
           | the article was writing in the past tense
           | 
           | your point about those who copypasta-ed command incantations
           | is reasonable, but they did get them from people who knew how
           | to write them and conditions (like situational pathnames or
           | dangerousness of side effects) are sufficiently variable to
           | limit the scope of this style's applicability
        
           | bilegeek wrote:
           | Not all, but a lot of docs from the era were, for lack of a
           | better term, "written by programmers" instead of "written for
           | users".
        
         | [deleted]
        
         | dhosek wrote:
         | Arcane not to computer users but to the general population.
         | Before the advent of GUIs, computer usage tended to be very
         | much a niche thing. Heck, even well into the Windows era, it
         | was still niche. I remember riding the train to work in the 90s
         | and overhearing a conversation where an older man engaged in
         | some sort of business (no idea what), was complaining about
         | having to have a computer on his desk at work.
        
       | begoon wrote:
       | Releasing to public the sources of the old software, especially
       | from platforms which are gone, is very cool!
       | 
       | I would die to see the original sources of Norton Commander 3.0
       | written by John Socha. They say, he used "an ortodox" (back in
       | the day) approach of C and assembler mashup, which not many
       | programmers used that time, and "real programmers" always wrote
       | in assembler :-)
        
       | mch82 wrote:
       | What hardware can this run on?
        
         | lproven wrote:
         | The Lisa emulator.
         | 
         | https://lisa.sunder.net/
        
       | cmrdporcupine wrote:
       | Yay! Finally! Thanks so much for this. Have been excited about
       | this for years since the original announcement.
       | 
       | Had today's date bookmarked, and was browsing around your twitter
       | etc earlier looking to see if this had happened.
       | 
       | Can't wait to look inside.
        
       | thelazydogsback wrote:
       | I remember walking into the Computer Factory in Grand Central
       | station in NYC and playing with the Lisa. (Later I did some
       | Smalltalk on the Lisa and the Techtronix.)
       | 
       | I still remember the layout ca. 1979-83 like it was yesterday -
       | on the right side when you walked in was a separate room with
       | some kind of P-Code machine which was the "business mini". The
       | Lisa and later the Mac were set up on a table on the right, and
       | the Apple][ in the back. In the center were the Kaypro, and some
       | other CP/M machines, and the Commodore Pets (the OG chicket
       | keyboard version and the green-screen one w/the real keyboard)
       | (incl. some IEE-488? accessories), the Sol II, and then the gfx
       | show-offs (making my TRS-80 jealous), the CompuColor II and Exidy
       | Sorcerer. The other wall had the printers - the Anderson-Jacobson
       | daisywheel printer, an adapter w/solenoids to turn your Selectric
       | typewriter into a printer, a few 9-pin matrix printes like the
       | IDS Paper Tiger (right before the Epson MX-80 took over)
       | 
       | Good times. Sigh...
        
       | peepee1982 wrote:
       | Man, I wish beige was still an option when buying a new desktop
       | computer these days. I know I hated that color when I was a
       | teenager, but it just looks so nice to me now.
       | 
       | Like it would be a perfect fit for a bland old boho styled
       | apartment.
        
       | flohofwoe wrote:
       | I can't believe they make you sign a fekking license agreement to
       | access 40 years old source code (in a long dead language on top).
       | That's so typical Apple.
        
         | [deleted]
        
         | cmrdporcupine wrote:
         | Yeah I actually haven't downloaded this yet, despite being
         | eager to look, because I actually wonder if I should be cross-
         | checking my employment agreement with my current employer to
         | make sure I wouldn't be violating any clauses in either
         | document! Highly unlikely, but still, jeez.
        
         | cube00 wrote:
         | A license agreement and they want your full name and email.
         | Pass.
         | 
         | (Yes I know you can lie but my point is they are asking for
         | this)
        
       | abbbi wrote:
       | allways good do see :-)
       | 
       | grep -ri fuck . ./Lisa_Source/Lisa_Toolkit/TK Sources 4/LIBUT-
       | UUNIVTEXT2.TEXT.unix.txt: HALT; {Die rather than fuck up} grep:
       | ./Lisa_Source/Lisa_Toolkit/TK Sources 4/LIBUT-UUNIVTEXT2.TEXT:
       | binary file matches grep: ./Lisa_Source/Lisa_Toolkit/TK3/TK-
       | ALERT.OBJ: binary file matches ./Lisa_Source/LISA_OS/APIN/APIN-
       | OFFICE.TEXT.unix.txt: fucked up if he bails out or doesn't ever
       | select a disk} ./Lisa_Source/LISA_OS/LIBS/LIBDB/libdb-
       | SCANCODE.TEXT.unix.txt: valid position, thus we don't fuck with
       | pscantable^[scanid]^ until
       | ./Lisa_Source/LISA_OS/LIBS/LIBDB/libdb-SCANCODE.TEXT.unix.txt:
       | valid position, thus we don't fuck with pscantable^[scanid]^
       | until ./Lisa_Source/LISA_OS/LIBS/LIBDB/libdb-
       | SCANCODE.TEXT.unix.txt: valid position, thus we don't fuck with
       | pscantable^[scanid]^ until
       | ./Lisa_Source/LISA_OS/LIBS/LIBDB/libdb-LMSCAN.TEXT.unix.txt:
       | badCheckPoint = 3424; { check point info is fucked }{##}
       | ./Lisa_Source/LISA_OS/Linkmaps and Misc.
       | 3.0/TKALERT.TEXT.unix.txt: if not fcheckhz(hz,i) then
       | writeln('heap big fuckup 1'); ./Lisa_Source/LISA_OS/Linkmaps and
       | Misc. 3.0/TKALERT.TEXT.unix.txt: if not fcheckhz(hz,i) then
       | writeln('heap big fuckup 2');
        
         | [deleted]
        
       | jonpalmisc wrote:
       | No email form: https://d1yx3ys82bpsa0.cloudfront.net/source/lisa-
       | source.zip...
        
         | [deleted]
        
         | IncRnd wrote:
         | I didn't turn on JS for the form to be shown, either.
        
       | mch82 wrote:
       | Just saw the discussion from 7 hours ago:
       | https://news.ycombinator.com/item?id=34440757
        
       | diskzero wrote:
       | The QuickDraw code (LISA_OS/LIBS/LIBQD) is just glorious. While
       | reading it, I am overcome by the creative genius of Bill
       | Atkinson. [1]. Bill went on to become quite accomplished at
       | cooking lunch for the team at General Magic. [2]
       | 
       | [1] https://en.wikipedia.org/wiki/Bill_Atkinson
       | 
       | [2] https://en.wikipedia.org/wiki/General_Magic
        
         | bluedino wrote:
         | One of the great stories:
         | 
         |  _In early 1982, the Lisa software team was trying to buckle
         | down for the big push to ship the software within the next six
         | months. Some of the managers decided that it would be a good
         | idea to track the progress of each individual engineer in terms
         | of the amount of code that they wrote from week to week. They
         | devised a form that each engineer was required to submit every
         | Friday, which included a field for the number of lines of code
         | that were written that week.
         | 
         | Bill Atkinson, the author of Quickdraw and the main user
         | interface designer, who was by far the most important Lisa
         | implementer, thought that lines of code was a silly measure of
         | software productivity. He thought his goal was to write as
         | small and fast a program as possible, and that the lines of
         | code metric only encouraged writing sloppy, bloated, broken
         | code.
         | 
         | He recently was working on optimizing Quickdraw's region
         | calculation machinery, and had completely rewritten the region
         | engine using a simpler, more general algorithm which, after
         | some tweaking, made region operations almost six times faster.
         | As a by-product, the rewrite also saved around 2,000 lines of
         | code.
         | 
         | He was just putting the finishing touches on the optimization
         | when it was time to fill out the management form for the first
         | time. When he got to the lines of code part, he thought about
         | it for a second, and then wrote in the number: -2000.
         | 
         | I'm not sure how the managers reacted to that, but I do know
         | that after a couple more weeks, they stopped asking Bill to
         | fill out the form, and he gladly complied._
         | 
         | https://www.folklore.org/StoryView.py?project=Macintosh&stor...
        
         | TradingPlaces wrote:
         | Oh, yes.
         | 
         | >{ RoundRect Routines }
        
         | manv1 wrote:
         | The story was that Atkinson saw the Parc and it's GUI and said
         | to himself "holy shit they're doing their graphics this way"
         | and write QuickDraw based on that.
         | 
         | The Parc didn't do its graphics that way at all, and Atkinson
         | (and Apple) got a lot of patents on his region code. That code
         | is also why the Mac's graphics performance was so much better
         | than everyone else's (until discrete GPUs came out). It's that
         | fast.
         | 
         | Apple's software guys were really good back in the day. Their
         | software-based floating point stuff (SANE) was faster and more
         | accurate than Intel's hardware FP stuff for a long time.
        
         | pwdisswordfish9 wrote:
         | The QuickDraw source code has been available for some time:
         | 
         | <https://news.ycombinator.com/item?id=2285569>
         | 
         | Submitted several times to HN since then. Most recently:
         | 
         | <https://news.ycombinator.com/item?id=16519132>
        
       | HeckFeck wrote:
       | Very neat code and somewhat legible for a non-Pascal speaker.
       | 
       | Curiously, it doesn't credit authors in the headers as I've seen
       | in sources from the same period.
       | 
       | I also wonder how much of the core OS code made it into Macintosh
       | System 1.
       | 
       | Also, nice styling here:
       | http://revontulet.org/2023/01/19/lisadesk.png. They didn't have
       | to do ASCII art in the comments but they did!
        
         | kps wrote:
         | > Also, nice styling here:
         | http://revontulet.org/2023/01/19/lisadesk.png.
         | 
         | That site blocks my ISP.
        
         | cmrdporcupine wrote:
         | Some of it does (credit authors) some of it doesn't. Some has
         | changelog entries, some single author (e.g. Bill Atkinson's
         | stuff), some nothing.
        
         | dhosek wrote:
         | Pascal was designed to be a legible language. It eschews
         | brevity for clarity, e.g., preferring BEGIN...END over {...}
         | and tends to avoid footguns, although I remember writing a
         | significant program in Pascal back in the 80s where I _really_
         | wanted to be able to pass a function in to another function and
         | was bummed that there was no way to do so (or at least not in
         | Pascal /VS in 1987). Even though I've not written a line of
         | Pascal since 1991 or maybe 1992, I still have no difficulty
         | reading and understanding Pascal code when I find myself
         | looking to see how, e.g., TeX manages some task.
        
       | fexecve wrote:
       | > You may not and you agree not to:
       | 
       | > publish benchmarking results about the Apple Software or your
       | use of it
       | 
       | Damn, there goes my Apple Lisa vs Amiga comparison video! I was
       | going to get so many YouTube views! Meh, maybe I'll make it
       | anyway. So sue me!
       | 
       | > the Apple Software may not be exported or re-exported (a) into
       | any U.S. embargoed countries
       | 
       | I'm sure keeping Iran from getting this valuable software from
       | 1983, which runs on a completely dead CPU architecture that Linux
       | doesn't even support anymore, is very important!
       | 
       | (But seriously, as a license geek, and not a lawyer, the wording
       | of this license is really interesting. It seems to have
       | completely different disclaimers than you usually see in open-
       | source licenses...)
        
         | deaddodo wrote:
         | > which runs on a completely dead CPU architecture that Linux
         | doesn't even support anymore
         | 
         | The 68k is hardly dead; Linux support isn't a viability
         | indicator of an architecture. It was dropped from Linux because
         | there are no 68k systems powerful enough to run it and it's
         | modern userspace, so it was a waste of development and
         | debugging time. But the architecture is thriving in embedded
         | and custom device spaces and fully supported by GCC and LLVM.
        
           | duskwuff wrote:
           | "Thriving" is a stronger word than I'd use. NXP still
           | manufactures a limited number of ColdFire microcontrollers,
           | which are loosely based on the 68k architecture. But they're
           | listed on NXP's web site under "legacy MPUs/MCUs", and many
           | of the parts are 10+ years old and NRND. It's pretty obvious
           | that they don't plan on continuing the product line much
           | further than required for support lifecycles.
        
             | deaddodo wrote:
             | They're legacy in the same way z80 and MIPS are. They
             | reached an evolutionary dead end of full feature parity for
             | their use space. The 68k hasn't been developed further
             | because it does everything it's target audience needs and
             | it's power user sphere was supplanted by ARM, x86/amd64 and
             | PPC/Power.
             | 
             | Sometimes, a technology is good enough and doesn't need
             | anymore. That's the entire reason the Cortex-M (and R)
             | series _exists_ ; because you don't need a Cortex-A715 to
             | drive a motor and monitor a thermostat.
        
               | duskwuff wrote:
               | Even then, there's still some sustaining engineering
               | required to maintain a design and keep it relevant. The
               | (e)Z80s that are being made today aren't the same as the
               | ones that were being built in the 1980s -- they're being
               | extended with new peripherals and ported to modern
               | fabrication technology.
               | 
               | I'm fairly certain that hasn't been happening with the
               | ColdFire series. Every ColdFire part I see listed on
               | NXP's site is from 2010 or earlier, before the Freescale
               | acquisition. This puts a lot of those parts 2/3 or more
               | of their way through their 15-year availability
               | commitment; if NXP intended to keep the line alive, I'd
               | expect to see a lot more new parts, and that isn't
               | evident here.
               | 
               | (MIPS is a weird one to mention because MIPS Technologies
               | actually declared it dead last year and started trying to
               | rebrand themselves as a RISC-V IP core provider. The main
               | niche that architecture was used in was wireless routers,
               | but that's been taken over pretty thoroughly by ARM these
               | days.)
               | 
               | Don't get me wrong -- I cut my teeth on 68k and I loved
               | the architecture. But it's also clear to me that it
               | doesn't have a future.
        
         | [deleted]
        
         | easton wrote:
         | I'm guessing, although I don't know, that they probably had an
         | academic license laying around for another product that they
         | cleaned up for this. A "it's our source, you can use it for fun
         | but not for money" license. Microsoft has shared source
         | licenses for academics/bigcos that need to see the source for
         | Windows or whatever.
        
           | cmrdporcupine wrote:
           | It took them 4 or 5 years just to do this release, since it
           | was first announced. I feel like _" they just dusted off an
           | old license"_ is not a likely explanation.
           | 
           | Probably took 5 years just to get through all the lawyers at
           | Apple, and this is what we ended up with.
           | 
           | Remember, the default answer to almost any question poised to
           | a lawyer is "No."
           | 
           | :-(
        
             | [deleted]
        
             | fexecve wrote:
             | I'm not sure why it took so long, but I think that lawyers
             | dragging their feet probably wasn't it. I'm guessing that
             | they would have never announced the release, unless the
             | lawyers had already signed off on it. I think instead, it
             | took them 5 years to make the landing page (something like
             | this would normally take two years, but the pandemic wasted
             | three years of that time.)
        
             | astrange wrote:
             | That's because you're not supposed to ask the lawyer if you
             | should do something. You ask their boss if you can do it
             | and ask them them how to do it.
        
             | asveikau wrote:
             | It's a fairly safe bet that the benchmarking clause was not
             | inserted with knowledge of the Lisa and its relevance today
             | as a historical artifact.
        
         | cmrdporcupine wrote:
         | > completely dead CPU architecture
         | 
         | Hey, take that back! 68k/ColdFire ISA is actually pretty well
         | supported these days by compilers. Better than it was a few
         | years ago. There are 68k backends for both GCC (again) and LLVM
         | (maybe not as active).
         | 
         | It's probably the best supported "retro" architecture at this
         | point.
         | 
         | Rest of your points are valid though ;-)
        
           | monocasa wrote:
           | The LLVM code is fairly active for a retro arch. It just got
           | accepted into mainline less than a couple years ago. I
           | remember it because the m68k folk are pretty active about
           | maintaining support for their arch in the Linux kernel, and
           | for a while the lack of m68k support in LLVM (and therefore
           | the lack of m68k support in Rust) was seen as a potential
           | blocker for mainline Rust support in the kernel.
        
       | purututu wrote:
       | [flagged]
        
         | purututu wrote:
         | And there's also a `.DS_Store` in every folder of that 40 years
         | old software code. How futuristic!
        
         | lordfrito wrote:
         | You are the wind beneath my wings
        
       | _boffin_ wrote:
       | Thanks for posting this. awesome article.
        
       | begoon wrote:
       | What Pascal compiler did Apple use to build all that?
       | 
       | Looks like Turbo/Borland Pascal but I'm not sure that it existed
       | in that time or/and was ported to 6502.
        
         | mmphosis wrote:
         | Apple Lisa Computer Pascal
         | 
         |  _Apple's Lisa Pascal developments began from scratch for Apple
         | when it licensed in 1981 a Motorola 68000 native code Pascal
         | compiler from Silicon Valley Software in California. This
         | compiler was based upon the older P4 compiler from Niklaus
         | Wirth of ETH in Switzerland and consisted of two general
         | passes. Pass 1 produced I-Code, a low-level representation of
         | the high-level Pascal constructs. Pass 2, the code generator,
         | converted the I-Codes to optimized 68000 object code. Apple
         | even considered early in the Lisa's development using a custom
         | Apple processor which would execute P-Code directly, but the
         | expense of developing such a chip was too much for Apple's
         | accountants and this project was dropped._
         | 
         | http://pascal.hansotten.com/ucsd-p-system/apple-pascal/
        
         | pavlov wrote:
         | The Lisa used the Motorola 68000, not the 6502.
         | 
         | Turbo Pascal didn't exist yet. The leading Pascal of the
         | early-1980s era was UCSD Pascal [1] but it used a cross-
         | platform bytecode approach which wasn't very fast and wouldn't
         | have been suitable for the Lisa.
         | 
         | I suspect Apple built their own 68k Pascal compiler? But I'm
         | sure someone on HN knows the actual facts.
         | 
         | [1] https://en.wikipedia.org/wiki/UCSD_Pascal
        
         | pjmlp wrote:
         | Clascal, which eventually grew to become Object Pascal.
         | 
         | Turbo Pascal came much later, and Borland would adopt UCSD
         | units in Turbo Pascal 4, and Apple's Object Pascal on Turbo
         | Pascal 5.5, then its OOP capabilities grew from there based on
         | what was happening on C++, influenced by Borland's work on
         | their C++ compilers.
        
           | HarHarVeryFunny wrote:
           | Actually Turbo Pascal and the Apple Lisa were both released
           | in 1983, although of course Clascal (which I never heard of
           | until this thread) must have existed earlier to be used to
           | develop Lisa.
        
             | pjmlp wrote:
             | Here http://www.bitsavers.org/pdf/apple/lisa/toolkit_3.0/
        
         | shdon wrote:
         | Probably Apple Pascal which existed for the Apple II and Apple
         | III, with a later implementation for the Lisa itself (which
         | then got the name Lisa Pascal).
        
       | programd wrote:
       | Lovely bit of history, but I laughed out loud at this bit of
       | legal WTF in the license agreement you must agree to before
       | downloading the software:
       | 
       | "You may not and you agree not to: ...publish benchmarking
       | results about the Apple Software or your use of it"
       | 
       | Perhaps 40 years later Apple is still embarassed about the
       | performance of the Lisa?
       | 
       | So, maybe somebody here can emulate a Lisa and run Geekbench :)
        
         | [deleted]
        
       | musicale wrote:
       | This is fantastic.
       | 
       | Wasn't the original Lisa source code famously lost by Apple?
        
         | deaddodo wrote:
         | No? I think you're mixing up the fact that they were supposed
         | to release this almost half a decade ago and so random blogs
         | conjectured that it was lost.
        
       | msie wrote:
       | I'm still learning Swift (forever) and looking at the source code
       | I wonder if Swift is getting too complicated to read now. I'm
       | having a hard time reading simple snippets of Swift but the Lisa
       | source code seems so comforting to read in comparison. Anyways,
       | I'll soldier on.
        
         | [deleted]
        
         | JKCalhoun wrote:
         | I know what you mean regarding Swift.
         | 
         | In recent decades different languages have introduced
         | interesting patterns, interesting notations. Swift seems to
         | have adopted about all of them.
         | 
         | I have been told by teammates that I don't write "Swifty" Swift
         | code, instead writing something more like an "Objective-Swift"
         | style.
         | 
         | Oh, and they say that like it's a bad thing.
        
           | kitsunesoba wrote:
           | > I have been told by teammates that I don't write "Swifty"
           | Swift code, instead writing something more like an
           | "Objective-Swift" style. Oh, and they say that like it's a
           | bad thing
           | 
           | Depending on what they mean by this, I agree that it can be a
           | bad thing.
           | 
           | Years ago, in the days when Swift was still pretty green
           | (around 2.x or 3.x) I knew someone who liked to try to write
           | "Objective-C in Swift" -- that is, they'd try to ignore the
           | type system and optionality entirely, with lots of forced
           | casts, forced unwraps, shipping data around in [String:Any]
           | dictionaries, etc... constant fighting with the compiler that
           | made SourceKit very unhappy and crashy and the app we were
           | working on more crash-prone than it would've been had it been
           | written in Objective-C.
           | 
           | On the other hand, if it's just a more verbose style that
           | favors clarity and avoids e.g. unnamed closure arguments and
           | breaks more out into well named variables and functions, I
           | don't see anything wrong with that at all and in fact have
           | been leaning further in that direction as time goes on.
        
             | JKCalhoun wrote:
             | Ha ha, yeah no I would never force a cast, I always unwrap
             | optionals...
             | 
             | As an example, I was slow to adopt _guard_ statements
             | generally, preferring to strictly use them only for
             | parameter checking (thus only at the top of functions).
             | 
             | Then there are crazy ways that _case_ statements can be
             | used in a _switch_ that I still don 't understand.
        
       | kytazo wrote:
       | Ironically > Macintosh competed with Lisa and ultimately became
       | the favored computer for its lower price and open software
       | ecosystem
        
         | lproven wrote:
         | It's not ironic at all.
         | 
         | The Mac originated as a cut-down Lisa.
         | 
         | It's not some ironic competitor. It was a later machine, built
         | on the back of lessons learned from the Lisa's failure.
         | 
         | A lot of desirable stuff was lost: multitasking, app
         | development in a high-level language (and a type-safe one at
         | that!), expansion slots etc.
         | 
         | And less desirable stuff: the template-oriented template and
         | creator paradigm. Radical, innovative, but confusing. The Mac
         | went with a much simpler, more conventional, documents-and-apps
         | model, in the traditional CP/M and DOS style.
        
           | Someone wrote:
           | I think the templates were a brilliant idea. They made
           | somewhat of a comeback on the Mac and didn't get huge
           | traction, but still have remnants in current MacOS with its
           | stationary pads (a poor implementation, and the Finder
           | doesn't even change the icon of a file when it is turned into
           | a stationary pad)
        
             | lproven wrote:
             | * stationery
             | 
             | But you're right. :-)
        
       | sedatk wrote:
       | The source code of an entire operating system with applications
       | of its time is just 6MB.
       | 
       | Think about it. 30 years from now, Windows OS source code will
       | feel like that, we'll download its zip in seconds and browse it.
       | It'll feel miniscule. Linux too. Everything will feel so small
       | after the AI Revolution of 2049, which will increase our code
       | writing speed orders of magnitude, will write instant code for a
       | device driver for a hardware by probing its input/output models
       | based on your expectations from the device, even if the device
       | doesn't support it, such as using a printer to measure ambient
       | temperature by observing fluctuations in the ink capacity sensor.
       | It'll figure that out on its own. Printers will have ceased to
       | exist by then, of course, because of the great AI war against HP
       | due to their cruel experiments on printers over decades to make
       | them fail at unexpected times in order to maximize profits.
       | 
       | We'll never be able to comprehend how the humans of 2022 were
       | able to do anything with computers at all.
        
         | [deleted]
        
           | [deleted]
        
         | arthurcolle wrote:
         | In the future every application and its dependencies with all
         | be 1PB binary ckpt blobs of some strange loop convnets served
         | to us with ads over Neuralink Plug Pro via $1K a month
         | subscription service with holo Elon standouts on our Twitter
         | Platinum WristBand Ultra+
         | 
         | The future is dark
        
           | safety1st wrote:
           | Pretty sure I'll still be running Linux on my PC with my
           | phone on silent in a drawer somewhere and won't have heard
           | about any of this bunkum and balderdash
        
           | xattt wrote:
           | The same way there's a minority pining for the days of OS X
           | 10.4 to 10.6, there will be a group touting that iOS Xa was
           | the last good OS.
           | 
           | Assuming Apple would have adopted a Roman hexadecimal system
           | for their numbering scheme.
        
         | cube00 wrote:
         | I look at retiring developers and wonder how they built Windows
         | applications with no internet access, MSDN on CD-ROM and
         | Petzold's books.
         | 
         | The next generation will look at me with their AI tools and
         | wonder how I built anything with primitive internet searches
         | and StackOverflow.
        
           | BuckyBeaver wrote:
           | I just noticed this after typing my comment about this very
           | thing.
           | 
           | In addition to those TechNet CDs, we established some rapport
           | via CompuServe or phone with specific Microsoft support
           | people. Occasionally they would fix a bug we reported and
           | send us rebuilt libs, or send us an internal Microsoft tool
           | to try. That was a different era, obviously with a much
           | smaller population of developers with less exposure to those
           | who would support them.
        
           | flohofwoe wrote:
           | Home computers came with printed documentation and
           | programming manuals, and later, SDKs came on floppy discs
           | with their own extensive offline documentation. Also: lots of
           | print magazines and books, and dialup connections into
           | 'Bulletin Board Systems' existed long before the web became
           | popular.
           | 
           | This all means that you often got stuck on a problem for
           | days, only to eventually 'invent' a clever solution that's
           | also been invented by thousands of other programmers ;)
        
           | fsckboy wrote:
           | > _how they built Windows applications with no internet
           | access_
           | 
           | internet access is a massive distraction, instead you used
           | documentation that was pretty good. It meant you needed a bit
           | more of a base in place before you started--you had to buy a
           | copy of the developer SDK/tookkit for whatever you were
           | working on--but you had so many fewer distractions after
           | that.
           | 
           | (not that it played a large role, but inter network
           | communications between companies was pretty standard during
           | the time that Microsoft was writing Windows, starting with
           | microsoft!ucbvax!decvax etc. type addressing, and soon
           | .com/.edu was added)
        
             | BuckyBeaver wrote:
             | I agree. We just buckled down and studied the
             | documentation, which (as you note) was usually good and
             | often excellent. Microsoft's small textbook about C++ was
             | the best I ever encountered. While I threw most of my
             | obsolete books away, I kept that one.
        
           | Stratoscope wrote:
           | We didn't have internet, but there were active Windows
           | developer forums on CompuServe, BIX, and GEnie. I used to
           | hang out on all of them answering people's questions and
           | learning from other developers.
           | 
           | My usual monthly bill for dial-up access to the three
           | services (mostly CompuServe) was around $300, close to
           | $800/month in today's dollars.
           | 
           | Charles listed me in the acknowledgements for the first
           | edition of _Programming Windows_ as  "the indefatigable
           | Michael Geary." That was kind of fun.
        
         | BuckyBeaver wrote:
         | I already look at what I learned in the early '90s with no
         | Internet. We had the massive binder of Microsoft TechNet CDs
         | and an MS support forum on CompuServe to undertake the largest
         | known Visual C++ project at the time (according to Microsoft).
         | 
         | I have forgotten how to do a lot of stuff I knew how to do back
         | then... but does it really matter, when I can look it up in a
         | few minutes? I'm not sure.
        
           | Sylamore wrote:
           | I felt way more productive back then, but then coding it's
           | part of my full time job description, it's just something I
           | do from time to time for work.
           | 
           | Before that it was the Borland C++ manual set.
        
             | BuckyBeaver wrote:
             | Ha, yes I started with Borland too.
             | 
             | Before that we had to chisel our code into wooden tablets
             | and feed them into a steam-powered Computing Engine.
             | 
             | OK, OK; there might have been some Atari BASIC and macro
             | assembler in between those two.
             | 
             | Then there was Andersen Consulting's boot camp, where
             | everyone had to learn COBOL. And yes, that was in the '90s.
        
       | NegativeLatency wrote:
       | Downloaded the code and I'm not really sure what I'm looking at.
       | What language is this, and how would someone build/load it?
        
         | pjmlp wrote:
         | Clascal, the predecessor from Object Pascal, used on Mac OS.
         | 
         | Apple was also a precursor in using safer systems languages for
         | OS development.
         | 
         | Even when MPW later replaced Object Pascal, the major
         | frameworks were based in C++, not C.
        
           | ajross wrote:
           | Most of the Mac OS ROM was still in assembly (there was a
           | story on the front page last week detailing a time bug owing
           | to a misfeature of the 68k DIVU instruction, even). It wasn't
           | about "safety", just productivity.
           | 
           | And C wasn't chosen because Apple had made an organizational
           | bet on Pascal years earlier with the Apple II. C in the early
           | 80's was still a niche "new vogue" kind of thing from
           | academia[1]. Apple's roots were older, they didn't get the
           | Unix bug until decades later.
           | 
           | [1] c.f. Sun Microsystems, founded by Stanford and Berkeley
           | geeks, launching its very different 68k products
           | concurrently.
        
             | pjmlp wrote:
             | Every OS has plenty of Assembly on them, even those written
             | in C.
             | 
             | They never got the UNIX bug really, even with the reverse
             | acquisition from NeXT, or the way A/UX was implemented,
             | Steve Jobs opinion on traditional UNIXes is well known in
             | the Apple community as there some infos on his USENIX
             | session, and NeXTSTEP brainstorming sessions.
        
               | pram wrote:
               | Is that USENIX keynote available somewhere? I see the
               | references but not the actual dialogue anywhere.
        
               | pjmlp wrote:
               | Back in those days conferences weren't filmed.
               | 
               | https://www.usenix.org/blog/vault-steve-jobs-
               | keynotes-1987-u...
               | 
               | Here are some references,
               | 
               | Chris MacAskill did a full overview of what he had to do
               | to convince Job, it was even commented here,
               | 
               | https://news.ycombinator.com/item?id=17420674
               | 
               | Now gone from the Internet,
               | 
               | https://allaboutstevejobs.com/blog/2018-07-11-chris-
               | macaskil...
               | 
               | However it is saved on the Wayback machine,
               | 
               | https://web.archive.org/web/20180628214613/https://www.ca
               | ke....
               | 
               | => "They said a Unix weenie was code for software
               | engineers who hated what we were doing to Unix (the
               | operating system we licensed)--putting a graphical user
               | interface on it to dumb it down for grandmothers. They
               | heckled Steve about his efforts to destroy it. His
               | nightmare would be to speak to a crowd of them."
               | 
               | There is also the interview with UNIX Today!
               | 
               | https://www.tech-insider.org/unix/research/1991/11.html
               | 
               | => "You know, take SGI's new machines-they have 8-bit
               | color frame buffers in them, you can't even put up a
               | bunch of beautiful color photographs without having one
               | of them look good. The rest of them look blah because you
               | can't do it in 8 bits. You know what I'm talking about.
               | So most computers haven't even gotten past the stage
               | where you could put up a bunch of color photographs, much
               | less other types of media, or moving, dynamic media. And
               | I think that that's an advantage that we'll continue to
               | keep. "
               | 
               | => "We're bringing Unix to the commercial market where
               | what they care about is designing, creating and deploying
               | mission-critical custom apps alongside those in a
               | multitasking environment. They want to be able to use a
               | suite of productivity apps that are compatible in the
               | data formats with all the ones they use in the PCs. And
               | that's where we have an offering that Motif has nothing
               | to compete with and Sun has very little to compete with.
               | But if you take us into the traditional scientific and
               | engineering marketplace, we are a pretty powerful and
               | very cost-effective Unix box. And to address X, we do run
               | X on our product very well. There are two: one X product,
               | soon to be two, that you can buy from third parties that
               | run X-Window right alongside their Next Step windows, and
               | they're quite good. So we don't have anything against X
               | for what it was designed for, but X has not made the
               | crossover into the commercial marketplace. "
               | 
               | Plenty of other similar remarks on the interview.
               | 
               | And some interesting NeXT footage,
               | 
               | https://www.youtube.com/watch?v=KRBIH0CA7ZU
        
         | JKCalhoun wrote:
         | I understand the app source code is in there too - it would be
         | nice to know what the directory names refer to -- which
         | directory corresponds to which app, etc.
        
         | octetta wrote:
         | The files I've looked at are Pascal (the article talks about
         | Apple's object-oriented varient). I suspect there's 68000
         | assembly language there too, but I'm just getting started.
        
           | GrumpyNl wrote:
           | Under the OS section, there are some files with assembler in
           | it.
        
         | musicale wrote:
         | > What language is this, and how would someone build/load it?
         | 
         | In a Lisa emulator running Lisa Workshop, Apple's UCSD
         | Pascal/Clascal-based development system for the Lisa.
         | 
         | Technically you could potentially port Pascal and/or Object
         | Pascal code to another platform like Delphi, but any low-level
         | or hardware specific code would have to be rewritten.
         | 
         | Fortunately the binary images are available on the internet and
         | you can run them in a Lisa emulator.
        
           | cmrdporcupine wrote:
           | I'm curious to see how long before someone manages to get it
           | to build from source with the original toolchain and gets it
           | to run under emulation.
        
           | Rochus wrote:
           | > _In a Lisa emulator running Lisa Workshop, Apple 's UCSD
           | Pascal/Clascal-based development system for the Lisa._
           | 
           | Here is one: https://lisa.sunder.net/, and on github:
           | https://github.com/rayarachelian/lisaem
        
           | dreamcompiler wrote:
           | It's Pascal but not UCSD. UCSD compiles to a virtual machine
           | called p-code. Lisa's Pascal compiled down to the metal.
           | 
           | (I used to use a Lisa to write Mac programs. In the early
           | days Macs didn't have enough RAM to run the Pascal compiler.)
        
             | pjmlp wrote:
             | As everything in computing, it depends.
             | 
             | Yes the original UCSD Pascal only did P-Code, however a few
             | implementations supported AOT as well like the
             | Constellation OS from Corvus Systems.
             | 
             | https://en.wikipedia.org/wiki/Corvus_Systems
        
               | musicale wrote:
               | As a tangent, p-code is like an ancient version of wasm
               | or java bytecodes, though its interpreter (the p-machine)
               | was simple and compact enough to fit on 8-bit machines.
               | Smalltalk also used bytecodes.
               | 
               | The nice bit is that once you implement a bytecode
               | interpreter, everything just runs. It may be slower than
               | native code, but no new code generators or compilers are
               | required.
        
               | pjmlp wrote:
               | The concept predates both of those, Burroughs B5000 was
               | one of the first systems using the idea, and is still
               | being sold nowadays.
               | 
               | https://en.wikipedia.org/wiki/Burroughs_Large_Systems
               | 
               | Mostly safe systems programming language, no Assembly,
               | all Assembly like operations are available via compiler
               | intrisics, UNSAFE code blocks, admin clearance required
               | for modules tainted with use of unsafe code.
               | 
               | All of this in 1961.
        
             | musicale wrote:
             | I'm not an expert on the Lisa or Pascal, but my
             | understanding is that Lisa Pascal did compile natively (vs.
             | p-compilers) and was based on the UCSD Pascal dialect
             | (which introduced units), and that Clascal (and later
             | Object Pascal) extended it with objects and classes. The
             | Lisa Workshop's text menu-based command interface appears
             | to resemble that of the UCSD p-System, though it provided
             | access to a mouse-based editor with a Lisa-style GUI.
        
             | timbit42 wrote:
             | This is a bit of a tangent, but I've heard the Mac System
             | was written in Pascal with bits of assembly for speed and
             | I've also heard it was written in assembly with a Pascal
             | API. An Ars Technica article today mentioned some Lisa code
             | was taken and modified to work on the Mac during its
             | development. Was this code Pascal?
        
               | cmrdporcupine wrote:
               | Bill Atkinson's QuickDraw is one example of that. The
               | original was written for the Lisa in Pascal, and then
               | brought over to the Mac project. And I believe portions
               | rewritten in assembler for compactness/speed.
               | 
               | The Mac version of QuickDraw is here:
               | https://computerhistory.org/blog/macpaint-and-quickdraw-
               | sour...
               | 
               | Now that both are "open", it would be interesting to
               | compare the two and see how they differ.
        
         | LastTrain wrote:
         | I see assembly and pascal files. According to this[0] article,
         | the development was done on Apple II's and Mac development was
         | done on Lisa!
         | 
         | [0] https://macgui.com/news/article.php?t=518
        
           | cmrdporcupine wrote:
           | Fun story, development of Digital Research's CP/M68k and
           | GEMDOS/GEM GUI on the 68k was also done on the Apple Lisa
           | (and I think some VME 68k boxes from Motorola?). So, a
           | competitor to the Mac (albeit not a successful one) developed
           | on the Lisa, too.
           | 
           | And in fact, fun people have gotten GEM/GEMDOS to boot and
           | run again on Lisa emulators and real Lisas.
           | 
           | Computer archeology.
        
           | snewman wrote:
           | I can confirm this regarding Mac development. I was part of
           | the team that built FullPaint
           | (https://en.wikipedia.org/wiki/FullPaint) back in 1985. We
           | had just a few Lisas to work with, and they were considered
           | sacred.
           | 
           | Testing code required copying it onto a floppy disk and
           | popping it into a Mac. We probably would have been a lot more
           | productive if any of us had ever heard the words "unit test".
           | (We were a young team, everyone in their early 20s or even
           | late teens.)
        
             | diskzero wrote:
             | How did you all at Ann Arbor (I assume) get into Mac
             | development? Did you have Lisa versions of software and
             | decided to move to Mac? Did Mike Boich or Guy Kawasaki
             | convince you to start developing? I am always interested at
             | what makes someone decided to pour resources into a new
             | platform. I have done it more than once myself and it is
             | usually very high risk.
        
               | snewman wrote:
               | I don't think we ever developed any software targeted at
               | the Lisa (or if we did, it was in the brief period before
               | I joined). We were always developing for the Mac,
               | initially cross-compiling from Lisa.
               | 
               | We did move to Mac-based development after not too long.
               | I have zero memory of why/how that happened, but I'm sure
               | it was clear even at the time that the Mac was the more
               | sustainable long-term platform (also the Lisas were
               | insanely expensive). Still, for a while there it was a
               | real stretch to squeeze a reasonable dev environment into
               | Mac hardware. I remember - and this feels insane as I'm
               | typing it, but it happened - at some point we actually
               | paid someone to fab an add-on circuit board that we
               | somehow glommed into our Macs (these were probably 512KB
               | or 1MB models, I can't remember) that doubled the RAM
               | size. The additional RAM couldn't be used for normal
               | applications, it somehow manifested as a RAM drive. We
               | had one RAM drive in the add-on memory, a second RAM
               | drive partitioned from the standard motherboard memory,
               | and the rest of the standard memory was used to run dev
               | tools and/or the application under test. Putting all of
               | the source code into a RAM drive was necessary to make
               | the development experience tolerable (I can't remember
               | whether the concern was source code navigation, build
               | times, or both... EDIT now that I think about it, it
               | might have been the object code rather than the source
               | code that needed to be on the RAM drive; or perhaps
               | both).
               | 
               | Different times...
        
               | butlerm wrote:
               | In the mid-late 1980s we compiled and tested Amiga
               | software on the Amiga entirely from RAM drives using
               | rather expensive 2 MB RAM add ons, and then stored the
               | updated source code on 3.5" floppy disks that had to be
               | rotated out regularly because they regularly went bad.
               | 
               | Only towards the end of the 1980s were hard drives
               | inexpensive enough to become commonplace. My first 65 MB
               | drive cost $949 (ca 1989), and that is why we were using
               | floppies and RAM drives instead. The RAM drives did
               | survive reboots and crashes most of the time, which
               | helped quite a bit as you may imagine.
        
             | jchw wrote:
             | Oh, how I wish I could've been involved in the halcyon days
             | of the computer industry. I'm sure it's all rosey looking
             | from the perspective of someone who wasn't there, but the
             | scrappy young development teams, humble small
             | organizations, mail-order software, and general naive
             | optimism of the preceding era seems like it was so much
             | fun. Probably very challenging, and I'm sure frustrating,
             | but I can only imagine the satisfaction of having worked on
             | the Macintosh and breaking so much new ground.
             | 
             | I was born in time to experience the internet when it was a
             | lot more fun and experimental, which I definitely am
             | grateful for. I hope there are more "moments" like this in
             | the future, though I can't help but feel they're mostly
             | over when it comes to computers and technology. Things just
             | can't stay scrappy and experimental forever.
        
               | Fr0styMatt88 wrote:
               | If you haven't read Masters of Doom before, I highly
               | recommend it! Your comment reminded me of it.
        
               | diskzero wrote:
               | It was pretty rosey for me, even with all the challenges,
               | emotions and anxiety. I have experienced similar
               | challenges, emotions and anxiety in jobs that were much
               | less satisfying.
               | 
               | I think the moments are out there still; you just have to
               | seek them out. I wouldn't say working on Apple ][, Lisa,
               | early Mac or other early PC efforts were as obvious and
               | groundbreaking as they seem now. I think about a lot of
               | parallel efforts going on at the time that I wish I could
               | go back in a time machine to work on: Symbolics
               | Workstations, early Wavefront/Alias software, Self,
               | Smalltalk, Dylan and other languages that didn't become
               | mainstream.
               | 
               | There is so much out there that isn't over in computers
               | and technology. It might be helpful to think about things
               | that seem impossible, crazy and totally economically
               | unviable. Sometimes we can let finding markets, solving
               | scaleable problems and generating 10x returns for our
               | investors cloud our vision.
        
       ___________________________________________________________________
       (page generated 2023-01-20 23:02 UTC)