Mein Design

Mein Design

Mit einem Lasercutter kann man jede Menge nützliche Sachen herstellen. Vor zwei Jahren habe ich mal ein schickes Raspberry-Gehäuse gefunden, das konnte ich einfach runterladen und mir beim Makerspace meines Vertrauens auslasern lassen. Das Ergebnis ist schick geworden, genau so ist der Raspi jetzt als Medienabspielgerät im Einsatz.

Aber wie komme ich an ein Gehäuse nach Mass, für eigene Projekte?

Das einfachste wird wohl ein kostenloser Online-Generator sein. Davon gibt es einige, mit unterschiedlich vielen aber doch ziemlich überschaubaren Features. Man gibt die gewünschten Masse ein, und bekommt ein PDF oder ein SVG das man direkt an den Cutter verfüttern kann.

Genauso einfach kann man Boxen wohl direkt in Inkscape erstellen. Dazu muss man ein Plugin installieren, das habe ich aber nicht ausprobiert.

Die nächste Stufe dürfte der Boxdesigner sein. Erstmal ist das auch so ein Online-Generator, aber dafür mit einer geradezu überwältigenden Zahl von Funktionen. Nett gemacht, und wer es braucht wird dafür sicher gern die 13 Euro im Jahr bezahlen. Hätte ich auch fast gemacht. Aber nur fast. Was ich gerade bauen will ist etwas zu speziell für den Designer. Mein Plan war, das grundlegende Design da raus zu ziehen, und den Rest in Inkscape

Da das aber auch eine Menge Planung erfordert, und noch dazu sehr fehlerträchtig ist, habe ich mich weiter umgesehen. Und so bin ich zur — für mich — idealen Lösung gekommen:

Schneidvorlage (ein Teil davon)

Schneidvorlage (ein Teil davon)

Mit FreeCAD hatte ich mich vor einiger Zeit schonmal beschäftigt, als ich Bedarf an 3D-Planung hatte. Was ich da nicht wusste ist, dass auch FreeCAD sich durch Plugins erweitern lässt. Und richtig genug: da gibt es eines namens LCInterlocking — auf den zweiten Blick verrät der Name dass man damit Interlocking Designs für den Laser Cutter machen kann. Leider ist die Doku echt dürftig, aber alles was ich wissen musste konnte ich dem Video entnehmen das in der Readme verlinkt ist.

Auch bei dieser Lösung kommt man um Nachbearbeitung in Inkscape nicht herum, aber die komplizierten Sachen sind da schon erledigt.

Man erhält so ein großes SVG mit den Schneidvorlagen. Die Kür besteht jetzt noch darin, die Einzelteile platzsparend aufzuteilen, so dass möglichst wenig Verschnitt anfällt. Das geht manuell, ich habe es einfach mal von SVGnest machen lassen. Dazu habe ich ein Rechteck in das SVG eingefügt das die maximale Arbeitsfläche des Lasers angibt. Das SVG lade ich dann in das Tool, und nach ein paar Klicks sortiert ein Algorithmus alles für minimalen Verschnitt.

Disclaimer: Ob die Vorlage jetzt tatsächlich zum Schneiden taugt muss sich noch rausstellen. Sobald ich das weiß, und sobald ich ein vorzeigbares Ergebnis habe, werde ich auch verraten was ich da gebastelt habe… :-)

Eine alte Weisheit besagt folgendes:

Wenn man erstmal einen Hammer in der Hand hat sieht alles aus wie ein Nagel.

Wenn man also halbwegs mit dem gängigen Unix-Werkzeugkasten (grep, cut, sed und awk) umgehen kann ist man geneigt diese Tools immer einzusetzen wenn Informationen aus Dateien zu extrahieren sind. Damit auf strukturierte Daten loszugehen ist allerdings nicht nur fehlerträchtig sondern auch alles andere als elegant.

Vor längerer Zeit habe ich hier mal auf jq hingewiesen. Das ist die Lösung wenn man in seiner Eigenschaft als Shell-Skript Daten aus JSON-Datensätzen braucht, mittlerweile konnte ich da schon einige Male drauf zurück greifen.

Jetzt habe ich was vergleichbares für XML-Daten gesucht, und wie es aussieht ist XMLStarlet das Werkzeug der Wahl (Disclaimer: ich habe nicht lange gesucht, NOCH bin ich für Gegenvorschläge offen ;-) ).

Erste Anwendung ist wieder, einen ungetrübten Blick auf das gewählte Dokument zu werfen. Mein Feed ist ein insofern ein schlechtes Beispiel als dass der Code ziemlich sauber formatiert ist, aber der Trick wird klar (die Sache mit dem Backslash am Zeilenende setze ich mal voraus):

Als nächstes interessieren mich vielleicht die Titel der letzten Artikel. Dazu selektiere ich alles was auf den XPath //rss/channel/item matched, und lasse mir jeweils den Wert von title ausgeben. Gefolgt von einem Zeilenumbruch:

Aber wann habe ich denn meinen letzten Artikel veröffentlicht? Dazu matche ich nur auf das erste Element und lasse mir davon das pubDate geben, zur besseren Lesbarkeit wieder gefolgt von einem Zeilenumbruch:

