Masterarbeit: Done

So, nach meiner Bachelorarbeit ist nun auch meine Masterarbeit abgehakt. Ich muss gestehen, ich bin ziemlich froh, das ich die letzten 6 Monate hinter mir habe, das ganze war doch eine ziemliche anstrenge Sache mit vielen neuen Erfahrungen für mich.

Was habe ich denn überhaupt gemacht? Meine Arbeit trägt den schönen Titel „Konzeptionierung und Implementierung einer hybriden MAC-Layer-Architektur für Paket-basierte Powerline Kommunikation auf einem FPGA“ 🙂 Powerline-Kommunikation ist dem einen oder anderen vermutlich ein Begriff, auch unter dem Begriff „dLan“: Weiterleitung einer LAN-Verbindung über das bestehende Stromnetz. Der passende Standard dazu heißt „HomePlug“ und sieht eine Aufteilung von Geräten in eine MAC- und eine PHY-Schicht vor, ähnlich wie im OSI-Modell. Ich habe jetzt in meiner Arbeit einen MAC-Layer auf einem FPGA implementiert. Der MAC-Layer macht vor allem so Sachen wie das Erzeugen von Headern und Prüfsummen, Segmentierung von zu langen Frames und Ackknowlegdments. Nicht ganz einfach, aber eine interessante Sache 🙂

Weiterlesen

Kombinatorik zu Ostern

Frohe Ostern!

Am Ostersamstag waren in in der Familie fleißig und haben Eier gefärbt. Meine Aufgabe war es danach, die Eier auf unsere zwei Osternester „hübsch“ zu verteilen. Nach einer kleinen Diskussion darüber, wie man das am besten macht, kam dann die Frage auf, wie viele Möglichkeiten es dazu eigentlich gibt.

Wir färben unsere Eier immer in fünf verschiedenen Farben (zumindest wenn ich nicht wieder die Farbtabletten mit blau und grün vertausche und wir daher zwei mal blaugrün haben 🙂 ) und haben dieses Jahr zwanzig Eier gefärbt. Es gibt also vier Eier in jeder Farbe. Wir haben zwei Osternester, in jedes kommen also 10 Eier. (Das Bild oben ist nur Demo 🙂 )

Wie viele Möglichkeiten gibt es also 20 Eier, von denen jeweils 4 identisch sind, in 2 Nestern à 10 Stück anzuordnen? Dabei zählen natürlich keine Möglichkeiten, bei denen zwei gleichfarbige Eier vertausch wurden, und auch keine, die man durch Drehen der Nestern ausgleichen kann. (Die Eier liegen in jedem Nest in einem Kreis). Ein klassisches Problem der Kombinatorik also 🙂

Weiterlesen

CakePHP – Ein Review

Heute fragte mich jemand, ob ich eigentlich etwas kennen würde, um mit PHP „schöner“ zu programmieren. Ich dachte zugegebener Maßen erst an einen Editor (da würde ich PhpStorm (gibt’s für Studenten umsonst!) empfehlen), es wurde dann aber relativ schnell klar, das es eher um sowas wie ein PHP-Framework geht. Um es gleich mal klar zu sagen: Ohne irgendein Framework würde ich nichts in PHP schreiben, was länger als 100 Zeilen ist. Man muss das Rad ja nicht immer neu erfinden, und dabei die gleichen Sicherheitslücken wieder einbauen 🙂

Nun entwickele ich für meinen Hiwi-Job schon rund 4 Jahre in PHP. Dabei habe ich die erste Zeit eine Anwendung weiter gepflegt, die ohne ein Framework geschrieben war. Nach einiger Zeit war klar, das es so nicht weitergehen konnte, die Anwendung war, auch durch ihr Alter und die Weiterentwicklung von PHP, unwartbar geworden und lief mit schnellen Schritten auf das End-Of-Life „ihrer“ PHP-Version zu. (Mehr sage ich jetzt nicht, der Autor ließt hier mit 🙂 ). Es musste also eine Neuentwicklung her, natürlich auf Basis eines Frameworks. Damals wurde mir CakePHP empfohlen (damals noch Version 2), was ich dann relativ unreflektiert übernommen habe. Jetzt nähert sich die Anwendung langsam der Fertigstellung, inzwischen basierend auf CakePHP 3. Im Laufe der Entwicklung hat sich eine gewisse Hassliebe zu Cake entwickelt…

Weiterlesen

ftRoboExt: Fortschritt

Ja, die kleinen Fehler sind immer die gemeinsten. Das war ungefähr das Motto der letzten Runde Entwicklung an meinem ftRoboExt.

