Einer unserer Professoren hat uns vorhin in der Vorlesung auf ein interessantes Problem aufmerksam gemacht.
Man kann sich nicht sicher sein, dass ein Programm keinen böswilligen Code enthält, selbst wenn man den Quelltext des Programms gelesen hat, weil der Compiler beliebigen Code einfügen kann.
So weit, so gut. Jetzt kommt der Hammer: man kann sich selbst dann nicht sicher sein, wenn man den Quelltext des Compilers kennt und den Compiler selbst compiliert hat!
Der Beweis: Ken Thompson hat in einem "klassischen" Artikel beschrieben, wie man einen compiler so hacken kann, dass er in ein bestimmtes Programm eine Hintertür einbaut - und dass er, wenn er sich selbst compiliert, dieses Verhalten miteinbaut.
Damit wird dann jede Instanz des compilers, die mit einer "gehackten" version compiliert wird, selbst gehackt - selbst wenn der source code, den man da gerade compiliert, die Hintertür gar nicht mehr enthält!
Man müsste also schon den Maschinencode inspizieren, um wirklich sicher alle Sicherheitslücken überhaupt finden zu können...
Interessanter Nebenkriegsschauplatz, witzig zum Drüber-nachdenken: man schreibe ein Programm, das seinen eigenen Quellcode ausgibt. Ist nicht so einfach, wie es sich vielleicht anhört ;)
Ein weiterer Vortrag, diesmal extrem hervorragend:
Rosalind Picard (MIT), "Toward Machines with Emotional Intelligence"
Es gibt ein Buch, das ich mal lesen muss: The Media Equation : How People Treat Computers, Television, and New Media like Real People and Places. Das sagt im Endeffekt, dass Menschen Computer wie Menschen behandeln, obwohl sie eigentlich wissen, dass das keinen Sinn macht
(zum Beispiel sollte man wohl elektronische Formulare über ein Programm auf einem anderen Computer ausfüllen lassen als auf dem, auf dem ein Benutzer das Programm getestet hat: dann ist der Benutzer weniger gehemmt, den armen Computer schlecht zu bewerten...!)
Picard und ihre Leute untersuchen Wege, den emotionalen Zustand von Menschen zu erfassen (auf sehr verschiedene Arten, z.B. Hautwiderstand oder Druck auf Sensoren im Stuhl etc.). Das ist wohl nötig, um Interfaces zu bauen, die sich "richtig" verhalten und einem nicht auf die Nerven fallen... Sie sagt, dass seine emotionale Unfähigkeit genauso ein Grund für den Misserfolg des Office-Assistenten war wie seine fachlichen Schwierigkeiten.
Sie haben ein System gebaut, das eine Art Lauf-Tagebuch darstellt, und einen Monat lang mit Benutzern getestet. Am Ende gab es bessere Ergebnisse mit der Version, die (ohne jede KI!) "Emotionen" simuliert (mit relativ einfachen Mitteln).
Der erschreckende Part kommt aber bei den Statements über die virtuelle "Person", die das Programm nutzt, um mit dem Benutzer zu interagieren... Viele haben Sachen bejaht wie "We respect each other" und "She really cares about me". Ziemlich gruselig, oder? Auch Prof. Picard war darüber beunruhigt - aber das ist vielleicht ein Nebeneffekt, wenn man anfängt, auf Emotionen zu reagieren... Die Leute brauchen definitiv Ausbildung, um mit dieser Art von Programmen umzugehen.
Als jemand gefragt hat, ob sie die Gefahr sehe, dass solche Technologien von Firmen zu Werbezwecken etc. ausgenutzt werden, um potentielle Kunden zu manipulieren, hat sie etwas wirklich interessantes gesagt:
Als sie mit Leuten von Microsoft über einige ihrer Ergebnisse geredet hat, waren die gar nicht überrascht. Die hatten Studien gemacht, dass Kunden, die Probleme mit ihrer Software hatten, dann aber guten Kundenservice bekommen haben, loyaler sind als Kunden, die nie Probleme hatten. Die Implikation ist natürlich, dass Bugs durchaus willkommen sein könnten...
Und, um das nicht zu verschweigen: sie ist eine sehr gute Rednerin. Unaufgeregt, klar, verständlich, witzig, fachlich top (okay, Professorin am MIT...). Ein sehr angenehmer, interessanter und unterhaltsamer talk.
Erschreckend; gesehen auf slashdot:
Wie manche vielleicht mitgekriegt haben, hat das MIT ein system aufgemacht, das ihre Vorlesungsunterlagen an die interessierte Öffentlichkeit verteilt. Natürlich nicht brandaktuell (sonst würde vermutlich keiner mehr bei denen die horrenden Studiengebühren zahlen wollen), aber ein absolut löblicher Ansatz (*g* ich wollte es mir immer mal anschauen, ehrlich! - Ich komme bestimmt irgendwann nächstes Jahr dazu...)
Das Erschreckende ist (wenn man mal bedenkt, dass es immerhin das MIT ist, von dem wir hier reden), dass sie das ding nicht etwa selbst geschrieben haben (sollten ja genug fähige CS-(u)grads haben), sondern nach Indien outgesourced haben. Und das beste ist, dass sie nicht etwa verschiedene Backends evaluiert haben, sondern einfach mal M$ benutzt haben... Na alles klar ;)
Wer, wenn nicht die, soll's denn dann noch richtig machen?!
Markus, Sebastian und Wolfgang haben gestern als Team 'UBC 0' am hiesigen Regionalwettbewerb des ACM-Programmierwettbewerbs teilgenommen.
Sie hatten sich dafür qualifiziert, indem sie die drei ersten Plätze bei der Lokalausscheidung belegt haben.
Alle drei UBC-Teams haben für die Regionals heftig trainiert (jede Woche mindestens einen 5-Stunden-Trainingscontest plus Taktiksitzungen etc.).
Das hat sich wohl ausgezahlt! Die Jungs haben überzeugend den ERSTEN PLATZ belegt (und damit so Kleinigkeiten wie Stanford und Berkeley hinter sich gelassen) - und die anderen beiden UBC-Teams sind auf den Plätzen 3 und 4 gelandet! Und wir reden hier nicht etwa von 5 Teilnehmern, sondern von über 80 Teams aus allen möglichen Universitäten von der kompletten Westküste von USA und Kanada...
Jetzt gehts zu den World Finals, die Ende März in Prag stattfinden. Die Jungs hatten irgendwie auf Hawaii gehofft - Pech gehabt ;)
Nochmal deutlich: HERZLICHEN GLÜCKWUNSCH zu diesem Hammer-Erfolg :)
Es gab mal wieder einen Gastvortrag heute: Wendy E. Mackay. Wieder in Richtung HCI, genauer: Augmented Reality.
Sie beschäftigt sich viel mit Papier und Möglichkeiten, Papier durch elektronische Hilfsmittel zu verbessern. Besonders interessieren sie dabei wohl Fälle, wo man das Papier nicht vollständig ersetzen kann (oder will).
Dabei kommen dann so Systeme heraus, die zur Kenntnis nehmen, was man auf Papier schreibt, und das gleichzeitig digitalisieren oder sowas. Ist grundsätzlich ganz interessant - man stelle sich z.B. vor, dass man einen Post-It-Zettel an ein SmartBoard klebt, auf dem gerade irgendwas angezeigt wird - und der Rechner merkt und versteht das dann...
Das einzige Problem mit dem Vortrag war, dass sie ganz viele verschiedene Sachen angedeutet hat, aber dann doch recht oberflächlich über die vorgeschlagenen Lösungen weggegangen ist... Mich als Techie hätte halt die eine oder andere konkrete Implementierung auch mal interessiert ;)
Witzige Randnotiz: zu den Snacks, die vor dem Vortrag gereicht wurden, gab es Servietten mit der Aufschrift "UBC Catering". Neat ;)
Mal wieder ein invited talk: Dr. Saul Greenberg, unterwegs im Bereich HCI und CSCW (also Computer Supported Collaborative Work), Gründer und Chef des GroupLab an der University of Calgary hat 1,5 Stunden über Toolkits gesprochen... Nicht uninteressant:
"Simple things should be simple to do" war seine hauptsächliche Message. Immer, wenn seine Leute ein Problem dabei hatten, etwas zu realisieren (und das passiert wohl oft im Bereich CSCW, weil das alles per Definition verteilte Anwendungen sind - und die sind halt hart zu implementieren) - dann versuchen sie, ihr angesammeltes know-how in ein Toolkit zu verpacken, um es anderen leichter zu machen.
Seine These: dadurch, dass man etwas leichter zu entwickeln macht, wird Kreativität gefördert, viel mehr Leute entwickeln viel mehr Produkte, Produkte können weiterentwickelt werden, statt sie neu zu schreiben, usw - kurz: Innovation wird erst dadurch möglich.
Er hat viele (Videos von) Beispiele(n) gezeigt. Das coolste: Phidgets, das sind super-einfach zu programmierende (weil sie Komponenten für Standard-IDEs bereitstellen!) physische Kontrollelemente (Schalter, Lichtsensoren, Motoren, ...). Damit kann man innerhalb von Minuten lustige Sachen zusammenbasteln (wie man auf der Webseite sehen kann) - meinen Spieltrieb z.B. hat's sofort geweckt. Man kann die dinger auch kaufen. Diese Dinger machen das Entwickeln von (Prototypen von) anfassbaren Ein/Ausgabegeräten wirklich um Größenordnungen einfacher...
Heute in NewMIC haben wir uns mal das "Immersive Lab" angeschaut (an dem Link gefällt mir besonders gut der Part mit dem Gigabit-Ethernet; einer der ganz großen Backbones, die nach Vancouver führen, endet 10 Meter von dem Lab entfernt). Das ist ein großer Raum, in dem drei große Leinwände stehen, auf die von hinten ein Bild projiziert werden kann. Ausserdem gibt es noch eine Bodenfläche, auf die auch projiziert wird. Die Bodenfläche ist direkt vor der mittleren der drei Leinwand-Wände. die anderen beiden Wände können nach "innen" geklappt werden, bis ein "Raum" mit drei Wänden und Fussboden entsteht.
Das Bild, was in diesen Raum projiziert wird, ist dreidimensional (wenn man ne Shutter-Brille aufhat). Die Perspektive ist korrekt für den Kopf eines Benutzers, dessen spezielle Brille vom System im Raum verfolgt wird.
Eingabegerät ist ein Ding, das ebenfalls im Raum lokalisiert wird und dazu eben noch kontrollen und Knöpfe zur verfügung stellt (insgesamt irgendwie 6 Achsen oder so).
Man steht wirklich im Bild. Die haben Anwendungen, wo man im menschlichen Herzen-Lungen-System rumfliegen kann. Kontrollen und Anzeigen werden direkt vor einen mitten in den Raum projiziert. Es ist der absolute Wahnsinn - man kriegt allerdings wegen der Shutter-Brillen leicht Kopfschmerzen ;)
Brian (der bei NewMIC arbeitet) meint, dass der typische Meeting-Raum heutzutage ja eh schon nen Projektor und ne Leinwand hat - und dass man, um 3d-Bilder darzustellen, eigentlich nur noch zwei Dinge braucht: Shutter-Brillen und die 3d-Bilder selbst (und ein bisschen Software). Dann hat man zwar keinen ganzen Raum, aber 3d-Visualisierung von Sachen ist eigentlich heutzutage kein wirkliches technologisches Problem mehr... Mal sehen wann man sowas im "täglichen Einsatz" erleben kann!
;)
Die "superhuman guys from Darmstadt" haben zugeschlagen:
Markus, Sebastian und Wolfgang haben beim hiesigen Auswahlcontest mitgemacht - und die ersten drei Plätze belegt (in dieser Reihenfolge)! *g*
Das bedeutet, dass sie im November zum hiesigen Regional Contest fahren... Viel Glück schonmal!
Ach ja, und... Herzlichen Glückwunsch!
Als ich gerade versuchen wollte, herauszufinden, was dieser reguläre Ausdruck tut:
... bin ich über folgende Seite gestolpert:
http://perl.plover.com/NPC/
Na gute Nacht ;)
Ich habe gerade einen Vortrag von Bill Buxton gehört.
Der hat uns in deutlichen Worten erzählt, dass die momentane Art, Software zu entwickeln, bullshit ist. Keine andere Industrie macht etwas Ähnliches, nämlich einfach mal ins Blaue hinein zu entwickeln. Die Filmindustrie hat komplette Storybooks, Zusagen von Stars, Finanzierungspläne und feste Termine für Kinostarts etc., bevor dort grünes Licht für eine Produktion gegeben wird. Die Autoindustrie baut 1:1-Prototypen und hat ebenfalls komplette Finanz- und Marketingpläne fertig, bevor ein Auto wirklich entwickelt wird.
Er sagt: vor dem Software Engineering muss eine Design-Phase stehen, und zwar "echtes" Design, nicht was wir darunter verstehen - und die muss auch hauptsächlich von Designern betrieben werden (in Zusammenarbeit mit Engineers und Marketing, damit das Produkt realistisch ist). Ein 100%iges Design up front, die SE-Leute implementieren das dann nur noch (auf Punkt und Komma, "or else, you're fired").
Das komplette Gegenteil von Allem, was wir in SE gelernt haben, oder?