[HN Gopher] Interview with Bill Joy (1984)
       ___________________________________________________________________
        
       Interview with Bill Joy (1984)
        
       Author : susam
       Score  : 58 points
       Date   : 2021-02-10 05:30 UTC (2 days ago)
        
 (HTM) web link (web.archive.org)
 (TXT) w3m dump (web.archive.org)
        
       | meee wrote:
       | I remember liking this interview when I heard it years ago (about
       | an hour long). https://archive.org/details/nerdtv003
       | 
       | It was from a Cringely series called NerdTV and the tagline for
       | this episode: Bill Joy -- the father of Berkeley UNIX -- explains
       | why he was fired from the International House of Pancakes.
        
       | DonHopkins wrote:
       | "The MIRVing of the Alto user interface into multiple new
       | metaphors means that we are moving into very unfamiliar ground.
       | Everybody should get a Macintosh and understand what's special
       | about it. We still have a long way to go." -Bill Joy, January 31,
       | 1999
       | 
       | https://donhopkins.medium.com/bill-joys-law-2-year-1984-mill...
        
       | piokoch wrote:
       | This interview is amazing, things like
       | 
       | "The program worked, but it was almost 200 lines long - almost
       | too big for the Pascal system."
       | 
       | sounds like something written in a totally different universe.
       | 
       | Also, it seems that those were times when almost every programmer
       | had his own editor, ed, em, en, be, hed if I managed to catch all
       | of them.
        
         | mprovost wrote:
         | Or they just used cat: "When I'm writing programs, I can type
         | them in half the time with cat because the programs are six
         | lines - a #include, main and a for loop and one or two
         | variables."
        
       | jll29 wrote:
       | I was a but surprised that he pointed to cost as an advantage of
       | vi over emacs - I never heard anyone claim emacs costs hundreds
       | of dollars; it's free and open source, and to the best of my
       | knowledge always has been.
        
         | bshimmin wrote:
         | Gosling Emacs was actually sold by UniPress in the early
         | eighties, causing a lot of fuss and consternation.
        
           | DonHopkins wrote:
           | To be fair, RMS a right to fuss and complain, because
           | UniPress did kind of pull the rug out from under him. The
           | display update optimization code that Gosling wrote was
           | pretty ugly but amazingly brilliant dynamic programming
           | stuff, and it had a skull-and-crossbones warning in the
           | comments.
           | 
           | RMS originally used the display update code from Gosling
           | Emacs, but then rewrote it all from scratch for later
           | versions of Gnu Emacs, after UniPress threatened him not to
           | use it. As modems and networks became faster, and people
           | started using window systems instead of terminals, having an
           | "Ultra-hot screen management package" became less important.
           | But it's a really cool algorithm, a great example of dynamic
           | programming, and Gosling even published a paper about it!
           | 
           | https://news.ycombinator.com/item?id=22849522
           | 
           | DonHopkins 10 months ago | on: Enemy AI: chasing a player
           | without Navigation2D or...
           | 
           | James Gosling's Emacs screen redisplay algorithm also used
           | similar "dynamic programming techniques" to compute the
           | minimal cost path through a cost matrix of string edit
           | operations (the costs depended i.e. on the number of
           | characters to draw, length of the escape codes to
           | insert/delete lines/characters, padding for slow terminals,
           | etc).
           | 
           | https://en.wikipedia.org/wiki/Gosling_Emacs
           | 
           | >Gosling Emacs was especially noteworthy because of the
           | effective redisplay code, which used a dynamic programming
           | technique to solve the classical string-to-string correction
           | problem. The algorithm was quite sophisticated; that section
           | of the source was headed by a skull-and-crossbones in ASCII
           | art, warning any would-be improver that even if they thought
           | they understood how the display code worked, they probably
           | did not.
           | 
           | https://donhopkins.com/home/archive/emacs/skull-and-
           | crossbon...
           | 
           | Trivia: That "Skull and Crossbones" ASCII art is originally
           | from Brian Reid's Scribe program, and is not copyrighted.
           | 
           | https://donhopkins.com/home/archive/emacs/mw/display.c
           | /*  1   2   3   4   ....            Each Mij represents the
           | minumum cost of               +---+---+---+---+-----
           | rearranging the first i lines to map onto             1 |   |
           | |   |   |             the first j lines (the j direction
           | +---+---+---+---+-----        represents the desired contents
           | of a line,             2 |   |  \| ^ |   |             i the
           | current contents).  The algorithm
           | +---+---\-|-+---+-----        used is a dynamic programming
           | one, where             3 |   | <-+Mij|   |             M[i,j]
           | = min( M[i-1,j],               +---+---+---+---+-----
           | M[i,j-1]+redraw cost for j,2             4 |   |   |   |   |
           | M[i-1,j-1]+the cost of               +---+---+---+---+-----
           | converting line i to line j);             . |   |   |   |   |
           | Line i can be converted to line j by either             .
           | just drawing j, or if they match, by moving             .
           | line i to line j (with insert/delete line)          */
           | 
           | https://donhopkins.com/home/documents/EmacsRedisplayAlgorith.
           | ..
           | 
           | https://dl.acm.org/doi/10.1145/1159890.806463
           | 
           | A redisplay algorithm, by James Gosling.
           | 
           | Abstract
           | 
           | This paper presents an algorithm for updating the image
           | displayed on a conventional video terminal. It assumes that
           | the terminal is capable of doing the usual insert/delete line
           | and insert/delete character operations. It takes as input a
           | description of the image currently on the screen and a
           | description of the new image desired and produces a series of
           | operations to do the desired transformation in a near-optimal
           | manner. The algorithm is interesting because it applies
           | results from the theoretical string-to-string correction
           | problem (a generalization of the problem of finding a longest
           | common subsequence), to a problem that is usually approached
           | with crude ad-hoc techniques.
           | 
           | [...]
           | 
           | 6. Conclusion
           | 
           | The redisplay algorithm described in this paper is used in an
           | Emacs-like editor for Unix and a structure editor. It's
           | performance has been quite good: to redraw everything on the
           | screen (when everything has changed) takes about 0.12 seconds
           | CPU time on a VAX 11/780 running Unix. Using the standard
           | file typing program, about 0.025 seconds of CPU time are
           | needed to type one screenful of text. Emacs averages about
           | 0.004 CPU seconds per keystroke (with one call on the
           | redisplay per keystroke).
           | 
           | Although in the interests of efficency we have stripped down
           | algorithm 5 to algorithm 6 the result is still an algorithm
           | which has a firm theoretical basis and which is superior to
           | the usual ad-hoc approach.
           | 
           | https://en.wikipedia.org/wiki/Dynamic_programming
        
         | lizknope wrote:
         | Emacs has a long history with so many versions and editors with
         | "emacs" in the name but not necessarily what we think of emacs
         | today.
         | 
         | https://en.wikipedia.org/wiki/Emacs
         | 
         | In the 1970's there was TECO and then E. Emacs kind of grew out
         | of these editors.
         | 
         | James Gosling of Java fame had his own Gosling Emacs version
         | that I believe was sold for money
         | 
         | GNU Emacs only started in 1984 and had its initial release in
         | 1985. This interview is from 1984 so we would need to know what
         | version of Emacs is Bill Joy referring to specifically.
         | 
         | Also before fast internet connections the FSF used to sell GNU
         | tools on tape and then CD
         | 
         | This newsletter from 1994 says the CD costs $400. I don't know
         | what the price was in 1984 but maybe Bill Joy is referring to
         | that but the Free Software Foundation was only founded in 1985.
         | 
         | https://www.gnu.org/bulletins/bull16.html#SEC38
        
           | rjsw wrote:
           | From memory, a GNU tape cost me $200 in 1986.
        
         | badsectoracula wrote:
         | In addition to what lizknope wrote, there are still some
         | commercial Emacs-like editors, perhaps most notable being
         | Epsilon by Lugaru Software:
         | 
         | https://www.lugaru.com/
         | 
         | Epsilon was initially released in 1984 for PC/DOS and is still
         | under development.
        
         | DonHopkins wrote:
         | Bill was probably referring to what RMS calls "Evil Software
         | Hoarder Emacs" aka "UniPress Emacs", which was the commercially
         | supported version of James Gosling's Unix Emacs (aka Gosling
         | Emacs / Gosmacs / UniPress Emacs / Unimacs) sold by UniPress
         | Software, and it actually cost a thousand or so for a source
         | license (but I don't remember how much a binary license was).
         | Sun had the source installed on their file servers while
         | Gosling was working there, which was probably how Bill Joy had
         | access to it, although it was likely just a free courtesy
         | license, so Gosling didn't have to pay to license his own code
         | back from UniPress to use at Sun.
         | 
         | https://en.wikipedia.org/wiki/Gosling_Emacs
         | 
         | I worked at UniPress on the Emacs display driver for the NeWS
         | window system (the PostScript based window system that James
         | Gosling also wrote), with Mike "Emacs Hacker Boss" Gallaher,
         | who was charge of Emacs development at UniPress. One day during
         | the 80's Mike and I were wandering around an East coast science
         | fiction convention, and ran into RMS, who's a regular fixture
         | at such events.
         | 
         | Mike said: "Hello, Richard. I heard a rumor that your house
         | burned down. That's terrible! Is it true?"
         | 
         | RMS replied right back: "Yes, it did. But where you work, you
         | probably heard about it in advance."
         | 
         | Everybody laughed. It was a joke! Nobody's feelings were hurt.
         | He's a funny guy, quick on his feet!
         | 
         | Here's an old photo of RMS (in the center) and Mike (on the
         | right), with RMS holding a gerbil wrapped in duct tape,
         | pondering about how to answer the question "Why do you wrap a
         | gerbil in duct tape?" (You can google the answer... And it's
         | only fake stuffed gerbil for cats.)
         | 
         | http://www.art.net/~hopkins/Don/images/jsol-rms-gerbil-liz-m...
         | 
         | Here's mmccaff's story about working for UniPress, and my
         | reply, explaining the "Evil Software Hoarder" expression, and
         | linking to RMS's infamous natalism flame:
         | 
         | https://news.ycombinator.com/item?id=6646978
         | 
         | And a description of UniPress Emacs's vi emulation mode, which
         | addressed the usage pattern of people who liked to quickly run
         | vi to edit a file, then save and quit back into the shell,
         | which you couldn't just emulate by firing up a new emacs every
         | time, since emacs takes so much longer than vi to start up:
         | 
         | https://news.ycombinator.com/item?id=9398028
         | 
         | >DonHopkins on Apr 18, 2015 | on: Spacemacs - Emacs advanced
         | kit focused on Evil
         | 
         | >UniPress "Evil Software Hoarder [TM]" Emacs had a vi emulation
         | mode such that when you typed ":q", it flipped you over into an
         | Emacs shell window with key bindings to behave just like you'd
         | expect had you actually exited your text editor. Of course the
         | shell mode was hacked so "vi foo.c" would flip you back into a
         | vi-mode buffer on foo.c. Poor innocent vi users didn't even
         | realize they hadn't left the editor! It was kind of like being
         | in the Ematrix.
         | 
         | Here's some more stuff about the tabbed windows and pie menus I
         | implemented for the NeWS display driver for UniPress Emacs
         | (with some links to MockLisp and PostScript source code) -- at
         | the time (around 1988), Gnu Emacs did not have multiple
         | windows, pie menus, or tabbed windows (and still doesn't have
         | pie menus or tabbed windows 33 years later, alas):
         | 
         | https://news.ycombinator.com/item?id=18837730
         | 
         | >That's how I implemented tabbed windows in 1988 for the NeWS
         | window system and UniPress Emacs (aka Gosling Emacs aka Evil
         | Software Hoarder Emacs), which supported multiple windows on
         | NeWS and X11 long before Gnu Emacs did.
         | 
         | There's a screen snapshot of UniPress Emacs with tabbed windows
         | and pie menus, running as the HyperTIES hypermedia authoring
         | tool, on the wikipedia page about tabs:
         | 
         | https://en.wikipedia.org/wiki/Tab_(interface)
         | 
         | https://en.wikipedia.org/wiki/Tab_(interface)#/media/File:Hy...
         | 
         | More stuff about tabbed windows in Emacs, the HyperTIES
         | hypermedia browser, the Emacs based HyperTIES authoring tool,
         | and other NeWS implementations of tabbed window frames and
         | window managers:
         | 
         | https://news.ycombinator.com/item?id=18837730
         | 
         | Not only could UniPress Emacs support multiple frames, but it
         | could also support multiple display drivers (like X11, NeWS,
         | SunView, as well as text), and you could disconnect the display
         | and Emacs would keep running, and then reconnect it to another
         | display later, without losing all your work and context. So
         | crashing your window server or disconnecting your modem didn't
         | lose your emacs!
         | 
         | https://news.ycombinator.com/item?id=19743314
         | 
         | DonHopkins on Apr 24, 2019 | on: Why don't we have Wayland on
         | Raspberry Pi yet? (20...
         | 
         | Good point -- I haven't tried gnu emacs's X11 driver in ages,
         | so I'll give it another try. Does gnu emacs's X11 display
         | driver finally have a way to keep running after the X
         | connection terminates, and reconnect to a new X server (or
         | multiple X servers at once)? Under screen, I keep long running
         | emacs sessions with multiple shell buffers running for months
         | and sometimes years, with all the files I'm working on opened
         | up. Each shell buffer might be configured for some branch of
         | some code, with an interactive python or whatever shell running
         | the code connected to the database, with a bunch of useful
         | commands and context in its history. It's a lot of work to
         | recreate all that state.
         | 
         | (Digression: Bash has no way to save and merge and recreate and
         | manage parallel history threads, does it? Or does the last
         | shell that exits just stomp on the one history?).
         | 
         | Back in my Evil Software Hoarder days, I worked on the NeWS
         | display driver for UniPress Emacs 2.20, and later on the NeWS
         | display driver for gnu emacs. Here's a brochure from February
         | 1988 about UniPress Emacs 2.20 and "SoftWire" (NeWS without
         | graphics).
         | 
         | https://www.donhopkins.com/home/ties/scans/WhatIsEmacs.pdf
         | 
         | It supported multiple display drivers (text, X11, NeWS,
         | SunView), as well as multiple window frames on each of those
         | displays (which gnu emacs didn't support at the time), and you
         | could disconnect and reconnect to a long running emacs later.
         | In effect it was a "multi user emacs" since different users
         | could type into multiple displays at the same time (although
         | weird stuff could still happen since the classic Emacs
         | interface wasn't designed for that).
         | 
         | Emacs 2.20 Demo (NeWS, multiple frames, tabbed windows, pie
         | menus, hypermedia authoring):
         | 
         | https://www.youtube.com/watch?v=hhmU2B79EDU
         | 
         | Here are two different example of Emacs NeWS display drivers
         | (one for UniPress Emacs 2.20, the other for Gnu Emacs 18)
         | showing where the rubber hits the road in NeWS client/server
         | programming of an emacs NeWS display driver.
         | 
         | They both download a PostScript file to NeWS that handles most
         | of the user interface, window management, menus, input
         | handling, font measurement, text drawing, etc, and they have a
         | corresponding C driver on the emacs side.
         | 
         | There's also a "cps" file that defines the protocol (which is
         | send in tokenized binary instead of plain text), and generates
         | C headers and code stubs.
         | 
         | Together they implement an optimized, high level, application
         | specific "emacs protocol" that the client and server use to
         | communicate:
         | 
         | Emacs 2.20 NeWS display driver (supporting multiple tabbed
         | windows and pie menus in the NeWS Lite Toolkit):
         | 
         | https://www.donhopkins.com/home/code/emacs.ps.txt
         | 
         | https://www.donhopkins.com/home/code/TrmPS.c
         | 
         | Gnu Emacs 18 NeWS display driver (supporting a single tabbed
         | windows and pie menus in The NeWS Toolkit 2.0):
         | 
         | https://www.donhopkins.com/home/code/emacs18/src/tnt.ps
         | 
         | https://www.donhopkins.com/home/code/emacs18/src/tnt.c
         | 
         | https://www.donhopkins.com/home/code/emacs18/src/tnt_cps.cps
         | 
         | https://www.donhopkins.com/home/code/emacs18/lisp/term/tnt-w...
         | 
         | TL;DR: Lots of gross hacky PostScript code and snarky comments,
         | like throttling beeps to one per second and flashing random
         | colors when it beeps faster, or preventing emacs from core
         | dumping:                 % Annoy the user       %       /^G { %
         | - => -         currenttime NextBeepTime cmptimeval         1 eq
         | { beep } {           gsave             self setcanvas
         | random 255 mul cvi setpixel             6 setrasteropcode
         | clippath gsave fill grestore             FlashTime sleep
         | fill           grestore         } ifelse         currenttime
         | BeepTime NextBeepTime addtimeval pop       } def            %
         | Return the minimum size to keep emacs from core dumping       %
         | /minsize { % - => w h         /?validate self send
         | CharWidth 10 mul Border dup add add         LineHeight 5 mul
         | Border dup add add         % XXX: Any smaller and it core
         | dumps!       } def
        
         | ido wrote:
         | maybe cost in system resources? EMACS used to require a lot of
         | RAM ("Eight Megs And Constantly Swapping").
        
           | hnlmorg wrote:
           | No, emacs used to be non-free software. Bare in mind open
           | source (as we understand it today) is very different to what
           | it was like in the 80s. Also internet connections (if you
           | were lucky enough to have one in the first place) was several
           | orders of magnitude slower and more expensive thus software
           | was usually distributed via snail mail and usually came with
           | a (hefty) price tag.
           | 
           | In many ways, this is the golden era for developers. Never
           | has so many tools been free, easy to access and in abundance.
           | Though I'll always have fond memories of the 80s development
           | for it's simplicity.
        
         | thakoppno wrote:
         | > EMACS is a nice editor too, but because it costs hundreds of
         | dollars, there will always be people who won't buy it.
         | 
         | That surprised me too.
        
           | jillesvangurp wrote:
           | OSS was not a widespread thing until much later, around the
           | time of the early web and Linux. People were sharing code of
           | course but trying to monetize development tools was perfectly
           | reasonable at the time.
           | 
           | Licensing was in general messy and not very formalized (hence
           | the existence of several BSD forks). There were may versions
           | of unix, several of which were proprietary and built by
           | various hardware companies (like Sun's Solaris).
           | 
           | Unix on PCs was even less of a thing at the time as PCs were
           | still pretty limited. The 80386 with 32 bit instructions was
           | only introduced in 1985. I'm not sure there ever was a unix
           | version capable of running on 16 bit intel CPUs before that.
           | So people programming for and using Unix hardware were mainly
           | doing that professionally or in an academic setting and not
           | on some home computer (as they were referred to once upon a
           | time). So, companies donating OSS software was not a big
           | thing.
           | 
           | Bill Joy of course worked on BSD kernels and distributions
           | and would have technically been one of the early OSS
           | developers. So, open sourcing vi was probably a natural thing
           | for him when he created it in 1976 and released it along with
           | the first version of BSD while at Berkeley. So, he was an
           | academic at the time and not selling software for profit yet.
        
             | rjsw wrote:
             | BSD wasn't open source back then, you needed to have an
             | AT&T source code licence as well.
        
               | mpol wrote:
               | Also, ed wasn't open source. Vi still used ed, so even of
               | vi itself was open source, it wasn't completely
               | functional.
               | 
               | It was only around 2001 / 2003 when Caldera open sourced
               | some UNIX utilities under an open source license as part
               | of the Heirloom project. Parts of that were ed and mailx.
        
               | mprovost wrote:
               | Right, if you look at the early BSD sources [0] it's not
               | a complete OS - there's no kernel. It's just a bunch of
               | utilities that you were supposed to install on an already
               | running AT&T system.
               | 
               | [0] https://github.com/dspinellis/unix-history-
               | repo/tree/BSD-1-S...
        
       | sradman wrote:
       | Bill Joy [1]:
       | 
       | > an American computer engineer and venture capitalist. He co-
       | founded Sun Microsystems in 1982 along with Scott McNealy, Vinod
       | Khosla, and Andy Bechtolsheim, and served as Chief Scientist and
       | CTO at the company until 2003. He played an integral role in the
       | early development of BSD UNIX while being a graduate student at
       | Berkeley, and he is the original author of the vi text editor.
       | 
       | [1] https://en.wikipedia.org/wiki/Bill_Joy
        
       | DonHopkins wrote:
       | This classic interview was discussed before in 2019:
       | 
       | https://news.ycombinator.com/item?id=20484547
       | 
       | and in 2015:
       | 
       | https://news.ycombinator.com/item?id=10145982
       | 
       | and in 2012:
       | 
       | https://news.ycombinator.com/item?id=4940918
       | 
       | I previously commented and linked to an article I wrote about
       | Bill Joy's Law: "2^(Year-1984) MIPS":
       | 
       | Wow, an interview from Year 1 MIP!
       | 
       | https://medium.com/@donhopkins/bill-joys-law-2-year-1984-mil...
       | 
       | >Bill Joy's Law: 2^(Year-1984) Million Instructions per Second
       | 
       | >The peak computer speed doubles each year and thus is given by a
       | simple function of time. Specifically, S = 2^(Year-1984), in
       | which S is the peak computer speed attained during each year,
       | expressed in MIPS. -Wikipedia, Joy's law (computing)
       | 
       | https://en.wikipedia.org/wiki/Joy%27s_law_(computing)
       | 
       | >Introduction: These are some highlights from a prescient talk by
       | Bill Joy in February of 1991.
       | 
       | >"It's vintage wnj. When assessing wnj-speak, remember Eric
       | Schmidt's comment that Bill is almost always qualitatively right,
       | but the time scale is sometimes wrong." -David Hough
       | 
       | >C++++-=: "C++++-= is the new language that is a little more than
       | C++ and a lot less." -Bill Joy
       | 
       | >In this talk from 1991, Bill Joy predicts a new hypothetical
       | language that he calls "C++++-=", which adds some things to C++,
       | and takes away some other things. [...]
       | 
       | On Nov 8, 2018, I sent Bill Joy a birthday greeting: "Happy
       | 17,179,869,184 MIPS Birthday, Bill"! (2 to the (year - 1984))
        
       | mprovost wrote:
       | "These editors tend to last too long - almost a decade for vi
       | now" - Bill Joy, 1984
        
       | dr-detroit wrote:
       | Bill Joy is antithetical to modern computer science. He isn't
       | even in the top 1% of the rich. That's the textbook definition of
       | a very bad programmer. While this nerd was spending literally
       | 10,000 hours on some lame time share computer Elon Musk was
       | already requesting his first government subsidies for a poopy
       | diaper bailout.
        
       ___________________________________________________________________
       (page generated 2021-02-12 23:02 UTC)