2 Punkte von GN⁺ 2023-07-16 | 1 Kommentare | Auf WhatsApp teilen
  • Uxn/Varvara ist ein persönlicher Computing-Stack, der sich um eine kleine virtuelle Maschine dreht und dieselbe Anwendung auf mehreren Systemen ausführen lässt
  • Ausgangspunkt war der konkrete Bedarf, grafische Anwendungen zu hosten, es ist aber offen veröffentlicht, sodass es von jedem als Release-Ziel genutzt werden kann
  • Programme werden in der eigenen Sprache Uxntal geschrieben, und die Verteilung ähnelt dem Teilen von Game-ROMs klassischer Konsolen-Emulatoren
  • Für die Ausführung wird ein betriebssystemspezifischer Emulator benötigt; auf Basis der VM- und I/O-Spezifikationen kann man auch selbst einen Emulator implementieren
  • Da dieselbe ROM auf Desktops, kleinen Elektronikgeräten, Handhelds und im Browser läuft, lassen sich kleine Programme lange pflegen und leicht in verschiedene Umgebungen übertragen

Der Computing-Stack, auf den Uxn/Varvara abzielt

  • Das Uxn/Varvara-Ökosystem ist ein persönlicher Computing-Stack, der sich um eine kleine virtuelle Maschine dreht
  • Das zentrale Ziel ist, dieselbe Anwendung auf mehreren Systemen lauffähig zu machen
  • Das Design basiert auf einer Denkweise nach dem Prinzip Implementierung zuerst und ist auf den konkreten Bedarf des Hostings grafischer Anwendungen zugeschnitten
  • Uxn wird in der eigenen Sprache Uxntal programmiert
  • Die Verteilung von Uxn-Programmen ähnelt dem Teilen von Game-ROMs für klassische Konsolen-Emulatoren
  • Weitere Hintergründe zum Design finden sich in den Notizen zu uxn design

Emulatoren und Ausführung von ROMs

  • Um Uxn-Programme auszuführen, wird ein zum jeweiligen System passender Emulator benötigt
  • Anhand der VM- und I/O-Spezifikationen kann man auch selbst einen Emulator implementieren
  • Der plattformübergreifende Desktop-Emulator benötigt SDL2
    • Arch: sudo pacman -S sdl2
    • Ubuntu: sudo apt install libsdl2-dev
    • Void Linux: sudo xbps-install SDL2-devel
    • OSX: brew install sdl2
    • openBSD: doas pkg_add sdl2
  • Es gibt mehrere Möglichkeiten, ROMs auszuführen
    • Ein Launcher-Programm verwenden
    • Eine .rom-Datei in das Emulatorfenster ziehen
    • Im Terminal bin/uxnemu path/to/example.rom ausführen
  • Die Standardsteuerung des Emulators erfolgt über Funktionstasten und Button-Mappings
    • F1: Zoom ein/aus
    • F2: Debugger ein/aus
    • F3: Screenshot
    • F4: launcher.rom laden
    • L-Ctrl: A, L-Alt: B, L-Shift: Select, Home: Start

Laufzeitumgebungen und Beispielprogramme

  • Dieselbe Uxn-ROM kann auf Desktop-Computern, kleinen Elektronikgeräten, modernen Handhelds und im Browser verwendet werden
  • Es gibt außerdem Ports für GBA, Nintendo DS, Playdate, DOS, PlayStation Vita, Raspberry Pi Pico, Teletype, ESP32, Amiga, iOS, STM32, IBM PC und weitere; einige davon sind noch unvollständig
  • Die als Beispiele bereitgestellten Uxn-Programme umfassen Spielereien, Spiele und Werkzeuge

Lernmaterialien und Community

