1. 58

  2. 16

    Glad someone spoke up about this. I was thinking about it yesterday when I saw that Ars Technica did a post about the MOAD anniversary. If this all got dreamed up and demonstrated fifty years ago, what the hell have we been doing since?

    Computers are supposed to make us smarter, not dumber.

    1. 26

      what the hell have we been doing since?

      We pressed ever more transistors into the same space to make that dream from 50 years ago scale to many people in lots of places.

      MOAD used two studio style cameras directly linked via microwave to the opposite side’s screen for the “video conferencing” part. Today two smartphones on a packet switched network are more than enough to do that, even across continents, and with much better image and sound quality.

      Edit to add: note that I’m not claiming that history didn’t take a few wrong turns compared to what could have been. But in lots of ways the last 50 years created more solid foundations where a system like used in the MOAD isn’t feasible to build only by a team of intellectuals with quasi-infinite resources, but can be built by some smart 15 year old with a 10 years old computer that’s available as scrap part, and then used by millions of people.

      1. 7

        Don’t you understand that engineering isn’t about bringing down prices and increasing availability and improving reliability?!

        1. 2

          there’s a difference between the concerns of hardware or software engineering as a discipline and technology as the writer is talking about, and I think you capture the engineering side here well. I’m not as bearish on the current state of tech as the author is, but we haven’t landed even close to the most ideal of all futures.

          This is where I’d add in something about tech being strangled by capital, but nobody wants that polemic. :)

          1. 4

            Don’t worry, I wrote that one too.

            1. 2

              I see references to Marx, Debord, Steiner, very cool. This is quite good. I’m going to pick up your book. On another note, I wish there was a forum to discuss topics like these exactly, but I think the blogosphere is good enough for now.

              1. 3

                There’s a circle of folks who are trying to push the envelope over on the fediverse, & a lot of my posts come out of discussion with them. (It’s a mixed group: some folks who are trying to switch all their blogging to gopher, some folks who are trying to replace their primary computers with something manufactured before 1990, some who are building brand new architectures from scratch, some writing OSes, and a handful who are mostly into hypertext.)

              2. 2

                They’d like that over on /r/socialistprogrammers too.

                1. 1

                  If nobody has submitted it over there yet, maybe I will.

        2. 13

          Excel is an extension of the mind. Slack w/ video conference/chat/search logs is an extension of the mind. Voice commands are an extension of the mind. Salesforce’s process builders are extensions of minds.

          The silo’ing of data in web applications is probably the biggest mess, but otherwise the average person has been given access to far more tooling than they’ve ever had to think and deal with stuff. People who are miles away from programming still “get” naming files a certain way to find the info they need.

          People here or on the orange site might complain that the Smalltalk revolution didn’t happen, but being able to put hyperlinks in almost every system I use on a daily basis is pretty close. It’s not all unified but it’s there. It’s not all accessed via text-based programming languages, but it’s pretty present.

          1. 9

            Excel is an extension of the mind

            This! It gets a lot of stick but Excel is powerful, and I’m consistently impressed with the things that so-called ‘non-technical’ people do with it everyday.

            In fact, I recently opened some old (-ish, c. 2011) copies of the Journal of Mathematics and Music and found reference to an academic system for music analysis that had been developed in Visual Basic, on Excel…

            1. 4

              Agreed! Spreadsheets are software and Excel is an IDE.

          2. 3

            There are a few folks keeping the faith. The biggest names are the same folks who were doing it in the 60s and 70s, but there are also people like Bret Victor.

            1. 2

              Creating lock-in. The landscape is mature, stable, a platform that people rely on.

            2. 14

              Professional historians have a generic name for teleological historiography: Whig history. It’s a predictable and ubiquitous consequence of history being written (only) by the victors. As such, it’s still unfortunately predominant in the histories of science and technology.

              1. 3

                Check out A People’s History of Computing in the United States by Dr. Joy Rankin for a very different (and very exciting) history of personal computing that focuses on time-sharing communities, K-12 classrooms, BASIC programming courses, etc. = http://www.hup.harvard.edu/catalog.php?isbn=9780674970977

                1. 2

                  So, sort of inevitable?

                  1. 3

                    Yes. Every culture has heritage: origin stories, ancestor myths, explanations of who “we” are and how we got to be that way. The idea of history as a dispassionate study of (relatively) objective truths is what’s unusual. It doesn’t come easy.

                2. 10

                  I kept waiting for the author to make a case, but it was just a series of assertions without evidence. I don’t know what I feel about teleology in technology but I do know that the article doesn’t make a solid case against it. The addition of just one plausible alternative history where we ended up with radically different tech would be a start.

                  1. 3

                    The “Shock of the Old” by Edgerton is a relevant book on the topic.

                    1. 2

                      I mean, I did lead with a mention of Engelbart, and went on to briefly describe Kay & Nelson’s work. I assumed any reader with an interest in the history of technology would be at least vaguely familiar with them, but there are links to Mindstorms & The Augmentation of Human Intelligence in the text.

                      I’m working on a survey of interesting & plausible alternatives that have accessible demos at the moment, so you could always take a look at my research materials.

                    2. 9

                      I’m going to back up your claim about them ignoring history or beneficial technologies to do inferior stuff for decades at a time. It’s true in both programming and security. Here’s a few examples:

                      1. Barton et al’s Burroughs B5000 was highly-reliable by being implemented in ALGOL with bounds checks and pointer protection at CPU level. Most companies didn’t want that. When reliability and security became important, they still mostly wouldn’t buy systems like that even though they spent $1+ million on stuff like NonStop. Even they had to keep ditching higher-reliability/security CPU’s since market volume was too low to support their development cost.

                      2. Hansen and Wirth built small, systems languages that were safe by default, could disable that where necessary, compiled super-fast, and therefore had high iteration speed with less costly debugging in maintenance phase. Most companies kept using C before adopting C++. Cardelli et al created C++ alternative, Modula-3, that preserved benefits of Wirth-like languages. Little adoption. The companies that could afford language projects also didn’t reuse these principles most of the time. Took a while for Go to be built this way, which is a big success now.

                      3. Common LISP and Smalltalk. Lightening-fast development, modify language as needed, live updates, and balance safety vs readability vs performance with options. The LISP machines took that to whole-system level where even problems in OS could be fixed in same editor using same language while it was live. (Still can’t do that!) Some small-scale studies confirm productivity benefits their users were claiming. Lots of people learn Scheme in universities to get them started with this kind of stuff. Hardly any commercial uptake. Eventually, Clojure cheats by latching onto Java ecosystem with big things happening as a result. Although a few companies existed in that niche, Chez Scheme is notable for their performance/flexibility balancing act that was reaping its benefits even on Z80’s. In high-assurance, PreScheme was the most flexible, rigorously-verified tool ever made which could work in use cases where C was usually needed.

                      4. NonStop. Tandem’s designs used field reports to systematically find every way systems were failing before mitigating it. Others needing reliability could’ve done the same. Further, since their systems worked at five 9’s, you’d think other companies and public projects would copy their techniques. If not then, after patents expired. If not for big systems, then for embedded in safety-critical whose hardware is still closer to 1980’s capabilities. I still never see NonStop’s architecture outside occasional experiments by academics studying fault-tolerance.

                      5. VMS for cheaper, high availability. VMS combined few services on by default, stronger security, filesystem versioning, clustering tightly integrated into the OS, ability to use nodes with different ISA’s, and a distributed lock manager with deadlock detection. It was easy for any app to use these once they were setup. Systems stayed up so long admins sometimes forgot how to reboot them with cluster record being a claim of 17 years. Although some copied the clustering a bit, modern systems in the Linux ecosystem (esp clouds) can’t seem to copy and properly integrate those basic capabilities to hit that level of uptime under significant load. They’re always going down but don’t want to study VMS at all. Big firms, esp in cloud space, started reinventing some capabilities piece-by-piece, downtime-by-downtime. Including functionality similar to its spawn process with privileges and CPU/RAM metering which UNIX originally rejected in favor of simple forking.

                      6. Concurrency at language level. I think originally due to Hansen with Concurrent Pascal used in OS’s.There’s steadily been models that consistently knock out concurrency errors. Eiffel’s SCOOP was one of easiest to use. In mainstream languages like Java, there’s a steady stream of tools developed that find race conditions, too. Despite how costly heisenbugs can be, the language designers and adopters mostly didn’t use the preventative or detection measures. Two exceptions were Ada Ravenscar in embedded and Rust which is mainstreaming now.

                      7. Parallelism. In HPC, they noticed that it was hard to both concisely express and optimally use parallel versions of algorithms. So, they started designing C extensions (eg Cilk) and new languages to do that. There was hardly any adoption by people or companies using clusters outside High-Performance Fortran. A good example which handles a wide variety of situations is Cray’s Chapel. Mainstream went with solutions like Hadoop and Apache SPARK that use way more resources, computers and labor, to solve some of the same problems.

                      8. Security. Use of minimally-privileged architectures, reduced TCB’s, modular design with information hiding, layering w/ minimal looping around between layers, safe-by-default languages, specification of correct behavior (and error handling), analyzing info flows for leaks, test everything, make sure object code matches, secure repos, and whatever tooling is available to automate this. All done by mid-1980’s to early 1990’s with each method preventing or finding problems with resulting systems being only ones NSA evaluators couldn’t hack at all or found few problems in. Some like SNS Server have no reported breaches over almost 30 years. Companies wouldn’t buy them. FOSS folks don’t build them. To this day and uniquely to this sub-field, most folks well-known in security act like none of that work ever happened, ignore those methods that got results, and slowly reinvent them or knockoffs of them with less results. Their kernels and VMM’s still have code injections and leaks the 1990’s versions prevented. Recent example being cache-based, side channels originally reported in 1992 in VAX VMM using analysis method from 1991. Ignoring takes decades to address problems whereas folks that were watching and using stuff did that in a year.

                      1. 1

                        I tried Google. What is SNS Server?

                        1. 1

                          Being from Phantom Works, it’s hard to find information on past summaries like older and newer evaluators published. It was one of only three products to achieve the A1 rating under TCSEC. Others being STOP and GEMSOS with LOCK and VAX VMM designed same way but never evaluated. That usually took several years to design, analyze, and build followed by 2-5 years of NSA pentesting. Guttman said SNS Server is LOCK with them just changing the names periodically to get new, research funding. High-assurance, security products are more lucrative when taxpayers cover the labor-intensive parts. ;)

                          EDIT: It was my broken memory because I remember reading this paper before. Straight-up says “Secure Network Server LOCK 6.” The original LOCK was unevaluated but SNS version was. Different names for same thing.

                          The MLS LAN, with core called Secure Network Server, was a high-assurance guard intended to sit between attacker-controlled networks and highly-classified networks. Aside from firewall-like features, it would run software like this to control information flow up to even human review of individual piece of data if necessary. Btw, that link is a competitor’s product I’m using just because it has good descriptions of activities guards are used for. It ran on STOP (XTS-400).

                          Last I heard they all (except Aesec/GEMSOS) downgraded their official ratings to EAL5+ (not EAL7) to save money on evaluations since every product in the market is certified as hackerbait (EAL4 or lower). Plus, NSA killed the market as Bell describes for probably SIGINT reasons. The positive side of that paper is it tells you usage scenarios and what security regulation achieved. I know SNS switched to a “transactional” kernel so it had fewer or no concurrency issues maybe with some timing channel mitigation. Just speculating since they don’t return my emails. :)

                      2. 9

                        I am reminded of Loper’s essay, Englebart’s Violin. http://www.loper-os.org/?p=861

                        In particular, as someone who spent substantial time in his masters digging through the history of software development and debugging, my reckoning is that it took until about ~2008 for top-class $$$$$ IDEs to begin to approach the capabilities of Lisp machines. So a triumphalist history is really not in line with the reality of what took place.

                        N.b., for the interested: mainframe tools went from hex to high level languages, then the cycle started over with mini, then micros, then embedded, then the cpu power and dev expectations exceeded writing hex/asm and mobile & iot is doing better. The tools lost something each time the cycle went around, and sometimes the things came back… sometimes they didn’t, sometimes it took decades to come back. The standardization of Unix as the world’s default developer OS has substantially improved things and allowed for a continuity of work, after first hurting the state of the world substantially(arguably it also has caused immense stagnation in OS improvement…).

                        1. 1

                          Tangential, but I love alternative input devices. I’ve got a twiddler, and while I don’t do development with it (because punctuation tends to have complicated & hard-to-remember chords), I use it regularly for other purposes, & it’s a staple of my experiments in wearable computing.

                          Loper brings up something I think I glossed over in the essay proper (but covered in one of the threads this was drawn from): Engelbart preferred front-loaded learning curves, and expected professionals to be willing to put in initial effort in order to get professional-grade efficiency. This idea is compatible with most dev tools, but it generally doesn’t go over well for things where a prospective audience isn’t sure any particular effort will pan out. (Pre-built machines running BASIC outperform kit machines with front panels because the former can be made to provide the necessary value/joy to justify the purchase pretty quickly, while kit machines have a tendency never to get built at all.)

                          I tend to like to separate computing into two domains: big computing – a domain of professionals where tooling is as powerful as possible, everyone has read all the manuals already, and we use solid standards to protect important data – and small computing – a domain where people play around creatively and express themselves in the form of improbable and ugly-beautiful art-machines. The big/small computing division can be seen as the Engelbart/Kay division, or the Javadoc/Geocities division.

                        2. 15

                          Polemics like this always seem to leave out the part where, though things might not be exactly to the author’s preference, they are nonetheless actually pretty impressive. We’ve built a lot of systems that are truly amazing in the positive impact they have, just as we have built tools that are used for distasteful purposes. In addition, a lot of the idealism vanishes out the window once you actually try to build a real thing which works for thousands or millions of people, rather than a lab experiment or research project.

                          I’m sure we’re not at a global maximum of whatever it is we should be optimising, but the idea that everything is terrible and we’re all just lying to ourselves is such a tired one.

                          1. 5

                            Well, the article wasn’t about that (it’s about how history is misrepresented to present a world dominated by technological determinism), but I’m always up for discussing the subject.

                            ‘Polemics like this’ are generally not making the argument that everything is terrible, but that relatively straightforward & obvious improvements are not being made (or once made are being ignored). In the case of the work of folks mentioned in this article, commercial products today are strictly worse along the axes these people care about than commercially-available systems in the late 1970s and early 1980s. In the case of both Alan Kay & Ted Nelson, they themselves released open source software that gets closer to their goals.

                            I don’t think it’s unfair to get mad about a lack of progress that can’t be excused by technical difficulties. It’s absurd that popularly available software doesn’t support useful features common forty years ago. However, the tech industry is uniquely willing to reject labor-saving technology in favor of familiar techniques – it does so to a degree far greater than other industries – so while absurd, it’s not surprising: software engineering is an industry of amateurs, and one largely ignorant of its own history.

                            1. 6

                              I think you’re deliberately understating the current state of computing, programming, and networking.

                              It’s absurd that popularly available software doesn’t support useful features common forty years ago.

                              Like clipboards! And spellcheckers! And pivot tables! And multimedia embedding! And filesharing! And full-text searching! And emailing!

                              Except…wait a second, those weren’t really common useful features at all. Wait a second….

                              However, the tech industry is uniquely willing to reject labor-saving technology in favor of familiar techniques – it does so to a degree far greater than other industries – so while absurd, it’s not surprising

                              What do you mean by this? Have you compared it to industries like, say, paper printing? Healthcare? Cooking?

                              Would you consider the constant churn of, say, web frameworks promising ever-easier development to be favoring familiar techniques? What about the explosion functional and ML languages which will magically save us from the well-documented pitfalls and solutions of procedural and OOP languages, for the mere cost of complete retraining of our developers and reinvention of the entire software stack?

                              Please put some more effort into these bromides–facile dismissals of tech without digging into the real problems and factors at play is at least as shortsighted as anything you complain of in your article.

                              one largely ignorant of its own history.

                              Here I would have to agree with you. :)

                              1. 3

                                Like clipboards!

                                That’s actually a decent example. Companies operating under the philosophy to interoperate with maximum number of techs for benefits enkiv2 is going for would want everyone to have clipboards that could interoperate with each other, too. Instead we get walled garden implementations. Additionally, Microsoft patented it instead of leaving it open in case they want to use it offensively to block its adoption and/or monetize it.

                                On a technical angle, clipboards were much weaker than data-sharing and usage models that came before them. Some of the older systems could’ve easily been modified to do that with more uses than clipboards currently offer. There’s entire product lines on Windows and Linux dedicated to letting people manipulate their data in specific ways that might have just been a tie-in (like clipboards) on top of a fundamental mechanism using the extensible designs enkiv2’s and his sources prefer. Instead, we get patented, weak one-off’s like clipboards added on many years after. Other things like search and hyperlinks came even later with Microsoft’s implementation in Windows once again trying to use IE to lock everyone in vs real vision of WWW.

                                I could probably write something similar about filesharing adoption in mainstream OS’s vs distributed OS’s. languages, and filesystems from decades earlier.

                                1. 3

                                  The clipboard mechanism in X Windows allows for more than just text. I just highlighted some text in Firefox on Linux. When I query the selection [1], I see I have the following targets:

                                  • Timestamp
                                  • targets (this returns the very list I’m presenting)
                                  • text/html
                                  • text/_moz_htmlcontext
                                  • text/_moz_htmlinfo
                                  • UTF8_STRING
                                  • COMPOUND_TEXT
                                  • TEXT
                                  • STRING
                                  • text/x-moz-url-priv

                                  If I select text/html I get the actual HTML code I selected in the web page. When I select text/x-moz-url-priv I get the URL of the page that I selected the text on. TEXT just returns the text (and the alt text from the image that’s part of the selection). I use that feature (if I”m on Linux) when blogging—this allows me to cut a selection of a webpage to paste into an entry which grabs the URL along with the HTML.

                                  Of course, it helps to know it’s available.

                                  [1] When first playing around with this in X Windows, I wrote a tool that allowed me to query the X selection from the command line.

                                  1. 1

                                    Didnt know about those tricks. Thanks for the tip.

                                    1. 2

                                      There’s a reason I used it as an example. ;)

                                      Ditto spellcheckers–they used to be a real bear to implement and ship as a feature, if they got shipped at all, because of the memory and speed constraints in implementing them.

                                    2. 1

                                      That’s table stakes for clipboard implementations. Microsoft Windows also allows multiple objects to be attached to the clipboard, with the expectation that they provide different representations of the same data. Android’s clipboard is built on the same Content Provider API that all of their application data interoperability uses. The WHATWG clipboard API allows the data to be keyed by mimetype, using the same formats as the drag-and-drop API. I assume macOS provides similar functionality, but I don’t know where to look for info on that.

                                      It’s not used for anything that fancy because (a) the clipboard can only ever hold one piece of data at a time (b) you have to get the applications to support the same data format, just like if you’d used a file

                                  2. 2

                                    I think you’re deliberately understating the current state of computing, programming, and networking.

                                    Never do I say that the tech we have is worthless. But, at every opportunity, I like to bring up the fact that with not much effort we could do substantially better.

                                    those weren’t really common useful features at all.

                                    It shouldn’t take fifty years for a useful feature to migrate from working well across a wide variety of experimental systems to working poorly in a handful of personal systems – particularly since we have a lot of developers, and every system owned by a developer is a de-facto experimental system.

                                    There weren’t impossible scaling problems with these technologies. We just didn’t put the effort in.

                                    Have you compared it to industries like, say, paper printing? Healthcare? Cooking?

                                    I was thinking in particular of fields of engineering. CAD got adopted in mechanical engineering basically as soon as it was available.

                                    But, sure: in the domain of cooking, sous vide systems got adopted in industrial contexts shortly after they became available, and are now becoming increasingly common among home cooks. Molecular gastronomy is a thing.

                                    Healthcare is a bit of a special case. All sorts of problems, at least in the US, and since the stakes are substantially higher for failures, some conservativism is justified.

                                    Printing as an industry has a tendency to adopt new technology quickly when it’ll increase yield or lower costs – even when it’s dangerous (as with the linotype). There are some seriously impressive large-scale color laser printers around. (And, there was a nice article going around about a year ago about the basic research being done on the dynamics of paper in order to design higher-speed non-jamming printers.) My familiarity with printing is limited, but I’m not surprised that Xerox ran PARC, because printing tech has been cutting edge since the invention of xerography.

                                    Would you consider the constant churn of, say, web frameworks promising ever-easier development to be favoring familiar techniques?

                                    Promising but never actually delivering hardly counts.

                                    What about the explosion functional and ML languages which will magically save us from the well-documented pitfalls and solutions of procedural and OOP languages, for the mere cost of complete retraining of our developers and reinvention of the entire software stack?

                                    Functional programming is 70s tech, and the delay in adoption is exactly what I’m complaining about. We could have all been doing it thirty years ago.

                                    (The other big 70s tech we could benefit a great deal from as developers but aren’t is planners. We don’t write prolog, we don’t use constraint-based code construction, and we don’t use provers. SQL is the rare exception where we rely upon a planner-based system at all in production code. Instead, we go the opposite route: write java, where engineer time and engineer effort is maximized because everything is explicit.)

                                    1. 1

                                      We could have all been doing it thirty years ago.

                                      I’m pretty sure the computers of the time weren’t really up to the task. How much RAM does GHC take up?

                                      Can you write a useful functional language and interpreter that works in the hardware available at the time, and will it be faster/smaller than the equivalent, say, C compiler?

                                      1. 2

                                        The variety of lisps and schemes available for early-90s commodity hardware indicates that a functional style has been viable on that hardware for thirty years. We can be very conservative and call it twenty-five too: if Perl scripts running CGI are viable, so is all of the necessary features of functional programming (provided the developer of the language has been sensible & implemented the usual optimizations). Haskell is probably not the best representative of functional programming as a whole in this context: it really is heavy, in ways that other functional languages are not, and has a lot of theoretical baggage that is at best functional-adjacent. Folks can and did (but mostly didn’t) run lisp on PCs in ’95.

                                        By the late 90s, we are already mostly not competing with C. We can compare performance to perl, python, and java.

                                        The question is not “why didn’t people use haskell on their sinclair spectrums”. The question is “why didn’t developers start taking advantage of the stuff their peers on beefier machines had been using for decades as soon as it became viable on cheap hardware?”

                                        1. 3

                                          You’re playing fast and loose with your dates. You said 30 years ago, which would’ve been 1988–before the Intel 486. Even so, let’s set that aside.

                                          The variety of lisps and schemes available for early-90s commodity hardware indicates that a functional style has been viable on that hardware for thirty years.

                                          The most you could say was that the languages were supported–actual application development relies on having code that can run well on the hardware that existed. I think you’re taking a shortcut in your reasoning that history just doesn’t bear out.

                                          if Perl scripts running CGI are viable, so is all of the necessary features of functional programming (provided the developer of the language has been sensible & implemented the usual optimizations).

                                          I’m not sure what you mean by viable here. The Web in the 90s kinda sucked. You’re also overlooking that actual requirements for both desktops and servers at the time for web stuff were pretty low–bandwidth was small, clients were slow, and content was comparatively tiny in size when compared with what we use today (or even ten years ago).

                                          The second bit about “assuming the developer of the language” is handwaving that doesn’t even hold up to today’s languages–people make really dumb language implementation decisions all the time. Ruby will never be fast or small in memory for most cases. Javascript is taking a long time to get TCO squared away properly. Erlang is crippled for numeric computation compared to the hardware it runs on.

                                          By the late 90s, we are already mostly not competing with C. We can compare performance to perl, python, and java.

                                          I don’t believe that to be the case, especially in the dominant desktop environment of the time, Windows. Desktop software was at the time very much written in C/C++. with Visual Basic and Delphi probably near leaders.


                                          I think the problem is that you’re basing your critiques on a present based on a past that didn’t happen.

                                          1. 4

                                            You’re also overlooking that actual requirements for both desktops and servers at the time for web stuff were pretty low–bandwidth was small, clients were slow, and content was comparatively tiny in size when compared with what we use today (or even ten years ago).

                                            That’s not a bad thing. :)

                                            1. 3

                                              actual application development relies on having code that can run well on the hardware that existed

                                              Professional (i.e., mass-production) development is more concerned with performance than hobby, research, and semi-professional development – all of which is primarily concerned with ease of exploration.

                                              Sure, big computing is important and useful. I’m focusing on small computing contexts (like home computers, non-technical users, and technical users working outside of a business environment, and technical users working on prototypes rather than production software) because small computing gets no love (while big computing has big money behind it). Big computing doesn’t need me to protect it, but small computing does, because small computing is almost dead.

                                              So, I think your criticisms here are based on an incorrect understanding of where I’m coming from.

                                              Professional development is totally out of scope for this – of course professionals should be held to high standards (substantially higher than they are now), and of course the initial learning curve of tooling doesn’t matter as much to professionals, and of course performance matters a lot more when you multiply every inefficiency by number of units shipped. I don’t need to say much of anything about professional computing, because there are people smarter than me whose full time job is to have opinions about how to make your software engineering more reliable & efficient.

                                              Powerful dynamic languages (and other features like functional programming & planners) have been viable on commodity hardware for experimental & prototype purposes for a long time, and continue to become progressively more viable. (At some point, these dynamic languages got fast enough that they started being used in production & user-facing services, which in many cases was a bad idea.)

                                              For 30 years, fairly unambiguously, fewer people have been using these facilities than is justified by their viability.

                                              Folks have been prototyping in their target languages (and thus making awkward end products shaped more by what is easy in their target language than what the user needs), or sticking to a single language for all development (and thus being unable to imagine solutions that are easy or even idiomatic in a language they don’t know).

                                              For a concrete example, consider the differences between Wolfenstein 3d and Doom. Then, consider that just prior to writing Doom, id switched to developing on NeXT machines & started writing internal tooling in objective c. Even though Doom itself ran on DOS & could be built on DOS, the access to better tooling in early stages of development made a substantially more innovative engine easier to imagine. It’s a cut and dried example of impact of tools on the exploration side of the explore/exploit divide, wherein for technical reasons the same tools are not used on the production (exploit) side.

                                              people make really dumb language implementation decisions all the time

                                              Sure. And, we consider them dumb, and criticize them for it. But, while today’s hardware will run clojure, a c64 lisp that doesn’t have tail recursion optimization will have a very low upper limit on complexity. The difference between ‘viable for experimentation’, ‘viable for production’, and ‘cannot run a hello world program’ is huge, and the weaker the machine the bigger those differences are (and the smaller a mistake needs to be to force something into a lower category of usability).

                                              The lower the power of the target machine, the higher the amount of sensible planning necessary to make something complex work at all. So, we can expect early 90s lisp implementations for early 90s commodity hardware to have avoided all seriously dumb mistakes (even ones that we today would not notice) & performed all the usual optimization tricks, so as to be capable of running their own bootstrap.

                                              There are things that can barely run their own bootstrap, and we generally know what they are. I don’t really care about them. There are other things that were functional enough to develop in. Why were they not as widely used?

                                              Desktop software was at the time very much written in C/C++. with Visual Basic and Delphi probably near leaders.

                                              Sure, but software was being written in scripting languages, and so writing your software in a scripting language was not a guarantee that it would be the slowest thing on the box (or even unusably slow). That makes it viable for writing things in that will never be sold – which is what I’m concerned with.

                                              I think the problem is that you’re basing your critiques on a present based on a past that didn’t happen.

                                              I think I just have a different sense of appropriate engineer time to cpu time tradeoffs, and don’t consider the mass production aspect of software to be as important.

                                              1. 1

                                                I certainly ran Emacs Lisp on a 386 SX-16, and it ran fine. I didn’t happen to run Common Lisp on it, mainly because I wasn’t into it, or maybe there were only commercial implementations of it back then. But I would be pretty surprised if reasonable applications in CL weren’t viable on a 386 or 68020 in 1990. Above-average amounts of RAM were helpful (4 or 8 MB instead of 1 or 2).

                                  3. 6

                                    What a nice and inspiratory write-up! I really like this kind of quality content, even though it’s a topic only a small small minority would even want to reason about in this world.

                                    I really see the computer as an extension to my mind, and I must say that I’ve managed to create an environment for myself which suits this purpose. Using other computers with common operating systems or window managers, or even tablets or smartphones, really makes you realize how disconnected people are from their technology despite most of them using it every day, some even almost every minute.

                                    I would argue that this is a stress factor in itself, where people feel the need to check their phone regularly and literally experiencing stress when they don’t. I’m looking forward to what the future will bring; I’m almost sure the next big step after the smartphone will be direct brain-computer-interfaces (Let’s hope it’s open source, folks! I wouldn’t want to catch a virus that way).

                                    1. 7

                                      I’m really very happy not attaching the computer to my brain at all. I appreciate that it’s a physical artefact that I have some hope of being able to turn off, push out a window, etc – that Amazon isn’t putting advertising material into my subconscious in a way I can’t observe.

                                      1. 5

                                        I’m really very happy not attaching the computer to my brain at all. I appreciate that it’s a physical artefact that I have some hope of being able to turn off, push out a window, etc – that Amazon isn’t putting advertising material into my subconscious in a way I can’t observe.

                                        The real problem here is that we still cannot trust computers to obey us and only us. There’s also a secondary (or perhaps even, primary) master, which is whomever created the software. Tying back to the article, I doubt Engelbart would approve of a “mind augmentation” that bugged its user with advertisements.

                                        In my mind, free software is the only solution out of this mess, but society seems to be pretty clearly and universally uncaring about any of this at all. Sure, there’s the occasional griping about ads, but by and large people accept it and seek out the free as in beer ad-driven software.

                                        1. 2

                                          Yes, I totally agree with you! This software matter is sadly not the only topic where this applies. We can also stretch this to politics, economics, consumerism and so forth. When people don’t reflect on topics and ignore them, they end up falling into traps, maybe even being fine for years beforehand.

                                          There was a time 1-2 years ago where a big PR-agenda by the advertising agency “convinced” lots of people to argue for ads that they were the lifeblood of many papers and so forth, completely ignoring the issue at hand regarding tracking and other things. I, and many others, are open for microtransactions for these kinds of services. The Ad-based revenue bubble will probably burst in a few years (when everyone sees that the king wears no clothes), and Alphabet knows that (which is why they are so aggressively expanding into so many different fields).

                                          Back to topic: We are just doomed to wait for a big catalytic event to happen.

                                        2. 1

                                          It’s important to note that when Sutherland, Licklider, and Engelbart talked about man-machine symbiosis, they didn’t mean physical connection (as in brain-computer interfaces). (The idea had already been seriously floated – the paper that coined the term ‘cyborg’ was published around the same time as the MOAD, & physical human-machine hybrids had been around for longer – notably in E.V. Odle’s Clockwork Man in the teens.)

                                          Instead, they were talking about what Deluze and Guatari referred to as a ‘dyad’ and what Burroughs called ‘the third mind’: the tendency for facility of communication to increase in certain kinds of close collaboration to the point where two people become effectively a single functioning organism (despite being joined by normal communications mechanisms) more effective than either alone. I think most of us on lobste.rs have felt this way at a REPL on occasion.

                                          1. 1

                                            These analogies are not without challenges, though. For starters, a REPL doesn’t do much of anything by itself – it’s just a tool that I can use, not substantially different from a pocket calculator. I think some of the historic research is interesting, and some of it appears too forced an attempt to project thinking from fields like psychology onto the computer – especially from a time when computers were just not that powerful, so a lot of it is in a fairly future-imaginative tense.

                                            1. 1

                                              It doesn’t take a lot of computing power to create a usable, responsive system that people can develop a connection & personal cant with. I mention the REPL because REPLs are lightweight enough to have been this responsive in the early 70s (if not earlier).

                                              Actual symbiosis does not necessarily involve a direct biological connection, so I would not call it a mere metaphor to consider a REPL symbiotic with its user (or a BCI inherently more symbiotic than a REPL). For instance, the clownfish / anemone symbiosis doesn’t involve bits of anemone in the clownfish & vice versa.

                                              We’ve got a lot of wiggle room to make interfaces better before resorting to wet wiring. (And, current wet wiring tech requires substantial training, for reasons that are unlikely to go away without substantial advances in mapping the peripheral nervous system. Basically, people are too varied in terms of what parts of the brain correspond to even straightforward motor stuff, and it’s a lot easier to have the person remap their brain regions to match the prosthesis than to have the prosthesis identify the current mapping, even though having the person do that remapping means months or years of intense physical therapy.)

                                              1. 1

                                                Sure, my Commodore 64 could have a conversational or at least responsive textual interface. It even had a few GUI environments, though those consumed so much of the available resources that they were unable to do much else beyond very basic word processing or bitmapped painting.

                                                But the C64 couldn’t index large quantities of online information in a way that’s relatively easy to search. Just like the MOAD system was fully unable to perform the video conferencing part of the demo, a feat not realised until decades later.

                                                Lots of people wrote toy programs for the C64, and lots of people have imagined what the future might hold. Others still have actually built the tools we – and millions of others – use every day. The tools could always improve, and often they do, but I think it’s unfortunate to cling to specific unrealised research ideas to the extent that you can’t see the wonder right in front of our eyes.

                                                I remember in the nineties I watched space shuttle launches in a postage stamp sized window via a dialup modem, probably 5fps at best. It was objectively terrible by today’s standards but it was, at the time, marvellous. Now, in 2018, I can hold my phone in the air when a piece of music is playing and it can find me the recording. I can video conference with my parents on the other side of the world as if they were right across the room. I can send real time messages, attach pictures sound and documents, to anywhere in the world instantly. I can read that conversation history on multiple devices at once, and everything is backed up automatically. I can watch thousands of movies on my TV without having to go to Blockbuster.

                                                In short, though it’s true that my phone isn’t a Smalltalk or a LISP machine, I’m not sure that really matters. There are opportunities for composing interfaces certainly, and you find pieces of that in tools that millions use like Excel, or some of the newer Notebook systems. But the fact that specific research ideas haven’t taken off isn’t necessarily a tragedy, or even that surprising. There are so many forces at work in software, beyond a particular aesthetic preference or set of expectations of functionality, that not everyone will be completely happy with everything.

                                                If these truly are things we cannot do without, then one expects they might almost sell themselves – and I wish you well in building that future!

                                                1. 1

                                                  I think it’s unfortunate to cling to specific unrealised research ideas to the extent that you can’t see the wonder right in front of our eyes.

                                                  People keep trying to tell me that I lack sufficient appreciation for the status quo. I’m very suspicious of any system that gets defended from sensible criticism by telling people to be grateful that they have anything at all.

                                                  Just like the MOAD system was fully unable to perform the video conferencing part of the demo, a feat not realised until decades later.

                                                  Should note that this isn’t so accurate – Bell already had a commercial videophone service before the MOAD. (I could look up the exact year, by my memory is that it was launched in the mid-1960s, debuted at a world’s fair, & became available a couple years later. It drove some of the early digitalization of switching equipment. Ultimately, the service was cancelled, because – priced to pay for the upgrade of the whole Bell network to digital exchanges – it was too expensive, and people who did pay for it quickly realized that they didn’t actually want video conferences anyway.)

                                                  If these truly are things we cannot do without

                                                  We clearly can do without them, because we have been. You can do without housing, too, but few people do it by choice. I personally don’t want to do without powerful tools until someone deigns to sell them to me (which is why I write them).

                                                  , then one expects they might almost sell themselves

                                                  I don’t think stuff like this will ever be profitable. That’s a good reason to make it: to make sure it exists, because no corporation will.

                                          2. 1

                                            Believe me, me too! I actually didn’t really say it, but I would think 6 times before even considering such a brain-computer-interface. It would have to fulfill high standards, e.g. being open source and based on a mature codebase. And even then, the question is how well the scientific “model” is. You wouldn’t want to fry your hearing nerve just because there’s a misconception of perception of something.

                                        3. 4

                                          My co-workers and I discuss various computer topics over lunch including research papers. And we’ve realized that most all of it was started in the 50’s, 60’s and 70’s. The ideas are decades old and we’re still doing research?

                                          And then we’re sad and lunch tastes like bitter tears.

                                          1. 5

                                            Just imagine working in a research environment! Bitter tears all day long. :-)

                                            Keep in mind, there’s a long way between a good idea and a practical, useful technology. Many (if not most) promising ideas in CS research have never been properly tried out “in practice”, and that represents a lot of good and interesting work to do. The whole field is very young and sorely lacking in historical perspective.

                                          2. 3

                                            I feel like the source of anguish is in part from thinking of consumer tech (smartphones and tablets) as an evolution of computers. They aren’t. They are a mass market spin off specifically intended for things not related to creativity. People who want to be creative are still going to use actual computers. Apple and others simply realized the fact that the vast majority of people couldn’t care less about being creative (or even self-organized) most of the time. While Stallman and others keep consistently missing this point by insisting that all users of computer should want the freedom of being creative.

                                            1. 1

                                              I have luckily never met a person (of any level of technical capacity) who has no desire to be creative – and I hope I never will.

                                            2. 2

                                              “Engelbart, Nelson, & Kay are part of a particular tradition: trying to use computers as an extension of human cognition…Engelbart was (along with Sutherland & Licklider) interested in intellectual augmentation and symbiosis: the computer was to become an extension of the user’s mind..”

                                              We ran into a problem. Was the computer supposed to be a power tool for the mind, or was the computer supposed to merge with the mind. In other words, do I decided what I want to do and the computer helps me? Or does the computer and I both decide together what to do?

                                              This didn’t appear to be a big problem – at least until Google and others started monetizing everything. And broadband took off. For those folks who wanted the computer and mind to merge, why should we think at all if the computer is going to do it for us? Now we’ve got people doing various things because the computer told them to: visiting restaurants because of Yelp, or using certain coding tools because of something they saw on SE.

                                              One of the reasons that demo still works is that a profound amount of things were left unsaid. There were hundreds of questions that remained unanswered because nobody was smart enough to ask them yet. Looking back, sure, we can connect up the dots and pretend it was all meant to be, but this author has a very important point. Simply because you have a tool in your hand doesn’t mean that the tool is the answer to whatever problem you’re facing.

                                              1. 2

                                                Is it, perhaps, possible that you’re focusing on failed approaches to human/computer symbioses and overlooking successful approaches? Others have already pointed out Excel as one success. Here are a few others:

                                                • Google Search (or similar) on a smart phone
                                                  • There’s a reason using your smart phone during trivia is cheating. You can answer just about any question in a few minutes, without leaving your seat. That’s insane!
                                                • Google Maps (or similar) on a smart phone
                                                  • Navigation is basically a solved problem. Remember those old TV shows that joked about the husband never wanting to stop and ask for directions? Kids growing up in this day and age will not be able to understand why that was ever a problem.
                                                • Mathematica / Jupyter / PyNotebook
                                                  • Seeing a competent Mathematica user work is pretty incredible.
                                                • GUI text editors
                                                  • I find a basic text editor with Markdown highlighting and auto-indent to be the most productive tool for brainstorming and making lists
                                                1. 2

                                                  I’m focusing on ‘failed’ approaches because I can do something about them. There’s no point in focusing on something that’s already ubiquitous: those things are already, essentially, finished, and therefore irrelevant from the perspective of further work. (And, even if you had a way to extend them, their ubiquity means that gatekeepers stand in the way of contributing any meaningful labor.)

                                                  I use all these features (except GUI text editors) all the time, and enjoy them.

                                                  People have this tendency to interpret complaints about a failure to do better as indicating that whatever has been done is worthless. That’s a logical fallacy. Whatever the value of what has been done, if something can be done better, it should be done better.

                                                  1. 1

                                                    Of course we should do things as well as possible. But the market exists for a reason. If something doesn’t actually enrich lives well enough to support a market for that thing, perhaps the worse thing is actually better for people.

                                                    1. 1

                                                      Markets determine what’s profitable for companies. Not everything that is good for people is also profitable for companies. Not everything that is profitable for companies is good for people.

                                                      In particular, supporting widespread non-professional private programming (i.e., helping non-programmers solve their own problems, so they don’t resort to mass-market applications that are a poor fit for task) is something I strongly support (since it means less pain for both the users and the developers), but it also means that the market for applications is gutted as non-programmers homebrew their own hacks.

                                                      1. 1

                                                        Markets require that whatever is good for the company must also either be at a loss, or something someone else is willing to pay for. Government takes our money by force, as it is permitted to do by our social contact, but companies need to earn it from us. If it’s profitable for companies, someone thought it was good for them.

                                                        It would be wonderful to have solutions where non programmers can build their own tooling to help extend their own capabilities. I have yet to see any system outside Excel really manage this.

                                                        1. 1

                                                          Thankfully, the world is not divided into governments and markets. Individuals can do things on their own, without any hope of profit – and this is how a whole lot of software (almost all the really interesting software) gets written.

                                                    2. 1

                                                      Fair enough. Perhaps I read your message as being more negative than it was intended to be. I, too, am hopeful for the continued dividends of further human-computer symbiosis, and would love to contribute if I can.

                                                      Also, as a side note, I would be surprised if you truly do not use GUI text editors. I include vim in this class (but not ed), since it very much has a GUI, even if it is displayed through a terminal.

                                                      1. 1

                                                        Fair enough. I use vim, but I classify it as a console-based or TUI text editor.

                                                  2. 2

                                                    The thesis of this article focuses quite narrowly on a very specific set of GUI related technology. Just looking at the literature today, it’s clear that much of the development in computing is no longer related to that. I believe this makes sense, as there is little technical background required to think of a lot of these ideas (not to discount the creativity and genius required). Nowadays, most research and development in technology is built on top of well developed theories that require a fair amount of training or experience. I’d fathom the deltas there are much larger than micro-optimizations to user interfaces.

                                                    I’m also curious what makes the goals of these folks particularly important. Is it just a dogma thing?

                                                    1. 5

                                                      I’m also curious what makes the goals of these folks particularly important. Is it just a dogma thing?

                                                      I’d personally much rather live in the world Alan Kay is trying to build than the one Steve Jobs built. Double that for Ted Nelson. (As a developer, I already get the experience Engelbart wanted everybody to have, so long as I avoid collaboration: developer tools that haven’t been productized tend to actually be very good, and Engelbart’s ideas about learning curves – that serious people don’t mind putting in some effort to learn to use a serious system – is in line with how many developers think today.)

                                                      However, the main point of the essay is that, by misrepresenting their plans as beta versions of the present day, we deny people an opportunity to imagine alternatives they might prefer. (We also insult them, of course, by pretending that they had so little imagination that the world we live in was the best they could think of.)

                                                    2. 2

                                                      Engelbart, Nelson, & Kay are part of a particular tradition: trying to use computers as an extension of human cognition. Not just memory, but imagination, & other mechanisms that we don’t have names for. They’re pretty unsatisfied by the tendency for progress in this field to go backward — for available software to gradually become worse along the metrics they care about.

                                                      This article exhibits a clear coupling of goals and implementation to the point of delusion. If the goal is for the computer to be an extension of the human cognition, then at least for me this is already the case, even without all this fluff that the article is trying to sell.

                                                      1. 0

                                                        I’m glad that you feel like you have mind-melded with your computer. The rest of us spend much of our time frustrated by our interfaces.

                                                        1. 1

                                                          I spend more time frustrated by the interfaces built for other people.

                                                      2. 1

                                                        This post was most enjoyable, however, a deep part of me thinks it’s too late. Global Warming will require the remaining energy budget we have to tackle it. Another part of me wants to keep trying. Alan Kay said the computer revolution hasn’t happened yet. Global warming and the mass extinction we are in might mean it may never happen. Oh, have you guys heard of flutter? I hear electron has some competition.

                                                        1. 3

                                                          Global Warming will require the remaining energy budget we have to tackle it.

                                                          That’s a bold, unsupportable, and deeply pessimistic and nihilistic claim. We’ve used a tiny fraction of the available energy budget. There are tremendous amounts of potential energy still available in economically viable Uranium and Thorium reserves, and humanity’s energy usage is still dwarfed by solar irradiance. The primary risk of global warming and climate change, in my opinion, is that they will incite human-human conflicts on a global scale, not that they will be too expensive, energy wise, to handle.

                                                          1. 3

                                                            It’s not about pessimism, or nihilism. It’s not even about predictions. It’s about projections. Some projections say we have until 2021, just 2 years until we blow past budget to 1.5C warming. All likely scenarios now require pulling vasts amount of carbon out of the air.

                                                            Should organized human life not be possible, the warming from a cleaner sky will be drastic (read about global dimming). Who will build the nuclear reactors, or even maintain the current ones should that happen?

                                                            1. 0

                                                              That’s a very different claim, and still a very pessimistic one. Human life was possible in an ice age, I see no reason it would be impossible with average temperature 2C higher. It will certainly strain every government and society, but there’s a large distance between strain and extinction.

                                                              1. 2

                                                                I didn’t say anything about human extinction. I was talking about being in the 6th mass extinction. There has been a shocking 60% decline in animals, birds, and fish in just 44 years (1970-2014). The extinction rate is 100 to 1000x faster than normal.

                                                                Soon there will virtually not be any animals left on the planet except the ones we domesticated. I literally live surrounded by trees and a forest in my backyard, and I haven’t seen all but a few birds and squirrels in the last year. The number of bugs is shockingly small (no flying insects, I leave the lights on all night around house).

                                                                Now here is where I bring in my opinion. I believe the IPCC reports are conservative and there is lots of uncertainty with what will happen. It could be better, but it also could be worse. There will be a strain of government, society, and everything else…..including technological development. If it’s worse than predicted, At BEST we will probably enter a new dark ages (who will maintain the education and supply of scientists engineers to fabricate computers, when there will be challenges fabricating bread?).

                                                                I think we should acknowledge the uncertainty. The climate is a dynamic system, which has a tipping point. Once the tipping point happens, the amount of energy to put the system back in the previous state will be a lot greater than it would have been to prevent the tipping point.. There are many guesses of when this will happen, some say it has already, some say in the next couple of years, some say in about 10-20. That’s a broad range of uncertainty that I don’t think anyone here should be comfortable with.