Dienstag, 10. Juni 2014

Mehr Thinkpad Mysterien

Inzwischen habe ich den T440s nun schon eine ganze Weile. D.h ich habe mich gut eingewöhnt und er gefällt mir immer noch gut. Nur der Mangel an separaten Maustasten für den Trackpoint nervt gewaltig - ich bin einfach nicht der Touchpad-Typ. Und trotz der kleinen Software-Tricks, die ich beim letzten mal erwähnt hatte verrutscht der Maus-Cursor doch viel zu oft unbeabsichtigt beim Tippen, wenn man nicht höllisch aufpasst. Aber naja.

Die Tastatur ist trotz neuer Tastenform angenehm und ich habe mich leidlich an das neue Layout bezüglich der home/end/ins/del Tasten gewöhnt (auch nicht so gut wie früher). Einen Aspekt, der in diversen Foren bemäkelt wurde ist die neue Position der PrtSc-Taste, die nun zwischen AltGr und Ctrl. liegt.

Prt-was???? Ja diese Taste gibts wirklich. Traditionell liegt sie gemeinsam mit dem ebenso obskuren SysReq rechts neben F12 und oberhalb von Ins. Was die macht? Meist ist sie so belegt, dass man damit Screenshots machen kann. Waaaaahsinnig nützlich. Habe ich schon oft manchmal noch nie verwendet. Oh und einigermaßen dekorativ ist sie und trägt zum harmonischen Gesamtbild der Tastatur bei. Also völlig verständlich, dass die Netzgemeinde eine Revolution anzettelt, wenn Lenovo es wagt, eine so essentielle Taste willkürlich zu verlegen.

Unbill!


Aber was ist das? Wieso will der Compi meinen mühevoll geschriebenen Text nicht speichern? Was soll das heißen, die Datei könne nicht gespeichert werden und wieso read-only Filesystem?!? dmesg zeigt auch verdächtigen Kram an und erzählt was von r/o remount:

SysRq : Emergency Remount R/O
EXT4-fs (dm-1): re-mounted. Opts: (null)
EXT4-fs (dm-4): re-mounted. Opts: (null)
EXT4-fs (sdb1): re-mounted. Opts: (null)
Emergency Remount complete

EXT4-fs (dm-1): ext4_writepages: jbd2_start: 13312 pages, ino 657835; err -30
EXT4-fs (dm-1): ext4_writepages: jbd2_start: 13312 pages, ino 657835; err -30
EXT4-fs (dm-1): ext4_writepages: jbd2_start: 13312 pages, ino 657835; err -30

[...]

Geht da etwa die Platte über den Jordan? Soviel Pech kann man doch garnicht haben!?! Also erstmal ruhig Blut und neu starten. Mehrere Tage alles problemlos, doch dann passiert es wieder!

Als es dann zum dritten mal passiert ist eine merkwürdige Beobachtung: kurz zuvor ist noch ein Screenshot Window aufgegangen. Wieso das? Nach einigem Nachdenken, Googeln und Kopf gegen die Tischkante hauen die Erleuchtung:

Na klar! LINUX hat doch so praktische Tastenkombis für Notfälle – z.B. Alt+SysReq+s für ein Notfall-Sync oder Alt+SysReq+i für ein SigKill an alles außer init oder Alt+SysReq+u für ein Notfall RO-remount. Momentmal – was? 

Nun muß man wissen, dass ich in Sachen Computer etwas speziell bin und ein US-Layout bevorzuge. Und damit ich damit auch deutsche Umlaute hinkriege habe ich mir ein xmodmap File gebaut, in dem AltGr als Modeswitch Key belegt wird und ich also mit AltGr+u ein "ü" bekomme: 

! use Alt_R as Mode_switch key (AltGR)
keycode 108 = Mode_switch Mode_switch
[...]

keycode  30 = u U udiaeresis Udiaeresis
[...]


Sehr praktisch das! Außer man hat direkt neben der AltGr Taste eine PrtScr/SysReq Taste und löst mit seinen Wurstfingern versehentlich einen Alt+SysReq+u aus.

GRUMPF! Die Taste muss ich wohl lahmlegen.

Mal sehen, was für ein Mist mir als nächstes passiert ....

Samstag, 8. März 2014

Thinkpad killing

