Home
Admin | Edit

Moving to lower tech

Today i bought a Raspberry PI Zero v1.3 which is a very small 5$ single-board computer with few I/O, i plan to gradually use it as my main computing platform for the years to come instead of a powerful desktop computer.

It will run lightweight operating systems and i will probably use RISC OS at first which is a late 80s and 90s OS design, the OS is single-user and employs cooperative multitasking, it is very lightweight.

A compact 5$ computer with 1GHz single-core ARM 11 CPU and 512MB RAM

The idea is to empower myself back with a software / hardware combo tailored to my passion projects which are mainly about programming (mainly software rendering graphics related stuff) and DIY stuff.

This hardware / software combo will allow me to enjoy modern general-purpose computing as well as "retro" computing. The hardware is also compact enough that i can bring it with me when i travel.

I also want to do more low-level programming like bare metal OS development, compilers stuff and hardware tinkering, some of that is facilitated by the PI due to the 40-pin GPIO.

Parts of the idea is also to gradually shift things that i used to do on a desktop (or portable) computer to energy efficient specialized devices such as a mobile phone or a gaming device.

RISC OS 5, a lightweight ~100 MB (~6 MB bare) single-user OS that employ cooperative multitasking

Lower tech ?

Lower tech is related to the low tech philosophy, it is a wider and positive balanced version of the low tech movement, it takes into account the philosophical, environmental and social aspects and oppose the planned obsolescence of objects and question the consumer society, as well as the materialist principles underneath.
This idea (and related ideas like Degrowth) is not new and was formulated differently by various peoples across recent history, my actual view is heavily nuanced and influenced by many peoples and ideas such as permacomputing, the hacker culture, Jacques Ellul view of technology, Alexander Grothendieck and Aurélien Barrau.

I especially like the idea of human-scale computing, "computing" that ones (or a small community) entirely master from the grounds up.

Why a PI Zero ?

Using a Raspberry PI Zero / RISC OS combo is a step to reduce the amount of abstraction layers and overall complexity of the computing platform while increasing its reliability, it also means way more controls of the platform overall with hardware / software precisely tailored for my needs that i can hack a bit, it also use fewer resources.

On the hardware point of view i chose the PI because :
  • the board is power efficient with roughly less than 2 Watt consumption most of time
  • it has a single-core CPU which is perfectly adapted to RISC OS because it only use one core
  • CPU is an ARM CPU which is well adapted for RISC OS, it is also RISC so efficient and elegant
  • CPU is clocked to 1GHz which is sufficient for most of my computing needs, it does not heat up a lot, the RAM amount is also sufficient
  • there is about no wasted I/O
  • it is very cheap and has a very small form factor
  • supported by many OS
I chose the first version of the PI Zero (not the W version) because i have no needs for Wi-Fi or Bluetooth, using a mobile phone as a media / network device or a second dedicated device is more than enough, i might tinker with insecure OS anyway so no internet is probably good... There is still ways to add networking if needed.

I also didn't chose the second version of the PI Zero due to the quad core CPU, RISC OS can only use one core so it would have been way overkill. This is the same reason i did not buy a LapDock Zero (a portable computer built for RISC OS) although the idea was attractive.

There are boards such as the Beagle but they are more expensive and not as elegant on the form factor aspect.

Raspberry PI Pico is also interesting as a very cheap and energy efficient computing platform and i may test it in the future, it is severely limited in I/O and features but there is alternative boards adding video output, MicroSD slot etc. making it functional enough to work as a mini desktop computer, the Pico sounds like quite awesome overall to hack on and for resources constrained OS development.



Raspberry PI Pico, a tiny board using a microcontroller chip with 133 MHz dual-core ARM Cortex-M0+


Anyway, the hardware choice is not perfect and it may evolve in the future, on the hardware side there is still many issues that ones should be aware of with those kind of single-board computers such as all the proprietary parts and opaque / undocumented components.

I am also eagerly waiting for RISC-V hardware at the moment which sounds promising.

Why RISC OS ?