1 Kommentare

 
GN⁺ 2023-07-16
Hacker-News-Kommentare
  • Alles an dieser Gruppe ist faszinierend. Digitale Nomaden auf einem Boot, und jeder einzelne Text gibt einem einen Einblick in ein Leben, von dem ich nie gedacht hätte, dass es überhaupt möglich ist.
    Jedes Mal, wenn ich die Website besuche, falle ich in einen Kaninchenbau. In einem anderen Leben hätte ich das vielleicht auch ausprobieren wollen.
    https://100r.co/site/dry_toilet_installation.html

    • Da gibt es wirklich viele interessante Dinge. Persönlich fand ich die Solar-Vakuumröhre am besten, einschließlich Kochen und sogar Brotbacken mit Sonnenlicht.
      https://100r.co/site/solar_evacuated_tube_cooking.html
    • Sie nutzen auch aktiv 9front, weil sie Abhängigkeiten und aufgeblähte Betriebssysteme satt haben. 9front ist sehr klein, alles wird statisch kompiliert, und auch die API ist klein.
      Cross-Compiling ist ebenfalls einfach, und wenn man Ballesteros’ Plan-9-Einführung liest, entwickelt man ganz nebenbei auch ein Gespür für Informatik.
    • Falls es dich interessiert, gibt es auch Devines persönliches Wiki: https://wiki.xxiivv.com/site/home.html
      Dort gibt es wirklich eine Menge großartiger Inhalte.
    • Es ist wirklich beeindruckend, dass sie trotz all dieser Probleme der „realen Welt“ noch die Energie, Motivation und Zeit haben, eine virtuelle Maschine zu bauen.
      Erstaunlich ist auch, dass sie auf so vieler realer Hardware läuft. Ich habe viele Projekte für virtuelle Maschinen gesehen, aber die meisten wirkten irgendwie in einem anderen Computer eingeschlossen. Extreme Einschränkungen scheinen das Design in eine völlig andere Richtung zu drängen.
    • Auf YouTube gibt es eine große Subkultur von Seglern, und ich persönlich nutze sie gern als Eskapismus-Content.
      Natürlich ist der YouTube-Algorithmus der YouTube-Algorithmus und der Kapitalismus ist der Kapitalismus, deshalb besteht ein beträchtlicher Teil der Segelvideos auch aus Bikini-Content. Gleichzeitig nimmt aber auch das Leben rund um Reparatur, Umbau und Upgrades kleiner Yachten einen großen Raum ein. Von Glasfaserarbeiten über Solarenergie bis hin zur Entsalzung bekommt man einen wirklich faszinierenden Einblick in dieses Leben.
  • Ich habe großen Respekt vor diesem Team. Ebenfalls lesenswert ist ein großartiger Text darüber, wie man zu einem einfacheren Computing-Modell findet: https://100r.co/site/weathering_software_winter.html

  • 100r erinnert mich an etwas, das uns heute am meisten fehlt: Mut.
    Wir haben Angst davor, Chancen zu ergreifen, Ideen zu erkunden, den etwas schwierigeren Weg zu wählen und uns anspruchsvollen Herausforderungen zu stellen. Wir sind risikoscheu und wollen nichts Neues ausprobieren.
    Wenn ich über ihre Reisen lese, über all die Arbeiten auf dem Boot, über ihre Haltung zu Code und besonders über die Idee, Software für nur eine Person zu schreiben, fühle ich mich wie ein Feigling. Es macht mir Lust, mutiger zu werden im Umgang mit Code, mit dem Leben und mit meiner Umgebung.
    Danke für all die Arbeit von Rek und Devine. Es freut mich, euch dabei zuzusehen, wie ihr geschäftig nichts tut.

  • Das Mastodon-Konto des Autors (https://merveilles.town/@neauoire) ist eine wahre Schatzkammer kleiner Projekte und Screenshots aus Devines parallelem Computing-Universum.
    Ich kann auch die gemeinsame Podcast-Folge bei Future of Coding sehr empfehlen: https://futureofcoding.org/episodes/044.html sowie die Fortsetzung über Orca, eine erstaunliche Live-Musik-Umgebung: https://futureofcoding.org/episodes/045.html
    Durch diese Person und durch die langjährigen Lisp-Nutzer in diesem Forum denke ich schon lange über alternatives Computing und Nischen-Programmiersprachen nach. Uxn steht auf meiner Liste, aber im Moment bin ich mit Smalltalk-artigen Dingen beschäftigt, bevor ich mich in Forth und Uxn vertiefe :)

    • Es wurde ein Kalender erwähnt, der das Jahr von A bis Z in 26 Zweiwochenabschnitte einteilt, aber 26 mal zwei Wochen sind nur 364 Tage. Ich frage mich, ob dieses Kalendersystem das Jahr auf 364 Tage festlegt, ob es zusätzliche Tage außerhalb dieser 26 Zweiwochenabschnitte gibt oder ob es noch anders funktioniert.
    • Im Mastodon-Profil steht direkt they/them.
  • Ich freue mich immer, wenn sie auf der Startseite auftauchen. Die Software, die sie schreiben, ist interessant, aber noch beeindruckender sind die Arbeiten, die sie ausführen, um das Boot so weit wie möglich autark zu machen.

  • Gibt es hier Blame!-Fans? https://wiki.xxiivv.com/site/devine_lu_linvega.html https://blame.fandom.com/wiki/Davine_Lu_Linvega

  • Von ihren Seiten schaue ich tatsächlich am häufigsten auf der Rezeptseite vorbei: https://grimgrains.com/site/home.html
    Da gibt es für Leute, die gern kochen, ziemlich viele interessante Dinge.

  • Maxine Chevalier-Boisvert, bekannt für die Arbeit an Basic Block Versioning JIT und jüngst yjit, beschäftigt sich in letzter Zeit ebenfalls mit ähnlichen Ideen.
    https://pointersgonewild.com/2023/02/24/building-a-minimalistic-virtual-machine/

  • Als kleines und elegantes Design einer virtuellen Maschine dürfte das hier viele Leute interessant finden.

    • Erstaunlich ist, wie praktisch das Ganze ist. Sie haben es auf alle möglichen alten Geräte portiert, die herumlagen, und auch eine Menge Software dafür gebaut.
      Es bleibt nicht bei einem Entwurf auf irgendeiner Webseite, sondern daraus entstehen Werkzeuge, Spiele und Kunst.
    • Wenn man dieses Konzept in einer mainstreamigeren Form sehen möchte, lohnt sich auch ein Blick auf RISC-V. Einen Interpreter für eine virtuelle Maschine mit dem Basis-RISC-V ohne Erweiterungen kann man grob an einem Tag implementieren.
      Ich habe das selbst gemacht; es ist etwas komplexer als ihr Befehlssatz, aber der Unterschied ist nicht groß. Da echte Compiler darauf zielen können, lässt sich im Prinzip fast jede Software ausführen. Die restliche VM-Umgebung, etwa für Ein-/Ausgabe, muss man aber trotzdem noch bereitstellen.
  • Ein Forth-basiertes Retro-Style-Spiel, niedrige Anforderungen und eine fast überall hin portierte virtuelle Maschine erinnern an die Z-Machine, nur stärker auf Pixel ausgerichtet.
    Es wirkt gut geeignet für Spiele im GB-Stil, bei denen man nicht mit einem Z80-artigen Befehlssatz kämpfen muss und sich auch keine Sorgen machen muss, wegen seltsamer Cycle-Timing-Bugs bei der Sprite-Anzeige ein echtes LCD zu zerstören.