In meinem letzten Post hatte ich ja voller Stolz von meinem neuen Thinkpad erzählt. Inzwischen haben sich ein paar Dinge ereignet, die meine Begeisterung etwas dämpfen. Kurz nach dem Post war das Ding tot – mausetot. Der freundliche Inder von der Lenovo Hotline konnte nicht helfen und so wurde das gute Stück eingeschickt und hat offenbar eine neues Motherboard bekommen. Heute war nun der große Tag, an dem ich das Gerät wieder entfenstert habe. Plattentausch ging wieder problemlos und die Debian-Installation war flugs erledigt. Doch als ich dann in das frische System booten wollte, kam die Ernüchterung: das Ding bleibt wieder beim Booten im Splashscreen stecken und ich komme nichtmal mehr ins BIOS Setup - genau wie beim letzen mal. Megagrumpf!

Das gibt's doch nicht! Wie kann das sein? Zweimal hintereinander?!? Ein wenig Web Recherche hat mir dann die Augen geöffnet - Lenovo hat offenbar das UEFI-boot Problem, das auch bei Samsung Laptops schon so manchen Brick verursacht hat in seinem BIOS noch nicht behoben! D.h. man kann sein Motherboard zerstören, indem man eine neue Platte einbaut, LINUX installiert oder wasweißichnoch. Wäre mir das bewusst gewesen, hätte ich offenbar durch geeignete BIOS-Settings (UEFI Boot komplett disabeln) vorbeugen können. Und irgendwann hätte man dann ein hoffentlich gepatchted BIOS flashen können ...

Im Nachhinein wird mir nun einiges klar: Beim ersten mal hatte ich im BIOS Setup UEFI und legacy boot zugelassen. LINUX lief einwandfrei und auch die getauschte Platte war kein Problem - bis zu dem Moment, als ich von einer externen Festplatte booten wollte und versehentlich den UEFI-Boot ausgewählt hatte. Diesmal hatte ich im BIOS noch gar keine Änderungen vorgenommen und so hat das Teil versucht, von der frisch installierten Platte im UEFI-Modus zu booten.

Also werde ich am Montag wieder mit dem freundlichen Inder telefonieren und UPS wieder neuen Umsatz bescheren...

Sonntag, 26. Januar 2014

Wo zum Geier ist der blöde Windows Product Key?

Nachdem mein Thinkpad T61p nun echt langsam sehr alt wird habe ich mir ein neues Notebook angeschafft: ein Thinkpad T440s.
  • Intel Core i7-4600U CPU
  • 12GB RAM
  • 500GB Hard Disk
  • 16GB NGFF SSD
  • Intel/NVIDIA GeForce GT 730M Kombi; HDMI+VGA
  • Full-HD non-glare TFT
  • Ethernet, WLAN, WAN, Bluetooth
  • 3xUSB3.0, SD-Card-Reader, Fingerprint-reader
  • und natürlich mein geliebtes US-Tastaturlayout
Schöne Maschine, gefällt mir sehr - Ultrabook, aber mit Thinkpad-Tugenden. Zunächst habe ich erstmal die Platte getauscht: 500Gb raus 1.5 TB rein. Dann LINUX installiert (Debian Jessie). Auf dem Weg dahin hat es zwar ein paarmal gehakt, aber letztlich habe ich alles zum Laufen bekommen und mag die Kiste schon sehr gern. Eigentlich habe ich nur zwei Punkte die ich zu bemängeln habe:
  • Wo sind die Maustasten für den Trackpoint geblieben???
    ohne die ist der TP fast nicht zu gebrauchen, denn wenn der Touchpad aktiv ist ist das Daumen-Tappen einfach zu unpräzise und der Mauszeiger rutscht einem weg. Das ist echt nicht toll gelöst!
  • Es wurde im Netz schon viel über das neue Tastatur-Layout gemeckert. Insgesamt finde ich es nicht schlecht. z.b. hatte ich schon immer PageUp/Down auf die nutzlosen Forward/Back Tasten neben den Cursportasten gelegt und finde das total praktisch. Nur die Anordnung von Home/End/Insert/Delete ist echt nicht sehr ergonomisch. Da muss ich jedes mal innehalten und genau schauen, wo ich draufdrücken muss. Aber vielleicht schleift sich das ja bald ein...
Bezüglich des ersten Punkts  muss ich zugeben, dass das neue Riesen-Touchpad echt gut ist. Früher habe ich den Touchpad immer deaktiviert, weil ich ihn eh nicht brauchen konnte und er beim Tippen stört. Dieser ist aber echt nützlich und mittels synaptiks habe ich ihm beigebracht, inaktiv zu werden, sobald ich zu tippen anfange. So kann man ganz gut arbeiten.

