╔═════════════════════════════════════════════════════════════════════╗
║ Notitzzettel                                                        ║
║ Samstag,  9. April 2022, 23:28                               inkeso ║
╚═════════════════════════════════════════════════════════════════════╝

Vorwort: Die Evoultion meiner Notizzettelverwaltung


sticknot.c
Am Anfang war die Textdatei. Notizen.txt. Die wurde dann im Laufe der Zeit etwas groß, Struktur musste her!

Und aus der Textdatei wurde ein Ordner. Jetzt wollte ich mir die Navigation vereinfachen, eine GUI musste her!

sticknot.c

Die Jahre vergingen und mit der Zettelsammlung wuchs auch der Wunsch nach ein wenig bling-bling. Ich wollte ein wenig Formatierung, also musste eine bessere GUI her!

sticknot.py
sticknot.py

Nichts gegen eigene Süppchen, aber wenn ich darüber nachdenke, was ich noch gerne haben möchte (Syntax-highlighting, Tabellen, funktionierende Querverweise, ...), sollte ich mir langsam eingestehen, daß Andere das Problem längst besser gelöst haben als ich. Ein "richtiges" Notizprogramm musste her!

Davon gibt es zahlreiche. Ich habe damals™ ein wenig rumprobiert und fand zuerst einmal TiddlyWiki charmant.
Seinerzeit noch eine einzelne HTML-Datei, die alles enthielt, inkl. der Notizen.
Die Pflege der Notizen war aber schnell zur Bonusaufgabe geworden, weit weg von der Einfachheit von Textdateien. Außerdem entwickelten sich Browser weiter und es wurde immer lästiger, das in der Form noch weiterzuverwenden. Ein neues Tool musste her!

Davon gibt es zahlreiche. Ich habe damals™ ein wenig rumprobiert und fand als nächstes CherryTree charmant.
Es hatte alles, was ich wollte, sogar Bilder waren fortan kein Problem mehr. Die Performance rockt, das Interface ist angenehm kompakt.
Einige Jahre war Cherrytree mein Notizklotzbegleiter der Wahl.

www.giuspen.com/cherrytree
CherryTree

Es ist kompakt, bietet tolle Funktionen und ist sehr schnell. Aber eins hat mich immer gestört: Alles liegt in einer einzelnen Datenbankdatei.
Das ist kein besonders nachhaltiges Format und außerdem muss zum synchronisieren der Notizen die gesamte DB transferiert werden, selbst wenn ich nur ein Wort ändere.

Ich schaue mich also ein weiteres Mal auf dem freien Markt um. Und finde... Zim. Zim ist ein großartiges Program, es kann alles was es soll, sogar noch ein wenig mehr (zum Beispiel ein Inhaltsverzeichnis für einzelne Seiten).
Außerdem benutzt es wieder einfache Textdateien mit Wiki-Markup. Es performt super und noch dazu ist es python geschrieben, so kann ich Kleinigkeiten nach meinem Gutdünken einfach anpassen.

Bis heute ist Zim mein Notizkumpel der Wahl.

zim-wiki.org
ZimWiki

Frühlingsliebe


Und dann, rundum glücklich mit Zim, begegne ich plötzlich Obsidian.

O hai
Statt Wiki-Syntax verwendet es Markdown, der Editor ist großartig, das Interface sehr sexy und prima anpassbar (CSS, s.u.) und obwohl es auf Electron basiert, performt es sehr gut und fühlt sich stellenweise sogar flüssiger an als Zim (vor allem in Codeblocks).
Natürlich muss ich noch gründlicher testen, aber der erste Flirt war überraschend heiß!
Junge, Junge, was mach ich hier bloß?! Electron! Closed Source¹! Bloated!
Aber es ist auch kostenlos für privat, sehr crossplatform (Electron hat nicht nur Nachteile), und neben AppImage und Flatpak ist es auch in den arch-repos.

Ich glaube, ich lasse mich mal auf eine Affaire ein. Aber zuvor muss ich noch ein paar Furunkel entfernen:

  1. Ich mag es nicht, wenn Programme ihre eigene Titelleiste verwenden. Das ist und bleibt Aufgabe des Windowmanagers.

  2. Ich würde gerne `Esc` drücken können um es zu beenden oder noch besser² in den Systray zu minimieren.

  3. Außerdem soll es ein Icon haben. Schlimm, daß ich sowas nachrüsten muss!

  4. Den mitgelieferten Updater/Launcher benötige ich nicht. Den wegzulassen spart nochmal ne Viertelsekunde