On the software aspect i chose RISC OS at first because i want to explore it a bit more, it is also tailored to my actual needs :
  • it is lightweight, simple and run well on low-end systems, it is also accessible and i know its API a bit from my experience with Archimedes computers
  • can make complete use of most computing resources anytime due to its 80s architecture (i.e. cooperative multitasking), it feels a bit like how old-school personal computing used to be; this means you can crash the system easily but it is also part of the empowering fun
  • i will be the sole user of the computer so i don't need a multi-user operating system at all, most modern OS are multi-user which i tend to dislike for all the complexity it adds (especially UNIX ones)
  • development tools and documentation integrated from the ground up; BBC BASIC, an amazingly fast and powerful BASIC is integrated within RISC OS, this also means its multi-pass assembler is available for any low-level programming (it does not support the newer ARM instructions though so it is stuck in the 90s)
  • RISC OS was specifically made by Acorn Computers for their ARM-based CPU which are used by Acorn Archimedes computers which are the late 80s / 90s 32-bit computers i like to tinker with, i can develop for the Archimedes easily because it uses the same (mostly unchanged) tools; one of the main reason i chose the Archimedes as a 32-bit "retro" platform is due to the elegance, simplicity and power of its design, especially the ARM2 CPU which was eyes opening to me
  • i like the RISC OS way of doing things, it is not as fully featured as a modern OS but it works well enough with a low complexity architecture
  • RISC OS is still being maintained although development is slow
RISC OS drawbacks:
  • there is much less software available compared to popular OS although it still have about 30+ years of programs due to its 80s-90s history
  • it is still limited to 32-bit
  • still no dual monitor setup on PI (being worked on though)
  • it is not optimized for the target system (i.e. only use a subset of ARM instructions)
  • there is no way to use the GPU
  • stuck in the 80s / 90s (no worthwhile memory protection, no virtual memory, limited multitasking, 255 files handle maximum etc.), all of this may be hacky to work around although somewhat fun as well!
  • it is not free to build which is a serious drawback to me, sounds like shady practices also...
I am okay with all of that anyway for now, RISC OS is pretty much stuck in the 90s. :)

RISC OS experience after a week (update)

So i tried RISC OS 5 on PI Zero for a week and it is as expected, my conclusion however is that i prefer the old versions (RISC OS 3) running on Archimedes hardware because it was definitely more tailored for that era, it felt also way more stable !

I discovered that the build environment is not free (see above) which is an absolute deal-breaker to me, also had some issues with a half-recognized wireless mouse and a non recognized ETH port (from a USB Hub), i wanted to try to fix the mouse driver by tinkering with the code but that is how i discovered that the build environment is not free...

I did some enhancement of my RISC OS low-level library and framework but also stumbled on very odd behaviors with Obey / Command files, did many workaround for things that were working in RO 3 so i guess it was OS bugs.

Here is potential OS bugs i found (this was working fine in RO 3) :
  • OS_ChangeDynamicArea seems to undo OS_RemoveCursors; fixed it by calling OS_RemoveCursors after OS_ChangeDynamicArea
  • calling an Obey file with a set of two commands (Run filepath and Delete filepath) where filepath is a Command file which have BASIC / TEXTLOAD / SAVE / QUIT commands had very odd scheduling behaviors, i even had a "this file is already open" error when running the Obey file after simplifying the Command file to only have a Echo command, this was fixed by using Filer_Run instead of Run in the Obey file and writing a simple Command file with the Delete command
  • i had odd scheduling behaviors when running a Command file which contained BASIC calls from within BBC BASIC (using OSCLI) multiple times, the BBC BASIC code was setting up some environment variables dynamically prior running the Command file and the Command used them, the result is that the environment variable never changed (it did in the 'parent' BASIC), it seems to be related to the fact that the OS is single tasking (unless ones uses the Wimp multitasking environment) so this is not really a bug, i didn't try this on RISC OS 3 though, in the end i just generated the Command file content and called it later from an Obey file
There is also a rebooting bug when i plug or unplug the USB Hub (Atolla USB HUB Network 301), also had this behavior on Plan 9 so it is not the OS i guess, maybe it require too much power.

The OS is very fast and a joy to use due to this, it boot in few seconds and reboot is of no hassle. (which is kinda important for that kind of OS :-)

