code it

Martins Tech Blog

Advent, Advent.... - oder: eine App wurde geboren

Das letzte Treffen der .NET Usergroup Dresden ist nun schon ein paar Tage her. Durch den Abend hat uns Peggy Reuter geführt und der gesamten Entwicklerschar wieder einmal ein paar Tipps und Tricks zu Expression Blend gezeigt. Der Fokus lag dieses Mal auf UI Prototyping mit der Hilfe von Sketchflow. Und auch wenn die Gemüter sich streiten, ob von den entstandenen und vom Kunden abgenommenen Prototypen nun 90, 50 oder noch weniger Prozent direkt als Grundlage für das endgültige Produkt genommen werden können, so ist in meinen Augen Sketchflow ein gutes Mittel, um dem Kunden die eigenen Visionen etwas näher zu bringen und schon einmal einen Geschmack auf das zu machen, was dann das finale Produkt können wird.

Der zweite Teil des Abends drehte sich um Designprinzipien in Windows Phone 7 - und damit um das Metro-Design. Doch das Metro-Design ist nicht so starr vorgegeben, wie es auf viele den Eindruck macht. Auch hier sind Anpassungen möglich, die es uns Entwicklern erlaubt, individuelle Software zu erstellen.

Alle Anwesenden werden sich sicher an die Anwendung erinnern, anhand der Peggy die Erweiterungsmöglichkeiten demonstriert hat. Und wie sollte es anders sein: Unser Baby hat heute offiziell das Licht der Welt erblickt. Seit 18:59 Uhr sind wir Eltern eines kleinen Adventskalenders. Die Anwendung kann man im Marketplace herunterladen. An dieser Stelle noch einmal vielen Dank an Peggy, Lars und Torsten, die es ermöglicht haben, dass wir vier gemeinsam diese App auf die Beine gestellt haben.

Gewinnen mit dotnet-kicks.de

Schon lange bevor ich den "I Like it"-Button in Facebook für mich entdeckt hatte, kannte ich dotnet-kicks.de. Das Prinzip ist ähnlich. Blogbeiträge rund um .NET, die man als wertvoll, sinnvoll, nützlich oder spannend erachtet kann man mit einem Kick markieren. Und auch ich hab den Button in meinem Blog.
Nun hat dotnet-kicks.de ein Gewinnspiel gestartet... und ich war einer der Gewinner und habe eine Freikarte für die GUI & Design in Nürnberg gewonnen. Nun bin ich sehr gespannt, ob und was ich hier für neue Sachen erfahren werde. In jedem Fall freue ich mich darauf, Bekannte aus der Community wiederzusehen, denn wie ich der Sprecherliste entnehmen kann, sind hier einige davon mit dabei. In diesem Sinne: C U in Nuremberg.

Einladung zum Treffen der .NET Usergroup Dresden am 01.12.2010

Beim nächsten Treffen der .NET Usergroup Dresden dreht sich alles rund um das Thema Unittests. Anders als sonst wird es diesmal keine Frontalpräsentation geben, sondern wir versuchen es mal mit LdL. Alexander Groß (Lead der .NET Usergroup Leipzig) wird an diesem Abend mit dabei sein und uns unterstützen, da auch wir LdL noch nicht gemacht haben.

Wie läuft das Ganze ab? Jeder Teilnehmer bekommt im Vorab ein paar Fragen zugeschickt, die sich inhaltlich um das Thema der Veranstaltung drehen und auf deren Beantwortung er sich vorbereitet. Beim Treffen selbst wird das bereits Gewusste oder im Selbststudium Erlernte dann den anderen kurz (10-15 Minuten) vorgestellt. So trägt jeder seinen Teil dazu bei, dass alle etwas davon haben. ...und keine Angst: Es gibt keine falschen Antworten.

Die Fragen verschicken wir voraussichtlich am 25.11., so dass alle auch genug Zeit haben, sich damit zu beschäftigen. Bei organisatorischen Fragen könnt ihr euch natürlich jederzeit an uns (Oliver, Robert, Martin) wenden.

Ich bin gespannt auf diesen Abend und hoffe auf rege Teilnahme. Das Treffen findet bei der T-Systems MMS statt und beginnt dieses Mal schon um 17:00 Uhr. Zu besseren Planung bitten wir um Anmeldung zum Event.

Windows Phone 7 - It's time for a phone to save us from our phones

