Computers could be good, but they aren't.
That's the gist of it.
I guess I mean Good with a capital G, as in "a force for good in the world", but I also mean good with a lowercase g, as in "not super shitty to use, or think about".
I'm not going to waste a lot of bits talking about how computers are bad. I've done this a lot before, and you probably already agree with me. I'll quickly summarize the high points.
What's wrong with (modern) computing?
- Computers spy on us all the time
- Computers are insecure, while pretending not to to be.
- Computers enable new modes of rent seeking, further exasperated by shitty patents and worse laws
- Computers/the modern internet encourage behaviors which are bad for our mental health as individuals.
- Computers and the modern internet, in concert with modern capitalism have built a world essentially without public spaces.
You know, all that bullshit.
I've spent a lot of time thinking about what the next 30 years in computing might look like, the successes and failures of the last 30 years, and the inflection point at which a computer is Good Enough for most tasks.
I've spent a lot of time thinking about the concept of planned obsolescence as it applies to computing, and what modern computing might look like without the profit motive fucking everything up.
I'm just a dude.
I'm a sysadmin. I spend a lot of time using computers, and specifically I spend a lot of time fixing machines that are failing in some way.
But I'm just some dude who thinks about stuff and imagines futures which are less horrible than present.
I've said that as a way to say: I don't claim to have The Answer, I just have some ideas. I'm going to talk about those ideas.
So how did we get from the gleaming promise of the digital age as imagined in the 70s to the harsh cyberpunk reality of the 20s?
Centralization, rent seeking, planned obsolescence, surveillance, advertising, and copyright.
How do we move forward?
Re-decentralization, a rejection of the profit motive, building for the future/to be repaired, building for privacy, rejecting advertising, and embracing Free software.
Personally, there's another facet to all of this:
I use and maintain computers professionally, and recreationaly.
Sometimes, I want to do something that doesn't feel or look like my day job. Unfortunately, most of my hobbies feel and look a lot like my day job.
To that end, I have some weird old computers that I keep around because they're useful and also because they're Vastly Different than the computers I use at work.
My #zinestation, mac plus, and palm pilots fall in this camp.
I can do about 80% of what I want to use a computer for with my 486 based, non-backlit, black and white HP Omnibook.
Add my newly refurbished and upgraded Palm Lifedrive, and I'm closer to 95%.
Let's run through those tasks:
- Listen to music (The palm is a 4GB CF card with a 2GB SD card, basically.)
- Watch movies (I have to encode them specially for the palm, but the lifedrive makes a great video iPod.)
- Read books (plucker is still pretty great)
- RSS (ditto above)
- Email (via some old DOS software the name of which I'll have to look up, and lots of effort on getting my mail server configured correctly. + an ESP32 based modem. This took some doing and I still don't love how I'm doing it. I'll do a blog post about it eventually.)
- Social (mastodon via brutaldon via lynx via telnet over tor to an onion endpoint I run in my home, not ideal, or via BBS)
- Write (via Windows 3.1 notepad)
- Consult reference material (via the internet or gopher over my esp32 modem with the appropriate DOS software and SSL proxy, or more likely, via a real hacky thing I wrote to mirror a bunch of websites to a local web server.)
- Develop (frankly Via GW-BASIC, although I'd love to start doing real programming again.)
- Games (this is the thing the omnibook is worst at! I consider that a strength most of the time, but I do have a lot of parser based IF games on it.)
There was a time in the recent past when I used a Pentium MMX laptop as my only computer outside of work for weeks at a time.
It could do basically everything I wanted it to do, including some far more impressive games.
It's batteries gave out, finally, but until then it made a decent little computer.
The only real problem I run in to in these setups are the hoops I have to jump through because I'm the only one using them, and because (wireless) networking technology has advanced in ways that are not backwards compatible on the hardware level, while leaving laptops without a clear upgrade path.
No one gets upset that their typewriter can't browse the internet, you know?
But a computer isn't an appliance, it's an everything machine, and as an Everything machine, if it can't do the New Shiny Thing we have to throw it away and get a new one.
That's the mentality I'm trying to break out of.
I want to define a(n extendable!) list of tasks that I feel like will be relevant indefinitely, and build a machine to last 30 years.
Which, finally, brings us back to the ESP32!
See thread: https://retro.social/@ajroach42/105397577137324735
Basically, the ESP32 is a simple microcontroller (that is to say, it's a computer! It's just not a computer the way we usually think about it.)
It's really cheap, like $3 or $4 for a simple board. There are folks making software for it already to treat it like a desktop computer.
It's not completely open or completely standardized or capable of everything I want out of my #PersonalComputer but ...
They get most of the way there on every count, and they have built in wifi and are so very cheap.
It would be entirely possible to base a new paradigm of multi-decade computers on the ESP32, but built in such a way as to be agnostic to the actual hardware (that is to say, you follow the write once run anywhere model of Java, and use the ESP32 as the host of a virtualized environment OR you build for the ESP32, and then emulate the ESP32 on newer hardware in the future)
This is basically the approach that Infocom took in the 80s when they developed text adventure games for every computer on the planet.
They invented a fake computer, compiled all their games for that fake computer, and then wrote emulators for that fake computer for every major machine of the era.
As a result, basically any computer can run an infocom game.
Now, is the ESP32 a good home for a multi-decade computer?
It's a little more limited than I would have picked (I'd have probably stopped in the early multimedia era), but it's also way less power hungry than what I would have picked, and frankly significantly cheaper and easier to understand.
So I'm going to spend the next few months exploring the ESP32 as the basis for a purpose built computer that inherits the legacy of the tinkerers of the microcomputer era.
Principles I plan to adhere to in my ESP32 exploration:
- Offline first, but networked
- Understandable is better than "easy to use"
- don't make assumptions about available hardware
- Don't re-invent the wheel without a good reason
- don't try to build a modern computer
- Decide what this machine should do, make sure it's good at those things.
We've talked a little about hardware. We've talked a little about use cases, but we should probably dig deeper in to that.
The remaining piece of this puzzle is software, which I think is closely tied to, but ultimately separate from, use cases.
I'll talk about that now, a bit, until I fall asleep.
So first things first, it's late and this might be incoherent.
This takes the form of, for example, antiword or pandoc, running on Linux.
Ultimately, there are still these least common multiple kind of standards out in the world, and they're likely to stick around forever (can you imagine a world without plaintext files?), And converters to get back to these platform agnostic file types are likely to stick around too.
But filesystems, transfer protocols, etc? These things change, and often with good reason. Our system will need to keep up.
My solution to this problem so far has been intermediary computers.
One example: Fetch the emails or the RSS feeds on my laptop, convert them, shuttle them over serial to the old machine.
Another: use the older machine as a serial terminal to a more modern box. Do my actual work on the more modern box.
This extends the life of the older machines, and lets me access modern conveniences when I want them, but it doesn't actually provide a model for a computer that will remain relevant.
I dunno what the answer is here, but I suspect it's something like
1 - define a native format for networked data that you're willing to support.
2 - provide several common network interfaces including serial/uart and wifi.
3 - be willing to whack another machine on to the serial port and let it translate a new hardware or software protocol when the existing ones are no longer supported. (Such as what I do now with the omnibook and my ESP32 wifi modem.)
And 4 - be willing to adapt.
The point of this project, as I see it, is to provide a standard set of tools and protocols and file formats that should be relevant and workable for decades.
If 2.4 and 5ghz wifi stop being supported by new radios in ten years, or WPA2 is replaced with WPA3 or whatever, we write new firmware, install a new radio, or migrate all our data (stored in open formats), and software (open source and largely platform agnostic), somewhere else.
Last bit for tonight: peripherals.
PS/2 is fine. USB2PS2 adapters are cheap and easy and can be made by hand. You could even wire up a couple of USB ports that just concert straight to PS/2.
I don't love the idea of trying to support multipurpose USB 1 or 2, much less USB 3 or C, so I won't.
Printers are good and important. They're also pretty complicated. Serial printers exist, and lots of printers that don't speak serial do at least use postscript, so I'm confident we'll sort printing.
I guess one other thing to talk about is operating systems.
The thing is, I don't care.
As long as the OS itself isn't a hindrance to what I want, I don't care what it is.
Several folks are running CP/M on this hardware. I dunno why you'd want to do that/why you'd standardize around that, but I'm a DR fan and I like CP/M so let's fuckin go.
I said yesterday "No one gets upset when their typewriter can't connect to the internet" or something like that.
It was off the cuff. I hadn't thought about it much.
I'm thinking about it now.
No one gets upset that their typewriter can't connect to the internet because that typewriter could never connect to the internet.
That is a central component to this idea.
It's frustrating when a 10 year old computer can't get on facebook or watch 480p on youtube anymore, even thought it could five years ago.
The computer hasn't changed.
Facebook and youtube have become more complicated. They didn't need to, but they could get more complicated because the average computer got faster, and the average internet connection got faster over that time span.
So a computer that could do X lost it's ability to do X as a result of a third party.
So a portion of the multi-decade computer platform would need to be multi-decade support from network services.
When I was a web developer, we used to call this idea graceful degradation, or progressive enhancement.
The idea is: don't assume JS will be there, but feel free to use it if it is. Specifically, this means Don't Break if CSS or JS or images are missing.
We abandoned that idea in web development, and frankly most web developers never embraced it to begin with.
But if we can embrace decentralization, and specifically embrace a more peer-to-peer relationships, and open standards for communication, we can ensure that every multi-decade computer can communicate with every other multi-decade computer.
The multi-decade web?
The peer-to-peer web.
A web independent of the internet.
@ajroach42 Thinking about virtual computer running on all kinds of hardware, and the probable reality of folks wanting to play games, Pico-8 - https://www.lexaloffle.com/pico-8.php - is, I think, interesting. Not Open or Free software, but an example of low power computation providing excellent experiences. Dev environment built in. Really enjoying this thread. Thanks for sharing.
@jos tic-80 and chip-8 live in similar spaces, but are open. tic-80 now, in response to pico-8. Chip-8 in the before times.
The ESP32 can run various other emulators, but also all of this kind of nicely dovetails against a thing I'll talk about later today with reference to how I used to interface with computers.
Thanks for letting us know about tic80, works great on my pink 2DS, playing Cauliflower Power right now♥
@jos @ajroach42 When there’s a lot of lua calls inside a single frame it can require a little more juice than expected. Sometimes what can look simple can be expensive under the hood
@Sandra @ajroach42 Sure, something to keep in mind. :) I wonder if there are other emulators that could be run in that hardware and be performant, like a DS? Although then you would also need the tool chain to run in it too...
@jos @ajroach42 Yes, DS was actually where peeps were running into the limits: https://github.com/jtothebell/fake-08
@Sandra @ajroach42 Oh that is different from what i was thinking, but also cool -- i was thinking about running a DS emulator on this CPU Andrew is talking about, not running Pico8/Tic80 on a DS itself -- but that *would* be cool!
This is a valuable callout, and a thing that is frequently overlooked in these projects.
I'm not an expert in internationalization, and I'm building this system for myself first, but I'm not naive or selfish enough to ignore these issues entirely.
When we're dealing with text, internationalization means UTF-8 support. When we're in the UI, it means language packs. Those are modern inventions that should be simple to carry over, even if I can't do translation work myself.
@errantlibrarian Accessibility is another world. I don't know what this world is like right now.
The best I can do is find whatever the existing best practices are, and attempt to meet those. Screenreader support seems like the most obvious and easy to implement, but I'm sure there are things I don't know about.
@ajroach42 Yep -- I like this idea, and this effort you're going for.
Networking seems to be the problem; the computers themselves, like you say, still do the same thing they were designed to do.
If a business was keeping track of sales, money in/money out with a computer from 25 years ago, they could technically do the same thing today.
You'd just need an extra "human interface" to enter the data from one system to another, replacing a networking protocol. :p
@mdm @ajroach42 There's also NNCP these days, which is designed to be used over sneakernet as well as over networks. https://www.nncpgo.org/
@ajroach42 This sounds somewhat in line with the DAT protocol. https://docs.dat.foundation/docs/intro
@ajroach42 This thread stirs up so many "yes!" thoughts in me, where to start?
I make a habit of periodically working from a #VT510. A realy VT510, says "digital" on the front and everything. It is connected to a Raspberry Pi on a cart, and from there I ssh to my "real" workstation (though the newer Pi4s are getting to be nearly capable enough of that on their own.) One of the biggest hurdles I face is UTF-8, but it is fantastic focus mode and a bit of a stop back in time.
@ajroach42 One problem with #UUCP is its security model is, shall we say, from an earlier era. Neither strong cryptography nor strong authentication are built in, and both are a must these days. However, #NNCP is a modern replacement that might be good: http://www.nncpgo.org/index.html
Also I have been re-reading some of @joeyh's blog posts about offgrid living. Can't help but love modern always-on Internet, also can't help but think "I'll go online when the sun says I will" has a deeper purpose too.
@ajroach42 Great ideas. Thanks for sharing, as always.
You mention using other computers as peripherals to provide input to the "brain" ESP32, but since it is so cheap and powerful enough, why not use other ESP32s for this task?
One could group protocols and APIs according to some taxonomy and, theoretically, provide a purpose-built OS who's purpose is to translate one of those groups into the new common 100-year computer format for the "brain" ESP32.
Like a local ESP32 cluster.
@groovestomp certainly, especially today.
I was imaging a time when something that was required of a computer in order to remain moderately relevant outstripped the ability of the esp32, but that's a long road.
@ajroach42 #ProgressiveEnhancement is better than #GracefulDegradation since it provides more #Accessability.
@ajroach42 a depressingly large number of people think that computers (mobile devices included) "wear out" with age and use due to this phenomenon. The fact is that in the past 20 years or so that the reason the same computer is slower at doing the same tasks now compared to then is almost entirely due to surveillance and targeted marketing practices.
Even if you're not mining bitcoin literally most of the energy expended by most computers is driven by this BS.
@msh @ajroach42 Even when that isn't the reason, fancier and fancier GUIs don't help, doubly so when they are done through layers of web browers and whatnot.
And even if you avoid that, you've got the issue if your computer doing a ton of stuff in background for security reasons instead of everything being coded for speed as the main and often only consideration.
@msh @ajroach42 And that's why I have to love iOS devices. Don't get slower with age. Just gifted an iPhone 6 (with a small crack in the screen) to an older relative for free, to replace the buggy, pile of crap android device they were using.
Their Android phone was so buggy and slow they could barely send text messages -- the iPhone 6 is fast and quick as the day it was made. They're apparently loving it.
@mdm @ajroach42 Hmmm...that Apple devices may be the best alternative might be an even more depressing thought
@mdm @msh @ajroach42 Interesting, I have an iPhone 6s with a broken screen that I thought about switching to from an Android device. I'm tempted to replace the screen myself and see if it's usable in 2021.
@poindexter @msh @ajroach42 An iPhone 6S? It definitely is. It's even still on Apple's "supported" listed and is getting regular iOS updates. (That's six years of updates, so far.)
I can't think of an Android phone that got more than 2. Maybe 3, at most.
@mdm @poindexter @ajroach42 Apple is closest to being acceptable for software support than any android vendor has ever been. They still get failing grades for actively making their hardware less repairable and more closed than could ever be justified.
Unless and until a vendor addresses both I am done with both android and iOS and have made my #pinephone my daily driver. Perhaps if #fairphone becomes more accessible to me I'll try android again.
Google recently pushed further with 5 years of monthly updates for Pixel 6 & 6pro (including all phone component firmware - which FairPhone can only do for a couple of years on the FP4)
Hopefully other #android devices will follow (Samsung went from 3 to 4 years of updates on top end devices recently)
The Pixel 6 & 6 pro are powerful & expensive. Will be interesting to see if Pixel 6a arrives & pricing
Use my #GrapheneOS Pixel 3XL as https://hub.libranet.de/wiki/graphene-os/wiki/GrapheneOS-workstation
@mdm @poindexter @ajroach42
@dazinism @msh @poindexter @ajroach42 I don't trust any of these companies to actually follow through with these promises -- I make my opinions of them based upon their actual past behavior, which, for updates, hasn't been great.
I don't believe Apple is supporting phones for longer than everyone else out of the goodness of their hearts (it's possibly just because their hardware is similar in between models), but the fact remains that nobody else even comes close.
For years Google have consistently delivered on the timelines they guaranteed for device updates.
Generally they do a month or 2 longer than guaranteed
In one case (a tablet a few years back) they did 6 months extra
Theres numerous options for keeping devices going longer. You dont get component firmware updates (many laptops & PCs dont get more than 2 years of these) after Google drop support, kernel & operaring system can be.
My favourite for older … 1/2
@mdm @dazinism @msh @poindexter @ajroach42 The fact still remains that iOS is closed source while the Android end-user is free to be much more involved with what the device is actually doing.
@msh @ajroach42 @solderpunk I recently left a couple comments on a hacker news thread about exactly this. We have mind-bogglingly powerful CPUs that are being used to interpret 5mb of JS to send a message or read a chunk of text (news article, recipe, whatever). Such a total waste.
@amatecha @msh @ajroach42 @solderpunk Time for the Console Text Challenge. 30 days with Mutt, Lynx and IRC. I run that in a DOSBOX window these days.
@ajroach42 I think you've not mentioned the one motivation behind all that JS and images that companies like that have: tracking users. Most of the JS that's loaded on web pages is for tracking people. That also goes for images that get loaded but which users don't see. JS especially has enabled this sort of digital surveillance.
A social network for the 19A0s.
In order for a decade spanning computer to be remotely useful, it needs software that speaks common protocols and file formats.
These protocols and file formats should be open standards, well defined, and well documented.
In my current use cases, I mostly use plaintext files, csv, and HTML. When I need to use a more specialized software, I convert between an old file type and a new file type using a piece of open source software on a more modern system.