Abschließend wüsste ich gerne noch worum es in meinem letzten Artikel ging. Auch das können wir formschön aus dem Feed extrahieren, allerdings wird das Kommando natürlich entsprechend unübersichtlicher. Wir matchen wieder auf das erste Item, lassen uns den Titel und einen Zeilenumbruch geben. Dann matchen wir innerhalb des Items (!) auf category. Dem Inhalt dieser Felder stellen wir jeweils einen Spiegelstrich voran, die Zeile beenden wir wieder mit dem Zeilenumbruch. So sieht das Kommando dann fertig aus:

Das Netz hält einige Artikel mit Beispielen parat, aber genau wie dieser Text kratzen die nur an der Oberfläche. XMLStarlet ist sicher ein Spielzeug mit dem man sich bei Gelegenheit mal länger auseinandersetzen sollte. Zumindest macht es den Standard-Werkzeugkasten im Umgang mit XML-Daten absolut obsolet.

Fortschritt durch pkill

Fortschritt durch pkill

Letztes Wochenende habe ich wieder mal ein ISO-Image auf eine SD-Karte geschrieben, wie üblich an der Kommandozeile mit dd. Es ging um ein größeres Image, also hatte ich eine Menge Zeit um mich darüber zu ärgern dass ich den Fortschritt nicht sehe.

Heute habe ich einen Tweet gesehen der sagt dass man da in Zukunft eine Option für haben wird. Aber da wurde auch ein Workaround erwähnt den ich noch nicht kannte: mit pkill -USR1 dd kann man dem laufenden Prozess ein freundliches Signal schicken, daraufhin spuckt der seinen aktuellen Fortschritt aus. Wie das aussieht zeigt der Screenshot.

Fortschritt durch Tunnel

Fortschritt durch Tunnel

Eine andere Möglichkeit — optisch schicker, aber man das Tool ist nicht überall installiert — stellt der Pipe Viewer (pv) dar. Da teilt man sein dd auf zwei Kommandos auf und setzt das pv dazwischen.

Technisch ist das vielleicht nicht der optimale Weg, nett ist aber dass man damit universell Pipes überwachen kann, nicht nur für dd. Die Manpage hat ein paar interessante Beispiele.

Bislang hatte ich echt Glück mit meinen Notebooks. Die Platten sind stabil geblieben, und auch die Software hat mich nicht hängen gelassen. Backups habe ich sträflich vernachlässigt. Ich habe welche gemacht, ja. Aber manuell, und somit nur alle paar Monate mal. Mea Culpa.

OK, jetzt also richtig. Und mit meinem Werkzeugkasten.

Mein Handy sichere ich schon seit ich Android benutze mit rsync. Alle verwertbaren Daten werden so nachts in ein Verzeichnis auf meinem Backup-Server gesynct. Da habe ich also immer eine Kopie des aktuellen Standes. Um auch historische Versionen zu haben sichere ich dieses Verzeichnis auf dem Server nochmal mit dirvish. Das macht sogenannte Hardlink-Backups, so dass ich mehrere historische Stände haben kann in denen identische Dateien nicht mehrfach Plattenplatz brauchen.

So ähnlich machen wir das jetzt auch mit dem Notebook. weiterlesen

Heutzutage fallen an allen möglichen Stellen irgendwelche Daten im JSON-Format an. Und das ist gut so. Trägt nicht so auf wie XML, ist dafür aber flexibler — und vor allem besser definiert — als irgendwelche selbstausgedachten CSV- oder INI-Formate.

Man ist schlecht beraten, zu versuchen dermassen komplexe Formate mit Shell-Tools wie awk, sed oder grep zu Leibe zu rücken. Reguläre Ausdrücke sind eine tolle Sache, aber in dieser Situation fallen die einem früher oder später auf den Fuß. Bislang habe ich meist eine Sprache mit P bemüht: Python, Perl oder zur Not PHP. Die können JSON importieren, danach arbeitet man auf den gewohnten Datenstrukturen. Also auf Arrays und Objekten, und die kann man schön sauber nach dem durchkämmen was man sucht.

Jetzt hat aber ein neues Tool seinen Weg in meinen Werkzeugkasten gefunden: jq. weiterlesen

tmux in der Praxis

tmux in der Praxis

Wenn ich am Rechner sitze habe ich üblicherweise nur zwei Fenster auf: ein Terminal und einen Firefox. Letzteren zum Browsen, in der Shell mache ich (fast) alles andere. Also mailen, chatten, programmieren, konfigurieren und was sonst noch so anfällt.

Was im Web-Browser die Tabs sind ist in der Shell der Terminal Multiplexer. Ich brauche nicht mehrere Fenster zu öffnen, ich kann einfach mehrere Anwendungen in einem Fenster ‚fahren‘. Beim Betrieb auf einem Server kommt noch der Komfort dazu, dass ich mich am Multiplexer an- und abmelden kann wie ich will, die Anwendungen laufen einfach weiter. So habe ich meinen Mail- und Chat-Client auf einem Server laufen, dann muss ich mich nicht immer an IRC & Co. anmelden wenn ich online gehe, und ich habe immer die Backlogs die ich bei Interesse überfliegen kann.