Auf dem Rechner war ein Windows 8 64bit dabei. Nun will ich ja primär unter LINUX arbeiten. Das Windows kommt dann bei Gelegenheit in die Virtualbox. Damit habe ich es grade nicht eilig, aber ich wollte mir dafür schonmal den Product Key aufschreiben, damit ich ihn dann zur Hand habe. Nur wo ist der? Früher war der ja gewöhnlich in Form eines Aufklebers irgendwo auf dem Gehäuse zu finden. Offenbar hat sich das mit Win8 geändernt - jedenfalls konnte ich keinen finden. Etwas Suche im Netz bestätigte das und ich fand heraus, dass der Key nun im BIOS gespeichert sei. Toll - und wie finde ich den nun???

Zwar mangelt es nicht an guten Ratschlägen und kleinen Tools unklarer Herkunft wenn man aus einem laufenden Win8 System heraus den Key auslesen möchte, aber das hilft mir nun nicht wirklich weiter. Also weitersuchen - Microsoft dokumentiert das Verfahren im Dokument Microsoft Software Licensing Tables ausführlich. Bei der Gelegenheit habe ich gelernt, dass diese Methode schon seit Windows Vista unterstützt wird. In dem Dokument wird dargelegt, dass die entsprechende Information in speziellen ACPI-Tables namens SLIC und MSDM abgelegt wird. Der für uns hier relevante ist hier MSDM Table mit folgendem Aufbau:

  Offset  length    Description
  0       4         signature
  4       4         length
  8       1         revision
  9       1         checksum
  10      6         OEM ID
  16      8         OEM table ID
  24      4         OEM revision
  28      4         Creator ID
  32      4         Creator revision
  36      variable  Software licensing structure

Gut - aber wie komme ich da ran? Ich habe mal im Package manager gesucht:

> aptitude search "?description(ACPI tables)"
i A acpica-tools   - ACPICA tools for the development and debug of ACPI tables

Das klingt gut! Und diese Paket enthält unter anderem dies:

  acpidump - ACPI table dump utility

Das klingt perfekt! Und so fand ich dies:

    > sudo acpidump
  [...]
  MSDM @ 0x00000000BCE42000
  0000: 4D 53 44 4D 55 00 00 00 03 06 4C 45 4E 4F 56 4F  MSDMU.....LENOVO
  0010: 54 50 2D 47 4A 20 20 20 70 21 00 00 50 54 45 43  TP-GJ   p!..PTEC
  0020: 02 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00  ................
  0030: 00 00 00 00 1D 00 00 00 xx xx xx xx xx 2D xx xx  ........xxxxx-xx
  0040: xx xx xx 2D xx xx xx xx xx 2D xx xx xx xx xx 2D  xxx-xxxxx-xxxxx-
  0050: xx xx xx xx xx                                   xxxxx

  [...]

Voila - da ist er ja, der Key :-)

Nachtrag

Inzwischen habe ich noch einen zweiten, noch einfacheren, Weg entdeckt:

  > sudo hexdump -C /sys/firmware/acpi/tables/MSDM

Und wer weniger Wert auf Hexdump-Ästhetik legt, kann stattdessen auch einfach cat verwenden - weniger hübsch, aber in Sachen Product Key genauso geeignet.


Samstag, 4. Januar 2014

FabLab Regensburg

Eigentlich wollte ich nur einen Dienstleister für einen kleinen Lasercutter-Auftrag finden (Sick of Beige Case Variante für meinen Bus Pirate) bin dann aber bei der Suche auf etwas viel Spannenderes gestoßen: Es gibt in Regensburg neuerdings ein FabLab! Und um den Zufall perfekt zu machen, war dort heute Tag der offenen Tür. Also habe ich spontan beschlossen mal hinzufahren und mir das anzusehen.

Trotz trübem Wetter waren eine Menge Leute gekommen und die Bude war entsprechend voll. An allen Stationen wurde gefachsimpelt, diverse Objekte bestaunt und einfach Erfahrungen ausgetauscht – ein recht buntes Völkchen hatte sich versammelt.



3D Printer

Das FabLab hat zwei 3D-Drucker: einen von Fabbster und (zu meiner großen Freude) einen Ultimaker 2. Letzteren habe ich nämlich schon eine Weile auf meiner persönlichen Wunschliste.