Nun ist es so ziemlich genau eine Woche her, seitdem ich mein neues Windows Phone 7 Device das erste Mal in die Hände nehmen konnte. Es gab ein paar Kritikpunkte, die ich in meinem ersten Post zu diesem Thema veröffentlicht habe. Dank der vielen Kommentare habe ich gemerkt, dass einige der von mir angemerkten Punkte in der Verantwortung meines Mobilfunkpoviders liegen (z.B. der Suchprovider im Internet Explorer), einige Punkte mit dem nächsten Softwareupdate behoben sein werden (z.B. das fehlende Copy & Paste) und an einige Punkte muss ich mich wohl gewöhnen, wenn ich die Vorteile alle nutzen will (z.B. komplette Kontaktliste in der Cloud).

Zusammengefasst bin ich aber nach wie vor begeistert. In meinen Augen kann es Microsoft damit endlich schaffen, wieder realistisch im Smartphone-Geschäft Fuß zu fassen. Und mit Silverlight und XNA als Basis ist den Entwicklern Handwerkszeug gegeben wurden, um für den Endanwender interessante Anwendungen zu entwickeln. Inzwischen gibt es Devices sowohl auf dem europäischen als auch dem us-amerikanischen Markt und die Registrierung für neue Apps ist freigegeben für alle Entwickler. Auch stolpere ich immer häufiger wieder über Werbeclips für das Betriebssystem, so dass auch Nicht-Nerds angefüttert werden.

In diesem Sinne: "It's time for a new phone...."

Zugriff auf WorkItems über das Objektmodell

Mit Hilfe des Objektmodells kann man recht simpel auf die WorkItems im Team Foundation Server zugreifen. Wie das geht, werde ich hier an einem kleinen Beispiel zeigen, in dem alle WorkItems eines TeamProjects aufgelistet werden sollen.

Zunächst werden Referenzen auf die Assemblies Microsoft.TeamFoundation.Client und Microsoft.TeamFoundation.WorkItemTracking.Client benötigt. Dann ist alles recht einfach. Mit den Klassen TfsTeamProjectCollection und WorkItemStore stellt uns das Objektmodell das Handwerkszeug bereit.

private WorkItemCollection GetAllWorkItems()
{
   string teamCollectionUrl = "http://tfs.mydomain:8080/tfs/defaultcollection";
   string projectName = "MyTestProject";

   var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(teamCollectionUrl));

   var workItemStore = new WorkItemStore(projectCollection);

   var wiq = string.Format("SELECT System.Title, System.Description FROM WorkItems WHERE System.TeamProject = '{0}'", projectName);

   var workItemCollection = workItemStore.Query(wiq);
   return workItemCollection;
}

Mit Hilfe der TfsTeamProjectCollectionFactory und der Url der Project-Collection lässt man sich die TfsTeamProjectCollection geben und kann dort dann eine WIQL-Query absetzen. WIQL steht für Work Item Query Language und ist eine Abfragesprache, die in einer SQL-ähnlichen Syntax das Abfragen von WorkItems erlaubt.

Eine weitere Möglichkeit sich mit der TfsProjectCollection zu verbinden ist der Konstruktor der TfsTeamProjectCollection. Vorteil dieser Methode ist, dass man hier zudem auch die Möglichkeit hat, abweichende Credentials zu hinterlegen.

private WorkItemCollection GetAllWorkItems()
{
   string teamCollectionUrl = "http://tfs.mydomain:8080/tfs/defaultcollection";
   string projectName = "MyTestProject";
   string username = "user";
   string password = "password";
   string domain =  "mydomain";

   var credentials = new NetworkCredential(username, password, domain);
   var projectCollection = new TfsTeamProjectCollection(new Uri(teamCollectionUrl), credentials);

   var workItemStore = new WorkItemStore(projectCollection);

   var wiq = string.Format("SELECT System.Title, System.Description FROM WorkItems WHERE System.TeamProject = '{0}'", projectName);

   var workItemCollection = workItemStore.Query(wiq);
   return workItemCollection;
}

Das ist beispielsweise dann sinnvoll, wenn man sich in einer anderen Domäne befindet als der Team Foundation Server, den man abfragen möchte.

Seltsame Namenskonventionen in SharePoint

Sharepoint Server 2010 scheint seine Vergangenheit nicht verstecken zu können. Möchte man ein neues Web erstellen, sind einige Namen nicht möglich. 

Man erhält eine Fehlermeldung, wenn man einen der folgenden Namen verwendet CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 oder LPT9. Auch wenn es sich bei SharePoint um eine Web-Anwendung handelt, die ihre Daten in einem SQL-Server verwaltet, scheint es Probleme zu geben, wenn man Namen verwendet, die im Dateisystem reserviert sind.

Silverlight im Firefox debuggen

