 Gut, willkommen zu den Lightning Talks. Wir fangen an mit einem Doppelpack. Secure wird uns einmal über Scan to Drive erzählen und über RobustIC. Willkommen, Secure. Dankeschön. Ich versuche erst mal... Ja, das will noch nicht so ganz... Ah, weil das Kabel auch nicht eingesteckt ist. Schämen, probierst mal hier. Ja. Schauen wir mal. Vorhin mussten wir das andere Kabel verwenden. Vielleicht könnte uns der AV-Mensch noch mal helfen damit. Das hier? Nee, mag noch nicht. Ja, HDMI, ja. Das ist ein Thunderbolt-Ausgang, oder? Nein, das HDMI. Direkt HDMI. Der alten Thunderbolt-Ausgang, den nehmen wir. Wettung, Großgrundsticke. Okay, Moment. Wir probieren es noch einmal und dann nehmen wir den anderen. Wir haben es eben im Test. Das mag jetzt aber auch nicht. Gut, dann probieren wir den anderen. Ah, ja. Okay. Da sind wir auch schon. Danke fürs Warten, mein Name ist Michael Stapelberg und ich möchte euch heute ein Programm vorstellen, welches ich geschrieben habe. Das hat den Griffig namens Scan to Drive. Das Logo ist nicht von Scan to Drive, sondern von Go Crazy, für diejenigen, die meinen Talk gestern verpasst haben. Scan to Drive, da geht es um folgendes. Ich habe mir diesen Scanner hier gekauft, den ihr auf der Folie abgebildet seht. Das ist der Fujitsu ScanSnap EX500. Das ist ein Einzugsscanner. Das heißt, auf diesem Fach oben legt ihr euer Dokument drauf, also angenommen ihr bekommt einen Brief oder so, per physikalischer Post. Unglaublich, aber manche Menschen tun das noch. Es sind oft auch wichtige Sachen, die man vielleicht archivieren möchte. Dann macht man den also auf, nimmt die Seiten raus, legt das in das Ding und drückt auf diesen blau leuchtenden Knopf, den ihr an der Seite seht. Dann macht man einen Duplex-Scan von jeder Seite und dann habt ihr diese Daten, soweit also die Theorie. Das Gerät kostet ca. 400 Euro und ist in einigen Tests bericht so das beste Ding. Wenn ihr euch einen Scanner kaufen wollt und ihr seid mit diesem Formfaktor einverstanden und kauft euch diesen Scanner, soweit wurde mir das vermittelt. Das Problem ist jetzt allerdings, dass der Scanner an sich für mich nicht besonders nützlich ist. Ich brauche dafür noch einen Raspberry Pi. Das ist ein Singleboard-Computer, kostet 30 Euro. Habt ihr bestimmt alle schon mal gesehen. Das war's für das folgende. Der Fujitsu Scan-Snap kommt mit einer praktischen App für euer Smartphone oder euer Windows PC. Diese App erlaubt euch nicht nur lokal angeschlossen zu scannen, sondern auch die Cloud-Anbindung von diesem Scanner zu benutzen. Das heißt, als der Hersteller sich gedacht hat, wie designet man denn eine Cloud-Anbindung für so einen Scanner, haben sie sich gedacht, dieser Hardware-Knopf, der da drauf ist und total praktisch den nehmen wir nicht. Stattdessen erfordern wir, dass die Cloud-Anbindung von diesem Scanner auf die Cloud-Anbindung kommt. Das hat also zur Folge, dass wenn ich diesen Scanner irgendwo genehm in meiner Wohnung aufstellen möchte, so sagen wir neben der Tür, dass wenn ich reinkomme mit dem Brief, nicht einfach direkt das abhandeln kann, dann müsste ich da zuerst noch irgendwie auf meinem Telefon rumfummeln und jedes Mal, wenn ich was scannen will, diese App aufmachen. Überhaupt habe ich schon genug Apps auf meinem Telefon. Ich will nicht noch von Fujitsu eine App haben. Und das Problem ist, nicht nur braucht man dafür einen unbequemen Start für den Scan-Vorgang, sondern das wird dann auch gar nicht direkt auf die diversen Cloud-Anbieter, die unterstützt werden, hochgeladen, also geht gar nicht direkt in euer Google Drive oder euer Dropbox oder Wasser immer, sondern das wandert erst mal zu Fujitsu und dann in irgendeinen Cloud-Anbieter. Und jetzt kann man sagen, okay, ich habe mich damit abgefunden, dass irgendwie Dropbox, dass da irgendwie manche meiner Daten legen oder auf Drive oder ganz ehrlich, wer von euch vertraut den Fujitsu Cloud Service ist, der dahinten. Alles klar, gut. Viel Spaß mit deinem Scan-Avia ist. Für mich war das nichts und deswegen habe ich da was gemacht. Ich habe auf diesem Raspberry Pi einen Programm laufen, das nennt sich Scan to Drive, wie gesagt, und auf Knopfdruck, also auf dem Hardware-Knopfdruck, ohne App, ohne irgendwas, scann dieses Ding Seiten ein, so weit so gut. Die Originale und auch eine Schwarz-Weiß-Version wird in einem PDF gesichert. In dem PDF ist nichts weiter als einfach diese Bilddaten. Der Vorteil davon, das Schwarz-Weiß zu machen und als PDF zu speichern, ist, dass Google Drive weiß, wie man PDFs interpretiert und sofern das PDF kleiner als 1 Megabyte ist bzw. die ersten 10 Seiten werden dann indexiert, und zwar für Volltextsuche, also mit OCR. Das heißt, man muss nichts weiter implementieren und man kann einfach in das Suchfeld in Google Drive eingeben, irgendwie Krankenkasse 2015 und dann findet man alle Sachen, die von der Krankenkasse kommen. Das ist super. Wie ihr auf der Folie sehen könnt, gibt's da so nen Web-Interface, da sieht man die verschiedenen Scans, die man getätigt hat. Man muss das Web-Interface gar nicht benutzen, idealerweise benutzt man das irgendwie einmal zum Einstellen oder wann auch immer man das debaggen muss. Seitdem man hat nen mehr Personenhaushalt, dann kann man das Web-Interface benutzen, denn der Scan-Button kann natürlich nicht erkennen, wer ihr jetzt seid, also ob jetzt ich was scannen möchte für mich oder meine Freundin für sich und deswegen gibt's darüber quasi ne Mehrbenutzerfähigkeit. Da müsste man dann also doch wieder zum Smartphone greifen oder nen zweiten Scan anschaffen, je nachdem. Ihr könnt auch über das UI scannen, aber bequemer ist es natürlich einfach über den Knopf. Wie könnt ihr das Ganze benutzen? Das funktioniert auf Basis von Go Crazy, dieser Anwendungsplattform für den Raspberry Pi 3. Ich hab hier die Befehle mal alle auf die Folie gepackt. Im Wesentlichen ist das nichts anderes als den Go Crazy Packer zu installieren, ihm die Berechtigung einzuräumen oder SD-Karten zu malen, dann die SD-Karte zu überschreiben mit dem Scan-to-Drive-Programm und eine persistente Datenpartition erzeugen als X4-Dateit-System, damit die Scans dann auch irgendwo sind, weil Go Crazy-Installationen sind grundsätzlich Read-Only. Das war's dann auch und dann habt ihr das Programm am Laufen, müsst noch nen OAuth-Talken eindrichten, weil das halt mit eurem Google Drive kommuniziert, aber dann ist das soweit startklar. Ich hoffe, dass es für manche von euch nützlich, die entweder so nen Scanner schon haben oder keine anzuschaffen. Ich hab von mehreren Leuten schon gehört, ah, ich hab den gleichen Scanner, ich hab irgendwie so ne Sammlung an Skripten und die läuft zu mehr oder minder gut. Der Vorteil von Scan-to-Drive ist, dass es einfach ganz gut funktioniert mittlerweile und dass es insbesondere auch schneller funktionieren kann als das, was ihr euch über die Kombination von Sane und ImageMagic und was ihr immer sonst so für Tools zusammenbasteln könnt. Ganz einfach, weil das Ganze sehr integriert ist und ich ein paar Wochen verwendet hab und da hab ich so ne Projekte und Instruktion und so nen Kram. Das Ziel ist also, in real-time zu scannen, das heißt, dass man nicht erst, wenn man ne Seite einscanned, irgendwie ne halbe Minute warten muss, sondern dass man direkt scann, scan, scan, scan und dann sind die Dinger schon auf Drive. So, das ist die Idee. Kommt in den nächsten paar Wochen. Gibt's irgendwelche Fragen zu dem Projekt? Ich bitte. Hast du dafür jetzt den Tiber-Reverse-engineered oder nützt das schon in die Art? Ja, die Frage war, was Fujitsu da macht, ist, sie verwenden USB und über USB schieben sie aber nichts weiter als SCSI Befehle. Das ist also nen SCSI Scanner, der über USB getunnelt ist. Dementsprechend ist es auch recht einfach, das nachzuimplementieren. Ich hab sowohl die USB-Ansteuerung an den Linux-Könnel selbst implementiert, weil die libUSB NC geschrieben ist und Go Crazy natürlich nur Go-Code unterstützt. Das heißt, da musst du irgendwie 2 IOCTLs implementieren und dann irgendwie das eigene Protokoll. Das ist so, dass man in 600 DPI diese Duplex-Seiten bekommt in RGB-Farbewerten, einfach hin in Speicher und ab, dann kannst du mit dem Bild an dem machen, was du möchtest. Andere Fragen? Ansonsten könnt ihr mich auch gerne nachher noch ansprechen und dann wechsel ich mal den Foliensatz auf den zweiten Lightning Talk. Von RobustIRC haben sicherlich auch einige schon mal gehört, aber es gibt ja immer wieder neue Besucher, deswegen dachte ich, ich erzähle noch mal ganz kurz, worum es hier geht. RobustIRC ist immer noch ein weiterverbreitetes Chat-Medium unter der Open-Source-Community und Hackern. Es gibt hier für die GPN auch einen IOC-Channel, einige von euch sind sicher da drin. Für den Freundeskreis, in welchem wir IOC benutzen, haben wir derzeit einfach noch keine überzeugende Alternative gefunden. Wir probieren jedes Jahr immer mal wieder die aktuellen Sachen aus und katalogisieren dann quasi die Sachen, die uns daran nicht gefallen, aber letztendlich bleiben wir immer noch bei IOC hängen. Also es gibt nichts, was uns da wirklich von weggebracht hätte. Das größte Problem, was wir vor ein paar Jahren mit IOC identifiziert haben, ist, dass die Stabilität mangelhaft ist. Also das Protokoll gibt es halt schon so lange, wie es mich gibt und funktioniert damit auch schon ganz gut in einigen Clients und einigen Servern, aber fundamentell hat es eben ein paar Unschönheiten, nämlich jeder TCP-Disconnect erzeugt einen Netsplit. Das ist im Falle von der TCP-Verbindung einfach eine Netsplit mit der Größe von 1. Also ihr seid dann nicht mehr im Chatraum, wenn bei euch die Verbindung appreist, so weit so gut, aber wenn das ein Link zwischen zwei Servern betrifft, dann fliegen gleich ganze Gruppen an Menschen draus und das ist eigentlich doof. Das ist insbesondere deswegen doof, weil diese TCP-Verbindungsabbrüche nicht nur dann kommen, wenn irgendwie ein Switch auf dem Weg stirbt oder so, sondern auch, wenn man auf den Servern Software-Updates machen möchte oder Reboots oder sonstige Wartungsarbeiten dazu ermuntert wird, die Software nie zu aktualisieren und das ist schlecht, dann hat man dauernd Sicherheitslöcken und so weiter und deswegen dachte ich mir, was kann man da machen. Wir haben also zwei Ideen gehabt, die eine Idee ist, statt dass wir direkt TCP verwenden, um diese IAC-Befähle hin und zurückzuschicken, machen wir einen Tunnelprotokoll basierend auf HTTP und JSON, weil das sehr verbreitete Standards sind, die in jeder Sprache gut implementierbar sind, die durch alle Firewalls kommen und so weiter und so weiter. Und die zweite Idee ist, dass wir mit einer virtuell von hochverfügbaren Datenbanken ein IAC-Netz als verteiltes System implementieren auf Basis von RAVT. RAVT ist eine Library für Consensus, also für quasi verteiltes Berechnen mit starker Konsistenz. Für diejenigen, die vielleicht schon mal von PAXOS was gehört haben, das ist so eine Alternative dazu. Als Übersicht über was RobustRC jetzt eigentlich tatsächlich macht, ist, wir haben eine bestimmte Anzahl von RobustRC-Servern für einen virtuellen IAC-Server ab. Für diejenigen, die sich schon mal genauer mit der Struktur von IAC befasst haben, normalerweise hat man da irgendwie Server und Links zueinander und da muss man auswählen, auf welchen verbindet man sich oder so. Bei RobustRC gibt es einfach einen virtuellen IAC-Server, das heißt ihr seid immer auf demselben. Aber diese eine Server ist eben aufgespaltet auf mehrere tatsächliche Server. Die Minderheit dieses Netzes darf ausfallen. Das heißt, wenn ihr 3 Server in dem Netz habt, ist es okay, wenn ihr 5 Server betreibt, dann dürfen 2 Stück davon ausfallen. Ein Ausfall kann hier alles bedeuten. Es kann bedeuten, ich schieße den Prozess ab. Es kann bedeuten, da ist ein Netzausfall. Es kann bedeuten, das Rechenzentrum brennt ab von dem Anbieter, in dem der Server läuft, alles ist gar kein Problem. Für die Kommunikation zwischen Server und Clients verwenden wir das Robust session Protokoll, was ich gerade schon angedeutet habe. Das war diese virtunneln IAC-Befähle über HTTP und JSON. Und damit wir nicht alle verabschiedet haben, gibt es eine sogenannte Bridge, die also zwischen IAC und Robust session übersetzt. Wie funktioniert das Netz eigentlich? Immer wenn eine IAC Nachricht reinkommt, dann persistieren wir die über RAVT. Das heißt, wenn ihr jetzt angenommen ihr wollt einen Channel beitreten und ihr schickt einen Join, rote GPN oder so, dann kommt diese Nachricht rein, wird über RAVT auf 2 von 3 Servern mindestens verteilt, also auf alle 3 natürlich, letztendlich, aber nach 2 sagt er, ich habe hier Consensus und dann wird diese Nachricht verarbeitet. Die Antworten auf die Nachrichten hängen jeweils nur von den Nachrichten ab und dadurch, dass die Nachrichten verteilt werden, und zwar robust verteilt werden über RAVT, generiert jeder Server denselben State, wenn er alle Nachrichten von vorne bis hinten verarbeitet. Das heißt, wir können den Server zu beliebigen Zeitpunkten neu starten oder nach einem Absturz einfach wieder starten und dann generiert er denselben Zustand, in dem er vorher eigentlich auch schon war. So, das Kleingedruckte ist, dass die IAC Latents sich dadurch erhöht auf die Medienlatents aller Server, weil ja zuerst der Consensus hergestellt werden muss, also zuerst muss er ja auf 2 von 3 verteilen, das ist aber in der Praxis nicht merklich, also ob ihr jetzt eine Nachricht abschickt und die hat 20 Millisekunden Latents oder 40, das kann man nicht sehen. Die Ausfallsicherheit erfordert mindestens 3 Failure Domains, das heißt, wenn ihr sagt, ich würde gerne ein robustes IAC NS betreiben, aber ihr habt einen Rack 3 Servern drin, dann bringt das natürlich nicht so viel, wenn euch dann das Rack irgendwie vom Strom fällt oder so, sondern ihr braucht natürlich einen quasi diversen Aufstellungsort für diese Server. Am besten ist es natürlich bei 3 ganz unterschiedlichen Providern, das ist ein Setup, was wir so laufen haben, oder zumindest beim gleichen Provider in verschiedenen Standorten oder so, ihr kriegt es schon auf die Reihe, das zu planen. Wie benutzt man das Ganze? Ihr installiert euch, wenn ihr einen Klein habt, der das Protokoll noch nicht unterstützt, dann installiert euch die Bridge. Das funktioniert so, dass ihr die einfach mit dem Go Tool installiert, also mit Go Get, dann startet ihr die und sagt, in welches Netz ihr euch verbinden wollt, zum Beispiel das robust IC.net Netz und dann verbindet ihr euch einfach auf localhost 6667 oder was auch immer für ein Port ihr euch auswählt. Das ist also quasi wie ein Proxy Server und dann könnt ihr euren bestehenden IAC Klein verwenden. Oder sofern ihr das euren Besucher nicht zumuten möchtet, weil ihr zum Beispiel einen Chaos Treff Channel betreibt und da kommen auch mal Externe rein und es ist schon schwer genug IAC aufzusetzen, wenn wir mal ehrlich sind. Dann können die auch Legacy IAC verwenden, das ist quasi eine Bridge, die aber auf einem von unseren Servern läuft. Wenn man jetzt dann natürlich aufgepasst hat, merkt man, Moment, da ist ja dann wieder eine TCP Verbindung von einem kleinen Rechner zu einem von unseren Servern und wenn die abreißt, dann sind wir wieder beim Status Quo. Das heißt, Legacy IAC ist nicht ausfallsicher und den Vorteil von dem Netz habt ihr erst, wenn ihr wirklich lokal eine Bridge betreibt oder einen Klein habt, der das Protokoll auch wirklich unterstützt. Aber ihr kriegt zwar nicht die Ausfallsicherheit, aber das Netz an sich ist immer noch stabiler, denn bei Software Updates serverseitig fällt das Netz nicht aus. Das heißt, ihr profitiert immer noch, aber nicht so sehr, wie man es eigentlich könnte. So, als Fazit auf RobustIC.net kriegt ihr mehr Infos, da gibt es auch eine Installationsanleitung und General S-Admin-Guide. Wenn ihr mehr darüber wissen wollt, gibt es dort auch einen 40-minütigen Tech Talk, ansonsten gibt es auch auf anderen Veranstaltungen in den Archiven, Easterhack der vergangenen Jahre, GPN und so weiter, könnt ihr auch einen vollwertigen Vortrag euch anschauen und wenn ihr noch Fragen habt, haben wir jetzt erst noch ein bisschen Zeit, glaube ich. Okay, zwei, drei Fragen. Ganz hinten. Mikrofon. Hallo, wie wird verschlüsselt Benitze SSL zwischen Klein und Bridge? Benitze intern SSL? Zwischen Klein und Bridge wird üblicherweise nicht verschlüsselt, weil die Idee ist, dass das auf demselben Computer läuft, aber ja, du kannst also für Legacy-IC die Bridge, die bei uns läuft, da wird dann auch TLS verwendet. Das Robust-Session-Protokoll ist über HTTPS und JSON implementiert, also das Benutzt als HTTPS einfach. Danke. Hier vorne. Mikrofon. Habt ihr mal durchgerechnet, was ihr sehen würdet, wenn man FreeNode zum Beispiel umstellen würde? Ja, haben wir. Latenzmäßig auch? Latenzmäßig, denke ich, würdest du nicht viel merken, weil die Latenz halt quasi in ein oberes Maximum bald erreicht. Also sagen wir, wenn du mit 100 Millisekunden zusätzlicher Latenz zufrieden bist, dann sollte das gar kein Problem sein, egal wie viel Nachrichten reinkommen. Vom Nachrichtenvolumen her haben wir das letzte Mal, als wir gemessen haben, gesehen, dass FreeNode so ca. zwischen 1.000 und 2.000 Nachrichten Werte, die wir mit unserem Code und den aktuellen Go-Version problemlos abgehandelt bekommen. Das sollte also gehen. In der Theorie. Jetzt müsste man es ja nur noch machen. Okay, wenn ihr ansonsten noch Fragen habt, könnt ihr mich gerne auch sonst auf der Veranstaltung noch ansprechen. Vielen Dank. Gut, Matze beziehungsweise Musikmatze spricht über ein Thema, von dem ich keine Ahnung hab, iMac. Viel Spaß dabei. Welcher Stecker war der? Der funktionierende natürlich. Ja, der war es nicht. Nimm noch einfach den funktionierenden Stecker. Also, ich weiß das. Der da? Du warst Displaport. Displaport, ne? Ja, das ist so. Genau, dann kommt das. Nix. Ja, und das. Ja, Skalierung ist das tut, das tut, das tut wunderbar. Okay, tut mittelmäßig gut. Warum auch immer? Egal. Ja, hi, ich bin Matze. Ich erzähle heute was über mein Privat-Bastel-Projekt, dass ich seit inzwischen schon ein anderthalb Jahren bastel. Genau. Ja, latig macht Dinge. Ich hatte Probleme, und Probleme löst man ja als Hexhaar immer selber. Und das treibt mich auch an. Und zwar hatte ich das Problem, ich habe für alles Mögliche, was so Personal Information Management angeht, irgendwie ein Tool rumliegen. Und die funktionieren auch alle wunderbar, und das ist alles schön. Also, z.B. Task Warrior und Time Warrior, wer die nicht kennt, guckt sie euch an, hammergeil. Oder auch irgendwelche kleinere Sachen, Buku zum Bookmarks organisieren oder Bean Count für Finanzkram. Und die funktionieren ja alles super gut. Aber ich hatte eine Sache, die mich gestört hat. Und zwar konnte ich die Daten, die ich mit diesen Tools anlege, Tracke, Verarbeite nicht semantisch verbinden. Genau. Also, wenn ich praktisch in meinem Ledger, also in Bean Count z.B. eine Transaktion anlege, so, hey, ich habe 20 Euro beim Döner liegen lassen, dann war das vielleicht irgendein Special Event. Vielleicht irgendwie noch vorher irgendwas machen musste, das dann in meinem Task Manager auftaucht. Aber ich konnte diese Daten nicht irgendwie in Verbindung bringen miteinander und dann da drauf so ein bisschen Analyse machen. Genau. Und darum dreht sich es nämlich. Ich wollte ein Tool entwickeln, mit dem man den Content von anderen Tools abfragen kann und praktisch auf die Daten referenzieren kann nicht die Funktionalität der anderen Tools, die ich sowieso schon benutze in irgendeiner Weise beeinträchtigen oder verändern oder nachimplementieren, sondern ich will, dass das alles so im Hintergrund passieren kann. Also, ich benutze meine bestehenden Personal Information Management Geschichten einfach weiter und im Hintergrund werden dann Daten aggregiert. Einfaches Beispiel. Ich kriege eine E-Mail von Hans und das Tool merkt sich jetzt erstmal, das ist von Hans und setzt da so eine Referenz drauf und verknüpft dann vielleicht noch automatisch den Kontakt, der in meinem Kontaktbuch ist mit der E-Mail, mit so einem Link mehr oder weniger könnte man sagen. Und jetzt steht in der E-Mail zum Beispiel drin, ich soll doch Kuchen für Hannas Geburtstag kaufen. Dann leg ich mir auf meiner Kommando-Zeile natürlich ein Task an, hey, ich soll die Kuchen kaufen gehen. Vielleicht habe ich sogar noch ein extra Tool, die E-Mails und den Task verknüpfen können. Genau. Und dann vielleicht noch mit dem Event, dass da Hannas Geburtstag ist, das auch noch verknüpfen können. Und das ist genau, was iMac macht oder machen soll. Genau. iMac Server ist sehr generisch implementiert und sehr modular, also ist eigentlich eine Sammlung von Libraries, die man dazu benutzen kann, solche Dinge zu machen. Imac auch selber benutzen, um PIM Tools, also Personal Information Management, Tools zu implementieren. Aber wie gesagt, das ist eigentlich nicht so mein Hintergrundgedanke. Genau. Und ich mache das natürlich alles unter LGPL, weil die Libraries kann man ja weiterverwenden für andere Dinge. Genau. iMac Server ist in Rust implementiert. Wie gesagt, ich bastel da schon seit anderthalb Jahren dran rum, deswegen ist da auch einiges passiert inzwischen. Und ich habe auch ein paar andere Crates. Also wer mit Rust so ein bisschen sich auskennt, wir nennen unsere Pakete Crates. Das sind auch schon drei andere Sachen rausgefallen, die auch schon veröffentlicht sind. Genau. iMac funktioniert MVC-artig, sage ich jetzt mal. Also ich habe im Endeffekt so eine Art Model, das nennt sich bei mir Store. Das ist im Endeffekt auf dem lokalen Data-System ein Ort, an dem ich einen sehr einfachen Datenformat meine Referenzen ablegen kann. Das ist alles textbasiert. Also das sind in Wirklichkeit nur einfache Textdateien, kein irgendwie SQL-Datenbank-Gramm oder irgendwelche JSON Blobs oder so. Es ist im Endeffekt ein kleiner Header, der strukturierte Daten enthält und dann kann man da noch freitext praktisch drunter machen. Deswegen, das war auch eine meiner Anforderungen, dass ich damit etwas verschieben kann. Genau. Und wie gesagt, es besteht aus verschiedenen Bibliotheken. Dann gibt es eine Utility-Library und dann gibt es irgendwie noch Funktionalitäten um intern im Store diese Einträge zu verlinken und auch auf externe Files auf dem Filesystem zu verlinken und also Geschichten. Und dann gibt es eben noch praktisch Convenience-Libraries außen rum. Das ist eine sehr total bescheiden und skaliertes. Dann gibt es für jeden Anwendungsfall noch so eine Kommando-Zeilen-Applikation. Zum Beispiel iMac-Link, mit denen kann ich dann noch von Hand praktisch links setzen, von Einträgen aufeinander. Und dadurch, dass das alles so mit Libraries aufgebaut ist und sehr modular kann man da theoretisch auch eine GUI oder eine Web-Applikation oder eine Android-App oder sonst was außenrum bauen. Das ist ein Hobbyprojekt, deswegen ist da praktisch alles von mir. Ich habe im Oktober 2015 angefangen und habe dann auch relativ bald eine erste Idee praktisch veröffentlicht und dann haben ein paar Leute da angefangen zu sagen, hey, das könnte man so viel cooler machen. Ich habe dann auch irgendwann noch eine zweite Version veröffentlicht und stehe jetzt praktisch kurz vor der dritten Version. Genau, 17 Libraries und 6 praktisch Kommando-Zeilen-Fronten mit drin. Ich bin knapp vor der 4.000-Commit-Marke und ich suche natürlich Leute, die sich für sowas interessieren, die auch Rust lernen wollen. Ich habe mit dem Projekt angefangen Rust zu lernen und bin seitdem nicht mehr davon losgekommen, also praktisch die Einstiegsdroge gewesen. Und genau, man findet mich auf GitHub oder auch auf einer Website und wer GitHub nicht mag, kann da auch ein Rehpuffen mir bekommen, das ist überhaupt kein Problem. Ja, genau. Ihr könnt mich auch einfach anquatschen. Ich bin noch bis morgen da. Und falls jetzt Fragen bestehen, könnte ich die jetzt beantworten. Vielen Dank. Gibt es Fragen? Ja, die Geschichte ist die, es wurde nach der Live-Demo gefragt. Ich habe die aktuell nicht kompalt und es dauert auf dem Rechner, sagen wir mal so, dann wäre ich wahrscheinlich morgen noch da. Nee, also es dauert etwas länger, deswegen geht es leider gerade nicht. Okay. Ja, vielen Dank. Dankeschön. Nerdzeug mit Musiknoten. Ich kenne diesen Menschen schon ein bisschen und ich weiß, dass dieser Mensch mit Musik was macht. Es wird sehr spannend. Ja, Applaus für Benjamin. Audio, Audio. Ja, hallo, ha, super. Das ist Audio Out. Also, vorhin hat es funktioniert. Ja, ich hatte irgendwie keine Zeit zu richtig Slides zu machen, weil heute die ganze Zeit so nette Menschen zu mir kamen und mit mir reden wollten, was für diese Veranstaltung spricht. Aber deswegen ist es leicht chaotisch. Ich habe hier ein Mobius Band und seitdem ich im universitären Kontext mal ein Komponisten mit einem Mobius Band am Handgelenk gesehen habe, habe ich mich gefragt, was kann man eigentlich machen, wenn man jetzt so Musiknoten auf ein Mobius Band druckt. Und natürlich könnte man es jetzt einfach spielen und drehen und spielen, was da steht. Dann hätte man ein Loop und so weit so gut. Aber nun hat ein Mobius Band auch die schöne Eigenschaft, dass es zwar nur eine Seite hat, aber man kann sie von zwei Seiten angucken. Und dann dachte ich, kann man nicht zwei Musiker nehmen oder Musikerinnen und quasi das Mobius Band in den Mitte machen und es so spielen, zweistimmig. Und das Interessante, was dann passiert ist, nach der Hälfte sind die Noten auf dem Kopf. Und die Frage, die ich mir dann gestellt habe, war, was passiert eigentlich, wenn ich Noten auf den Kopf mache? Und ich kann mal ungefähr zeigen, was ich damit gemeint habe. Also das hier, die ersten zwei Zeilen, also zwei Zeilen gehören immer zusammen, für alle, die nicht wissen. Also immer, wenn da vorne so ein Strich ist, das heißt, das gehört zusammen irgendwie. Und das ist jetzt einfach der Free Software Song mit einer zweiten Stimme, was ich jetzt in der zweiten Teile gemacht habe, ist, dass quasi einfach auf den Kopf gestellt. Also diese Note ist quasi die auf den Kopf. Die ist die auf den Kopf. Und dann stellt sich die Frage, was mache ich mit den Vorzeichen? Und in dem Fall habe ich mich entschieden, die Vorzeichen umzukehren, weil hier, wer von euch kann Musiknoten lesen? So ein paar. Also ich wollte mit den Vorzeichen überhaupt was machen. Also das war so meine Prämisse und das Problem ist einfach, wenn ich jetzt hier ein B gemacht hätte, dann, also manchmal geht das auf und manchmal geht das nicht auf. Ich wollte, dass ich am Ende diatonische Tonleitern habe, damit meine ich, was mit unten rechts diese Dinger, lydisch Turm, mixolydisch und so weiter, ja, die bestehen aus Ganztunschritten und Halbtunschritten. Also T heißt Ganztunschritt und S heißt Halbtunschritt. Und ich wollte sozusagen, dass wenn ich es auf den Kopf stelle, wieder so eine diatonische Tonleite rauskommt, weil dann klingt es wie Musik und man kann es musiktheoretisch behandeln und es funktioniert irgendwie. Genau, und was dann passiert, wenn man diese Musik auf den Kopf stellt, hängt vom Noten Schlüssel ab, weil die unterschiedlich symmetrisch sind und das genau, hier. Also es hat sich herausgestellt, dass die Musik symmetrisch geht, ist der Bass Schlüssel, weil die Kreuze und die Bass sind quasi an der Mittelachse symmetrisch andersrum. Das heißt, man kann überhaupt irgendwas vernünftig zuordnen, was auf dem Kopf steht. Ansonsten wird es ganz komisch, was ich euch auch zeigen kann. Also wenn ich jetzt hier diesen Song mit einer zweiten Stimme, die ich dazu geschrieben habe, im Bass Schlüssel auf dem Kopf stelle, dann kommt was heraus, das klingt irgendwie wie der Free Software Song in Kirchentonart. Und wenn man das aber mit dem Alt Schlüssel macht, da ist es halt irgendwie nicht so richtig, da kommt eine komische Tonleite raus, die halt keine diatonische Tonleiter ist. Und ich spiele ich das einfach vor. Ich hoffe, das funktioniert jetzt mit dem Ton. Also zuerst spiele ich die erste Zeile, einfach, dass ihr eine Referenz habt, und dann die zweite Zeile, das ist sozusagen mit dem Bass Schlüssel auf dem Kopf. Und dann die vierte Zeile, das ist mit dem Alt Schlüssel auf dem Kopf. Und wie gesagt, beim Bass Schlüssel dann klingt es halt wie der Free Software Song in Kirchentonart. Und im Alt Schlüssel klingt es echt schaurig. Das könnt ihr dann gleich hören. Wo ist der Ton? Okay. Also das ist halt, wenn man nicht den diatonischen Tonleiter rauskriegt, dann kommt so ein komischer Käse. Das habe ich mir überlegt, also so ein Möbiusband, das hat ja keinen Anfang und keinen Ende. Und irgendwie wäre es cool, Musikstück dafür zu schreiben, was das repräsentiert, was eine rotierende Harmonie hat. Also wer vorhin, gerade jetzt in dem Vortrag war, das hier, das ist der Quintenzirkel, der hat das schon gesehen. Und mit rotierender Harmonie meine ich was, dass immer eine bestimmte Anzahl im Urzeigersinn oder gegen den Urzeigersinn weiterspringt die ganze Zeit. Das hat den Nachteil, dass es in einem Kessel oder in einem Violinschlüssel oder irgendetwas, weil die halt wie gesagt nicht somitisch sind. Also entweder ist es überhaupt nicht definierbar für mich oder es kommt so ein Käse raus, wie ihr gerade im Einschlüssel gehört habt. Was ich gefunden habe ist, ich kann es... Ah, es gibt noch was. Also wenn man die Noten auf den Kopf stellt, dann gibt es irgendwie zwei Betrachtungsweisen dafür. Entweder kann man einen Dreiklang auf den Kopf stellen, einen Dreiklang, einen Violinschlüssel, gibt es auf dem Kopf D-Moll. Ja? Oder im Altschlüssel gibt es halt F-Dur oder im Bass-Schlüssel gibt es halt A-Moll. Wenn man aber das anders betrachtet und die Tonleiter auf den Kopf stellen würde, dann käme man bei einem anderen Ergebnis raus. Also ich weiß einfach bis jetzt nicht, was da praktisch funktioniert. Aber wie gesagt, also was ich mal überlegt habe ist, um überhaupt auf den Schluss zu kommen, wenn ich jetzt diese Noten nehme, einfach erstmal ohne Vorzeichen war, sonst wird es halt wie gesagt bekloppt im Violinschlüssel oder im Einschlüssel oder in irgendwelchen anderen, alles außer Bass-Schlüssel. Und also was ich jetzt bis jetzt nicht geschafft habe, ist was mit einer rotierenden mit einer rotierenden Harmonie, also meine Betrachtung bis jetzt, und das ist gestern, also ich habe noch kein Stück geschrieben, war, also angenommen, ich habe ein Stück, das ist okay, wie mache ich das? Okay, also angenommen, das ist so lang, dann, also nach der Hälfte wieder holt sich das ja, aber auf dem Kopf. Das heißt, man hat irgendwie, also, hey, das ist die Mitte, okay, man hat einmal Noten und dann hat einmal Noten mit mysteriös auf dem Kopf und was aber geht, ist quasi es spiegelt sich ja immer um einen Ton, also der Violinschlüssel spiegelt sich um H, der Einschlüssel um C und der Bass-Schlüssel um D und man könnte sozusagen immer was nehme ich jetzt als Beispiel quasi eine Arzimetrie schaffen, dass es spiegelsimetrisch ist und dann ist es natürlich, wenn man das Stück nochmal abspielen würde auch hier an der Achse spiegelsimetrisch in der Harmonie, aber die aber die Töne wären so rum versetzt würden so rum versetzt zueinander passen. Na ja, was ist mein Anliegen? Vielleicht finde ich irgendjemand, der erstens versteht, was ich gesagt habe, deswegen bin ich nämlich hergekommen. Das ist das Schöne bei diesen Nerd-Sachen und zweitens, irgendwelche Tipps hat, was ich machen kann, um eine rotierende Harmonie zu kriegen, wahrscheinlich funktioniert es nur im Bass-Schlüssel, aber ja, das war's eigentlich. Danke für die Aufmerksamkeit. Ihr findet mich, das ist ja nicht groß die Veranstaltung, also falls irgendjemand die Idee hat. Achso, nee, ich bin noch überlegen. Achso, ja, kommen einfach nachher. Cool, ich freu mich. Ja, dann kann der nächste, glaub ich. Oder der nächste? Ja, da fragen. Okay. Danke. Adventures with types with type annotations in python. Von Frankenstein. Was muss man da, das habt ihr das? Ja, ja, ja, ja, ja, ja. Wo ist das, ah, da bin ich. Immer noch nicht. Was soll denn das, den Körser kriege ich hin? Ja, es funktioniert. Zu groß. Das Format passt nicht ganz, aber okay. Mein Talk wird sehr technisch und sehr code-lastig, und es wird alles in Python sein, deshalb erwartet nicht zu viel. Es ist eher so ein Fable für obskure Sprachfeatures, die ich ausleben möchte, und deshalb in diesem Fall geht es um Python, eine meiner Lieblingssprachen und ein sehr neues Feature, das in Python 3 dazu gekommen ist, nämlich die type annotations. Wir fangen mal an mit normalerweise Python ist eigentlich eine dynamisch typisierte Sprache, da gibt es eigentlich nicht so richtig, wenn man den Code anguckt, dann sieht man eigentlich keine Types, und das ist zum Beispiel eine sehr einfache Funktion, wo man überhaupt keine Types sieht, man kann von dem, was drin steht, erkennen, dass es um sich Zahlen sich handelt, und wenn man aber den Python 3.5. das schreibt, dann kann man hier dazu schreiben, dass man einen Int erwartet und einen Flow zurückgibt, und das Ding ist, der Python-Interpreter kümmert sich um diese Anaturation eigentlich gar nicht, sondern das ist mehr so eine Art maschinenlesbare Dokumentation, oder was die Hauptanwendung davon ist, dann kann man den Code analysieren von einem statischen Typechecker und kann dann quasi, also der Programmierer sieht dann, was er falsch gemacht hat, aber während der Laufzeit hat das keine Auswirkungen. Wie geht es weiter? Wir können in Python auf jede beliebige zu jeder beliebigen Funktion über diese Type Annotation reflektieren, können irgendwie es gibt so ein Annotations-Attribut, wo man irgendwie einen Dictionary zurückbekommt, was einfach diese Klassen enthält oder man benutzt das Inspect-Modul, was ich in meinem Projekt, was ich nachher noch zeigen werde, benutzt habe, und dann kriegt man die Signatur für die Funktion und die enthält auch die Annotation, wie man hier sehen kann. Genau. Annotationen selber sind syntaktisch korrekt seit Python 3.0. Die ganze Types-Sache ist allerdings erst in Python 3.5 hinzugekommen, jetzt gibt es auch ein Modul, das nennt sich Typing, da kann man auch so Sachen machen, dass man eine Liste von Integers zum Beispiel als einen Type betrachtet oder ein Tupel aus einem String und einem Int oder so was, alles Mögliche kann man damit machen. Ach ja, genau. Hier hinten sind auch noch die Python-Enhancement-Papers referenziert. Ich kann sehr empfehlen den in der Mitte, den PEP-Nummer 484, der befasst sich genau mit diesen Type-Annotations, also wenn ihr viel kennt, kann ich euch sehr empfehlen, das zu lesen. Genau. Die Anwendung dafür, wie gesagt, Typechecker, MyPy ist das Projekt, was da ganz vorne mit dabei ist und ich hab damit irgendwie ein bisschen rumgespielt und hab mir gedacht, das kann man damit machen, wenn man jetzt irgendwie so eine Funktion hat und man schaut sich an, also wer hat eine Funktion, die hat eine Signatur und wir können uns überlegen, das sieht so ähnlich aus wie wenn man jetzt auf der Kommando-Zeile quasi eine Benutzungsinweis hat für einen Kommando-Zeilen-Tool und man könnte eigentlich das eine in das andere überführen und dann könnte man quasi von der Kommando-Zeile direkt eine Python-Funktion ausführen und quasi aus der Type-Information kann man direkt pausen, was da hinten so dran kommt. Und genau das hab ich gemacht hier ist der Github-Link zu meinem Projekt und hier ist ein kleines Code-Beispiel, wo man einfach eine ganz einfache Funktion hat ein häufiges Beispiel, man hat irgendwelche Dateipfade und man hat einen Output und dann sagt man einfach, das eine ist optional, dieser Output und das Ergebnis von dieser von diesen Dingen ist, man hat so eine Python-Datei und man sagt einfach zum Beispiel nicht minus H eingebe die automatisch generierte Benutzungsinformation man kann irgendwie Positional Arguments, Optional Arguments und das ist alles allein also das ist alles an Code, was man dafür braucht als alles implizit definiert allein durch die Typen der Argumente und man kann natürlich auch komplizierte Sachen machen man kann hier Sub-Commands machen und man kann irgendwie mehrere Funktionen nehmen und dann sagt man einfach ich habe eine Sub-Command so ähnlich wie bei GIT oder fast jedes zweite Kommando-Zeilen-Tool hat irgendwie GIT-Add, GIT-Commit dass man auch komplexere Kommando-Zeilen-Interfaces darüber abbilden kann und dann bekommt man hier so Kommands und dann kann man auch die Doc-Strings benutzen um die Beschreibung der einzelnen Kommands zu machen und so weiter und das ist ganz nett wie wenn ich ein großes Projekt habe und da irgendwie was ich hauptsächlich selber benutze und möchte auf einzelne Teile sehr schnell zugreifen und dann schreibe ich einfach ein Decorator vor meiner einzelnen Funktion und kann einfach jederzeit über die Schelle die einzelnen Funktion benutzen genau es gibt so ein paar komische In-Konsistenzen irgendwie wenn man die Liste also wenn man die danach prüft ob die also wenn man so einen generischen Type hat von irgendeiner Liste von irgendeinem Type T dann kann man überprüfen ob man bekommt dann nicht Liste von T sondern man bekommt dann irgendetwas und man kann prüfen ob das eine Liste von T ist indem man dieses IS-Subclass verwendet das kann man zum Beispiel bei Optionen nicht weil das dann keine Klasse mehr ist während das andere ist eine Klasse ich habe noch nicht ganz herausgefunden warum das so ist und ich bin irgendwie auch noch ein bisschen verwirrt also das Potential ist sehr groß da noch mehr zu entdecken was man da machen könnte hier sind mein Kontaktdaten ihr könnt durch das GitHub Repository angucken und mir gerne irgendwie Fragen stellen und Kommentare abgeben sind ja Fragen jetzt zum totalen noch ein Thema die IS-Subclass Relationship hält wahrscheinlich nicht weil Optionen wenn du mit statischen Programmiersprachen gearbeitet hast dann ist das wahrscheinlich relativ einfach zu sehen Optionen ist quasi ein Typ der ist entweder nichts oder etwas von A und eine Liste ist einfach nur also enthält einfach eine Liste hat auch den Base Case aber in Partners ist es wahrscheinlich anders implementiert aber wahrscheinlich hängt es mit Summentypen den Unterschied zwischen Summentypen und Produkttypen zusammen nur so als Hint also der Option Type ist implementiert als es gibt einen, was das nennt sich Union Nann und dem was man dem als Type Argument gibt das ist aber irgendwie bei den Listen ist das ja irgendwie ähnlich weil es gibt in Python kein Konzept von einer Liste von einem Typen es gibt halt eine Klasse die heißt List eigentlich sollte es auch wenn es eine Klasse gibt die zwei Vereiningen es kann sein, dass es irgendwie allerdings ich lerne auch gerade Rust und da ist es tatsächlich auch so der Option Type auch ein eigenes Ding ist wo du das überprüfen kannst das ist dann ein eigener Type kannst du sagen das ist eine Option von T genau ich wollte auch noch eine Frage stellen wenn du irgendwie so eine Datei hast ganz tief drin in deinem Programm und möchtest so eine Funktion nochmal weiter testen wie du es beschrieben hast und würdest du dann über die CLI welche Funktion verwendet werden soll also wenn du jetzt halt irgendwie in irgendeiner unterer Datei bist und dann da halt eine Funktion nochmal extra über die CLI verfügbar machen willst wird dann einfach der Name von der Funktion als Sub Command verwendet oder ja woher weißt halt dass dann diese Funktion verwendet werden soll nicht irgendeine andere Funktion die vielleicht auch als CLI Funktion annotiert ist also im Fall von wenn ich mehrere benutze dann sollte ich natürlich den Sub Command benutzen und in dem Fall wenn ich einfach den Namen von der Funktion als den Sub Command also ich hatte irgendwie das mit fu und bar waren zwei Funktionen in dem Python Programm und kann ich einfach test.py fu test.py bar sagen und die einzeln zugreifen ja wenn es ganz tief drin ist in dem Programm dann wird es manchmal auch schwierig und man sollte natürlich das nicht man sollte trotzdem irgendwie explizit für solche Sachen wahrscheinlich sonst noch fragen ja herzlichen Dank ist ahb da nettex viel viel zu unbekannte mc erntaus okay dann gibt es dann das Normand aber da Hochschulkruppe freie Software, freies Wissen nee ja nun ich möchte eine Hochschulkruppe vorstellen die ich mitwirke und ja das mache ich jetzt einfach mal also ich komme aus Dresden und wir haben dort eine Hochschulkruppe freies Software, freies Wissen gegründet weil wir einfach der Meinung waren dass das nötig sei und wir ein bisschen frustriert waren als wir dann erste Anlaufstelle Informatik FSR und ähnliches fragt haben und die uns irgendwie mit kostenfreien Windows Lizenzen da das Gemeinnah an der Sache ist das Gemeinnah in der Sache ist die Dinge laufen natürlich ab spätestens wenn man exmatrikuliert wird und da heißt es willst du deine Dateien weiter hin öffnen dann kauf doch eine Lizenz und solche ähnliche Geschichten ja TU ist die Uni htv für Technik und Wirtschaft ist meine Hochschule und genau wir haben bisher einige Projekte schon durchgeführt Linux Install Party Linux Presentation Day der jetzt mal zweimal mehr stattfindet und da versuchen wir aber wenigstens einmal im Jahr oder vielleicht sogar zu beiden Veranstaltungen damit was dazu machen da haben wir es gedacht ja E-Mail Verschlüsselung eigentlich ist uns der Transparenz und es war dann sofort ganz wichtig aber für vertrauliche Inhalte und auch dass man weiß dass die wirklich von dem Absender kommen von dem sich scheinen zu kommen wäre doch signierte oder digital signierte E-Mails ganz toll ja naja das muss man wahrscheinlich noch ein bisschen länger einen Atem für haben wir haben uns gedacht ja warum nicht einfach mal ein Verschlüsselungsgewinn spielen machen ist mittlerweile vorbei aber Teilnehmer war ganz einfach eine verschlüsselte E-Mailer in uns eine Hochschulkruppe schreiben die sind noch dem Motto ich möchte mitmachen und schon war man dabei und dann gab es so ein paar kleine Preise wie Mensa Rootschein, was fürs Kino, Fitnessstudio was auch immer nach dem solche Nerdgeschichten nicht so den Anklang fand der Meinung nach, dass das die Zielgruppe vielleicht nicht so gebrauchen würde unser wir haben ein Programmpapier formuliert und unser größtes Projekt ist der Uni-Stick ein USB-Stick übrigens stuha finanziert, ganz tolle Sache mit freier Software von Studis für Studis wir haben da mal ein bisschen recherchiert welche Anforderungen oder welche Studieninhalte das eigentlich so gibt über die verschiedenen Studiengänge und haben uns da so ein paar allgemeine Sachen rausgesucht wie Libraoffice, Latech Python ich will nicht sagen kompletten Stack, aber so was, dass man dann halt Leuten die Hand drücken kann und die können es gleich benutzen E-Python, Notebook, Jupyter, sowas in der Art ja, dann gab es 4000 Flyer, die in die Erstitüten gepackt wurden das ist ein Flyer, der Art eines Gutscheins gehalten und nach dem Motto kommen vorbei in die Uni-Bippo in den größten Vortragssaal, den es da gibt und dann kannst du den stuha finanzierten einen der vom stuha finanzierten Sticks der abholen, wir haben nicht dazu geschrieben dass wir nur 60 haben also 80 finanziert und 60 haben dann tatsächlich nutzbar und die anderen dann so nach und nach ja, und wir haben natürlich ein Live-Linux drauf, Debian Stable hat viel Mühe gekostet und für die Windows-Nutz haben wir uns gedacht ok, damit diese nicht gleich in die Tonne kippen also ich irgendwie was anderes drauf bügeln tu mal den von portable apps ein paar freie Softwareprogramme mit drauf damit die vielleicht schon einmal gefallen dran finden ja so, das hat ganz hart viel Arbeit gemacht ja, und der Saal der war rappelvoll über 200 Leute also knapp über 200 Leute da wussten sie noch nicht wie viel Sticks es gibt und ja, wir sind sie alle los geworden ja, warum machen wir das? ok, ich glaube, hier brauch ich da nicht so viel dazu sagen natürlich freie und Quelle auf eine Software und das hat doch ein paar Vorzüge hat das ist natürlich auch der Meinung der Sven Grahm schon mal öffentlich finanziert wurde dann sollte er auch der Öffentlichkeit weiterhin zur Verfügung stehen und das trifft natürlich auch Forschungsergebnisse und Abschlussarbeiten hin die quasi erst finanziert in irgendwelchen Verlagen mehr oder weniger komisch abgekauft werden und dann dort da Verschlussgehalten werden bis man sie teuer wieder freikauft und sie dann ja, über Bibliothek wieder halbwegs nutzbar sind dann habe ich gedacht, nee, ist doof, das sollte man anregen, dass das vielleicht doch an wie anders geht ja, Zukunftsideen ok, mittlerweile ist davon schon einiges umgesetzt Blockbeiträge wir haben einen Block auf unserer Homepage www.fsfw-dresen.de Korselatechpeiten geht Inkscape Inkscape ist noch im Planung aktuell mache ich ein Diversity-Korsen zu Blender in der Bibliothek, das ist richtig klasse und tut dann auch so ein bisschen Gid oder GidHub mit einfließen lassen ich habe die Hoffnung, der zukünftigen Semester dann so Gid zum Selbstosten und vielleicht noch dieses Gid-Dit einzubinden ob im Source-Set-Bewerbe, kleine Preise ja Aufmerksamkeit erzeugen und Lobbyarbeit, ja, lange Arten braucht man und es ist anstrengend, macht aber auch sehr viel Spaß Vernetzung mit anderen Städten deswegen halte ich zum Beispiel heute hier diesen Lightning Talk, denn uns kann man schorgen, also wir haben GidHub Rebo das kann man gerne für sich anpassen und hier wäre auch schon die Internet-Adresse ja Newsletter haben wir auch einen für Diskussion der quillt über und ein für Newsletter, der ist dann doch schon eher low-traffic und ja, manche Leute werden sich jetzt wundern, warum wir da ein Facebook-Luro mit drin haben so ungefähr auf allen selben Zeilen wie Jaspora, GidHub und Co. GidHub ist ja auch zentral, Facebook der Nerds war da mal gesagt, aber zu dem Facebook haben wir echt einen kleinen noch das Kleimer dazu geschrieben noch die Motto, dies ist ein Antiprofil, also warum wir das nicht empfehlen zu nutzen beziehungsweise, wir sind nur da, damit auch die Leute, die eh schon da sind, lesen können dass es gleich nicht so toll ist ja und es wird sich immer darüber gestritten, wer das Ding nun betreuen nicht darf, sondern muss und will eigentlich immer keiner machen ja und das war es schon, also wenn da noch jemand mitmachen möchte oder das vorken möchte, da würde ich uns befreuen ja und jetzt die Fragerunde oder Anregung oder was auch immer zu dem Thema freies Wissen das war der zweite Punkt, dass die öffentlichen Arbeiten und so weiter, die finanziert sind auch öffentlich verfügbar sind was ich ja selber grüße aber wie weit wird das umgesetzt und wie weit ist die Arbeit da hingehend freies Software, ist es einer und die freien Ergebnisse also freies Wissen bezieht sich zum einen auf zum Beispiel freie Lehrmaterialien, Open Educational Resources oder warum kann ich manche Foliensätze von einem Prof, selbst wenn ich ihn gefragt habe und ihm ja eigentlich gerne ein OK geben würde nicht für andere Zwecke weiter verwenden weil er hat zum Beispiel eine Quelle nicht die Verwertungsrechte nicht genau geprüft möglicherweise passiert halt und das ist dann halt einfach ärgerlich und da haben wir uns oder auch Profs, die auf jede zweite Folie irgendwie so ein eingekringelndes C drauf machen und was es im amerikanischen Sprachraum nicht noch alles an solchen ähnlichen ergaarteten Symbolen gibt und jeden nicht nur böse angucken, der das irgendwie weiter verwenden möchte und wir haben uns gesagt, es ist doch doof und haben auch einige Zuspruch von Profs gefunden, die sich im öffentlichen Lehrauftrag sehen also Beton auf öffentlich und ja da ist zum Beispiel die Idee des Studis zu Themen zu denen sie sowieso was ausarbeiten sollen, das doch gleich in öffentlichen Plattformen machen unter einer freien Lizenz zum Beispiel Wikipedia Artikel, Reviewen Philakorgien, Aktualisieren, was auch immer und das andere ist natürlich Open Access jemand hat eine Abschlussarbeit geschrieben und ist der Meinung ich möchte damit die Welt ein Stück besser machen oder das ist, was weiß ich mein Meisterstück auf das ich in Bewerbung hinweisen möchte und die stellen das ja unter freien Lizenz und an möglichst prominente Stelle ins Netz, Zeitschriften, es gibt Open Access Publikationen und sehr erfreulicherweise die Uni-Bübo bei mir in Dresden, also die Slub auf nicht recht, das ist richtig zusammen Sächsische Landes- und Sächsische Landesstaats- Universitätsbibliothek da im Portal betreiben namens CUCOSA und dort kann man an solcher Open Access Publikationen auch tätigen so, ich würde jetzt einfach nochmal die Homepage von der Hochschulkruppe kurz zeigen, wenn ich den jetzt hier Internet habe, das ist was anderes und wir haben natürlich auch regelmäßige Treffen und solche Geschichten aber ich glaube das ist hier ein weniger relevant ja, genau aktuelles Sprechstunde, regelmäßige Treffen was vielleicht interessanter ist ist unser Programm mit natürlich ODT-Datei oder PDF ich scroll hier nur kurz durch, weil wir haben noch eine Kurzfassung davon die auch etwas anschaulicher ist, hoffe ich gehe das jetzt ne, gehts nicht ich bin jetzt doof ich bin wieder die Internet-Bindung zusammengebrochen naja, sei es drum ähm ne, mich das genau, ach, das ist sogar das, was ich wollte ja, ein bisschen befreien Software will frei sein, vertrauliche Räume schaffen und natürlich Quellangegaben wo wir die ganzen Materialien herhaben so, ähm ja ist damit die Frage beantwortet die nächste bitte ich habe keine Frage ich wollte es nur kurz als Feedback ich fand die Stick-Aktion echt cool und ich werde es versuchen bei unserer Asta auch mal noch anzutriggern, weil bei uns die erstes auch immer Sticks bekommen, aber die sind halt leer und ich meine wenn man sowieso schon Sticks verteilt dann kann man doch da auch ein bisschen was draufklatschen wir haben da 80 Sticks zu bespielen das setzt man sich halt mal ein Wochenende hin wir haben da das Live wir haben da das Debjahn Live-Bild für verwendet ähm, um Images für so Live-Mädchen zu erstellen mittlerweile sogar mit Persistenz weil es ja auf dem USB-Stick und ähm äh ja kann man, ach ja und wir haben noch wie so eine Art kleines Bildsystem oder ein Vorbereitungssystem dazu gebaut für die Paketauswahl und das würde ich jetzt mal kurz zeigen, die Internetseite und da kann man einfach sich eine andere Zusammenstellung wählen und braucht es dann im Prinzip nur einmal ausführen ok, das dauert dann ja ganz so weils aber zu speziell das erste Mal aber dann hat man eine individuell angepasste Distribution ähm Moment, Moment, Unistik genau so, ähm jetzt muss ich gucken hier ist es auch noch mal beschrieben also kleiner Tipp es sollte ein Linux sein idealerweise sogar noch ein Debchen mit einem Debchen Stable klappt's super, aber naja so, ähm, die Liste, die Software Liste ja, ich hab immer noch ein Stable drauf weil ich wollte das bauen und sobald das durch ist, werde ich dann auf was neueres updaten ähm genau ist das das? ja, vielleicht damit auch die Windows-Leute noch mal kurz was damit man dir was zeigen kann in Linux-Leuten brauch ich glaube ich nicht erklären wie eine Paketverwaltung funktioniert denn das ist ziemlich bequem es ähm das ist jetzt nicht das was ich suche so, das übrigens unser Github-Rebo hier, ähm so sieht dann der Desktop aus ähm, Software Liste genau, ja hab ich's doch und zwar haben wir in Markdown, ähm, ja einfach ein Github eine Liste geschrieben das hier ist übrigens dann ähm, ja wie man das macht die wird gepasst und ähm, da wird dann eine Liste von Software raus erstellt die dann dem Live-Bild übergeben wird und das macht dann da Dinge mit ähm, Sternchen ist ausgewählt ähm, Kreis ist, naja nicht man gibt's noch die Variante mit ähm, Empfehlung oder vielleicht besser nicht weil's irgendwas bricht oder zu groß ist und das haben wir hier so ein bisschen untergliedert und auch zum Beispiel einiges Accessibility, das ist sogar wieder eine Unterliste also man kann sich das der Bund zusammenstricken und ähm da gibt's ganz viel also es hat leider nicht mehr alles auf die Sticks gepasst die wir da finanziert bekommen haben und da kann man ähm auch, wir freuen uns noch über Pullover Quest ja, das war's, wenn's keine weiteren Fragen gibt dann uns nie bitte noch stellen keine weiteren Fragen? ja, herzlichen Dank gibt es noch jemanden spontan schnell entschlossen ist der die ein Lightning Talk halten möchte keine spontanen Lightning Talks dann habt Spaß auf der GPN bitte ja ja, von schon gefragt von AHAB, aber Mensch tauchte nicht auf oder ist Mensch da? Mensch ist da, super! während ich von der Bühne gehe darf ich noch kurz Werbung für die Datenspuren antreten eventuell haltet dich kurz im Herbst findet wieder die Symposium Datenspuren in Dresden statt ähm das empfehle ich sehr zu besuchen, das ist von dem dortigen Chaos Computer Club danke ja, spät kommen früh gehen oder irgendwie so was wie war das? die nicht digitale Autobahn hat mich leider aufgehalten ähm gibt's irgendeine Möglichkeit das hier zu ja, du musst uns einfach hochhalten den Laptop und dann das abgeben HDMI das kann ich das kann ich das schade das kannst du lesen ähm also leider, HDMI zum neuen Laptop ich könnte das aber nur mit Bistik packen alternativ da ist noch eine PDF war noch nicht ganz drin wir hatten schon der Laptop wird noch vorgeah 10 Minuten wir müssen den dazu abgeben nee USB-Stick mit jemand anderem sein Laptop gibt's irgendein? ich weiss nicht immer zur Verfügung würde jemand seinen Laptop zur Verfügung stellen muss nur ein PDF-Reader haben das ist hier das Kabel? ja wenn ich das verbranche habe dann ist es besser aber also, HDMI hat er auch gerade nicht erkannt ja, ich bin nicht schuldig nee ich mag irgendwie auch nicht schalten bitte auf das Bimmer nee, also er erkennt hier nichts ja, vielleicht auf das umschalten nee, die Frage ist ob das deshalb nicht erkennt ah, so, dass es nicht durchgeschaltet ist also hier geht es auf jeden Fall jetzt läuft es das Problem oh, dann herzlichen Dank fürs warten ich bin nicht Gregory Nutt mein Name ist Andreas Bielmeier und ich möchte ganz kurz NuttX präsentieren NuttX ist ein Autos, das komplett unter BSD Lizenz steht und quasi überall dort einspringen kann, wo man gerne Linux hätte aber man einfach zu wenig RAM oder Flash hat, spricht bei kleinen Microcontrollern also Cortex-M Größe oder auch ein Pick 32 wo endet jemand hier noch Pick in dem Raum? nee weiß jemand, von was ich spreche wenn ich von Autos und Microcontrollern spreche nicht, dass ich jetzt hier völlig das falsche Publikum hatte ok, super NuttX ist so ein bisschen ähnlich wie Free Autos oder GBOS, falls jemand die freien Echtzeitbetriebssysteme für Microcontroller was sagen hat aber den großen Charme es ist sehr linuxartig ja, also das sind nicht meine Slides, der habe ich mir jetzt auch von Gregory geliehen natürlich ein Betriebssystem, wozu ist es da, es initialisiert für mich die Hardware und es sorgt für mich als Abstraktion, ich möchte irgendwie mit Geräten interagieren, meine Applikation programmieren die sich per Ivernet-Pakete entgegen nimmt und dann irgendwelche LEDs blinken lässt, weil das ist gefühlt ja der die Hauptanwendungszweck von Elektronik genau, man hat dann eben abstraktionsebene Tasks und Threads, wie man das von Linux kennt es wird Multitasking unterstützt mit harten Echtzeitprioritäten und was heißt hier eigentlich Echtzeit, in dem Fall nicht, dass es besonders schnell ist sondern für diejenigen unter euch, die sich damit beschäftigt haben, dass ich garantierte Antwortzeiten habe, also wenn ich meinem Timer sage, ich möchte bitte in 10 Millisekunden aufgeweckt werden dann möchte ich auch nicht in 15 aufgeweckt werden, sondern die zwischen 9,999 je nachdem welche Garantien ich benötige und eben 10,001 und da herum kümmert sich eben ein gutes Echtzeitbetriebssystem warum jetzt nicht Linux nehmen es gibt ja mit dem pre-empt RT-Patch für Linux, inzwischen auch ein wirklich solide, echtzeitfähige Basis mit unserer allerliebsten Betriebssystem funktioniert allerdings nur gut wenn ich eine MMU habe, also eine Verwaltungseinheit, was ich natürlich auf meinen Desktop-Prozessoren oder auch auf sowas wie einem Raspberry Pi, also der Cortex-A, der Application-Prozessoren Reihe habe wo mir das komplett fehlt, ist bei Microcontrollern, also nicht nur den 8-Bit AdMegas, sondern eben auch immer noch selbst bei sowas wie einem 200 Megahertz LPC 43 Dualcore Cortex-M4 also wirklich für ein Mikroprozessor ist das ein ziemliches Brett, also der IC ist so groß, dass man ihn nicht mehr überall verlötet bekommt, wenn es eng wird, aber ist eben immer noch ein Microcontroller-Unit und kein Application-Prozessor, das heißt es fehlt eine Speicherverwaltungseinheit und damit müsste ich von Linux auf Microcontroller-Linux gehen und wer das schon mal getan hat weiß warum man es nicht tun möchte und quasi genau dort, wo ich eben mit Linux nicht sinnvoll ansetzen kann, kommt Nut-X ins Spiel genau, das kann man überspringen, das ist hier was ich gerade erklärt hatte, anhand von Flashgrößen dargestellt aber im Prinzip geht es nicht nur um die Standard-Romgröße also ein Linux hat wenn man es schon ziemlich runterstrippt hat der reine Kernel 2 bis 3 Megabyte, wir zielen hier eher auf ein paar Kilobyte, trotzdem möchte ich eine POSIX-API haben, Netzwerk, Unterstützung, WLAN, TCP-IP-Stack und alles weitere Nut-X also ich war erstaunend ehrlich, also kannte jemand schon vor 15 Minuten Nut-X so ging es mir nämlich auch bis vor einem Jahr, als ich das für die eigenen Hardware-Komponenten nach einem Erdholz gesucht habe das ist wirklich eine sehr geile Sache für jeder der mit etwas größere Mikroprozessionen arbeitet und einige scheint es auch zu kennen vor allem die Chinesen und genau was sind die Core Features von Nut-X es ist Standard-Complaint vor allem POSIX und dort wo Linux POSIX uminterpretiert oder erweitert versucht es auch kompatibel zu sein auf Kernelebene sind die Schnittstellen natürlich etwas andere man hat ein Dateisystem man hat eine ordentliche C-Library man hat Treiber für ganz viel schon mal für einen modernen Mikroprozessor einen Treiber geschrieben für das Netzwerk-Interface oder für eine flexible IO-Einheit der weiß das ist schon die Größenordnung von einem Linux-Treiber inzwischen geworden weil ich einfach eine größere Komplexität in meinen Mikroprozessoren abbilden muss und Nut-X bringt eben für sehr viele unterstützte Boards fast vollständige Treiberunterstützung mit das heißt man ist dann auch portable von einem Mikroprozessor zum nächsten an der Stelle kennt jemand M-Bed also M-B-E-D okay 2, 3 ist eine Alternative sicherlich wenn ich nicht Wert lege auf POSIX-Kompatibilität ist viel mehr objektorientiert ist den C geschrieben, kommt von ARM hat ähnliche Vorteile dass ich eben über verschiedene konkrete Mikroprozessoren hinweg portablen Code schreiben kann und relativ schnell einfach zum Ergebnis kommen wenn man in einem Paket rein LED blinkt Taskmanagement also aufgrund der Zeit werde ich jetzt nicht hier auf alles eingehen ich wollte eher noch auf 2, 3 Punkte kommen und zwar die Treiberunterstützung von Nut-X und zwar ist dort auch was bei Linux eingeführt wurde ich weiß gar nicht mehr irgendwann Ende der ich glaube Mitte oder Ende der 90er dass man Treiber in der Upper und Lower Halftheit das heißt ich habe etwas Interrupt Context bearbeitet und etwas das Mehrarbeit zu tun hat was als Thread verarbeitet wird und das sieht Nut-X auch sehr konsequent durch, das heißt ich habe zum Beispiel eine Abstraktionsschicht ganz allgemein für RGB-LEDs schreibe dann also für diese Upper Halft eine Lower Halft für meinen konkreten Mikroprozesse, für meine PWM-Einheit und habe dann sofort alle Applikationsunterstützung also weniger Code für mehr Blinken Device Drivers hier ist ein Beispiel was alles schon dabei ist das ist wirklich relativ viel auch USB-Support sowohl Host als auch Klient wer schonmal sich mit USB-Treibern beschäftigt hat, der wird sich sehr freuen dass er das nicht selber schreiben muss und Networking ein Grund warum ich selbst auch mich gegen FreeArthors und für Nut-X entschieden hatte ist, dass er einen komplett integrierten TCP-IP-Stack mitbringt der auch die meisten der nicht allzu neuen TCP-AFCs unterstützt und auch semi-correct implementiert also man kann damit, man kann das ein Netzwerk hängen und es funktioniert und es stürzt auch nicht sofort ab wenn irgendwer mal Endmap laufen lässt und was ganz wichtig ist wenn man in Richtung IOT oder wie wir mit unserem Start-up in Richtung Robotik IOT arbeitet hat BSD Sockets, das heißt ich kann Libraries, die unter Linux laufen relativ schnell auch unter Nut-X zum Laufen bekommen es bringt einige Netzwerkdienste mit einen HDTP-Demon FDP, NTP und so weiter also man kann auch wirklich auf sein Mikroprozessor relativ schnell damit eine Web-Schnittstelle deployen unterstützt viele Prozessoren das wichtigste ist hier ist natürlich weniger der Intel als viel mehr die ganze ARM Cortex-Serie bis runter zum aktuellen M7 und auch hat Mega-Mips was hier fehlt sind die ganzen Pics oder ich sehe es nicht auf meinem Slide aber jedenfalls auch Pics wer in das interessiert unterstützt sogar grafische Front-End sieht ein bisschen old-school aus hier aber auf ich weiß nicht zum Beispiel 256K Flash mit 32K RAM da freut man sich wenn man überhaupt ein Fenster hat unterstützt auch verschiedene Bildmodi also klassisch Mikroprozessor alles ist ein Binary, läuft in einem Adressraum, ich habe quasi nur Funktionsaufrufe wenn ich eine MPU also nicht eine MMU, sondern eine Protection-Unitabe kann ich auch zumindest meine Applikation vom Kernel separieren und sauber überall OCTLs arbeiten oder wenn ich Nut-X auf einem großen Mikroprozessor einsetze kann ich es eben auch wie man es von Linux kennt man hat verschiedene Applikationen in virtuellen Adressräumen, die sauber separiert sind von den Treibern und das ist eine Bildoption also muss ich nicht quasi alles ändern, sondern einfach nur eine Bildoption setzen so was auch ein sehr cooles Feature ist es bringt die sogenannte NSH mit die Nut-X-Shell weiß gar nicht was die offizielle hat doch Nut-Shell also quasi in den Kommando-Zeilen Interpreter der über serielle Konsole oder auch über Telnet funktionieren, ich kann so tun, als hätte ich auf einem kleinsten Mikroprozessor mehrere unabhängige Programme, die ich launching kann und wieder beenden kann das programmiert man sich sonst eigentlich immer wieder von Hand nach das wichtigste zu Schluss, die Webseite nut-x.org kann man sich runterladen, ist auf Bitbucket gehostet, inzwischen nicht mehr SourceForge Gott sei Dank ist relativ gut dokumentiert, wenn man weiß dazu, ich muss hier kurz die Tasten finden ah, ich habe es gerade kein Browser auf diesem Wiki gibt es irgendwo einen Knopf zu Documentation, hier links und auf dieser Seite steht viel Text und irgendwo gibt es nochmal einen Link und da ist dann die echte Dokumentation versteckt und die ist auch relativ gut dann, ansonsten bin ich jetzt erstmal durch, auch mit der Zeit würde mich sehr freuen, wenn jemand Interesse hat an hat X, ich habe schon relativ viele Treiber, die ich selber geschrieben habe wieder hin gepusht freue mich natürlich, wenn das mehr Leute tun, wer noch gerade auf Job suche ist, da kann ich auch gerne mal ansprechen in Karlsruhe, danke so, ja, gern natürlich, also Fragen dazu ok, scheint irgendwie ziemlich überwältig, sonst noch von mir eine Frage wer denkt denn, dass er im nächsten Jahr irgendwas mit einer Mikroprozessor macht, wo er nicht Beermettel anfangen möchte sondern eben mit einem Betriebssystem ok, es gibt definitiv Leute hier, dann ich werde noch den Abend hier sitzen und gerne ansprechen dann kann man sich ein bisschen drüber unterhalten, warum NatX das neue tolle RTOS ist