i

 

3D Scanner

Und damit die Drucker auch was zu tun haben gab es zwei 3D-Scanner. Einen für kleine Gegenstände:


Und einen größeren, basierend auf einer Kinect, mit dem heute Personen in 3D-Modelle verwandelt und anschließend ausgedruckt wurden:



Lasercutter


In der Ecke fand ich dann den Lasercutter, der gerade damit beschäftigt war, kleine Teile für Spielwürfel-Bausätze aus Sperrholz zu schneiden. Letztere fanden v.a. bei den zahlreich erschienenen Kindern großen Anklang.

Und da ich ein File für mein SickofBeige Gehäuse in der Hosentasche hatte habe ich mal diesen netten Herrn davon überzeugt, zwischendurch mal  was mit Acryl zu machen ;-)

Hier ist die Vorlage schon mal geladen:
Und hier ist der Cutter fleißig dabei, mein Gehäuse zu schneiden:

Fazit

Der kleine Ausflug hat sich gelohnt. Ich glaub, da geh ich öfter mal hin, wenn ich als Ergänzung zu einem Elektronikprojekt mal was geschnittenes oder gedrucktes brauche.

Mittwoch, 1. Januar 2014

ISP-Adapter Wettrennen

Inzwischen haben sich in meiner Bastelkiste diverse AVR ISP-Adapter angesammelt und so bin ich auf den Gedanken gekommen, mal ein Wettrennen zwischen den Geräten zu veranstalten.

Die Kontrahenden

  1. Atmel STK500
    Der Klassiker unter den AVR Evaluation boards. Auch als ISP zu gebrauchen.
  2. Diamex/Stange ISP-PROG
    stk500v2 kompatibel und bisher mein Standard-Programmer. Mit 2 DIP-Switches kann man die Versorgungsspannung ein bzw. ausschalten und von 5V auf 3.3V umstellen.
  3. Diamex ERFOS-PROG-S
    Ebenfalls stk500v2 kompatibel. Keine Spannungsversogung des Hosts. Signalpegel 3.3V. Er kann neben AVR auch STM32 und NXP/LCP µC programmieren und als USB2UART Adapter verwendet werden.
  4. USBasp Chinaböller (mit modifizierter USBasp Firmware)
    Wie im letzten Post beschrieben: super kleiner und recht solider USBasp-clone mit kleinen Hardware-Differenzen. 5V Versorgungsspannung.
  5. USBasp Chinaböller (mit stk500 firmware)
    gleiche Hardware wie 3. aber mit der stk500 Firmware des usb-avr-lab
  6. Bus Pirate v3.6
    Das Schweizer Taschenmesser der digitalen Kommunikation. Eigentlich kein ISP Adapter, aber avrdude unterstützt ihn trotzdem – vermutlich in einer Art bitbanging mode.

Methode


Wir werden mit avdude den Flash Speicher eines Arduino Duemillanove auslesen, gegen das erhaltene File verifizieren und schließlich das Hexfile wieder in den µC flashen. Praktischerweise gibt avrdude auch gleich an, wie lang eine Operation gedauert hat. Für den ISP-PROG sieht das entsprechenede Kommando (read flash) dann so aus:

$ avrdude -p m328p -c stk500 \\
  -P /dev/ttyACM0 -U flash:r:foo.hex:r
avrdude: AVR device initialized and ready to accept instructions
Reading |###################################| 100% 0.02s

avrdude: Device signature = 0x1e950f
avrdude: reading flash memory:
Reading |###################################| 100% 6.34s

avrdude: writing output file "foo.hex"
avrdude: safemode: Fuses OK
avrdude done.  Thank you.


Ich habe jede Operation (r/v/w) mit jedem Programmer 3x ausgeführt und die Zeiten haben maximal in der letzten signifikanten Stelle um ± 1 differiert.

Die aktuell auf dem ATmege328p des Arduinos befindliche Firmware liefert ein raw-Hex File von 2280 Byte. Beim Lesen des Flash Speichers werden aber offenbar die kompletten 32kB des Controllers gelesen – daher die große Abweichung zwischen den verschiedenen Operationen.

Siegerehrung