Ok, ich gebe es zu: Was meinen Browser angeht, verwende ich den Firefox als Standard-Browser und nicht den Internet-Explorer. Das funktioniert auch ganz gut. Problematisch wird es dann, wenn man mit Microsoft-Technologien entwickelt. Möchte man eine Silverlight-Anwendung debuggen, hält der Debugger bei Breakpoints nicht an - mit der bekannten Meldung "The breakpoint will not currently be hit. No symbols have been loaded for this document."

Funktioniert es, wenn der IE als Standard-Browser eingestellt ist, so liegt es eindeutig nicht an den Projekteinstellungen (denn auch hier gibt es Fallstricke), sondern am Browser. Dank der Tipps von Lars und Tim hab ich jetzt auch die Lösung und muss nicht mehr jedes Mal die Einstellung für den Standard-Browser ändern.

Der Tipp ist vielleicht nicht neu, aber weil ich mit Sicherheit beim nächsten Rechner wieder überlege, was man machen muss damit es geht, hier der Tipp als Gedankenstütze für mich und alle die das gleiche Problem haben.

Folgende Schritte führen zum Ziel:

  • in der Adressleiste about:config eingeben
  • die Warnung akzeptieren (sind wir nicht immer vorsichtig?)
  • den Eintrag dom.ipc.plugins.enabled.npctrl.dll suchen und doppelklicken, so dass der Wert von true auf false geändert wird
  • den Browser neu starten
Startet man nun den Debugger wieder, so hält dieser auch an den Breakpoints an.

Windows Phone 7 - meine ersten Eindrücke

Seit gestern kann ich mich nun auch in die Reihe derer einreihen, die einem Windows Phone 7 ein Zuhause bieten. Die Gründe sind recht vielschichtig: Bisher war ich Nutzer eines Mobiltelefons, das auf Windows Mobile 6.5 basierte, das nur mit Hilfe von HTC Sense bedienbar wurde. Nun scheint Microsoft mit diesem Betriebssystem endlich den Sprung in Richtung Smartphones geschafft zu haben. Andererseits finde ich es faszinierend, auch mit meiner bevorzugten Programmiersprache Anwendungen schreiben zu können, die Spaß machen - und seit Mai 2010 bin ich mit dabei, wenn es um WP7-App-Entwicklung geht.

Nun aber genug der Lobhudeleien. Wo es Sonnenseiten gibt, gibt es auch Schattenseiten.

Geplanter Start von Windows Phone 7 in Deutschland sollte der 21.10. sein und sehr erwartungsvoll wartete ich wie viele in der Community auf den Startschuss - aber nichts passierte. Nun kann man sich mit Wortspielereien aus der Affaire ziehen, aber in meinen Augen ist der Start - aus Entwicklersicht - in die Hose gegangen. Aus Anwendersicht mag das anders sein: Seit Beginn dieser Woche laufen die Windows Phone 7 Spots in den Medien und auch die Anbieter haben neben den Plakaten für das jetzt frei verfügbare iPhone 4 auch die Plakete für jegliche Art von Windows Phone 7 Geräten aufgehängt.

Aber so richtig "verfügbar" ist es trotzdem nicht. Amazon hat die Geräte so ziemlich als erster im Shop gehabt - allerdings kann man es hier nach wie vor nur reservieren, nicht aber bestellen. O2 bietet mir die Bestellung an - jedoch werde ich (wie auch schon bei der Bestellung des HD2 vor knapp einem Jahr) gefühlt hingehalten. Mit Aussagen wie "Es ist schon losgeschickt, aber wir wissen nicht mit welchem Paketdienst.", "Es ist schon losgeschickt mit DHL, aber eine Sendungsverfolgungsnummer haben wir nicht." und quasi täglichen Versprechen "...spätestens übermorgen ist es bei Ihnen..." wurde ich knapp 2 Wochen hingehalten. In den O2 Shops sieht es auch nicht anders aus: Meinen Erfahrungen zufolge dürfen die Händler nur jeweils ein Gerät bestellen und erst sobald dieses verkauft ist, ein neues nachbestellen - heißt es gibt de facto nur alle 2 Tage ein Gerät zu verkaufen. Service sieht anders aus.

Inzwischen ist trotz aller Widrigkeiten ein HTC HD7 meins. Alles in allem macht es einen guten Eindruck. Einzig: Am Gerät selbst finde ich die Abdeckung für das Akku-Fach etwas billig. Das kann HTC besser und das haben sie auch beim HD2 gezeigt. Das Betriebssystem und auch die Apps laufen flüssig. Die Registrierung als Entwicklergerät ging super. Telefonieren, SMS schreiben funktioniert wie man es von einem Telefon erwarten kann. Auch die Einrichtung der Email-Konten war recht einfach und funktionierte (zumindest bei den bekannten Providern) automatisch.

