Main /

Elsnis Technical Blog 2023

Elsnis Technical Blog 2023

/ HomePage / elsni / Elsnis Technical Blog 2023

Elsnis technical Blog 2023

Mittwoch 12.04.2023 - Programmiersprachen-hopping

Alles in Nodejs programmieren? nee, für jedes kleine Projekt 100MB node.modules - OMG.
Python? laaaahm. Syntax durch Einrückung? Ach neee, hör auf mit so'm Tüddelkram...
Das gute alte ansi C - ja- geht, aber schon die String-Verarbeitung ist nicht mehr das, was man so gewohnt ist.
C++? Nie richtig gelernt.
C#? Java? Ich will keine fette Runtime installieren müssen um ein kleines Programmlein auf der Kommandozeile ausführen zu können
bash? Ja, ist richtig. Schon bei jeder if-Bedingung nachschlagen, wie man es schreibt. Hirnverknotung.

Also bin ich auf der Suche nach einer schnellen modernen Compilersprache:

Go

Pros:

  • einfach, ohne Ballast, wenige Sprachkonstrukte
  • C-like syntax, quasi sofort verständlich.
  • Extrem schneller compiler, auch bei großen Projekten
  • Sehr sicher
  • moderne Sprachkonstrukte
  • portabel, einfaches Cross-compiling
  • relativ schnell
  • Viele Bibliotheken, gute Standard-lib

Cons:

  • Keine Klassen
  • erzeugt riesige Executables (1,8MB für "Hallo Welt", nach strip noch 1,2MB)
  • garbage Collector

Rust

Pros:

  • bis zu Faktor 10 schneller als Go
  • sehr sicher (Memory leaks, types etc.)
  • Die meisten Fehler werden schon durch den Compiler gefunden
  • C-like syntax
  • eingebautes Paket- und Build.Management (cargo)
  • gute Library

Cons:

  • Ownership-Konzept (steile Lernkurve, ich bin da noch nicht durchgestiegen)
  • trotz C-like nicht unbedingt selbsterklärend.
  • erzeugt ebenfalls riesige Executables (4,2MB für "Hallo Welt", nach strip jedoch nur noch 322K)

Zig

Pros:

  • bis zu Faktor 10 schneller als Rust
  • Gefühlt Faktor 10 einfacher als Rust
  • ziemlich sicher
  • C-like syntax
  • eingebautes Build und Test-System
  • zig ist auch C und C++ Compiler, dadurch einfachste Interoperabilität mit vorhandenen C-Projekten und -Libraries

Cons:

  • noch nicht production-ready (Stand heute)
  • Executable-Größe suboptimal (774K für "Hallo Welt", nach strip jedoch nur noch 332K)

Ich werde mir mal Zig ansehen, mal einen kleinen Web-Server schreiben, Zugriff auf Datenbanken und so weiter. Zum lernen.

Dienstag 30.03.2023 - Distro hopping

In der letzten Zeit arbeite ich wieder mehr unter Linux. Mittlerweise hat das OS ja keinen mehr so großen Einfluss. VS Code läuft auf allen Plattformen, nodejs, go, flutter, weißdergeier...

Ich habe neulich einen altersschwachen, tiefentladenen Acer V3-371 abstauben können, der nach 10min dauerföhnen unter Windows regelmäßig abstürzte. Nachdem das Kaninchen aus Lüfter und Heatpipe-Lamellen entfernt, die klicker-klacker-HDD durch eine SSD (Marke Amazon-billigst) ersetzt und das RAM mit herumoxidierenden Alt-Riegeln von 4GB auf 12GB erweitert wurde, läuft das Notebook eigentlich ganz gut. Nur Hmm, welche Distro installieren?
Schnell soll sie sein, der Desktop schick und debian-basiert ist schon mal nicht schlecht, brauche ich keinen neuen Paketmanager zu lernen.

  • Erstmal Kali probiert, weil ich finde das Design einfach gut. Lief, aber nicht perfekt. Eigentlich brauche ich das ganze Hackerzeug auch nicht
  • Lubuntu - ja, nee, irgendwie nicht meins.
  • Bunsenlabs - ich mag die Ästhetik. Läuft auf einem alten Netbook von mir auch gut, hier ging Bluetooth nicht (auch nach einschalten) und diverse andere Dinge. Da ich zu dem Zeitpunkt nicht basteln wollte flogs wieder runter.
  • Linux Mint - Sieht gut aus, und alles funktionierte auf Anhieb. Bluetooth, WLAN, Display-Helligkeit, Sound, Hibernation, ALLES.

Linux Mint läuft immer noch auf der Kiste, mittlerweile habe ich zusätzlich herbstluftwm als Windowmanager installiert. Nach etwas Einarbeitung und Konfiguration ist das richtig genial!
Maus? Wer braucht denn sowas winking smiley Auf dem Laptop ist reine Tastaturbedienung sowieso sehr praktisch denn wer mag schon ewig auf dem Touchpad rumwischen oder unter beengten Platzverhältnissen eine externe Maus anschließen.

Meine config-files sind übrigens hier zu finden: https://github.com/elsni/linux_stuff

