Visio VSTO

Für einen Kunden entwickelte ich ein kleines Tool, das dynamisch Visio Shapes erzeugt. Wer es nicht kennt, Visio ist Microsofts Antwort auf.. AutoCAD? keine Ahnung, was die Leute eigentlich damit machen. Man kann damit vektor-basiert zeichnen und es gehört in den größeren Kreis der Office Produkte. Also hat auch so ein hübsches Icon.

Die Doku dazu ist allerdings.. nun ja, man wird im Jahr 2023 immer noch begrüßt mit

Note
At this time, there is no reference documentation for the Visio primary interop assembly.

Ist das nicht entzückend. Das ist fast wie früher, mit ohne Google! :-)

Live äußerst korrekt

Völlig überraschend ist aufgefallen, dass die vor-Covid-gebuchte Veranstaltung nun doch tatsächlich stattfand und damit waren wir vergangenen Freitag abend im Theaterhaus in Stuttgart bei Methodisch Inkorrekt!

Was ist das? Das sind zwei Physiker, die einen äußerst unterhaltsamen Podcast betreiben, in dem (außer dem üblichen Geplänkel zur aktuellen Lage, Privatem und nicht-so privatem, dem Schwurbel der Woche, etc.) im wesentlichen 4 aktuelle wissenschaftliche Publikationen vorgestellt werden. Natürlich in einer äußerst reduzierten, populärwissenschaftlichen Form und eine sehr unterhaltsame Art des Vortrags.

Wie muss man sich Podcast live vorstellen? Ich hatte so meine Befürchtungen, dass eine Veranstaltung dieser Art nicht an die Vorstellung herankommt, die man nach monate.. nein.. jahrelangem Hören des Podcast für sich entwickelt hat. Aber das war völlig unbegründet. Auch live schaffen es Reinhard Remford und Nicolas Wöhrl, sich schlagfertig die verbalen Bälle zuzuwerfen. Es gibt natürlich auch was zu sehen, eine ganze Reihe netter Experimente, die ich hier aber nicht wegspoilern möchte. Und das Intro! Unbeschreiblich.

Wir und ich glaube auch alle anderen im Saal waren begeistert. Ganz großes Kino.

https://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gif

Tipp um dein Leben

Kennt ihr das schon? Ich dachte immer, einigermaßen flott und akkurat auf den Tasten zu sein, aber bei diesem kurzweiligen Geballer sehe ich relativ schnell relativ alt aus :-)

Das Schöne hierbei die pfiffige Entschuldigung: Man trainiert ja..

Meine Bewertung: https://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_h.gif (halber Punkt Abzug weil zu hart für lahmes Hirn)

Gestern bekam ich eine abuse Nachricht von Strato inklusive dem Hinweis, meine Webseite sei nun stillgelegt worden. Was war? Das WordPress-Plugin, mit dem ich diese Bewertungs-Sterne erzeuge wurde auf einmal als Schadcode erkannt. Grund wurde keiner angegeben, ich tippe auf das hohe Alter der Datei (war seit 2009 auf diesem Webspace).

Da sage ich nur: https://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_n.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_n.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_n.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_n.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_n.gif

Bei der Gelegenheit habe ich das Ding einmal etwas überarbeitet. Jetzt funktioniert es tatsächlich auch wieder und erscheint in Version.. haltet euch fest.. 2.0! Zum Download hier entlang.

Damit kann man solche Sachen machen:

https://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f_blue.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f_blue.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_n_blue.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_n_blue.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_n_blue.gif zwei von fünf in blau (oldschool)

https://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gifhttps://www.puls200.de/wp-content/plugins/Sterne/img/icon-rating-star_f.gif volle Punktzahl in gold

oder ganz wild könnte es so aussehen:

SternSternSternSternSternSternSternSternSternStern 17 von 20 in irgendeinem dunkelrot. Wie das alles funktioniert steht auf der Download-Seite.

Work theatre in agile development

Manchmal liest man einen Text, in dem ein vages Gefühl, das man lange hatte gut formuliert und auf den Punkt gebracht wird. Auf einmal entsteht ein klarer Gedanke. So ging es mir mit dieser netten Kolumne: "Performative Work". Bei einem Kunden konnte ich das einmal in voller Pracht beobachten. Der Typ, der immer telefoniert. Die andere, die immer mit einem Stapel unter dem Arm irgendwohin unterwegs ist. So war das früher. Die schaffen was, das sieht man doch!