Ich kann zwar ein bisschen JS aber electron ist mir neu. Na mal schauen. Ich werde das erstmal in situ hacken und falls möglich später daraus ein Plugin machen.

Also laden wir erstmal das Paket und entpacken es zum weiteren Sezieren:
wget "https://github.com/obsidianmd/obsidian-releases/releases/download/v0.14.2/obsidian-0.14.2.asar.gz"
gunzip "obsidian-0.14.2.asar.gz"
asar extract "obsidian-0.14.2.asar" "obsidian_asar"
cd "obsidian_asar"

# Haggedi-hack in der main.js...
patch --binary -p2 < "../my-patches.diff"

# Eine index.js erstellen, um den Starter zu umgehen
# Die benötigt noch @electron/remote 2.0.4
# also noch node_modules aus der app.asar kopieren 
# oder npm --install "@electron/remote"

cd ..

# zum testen:
electron17 obsidian_asar

# oder gepackt:
asar pack obsidian_asar obsidian-own.asar
electron17 obsidian-own.asar


Dazu ein schniekes Theme (Minimal), ein paar Plugins (Advanced Tables, Hider, Minimal Theme Settings)
und ein wenig custom CSS und schon sieht das doch nach was aus.
Jetzt noch fix ein kurzes Skript zum Konvertieren des Markups und schon kann ich damit arbeiten:

Obsidian, pimped

Und jetzt ab in den Praxistest. Mal sehen



1: Quasi. Welche Electron-App ist schon wirklich closed-source...
2: Die Startzeit ist unter 2s, was OK ist, aber instant ist immer besser.
╔═════════════════════════════════════════════════════════════════════╗
║ Akku Laden                                                          ║
║ Sonntag, 13. März 2022, 17:05                                inkeso ║
╚═════════════════════════════════════════════════════════════════════╝
Tja, was soll man machen, der Akku braucht ne Ladung und die 18650-Halter sind noch nicht geliefert oder auch nur bestellt. [TODO]

Niemand braucht Batteriehalter

Ladegerät hab' ich quasi da. Ein regelbares Netzteil. Solange man Spannung und Strom begrenzen kann, ist alles gut.

Mein Netzteil hat eine serielle Schnittstelle, also kann ich auch gleich den Ladevorgang aufzeichen.

Aufzeichnung läuft.

Diesen "Logger" für mein Voltcraft PPS-11360 hab ich mir in python zurechtgeschustert.
Der Code ist eher hässlich, daher ist das bisher nicht öffentlich.
Diese Version ist für Terminal, ich hab da auch ne GTK-Variante. Die sieht von innen noch schlimmer aus.
Wenn ich mal dazu komme das alles etwas aufzuräumen, werd ich das auch mal hochladen... [TODO]
Aber eigentlich geht es ja ohnehin nur darum, Daten zu loggen. Das geht auch ohne Fancy (aber mit is geiler).

Wie immer war ich zu zaghaft mit dem Ladestrom und hab unnötig lange gewartet, aber wieviel Saft habe ich denn nun reingepumpt?

Ladevorgang abgeschlossen

Die Taschenlampe hat ½W Leistung, ich kann also hoffentlich ca. 9 Stunden rumleuchten, bis der Akku wieder halbleer ist.
╔═════════════════════════════════════════════════════════════════════╗
║ Wundereditor                                                        ║
║ Donnerstag, 12. August 2021, 19:25                           inkeso ║
╚═════════════════════════════════════════════════════════════════════╝
Ich probiere von Zeit zu Zeit ganz gern mal neue Tools aus. Sei es um meinen Werkzeugkoffer zu erweitern oder als Ersatz zu bestehenden Tools.
Mein Stammeditor/IDE ist seit langer Zeit Geany (und wird es vermutlich auch bleiben), aber auch Geany hat so seine Ecken...

Und da kommt CudaText daher... sieht auf den ersten Blick vielversprechend aus, also zeig' mal.

Als erstes sind mir 2 Sachen positiv aufgefallen: Sehr schnell, sehr portabel (Keine Installation, ich kann das Programmverzeichnis inkl. meiner Konfig & Plugins einfach auf den nächsten Rechner kopieren, fertig).