Auf einem anderen alten Netbook habe ich noch andere Distros ausprobiert, alle 32 bit:

  • Alpine Linux: sehr minimal, bootet wahnsinnig schnell. Kann man aufbohren, allerdings ist das Paket-Repository vergleichsweise dünn und vieles fehlt einfach. trrotzdem fand ich die installer-Skripte und die Doku ganz gut. Ich komme vielleicht mal in der Zukunft drauf zurück.
  • Void Linux: habe in dem live-image das WLAN nicht zum laufen bekommen, die Dokumentation ist relativ dünn. Auf einem moderneren PC vielleicht noch mal einen Test wert.
  • AntiX Linux: hierüber bin ich zu herbstluftwm gestoßen weil diverse auswählbare Windowmanager vorinstalliert sind. Auf dem Netbook funktioniert es gut und schnell, ist drauf geblieben.

Gentoo fehlt in diesen Listen komplett. Das liegt einfach daran dass ich es bislang nicht geschafft habe einen funktionierenden icecc/distcc host einzurichten und diesenschon beim ersten emerge world zu verwenden.
Auf alten Rechnern ist das kompilieren sonst einfach viel zu zeitaufwändig.

Dienstag 28.03.2023 - Dütt un Datt

1. Thema - Zeh Peh Uhs

Ich habe gerade in LarsTechnicalBlog gelesen dass ein aktueller core i5 der 13. Generation schneller ist als sein ganzer CPU-Zoo zusammen - schon krass.
Da habe ich mich gefragt womit ich denn so arbeite und wie weit meine Maschinen dem Olymp der Leistung hinterherhinken.... Also gut:

  • Arbeitslaptop: Intel Core i5-8365U (CPUMark 6274)
  • Macbook: Apple M1 (CPUMark 14200)
  • Daddelkiste (Tower): AMD Ryzen 7 3700X (CPUMark 22678) - na der ist ja doch gar nicht so schlecht winking smiley
  • Zweitlaptop mit Linux: Intel i3-4158U (CPUMark 1718)
  • interner Server: Odroid C4 mit Amlogic S905X3? (CPUMark ~570)

Ein Intel Intel Core i5-13600K hat einen CPUMark von 38505 OMG! Wenn ich alles zusammenrechne komme ich auf einen CPUMark von 45441, immerhin etwas mehr als der 13.Gen i5.
Die Daddelkiste ist als mein schnellster Rechner immerhin etwas mehr als halb so schnell, dafür lohnt ein teures Upgrade nicht. Kiste ist schnell genug.

2. Thema - Atari XL

Da Lars mit seinen Fähigkeiten Atari 8-Bit Spiele zu programmieren wirklich beeindruckendes hervorbringt (@Lars, mach mal ne Seite zu jedem Game!), auch wenn diese Fähigkeit vor 40 Jahren zu deutlich mehr Ruhm, Geld, Glanz und Gloria geführt hätte, habe ich mal angefangen eine Idee für das Folgegame auszubrüten.
Da ich auch gerne nicht nur auf dem Papier etwas haben möchte, um es dem prüfenden Auge des großen Meisters auf Knien und mit gesenktem Haupt zu präsentieren, habe ich angefangen mich damit zu beschäftigen wie man heute auf einem modernen PC Software für Atari 8-Bit entwickeln kann - Assembler erstmal außen vor. Lars hat zwar einen eigenen Compiler dafür entwickelt, jedoch sind mir Syntax und Toolchain absolut fremd. Die Dokumentationswilligkeit des Meisters ist verständlicherweise wenig ausgeprägt und Beispiele sind kaum vorhanden, so dass sich die Software nicht erschließt.
Ich habe es also zunächst mit Turbo Basic XL versucht, in der Hoffnung mich auf sicherem Eis zu bewegen. Da sich das Wissen einer Programmiersprache nebst Plattform durch 20 Jahre Nichtbenutzung jedoch zu 99% selbst löscht, muss ich quasi von vorne anfangen.
Immerhin habe ich mir jetzt eine Toolchain aufgebaut mit der ich Turbo Basic unter Linux schreiben kann und durch ein Skript wirds Tokenisiert und im Emulator ausgeführt. Der schwierige Part folgt jetzt....

Montag 03.01.2023 - Auferstanden aus Ruinen - Der ElsniWiki Neuanfang(?)

Neues Jahr, neues Blog. Nach langer zeit mal wieder. Das ElsniWiki hatte einen Tiefschlaf hinter sich, nachdem der Hoster sich entschlossen hat auf PHP 8 upzugraden und auf einmal nix mehr lief. Zum Glück hat Lars mit Zeit und Knoff-Hoff ausgeholfen und das ganze dann wieder zum Laufen gekriegt. Ich habe dann noch etwas Feinschliff beigesteuert, das Template vom Table-Layout befreit und es "resposiviert" - vor allem damit Google mir nicht alle 2 Wochen eine Mail schickt wo drin steht wie scheiße die Seiten für Mobilgeräte sind.

Anyways, nebenbei bin ich dabei mit Nodejs und Typescript das Wiki-System nachzubauen. Ziel ist es die bestehenden Seiten lesen und interpretieren zu können, das Layout-Rendering soll dabei zu 100% im client erfolgen. Erste Anfänge sind gemacht. Zeit ist der begrenzende Faktor.

Frische Änderungen | Menü editieren
zuletzt geändert am 12.04.2023 13:42 Uhr von Elsni
Edit Page | Page History