Heute sind es wie im Artikel beschrieben diejenigen, deren farbiger Präsenz-Buppel in der Teams-Liste nur zwischen grün und rot hin und herspringt und garantiert niemals gelb oder (Gott bewahre!) grau wird. Diejenigen, die immer die Meetings eröffnen. Die Aufgaben in möglichst winzige Teilaufgaben zerlegen, damit der Abarbeitungs-Fluss stattlicher wirkt. Hauptsache, das Ticket ist "erledigt", auch wenn man nur die Hintergrundfarbe einer Schaltfläche geändert hat.

Entscheidend ist dabei die Größe des Teams. In kleinen Teams, sagen wir, maximal 5 Personen, funktioniert es nicht, weil jeder weiß, was die anderen machen. Darüber hinaus verliert man den Überblick, egal wieviel Dailys es gibt. Da können die virtuellen Aktenköfferchen geschwungen werden. Und so vergeht ein merklicher Teil der Arbeitszeit in Meta-Arbeit, deren ausschließliche Aufgabe es ist, Arbeit auch nach Arbeit aussehen zu lassen. Jeder formuliert präzise sein Tagewerk, zeigt vollendete Tasks und benennt offene Zuarbeiten. Warum funktioniert das Projekt trotzdem nicht? Warum dauert alles immer viel zu lang? Es kann ja nur an denjenigen liegen, die im Daily nicht perfekt vorbereitet sind, deren Technik im Moment des Sprechens spinnt oder die deklarieren, mit einer Task nicht rechtzeitig fertiggeworden zu sein weil, äh,.. zu komplex (Höchststrafe).

Ich sehe einen organisatorischen Überbau in größeren Teams dabei nicht unbedingt negativ. Es ist notwendig dass jemand, der nicht aktiv bis ganz unten eingebunden ist einen Gesamtüberblick behält und Arbeit in kritischen Fällen umverteilen kann. Einer, der offene Fragen schnell aus dem Weg räumt. Kurios ist aber die Eigendynamik, die so etwas zwangsläufig zu erhalten scheint, sobald man diesen Prozeß formalisiert.

Es verhindert auch ein Vorarbeiten bei Unterbelastung. Warum schon Tickets aus dem nächsten Sprint angehen? Das hebt nur die Erwartung des Sprint Masters und man bekommt in der nächsten Iteration mehr zu tun. Das wiederum erhöht die Gefahr der Verfehlung des Sprint-Ziels, des Leistungsmaßstabs des Sprint Masters gegenüber seinen Vorgesetzten.
Bizarrerweise gibt dieser nun selbst dieses Ziel vor. Wird es verfehlt, ist er also doppelt unfähig: Weder kann er aus seinen Leuten die passende Leistung herausholen, noch ihre Möglichkeiten richtig einschätzen. Dementsprechend reagiert er in kritischen Situationen extrem dünnhäutig und ist inhaltlich von der korrekten Präsentation der jeweiligen Arbeitsabschnitte getrieben.

Diese Logik verfolgen auch die Mitarbeiter, die, an ihren abgeschlossenen Tasks gemessen, die Abarbeitung derselben perfektionieren. Seht her, liebe Kollegen, das alles ist seit gestern von "Active" über "Review" nach "Done" geflossen. Genial, oder? Wie in einer Simulation eines Arbeitsablaufs ohne Störungen. Eine Inszenierung. Performance. Performative Work!

Entrümpelung

Schon mal überlegt was passiert, wenn ihr hinüber seid? So.. tot und nicht mehr lebendig? Ich meine jetzt nicht das Himmelreich, sondern das Weltenreich. Da bleibt für die meisten von uns einiges zurück. Und was passiert damit?
Schräg gegenüber hat jemand einen Entrümpeldienst bestellt, ich kann vom Schreibtisch direkt hinsehen. Die haben einen großen Container in die Fußgängerzone gestellt und da fliegt jetzt schon seit 2 Stunden alles rein, was einmal in der Wohnung war. Alles. Stühle, Bücher, Geschirr, Bilder, Klamotten in Säcken, you name it. Gut, manches fliegt auch daneben, Seitenwind dritter Stock, wissenschon. Wenig los in der Fußgängerzone heute. Und alles Restmüll, das Zeug will keiner mehr. Gerade eine Serie schöner alter Stühle.Nach dieser Person wird auf der Deponie ein eigener Hügel benannt, wenn das so weitergeht.

