8 ms·
Interview with Bill Joy (1984)
- sradman 6y agoBill 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 https://en.wikipedia.org/wiki/Bill_Joy
- mprovost 6y ago"These editors tend to last too long - almost a decade for vi now" - Bill Joy, 1984
- piokoch 6y agoThis 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 6y agoOr 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 6y agoI 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.
- DonHopkins 6y agoBill 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 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-mg.jpg 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 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 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 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) https://en.wikipedia.org/wiki/Tab_(interface)#/media/File:HyperTIESAuthoring.jpg 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 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 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 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 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/emacs.ps.txt https://www.donhopkins.com/home/code/TrmPS.c 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.ps https://www.donhopkins.com/home/code/emacs18/src/tnt.c 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/src/tnt_cps.cps https://www.donhopkins.com/home/code/emacs18/lisp/term/tnt-win.el 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
- DonHopkins 6y agoThis classic interview was discussed before in 2019: https://news.ycombinator.com/item?id=20484547 https://news.ycombinator.com/item?id=20484547 and in 2015: https://news.ycombinator.com/item?id=10145982 https://news.ycombinator.com/item?id=10145982 and in 2012: https://news.ycombinator.com/item?id=4940918 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-million-instructions-per-second-3a8c92165cfe 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) 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))
- dr-detroit 6y agoBill 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.
- DonHopkins 6y ago"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-million-instructions-per-second-3a8c92165cfe#80af https://donhopkins.medium.com/bill-joys-law-2-year-1984-mill...
- DonHopkins 6y agoOops, I mean 1991 not 1999: From dgh@dgh Thu Feb 7 12:09:13 1991 Date: Thu, 7 Feb 91 12:07:38 PST From: dgh@dgh (David Hough) Subject: Highlights of Bill Joy talk, re-broadcast This has been given around the world, most recently at the quarterly directors meeting on 31 Jan. A tape was made that will be available from somebody somewhere later. 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. John Gage collaborated with Bill. Note that some of the specific Sun and SPARC projections are confidential.
- meee 6y agoI remember liking this interview when I heard it years ago (about an hour long). https://archive.org/details/nerdtv003 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.