Why not GNU/Linux ?

I am not satisfied by GNU/Linux. This was my main OS since ten years, i love its overall flexibility, massive support and large choice of distributions but i don't like it much as a day to day system, it is too busy trying to compete with other popular OS with its own set of issues, it feels like a maze of things joined together and i don't want to waste time with something that is way larger than my needs.

GNU/Linux was also designed as a multi-users system, i think however that single-user OS cut complexity a lot and i don't see the point of multi-user base software in current days personal computing (unless it is really well thought likes on Plan 9...), most of it can be implemented easily externally if needed. This may heavily depends on the use case of course but my point is that it is too often integrated, forced and not easily ignored because it is part of the original OS design. (probably for business reasons; systems that needs high reliability and security)

Although old the introductory paper Plan 9 From Bell Labs outline some of the legacy issues with UNIX (some of which may still be relevant)

Also, i always preferred BSD operating systems over Linux systems because they are cleaner and more consistent (i.e. great documentation and file structure, ports system, sources cleanliness for OpenBSD) and i am also fond of the BSD licenses, i did use OpenBSD a few times in the past and FreeBSD at work.

GNU/Linux was an okay alternative since then as it allowed me to enjoy modern gaming (and optimal accelerated graphics) on desktop.

Might still use a minimal GNU/Linux (or BSD) system in the future but it is not my actual focus.

Alternatives i might try

Most popular OS are stuck with ancestral lineage which prevents major rethinking. OS that try to move forward such as Plan 9, Inferno or Oberon are interesting on that topic.

Many advanced and notable alternative operating systems exists such as React OS, BeOS/Haiku, Temple OS but they also come with their own things i dislike: x86 focused, C++ for Haiku (although the object-oriented API is very clean overall so it is probably just biased / taste at this point) or severe restrictions for Temple OS (see A constructive look at Temple OS for why it is still interesting), many also does not run natively and are thus mere toys because they are lacking device drivers.

There is also interesting projects on the extreme spectrum such as Collapse OS which is a minimal OS designed for improvised machines.

Plan 9 experience after a week (update)

Plan 9 is an operating system that Bell Labs made after Unix to fix many of its problems and push the idea of "everything as a file" to its extreme. It is generally seen as a research OS, some of its ideas were studied and were added on other OS.

So i tried Plan 9 (with 9legacy distribution image because this is seen as a continuation of Plan 9) and i am quite satisfied by this OS so far, it felt quite natural to use although being accustomed to UNIX based OS is probably of a big help.

The Rio windowing system is straightforward to use, simple and minimal, love the fact that the program run in the window it is created instead of programs creating a window. It is also very hackable so can be extended easily if ones lack features.

I like that all the window management (creation, destruction, etc) is handled through the menus available by clicking the mouse buttons, it still support common stuff like resizing by dragging the window edges etc.

The usage of a 3 button mouse feels like RISC OS although they are handled a bit differently, this was quite natural for me to adopt after RISC OS because it wasn't that foreign.

One of the coolest moment is realizing that you can run any commands from texts by middle clicking on it (or select + middle click), seems pretty handy !

Acme text editor / shell (sorta likes a minimal IDE) seems pretty cool also although i didn't explore it much yet, seems to be a great way to write code!

I had some looks at the OS architecture and source code and it is easy to understand, sane and clean, there is also many tools available, can't wait to experiment a bit more !

Boot is fast (~10 seconds) but not as fast as RISC OS. (RISC OS being an old-school OS and purposely built for ARM platforms may be the reason)

Plan 9 isn't low tech at first glance but i think it is anyway because of its original network-centric goal, minimalism and overall elegance, it is a modern distributed OS which can effortlessly execute any program across multiple hosts on a network using a single message-oriented protocol so many of the now mess which handle that through complex custom software is unnecessary on Plan 9, it would be handled effortlessly and uniformly by the OS, Plan 9 can be seen as the time-shared computer ideal of some of the low tech movement on many of its original concepts.

Plan 9 also has much less CORE complexity than says Linux due to its carefully thought architecture, this can be seen when looking at the amount of code of Plan 9 and Linux when they were comparable.