Beim letzten Todesfall in der Familie habe ich mir die Mühe gemacht, tatsächlich das ganze Gerappel zu trennen. Ernsthaft. Was will die Verwandtschaft. Was könnte noch praktisch sein. Was muss erhalten werden. Zum Verkauf. Zu verschenken. Altpapier. Altglas. Altmetall. Und erst ganz am Schluss Sperrmüll. Das hat natürlich Monate gedauert, aber bei den Bergen an Zeug hätte ich es nicht anders ausgehalten.

Solche Entrümpelungsunternehmen sind übrigens teuer. Liegt daran, dass sie nur einen Bruchteil der "Ware" weiterverkauft bekommen. Der Rest ist dann Deponie, und gewerbliche Anlieferung in größerem Rahmen kostet da richtig Geld.

Wie so oft sollte man sich vielleicht die Frage stellen, es erst gar nicht so weit kommen zu lassen. Kann man nicht den alten Massivholz-Schrank von Oma Frieda weiterverwenden oder rennt man zum skandinavischen Billigheimer und lässt sich ein pressspan-furniertes Pendant raus? Leute, bei der "Nachhaltigkeit" kann wirklich jeder mitmachen! Gar kein Problem! Ich bin wahrscheinlich ein Optimist an ein Umdenken zu glauben, bevor die Rohstoff-Preise komplett in den Himmel geschossen und Echtholz-Möbel überhaupt nicht mehr verfügbar sind. Oder man kauft einfach nicht ständig neues Zeugs.

Die immer älter werdende Gesellschaft ist der andere Faktor. Bis eine Generation abtritt, gibt es entweder schon gar keine Folge-Generation mehr oder diese ist schon Ü50 und hat längst alles selbst gekauft und eingerichtet. In der Folge bleibt beim Weggang eines alten Menschen einfach alles übrig.

Ordner. Küchengeräte. Papierstapel. Fotoalben. Freier Fall. Jetzt machen sie Pause. Ich brauche auch eine.

Zeichen auf Bäumen

Jeder kennt sie: Die bunten Markierungen auf den Bäumen. Doch was bedeuten sie eigentlich? Ist auf einem Baum mit einem roten Schrägstrich gekennzeichnet, so wird er gefällt. Steht eine Zahl auf dem Baum, handelt es sich um hochwertiges, fehlerfreies Holz, welches bei einer Submission versteigert wird und beispielsweise für Böden und Möbel genutzt oder in Klanginstrumenten verbaut wird. Damit der jeweilige Baum schnell wiedergefunden werden kann, wird er mittels GPS erfasst und der genaue Standort kartiert. Durch äußere Merkmale, zum Beispiel sogenannte „Chinesenbärte“ an Buchen kann auf das Bauminnere und somit auf die Qualität des Holzes geschlossen werden. Zwei horizontale, gelbe Linien kennzeichnen die „Rückegassen“. Die Holzfäller wissen durch diese Markierung, welche Wege sie nutzen dürfen um das gefällte Holz abzutransportieren. Die gelben Wellenlinien an den Bäumen markieren Habitatbäume oder ganze Habitatbaumgruppen. Das sind Einzelbäume oder Baumgruppen, die durch Besonderheiten (Großhöhlen, Spalten, Horst, Alter) Tieren und Pflanzen einen Lebensraum bieten und nicht gefällt werden.

(schamlos hier wiedergegeben aber gut zu wissen! )

Versuche mit FHEM

Seit ich beruflich in der Smart Home Welt mitmische kaufe ich mir hin und wieder privat das eine oder andere Produkt. Allerdings nicht, um das Haus hier smarter zu machen.. ich glaube das wird dadurch eher dümmer. Aber es gibt so viele unterschiedliche Standards und Technologien, da verliert man sonst den Überblick. Man muss schon hin und wieder etwas in die Finger nehmen.

Bei mir ist das Zentrum des Chaos das Herz der Automation ein Raspberry Pi (Model B, das gute Gerät ist knatteralt gemessen an Raspberry Lebenszeiten) mit aufgestecktem TCM 310 Modul für Enocean Sensoren. Der Pi ist hier im WLAN und hat außerdem einen Conbee2 Stick für ZigBee Telegramme.