Hier die Ergebnisse in absteigender Geschwindigkeit:
  1. Diamex ERFOS-PROG-S
    read      2.9s  (11.3 kB/s)
    verify    0.2s
    write     0.28s  (8.14 kB/s)
  2. Chinaböller (USBasp)
    read      5.25s  (6.24 kB/s)
    verify    0.37s
    write     0.46s  (4.95 kB/s)
  3. Diamex/Stange ISP-PROG
    read      6.3s  (5.2 kB/s)
    verify    0.45s
    write     0.55s  (4.15 kB/s)
  4. Chinaböller (stk500v2)
    read    17.7s  (1.85 kB/s)
    verify    1.24s
    write     3.56s  (0.64 kB/s)
  5. Atmel STK500
    read      41.6s  (0.79 kB/s)
    verify     2.90s
    write      3.17s  (0.72 kB/s)
  6. Bus Pirate
    read     126s  (0.26 kB/s)
    verify    8.5s
    write     9.0s  (0.25 kB/s)

Fazit

Das STK500 ist überraschend lahm in vergleich zu den diversen billig-Programmern. Als USBasp schlägt sich der Chinaböller ganz gut gegen den ISP-PROG, der ERFOS-PROG-S steckt beide in die Tasche. Sehr überraschend fand ich den enormen Geschwindigkeitsabfall den der Chinaböller erlebt, wenn man die stk500 Firmware des USB-AVRlab verwendet. Und über die Geschindigkeit beim Bus Pirate schweige ich lieber ;-)

Für den Hobbybereich ist die Geschwindigkeit natürlich komplett wurscht, aber interessant finde ich es dennoch. Der Chinaböller landet auf alle Fälle in meinem Bastelkit für unterwegs!


Montag, 30. Dezember 2013

Chinesischer AVR-ISP

Im Rahmen des chinesischen Advents-Kalenders habe ich u.a. eine Tüte voll USB-AVRISP Adapter gekauft. Im Gegensatz zu den meisten Programmern, die man in der Bucht findet steckt dieser in einem soliden und sehr schlanken Metallgehäuse und preiswert war er obendrein. Da er extrem klein ist, fand ich ihn perfekt als Begleiter, wenn man mal zum Basteln "on the road" ist. Hier ein Familienfoto und eine Nahaufnahme mit Flachbandkabel:

 
Also gleich mal anstecken:

[283553.080099] usb 5-2: new low-speed USB device number 2 using uhci_hcd
[283553.253147] usb 5-2: New USB device found, idVendor=03eb, idProduct=c8b4
[283553.253151] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[283553.253154] usb 5-2: Product: USBHID
[283553.253156] usb 5-2: Manufacturer: zhifengsoft
[283554.564881] generic-usb 0003:03EB:C8B4.0001: hiddev0,hidraw0: USB HID v1.01 Device [zhifengsoft USBHID] on usb-0000:00:1d.0-2/input0
[283554.564939] usbcore: registered new interface driver usbhid
[283554.564944] usbhid: USB HID core driver


Hm - ein HID device? Ich hatte jetzt eher mit ttyUSB oder sowas gerechnet - merkwürdig. Laut eBay Verkäufer wird das Ding von Progisp 1.72 unterstützt. Davon hab ich noch nie gehört und eine Google-Suche führt mich auf diverse, in elaboriertem Chinglish verfasste Seiten mit wenig vielversprechenden Screenshots voller fernöstlicher Schriftzeichen. Sowas will ich nicht haben, sondern meinen geliebten avrdude! Also weitersuchen. Die Beschreibung sagt etwas von USBasp - den kennt avrdude. Also testen wir das mal:

$ avrdude -p m328p -c usbasp -U flash:r:foo.dat:i
avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

avrdude done.  Thank you.


Das war wohl nix - offenbar sollte der USBasp die ID 16c0:05dc haben und nicht 03eb:c8b4 wie mein chinesisches Kleinod (Typ: MX-USBISP-V3.00, 2013-03-15 laut silkscreen). Also mal nach der ID googeln. Aha - ich bin nicht allein mit meinem Problem: Das Ding ist zwar hardwaremäßig fast ein USBasp, aber das weiß seine Firmware nicht. Zu allem Überfluss kommt die originale USBasp Firmware nicht mit dieser Hardware klar - grumpf!

Also erst mal aufmachen - nur wie? So:

Einfach die Metallhülse in Richtung USB-Stecker schieben. Von innen bietet sich dann folgendes Bild:

Nach einiger Suche hab ich dann eine Lösung gefunden: im GreenPhotons-Blog von [uwezi] fand sich ein Eintrag zu genau dem Ding. Offenbar braucht die USBasp Firmware einen kleinen Tweak, um auf diesem Progammer zu laufen. Auf obiger Seite kann man auch eine bereits gepatchte Firmware herunterladen, falls man zu feige zum compilieren ist. Das folgende ist nicht auf meinem Mist gewachsen, ich gebe es aber hier wieder, damit zukünftige Leidensgenossen einen weiteren Anlaufpunkt bekommen:
  1. Zunächst besorge man sich die USBasp Firmware
  2. Dann muß diese leicht modifiziert werden:
    in main.c finden sich die Zeilen

    int main(void) {
      uchar i, j;

      /* no pullups on USB and ISP pins */
      PORTD = 0;
      PORTB = 0;
      /* all outputs except PD2 = INT0 */
      DDRD = ~(1 << 2);


    die letzte Zeile muss so verändert werden:
      DDRD = 0x00;
  3. Compilieren
  4. Metallgehäuse abziehen
  5. Auf der Unterseite der Platine finden sich zwei Kontakte, die mit "-> up <-" gekennzeichnet sind. Diese mit einem Stück Schaltdraht überbrücken. Nun ist das Ding im self-programming mode
  6. Mit einem anderen ISP-Programmer die neue Firmware flashen z.B.:
    avrdude -p m8 -c stk500v2 -P /dev/ttyACM0 \\
      -U flash:w:20130212_mega8_usbisp.hex:i
  7. Schaltdraht-Brücke raus, Gehäuse drauf
  8. Fertig
 Nun meldet sich das gute Stück korrekt als USBasp:

[285378.660075] usb 5-2: new low-speed USB device number 3 using uhci_hcd
[285378.832112] usb 5-2: New USB device found, idVendor=16c0, idProduct=05dc
[285378.832122] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[285378.832129] usb 5-2: Product: USBasp
[285378.832135] usb 5-2: Manufacturer: www.fischl.de


Und auch avrdude ist nun zufrieden:

avrdude -p m328p -c usbasp -U flash:r:foo.dat:i
avrdude: AVR device initialized and ready to accept instructions

Reading |###################################| 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: reading flash memory:

Reading |###################################| 100% 5.26s

avrdude: writing output file "foo.dat"
avrdude: safemode: Fuses OK
avrdude done.  Thank you.


Sehr gut! Und zuguterletzt sei noch erwähnt, dass man angeblich auch mit unmodifizierter USBasp Firmware arbeiten kann, wenn man ein paar Lötbrücken vom Board entfernt - ich fand die Firmware-Modifikation aber eleganter.

Einsatz mit AtmelStudio

Im Gegensatz zu avrdude unterstützt AtmelStudio den USBasp nicht. Das heißt aber nicht, das der Programmer nicht dennoch zum Einsatz kommen kann! Zwei Lösungsmöglichkeiten habe ich gefunden:
  1. Eine stk500 kompatible Firmware auf den Programmer flashen (z.B. die von Christian Ulrich).
  2. avrdude unter AtmelStudio als externen Programmer einbinden. Auf microcontroller.net hat user [eduardo] hat eine Anleitung dazu verfasst.

Fazit

Ein netter kleiner Programmieradapter, der nach obiger Firmware-Transplantation durchaus empfehlenswert ist.

Sonntag, 22. Dezember 2013

Chinesischer Adventskalender

Es ist mal wieder so weit: Weihnachten naht! Glühwein und Lebkuchen überall und die Menschen mit den beiden X-Chromosomen wollen ständig auf Weihnachtsmärkte gehen. Aber es gibt auch Adventstraditionen für Nerds - bzw. wenn es sie nicht gibt muß man sie halt erfinden und das habe ich getan!

Ladies & Gentlemen voller Stolz präsentiere ich den chinesischen Adventskalender für Geeks. Und das geht so: So ca ab Anfang/Mitte November jeden Tag auf Ebay gehen und interessante Kleinigkeiten bei fernöstlichen Anbietern schießen. Z.B. Header-Pins, Jumper-Wires, USB2TTL Adapter, Mikrocontroller-Boards, ICSP-Adapter, Flachbandkabel, Wannensteckern, Crimpzangen, etc. etc. Und ab Anfang Dezember kommt dann fast jeden Tag der Postbote mit seinem Schlitten und man darf wieder ein Türchen Luftpolsterumschlägchen öffnen – große Freude!

Als Hintergrundmusik empfehle ich das beliebte Weihnachtslied "Stille Bucht".