Jahrelang war ich mit GNU Screen sehr zufrieden. Ich hatte mir da eine nette Statuszeile gebastelt die mir sagt welche ‚Fenster‘ ich habe, zusätzlich wurden mit einem kleinen Perlskript ein paar Infos eingeblendet: IP-Adresse, System Load, Akkustatus und dergleichen.

Auf meinem neuen Firmennotebook habe ich Byobu gefunden. Das ist eine Art vorkonfiguriertes Screen (dachte ich zumindest) das ab Werk ganz ähnlich aussieht wie meine angepasste Variante. Über Tastendruck kann man da eine Menge konfigurieren, alles in allem eine nette Sache. Irgendwann wollte ich die Infos in der Statuszeile aber anpassen. Genau genommen wollte ich einen Eintrag haben der mir den aktuellen Status aus meinem Zabbix anzeigt. Also habe ich mir angesehen wie Byobu aufgebaut ist.

Zu meiner Überraschung lag da gar kein Screen drunter. Kann man auch machen, per Default nutzt Ubuntu aber tmux. Darüber hatte ich schon viel gutes gelesen, konnte mich aber doch irgendwie nicht von meinem gewohnten Screen trennen. Da ich aber unwissend mehrere Monate mit tmux zufrieden war habe ich das dann doch noch mal überdacht, und was soll ich sagen? Ich bin begeistert!

Ich habe mir wieder ein Skript gebastelt das für die Statusleiste interessante Daten zusammenklaubt, diesmal in Python. Und ich habe mir angeeignet wie man mit aufgeteilten Fenstern arbeitet. Das geht zwar auch im Screen, aber im tmux macht es dagegen wirklich Spaß, und das ist einer der größten Vorteile.

Wenn ich was für den Mikrocontroller entwickle habe ich oben einen großen Vim mit dem Code, unten links kann ich in einer kleinen Shell Kommandos absetzen — compilieren und flashen beispielsweise, und unten rechts sehe ich Debug-Ausgaben vom Controller.

Oder ich habe auf einem anderen Schirm groß meinen Mailclient. Unten sind drei Zeilen meines Chatclients zu sehen, wenn da eine interessante Aktivität angezeigt wird kann ich auf Tastendruck wechseln. Der Chat wird dann oben groß, und der Mailclient ist unten in den drei Zeilen zu sehen.

Ich bin sehr zufrieden damit, und ich ärgere mich dass ich nicht schon wesentlich eher umgestiegen bin…

Ich habe dem Blog eine neue Kategorie verpasst: unter Tool-Time möchte ich in Zukunft Teile meines Werkzeugkastens vorstellen. Damit meine ich nicht unbedingt physisches Werkzeug — Hammer, Schraubenschlüssel & Co. — sondern insbesondere Software.

Vor einiger Zeit habe ich den Arbeitgeber gewechselt. Auf meinem letzten Arbeitsplatzrechner hatte ich — genau wie zu Hause — Arch Linux. Leider konnte ich den aber bei meinem letzten Kunden nicht benutzen, da ich da mit dem Kundenrechner arbeiten musste. Den Kunden bin ich jetzt genau wie den Arbeitgeber los, auch das alte Notebook habe ich nicht mehr.

Von Arch bin ich zwar immer noch sehr angetan, um bei meinem neuen Arbeitgeber aber schnell ‚an die Schüppe‘ zu kommen habe ich das von Dell vorinstallierte Ubuntu auf dem Notebook gelassen.

Da bin ich dann erstmal mit den Standardwerkzeugen gefahren. Klar habe ich ein paar (für mich) unverzichtbare Werkzeuge installiert, aber ich habe weder meine Konfiguration von zu Hause mitgebracht, noch ähnlich viel Sorgfalt auf die Feineinstellung aufgewandt. Vor ein paar Wochen hat es mich dann aber doch gepackt, und seitdem konvergieren die beiden Welten. Ich habe eine Menge Konfiguration von zu Hause übernommen, aber auch einige völlig neue Tools für mich entdeckt. Irgendwie bin ich dann angefangen fast meinen kompletten Werkzeugkasten in Frage zu stellen, und ich muss sagen: das Ergebnis gefällt mir. :-)

Nachdem auf dem Computer die meisten Werkzeuge optimiert waren fiel dann mein Blick auf mein altgedientes HTC Desire… und auch das kommt Heute mit einer komplett anderen Ausstattung daher als noch vor vier Wochen. An der Stelle gebe ich zu dass ich immer noch auf ein Nexus 4 schiele, aber mit der neuen Software gefällt mir eigentlich auch der alte Fernsprecher noch ganz gut…

Langer Rede kurzer Sinn: hier ist die neue Kategorie, und hier gilt noch mehr als in den anderen Kategorien: ich freue mich über jede Rückmeldung! Nichts Fast nichts ist so gut dass man es nicht noch verbessern könnte… ;-)