Conclusion on Plan 9 is that it is a good candidate to use as a main OS although there is much less software (or even hardware support) than popular OS of course so it is a bit rough, there is still some good base amount of hardware support and software that ease the experience, most stuff i used on RISC OS worked on Plan 9, there is also no way to consume most media content that peoples may find on the Internet for example (there is a web browser but it is kinda primitive) so it is not for everyone probably but if you are curious or just looking for an elegant, minimal modern OS and you don't care much about the media consumption aspect (or not afraid of doing stuff yourself) i think it may be adequate.

Also tried to run Inferno but it is a bit harder to try as there is no native builds, seems anyway that it is basically Plan 9 around a VM, it looks different though because it uses the Tk toolkit.

For better hardware support (especially USB Ethernet) i also tried the 9front distribution which can be seen as an active version of plan9, seems it was less stable overall but USB Ethernet adapter worked at least compared to the vanilla plan9, an easier way to get connectivity is to use RNDIS which is basically using a smartphone connection, ones just have to run ip/ipconfig after enabling RNDIS on Android to make it work.

There is also a Linux emulation tool which is able to run Linux/i386 ELF binaries.

Progressively switching to dedicated devices

Smartphone

Most of what peoples do these days on a computer are related to work or the internet, combining both most of the time. Most peoples also use a smartphone as they provide everything needed to consume massive amount of contents in a comfy device form.

The idea of the smartphone (or tablets) is truly groundbreaking; a powerful handled general-purpose computer device connected to the world, it is a bit akin to the tricorder / communicator device in Star Trek, it provide immediate access to the world knowledge database, sensors, massive amount of entertainment, worldwide communication access and more. The boom of these small devices brought some well appreciated UIs major rethinking as well.

Star Trek tricorder device

Phones are generally overpowered and that is okay to me as it makes perfect sense for this particular device, not because of gaming actually even though it may be the base motivation (and also due to the ecosystem high requirements) but because all sort of heavy content may be consumed (videos, very high resolution images etc.) and it should perform perfectly to load, present and manipulate them (to some degree) at any times making sharing as smooth as possible.

I think of these devices as a perfect fit for internet content and the consumption of digital content.

Phones are energy efficient, quite reliable and stock Android always did quite well for me on the software side. On that last point i think Android does a good job at masking its underlying OS lineage.

This does not means phones are all perfect, there is many issues that plague smartphones probably because of how they originated (and the underlying environment), it could be made way better such as being more ethical, more repairable, dropping planned obsolescence, having more decentralized platforms, using open source principles for both hardware and software, less ads driven... we should be all aware of these things and support better practices and alternative projects.

They could perhaps entirely replace desktop computers (even for business cases) with more openness by associating them to peripherals such as displays and interaction devices. (keyboards etc.)

I will continue to use my phone as-is until good and affordable solutions pop up, the projects i am right now monitoring on this space is the PinePhone and Librem 5.

Gaming

Gaming is no different, it can be addressed by using dedicated devices (such as handled portable gaming devices) following individual needs.

There are wonderful compact gaming devices nowadays, powerful ones like the Steamdeck but also severely constrained ones like the Arduboy which is credit card sized (Gamebuino as well) with peoples doing highly creative stuff despite the limitations. I especially like all these 1-bit recreation of popular games showing that nice stuff can be done with extreme simplicity:


MicroCity, a city simulation game inspired by SimCity on the Arduboy

Dark & Under, a dungeon crawler game on the Arduboy

Anyway, the point is to progressively use a small amount of reliable dedicated devices instead of relying on a powerful desktop computer most of the time. This also has mobility advantages.

Using 16-bit / 8-bit computers


Using 16-bit or 8-bit computing platforms is a lovely idea as well, they are the easiest to build / use and they can be great vehicles for expression, see all the software made for 8-bit fantasy computers such as TIC-80 or PICO-8 as an example.

Peoples do highly creative works on these platforms despite high constraints. See also BBC Micro Bot.

There is also a wide amount of concrete platforms to have fun with (mostly custom but some like the Mega65 are also available in batch) with many peoples doing highly creative work in this space as well.

TIC-80 games

back to topLicence Creative Commons