Daniel Brunner: Mein Blog: Posts tagged 'IT'urn:https-www-dbrunner-de:-tags-IT-html2023-02-17T10:07:47ZWebinar zu: Tipps und Tricks für die Vertragsgestaltung in der IT-Beschaffungurn:https-www-dbrunner-de:-blog-2023-02-17-webinar-zu-tipps-und-tricks-fu-CC-88r-die-vertragsgestaltung-in-der-it-beschaffung2023-02-17T10:07:47Z2023-02-17T10:07:47ZDaniel Brunner
<p>Gemeinsam mit Herrn Rechtsanwalt Daniel Holtorf (Fachanwalt für IT-Recht in der Kanzlei <a href="https://www.colegum.de">CO.LEGUM Dr. Reinhardt & Partner Rechtsanwälte mbB</a>) richte ich für die IHK Lahn Dill am 25. Mai 2023 ein Webinar zum Thema “Tipps- und Tricks für die Vertragsgestaltung in der IT-Beschaffung” aus.</p>
<h2 id="worum-geht-es">Worum geht es?</h2>
<p>Sie beschaffen neue Hardware oder Software für Ihr Unternehmen, schreiben ein neues ERP-Projekt aus oder aktualisieren Ihren Webshop und die Warenwirtschaft? Wir zeigen Ihnen anhand unserer langjährigen Beratungspraxis auf, wie Sie Ihre Verträge fair und zielsicher gestalten können.</p>
<p>Neben den üblichen Vertragskonditionen zeigen wir Ihnen auf, wie Sie Ihren Beschaffungsprozess besser organisieren können und welche Mittel es gibt, um final ein funktionierendes System erhalten.</p>
<h2 id="für-wen-ist-es-gedacht">Für wen ist es gedacht?</h2>
<p>(IT-)Einkäufer/innen, Mitarbeiter/innen in der IT, Projektleiter/innen für IT-Projekte, Geschäftsführer/innen, kaufmännisch leitende Angestellte</p>
<h2 id="wie-teilnehmen">Wie teilnehmen?</h2>
<p>Die Anmeldung und Teilnahme am Webinar erfolgt über die IHK Lahn-Dill (Kosten: 50 Euro) unter diesem <a href="https://unikam.de/eventmanager/lahndill.ihk.de/veranstaltung/179/1/RECHT004#RECHT004.23.1">Link</a></p>Webinar zu: Was tun nach einer Datenschutzverletzung?urn:https-www-dbrunner-de:-blog-2022-05-17-webinar-zu-was-tun-nach-einer-datenschutzverletzung2022-05-17T07:32:49Z2022-05-17T07:32:49ZDaniel Brunner
<p>Gemeinsam mit Herrn Rechtsanwalt Daniel Holtorf (Fachanwalt für IT-Recht in der Kanzlei <a href="https://www.colegum.de">CO.LEGUM Dr. Reinhardt & Partner Rechtsanwälte mbB</a>) richte ich für die IHK Lahn Dill ein Webinar zum Thema “Was tun nach einer Datenschutzverletzung?” aus.</p>
<h2 id="worum-geht-es">Worum geht es?</h2>
<p>Es geht schneller als man denkt. Man verletzt geltendes Datenschutzrecht. Beinahe täglich. Doch wann ist ein Handeln tatsächlich erforderlich? Wann ist die zuständige Aufsichtsbehörde zu kontaktieren? Was tut die Behörde in einem solchen Fall? Wie geht man intern mit einer Datenschutzverletzung um?</p>
<p>Kurzum: Was tun nach einer Datenschutzverletzung?</p>
<p>In diesem Seminar wollen wir Ihnen eine Hilfestellung bieten und Sie dafür sensibilisieren, nicht in Panik oder Schockstarre zu verfallen, sollte es zu einem möglichen Verstoß kommen. Die Ruhe zu bewahren und die weiteren Schritte bewusst abzuwägen ist unter dem Strich die beste Idee.</p>
<p>Darüber hinaus werden wir den Teilnehmern einige Tipps dazu geben, wie man mögliche Verstöße schnell und gründlich analysieren kann und natürlich, wie zukünftige Verstöße zu verhindern sind.</p>
<p>Wie genau Reaktion, Analyse und Prävention ablaufen können, werden wir Ihnen ganz praktisch anhand von Fallbeispielen in diesem Seminar näherbringen.</p>
<h2 id="wie-teilnehmen">Wie teilnehmen?</h2>
<p>Die Anmeldung und Teilnahme am Webinar erfolgt über die IHK Lahn-Dill (Kosten: 50 Euro) unter diesem <a href="https://www.ihk-lahndill.de/recht/wettbewerb-und-schutzrechte/cybersicherheit/was-tun-nach-einer-datenschutzverletzung-online-seminar/5537518">Link</a></p>Doch noch eine De-Mailurn:https-www-dbrunner-de:-blog-2022-05-13-doch-noch-eine-de-mail2022-05-13T12:13:03Z2022-05-13T12:13:03ZDaniel Brunner
<p>Ich erhielt heute eine Offerte für einen Gewerberegister-Eintrag. Diese erweckte den Eindruck, als sei sie vom örtlichen Registergericht an mich gesendet worden. Nun vermute ich, dass die Staatsanwaltschaft schon genügend dieser Schreiben vorliegen hat, aber ich dachte mir, vielleicht kennen sie dieses und die dort angegebene IBAN noch nicht.</p>
<p>Die Homepage der hiesigen Staatsanwaltschaft wurde neu gestaltet und weißt als Kontaktmöglichkeiten die Anschrift, eine Telefonnummer und eine Faxnummer aus. Eine E-Mail-Adresse ist nicht angegeben, es findet sich aber im Impressum eine E-Mail-Adresse für "… die Inhalte der Staatsanwaltschaft Marburg
<br />unter ‘Staatsanwaltschaften / Staatsanwaltschaft Marburg’ mit Unterstrukturenund für
<br />Pressemeldungen mit der Herausgeberangabe ‘StA Marburg’".</p>
<p>Da wollte ich dann nicht hinschreiben, also habe ich mein De-Mail-Postfach bei der Deutschen Telekom (leider ja von denen gekündigt) geöffnet und diese Offerte in das EGVP der Staatsanwaltschaft gesendet. Damit habe ich schon zwei De-Mails gesendet und zwei empfangen.</p>Webinar zu Smart Contractsurn:https-www-dbrunner-de:-blog-2022-03-02-webinar-zu-smart-contracts2022-03-02T14:29:53Z2022-03-02T14:29:53ZDaniel Brunner
<p>Gemeinsam mit Herrn Rechtsanwalt Daniel Holtorf (Fachanwalt für IT-Recht in der Kanzlei <a href="https://www.colegum.de">CO.LEGUM Dr. Reinhardt & Partner Rechtsanwälte mbB</a>) richte ich für die IHK Lahn Dill ein Webinar zum Thema “Wie funktionieren eigentlich diese Smart Contracts?” aus.</p>
<h2 id="worum-geht-es">Worum geht es?</h2>
<p>Im Zusammenhang mit Anwendungen der Künstlichen Intelligenz liest man gelegentlich auch von sogenannten Smart Contracts, einer besonderen Art, Verträge als Programme abzubilden und umzusetzen.</p>
<ul>
<li>Doch wie genau funktioniert ein Smart Contract?</li>
<li>Warum ist diese Vertragsart „smart“?</li>
<li>Worin liegen die vermeintlichen Vorteile?</li>
<li>Und ist diese Art des Vertragsschlusses wirklich etwas grundlegend Neues?</li></ul>
<p>Diese und andere Fragen wollen die Referenten in diesem Online-Seminar erörtern. Nach einer Darstellung der technischen Grundlagen soll an praktischen Beispielen erklärt werden, inwieweit von einer Weiterentwicklung im Vertragsrecht gesprochen werden kann.</p>
<p>Das Seminar schließt mit einem Block für Fragen und Anmerkungen und alle Teilnehmenden erhalten im Anschluss ein informatives Handout mit den Inhalten und weiterführenden Quellen.</p>
<h2 id="wie-teilnehmen">Wie teilnehmen?</h2>
<p>Die Anmeldung und Teilnahme am Webinar erfolgt über die IHK Lahn-Dill (Kosten: 50 Euro) unter diesem <a href="https://www.ihk-lahndill.de/recht/kuenstliche-intelligenz-und-vertragspraxis-online-seminar/5425564">Link</a></p>Webinar zu Agilen Methoden in der Softwareentwicklungurn:https-www-dbrunner-de:-blog-2021-07-14-webinar-zu-agilen-methoden-in-der-softwareentwicklung2021-07-14T10:55:12Z2021-07-14T10:55:12ZDaniel Brunner
<p>Nach unserem erfolgreichen ersten Webinar zu <a href="/blog/2021/05/21/webinar-zu-kostensteigerung-bei-it-projekten/">Kostensteigerungen in IT-Projekten</a> haben wir die Rückmeldungen aufgegriffen und ein weiteres Webinar, nun im zweiten Halbjahr, entworfen:</p>
<p>Gemeinsam mit Herrn Rechtsanwalt Daniel Holtorf (Fachanwalt für IT-Recht in der Kanzlei <a href="https://www.colegum.de">CO.LEGUM Dr. Reinhardt & Partner Rechtsanwälte mbB</a>) richte ich für die IHK Lahn Dill ein Webinar zum Thema “Agile Software-Entwicklung: Praktische Ratschläge zur Vertragsgestaltung und -umsetzung” aus.</p>
<h2 id="worum-geht-es">Worum geht es?</h2>
<p>Agile Methoden sind in der Software-Entwicklung mittlerweile weit verbreitet. Darüberhinaus wird das Agile Manifest in diesem Jahr zwanzig Jahre alt. Agile Methoden bieten für eine Reihe von Projekten Vorteile. In der Ausführung kommt es dennoch regelmäßig zur Differenzen und es stellt sich oftmals die Frage, wie man agile Methoden sinnvoll vertraglich regeln soll.</p>
<p>In einem ersten Schritt zeigen wir, welche Probleme agile Methoden eigentlich lösen wollen. Nach der Vorstellung verbreiteter Methoden erläutern wir, welche Vorhaben sich dafür besonders gut eignen. In einem zweiten Schritt präsentieren wir Ihnen Spannungsfelder in der Zusammenarbeit und stellen diesen praxiserprobte vertragliche Arrangements gegenüber.</p>
<p>Abschließend geben wir Ihnen in einem dritten Schritt Handlungsoptionen und Empfehlungen für bereits laufende agile Projekte an die Hand.</p>
<p>Dem Referat schließt sich ein Block für Fragen und Anmerkungen an und alle Teilnehmenden erhalten im Anschluss ein Handout mit den Inhalten und verwendeten Materialien.</p>
<h2 id="wie-teilnehmen">Wie teilnehmen?</h2>
<p>Die Anmeldung und Teilnahme am Webinar erfolgt über die IHK Lahn-Dill (Kosten: 50 Euro) unter diesem <a href="https://www.ihk-lahndill.de/system/vst/1243526?id=367339&terminId=628231">Link</a>.</p>Unterlage zum Webinarurn:https-www-dbrunner-de:-blog-2021-07-06-unterlage-zum-webinar2021-07-06T15:01:37Z2021-07-06T15:01:37ZDaniel Brunner
<p>Da wir beide kein Freund von verteilten Foliensätzen sind, haben Daniel Holtorf und ich zu unserem Webinar “Wie mit Kostensteigerungen in IT-Projekten umgehen?” eine Unterlage erstellt, die Sie <a href="/pub/2021-06-22-Kostensteigerungen-Handout.pdf">hier</a> herunterladen können.</p>Webinar zu Kostensteigerung bei IT-Projektenurn:https-www-dbrunner-de:-blog-2021-05-21-webinar-zu-kostensteigerung-bei-it-projekten2021-05-21T07:21:22Z2021-05-21T07:21:22ZDaniel Brunner
<p>Mit Herrn Rechtsanwalt Daniel Holtorf (Fachanwalt für IT-Recht in der Kanzlei <a href="https://www.colegum.de">CO.LEGUM Dr. Reinhardt & Partner Rechtsanwälte mbB</a>) richte ich für die IHK Lahn-Dill am 8. Juni 2021 von 10.00 bis 11.30 Uhr ein Webinar zum Thema “Wie mit Kostensteigerungen in IT-Projekten umgehen?” aus.</p>
<h2 id="worum-geht-es">Worum geht es?</h2>
<p>IT-Projekte haben das Zeug zur unerwarteten Kostensteigerung. Sahen Sie sich auch schon derartigen Entwicklungen gegenüber? In diesem Online-Seminar beleuchten wir Kostensteigerungen in IT-Projekten aus technischer und rechtlicher Sicht.</p>
<p>In einem ersten Schritt wollen wir gemeinsam typische Ursachen für Kostensteigerungen erörtern. Damit vertiefen Sie Ihr Verständnis für die Besonderheiten von IT-Projekten. Anschließend werden diese in einem zweiten Schritt rechtlich eingeordnet und Sie erhalten Hinweise und Ratschläge zur professionellen Vertragsgestaltung für Ihr nächstes IT-Projekt. Ist es schon zu spät und die Kosten laufen aus dem Ruder? Im dritten Teil des Seminars geben wir Ihnen drei Handlungsempfehlungen, wie Sie in Ihrem Projekt konkret weiter verfahren können und das Heft des Handelns wieder übernehmen können.</p>
<p>Dem Referat schließt sich ein Block für Fragen und Anmerkungen an und alle Teilnehmenden erhalten im Anschluss ein Handout mit den Inhalten und verwendeten Materialien.</p>
<h2 id="wie-teilnehmen">Wie teilnehmen?</h2>
<p>Die Anmeldung und Teilnahme am Webinar erfolgt über die IHK Lahn-Dill unter diesem <a href="https://www.ihk-lahndill.de/system/vst/1243526?id=362618&terminId=621198">Link</a>.</p>
<h2 id="unterlage-zum-webinar">Unterlage zum Webinar</h2>
<p>Statt Folien haben wir hinterher eine Unterlage zum Webinar erstellt, die Sie <a href="/pub/2021-06-22-Kostensteigerungen-Handout.pdf">hier</a> herunterladen können.</p>Mein Glück im Neulandurn:https-www-dbrunner-de:-blog-2021-01-14-mein-glu-CC-88ck-im-neuland2021-01-14T11:17:02Z2021-01-14T11:17:02ZDaniel Brunner
<p>Nachdem ich schon meine erste De-Mail versendet und sogar auch schon eine erhalten habe, wollte ich neulich mein Glück erneut herausfordern:</p>
<p>Ich habe gesehen, dass es mittlerweile die AusweisApp2 zur Nutzung der Online-Funktionen des Personalausweises auch für Linux gibt. Zwar nicht offiziell gepflegt, aber es gibt das Programm aus den Paketquellen zum installieren. Also habe ich den acht Jahre alten Kartenleser (damals als Werbegeschenk erhalten) herausgekramt. Nach etwas Gefummel mit den Treibern für das Lesegerät konnte ich die Online-Funktionen des Personalausweises nutzen.</p>
<p>Zugegeben, viele Anwendungen gibt es nicht, aber ich konnte den Punktestand in Flensburg (keine Einträge) abrufen und, was sich wirklich als praktische Sache erwies: Mit dem Personalausweis kann man sich an MeinELSTER anmelden und Steuererklärungen einreichen. Das geht deutlich bequemer als mit den Zertifikaten, denn die vergesse ich regelmäßig zu verlängern.</p>
<p>Ich war wirklich erstaunt, alles ging ohne Probleme. Es gab sogar noch die Treiber für das alte Lesegerät, nur das Installationsskript kopierte die wohl an die verkehrte Stelle.</p>
<p>Ich bin im Neuland angekommen! Ich kann mein Glück kaum fassen.</p>Update zu De-Mailurn:https-www-dbrunner-de:-blog-2020-12-19-update-zu-de-mail2020-12-19T12:22:23Z2020-12-19T12:22:23ZDaniel Brunner
<p>Wenige Tage nach meinem Brief an T-Online erhielt ich eine eine Bitte um Entschuldigung für die lange Bearbeitungszeit und die Nachricht, man wolle mir nun alsbald die Zugangsdaten zukommen lassen. Und in der Tat, seit gestern habe ich alle Unterlagen beisammen und konnte mich erstmals im De-Mail-Konto anmelden. Dies ist sehr spartanisch eingerichtet und wirkt dafür relativ langsam, aber gut. Nach mehr als drei Monaten Wartezeit bin ich nun drin!</p>Die Programmiersprache F#urn:https-www-dbrunner-de:-blog-2020-12-06-die-programmiersprache-f2020-12-06T15:52:51Z2020-12-06T15:52:51ZDaniel Brunner
<p>Im Rahmen einer Studienleistung für eine Fort- und Weiterbildung habe ich an der FernUniversität in Hagen eine Ausarbeitung zu der Programmiersprache F# angefertigt. Vielleicht hilft die Darstellung der einen oder anderen, sich einen kurzen Überblick zu verschaffen. Zu finden ist sie <a href="/pub/2020-09-30-fsharp.pdf">hier.</a></p>De-Mail: Das nächste Experimenturn:https-www-dbrunner-de:-blog-2020-12-02-de-mail-das-na-CC-88chste-experiment2020-12-02T09:49:13Z2020-12-02T09:49:13ZDaniel Brunner
<p>Nachdem ich seinerzeit auch beim E-POSTBRIEF mitgemacht und ein Konto angelegt habe (mittlerweile erreichen mich dort nicht einmal mehr die alljährliche Abonnementrechnung), nun das nächste Experiment: Ich will ein De-Mail-Postfach. Nicht nur aus experimentellen Antrieb, sondern man kann darüber auch Gerichte per elektronischer Post erreichen, ein durchaus sinnvoller Anwendungszweck.</p>
<p>Am 04. August 2020 habe ich mich dann online registriert und alle Schritte für einen Auftrag vorgenommen. Wenige Tage später meldete sich der von der Telekom beauftragte Identifizierungsdienstleister und hat mir mir den nächstmöglichen Termin zur Identitätsprüfung verabredet, den 10. Oktober 2020. An nämlichen Tag erschien der sehr freundliche Mitarbeiter, hat meine Identität geprüft und das Formular nach meiner Unterschriftsleistung mitgenommen.</p>
<p>Nun ist auch noch der November vergangen und ich denke, langsam sollte das Postfach eingerichtet sein und ich Nachricht mit den Zugangsdaten erhalten. Vielleicht ist etwas schief gegangen. Beim Versuch, auf der Telekom-Seite ein Kontaktformular für De-Mail zu finden, bin ich gescheitert. Es gibt zwar eine Frage-Antworte-Liste, aber keine Möglichkeit, direkt Kontakt aufzunehmen. Ich habe auch keine E-Mail-Adresse gefunden. Alles, was ich finden konnte, waren Kontaktmöglichkeiten zu Festnetz, Mobilfunk und Magenta One.</p>
<p>Also habe ich heute einmal ganz altmodisch einen Brief verfasst und gen Bonn mit der Deutschen Post auf die Reise geschickt.</p>
<p>Ich bin gespannt.</p>
<p><em>Update (2020–12–19):</em> Seit dem 18. Dezember 2020 habe ich nun alle Unterlagen zusammen und kann De-Mail nutzen.</p>Start meiner (verteilten) Vorlesungurn:https-www-dbrunner-de:-blog-2019-10-15-start-meiner-verteilten-vorlesung2019-10-15T15:10:44Z2019-10-15T15:10:44ZDaniel Brunner
<p>Am 09. Oktober 2019 hat meine (verteilte) Vorlesung an der <a href="https://www.studiumplus.de">THM, StudiumPlus</a> zum Thema “Funktionale Programmierung” begonnen. Ich will hier und in den folgenden Blog-Posts meine Pläne sowie auch meine Erfahrungen mit verteilter Lehre aufschreiben. Ich werde in den Blog-Posts unterschiedliche Themen (Inhalte, benutzte Werkzeuge, Methoden etc.) beleuchten.</p>
<!-- more-->
<p>Für den Bachelor-Studiengang <a href="https://www.studiumplus.de/sp/duales-studium/studienangebote/softwaretechnologie.html">“Software-Technologie”</a> betreue ich in diesem Wintersemester ein Wahlpflichtmodul zur Funktionalen Programmieren. Die besondere Herausforderung besteht darin, dass die Veranstaltung “live” am Standort Frankenberg gehalten wird und via Adobe Connect an den Standort in Wetzlar übertragen wird. Ich habe mich entschieden, das Modul wie folgt technisch unter Nutzung von Adobe Connect und dem Moodle-System der THM aufzubauen:</p>
<ul>
<li>
<p><strong>Live Coding:</strong> Ich habe mir Racket als Programmiersprache ausgewählt und werde wichtige Konzepte und Funktionen live vorprogrammieren, so dass die Studierenden dies nachverfolgen und in ihrer Entwicklungsumgebung nachvollziehen können.</p></li>
<li>
<p><strong>Kleine Programmieraufgaben mit Pair Programming:</strong> Ich werde eine Reihe von Übungsaufgaben vorbereiten, die mit Pair Programming von den Studierenden umgesetzt werden sollen. Die Ergebnisse sollen dann die einzelnen Teams vorstellen, hierzu werden wir die Lösungen aufgrund der schmalen Bandbreite nach Frankenberg in einem Forum in Moodle bereit stellen.</p></li>
<li>
<p><strong>Quizze / Peer Instruction:</strong> Zu einzelnen Aspekten werde ich Quizze einstreuen, die mittels Peer Instruction (siehe zum Beispiel <a href="https://peternewbury.org/2016/01/02/getting-the-most-out-of-peer-instruction/">hier</a>) gelöst werden sollen. Die Fragen habe ich über Abstimmungen in Moodle umgesetzt.</p></li>
<li>
<p><strong>Ständige Evaluierung:</strong> Ich sehe die entfernten Studierenden leider nicht, daher möchte ich regelmäßig über Tempo, Schwierigkeitsgrad und Verständtlichkeit der einzelnen Termine ein Feedback einholen. Hierzu habe ich pro Termin ein Feedback in Moodle eingerichtet.</p></li>
<li>
<p><strong>Online-Sprechstunde:</strong> Zusätzlich zur Veranstaltung biete ich einmal in der Woche eine Online-Sprechstunde in Adobe Connect an, um den Studierenden bei Fragen eine niedrigschwelliges Angebot zu machen.</p></li></ul>
<p>Im Vorfeld und während der Veranstaltung unterstützt mich das E-Learning-Team der THM bei der Nutzung der Medien, Werkzeuge (technisch und didaktisch). Methodisch habe ich mich unter anderem von <a href="https://twitter.com/guzdial">Mark Guzidials</a> <a href="https://cacm.acm.org/magazines/2019/8/238336-cutting-the-wait-for-cs-advice/fulltext">Artikel in den Communications of the ACM</a> leiten lassen.</p>A snippet to colorize TODO/DONE labels in Scribbleurn:https-www-dbrunner-de:-blog-2018-01-22-a-snippet-to-colorize-todo-done-labels-in-scribble2018-01-22T15:24:41Z2018-01-22T15:24:41ZDaniel Brunner
<p>I played with text properties in Scribble and produced red and green labels for
todos:</p>
<!--more-->
<p>One thing I like about Emacs’ <a href="http://www.org-mode.org">Org-mode</a>
(a major mode for note taking, todo lists and everything else) is that it
highlights any "TODO" or "DONE" labels. This makes it easy to get an overview
what topics still have to be done. At the moment I am working in a small group
and I organized our todo points and the resulting documents with Racket and
Scribble (and at first with Org-Mode). I put all todo points in a Scribble
document and added this small Racket snippet for green and red labels:</p>
<div class="SCodeFlow">
<table cellpadding="0" cellspacing="0" class="RktBlk">
<tbody>
<tr>
<td><span class="RktPn">(</span><span class="RktSym">define</span><span class="hspace"> </span><span class="RktSym">TODO-COLOR</span><span class="hspace"> </span><span class="RktVal">"black"</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="RktPn">(</span><span class="RktSym">define</span><span class="hspace"> </span><span class="RktSym">TODO-BACKGROUND</span><span class="hspace"> </span><span class="RktVal">"red"</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="RktPn">(</span><span class="RktSym">define</span><span class="hspace"> </span><span class="RktSym">DONE-COLOR</span><span class="hspace"> </span><span class="RktVal">"black"</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="RktPn">(</span><span class="RktSym">define</span><span class="hspace"> </span><span class="RktSym">DONE-BACKGROUND</span><span class="hspace"> </span><span class="RktVal">"green"</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="hspace"> </span></td></tr>
<tr>
<td><span class="RktPn">(</span><span class="RktSym">define</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">todo/done-entry</span><span class="hspace"> </span><span class="RktSym">label</span><span class="hspace"> </span><span class="RktSym">txt</span><span class="hspace"> </span><span class="RktSym">color</span><span class="hspace"> </span><span class="RktSym">background</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="RktPn">(</span><span class="RktSym">element</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">style</span><span class="hspace"> </span><span class="RktVal">#f</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">list</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">color-property</span><span class="hspace"> </span><span class="RktSym">color</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">background-color-property</span><span class="hspace"> </span><span class="RktSym">background</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="RktPn">(</span><span class="RktSym">if</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">string=?</span><span class="hspace"> </span><span class="RktSym">txt</span><span class="hspace"> </span><span class="RktVal">""</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="hspace"> </span><span class="RktSym">label</span></td></tr>
<tr>
<td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">string-append</span><span class="hspace"> </span><span class="RktSym">label</span><span class="hspace"> </span><span class="RktVal">" ("</span><span class="hspace"> </span><span class="RktSym">txt</span><span class="hspace"> </span><span class="RktVal">"): "</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="hspace"> </span></td></tr>
<tr>
<td><span class="RktPn">(</span><span class="RktSym">define</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">TODO</span><span class="hspace"> </span><span class="RktPn">[</span><span class="RktSym">txt</span><span class="hspace"> </span><span class="RktVal">""</span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="RktPn">(</span><span class="RktSym">todo/done-entry</span><span class="hspace"> </span><span class="RktVal">"TODO"</span><span class="hspace"> </span><span class="RktSym">txt</span><span class="hspace"> </span><span class="RktSym">TODO-COLOR</span><span class="hspace"> </span><span class="RktSym">TODO-BACKGROUND</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="hspace"> </span></td></tr>
<tr>
<td><span class="RktPn">(</span><span class="RktSym">define</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">DONE</span><span class="hspace"> </span><span class="RktPn">[</span><span class="RktSym">txt</span><span class="hspace"> </span><span class="RktVal">""</span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr>
<tr>
<td><span class="RktPn">(</span><span class="RktSym">todo/done-entry</span><span class="hspace"> </span><span class="RktVal">"DONE"</span><span class="hspace"> </span><span class="RktSym">txt</span><span class="hspace"> </span><span class="RktSym">DONE-COLOR</span><span class="hspace"> </span><span class="RktSym">DONE-BACKGROUND</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></tbody></table></div>
<p></p>
<div class="SIntrapara">Therefore I get nice red and green labels:
</div>
<div class="SIntrapara">
<ul>
<li>
<p><span style="color: black; background-color: green">DONE (Jack): </span> Write specification for our new Great program.</p></li>
<li>
<p><span style="color: black; background-color: red">TODO (John): </span> Develop our new Great program</p></li>
<li>
<p><span style="color: black; background-color: red">TODO</span> Write user manual</p></li></ul></div>
<p>I put the snippet in a Racket source file and included it with <span class="RktMeta"></span><span class="RktPn">@</span><span class="RktPn">(</span><span class="RktSym">require</span><span class="RktMeta"></span><span class="hspace"> </span><span class="RktMeta"></span><span class="RktVal">"foo.rkt"</span><span class="RktPn">)</span><span class="RktMeta"></span> but it’s of course possible to include it directly in a Scribble
document.</p>Der E-Postbrief: Eine Erfolgsgeschichte(?)urn:https-www-dbrunner-de:-blog-2018-01-15-der-e-postbrief-eine-erfolgsgeschichte2018-01-15T08:24:57Z2018-01-15T08:24:57ZDaniel Brunner
<p>Die Erfolgsgeschichte des E-Postbriefs geht weiter: Nachdem ich in den vergangenen zwölf Monaten ausschließlich Nachrichten über die Änderungen der AGBen erhielt, trudelte am 12. Januar 2018 mein zweiter “echter” (also keine Newsletter oder AGB-Änderungen der Post) E-Postbrief ein: Es war <a href="/blog/2017/02/19/neues-vom-e-postbrief/">erneut</a> eine Rechnung für ein Zeitschriften-Abonnement. Kurzum: 2 “echte” E-Postbriefe in 7,5 Jahren.</p>Evaluierungsergebnisse mit Racket/Scribble verarbeiten und darstellenurn:https-www-dbrunner-de:-blog-2017-12-11-evaluierungsergebnisse-mit-racket-scribble-verarbeiten-und-darstellen2017-12-11T16:58:35Z2017-12-11T16:58:35ZDaniel Brunner
<p>Auch in diesem Jahr habe ich (zum Teil mit Stephan Brunner zusammen) wieder Lehrveranstaltungen für StudiumPlus durchgeführt.</p>
<p>Die Ergebnisse finden sich jeweils als Link auf der <a href="/ueber/lehre.html">Seite mit meinen Lehrveranstaltungen</a>. Im Folgenden beschreibe ich, wie ich in diesem Jahr die Ergebnisse der Evaluierung mit Racket und Scribble verarbeitet habe.</p>
<!-- more-->
<p>Im vergangenen Jahr wurde eine zentrale Evaluierung der Lehrveranstaltungen von StudiumPlus durchgeführt. Die Studierenden konnten zu 13 Fragen ihre Einschätzung von “trifft voll zu” über “trifft meistens zu”, “trifft teilweise zu”, “trifft selten zu” zu “trifft überhaupt nicht zu” abgeben. Von der Hochschule erhielten wir dann eine Auswertung mit der Anzahl der jeweils gegebenen Einschätzungen pro Frage sowie der relativen Häufigkeit.</p>
<p>Nachdem ich in diesem Jahr eine Übung im Rahmen einer Vorlesung übernommen hatte, wusste ich nicht, ob dieser Teil eine eigene Evaluierung erhalten würde. Des Weiteren wurde für die Zwei-Tages-Module in diesem Jahr keine zentrale Evaluierung angeboten.</p>
<p>Ich habe daher die Fragen vom vergangenen Jahr mit dem Projektor an die Wand projeziert und die Studierenden um ihre Einschätzung gebeten.</p>
<p>Da ich die Ergebnisse verschiedentlich weiterverwenden wollte, habe ich mich entschieden, diese in Racket zu verarbeiten und mit Scribble in ein Dokument (sowie auch Seiten hier auf der Homepage) zu setzen. Der Code hierfür ist als Racket-Datei <a href="/lehre/format-eval.rkt">hier</a> zu finden.</p>
<p>Die Antworten führe ich dann als Liste von Arrays (Vector in Racket).</p>
<div class="brush: racket">
<pre><code> (list (vector 3 4 3 1 2 1 2 1 2 3 1 1 2) ; 1
(vector 2 1 1 1 2 1 1 1 2 #f 1 1 1) ; 2
(vector 1 4 1 1 2 1 2 2 2 3 1 1 1) ; 3
(vector 2 3 1 1 2 2 2 2 2 2 1 1 2) ; 4
...)</code></pre></div>
<p>Um die Häufigkeiten für eine Frage zu ermitteln, extrahiere ich mittels <code>vector-ref</code> und <code>map</code> sämtliche Antworten zu einer Frage. Hat ein Studierender nicht oder nicht leserlich geantwortet, habe ich jeweils <code>#f</code> eingetragen, die ich aus der Ergebnisliste entferne:</p>
<div class="brush: racket">
<pre><code>(define (sample-question loe no)
;; Gibt alle Antworten auf eine Fragenummer
(remove* (list #f) (map (lambda (answers) (vector-ref answers no)) loe)))</code></pre></div>
<p>Als Ergebnis erhalte ich eine Liste mit Antworten (wobei die Antworten derart kodiert sind, dass eine <code>1</code> für “trifft voll zu” und eine <code>5</code> für “trifft überhaupt nicht zu” steht), zum Beispiel:</p>
<div class="brush: racket">
<pre><code>'(4 1 4 3 3 5 4 3 3 4 3 2 4 1 4 1 3 3 2 2 2)</code></pre></div>
<p>Für die Weiterverarbeitung habe ich im <code>math</code> Modul die praktische Funktion <a href="http://docs.racket-lang.org/math/stats.html#%28def._%28%28lib._math%2Fstatistics..rkt%29._samples-~3ehash%29%29"><code>samples->hash</code></a> gefunden, die einem das Zählen abnimmt und einen Hash-Table mit der absoluten Häufigkeit zurückgibt:</p>
<div class="brush: racket">
<pre><code>> (samples->hash '(4 1 4 3 3 5 4 3 3 4 3 2 4 1 4 1 3 3 2 2 2))
'#hash((4 . 6) (3 . 7) (2 . 4) (1 . 3) (5 . 1))</code></pre></div>
<p>Hieraus habe ich dann eine Formatierung in eine Liste zusammengestellt, die anschließend in ein <code>tabular</code> eingebettet werden kann:</p>
<div class="brush: racket">
<pre><code>> (result EVALUIERUNG 0)
'(("Bewertung" "++" "+" "0" "-" "- -")
("Anzahl" "5" "7" "8" "2" "0")
("in v.H." "22.73" "31.82" "36.36" "9.09" "0.00"))</code></pre></div>
<p>Etwas gekämpft hatte ich einige Zeit mit dem Umstand, dass ein sogenannter <code>content</code> ein String sein muss und nicht einfach eine Zahl. Man muss also die vorher ausgerechneten Werte via <code>number->string</code> in einen String umwandeln, damit Scribble diese verwenden kann.</p>
<p>Da ich die Parameter für die Tabular-Umgebung auch nicht immer wieder tippen wollte, habe ich hierfür auch eine Funktion geschrieben, so dass es im Scribble-Dokument wie folgt aussieht (gegeben, dass sich hinter EVALUIERUNG die Liste der Arrays mit den Antworten verbirgt):</p>
<div class="brush: scribble">
<pre><code>@itemlist[#:style 'ordered @item{Die Veranstaltung ist klar strukturiert.
@tabular-result[EVALUIERUNG 0]
}
@item{Die verwendeten Veranstaltungsunterlagen sind hilfreich.
@tabular-result[EVALUIERUNG 1]}
...</code></pre></div>
<p>Das Ergebnis kann man am Beispiel der letzten Veranstaltung <a href="/lehre/iot-eval-2017.html">hier</a> einsehen, die zugehörige Scribble-Datei ist <a href="/lehre/iot-eval-2017.scrbl">hier</a> einsehbar.</p>
<p>Der Vorteil für mich liegt bei dieser Vorgehensweise darin, dass ich die Antworten in strukturierter Form behalte und auch noch für andere Zwecke weiter verwenden kann. Darüberhinaus ist diese Ausgabe mittels Scribble vielfältig nutzbar: Ich erzeuge bspw. daraus ein PDF-Dokument (über LaTeX) und eine Seite hier auf der Homepage mit dem statischen Seitengenerator Frog. Und, ich musste keine Tabellenkalkulation verwenden.</p>Folgen des Lexmark-Urteilsurn:https-www-dbrunner-de:-blog-2017-06-14-folgen-des-lexmark-urteils2017-06-14T10:18:02Z2017-06-14T10:18:02ZDaniel Brunner
<p>Zum Urteil des Supreme Courts über die Patentklage von Lexmark (gebloggt <a href="/blog/2017/05/31/lexmark-scheitert-mit-einer-patentklage-in-den-usa/">hier</a>) habe ich in der <a href="http://www.lto.de">Legal Tribune Online</a> eine interessante Einordnung <a href="http://www.lto.de/recht/hintergruende/h/us-supreme-court-urteil-lexmark-drucker-patronen-patentrechte-erschoepfung-welthandel-europa/">gelesen</a>. In dem Beitrag wird darauf hingewiesen, dass die Entscheidung, dass beim Export von Gütern der Patentschutz erschöpft, eine Abkehr der bisherigen Rechtsprechung in den USA sei. Dies habe gravierende Auswirkungen auf den Export patentgeschützter Güter wie Medikamente oder Lizenzverträge soweit sie sich auf die Erschöpfung von Patenten beziehen. Damit wird es für die US-Patenthinhaber schwierig, den Re-Import mit dem Verweis auf das Patentrecht abzuwehren. Zugleich weist der Autor auf die Auswirkungen im internationalen Handel hin und macht deutlich, dass die Frage der Erschöpfung bei Patenten wohl eine der umstrittensten Fragen im Welthandel darstellt.</p>Lexmark scheitert mit einer Patentklage in den USAurn:https-www-dbrunner-de:-blog-2017-05-31-lexmark-scheitert-mit-einer-patentklage-in-den-usa2017-05-31T08:15:51Z2017-05-31T08:15:51ZDaniel Brunner
<p>Ich hatte im Jahr 2015 einmal über Lexmarks Druckerpatronen-“Lizenz” <a href="/blog/2015/02/17/lexmarks-druckerpatronen-lizenz/">gebloggt</a>. Mit dieser sollte erreicht werden, dass rabattierte Patronen direkt wieder an Lexmark zurückgehen, zumindest verpflichtet sich wie gebloggt der Endkunde dazu, diese Patrone nur einmal zu nuzen und sie auch an Lexmark zurückzugeben.</p>
<p>In den USA hat Lexmark nun versucht, das Wiederauffüllen sowie den Reimport gebrauchter Patronen durch andere Unternehmen gerichtlich zu unterbinden. Hierzu bediente sich Lexmark einer Patentklage gegen diese “Remanufacturer”. Diese waberte dann durch die Instanzen und im Ergebnis hat der Supreme Court entschieden, dass die Patentrechte nach dem Verkauf der Patronen (für die im Inland, also den USA, sowie den ins Ausland verkauften) erschöpft sind. Insbesondere stellt der Supreme Court fest, dass die Endkunden-Lizenz möglicherweise ein gültiger und durchsetzbarer Vertrag sein könnte, sich hieraus aber keine patentrechtlichen Ansprüche ableiten lassen.</p>
<p>Man wird sehen, wie die Druckerpatronen-Industrie darauf reagieren wird.</p>
<p>Die Entscheidung des Supreme Courts findet sich <a href="https://www.supremecourt.gov/opinions/16pdf/15-1189_ebfj.pdf">hier</a>. Hingewiesen wurde ich beim Lesen von <a href="https://blog.fefe.de/?ts=a7d3257d">Fefes Blog</a>.</p>
<p><em>Update (2017–06–04)</em> Und hier noch der Link zur Verfahrensseite beim <a href="http://www.scotusblog.com/case-files/cases/impression-products-inc-v-lexmark-international-inc/">SCOTUSblog</a>.</p>10th European Lisp Symposiumurn:https-www-dbrunner-de:-blog-2017-04-05-10th-european-lisp-symposium2017-04-05T14:00:31Z2017-04-05T14:00:31ZDaniel Brunner
<p>Last year my brother Stephan and I attended the European Lisp Symposium (ELS) for the first time. It was a great event and therefore we decided to come to <a href="http://www.european-lisp-symposium.org/2017/index.html">this year’s symposium</a>. It took place in Brussels from April 3 to April 4.</p>
<p>After giving a two-days course on IoT using Racket at <a href="http://www.studiumplus.de">StudiumPlus</a> last year we submitted a short demonstration. And: It got accepted! It was a great honor for me to give a demonstration at the symposium.</p>
<p>Our paper is in the proceedings which can be found find on the <a href="http://www.european-lisp-symposium.org/2017/index.html">conference’s homepage</a>. The slides are available there as well. I host these files here: <a href="/pub/els2017.pdf">Paper</a> and <a href="/pub/els2017-slides.pdf">slides</a>. The source code is provided as a <a href="/pub/els2017-src.zip">ZIP archive</a>.</p>Neues vom E-Postbriefurn:https-www-dbrunner-de:-blog-2017-02-19-neues-vom-e-postbrief2017-02-19T14:59:09Z2017-02-19T14:59:09ZDaniel Brunner
<p>Im Sommer des Jahres 2010 bloggte ich (<a href="/blog/2010/07/25/der-e-postbrief-ein-selbstversuch/">hier</a> und <a href="/blog/2010/07/26/nachtrag-i-zum-e-postbrief">hier</a>) über meinen Selbstversuch mit dem <a href="https://www.epost.de/">E-Postbrief</a> (heißt wohl nun “E-POST”) der Deutschen Post. Zwischenzeitlich musste ich einmal das Kennwort erneuern. Bei dem Telefonat mit der Hotline fiel dem freundlichen Mitarbeiter auf, dass ich mich praktisch nie (es war damals über 12 Monate her) in den Dienst einloggte. Ob ich das Produkt denn wirklich noch weiter haben möchte, wollte er wissen. Nun, ich entschied mich erst einmal dabei zu bleiben. Ca. einmal im Jahr sendete mir die Post einen Newsletter in das Postfach, manchmal habe ich ihn gelesen, manchmal auch ignoriert.</p>
<p>Jedoch, am frühen Anbend des 31. Januar 2016 schreckte ich hoch, denn eine frisch eingegangene SMS deutete darauf hin, dass noch jemand anderes außer dem Kundenservice mir etwas mitteilen wollte. Und tatsächlich, nach über sechs Jahren: Mein erster E-Postbrief!</p>
<p>(Und was war es? Die Rechnung für ein Zeitschriften-Abonnement.)</p>Using Racket Minimal and racourn:https-www-dbrunner-de:-blog-2016-01-12-using-racket-minimal-and-raco2016-01-12T09:55:43Z2016-01-12T09:55:43ZDaniel Brunner
<p>I use Racket Minimal on my smart phone (<a href="../2015/08/27/how-to-run-racket-on-the-raspberry-pi-2/">this</a> describes how to compile the run time for an ARM based system). It’s is a very small installation of Racket (about 36 MB after installation). After installation one only needs to install the packages that are really neded. But this can be a bit tricky because a lot of packages want to install their documentation and other stuff and bring a whole bunch of files on your drive as dependencies.</p>
<p>Some of the packages are divided up into a "-lib", "-doc" (and sometimes "-test") as laid out in the <a href="https://docs.racket-lang.org/pkg/getting-started.html#%28part._.Naming_and_.Designing_.Packages%29">documentation</a>. With these packages it’s easier to only install the implementation.</p>
<p>A small script of mine used only basic modules and relied on <code>rackunit</code> for the tests. On a mobile device the start up time of such a program can be critical. Therefore it is wise to only require the needed packages and to have the source code being compiled to byte code. One could do this with <code>raco setup</code> (which is included in Minimal Racket) but I wanted to have <code>raco make</code> (which is not part of Minimal Racket) available.</p>
<p>The commands of <code>raco</code> are added via a <code>raco-commands</code> variable in packages’ <code>info.rkt</code> file. I looked through the packages of my “full install” and found the package <code>compiler-lib</code> which adds some commands (<code>make</code>, <code>exe</code>, <code>pack</code>, <code>unpack</code>, <code>decompile</code>, <code>test</code>, <code>expand</code>, <code>read</code>, <code>distribute</code>, <code>demodularize</code>) to <a href="https://mirror.racket-lang.org/releases/6.3/doc/raco/index.html"><code>raco</code></a> and relies on only a few other packages. As a result the source and binary files need about 3.8 MB on my phone which is okay for me.</p>
<p>To sum up: After a simple <code>raco pkg install compiler-lib</code> I could easily use <code>raco make</code> and <code>raco test</code> to play with my program on my phone.</p>