Anbei einige im Netz zusammengesammelte Tips, die ich frecherweise ohne Nennung der Quelle zusammenfasse, für mich und weitere Interessierte.

Conbee Gateway koppeln

define deCONZ HUEBridge 192.168.188.X (your GW IP)
attr deCONZ httpUtils 1
set deCONZ active

Damit ist das Pairing aktiv. Den Namen "deCONZ" kann man natürlich beliebig ändern. Das wird hier nur verwendet, da man vorher den Conbee2 mit deconz auf dem Raspberry in Betrieb genommen hat. Wie das geht steht auf der dresden-elektronik Github Seite.

Dann geht man in der Phoscon Webanwendung auf "Gateway" und rechts unten hinter "Erweitert" klickt man "App verbinden". Alle bereits in Phoscon eingelernten Lampen werden durch die Bridge automatisch in FHEM angelegt, auch die Gruppen. Die Sensoren kann man folgendermaßen hinzufügen:

get deCONZ sensors

Dabei geht ein Fenster auf, von dem man sich am besten einen Screenshot macht. Denn die dort angezeigten Nummern braucht man gleich um die Sensoren über die Konsole anzulegen.

In meiner Bridge eingelernte Sensoren
define Sensor1.Humidity HUEDevice sensor 4

So kann man z.B. den Feuchtigkeitssensor hinzufügen. Der letzte Parameter ist dabei die oben angezeigte Id. Jetzt kann man noch ein paar Attribute hinzufügen, z.B. den Anzeigenamen per alias verschönern oder icon und stateFormat anpassen.

Um mit den Sensoren eine nette Historie aufzuzeichnen, folgt man einfach dieser Anleitung. Spätestens jetzt müsste man etwas mit dem archaischen UI angewärmt sein. Es ist nur was für Fans. Die iPad Fraktion hat natürlich was anderes. Aber schon mal ganz nett.

Invertiert

Irgendwo habe ich einmal gelesen, Xing sei wie Tinder, nur umgekehrt: Attraktive junge Frauen schreiben nerdigen Typen und werden von denen ignoriert. :-)

Aber es stimmt: Meine Kontaktliste besteht sicherlich zu einem Viertel aus diesen jungen Damen. Seit ich Freiberufler bin, hat es sogar noch zugenommen. Ich kann dann aber auch nicht den Kontakt ignorieren oder blockieren. Schließlich weiß man nie, wie es im Leben weitergeht. Vielleicht bin ich irgendwann einmal froh über eine vermittelte Festanstellung.

Für erwähnenswert zu halten ist das Format dieser Zuschriften: Das Gros schickt unverlangte Stellenbeschreibungen, die "hervorragend zu mir passen würden". Offensichtlich haben sich diese Menschen nicht die Mühe gemacht, mein Profil zu lesen, sonst wäre klar, das ich als süddeutscher Software-Entwickler eher nicht für eine IT-Admin Stelle an der Nordsee in Frage komme.

Wie ich von mir bekannten Menschen, die auf Partnerbörsen unterwegs sind weiß, ist es dort genau dasselbe: Da halten auch einige Herren mit dieser Schrotflinten Taktik in die Menge der Mädels rein und hoffen, eine wird sich schon melden, die passt. Klappt aber nicht. Niemals wird das klappen, es sei denn, wir hätten irgendwann wieder die Situation dass 10 Bewerber auf eine offene Stelle kommen.e.

Wie kann man sich nur so dämlich anstellen. Als Recruiter muss ich fachlich wissen, welche gesuchten Fähigkeiten beschrieben sein können. Das ist nämlich nicht unbedingt der genau gleichlautende Begriff im Profil!! Und dann lese ich dieses Profil genau durch und schreibe der Person eine auf sie zugeschnittene Mail. Ja, das kostet Zeit. Aber ich kann euch garantieren, dann werden die Nerds auch antworten. Natürlich nicht alle. Aber manche. Außerdem würde es helfen, die "Ich suche" Rubriken auf Job-Suchende abzugleichen. Klar, auch manche Verheiratete möchten raus aus ihren Beziehungen. Aber Singles auf der Suche sind sicher diejenigen, die einen neuen Partner wollen.

