453 karma · joined March 25, 2013
Its fair enough to say that lisp machines had this or that hardware limitation, or that they weren't really compatible with market needs, but to criticize 'lisp machine romantics' like this article does is to fail to understand what really motivates that romanticism. Maybe you have to be a romantic to really get it. Romanticism is abstract, its about chasing feelings and inspirations that you don't really understand yet. Its about unrealized promises more than its about the actual concrete thing that inspires them.
(I'm also an Amiga romantic, and I think what inspires me about that machine is equally abstract and equally points to a human attitude towards making and using software that seems sadly in decline today)
I got my start with Blitz on the Amiga, after it was featured in Amiga Format magazine. Back then it was expensive learning to code, but with Blitz, which cost about £60, you could write hardware hitting games, native GUI apps and terminal programs out of the box. There was nothing stuffy about it either, from the docs and Blitz User Magazines, you knew you were dealing with some fun loving kiwi guys who liked their games and rock music.
And unlike a lot of high-level languages back then, (which were a bit slow) you could, if you had the right design, create something in Blitz that stood alongside mainstream video game releases. Worms and Super Skidmarks were popular commercial Blitz games.
I owe Mark a lot. I did not have a background favourable to becoming a programmer, but Blitz helped make that possible.
I gave up in the end. But I will have to sort it out before I can release the Mac version of my current project.
However I didn't get a PC until 1996 as they were so expensive. I grew up in rural working class England, and there were a whole bunch of us kids who got into computers and programming thanks to cheap home computers. Suddenly we couldn't afford to participate anymore, it was a really hard time to be a nerd.
Accessibility, and ergonomic access to the power of the machine definitely has a lot to do with it. Blitz Basic is a good example. With Blitz on the Amiga you could write hardware hitting games, native GUI apps and command line tools out of the box, with no dependencies and none of the tedious configuration and administrative work that now accompanies supposedly high-level languages today.
You'd think that in 2024 our high-level language environments would be even more ergonomic, that you could open a window, play a sound or draw something in one line of code, out of the box. But we've let that fall by the wayside. It frustrates me every day when I think back to the future I imagined as an Amiga user.
I really hope that the Amiga's accessibility and immersiveness is something we can revive in some way. Our systems are now very complex, but I don't believe that should preclude such complexity being within a humane, ergonomic framework that can be navigated and known.
Why do I still have a clunky character-mode terminal instead of a Listener that can display rich text, images, mousable forms? Just think what we'd have today if we'd worked on that paradigm for 30 years instead of fetishizing the limitations of 70s minicomputers.
Why is it that when I type a command into said terminal and forget a parameter, I have to delete it, or open another window to type 'man', whereas on Genera I can hit <help> and view (rich, hypertext) documentation for a specific parameter, inline, while still typing in the command? That little feature was a revelation.
Genera's fluid, ergonomic developer experience is something we are turning away from more and more these days. Programming is increasingly surrounded by the most tedious bureaucratic and administrative work. The hoops I have to jump through before I can start creating something in a programming language are only increasing. If people had paid attention to Genera and to Lisp machines it wouldn't be like this.
And I've only mentioned surface aspects of the user experience. I haven't talked about being able to debug anything, or the idea that what look like applications are actually "substrates" that I can potentially use as APIs for my own work. We haven't scratched the surface yet.
Back then, it wasn't so much about limitation, though size-coding was always a thing. It was about seeing something new and cool that hadn't been done before. Pushing things further artistically and technically at the same time.
The Amiga was one of the most powerful machines available to the home market so programming it didn't feel like working under constraint, it felt like pushing the envelope of what was possible. Nobody had anything to compare it to, except maybe SGI workstations, which you'd only see on TV shows about movie special effects.
At that time demo programmers had parity with game developers and were sometimes the same people. You generally saw higher quality and more innovative effects in a demo than you did in even the biggest video games. And there was no video playback on computers, so all graphical effects you saw had some element of demo-scene adjacency, which made the whole thing feel unified, progressive and relevant.
As time went on and technology changed, it became less feasible for lone bedroom coders and small groups of Scandinavian teens to reach that "edge", and keep pushing the boundaries with the same mindset as before, so the emphasis of the artform seems to have changed towards constraint, and towards working with retro machines as historical artefacts.
The scene has had to reinvent itself a few times. I remember reading articles in HUGI diskmag 20-odd years ago discussing how demos had changed from being about hardware hacking, and getting graphics chips to do unusual things, to becoming more of an "algorithmic trip" thanks to the new pc graphics cards that were coming out.
Nobody else can access my experience. Nobody can move my arm from the inside like I can, nobody can see through my eyes, read my memories or know how it feels to type this right now, sitting on my bed with my cat beside me. My experience is inaccessible to others unless I communicate it to them, with great inaccuracy and crudeness through some system of symbols.
To me, this existential situation seems much more of a foundation for the individual self than linguistics, capitalism, or whatever Edward Bernays did 70 odd years ago.
Personally, I have these kinds of dreams about other people. I usually have a very particular type of dream, or series of dreams when somebody is going to die, or has died. It doesn't comfort me as much as it should. Death is still death.
It's like, "The universe is arbitrary and silent most of the time, but when we take someone from you, we want you to know that we really mean it."
I often write short programs interactively to manipulate the text I am working on, and have a whole bunch of Elisp code for common things that come up at work. For example, transforming a pasted ad-hoc spreadsheet column into sql insert statements (because nobody wants to pay to add that functionality to the software, and they email me instead). I used to have a bunch of code for generating Java boilerplate, and even entire classes but the situation has improved in recent years...
Sure I could write scripts or conventional programs to do these jobs, I just prefer the interactivity and fluidity of Lisp environments. Also, being an Emacs user means I can write Lisp at work and get away with it.
Having said all that, I tend to primarily use a dedicated IDE, with a general purpose text editor in the background. I will use Emacs alone when I am writing plain text, Common Lisp, or simple stuff that doesn't require a load of configuration or a complex toolchain. I want the IDE to take care of that for me.
It's almost as if the football is merely a vehicle for a kind of unspoken, shared mindset that is never articulated, but always keenly enforced. My whole life I've never felt like I had a way in with the football fans I know.
Thanks for helping me understand the mindset better.
It's like we're going from 'bicycles for the mind' to 'mass transit for the mind', where more people than ever are going places, but the bus doesn't go exactly where you want at the time you want to go there, the seats aren't adjustable, the other passengers are sometimes annoying or even dangerous, and nothing is under your control or at your convenience.
I'm also beginning to see that those of us who were lucky enough to experience the individual empowerment granted by the original vision of personal computing must work to keep it going, else we end up with the kind of world that personal computing was reacting against.
Good luck with your project.
But unlike the information kiosk-esque devices of today, my Amiga let me navigate its layers of abstraction as I saw fit. These layers represented another dimension of usability. They were meant to be used and navigated.
Today we commonly think of a new layer of abstraction as if it "saves us" from the scary stuff underneath. We pave over what's underneath and pretend we are still standing on the ground. (Web interfaces are a good example. If I want to make a custom web widget I have to make it using form elements. If I am making a new widget in a desktop GUI, I make it using the same drawing and event primitives that the built-in widgets use. My new widget then sits at the same level of abstraction as the built-in widgets, and the overall system is preserved.)
Even modern desktops suck in this regard. Navigating the layers of abstraction is like being an archaeologist uncovering scenes of historical catastrophe in the folded and shattered strata of our systems.
Not to mention that if you wanted to use floating point arithmetic, you had to do it in software via a library, or use fixed point routines. Floating point units were expensive hardware add ons that were eventually integrated with the cpu.
It is to the credit of the gui toolkits on those machines that they seemed so fast, until you tried to do serious computation. Then you became fully aware that you only had a 7mhz cpu!
The job you do says nothing essential about who you are or what you are capable of. It is often purely circumstantial.
I got really confused when people called Spelunky a roguelike. If my friend called on the phone and asked me what Spelunky was like, I'd say "A Rick Dangerous style platformer with procedurally generated levels" - and he'd have a pretty good idea of what I meant. If I said "It's a roguelike" he'd probably think I was talking about Dungeon Crawl Stone Soup, or ADOM or something.
I remember games that had a note on the back of the box asking for programmers to send their work to the publisher's address for consideration. Magazines advertised commercial software obviously sold by one guy out of his house, and featured interviews with programmers who were only a few years older than me. If you owned a home computer and could program it, you imagined you could access this growing and exciting world, and maybe make some money.
From oldest to most recent:
https://www.gog.com/game/capitalism_plus
The only circumstances where I would consider supporting streaming would be if it was continuous, and people could move between streams at any point in their education.
Putting all emphasis on a single test, taken on a single day at age 11 is like something out of the hunger games. I still recall breaking down in tears when my headmaster called out "Time's up!" at the end of my 11 plus. I knew I hadn't done very well.
Now I am a professional programmer (the only non-graduate in the company), shipped video games on my own, and have had writing published, so obviously the education system's estimate of my abilities was far from accurate.
As far as I know, there is no other editor with this capability. Sure, they all let you write "plug-ins" but none of them let you do your work by writing code interactively, alongside normal editing commands and GUI operations. As a programmer, this is how I want to do everything with my computer.
I don't have many customizations (I have something to move lines with the alt-key like Eclipse, and I swap parens and square bracket keys so it's faster to write Lisp) and I don't even know many keyboard shortcuts, but I write bits of Elisp all the time to perform large scale text manipulations, generate Java and html boilerplate at work etc. Having everything happen inside my editor, being able to use an editable buffer as an ad-hoc input source to a program just makes everything more fluid and interactive than doing the same thing with scripting languages on the command line.
It kind of baffles me that the Emacs people don't push this angle very much. There's hardly anything about it on the website. You'd think Emacs was just another editor with hundreds of keyboard shortcuts and a strange gui.