Dummerweise hat auch dieses Betriebssystem - so cool es sein mag - seine Mankos. Viele davon liegen bei Microsoft, einige könnten auch bei meinem Provider liegen: Zum einen wäre da das fehlende Copy & Paste. Ja, ich möchte gern Kopieren und Einfügen - Informationen aus Kontakten in Nachrichten, Informationen aus Internetseiten in Browser-Adressleisten oder Notizen. Zum anderen fehlt mir die Synchronisationsmöglichkeit meiner Mails und Kontakte mit Outlook. Strategie ist, "der Benutzer steht im Mittelpunkt". Ich bin ein Benutzer und ich benutze Outlook und das auch im privaten Bereich. Und nun soll ich einen Exchange-Server installieren und hosten, um meine Kontakte und Kalendereinträge sowohl auf dem Device als auch auf meinem heimischen Rechner zu haben? Das kann doch nicht euer Ernst sein! Die Alternative ist der Outlook-Connector zu meinem Live-Account. Dann habe ich zwei Kalender und zwei Kontaktlisten, die ich manuell synchron halten muss. Der Benutzer steht bei beiden Ansätzen nicht im Vordergrund, sondern wohl eher die Marketingabteilung bei Microsoft, die sowohl die Live-Dienste als auch die Umsätze mit Exchange pushen will. Schade, denn hier könnte man mit wenig Aufwand viel erreichen.

Ein weiteres Manko ist der Standard-Suchprovider im Browser. Dass es nicht Google ist, war mir fast klar - schließlich will Microsoft seine Suchmaschine Bing vorantreiben und wenn mehr Leute in Deutschland Bing verwenden (müssen), dann wird wohl auch der Crawler häufiger mal auch deutsche Seiten crawlen und die Ergebnisse besser. Aber es ist nicht Bing! Nein: Der Standard-Suchprovider ist Yahoo. Wann hat jemand von euch eigentlich das letzte Mal mit Yahoo gesucht? Und natürlich ist diese Einstellung nicht änderbar...

Dieser Post hört sich sehr kritisch an? Das scheint nur so. Alles in allem bin ich sehr zufrieden mit dem Device bisher. Es gibt ein paar Mankos, von denen ich mir hoffe, dass sie sich in irgend einer Art und Weise beheben lassen - aber hier vertraue ich darauf, dass die Hersteller einsichtig werden und auf die Anwender hören - denn ist nicht der Kunde König?

[Update 03.11.2010]: Nachdem ich mich nun etwas näher mit den Hotmail-/Live-Diensten beschäftigt habe, hab ich herausgefunden, dass man seine Kontakt-Daten als CSV exportieren kann. Und somit mein Ich-lösch-versehentlich-meine-Kontakte-Problem lösen kann. Damit hab ich zumindest eine Backup-Möglichkeit - auch wenn mich an dieser stört, dass sie manuell ist.

[Update 04.11.2010]: Inzwischen hab ich auch herausgefunden, dass das Suchprovider-Problem durch meinen Mobilfunkanbieter O2 erzeugt wurde. die Devices haben zwar mehr Speicher als der Standard, dafür aber auch Yahoo statt Bing.

Einladung zum Treffen der .NET Usergroup Dresden am 18.11.2010

Wie bereits beim letzten Treffen angekündigt, werden die nächsten beiden Treffen der .NET Usergroup Dresden nun in sehr kurzen Abständen folgen. Den Beginn machen wir am 18.11.2010. Treffpunkt ist dieses Mal wieder im Erdgeschoss der T-Systems MMS. Wir konnten Peggy Reuter gewinnen, uns etwas zu diesen beiden Themen zu zeigen: Sketch Flow Prototyping in Expression Blend
  • Vorteile von Sketch Flow Prototypen
  • Killerfeatures von Sketch Flow gezeigt einem Demoprojekt
User Experience und Metro Style Design für Windows Phone 7
  • Theoretischer Ansatz aus UX und Design-Sicht
  • Umsetzung eines kleinen Prototypen in Expression Blend
Wer Peggy kennt, wird wissen, dass die Themen entwicklerfreundlich dargeboten werden. Es verspricht also wieder ein spannender Abend zu werden und wir freuen uns auf rege Teilnahme beim Treffen und auch beim Bierchen danach. Einen Link zur Anmeldung gibt es wie gewohnt im Xing.