Bis dahin werde ich weiter freundlich abschlägig antworten. Ja klar, das mache ich jedes Mal. Außer natürlich die geschroteten Nordsee-Zuschriften, da swipe ich weiterhin direkt nach links.

Windows network printing trouble

Mit dem Windows-Update vom Oktober funkionierte hier mein Netzwerk-Drucker nicht mehr. Der Druckdialog öffnete sich erst nach einer gefühlten Ewigkeit. Beim Erstellen des Druckauftrags erschien dieser dann auch in der Drucker-Warteschlange, allerdings wurde dieser dann nie abgearbeitet. Ich vermute, dass das eine Nebenwirkung der Patches ist, die aktuell unter "Windows Printing Nightmare" durch die Presse gehen.

Ich benutze einen alten Kyocera Laserdrucker, der bei mir als Netzwerkdrucker an einem Raspberry Pi hängt. Als ich den Drucker direkt an den PC gesteckt hatte, funktionierte alles wieder. Mein Laptop, der mit den Updates immer etwas hinterherhängt (wegen seltener Nutzung), funktionierte eine Weile noch, bis er letzte Woche ebenfalls das Windows Update abkriegte. Zu dem Zeitpunkt war ich mir dann sicher, dass es an dem Windows Patch lag.

Das Problem konnte ich am Ende damit lösen, dass ich einfach den Netzwerkdrucker entfernt und neu hinzugefügt habe. Vermutlich hilft das nur in meinem Einzelfall, aber vielleicht verschont es euch vor den wütenden Flüchen, die ich heute schon ausgestoßen habe..

The horrors of PHP

Wenn herauskommt, dass ich tatsächlich noch PHP bei manchen Kunden einsetze, bin ich vermutlich bald arbeitslos. Aber ich kann alles erklären!!! Das hat.. historische Gründe. Und für manche Zwecke ist das Framework tatsächlich ziemlich brauchbar, vor allem aus dem Preis-Leistungswinkel heraus betrachtet.

Heute ein kleines Schmankerl, das mich einen halben Tag gekostet hat und mit einem Schlag gegen die Stirn endete, den ich heute noch spüre. Ausgangssituation ist die Befüllung eines Array mit weiteren Strukturen (auch assoziative Arrays). Dabei werden manchmal neue Einträge erzeugt, während in anderen Fällen ein bereits bestehender Eintrag ergänzt wird.

Consider this code:

$main = array();

$first = array(); // erster Eintrag
$first["bla"] = "blup";

$main[] = $first;

// wenn man diesen Eintrag noch ändern will
$change_it = end($main);
$change_it["bla"] = "blip";

// schaun wir mal
print_r($main);

Huch, immer noch "blup"! Ist klar, end() liefert nur eine Kopie. Man muss sich also eine Referenz holen. Dies gelingt mit dieser ziemlich "eingängigen" (höhö) Syntax:

end($main);
$change_it = &$main[key($main)];
$change_it["bla"] = "blip";

Jetzt ist es fein, in "$main" ist des nun korrekt mit "blip" überschrieben. Doch damit nicht genug. Jetzt kommen wir zum eigentlichen Spezialisteneinsatz.

// Ein weiteres Element hinzufügen
$change_it = array();
$change_it["bla"] = "blop";
$main[] = $change_it;
// schaun wir jetzt mal
print_r($main);

Ach du Sch****! Was ist denn hier passiert?


Array
(
    [0] => Array
        (
            [bla] => blop
        )

    [1] => Array
        (
            [bla] => blop
        )
)

Meine Erwartungshaltung wäre gewesen, dass durch die Zuweisung der Neuanlage des Arrays der Referenz-Bezug aufgehoben ist. Aber das ist nicht der Fall! Füge ich folgendes ein:

unset($change_it);

funktioniert es wie erwartet:

Array
(
    [0] => Array
        (
            [bla] => blip
        )

    [1] => Array
        (
            [bla] => blop
        )
)

Man darf also nie vergessen, dass die Normalität nur ein dünner Schleier vor der Anarchie und dem Chaos ist.. ne quatsch, ich meine natürlich PHP nur ein Wrapper über eine C-Libary ist, deren haarige Knochen immer mal wieder hier und dort herausgucken. Musch halt wissa! Meine Güte.