Archiv für Kategorie Mobil
CCC: 26c3 / Bluvert
Verfasst von Schakko unter Bluetooth, Mobil, Open Source, Projekte am 30. Dezember 2009
Den zweiten Tag des CCCs in Berlin habe ich gemeinsam mit Flo besucht. Leider war das komplette BCC restlos überfüllt und man konnte nur schwerlich in den einzelnen Vortragsräumen einen Sitzplatz ergattern. Ich hatte den Eindruck, dass die gesamte Organisation hinter der Veranstaltung mehr als chaotisch ablief. Besonders nervig: das WLAN war – wenn es denn mal erreichbar war – mehr als inperformant.
Ich nutzte deshalb den Montag Abend und brachte Bluvert auf einen aktuellen Stand. Die Änderungen für Version 1.2 werde ich im Laufe der nächsten Tage auf sourceforge.net hochladen:
- In der config.ini lässt sich nun $cwd als Variable für das aktuelle Arbeitsverzeichnisses verwenden. Damit entfallen einige kleinere Probleme.
- Es muss nur noch einmalig execute-server.py gestartet werden. Das Script arbeitet nun als funktionierender Daemon.
- Das Scanning der Geräte innerhalb der Bluetooth-Nachbarschaft geschieht nun ebenfalls über execute-server.py. Es besteht nicht mehr die Notwendigkeit, das Script set-active-bluetooth-devices.sh als Cron-Job auszuführen.
- Versenden der noch nicht versendeten Nachrichten geschieht nun ebenfalls über einzelne Threads, was sich erheblich auf die Performance auswirkt.
- Zeitintervall des Scannens nach neuen Geräten und Versenden der Nachrichten lässt sich in der config.ini frei definieren.
- Script zum Scannen der aktiven Bluetooth-Geräte lässt sich in der config.ini frei definieren.
Präsenztag w3l / September 2009
Marc und ich fuhren am Donnerstag um viertel nach zwei aus Wolfsburg los und kamen auch recht zügig in Dortmund an. Allerdings dauerte die Suche des Hotels trotz Navis etwas länger. Während Marc das Auto parkte – wir hatten ein Hotel direkt am Hautbahnhof gebucht – und ich eine rauchte, wollten mir erst drei Afrikaner wohl Drogen verticken und eine Minute später schauten die Dortmunder Green Berets mich an, deuteten mit dem Zeigefinger auf mich und wollten mich wohl auch kontrollieren. Durch eindrucksvolle Gestik – ich winkte wie ein Bekloppter zurück – wurden sie jedoch abgeschreckt.
Wir also im Hotel eingecheckt. Das Zimmer war … rustikal. Ein altes UKW-Radio sagte mir, dass hier einige Jahre nichts gemacht worden ist. Da ich keinen Nerv hatte den Abend im Hotel zu verbringen, gingen wir zu erst zu Fuß zur FH in der Sonnenstraße und machten danach einen Abstecher durch die Innenstadt. Marc wollte noch ein Bierchen trinken und so machten wir es uns bei Live-Musik, Bier und Whiskey im Irish Pub “Limmerick” gemütlich. Sehr lustig war, das neben uns die Kopien von Musel und Tino saßen. Ich trank den Abend ein paar Whiskeys, der interessanteste davon war eindeutig der Irish Poteen, der auf der Zunge prickelte und im Abgang brannte wie Feuer.
Gegen 23 Uhr ging es dann zurück in das Hotel, da ich am Freitag Klausur schreiben musste.
Freitag standen wir gegen 9 Uhr auf, frühstückten und verbrachten den Vormittag / Mittag im Hotel. Ich lernte noch für meine Klausuren und machte mich gegen viertel vor zwölf zu Fuß auf zur FH.
Dort angekommen sagte ich einer allerseits gut-gelaunten Bibi und den Komolitonen Hallo und verbrachte bis zur ersten Klausur die Zeit im Innenhof bei Zigarette und Musik.
Um 13 Uhr startete für mich die erste Klausur “Rechnerstrukturen und Betriebsssyteme”. Die ersten 10 Minuten saß ich etwas verdattert vor den Aufgaben, riss mich dann aber zusammen und startete durch. Themen der Klausur waren: Umformung von Termen zur ADNF, Bau von Schaltnetzen, Beschreibung von Threads, Berechnung der Dateigröße von I-Node basierten Speichersystemen, Fragen zum Pipelining, Vergleich der Havard-Architektur zur Von-Neumann-Architektur und mod. Havard-Architektur, KV-Diagramme, Minimierung von Booleschen Termen und und und. Die 120 Minuten waren knapp bemessen und ich bin mir nicht sicher, was bei der Klausur heraus gekommen ist. Bestanden müsste ich eigentlich haben. Eine Endnote kann ich aber nicht einschätzen.
Trotzdem war die Aufgabenstellung fair und auf die Vorbereitung der im Kurs behandelten Themen zugeschnitten.
Um 16 Uhr ging es in die zweite Klausur “Web-Design und -Ergonomie”, die von der Aufgabenstellung stark an die Onlineklausur erinnerte und mehr oder weniger genau so aufgebaut gewesen ist: Fallstudie einer Website, zu denen insgesamt 9 Fragen beantwortet werden mussten. Nach 90 Minuten hatte ich die Fragen – meiner Meinung nach – ausreichend beantwortet und wusste nicht mehr, was ich sonst noch hätte schreiben sollen. Also gab ich als erster der Runde ab und machte mich mit der FAZ im Nebeneingang der FH breit.
Marc tauchte um 18 Uhr auf, wir begrüßten Martin und dann ging es ein paar Minuten später zum Swabedoo, das ja mehr oder weniger gleich um die Ecke liegt. Für Marc, Martin und mich ging es mit Caipi und Bier los. Ich bestellte mir noch Rosmarin-Kartoffeln, alles andere war einfach zu teuer. Danach noch ein Caipi, dann Tequilla, dann Bier … Neben den üblichen IT-Themen machte Marc noch Wahlkampf für die Piraten und versuchte einen von den Grünen für die Piraten zu überzeugen. Ich telefonierte gegen Mitternacht noch mit Rische wegen der Band. Viel in Erinnerung habe ich davon nicht mehr, da ich bereits da schon leicht neben der Spur lief
Da ich extreme Lust auf Kickern hatte, unterbreitete ich den Vorschlag, doch noch irgendwo anders hinzugehen. Bibi und Michi, sowie Marc, Martin und ein weiterer Komolitone waren einverstanden. Der Rest der Studenten, darunter der Bayer mussten leider Samstag noch Klausur schreiben und setzten sich vorher ab.
Bibi leitete uns dann zu Fuß zum Spirit. Auf dem Weg dahin machte Marc Klingelstreich und lief mit einem Pflasterstein durch die Weltgeschichte herum, Martin und ich hatten Spaß in der City von Dortmund mit einem überdimensionalen Labyrinth-Spiel – mir ist ein Rätsel, wie wir das geschafft haben. Somit kamen wir um … keine Ahnung wann … im Spirit an. Wir total overdressed in einem Alternativ-Schuppen – war schon komisch. Türsteher und Gäste schauten uns mehr als perplex an. Egal, wir also an die Kickertische, Bier geholt und los ging es.
Gegen 3 Uhr mussten jeder von uns einen Promille-Pegel jenseits von gut und böse gehabt haben. Martin und ich gesellten uns zu Bibi und Michi auf die Tanzfläche – Musik war super (Metallica, 3 Doors Down, Beastie Boys und und und), Martin probierte das “Kennst du eigentlich schon…”-Spielchen aus und es wurde Bier getrunken. Und noch mehr Bier.
Bibi und Michi verabschiedeten sich als erste, gegen halb fünf strichen Martin und ich die Segel und machten uns, nachdem wir uns von Marc verabschiedeten, zu Fuß auf zu meinem Hotel. Wegen des Zustandes liefen wir quer durch Dortmund, erlebten z.B. noch, dass Jugendliche die Hose herunter zogen und auf einem Zebra-Steifen verweilten (Flashmob bei dem keiner zuschauen sollte?). Genau diese Jugendliche trafen wir 10 Minuten später wieder, als andere Jugendliche deren Hosen geklaut hatten. Sehr lustig ![]()
Gegen 5 oder halb sechs war ich bei meinem Hotel, Martin spaltete sich fünf Minuten vorher ab und lief in irgendeine total verquere Richtung.
3 1/2 Stunden später klingelte mein Wecker. Mit Abstand der fürchterlichste Morgen seit einigen Jahren. Marc lag irgendwie wieder in seinem Bett, ich quälte mich unter die Dusche.
Unser Frühstück fiel sporadisch aus, Check-In lief gut ab. Wir also zur FH hin und darauf wartend, dass die Vorlesungen begannen. Der Tag war für Marc, Martin und mich eine Qual. Zuerst Begrüßung durch Professor Balzert, dann warten, da das Internet nicht funktionierte. Nach dem Mittagessen folgte die Vorlesung über RIAs, bei der Martin und ich einen Lach-Anfall hatten (“Ich habe einen ausgewachsenen Kater”, “Sie redet immer von dem Internet, was ist das eigentlich?”). Die Vorlesung über Software-Tests war ganz interessant, danach folgte im Hörsaal die Vorlesung über XML-Dokumentation. War meiner Meinung nach nicht sonderlich spannend. Auch meine Mitstudenten in der letzten Reihe (eine Reihe hinter uns dreien) waren wohl nicht sonderlich davon begeistert.
Professor Balzert gab die letzte Vorlesung zum Thema Zustandsautomaten, bei denen Martin und ich wieder einen Lachanfall hatten und die letzte Reihe ansteckten (“Ob er mir erklären kann, was der oder das Internet ist?”).
Um 17 Uhr war dann Schicht im Schacht. Der Abschied fiel relativ kurz aus, da wir los wollten, bevor die Fußball-Fans die Stadt verunsicherten.
Fazit: Der letzte Präsenztag war schon lustig, dieser hat es aber noch getoppt. Hat wieder sau viel Spaß gemacht, mit den Komolitonen und w3l-Mitarbeitern zu feiern und Party zu machen. Dortmund bei Tag finde ich unattraktiv, da ist mir Wolfsburg lieber – das Nachtleben ist aber ausgezeichnet
Ik freu mir schon auf den nächsten Präsenztag, wa?
Ersetzen der Tastatur vom Acer Travelmate 2420
Letzte Woche hatte ich im Internet eine neue Tastatur für mein Acer Travelmate 2428A (2420 Baureihe) bestellt, weil meine rechte Shift-Taste abfiel und die restlichen Tasten mehr als abgegriffen waren.
Heute kam die Tastatur an und wollte ersetzt werden. Da es im Internet dazu kein ausreichend erklärendes Video gibt, hier meine Hinweise:
- Das Notebook braucht nicht komplett aufgeschraubt werden.
- Zwischen Tastatur und LCD befindet sich ein eigenes Plastikstück – auf diesem ist auch rechts der Power-Button sowie Shortcuts so Browser und Email zu finden.
- Dieses muss rechts und links gleichzeitig nach oben gezogen werden. Ganz so einfach geht das nicht, es muss mit etwas Kraft an die Sache gegangen werden.
- Der Akku sollte vorher herausgenommen werden, außerdem muss das LCD ganz bis zum Anschlag aufgeklappt werden. Schaut man sich nun das Akku-Fach an, sieht man, dass dort 6 Klemmen sind, die in Richtung Tastatur gedrückt werden müssen.
- Das obere Teilstück des Notebooks sollte sich nun lösen. Die Tastatur ist mit einer Schraube festgemacht, diese muss gelöst werden.
- Nun muss die Tastatur langsam angehoben und die Steck-Verbindung zum Mainboard gelöst werden. Beide Pfosten müssen gleichzeitig nach vorne gezogen werden, damit sich die Steck-Verbindung löst.
- Neues Tastatur-Kabel einsetzen, Tastatur festschrauben und mit gleichmäßigen Druck das obere Plastikteil wieder in die Fassung drücken.a
Lebenszeichen zwischen den Jahren
Verfasst von Schakko unter Dies und das, Mobil, Studium am 30. Dezember 2008
Weihnachten ist gut überstanden, hier die Kurz-Zusammenfassung: 24. war Party bei mir – Julian und Flo haben sich gut abgeschossen, die Party ging bis morgens um halb fünf. Am 25. war ich zuerst bei meinen Eltern und danach dann bei Sarahs Tante, am 26. waren wir mit ihrer Familie brunchen und abends ging es dann zur Geburstags-Nachfeier von Ly nach Essenrode. Ich wollte den Abend fahren und durfte mir viele betrunkene Personen anschauen ![]()
Am 27. drehten wir (Marc, Martin, Timo, Ina und ich) dann für Angelika Express ein Video. Zuerst vor dem Vfl-Stadion und danach dann in Julians Wohnung. Ich durfte mit zwei Eimern und einem Kelch den Schlagzeuger spielen. War lustig ![]()
Abends ging es dann zu Lippes Ska-Party nach Flechtorf, wo ich mich dann nett mit Julian betrank’ ![]()
Der 28. wurde bei mir durch Nichtstun (und einem kleinen Kater) geprägt. Gestern (der 29.) fuhren Sarah und ich nach Hattorf. Wir nahmen dort die Maße von Bäumen. War ziemlich kalt – bei gefühlten -50°C schlotterten wir uns 1 1/2 Stunde die Beine ab.
Heute ging es gegen Mittag zum Schwimmen und danach habe ich es endlich geschafft, mich bei W3L zum BoS Studiengang “Web- und Medieninformatik” anzumelden. Die Dokumente werden aber erst nach Neujahr losgeschickt, weil mir etwas die Zeit fehlt. Aber der erste Schritt in Richtung Fernstudium ist gemacht
HTC Touch Diamond mit Ubuntu nutzen
Mit Hilfe des USB-Kabels lässt sich der interne Speicher des Touch’ nutzen; Internetzugang sollte über Bluetooth mit Hilfe von PAN funktionieren. Ich bin aber noch nicht dazu gekommen, das zu testen.
Die Synchronisation zwischen PDA und Notebook dürfte mit SyncCE funktionieren. Auch dies habe ich noch nicht getestet.
PAN wird übrigens in einer der nächsten Versionen des NetworkManagers integriert werden. Es existiert zwar bereits ein Patch, der libbluez ansteuert. Der Patch ist allerdings gegen die Revision 2574 von NM programmiert worden.
Momentan ist aktuell die Revision 4xxx. Ich hab’ vorgestern versucht, den Patch auf den aktuellen NM-Trunk upzudaten – leider ohne Erfolg und zugegebenermaßen auch mit wenig Lust. War eine stupide Arbeit, beide Forks mit dem Patch abzugleichen.
Die Jungs von Launchpad diskutieren die Integration von PAN in NM hier. Im NetworkManager-Tracker ist der PAN-Request hier zu finden, inkl. des veralteten Patches.
Edith: Ich bin eeeUser-Forum über einen Thread gestolpert, in dem ein kleines Python-PAN-Script vorgestellt wird.
Hier der Code:
#!/usr/bin/env python # (c) 2008 Kyle Reed # PAN tethering with WM device w/o using deprecated pand # I don't claim to know Python, use at your own riskimport pygtk pygtk.require('2.0') import gtk import dbus import os ### For passing errors to the GUI ### class BTException: def __init__(self, msg): self.error_msg = msg ### BT Helper handles all of the DBUS stuff ### # usage flow: # __init__ # getDevicesList # selectNetworkDevice # getDeviceProperties # Connnect|Disconnect class BTHelper: # create the helper object and initialize dbus def __init__(self): # get the system bus object self.bus = dbus.SystemBus() # get the adapter interface to query paired devices self.adapter = dbus.Interface(self.bus.get_object( 'org.bluez', '/org/bluez/hci0'), 'org.bluez.Adapter') # get the devices list # def getDevicesList(self): try: self.devices = self.adapter.ListDevices() return self.devices except dbus.DBusException: raise BTException('Could not get adapter interface, is your BT adapter on?') # get the name of a device from a device string # doesn't require selectNetworkDevice to be called def getDeviceName(self, devicePath): try: tempDev = dbus.Interface(self.bus.get_object( 'org.bluez', devicePath), 'org.bluez.Device') tempProps = tempDev.GetProperties() return tempProps['Alias'] except dbus.DBusException: return '[Error Fetching Name]' # select device to query by index # def selectNetworkDevice(self, index): try: self.current_device = dbus.Interface(self.bus.get_object( 'org.bluez', self.devices[index]), 'org.bluez.Network') except dbus.DBusException: raise BTException('Could not get network interface for device, is your device active?') # returns information about the device # def getDeviceProperties(self): try: self.deviceProps = self.current_device.GetProperties() return self.deviceProps except dbus.DBusException: raise BTException('Could not get properties for device, did you select a device?') # connects and initializes the connection # def connectDevice(self): if self.deviceProps['Connected'] == 0: print 'Connecting...' try: # connect and get interface iface = self.current_device.Connect('NAP') print 'Using network interface ' + iface # bring up the interface and start DHCP os.system('ifconfig up ' + iface) os.system('dhclient ' + iface) print 'Connected' except dbus.DBusException, e: raise BTException('Connect Failed: %s' % (e)) else: print 'Already Connected' def disconnectDevice(self): if self.deviceProps['Connected']: print 'Disconnecting...' try: # bring down interface os.system('ifdown ' + self.deviceProps['Device']) # disconnect self.current_device.Disconnect() print 'Disconnected' except dbus.DBusException, e: raise BTException('Disconnect Failed: %s' % (e)) else: print 'Not Connected' ### End BTHelper ### ### Defines the class that draws the GUI ### class BTHelperGUI: titleText = 'BlueTooth PAN Helper' # show an exception message def showErrorMsg(self, msg): errorDlg = gtk.MessageDialog(self.window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, msg) errorDlg.set_title(self.titleText) errorDlg.run() errorDlg.destroy() ### Signal Handler Methods # exit button click def handleExitClicked(self, widget, data=None): print('Exiting') self.exit() # connect button clicked def handleConnectClicked(self, widget, data=None): try: self.BTHelp.connectDevice() self.getDeviceInformation() except BTException, e: self.showErrorMsg(e.error_msg) # disconnect button clicked def handleDisconnectClicked(self, widget, data=None): try: self.BTHelp.disconnectDevice() self.getDeviceInformation() except BTException, e: self.showErrorMsg(e.error_msg) # device selection changed def handleDeviceSelectionChanged(self, widget, data=None): selection = self.devicesListView.get_selection() selectedIter = selection.get_selected()[1] # nothing selected, return if(selectedIter is None): self.setButtonState(-1) return selectedIndex = self.devicesListStore.get_value(selectedIter, 2) print('Selected %s' % (selectedIndex)) try: self.BTHelp.selectNetworkDevice(selectedIndex) self.getDeviceInformation() except BTException, e: self.showErrorMsg(e.error_msg) # window manager is closing us (event) def delete_event(self, widget, event, data=None): self.exit() return False ### End handler methods ### support methods ### # process device names and add to devices list store def processDevicesList(self): # list devicees from the BT Adapter try: allDevices = self.BTHelp.getDevicesList() count = 0; for device in allDevices: addrOnly = device.split('dev_')[-1] addrOnly = addrOnly.replace('_', ':') self.devicesListStore.append([addrOnly, self.BTHelp.getDeviceName(device), count]) count += 1 except BTException, e: self.showErrorMsg(e.error_msg) # hard exit because we haven't stated the main loop quit() # get selected device information and set up controls def getDeviceInformation(self): try: properties = self.BTHelp.getDeviceProperties() self.statsListStore.clear() self.statsListStore.append(['Connected',str(properties['Connected'])]) self.statsListStore.append(['Device',str(properties['Device'])]) self.setButtonState(int(properties['Connected'])) except BTException, e: self.showErrorMsg(e.error_msg) # enable/disable buttons are required def setButtonState(self, state): if(state == -1): # none selected self.connectBtn.set_sensitive(False) self.disconnectBtn.set_sensitive(False) elif(state == 0): # disconnected self.connectBtn.set_sensitive(True) self.disconnectBtn.set_sensitive(False) elif(state == 1): # connected self.connectBtn.set_sensitive(False) self.disconnectBtn.set_sensitive(True) # common exit point for program def exit(self): gtk.main_quit() ### end support methods ### def __init__(self): self.BTHelp = BTHelper() # create the main window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title(self.titleText) self.window.set_default_size(400, 300) self.window.set_border_width(10) # set handlers for window events self.window.connect('delete_event', self.delete_event) # Devices list view # set up data backend for devices list # addr, name, index (hidden) self.devicesListStore = gtk.ListStore(str, str, int) self.processDevicesList() # create devices list columns devicesListCol = gtk.TreeViewColumn('Device Address') devicesListCol2 = gtk.TreeViewColumn('Device Name') # make text renderers and add to columns addrCell = gtk.CellRendererText() nameCell = gtk.CellRendererText() devicesListCol.pack_start(addrCell, True) devicesListCol2.pack_start(nameCell, True) # set cell mappings to store data devicesListCol.add_attribute(addrCell, 'text', 0) devicesListCol2.add_attribute(nameCell, 'text', 1) # create devices list and add columns self.devicesListView = gtk.TreeView(self.devicesListStore) self.devicesListView.append_column(devicesListCol) self.devicesListView.append_column(devicesListCol2) # set signal handlers for devices list self.devicesListView.connect('cursor-changed', self.handleDeviceSelectionChanged) # end devices list view # stats list view # create stats list data store self.statsListStore = gtk.ListStore(str, str) self.statsListStore.append(['Connected', '']) self.statsListStore.append(['Device', '']) # create stats columns statsCol = gtk.TreeViewColumn('Property') statsCol2 = gtk.TreeViewColumn('Value') # create text renderers and add to columns propCell = gtk.CellRendererText() valueCell = gtk.CellRendererText() statsCol.pack_start(propCell, True) statsCol2.pack_start(valueCell, True) # set data mappings with data store statsCol.add_attribute(propCell, 'text', 0) statsCol2.add_attribute(valueCell, 'text', 1) # create stats list view self.statsListView = gtk.TreeView(self.statsListStore) self.statsListView.append_column(statsCol) self.statsListView.append_column(statsCol2) # end stats list view # control buttons self.connectBtn = gtk.Button('Connect') self.disconnectBtn = gtk.Button('Disconnect') self.exitBtn = gtk.Button('Exit') # set handlers self.exitBtn.connect('clicked', self.handleExitClicked) self.connectBtn.connect('clicked', self.handleConnectClicked) self.disconnectBtn.connect('clicked', self.handleDisconnectClicked) # pack in a VBox buttonBox = gtk.VBox(True, 2) buttonBox.set_border_width(10) buttonBox.pack_start(self.connectBtn) buttonBox.pack_start(self.disconnectBtn) buttonBox.pack_start(self.exitBtn) # frames for decoration statsFrame = gtk.Frame(' Status ') statsFrame.add(self.statsListView) buttonFrame = gtk.Frame(' Actions ') buttonFrame.add(buttonBox) # end control buttons # add controls to layout # +-----------------+ # | DEVLIST AREA | # +-----+-----------+ # |STATS|BUTTONS | # +-----+-----------+ tableLayout = gtk.Table(2, 2, False) tableLayout.set_row_spacings(10) tableLayout.set_col_spacings(10) tableLayout.attach(self.devicesListView, 0, 2, 0, 1) tableLayout.attach(statsFrame, 0, 1, 1, 2) tableLayout.attach(buttonFrame, 1, 2, 1, 2) # add layout to window self.window.add(tableLayout) self.window.show_all() def main(self): gtk.main() ### End BTHelperGUI ### ### Program Execution here ### print('BlueTooth PAN Helper GUI') btgui = BTHelperGUI() btgui.main()
Good job!
Ich hab es auf meinem Touch ausprobiert und es funktioniert einwandfrei. Wichtig: Das Script als root starten. Auf dem Touch muss unter Programme -> Internet Freigabe bei PC-Verbindung “Bluetooth-PAN” ausgewählt und danach das Handy mit dem Notebook gepairt werden.
Ich bin mal wieder von Linux begeistert. Und von meinem neuen Handy auch
Arztpraxen sind wie Schweinetransporter
… alle eingepfercht, 20 Schweine auf 10qm und die aelteren Schweine pfeifen aus dem letzten Loch.
Mir ist bewusst, wie sarkastisch und gemein das ist – aber dieses Wartezimmer ist fuerchterlich!
Xtopia 2008
Ich bin nun wieder von der Xtopia 2008 aus Berlin zurück. Waren drei lange Tage – ein paar kurze Einträge im Blog habe ich ja bereits per Handy vorgenommen.
Es ging für mich am Sonntag um halb sieben los: ich fuhr Sarah kurz zum Bahnhof, dann wieder zurück in die Wohnung und packte meine Sachen.
Robin kam gegen neun bei mir an und so waren wir gegen viertel nach neun bei Marci in Lehre. Die Fahrt nach Berlin verlief -bis auf den Blitzer am Lehrscher Ortsausgang- relativ ereignislos.
Gegen halb elf kamen wir am Hotel Kronprinz an, checkten dort ein und machten uns schließlich gleich zu Fuß auf zum ICC. Die zwei Kilometer waren in einer knappen Viertelstunde geschafft und somit waren wir mehr als pünktlich zur Registrierung im ICC-Foyer. Der erste Track Silverlight 2 wurde von Hilmar Salomo. Die ersten 15 Minuten waren eine kurze Einführung in die Thematik, durch die letzte Xtopia war mir aber bereits alles bekannt, viel Neues erfuhr ich nicht. Zwei Sachen waren für mich dennoch von Interesse: Die Integration des Team Foundation Server in Blend erfolgt mit Blend 3 und Silverlight soll mit dem Service Release in 3 bis 4 Monaten für Opera vollständig verfügbar sein.
Nach der Mittags-Snack-Pause präsentierte Showmaster Oliver Scheer ASP.Net AJAX. Darin wurden zuerst die ADO.Net Data Services demonstriert. Oliver benutzte bei dem Track ein Tool namens ZoomIt, das für die meisten Anwesenden -mir inklusive- unbekannt war. Zu finden ist es auf der Sysinternals-Seite. Es vergrößert den Bildschirm-Ausschnitt und erlaubt das Zeichnen auf dem Bildschirm. Für Präsentationen ist das Tool ideal.
Der weitere Vortrag war etwas wischi-waschi: Oliver redete sich bei Fragen aus dem Publikum zum Teil um Kopf und Kragen, veröffentlichte seinen Geburtstag (11.04.1975) und vermarktete mehr oder weniger jQuery als Microsofts Idee – naja
Der dritte und damit letzte Track des Tages wurde von Maximilian Knor zum Thema “WPF Workshop” gehalten. Der Track war sehr technisch geprägt und behandelte die grundsätzliche Idee der Dependency Injection in WPF. Dabei kam auch im Nebensatz zum Vorschein, dass das DataGrid-Control für WPF mit dem nächsten Visual Studio verfügbar sein wird. Außerdem wird es DI in Silverligt eventuell in einem halben Jahr geben. Der Vortrag war mein persönliches Highlight des Tages – technischer Tiefgang und viel Design Pattern
Den Sonntag Abend verbrachten wir zu Robin, Marci und ich in der Solarbar im 17. Stock eines Wohnhauses. War eine sehr geile Location – man hatte einen super Überblick über Berlin bei Nacht. Die Fahrt hin und zurück mit dem Taxi verlief allerdings etwas sonderbar.
Mein Montag begann nach einer wunderbaren Nacht -ich habe in einem Hotel bis dato noch nie so gut geschlafen, die Betten und vor allem das Kopfkissen war ein Traum- mit der Keynote von Said Zahedani. Der Saal war relativ -verglichen mit letzten Jahr- leer. Said erwähnte, dass dieses Jahr wohl (nur) 450 Registrierungen eingegangen sind. In einem weiteren Satz erwähnte er, dass Microsoft pro Monat ca. 10000 Server aufstellt. Momentan für den Aufbau der Windows Azure Cloud.
Als nächstes sprach Dan’l Lewin über verschiedene Lizenz- bzw. Support-Programme, die Microsoft anbietet. Der Tenor seiner Rede war: “Egal ob Rezession oder Konjunktur – mit einer guten Idee ist es immer die richtige Zeit ein Unternehmen zu gründen. Vorausgesetzt, die Idee stimmt.”.
Ich bekam mit, dass durch das Microsoft BizSpark-Programm Startups kostenlosen Zugang zu allen Microsoft-Produkten bekommen. Dafür ist es nötig, dass die Gründung vor max. drei Jahren gewesen und der Umsatz kleiner einer Million Euro ist. Die Unterstützung läuft für drei Jahre.
Den Abschluss der Keynote machte Carl Dichter von Myspace.com, der Director of System Development ist. Vieles aus seiner Rede kannte ich bereits aus dem Netz, deshalb nur ein paar Infos: myspace.com bekommt pro Tag 300.000 neue Mitglieder, 95% der Anfragen auf Myspace.com werde durch Caching beantwortet; als Techniken werden TFS und ASP.Net eingesetzt. Dichter -als selbsternannter Troublemaker- forderte in der letzten Folie von Microsoft auch einige Sachen. Darunter z.B. ein Netbootable Windows. Er sagte klar, dass Linux teilweise bessere Features als Windows hat. Ich fand das -für eine Microsoft-Konferenz- ziemlich mutig. Und cool
Nach der Keynote trackte Holger Sirtl über Software + Services mit Windows Azure. Momentan sind für Windows Azure in Europa zwei Rechenzentren in Dublin und Amsterdam am Start. Auf meine Frage hin, ob Windows Live Mesh die zu synchronisierenden Daten versioniert bekam ich ein “Nein”. Dieses widersprach aber einer Aussage in einem später folgendem Track.
Zum Mittagessen gab es dann Mediterranen Auflauf, Reis und Hühner-Frikasse. Die Auswahl ließ im Gegensatz zum letzten Jahr zu wünschen übrig.
Im Anschluss an die Pause folgte der Silverlight 2-Track von Oliver Scheer. Während der Vorführung stürzte Silverlight 2 und Firefox und IE8 Beta 2 einige Male hintereinander ab, was wir als Publikum mit mehreren Lachern quittierten.
Der vorletzte Vortrag des Tages wurde von Dariusz Parys über Windows Azure Services Platform gehalten. Dieser war sehr interessant und hatte Unterhaltungswert. Ich schrieb mir während des Vortrages noch auf, dass man über das Microsoft Federation Gateway bestehende Active Directory Benutzer eines Unternehmens als Microsoft Live ID mappen kann.
Schließlich folgte gegen 17.00 Uhr Dirk Primbs Track WPF Anwendungen optimieren. Hier ein paar Stichpunkte: immediate Mode meint reines Zeichnen; retained Mode -macht das WPF- verwaltet Objekt-Informationen und zeichnet die abhängigen Elemente neu; mit Snoop und WPFPerf / WPF Performance Suite lassen sich Performance-Engpässe analysieren. Dirk Primbs hatte eine gewisse Michael Mittermeier-Art und somit war der Vortrag sehr unterhaltsam und spannend.
Nach dem letzten Track setzten Robin, Marci und ich uns in das Foyer und tranken ein paar Bier und Wein. Leider gab es dieses Jahr keine After-Show-Party und somit verließen wir gegen 21 Uhr als letzte Teilnehmer das ICC. In Marcis Gepäck auf seinem Hotelzimmer fand sich glücklicherweise noch eine Flasche Wein, die wir bei bestellter Pizza und Supernatural genüßlich austranken. Wir hatten also trotzdem Spaß
Heute -am Dienstag- ging es mit Dariusz Paryz’ Build Mesh Applications los. Einer der Teilnehmer -Max Lukaszechk (oder so ähnlich)- zerschmetterte auf Dariusz’ Wunsch zu Metallica-Musik eine Guitar Hero-Gitarre. Während des Tracks wurde klar, dass Live Mesh durch fehlende Sicherheitsfeatures absolut nicht für Unternehmensanwendungen gedacht ist. Eine Intranet-Version von Windows Live Mesh ist (noch) nicht geplant.
Danach gaben Oliver Scheer und Frank Prengel den Track Silverlight und Web 2.0 auf Windows Mobile zum Besten. Frank Prengels Aussage bei der Demonstration zu Yahoos Bilder Suche “…solange es den [Dienst] noch gibt” interpretiere ich als mögliche Anspielung auf eine vielleicht doch noch kommende Übernahme von Yahoo seitens Microsoft. Wer weiß…
Frank Prengel bestätigte, dass Silverlight offiziel für Symbian erscheinen soll. Außerdem soll es irgendwann Zugriff auf die Hardware (GPS, Kamera etc) bieten sollen. Ich musste lachen, als Scheer den Spruch “Aus großer Macht folgt große Verantwortung” machte. Marcis Blick zu deuten dachte er auch an “Aus großem Durst folgt große Verantwortung” ![]()
Track Numero 3 wurde von Tim Fischer über Cloud Computing mit Windows Azure gehalten. Die SLAs für Windows Azure sollen in ca. einem Jahr erscheinen. Weiterhin ist der Support für Eclipse (Tools), Java, Ruby, PHP und Python (SDKs) geplant bzw. in Arbeit. Die Server in der Cloud laufen über Fibre Channel.
Im letzten Track erzählte Lori Groslan über Popfly: Programmieren wie es sein sollte. Der Inhalt war meiner Meinung nach zu mehr als 90% identisch mit dem Track aus dem letzten Jahr.
Letzendlich wurde die Xtopia 2008 durch die Keynote von Patrick Baudisch beendet. Er präsentierte ein paar Projekte von Microsoft Research: “soap” ist eine Art Flummi oder Stück Seife, das als Ersatz für eine Maus gedacht ist. “halo” ist ein Softwareprojekt, dass die Entscheidungsfindung zur Suche eines z.B. Restaurants in der Nähe über die sichtbare Länge eines Kreises erleichtert. Ziemlich coole und simple Idee. Bei “summary thumbnails” werden Webseiten herunter skaliert, der DOM durchlaufen und Teile der Texte gelöscht. Die übrig gebliebenen Texte werden vergrößert und angezeigt. Der Benutzer bekommt einen Überblick über einen Teil des Contents – das Gehirn setzt die fehlenden Informationen zusammen. Mit “lucid-touch” wurde noch eine Möglichkeit der Bedienung von semi-durchsichtigen Displays gezeigt. Die schließende Keynote war letztendlich ziemlich cool
Fazit: Ich stehe der Xtopia 2008 mit gemischten Gefühlen gegenüber. Auf der einen Seite waren einige der Vorträge und die Closing Keynote echt cool und auch die Besucher waren wie im letzten Jahr gut drauf. Allerdings war das ICC als Location meiner Meinung nach vollkommen ungeeignet. Durch die Größe der Örtlichkeit und der relativ wenigen Besucher verlief sich die Veranstaltung. Es fehlten Fun-Aktivitäten wie z.B. ein Kicker-Tisch, eine XBox (siehe letztes Jahr) oder ähnliches. Ein offenes WLAN war in den Track-Räumen nicht verfügbar. Ich konnte mein N770 also im Hotel lassen. Das Catering war letztes Jahr auch besser und reichhaltiger. Deshalb würde ich mir wünschen, dass die nächste Xtopia wieder im Cosmos’ stattfindet. Und bitte bitte: Eine After-Show-Party! Ansonsten waren das drei tolle Tage in Berlin
Gruss
Gruesse aus der Solarbar im 17. Stock. Geile Location!
Ab auf den Damm
Der erste Tag der xtopia 2008 ist geschafft. Wir werden jetzt auf den kurfuerstendamm und ein bier schleckern
1. Track geschafft
Der erste Track ist geschafft – Bericht folgt, sobald ich wieder vernuenftig Internetz habe.
Sag was!