Dann habe ich ein paar Stunden (!) mit der Konfiguration verbracht. Das ist nicht nötig, der funktioniert schon ab Werk, aber ich will ja wissen, was so alles geht. Ein paar der zahlreichen Plugins ausprobiert, Farbschema, Darstellung, Lexer nachinstallieren, sowas halt. Da ist sehr viel Konfigurierbar. Ein Füllhorn an Möglichkeiten. An der Stelle kann ich auch gleich die Dokumentation loben. Sie ist a) vorhanden, b) gut auffindbar und c) Umfangreich. Es gibt ein Wiki, ein Forum, Github und ich habe das Gefühl, der Hauptentwickler ist ganz gut hinterher.

Ähnlich wie mein aktueller GUI-Filemanger der Wahl (DoubleCommander) ist CudaText in Lazarus & Free Pascal gebaut. Damit ist das gleich mal so richtig crossplatform: Windows, Linux (Gtk2 oder Qt), macOS, *BSD... es gibt sogar einen inoffiziellen Haiku-Build...

Screenshot von CudaText, so wie ich ihn mir derzeit hingebastelt habe.

Alles Zusammen geht der jetzt in Runde 2: Ich werd den mal in der Praxis verwenden und gucken, was mich nervt oder begeistert.

Ein paar Sachen sind mir schon aufgefallen:

  1. Primary Copy-und-Paste per Auswahl und Mittelklick funktioniert nicht wie erwartet. Ja, man muss das vorher in der Konfig anschalten, aber auch dann fügt ein Mittelklick an der aktuellen Textcursorposition ein und nicht an der Mausposition. Das ist... seltsam.
    Ich habe auch keine Option gefunden, mit der man das Mittelklick-Verhalten auf "nativ" stellen kann.

  2. Es gibt nur ein Sidepanel mit "Tabs" für Symbolbaum, Projektbrowser, Dokumentliste und was man sonst noch so an Seitenleisten-Plugins an hat. Das ist bei Geany auch so, dort habe ich mir ein Plugin gebaut, damit ich den Symbolbaum extra habe, so daß Projektbrowser und Symbolbaum zeitgleich sichtbar sind. Ich bin noch nicht sicher, ob es mir möglich sein wird, das auch als Plugin in CudaText umzusetzen (wohl nicht).

  3. Ich finde es schade, daß im Projektbrowser immer nur genau ein Projekt angezeigt werden kann. Das macht den Projekt-Wurzelknoten irgendwie obsolet.

  4. Die Session-Verwaltung per Plugin fühlt sich umständlich an.


Aber es gibt eben auch echt coole Features:

  1. Multicursor ist flexibler als die strikte Spaltenauswahl bei Geany

  2. Tabs können wahlweise coloriert werden, man kann sich dateitypabhängige Symbole darin anzeigen lassen.

  3. bessere Calltips und Autocompletion

  4. Subblöcke in anderer Sprache (sowas wie ne HTML-Datei mit nem <style>-Block und nem <script>-Block) werden mit anderem Hintergrund versehen und im Gegensatz zu Geany korrekt gesyntaxhighlightet.

  5. Horizontales Lineal brauche ich eher selten, aber schön daß es da ist. Ist jedenfalls einfacher ablesbar als die Spaltennummer im Footer

  6. Dateivorschau bei Auswahl im Projektbrowser, inkl. Bilder!


Nun muss die Zeit zeigen, ob ich mir für die Negativpunkte Workarounds baue bzw. die Konfig verfeinere oder ob ich Geany treu bleibe und auf die paar coolen Features verzichte...
╔═════════════════════════════════════════════════════════════════════╗
║ RGB-LED Hautnah                                                     ║
║ Freitag,  9. Juli 2021, 22:57                                inkeso ║
╚═════════════════════════════════════════════════════════════════════╝
Ich hab' da diese "Loungeball"-LED, eine Farbwechsel-RGB-LED, die von sich aus einen langsamen Farbübergang wiedergibt.
Man sieht schön die 3 einzelnen Chips für rot, grün und blau und links den Controller.
Und wenn man dann noch 'ne Milchglaskuppel drüberstülpt kann man wunderbar die aus dem Physikunterricht bekannte additive Farbmischung sehen.
RGB-LED Seitenansicht. Der Bildausschnitt ist in echt ziemlich genau 1cm hoch. RGB-LED Dreinsicht (technischer Ausdruck). Durchmesser ist 5mm. Ich hab für dieses Bild endlich mal meinen gesamten Vorrat an Makroringen verwendet :) RGB-LED RGB-Farbmischung