Wie üblich bei solchen gemeinen Problemen war der Fehler schwer einzugrenzen, ab und zu funktionierte die SPI-Verbindung zum Robo Interface ohne Probleme, in den meisten Fällen tat mein Controller aber gar nichts. Es lag natürlich an eigener Blödheit, ich hatte das Datenblatt nicht richtig gelesen, dort steht es im Abschnitt 19.3.1

When the SPI is configured as a Slave, the Slave Select (SS) pin is always input. When SS is held low, the SPI is activated, and MISO becomes an output if configured so by the user. All other pins are inputs. When SS is driven high, all pins are inputs, and the SPI is passive, which means that it will not receive incoming data. Note that the SPI logic will be reset once the SS pin is driven high.

Weiterlesen

Bachelorarbeit: Done

baWieder ein Punkt auf meiner ewigen Todo-Liste abgehakt: Meine Bachelorarbeit ist geschrieben und abgegeben! Yay! Noch habe ich keine Bewertung, und auch den Vortrag muss ich noch halten, trotzdem schön, das erledigt zu haben.

Meine Arbeit hat den schönen Titel „Entwicklung und Optimierung von Software für eine mikrocontrollerbasierte Steuerung einer Messeinheit mit High-Speed USB-Schnittstelle“ ich durfte also Software für ein System schreiben, dass Daten aufgezeichnet hat, und die dann später per USB an den Rechner geschickt hat. Insgesamt sind dabei immerhin 31 Dateien mit 5117 Zeilen Code entstanden (davon 608 Leerzeilen, 1038 Kommentare, 3471 Code). Macht also ungefähr 20% Kommentare, das kann man schon ordentlich dokumentiert nennen 😉 (Gut, es ist C-Code, da ist das auch nötig…)

Dazu kommen noch 671 Zeilen C#-Code für die Host-Seite (96 leer, 133 Kommentare, auch 20% Kommentare), sowie ein wenig LabView-„Code“.

Weiterlesen

Warum E-Mail-Verschlüsselung nach PGP gar nicht so einfach ist

Eigentlich sollte dieser Beitrag anders heißen: „Mein Vorschlag für E-Mail-Verschlüsselung nach PGP„. Nur dann habe ich weiter gelesen, und festgestellt, dass das alles gar nicht so einfach ist. 🙁

Aber der Reihe nach: In der aktuellen c’t steht ein sehr interessantes Editorial über PGP. Der Autor fordert: „lasst PGP sterben!“. Interessant ist auch dieser Kommentar des Autors:

Es geht mir um massenhafte E-Mail-Verschlüsselung — also solche, die jeder, ständig und ohne drüber nachzudenken benutzt. Wann immer eine Diskussion anfängt, wie man das realisieren könnte, kommt jemand: „Wir haben doch PGP“ — und damit ist die Diskussion auch schon wieder zu Ende. Das muss aufhören. PGP hat das in den letzten 20 Jahren nicht hinbekommen — und es wird das in den nächsten 20 Jahren auch nicht mehr erreichen.

Ich denke, er hat Recht damit. PGP ist kompliziert zu bedienen, und leidet unter dem Problem, dass jeder Schlüssel für jeden ausstellen kann. Mir ist klar, dass das vielleicht sogar gewollt ist, um dafür zu sorgen, das die Leute ihre Schlüssel verifizieren, aber massentauglich ist das leider nicht. Ich habe trotzdem Vertrauen zu PGP und würde es auch benutzen, wenn ich mal wirklich geheime Informationen austauschen möchte, es hilft aber nicht gegen ständiges passives Abhören, weil es einfach nicht einfach genug ist, um ständig benutzt zu werden. (Wie eben z.B. die Verschlüsselung in Apples iMessage).

Weiterlesen

Semester-Planungschaos

Vor jedem Semester steht die gleiche Aufgabe an: Die Planung der zahlreichen Vorlesungen. Ich prokrastriniere das immer: „Das reicht ja kurz vor Beginn des Semesters“…“Du musst da noch mal drüber nachdenken“..

Nachdem ich jetzt aber schon die ersten fertigen Stundenpläne meiner Kommilitonen gesehen habe, war es wohl wirklich mal wieder Zeit dafür. Doch es ist jedes Jahr eine nervige Aufgabe, es gibt einfach zu viele Möglichkeiten. Natürlich ist da der Regelstudienplan. Doch da geht es schon los: Wahlpflicht heißt das Zauberwort, sie müssen nur 4 aus 5 wählen. Oder am besten doch alle 5, sonst fehlen ihnen später Leistungspunkte (LP). Das ist nämlich das tückische: Für jedes Modul, jeden Kompetenzbereich gibt es einen mindest-LP Angabe – aber mit der kommt man nicht auf die 180 LP, die man für seinen Bachelor braucht. Also muss irgendwo noch mehr gemacht werden. Nur dafür gibt es dann meistens gleich an Fülle an Wahlmöglichkeiten, aus denen im schlechtesten Fall sich alle(!) mit Pflichtveranstaltungen überschneiden. Toll.

