Raspberry Pi 400 Setup

I got my RasPi400 after weeks of delay. WEEKS! What is this, 1980? (I wish)

Keyboard is almost precisely the size & layout of the Apple Magic Keyboard, which is fine with me. The key travel's bad, like the lawsuit butterfly keyboard. I'm moderately unpleased with the keyboard touch, but it's definitely usable. I switch over here to my Magic Keyboard, and it's night and day in quality. Mouse is nice enough; it's not a hi-DPI gaming mouse, but it's a good workstation mouse. Aesthetics are fine, I'd prefer black to white, but the raspberry red highlights are pleasing.

It is so nice to have a really usable little computer in a keyboard again. Literally the best thing since the Atari 800 (and that cost $899 in 1980, $2,869.53 in 2021's inflated currency; this is 28x cheaper!).

I've grown accustomed to Raspberry Pi OS (née raspbian). It's still a lame linux, but they've mostly got pulseaudio working(!) after 20 years of it being not functional, wifi mostly stays up, the desktop environment isn't awful. It's no Mac OS X Tiger, but nothing is anymore. There's less complaining from me using it, than hours of playing sysadmin would cause.

Not RasPi's problem, but I got a new, overly large portable LCD for use with this, FANGOR 15.6"; it's basically impossible to find any LCD >7" but <15" which has a decent rez (1920x1080) and color reproduction; the random-Chinese-fake-company plastic 10" on my RasPi4 is just awful, the worst screen I've ever used. RasPi4 is now on my bookshelf, waiting to be moved into a closet where it will live forever as a headless server that I don't have to hear the fan whine.

Checklist

  • "Recommended software"
    • Keep: Geany, Mathematica, WolframAlpha, VNC Viewer
    • Currently errors when I try to remove LibreOffice, which is bullshit!
    • I don't use Claws Mail, I use webmail on the pi. I should install mutt or alpine. But if you like graphical mail, leave it.
    • Minecraft Pi is ridiculous, tiny world, creative mode only, tiny window you can't resize. Don't bother.
    • Remove everything else.
  • Remove the unremovable crap and like half an SD card of dependencies!
    % sudo apt-get purge "libreoffice*"
    % sudo apt-get purge "scratch*"
    % sudo apt-get clean
    % sudo apt-get autoremove
    
  • Add/Remove Software: zsh, gauche, vim. Put zsh in the correct place:
    % cd /bin
    % sudo ln -s /usr/bin/zsh
    % chsh /bin/zsh
    
  • Fix mouse scroll direction!
    % sudo vi /usr/share/X11/xorg.conf.d
    
    Section "InputClass"
        Identifier "libinput pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
        # add this:
        Option "NaturalScrolling" "true"
    EndSection
    
  • Fix capslock to be ctrl:
    % sudo vi /etc/default/keyboard
    XKBOPTIONS="ctrl:swapcaps"
    

    Or ctrl:nocaps if you don't want any capslock, but I find it somewhat useful.

  • Create local user, not pi:

    % sudo adduser mdh
    % sudo usermod -aG sudo mdh
    
  • login as mdh
    % chsh /bin/zsh
    % mkdir bin
    % mkdir tmp
    
  • vi .profile:
    export EDITOR=vim
    export TMP="$HOME/tmp"
    export LESS="-C -i -M -g -e -y4"
    export PATH="$HOME/bin:$PATH"
    
  • vi .zshrc:
    umask 022
    
    unsetopt NOMATCH
    setopt APPEND_HISTORY
    setopt COMBINING_CHARS
    setopt EXTENDED_HISTORY
    setopt HIST_IGNORE_DUPS
    setopt HIST_REDUCE_BLANKS
    setopt INC_APPEND_HISTORY
    setopt INTERACTIVE_COMMENTS
    setopt NO_BANG_HIST
    setopt PROMPT_SUBST
    
    bindkey -e
    
    export HISTFILE=~/.zhistory
    export HISTSIZE=10000
    export SAVEHIST=$HISTSIZE
    
    autoload -U zmv
    autoload -U colors && colors
    export PS1="%{$fg[red]%}%n@%m:%~%#%{$reset_color%} "
    
    zmodload zsh/mathfunc
    zmodload zsh/regex
    
    function mcd() {
        mkdir -p "$1"
        cd "$1"
    }
    
    function cdcd() {
        while [ $# -gt 0 ]; do
            cd "$1"
            shift
        done
    }
    
    function hd() {
        hexdump -C "$1"|less
    }
    
    alias ..='cdcd ..'
    alias ...='cdcd ../..'
    alias ....='cdcd ../../..'
    alias .....='cdcd ../../../..'
    alias c='clear'
    alias grep='egrep'
    alias l='ls -FsCk'
    alias la='ls -FsCka'
    alias ll='ls -al'
    alias md='mkdir'
    alias rd='rmdir'
    alias sd='screen -d -r'
    alias v='vim'
    alias x='exit'
    
  • Reboot, should be nice now.

Outstanding Issues

  • No multimedia keys
  • xscreensaver auto-locking; I have a hacky manual way but I don't like it.
  • Hook into (see fediverse)

Raspbian from the Keyboard

Doing some maintenance and setup on my RasPi4, I struggled to find keyboard shortcuts. Where I did find them online, they were slightly obsolete or just not correct for my keyboard.

Some of these are specific to my Rii keyboard/trackpad combo, which has a Fn key and F-keys are "under" the media keys and arrows. A normal keyboard doesn't need to type Fn.

Key Effect
Ctrl-Alt-Fn-Del Shutdown menu
Ctrl-Esc System menu
Alt-Space Window menu
Alt-Fn-F2 Run Program dialog
Alt-Fn-F11 Fullscreen window
Alt-Tab Cycle windows
Ctrl-Q Quit most programs
Alt-Fn-F4 Kill any program
Ctrl-Alt-Arrow Left/Right packs window to side, Up fullscreen, Down not-fullscreen.
Ctrl-Alt-Fn-F1-6 Virtual Console 1-6
Ctrl-Alt-Fn-F7 GUI

I love Ctrl-Alt-Arrow keys now that I know them. It's not quite Ratpoison or other anti-mouse window managers, but it's so handy on a small screen.

If you use virtual consoles, I cannot recommend highly enough learning to use screen, so you only need to remember that one of them is open, and can restore that session in any terminal later.

I still don't know what the Chromium program menu key is, it won't tell me and the docs are useless. I loathe that every Linux program chooses a different place to put menus. It shouldn't be allowed.

Useful Shell Commands

  • lxterminal: Standard Terminal
  • omxplayer: Audio/Video player
  • scrot: Screenshot, dumps into ~ in format Y-M-D-HMS_REZ_scrot.png (which is terrible, but whatever, man). I can't generate its printscreen keycode, supposedly I can edit openbox config to add a keycode for it. Later. I can always run scrot from the Run Program dialog, or sleep 10; scrot from lxterminal and switch windows.
  • gpicview: Image viewer
  • mousepad: Simple GUI text editor. Has line numbers, paren matching, and different themes, so if you don't want to use GVim or Geany, or nano or vim from Terminal, this is nice and starts nigh-instantly.
  • leafpad: Shitty Gtk text editor. You should hit Ctrl-Esc, Preferences, Main Menu Editor, Accessories, Text Editor, Properties. If it says leafpad, change that to mousepad.

I don't have Dropbox on it, and that'd be awkward anyway, so I'm still pondering how to easily get files off it. sftp or scp works, but I'd rather have a general-purpose, auto-syncing share folder.

RasPi 400: Adorable New Keyboard Computer

This is very nice, at least in principle.

Classic home computers – BBC Micros, ZX Spectrums, Commodore Amigas, and the rest – integrated the motherboard directly into the keyboard.
No separate system unit and case; no keyboard cable. Just a computer, a power supply, a monitor cable, and (sometimes) a mouse.

Hm, the naming is obviously after the Atari 400 (so 800 will be the 8GB model?), but they don't mention Atari. Well, the criminals now doing business as "Atari SA" aren't people you want to associate with. And these are English, who couldn't afford nice computers back then.

It's not really $70, it's $100 plus a monitor, because the cabling is unusual, you should not get the no-cables computer-only box. When I got my RasPi4 I had to email them to get my micro-HDMI cables (which they did supply), and the cheapo monitor is still terrible but I haven't found a good cheap replacement. The RasPi400 also doesn't have a power switch; the CanaKit set at least gave me an inline power clicker.

Having the keyboard & computer in one gets you much closer to a nice clean cyberdeck than the current maze of wires; there's no battery pack, but in most cases what you want is a small computer in your satchel you can set down, plug in, and work. I'm dubious of using a mouse with this in most space-constrained areas (machine rooms, or cafés—in the distant future when we can go back to cafés), but trackpads and trackballs are expensive, too.

RasPi4 is critically heat-constrained, the fan runs all the time on mine or it dies. El Regerino does a teardown and review, and the giant heat sink plate seems to solve the problem. I could probably justify getting this just to have silence! Or a fedi-pal has suggested the Argon One heat-sink case, which is a much cheaper fix.

Software's still an issue. Raspbian is a relentlessly mediocre Linux variant; I said earlier I'd switch it to BSD, but that hasn't happened yet. I should update to the newer "Raspberry Pi OS" and see if it's better. … Later: Not really. You can set some better scaling options now so it's not unreadable. WOO. (I shouldn't mock, scalable UI is really fucking hard, and they've got at least most of the stock software configured for it; notably Chromium yes, but not Firefox).

Dev tools are not great on RasPiOS. Ludicrously, they suggest Python, the slowest modern language on the slowest modern hardware. Their free "Create GUIs with Python" book uses a fat layer on top of Tkinter, which is awesome for portability, totally awful for going through now 3 layers to reach hardware. No. Almost anything will be better on it. As I noted, Gauche runs, it's fine for porting small tools, and has industrial-strength (and industrial-ugly) GTK.

A much better IDE will be sudo apt-get install vim-gtk3 (gvim runs faster than vim in lxterm, though it pulls in a preposterous set of dependencies)

Just as a sanity test ("maybe a 4GB, 1.5GHz, heat-constrained computer is OK for Python!"), I wrote a tiny 10 PRINT maze program in both. Gauche fills the terminal instantly; I can see the lines being drawn by Python, and it's even slower in any IDE. That's just one random number per char, imagine doing real work!

All their programming books and the new Beginner's Guide are up for free as PDF on their MagPi books page, or now in-OS from Raspberry menu, Help, Bookshelf. Looking thru the guide, it covers:

  • Hardware tour so you can identify ports
  • Software setup
  • Programming in Scratch for kids. As I was raised on BASIC and assembly, I roll my eyes at programming by drag-and-drop instead of interactive text editing, but Scratch isn't awful, just cutesy, bulky (a 10-statement program will fill a page of the book) and very slow.
  • Programming in Python. Thonny IDE looks OK, for what it is, with integrated REPL, tabbed editing, and debugger. But IDLE does as well; both use Tkinter, and are non-fun slow on the little device.
  • A starter chapter on using the GPIO, doing wiring, digital circuits, and Scratch to blink an LED. Then controlling the Sense Hat, which is maybe the worst peripheral I've ever seen. There's plenty of other small-screen interfaces or sensor devices that'd be better, surely.
  • Appendices on how to install software, and finally an extremely inadequate tutorial on using the terminal.

For $100, it's a cute little portable computer, but the way they suggest using it will make it seem like a 1K RAM ZX-80, not the reasonably fast secondary machine (or kid's first Scheme terminal) it can be if you're not working under multiple layers of mud.

Raspberry Pi 4 Setup

In my long-running cyberdeck-building saga, I've tried a few variations. Now trying the new RasPi4-4GB from CanaKit, Rii K12 keyboard, and a very cheap terrible Elecrow 10.1" monitor. When I first got the shipment, the MicroHDMI-HDMI cable was missing, but CanaKit quickly shipped me two, in case I want to run two monitors on my very tiny computer. And then when I got everything hooked up… nothing happened. Turns out, the recommended format tool formats SD cards in ExFat, and RasPi only boots from FAT32. OS X's "new" Disk Utility is awful but did let me pick the right option, copied NOOBS, and was able to boot Raspbian! Yay!

Protip with the Rii keyboard: Little radio adapter is hidden in one of the feet. Took me a bit to figure out why it wouldn't pair. It's a weird layout, keys are a little mushier than I like (I like either classic buckling spring IBM or Northgate keys, or the thin super-crisp "Apple Magic Keyboard" keys), but it's attractive, great for the size, and the trackpad works better than I expected as a real mouse; I do have to hit the left-click keyboard button sometimes to wake it up. I may or may not stick with this forever.

I won't be staying in Raspbian, I hate Linux more than anything, but I don't want to fight with setting up BSD on a new device just yet. What I'd love is if Haiku worked on it, but BSD is probably a saner choice.

Uninstalled all the stupid stuff that's preloaded. LibreOffice can suck it, 10 different "simple IDEs" can fuck off. Mathematica and Wolfram Alpha can stay. "vi" is actually Vim, but "vim" is not installed; anyway I won't be working full-time in Vim. Did an adduser, installed zsh and chsh to zsh; fucking Lintwats still use bash after all the security holes! After some advice from Mastodon, Geany seems tolerable as a GUI editor, and it's cross-platform, good option.

There's a Chez Scheme package, but it didn't install anything and apparently is long out of date. Chicken only has the compiler, not a REPL. But Gauche installs, the "gosh" REPL runs fine, and seems to have working GL & GTK+ libraries, which may be a reasonable way to make some GUI tools for it.

Chromium is the standard browser, which whatever man, but it keeps bugging me to sign in, and I will never do that. It plays Youtubes OK, which is likely to be 75% of its runtime. I'm kind of impressed the sound works and I won't touch anything about that except volume because Linux + sound = 9th level of Hell.

I loathe the very simplistic Windows-like wm it starts with, haven't seen any "setting" to change that, probably have to go fight config files and Raspbian won't be here that long.

Now I need to finish the keyboard box, so I can make this portable, but as just a little desktop computer it's pretty sweet, and my setup cost me $220 total (plus some earlier experiments).

The Machine Stops

The problem with the Internet… and here I'm referring to (sweeps hand across everything in view) all of this, but to take just current events Google blocking ad-blockers in Chrome, Google downtime locking people out of their Nest thermostats and "Home"-controlled security systems, horrible prisons of the mind like Twitter and Facebook, and the cacophony of Fediverse drama over Eugen adding features (better features are already in Pleroma and glitch-soc Fediverse servers), Gab forking Mastodon, client devs making unilateral decisions to block domains despite helpless users complaining, or anyone having "free speech" (which Eugen in particular is opposed to; I strongly advise against using mastodon.social, find another instance). These are just a point-in-time examples, it's been going on for decades (oh, USENET, how we don't miss your flamewars) and will only end with us.

… is people using software they didn't write themselves. No understanding, education, or discipline required. Just install something and it works! It's a product, not a skill! But they don't know how, or why, or why they should not.

"It didn't take any discipline to acquire", in the words of Ian Malcolm/Michael Crichton.

Until the software they rely on shuts down, literally like E.M. Forster's "The Machine Stops", and then weak unskilled mole-people crawl out of the wreckage of machines they never learned to understand, make, or repair, and then die.

My solution is drastic but logically unavoidable: No more software installs. As a child, you get a bare machine with nothing but a machine-language monitor. You learn ML first. You type in a language compiler or interpreter. You build up your own tools. We return to type-in program listings like Compute!, but no binary blobs, it must all be readable, comprehensible source, with design and implementation documentation.

If you want to share software, you need to build up your toolchain to that point yourself. Hopefully by then you've learned to read all patches you install.

Should this be extended to all technology? Information technology has the unique ability to coerce how and what you think; an automobile or an antibiotic does not. There's an argument (in "The Notebooks of Lazarus Long", for instance) that a citizen should be able to make all their own things, "specialization is for insects". But insects are the most successful clade on Earth, and will long outlive us; some specialization is probably acceptable, as long as it's not in the part that controls how you think.

I don't think this civilization can ever do that, it will not make hard changes that inconvenience anyone. I think this horrible Machine will lumber on a few more decades and then we'll all die from it. But maybe isolated tribes will survive, or intelligence will arise in the Machines, or in a few million years another intelligence will evolve, and build new things the right, responsible way. Their history books will describe us as being as foolish and self-destructive as the Easter Islanders.

What I'm Watching: TempleOS Down the Rabbit Hole

A long, in-depth documentary on the late Terry A. Davis, author of LoseThos (pun of Win-Dows), later called TempleOS.

I'd seen Davis online for a couple decades, but never got far into following him. Davis was an aggressive, bizarrely incoherent "speaking in tongues" Christian racist who hated atheists, the CIA, and "N----rs", so you'd see his posts online and then he'd get downvoted or banned.

His OS, however, is fascinating. 64-bit, limited to VGA graphics, mostly but not solely single-tasking, no Internet or other networking, has a reasonably efficient Norton-style UI with hypertext everywhere, but constant scrolling, blinking, pop-up Bible quotes and hymns which would be maddening. All of which makes it weird but not that interesting, except it was written in assembly by one guy.

In college CompSci classes, you may "write an OS" which mostly means copying Andrew S. Tanenbaum's Minix piece-by-piece until you have a working Minix; which is great, Minix is fun, but this is a far more impressive feat.

LoseThos is for programming as entertainment.
It empowers programmers with kernel privilege because it's fun.
It allows full access to everything because it's fun.
It has no bureaucracy because it's fun.
It's the way it is by choice because it's fun.
LoseThos is in no way a Windows or Linux wannabe -- that would be pointless.
—Terry A. Davis

That's one of the most coherent explanations of the appeal of retrocomputing and low-level programming anyone's ever stated.

There's some interesting features, which are hard to get in modern OSs:

His long downward spiral of trying to be noticed online, then going off his anti-psychotic meds, his conspiracy theories, his embarrassing video streams, and then his final homeless wandering and death, are very troubling. For a long time he appeared to be getting by on donations from 8chan members simultaneously trolling him and supporting him. We do nothing to help these people, and let online gangs take advantage of them.

★★★★☆

The Mother of All Demos

December 9, 1968, Douglas Engelbart's presentation of NLS and teleconferencing:

  • Youtube: This is at 360p, most other uploads are at 240p fuzzy mud, I'd love to have a good HD one where I can read the text. Alas.
  • TheDemo@50

"If in your office, you as an intellectual worker were supplied with a computer display, backed up by a computer that was alive for you all day, and was instantly responsible—responsive—to every action you had, how much value would you derive from that?"

Of course, in reality what we mostly do with that is look at social media, hardly any better than watching TV. But we could do more.

It's been years since I've watched this, and some things jump out at me as I rewatch:

The keyboard beep is infuriating, it's what I consider an error sound. And Doug's fumbling a few times, which suggests the keybindings aren't visible, well-organized, or practiced yet. We see later that they're just code mapped to keys in a resource list.

The NLS word demo is somewhat like a modern programmer's editor with code folding; but notably I don't ever use folding, it's slow (even on 1 million times faster machines!) and error-prone, sucking up far more text than expected. It's also a lot like outliners like OmniOutliner; but while I do sometimes use OO to organize thoughts, I would never keep permanent data in it, because I can't get it into anything else I use. Dumb text is still easier and more reliable; I put my lists in Markdown lists:

- Produce
    + Banana
        * Skinless

Maybe the answer is we should have better tools and APIs for managing outlines? Right now I can manage dumb text from the shell, or any scripting language, or with a variety of GUI tools. OmniOutliner's "file format" is a bundle folder with some preview images and a hideous XML file with lines like:

    <item id="kILRUkulXwk" expanded="yes">
      <values>
        <text>
          <p>
            <run>
              <lit>Stuff</lit>
            </run>
          </p>
        </text>
      </values>
      <children>

Nothing sane can read that; even if I use an xml-tree library, it's still item.values[0].text.p.run.lit to get a single value out!

If I export it to OPML, it loses all formatting and everything else nice, but I get a more acceptable:

    <outline text="Stuff">

Back to the demo.

The drawing/map editor's interesting. This is pretty much what Hypercard was about, and why it's so frustrating that nobody can make a good modern Hypercard.

Basically every document seems to be a single page, fixed on screen. If a list gets too long, what happens? It doesn't scroll, just fully page forward/back.

Changing the view parameters is basically CSS; CSS for the editor! Which is what makes Atom so powerful, but it's not easy to switch between them, probably have to make your own theme plugins, or just a script to alter the config file and then reload the editor view.

Inline links to other documents in your editor, is interesting. Obviously we can write HTML links, but they have to be rendered out and no editor can figure out where a reference goes and let you click on it. Actually, this does work in Vim's help system, but nowhere else.

The mouse changed three ways since then: The tail moved to the top, the wheels became a ball which drives two roller-potentiometers inside, and then was replaced with a laser watching movement under a window. Don't look into the butthole of your mouse with remaining eye. But the basic principle of relative movement of a device moving the pointer, rather than a direct touch like Don Sutherland's Sketch light pen, or modern touch screens, or a Bluetooth stylus, remains unchanged and still the fastest way to point at a thing on a screen. Oh, and the pointer was called a "bug" and pointed straight up, Xerox copied this directly in their Star project, while everyone since Apple has used an angled arrow pointer.

The chording keyboard never took off, and I've used a few, and see why: It's incredibly hand-cramping. While a two-handed keyboard is awkward with a mouse, you have room to spread your fingers out, and only half the load of typing is borne by each hand. On a chord, each finger is doing heavy work every character.

The remote screen/teleconferencing setup is hilarious: a CRT being watched by a TV camera, which runs to a microwave transmitter; they couldn't send it over phone lines, acoustic coupler modems were only 300 baud (bits per second, roughly) at the time.

As with Skype today, every chat starts with "I can't hear you, can you hear me? Fucking (voice chat system)." Later, audio drops out, and all Doug can do is wave his mouse at the other presenter. I've joked before that the most implausible thing in Star Trek isn't FTL, even though that's physically impossible; it's not aliens indistinguishable from humans with pointy ears, half black/white makeup, or bumpy foreheads; it's that you meet an alien starship and can instantly set up two-way video conferencing.

They seem to have a mess of languages; MOL (Machine Oriented Language) is a macro assembler in modern terms. All the languages have to be adapted to NLS, they couldn't just use LISP or FORTRAN. Since changes are recorded by userid, they had git blame!

Split screen! That's a thing I love, and few editors do. You can drag a bar down from the top in BBEdit, and Atom has "Split up/down/left/right" for panes, but then you have to re-open the document in each and it's a pain.

Messaging is a public board (or rather, an outline with each statement as a message), with for addressing, like @USERNAME in the Twitters and such. Like those, there's too much data to process for live updating, everything runs as a batch job that can crash the database. War Computing never changes.

Cold & hot retrieval are just file search; on the Mac we have Spotlight, and can search by keywords or filename. Though I have some problems with the cmd-space search these days, and mostly open Finder and search from there to get a list of files matching various requirements, or sometimes use mdfind whatever|less from shell, then winnow down "whatever" until I have only a few results. On Windows or Linux, you're fucked; get used to very long slow full-text searches.


What NLS Did, and How We Can Do That

  1. Mouse, Keyboard, bitmapped displays: We have that.
  2. Teleconferencing: Still sucks.
  3. System-Wide Search: Mac users have that, everyone else is boned.
    • It's faster on Linux or Windows to search Google for another copy of existing data than to search the local machine.
  4. Outlining to enter hierarchical data: Nope.
    • All data goes into outlines contained in files.
    • Code as data: Some data is program instructions, in a variety of languages, which can operate on outlines.
    • To enter this outline, I had to keep adjusting my numbers, because I'm writing it in markdown text.

As mentioned above, OmniOutliner is logically very similar, but it's a silo, a trap for your data. The pro version (WHY not every version?!) lets you use Omni Automation, which is basically AppleScript using JavaScript syntax; the problem is waiting for an app to launch, then figuring out where your data is hidden inside some giant structure like app.documents[0].canvases[0].graphics[2] (example from omni docs ), just so you can extract it for your script.

Brent Simmons is working on Rainier/Ballard, which is a reimagining of Dave Winer's Frontier. I think building a new siloed language and system doesn't solve the real problem, but maybe it'll get taken up by others.

I have for some time been toying with enhancing my Learn2JS shell into an Electron application that would let you write, load, save, and run scripts in a common framework, without any of the boilerplate it needs now. A pure JS shell is just too limited around file and network access, and node by itself is too low-level to get any useful work done. I'm not sure how that works with everything else in your system. While browser localStorage of 2MB or so is sufficient for many purposes, you really want to save local files. While this doesn't force data into outlines, it makes code-as-data easy, and JavaScript Object Notation (JSON) encourages storing everything as big trees of simple objects, which your functions operate on.

(I'm having fun with Scheme as a logic puzzle; but it's not anything I'd inflict on a "normal" person trying to work on data that matters).

If you want to talk about doing more with this, reach me @mdhughes@appdot.net on Fediverse.

Windows Schadenfreude

After my recent woes with iOS updates (and a completely trivial Mojave update), but always saved by backups (I eventually found my iTunes backup password in my old journal, and put it in 1Password), I sympathize, but also laugh in their direction:

NEVER let a system auto-update. ALWAYS have backups.

Anyone who lets their OS or software update without backing up first, is asking to have their files deleted. Anyone who doesn't maintain a couple backups, with at least one offsite, is asking to have their files deleted. I often say people don't learn about backups until after their first catastrophic data loss, and sometimes not then, but you can beat the curve and learn first.

I use a daily cloud backup, and a weekly to monthly full-disk backup with SuperDuper!. Many people like Time Machine, it doesn't fit my workflow well, but it's a good tool for non-technical users.

You may be thinking, "I don't use a Mac!", but the advice is the same for other (lesser) computers, and you need it more. Only the specific apps for backup will differ. I'm looking for recommendations.

Tlon, Uqbar, Orbis Tertius

In a short story called “Tlon, Uqbar, Orbis Tertius,” Jorge Luis Borges describes the discovery of a strange book. Written in an arcane language, the book seems to be one vol­ume of an encyclopedia of another world, intriguingly unlike the world of everyday reality. The world of the volume rapidly becomes a universal obsession: scholarly journals were de­voted to it, people begin to dress and act in ways suggested by the volume. So compelling are the glimpses of the world revealed by the volume that its reality finally crowds out our own, and the world becomes the world of Tlon.
The volume you are holding in your hands is the volume Borges had in mind.
—Michael Swaine, preface to Dr Dobb's Journal Vol 09

How Much Computer?

I learned to program on a TRS-80 Model I. And for almost any normal need, you could get by just fine on it. You could program in BASIC, Pascal, or Z80 assembly, do word-processing, play amazing videogames and text adventures, or write your own.

There's still people using their TRS-80 as a hobby, TRS-80 Trash Talk podcast, TRS8BIT newsletter, making hardware like the MISE Model I System Expander. With the latter, it's possible to use it for some modern computing problems. I listen to the podcast out of nostalgia, but every time the urge to buy a Model I and MISE comes over me, I play with a TRS-80 emulator and remember why I shouldn't be doing that.

If that's too retro, you can get a complete Raspberry Pi setup for $100 or so, perfectly fine for some light coding (hope you like Vim, or maybe Emacs, because you're not going to run Atom on it), and most end-user tasks like word processing and email are fine. Web browsing is going to be a little challenging, you can't keep dozens or hundreds of tabs open (as I insanely do), and sites with creative modern JavaScript are going to eat it alive. It can play Minecraft, sorta; it's the crippled Pocket Edition with some Python APIs, but it's something.

I'm planning to pick one up, case-mod it inside a keyboard, and make myself a retro '80s cyberdeck, more as an art project than a practical system, but I'll make things work on it, and I want to ship something on Raspbian.

"It was hot, the night we burned Chrome. Out in the malls and plazas, moths were batting themselves to death against the neon, but in Bobby's loft the only light came from a monitor screen and the green and red LEDs on the face of the matrix simulator. I knew every chip in Bobby's simulator by heart; it looked like your workaday Ono-Sendai VII, the "Cyberspace Seven", but I'd rebuilt it so many times that you'd have had a hard time finding a square millimeter of factory circuitry in all that silicon."
—William Gibson, "Burning Chrome" (1985)

Back in the day, I would work on Pascal, C, or Scheme code in a plain text editor (ed, vi (Bill Joy's version), or steVIe) all morning, start a compile, go to lunch, come back and read the error log, go through and fix everything, recompile and go do something else, repeat until I got a good build for the day. Certainly this encouraged better code hygiene and thinking through problems instead of just hitting build, but it wasn't fun or rapid development. So that's a problem with these retro systems; the tools I use take all RAM and CPU and want more.

"Are you stealing those LCDs?" "Yeah, but I'm doing it while my code compiles."

These days, I mostly code in Atom, which is the most wasteful editor ever made but great when it's working. I expect my compiles to take seconds or less (and I don't even use the ironically-named Swift). When I do any audio editing (in theory, I might do some 3D in Unity, or video editing, but in practice I barely touch those), I can't sit there trying an effect and waiting minutes for it to burn the CPU. And I'm still and forever hooked on Elder Scrolls Online, which runs OK but not highest-FPS on my now-3-year-old iMac 5k.

For mobile text editing and a little browsing or video watching, I can use a cheap iPad, which happily gets me out of burning a pile of money on laptops. But I'm still stuck on the desktop work machine, I budget $2000 or more every 4 years for a dev and gaming Mac. Given the baseline of $8000 for an iMac Pro I'd consider useful, and whatever more the Mac Pro is going to cost, I'd better get some money put together for that.

I can already hear the cheapest-possible-computer whine of "PC Master Race" whom I consider to be literal trailer trash Nazis in need of a beating, and I'd sooner gnaw off a leg than run Windows; and Lindorks with dumpster-dived garbage computers may be fine for a little hobby coding, but useless for games, the productivity software's terrible (Gimp and OpenOffice, ugh), and the audio and graphics support are shit. The RasPi is no worse than any "real" computer running Linux.

'80s low-end computers barely more than game consoles were $200, and "high-end" with almost the same specs other than floppy disks and maybe an 80-column display were $2500 ($7921 in 2017 money!!!), but you simply couldn't do professional work on the low-end machines. Now there's a vast gulf of capability between the low-end and high-end, the price difference is the same, and I still need an expensive machine for professional work. Is that progress?