Und hier die Magie der LED, der Milchglaskuppel und der additiven Farbmischung in modernster Bewegtbildtechnik:

Im Video sieht man besonders gut, wie schwer es Digitalkameras haben, das typische LED-blau (bei 0:13) korrekt abzubilden, vermutlich weil es so nah am UV-Bereich ist.
╔═════════════════════════════════════════════════════════════════════╗
║ Spielzeug?                                                          ║
║ Montag, 20. Januar 2020, 04:17                               inkeso ║
╚═════════════════════════════════════════════════════════════════════╝
Nicht, daß ich akut Bedarf hätte, aber zum Einen wollte ich eine etwas feinere Spitze im Sortiment haben, zum Anderen ist es nicht verkehrt einen ordentliches Gleichstrombrateisen zu haben, für falls mal Lötbedarf aber keine Steckdose vorhanden ist. Man weiß ja nie.
Also hab ich mir 'n TS100 gekauft. Tausend Youtuber können nicht irren. Kam gestern an, musste ich heute direkt mal probefahren.

Das Teil braucht 12-24V (Zigarettenanzünder, Akkupack, Netzteil, whatever), ich nehm' erstmal mein Tischnetzteil, da seh ich gleich wie doll es strömt und ich kann ihm bequem verschiedene Eingangspannungen testen.

Nu noch was zum löten: 5x5 5mm-LED-panel. In diesem Fall bestückt mit so farbwechselnden LEDs und brav einem Vorwiderstand pro LED. Das ganze dann einseitig auf Lochraster geroutet (was ein Akt! Und würde man 7x7 auch noch ohne Schummeln hinbekommen?).

5x5 5mm-LED-Panel, gebraten auf Lochraster per Gleichstromkolben
Testfahrt bestanden, der kann was. Handhabung geht klar, Heizen geht schnell genug, Lochraster im üblichen Rahmen klappt prima, auch bei 12V. Aber bei 24V schon doch deutlich besser. Klar, da hat er beinahe vierfache Leistung, das merkt man.
Wenn man gut Masse zu erhitzen hat (z.B. der fette +5V-Trace unten rechts), braucht man bei 12V-Betrieb Geduld. Oder man dreht vorher bisschen wärmer¹.

Den automagischen gyroskopbasierten Standbymodus find ich pfiffig: Wenn das Teil einige Zeit nicht wackelt (also rumliegt), fährt es auf die Temperatur runter und wenn man es dann anfässt wieder hoch. Und nach langer Bewegungslosigkeit geht es auch ganz aus.

Fazit: Er wird meine Ersa-Station zuhause nicht ersetzen (außer falls ich mal 0402 oder kleiner löten muss), aber als Feldkolben isser perfekt.



1: In der alternativen Firmware von Ralim kann man per Knopfdruck temporär die Temperatur erhöhen. Das könnte in einem Fall wie diesem oder z.B. für das Verzinnen von dicken Kabeln bei Zigarettenanzünderbetrieb im Kraftfahrzeugsbereich hilfreich sein.
╔═════════════════════════════════════════════════════════════════════╗
║ Crosscompiling                                                      ║
║ Mittwoch, 30. Januar 2019, 22:58                             inkeso ║
╚═════════════════════════════════════════════════════════════════════╝
Aargh, Crosscoding ist Mist. Ich hacke auf Arbeit R. Im Moment (wegen Redesign dieser Seite) privat aber PHP/JS/CSS/HTML. In der akuten Situation JS.

Bevor Fragen kommen: Diese Seite benötigt kein JS und funktioniert ohne dieses auch identisch (außer Teile vom Museum vielleicht). Die Skripte machen nur das Menu dynamischer, die Bilder Klickbar, ein bisschen Deko für den sonst leeren Seitenbereich und Syntaxhighlighting.

Nun schrob ich gerade im JS ein paar Funktionsdefinitionen runter, zuweisend, also in der Form

var tuwat = function(s) {
    ...
}


in R mache ich das genauso, aber per Konvention ist der Zuweisungsoperator nicht = sondern <-.

tuwat <- function(s) {
    ...
}


Gerade habe ich locker ne halbe Stunde gebraucht um herrauszufinden, was diese bescheuerte Fehlermeldung soll und warum mein Script nich läuft. *seufz* *facepalm* #dankegehirn