Um an die Überhaupt ran zu kommen, muss man aber natürlich im Lehrveranstaltungskatalog nachsehen, Termine stehen aber nur in Stud.IP – oder vielleicht auch auf der Institutsseite. Vielleicht auch nirgendwo. Oder Sie stimmen nicht ganz (4 Semesterwochstunden, immer Montags 13-14 Uhr. Hä?).

Weiterlesen

Spaß mit Gamecube Spielen an der Wii

Mal wieder ein kleiner Erfahrungsbericht: Gamecube-Spiele auf der Wii spielen. Sollte eigentlich kein Problem sein. Zu Weihnachten habe ich dann auch The Legend of Zelda: Wind Waker bekommt, sogar die Limited Edition mit einer zweiten Disk, auf der Ocarina of Time und OoT: Master Quest drauf ist. Gamecube Controller war auch vorhanden, alles gar kein Problem.

Nur: Wo will das Spiel eigentlich seine Daten speichern? Von der Wii bin ich es gewohnt, das einfach alles auf dem eingebauten NAND/Flash landet. Doch der GC braucht leider Speicherkarten… Siehe da, die Wii hat ja sogar, hinter einer weiten Klappe, Anschlüsse dafür. Blöd nur, dass ich keine Speicherkarte habe…

Also ein wenig im Netz umgeschaut, aha, im GC Modus wird nichts emuliert, sondern einfach die CPU runter getaktet und die Wii ist dann eine Gamecube. Daher kann leider nicht einfach eine Speicherkarte emuliert werden. Oder zumindest Nintendo bekommt das nicht hin, die Homebrew-Hacker natürlich schon. Auch wenn keine so recht weiß, wie das eigentlich funktionieren soll, gibt es tatsächlich einen Hack namens „No More Memory„, der die Speicherkartenzugriffe auf die SD-Karte umbiegt. Doch der ist wohl nicht so recht perfekt, denn er produziert üble Sound-Fehler, wenn er nicht im virtuellen NAND installiert wird.

Weiterlesen

NiboPi: Teil 1

Mein neues Bastel-Projekt: Der NiboPi. Richtig, dass ist ein selten dämlicher Name. Aber bei sowas war ich noch nie sehr kreativ… Wie man am Namen wohl schon fast erraten kann, ist es eine Verbindung aus Raspberry Pi und NIBObee. Und damit dieser Blog auch mal wieder ein paar Beiträge bekommt, habe ich mir vorgenommen, ein wenig über dieses Projekt zu bloggen.

Momentan sieht es so aus:

IMGP1904Unten ist mein NIBObee eingebaut, und oben drauf sitzt in einer LEGO-Halterung mein Raspberry Pi, ein WLAN-Adapter und hinten ein Breadboard mit USB-UART Wandler.

Doch zunächst ein bisschen zum Hintergrund: Vor ein paar Jahren habe ich von meiner Schule aus mit ein paar Freunden am RoboCup teilgenommen, und zwar in der Disziplin RoboRescue. (Das andere Team unserer Schule hat es bei RoboDance übrigens bis zum Weltmeistertitel geschafft) Wir waren leider nicht ganz so erfolgreich, aber es hat immerhin für eine Platzierung im Mittelfeld gereicht 🙂

Weiterlesen

Firefox 15 Bug im Websocket Code

Das schlimme ist ja: Jetzt wo ich den ganzen Tag arbeiten muss habe ich jede Menge Sachen gelernt, über die ich gerne bloggen würde – nur ich habe leider keine Zeit dafür 🙁

Zumindest eine Sache kann ich jetzt aber wirklich mal bloggen: Firefox 15 (und auch 15.0.1) hat einen Bug im Websocket Code, der mir viel Ärger gebracht hat:

Eine neues Feature in FF 15 ist es, Verbindungen schon zu öffnen, bevor komplett klar ist, ob man sie braucht. Das sollte das Laden von Websites beschleunigen. Das ganze nennt sich dann „speculative connect“, auch wenn ich nirgendwo Infos darüber gefunden habe.

Nun habe ich für meine Firma etwas gebastelt, bei dem eine Verbindung über WebSockets zu einem „richtigen“ Server hergestellt wurde. Normalerweise kann man über WebSockets keine „richtigen“ TCP-Sockets ansprechen, doch es gibt ja Websockify, ein kleines Programm das auf dem Zielrechner läuft, dort eine Websocket-Verbindung annimmt und dort auf eine TCP-Verbindung weiterleitet. Ein nettes Programm, und meine Idee klappt auch wunderbar damit mit alle Browsern (außer dem IE 9…).

Weiterlesen