Jemand zu Hause im Windows Store?

Ich habe lange keinen Beitrag mehr geschrieben für diesen Blog, aber jetzt ist etwas fällig: Tut mir leid, ich muss mich über etwas beklagen und einen „Rant“ vom Stapel lassen.

Im Prinzip finde ich es gut von Microsoft, mit der Kachel-Oberfläche und den Modern Apps einen kompletten Neuanfang zu wagen. An sich würde ich es gerne sehen, dass dieser mutige Neuanfang mit Erfolg belohnt würde. Die Chancen auf Erfolg stehen und fallen mit dem Windows Store und den Apps, die er enthält.

Und wie schaut es da so aus? Bisher zappenduster, ist mein Schluss. Beim Windows Store als einem der wichtigsten Projekte von Microsoft der letzten Jahre habe ich den Eindruck, es sei niemand zu Hause, der auch nur ein wenig nach dem Rechten schaut.

Resultat einer Suche nach Flappy Bird im Windows Store, heute durchgeführt: 282 Apps, wovon geschätzt etwa 100 in meinen Augen eklatante und offensichtliche Verletzungen des Copyrights des Autors des Original-Spiels darstellen, nicht nur wegen den App-Namen, sondern vor allem wegen den Icons, bei denen eins-zu-eins vom Original abgekupfert wurde.

Ich als Programmierer und Autor einer eigenen App finde das gar nicht lustig.

Immerhin hat Microsoft auch gemerkt, dass das nicht so toll ist, und hat kürzlich gewisse Richtlinien verschärft, wie man im Windows Blog hier nachlesen kann. Aber: Keine Mail von Microsoft an mich als Developer in dieser Sache, kein Eintrag bei den News im Dev Center.

Und, was gibt es denn so im Windows Store? 231 (!) Tic-Tac-Toe-Apps. Die meisten davon implementieren das Standard-Spiel auf einem 3×3-Feld, bei dem schon jedes Kind weiss, dass der gewinnt, der mit seinem ersten Zug die Mitte besetzt. Aber gut, wenn den Programmierern nichts besseres einfällt, wie soll Microsoft sie aufhalten? Es macht trotzdem keinen guten Eindruck.

Bis vor kurzem gab es eine App namens WhatsApp Messenger, genau so benannt, mit dem bekannten grünen Icon, kostenpflichtig, bei der man erst beim Lesen der Bewertungen wütender Anwender darauf kam, dass es sich nicht um das allseits bekannte WhatsApp handelt, ja nicht einmal um ein Chat-Programm, sondern nur um eine Dussel-App mit ein paar Tipps zu WhatsApp. Klare Irreführung, und einer der Anstösse für mich, diesen Blog-Eintrag hier zu schreiben.

Die App scheint zwar unterdessen whatsapp tips n tricks zu heissen, wohl als Folge der verschärften Richtlinien, die ich erwähnt habe, hat aber immer noch ein vom Original geklautes grünes Icon. Und ein WhatsApp PC, ein WhatsApp for PC und ein WhatsApp for Windows als weitere solche Fakes machen nach wie vor den Store unsicher. Wie sagt man auf Neudeutsch: Facepalm.

Was ist eine gute und attraktive Anwendung von Tablets, zudem noch eine, bei der sogar die eher schwachbrüstigen Surface-Tablets mit ARM-Prozessoren eine gute Figur machen? Lesegerät für eBooks. Und wer ist ganz gross im Geschäft mit eBooks? Natürlich Amazon. Und es gibt die Kindle App denn auch für Windows 8. Nur leider hat sie Dutzende schlechter Bewertungen, wo die Leute von Bugs bei den elementarsten Funktionen wie z.B. Umblättern berichten.

Ist es bei einer solchen „Flagschiff-App“ zuviel verlangt von Microsoft, dass man bei Amazon vorstellig wird und den Programmierern da mal ein bisschen Feuer unter dem Hintern macht? Man könnte ja auch Teile des sicher nicht knapp bemessenen Werbebudgets für Windows 8 einsetzen, um solche Fälle von klarer Negativwerbung aus der Welt zu schaffen. Alles, nur nicht so etwas monatelang im Store rumhängen lassen.

Also ich habe definitiv nicht den Eindruck, als sei beim Windows Store im Moment jemand am Werk, der weiss, was er tut und auch mit der nötigen Autorität ausgestattet ist, um das zu tun, was nötig ist. Aber was mache ich mir Sorgen, es geht ja nur um die Zukunft von Windows bei der ganzen Sache…

Veröffentlicht in Keine Kategorie. Schlagwörter: , . Leave a Comment »

Hey, wo ist meine Exception hin?

Ich hatte kürzlich den Fall eines Programms, welches munter mit einem uninitialisierten Pointer hantierte und trotzdem keine Exception auslöste oder von Windows gestoppt wurde. Die tl;dr-Version des Resultats meiner darauf folgenden Abklärung: Wenn 32bit-Programme unter einem 64bit-Windows laufen, werden unter gewissen Umständen Fehler wie ungültige Zugriffe auf Speicher einfach verschluckt. Der Stack wird abgebaut und das Programm läuft weiter, unklar an welcher Stelle, in einem wahrscheinlich inkonsistenten Zustand. Es sieht so aus, als könne man im Moment nichts dagegen unternehmen.

Die lange Version meiner Geschichte:

In unseren „native“ d.h. C++-Programmen haben wir bei Windows mit Hilfe des WIN32-API-Aufrufs SetUnhandledExceptionFilter eine Prozedur installiert, welche sämtliche Laufzeitfehler melden und in einem Log auf Disk vermerken soll.

Beim eingangs erwähnten Fehler mit einem ungültigen Pointer wurde diese Prozedur allerdings nicht aufgerufen, und es passierte mit und ohne Debugger gleichermassen folgendes: Der Fehler wurde verschluckt und das Programm fuhr fort, jedoch an einer unklaren Stelle (Step Into und Step Over im Debugger versagten beide, so dass man nicht sah, wo), in einem ziemlich „wackeligen“ internen Zustand.

Nach einigem Googlen fand ich dann den folgenden Blog-Eintrag: The case of the disappearing OnLoad exception.

Dieser bestätigt: Wenn während der Ausführung eines 32bit-Programms auf einem 64bit-Windows die Prozeduraufrufe so geschachtelt sind, dass es „zwischendurch“ Prozeduren von Windows selbst hat, z.B. wenn man sich in einer eigenen WindowProc befindet, und dann ein Fehler passiert, wird dieser verschluckt.

Als Lösung wird beschrieben, man solle sein Programm per Manifest explizit als unterstützt Windows 7 markieren. Wie genau sich das Programm verhalten soll, wenn man das macht, wurde mir anhand der Ausführungen im Blog-Eintrag nicht ganz klar, aber auf jeden Fall werden Fehler offenbar nicht mehr einfach ignoriert.

Ok, hab‘ ich ausprobiert, eine solche Markierung ist ja nicht schwierig, wie Microsoft hier beschreibt. Resultat: Keine Änderung.

Ich vermute, der Grund dafür ist diese Geschichte: Application Manifest may be ignored in Windows 7 x64: Man kann zwar sagen, man unterstütze Windows 7, aber ein 64bit Windows 7 lässt das 32bit-Programm unter Umständen trotzdem nur als Windows Vista laufen, und da werden Fehler offenbar noch ignoriert.

Es gab zwar einmal einen Hotfix, um dieses Problem zu beheben, aber der will auf meinem Windows 7 SP1 nicht installieren, der Hotfix aus dem Jahr 2010 ist wohl nur für Windows 7 „pur“.

Mir scheint, hier verheddert man sich prächtig in einem Gestrüpp von Windows-Fehlern und -Unzulänglichkeiten; auf jeden Fall habe ich bis jetzt keine Verbesserung hingekriegt.

Veröffentlicht in Keine Kategorie. Schlagwörter: , , . Leave a Comment »

Ein Lob für das Visual-Studio-Debugger-Team

Vor einiger Zeit hatte ich eine Beta von Visual Studio 2012 ausprobiert und versucht, damit unsere C++-basierten Applikationen zu debuggen. Mit VS2005 bis VS2010 hatte das jahrelang prima geklappt. Mit VS2012 hingegen ging es hochkannt schief: Der Versuch, die Applikation zu starten, führte zu einem Total-Crash von VS2012 selbst, noch bevor die erste Zeile unseres Programm-Codes überhaupt zur Ausführung kam. Mehr oder weniger das selbe Phänomen bei einem Attach to process: Unser EXE war toxisch, bei der ersten Berührung damit fiel VS2012 tot um.

Als sich das auch mit der RTM-Version von VS2012 nicht geändert hatte, und weit und breit keine gute Idee zu sehen war, was der Grund sein könnte für das Problem, wurde ich langsam nervös und rang mich dazu durch, bei Microsoft Hilfe zu suchen, obwohl ich recht skeptisch war: Würde sich ein Weltkonzern wie Microsoft interessieren für ein Problem einer kleinen IT-Bude in der Schweiz?

Ich machte also ein Posting im Forum des Visual Studio Developer Center. Das Resultat war mittelprächtig: Ein Microsoft-Mitarbeiter, der da wohl so etwas wie „Dienst tut“, schaute sich die Sache an, war aber bald mit seinem Latein am Ende, und machte schliesslich den Vorschlag, ich solle direkt einen Bug-Report erstellen, auf connect.microsoft.com.

Das tat ich auch – den Bug Report find man hier – und wartete gespannt, wie es weitergehen würde.

Das Resultat übertraf meine Erwartungen deutlich: Nach nur etwa 2 Wochen hatte jemand im Debugger-Team den Grund für die Crashes gefunden, die Sache für die nächste Version von Visual Studio korrigiert, und erst noch eine Umgehungs-Lösung geliefert, wie es auch mit dem bestehenden VS2012 klappt.

Allein diese Umgehungslösung ist sehr interessant: Offenbar hat Microsoft, ohne das an die grosse Glocke zu hängen, wesentliche Teile der „debugging engine“ für die 2012er-Version von Visual Studio überarbeitet, und es war dieser neue Code, welcher an einer Seltsamkeit in den VERSIONINFO-Daten in unserem EXE gar keine Freude hatte. Es gibt einen Trick, wie man die „legacy debug engine“ aktivieren kann, den alten Code, welcher damit klarkommt und der noch da ist: Man schaltet die Option Enable Edit and Continue in den Debugging-Options ein:

Legacy Debugger

Legacy Debugger aktivieren

Das ganze war für mich ein voller Erfolg. Auch wenn es natürlich keinerlei Garantien auf Erfolg gibt, möchte ich doch jeden ermuntern, der ein ernstes Problem hat mit Visual Studio, den Weg über einen Bug-Report auch zu versuchen. Es kann sein, dass man erhört wird.

Veröffentlicht in Keine Kategorie. Schlagwörter: , . Leave a Comment »

Geschichten aus 1001 Plugins

Das ist die Geschichte von einem, der auszog abzuklären, wie man eine grosse konventionelle Applikation als moderne, interaktive Web-Applikation programmieren könnte, und der zwar nicht mit einer Antwort, aber doch mit einer Erleuchtung wieder nach Hause kam.

Wenn man sich Moneysoft ansieht, wird einem schnell klar, dass bei einer Realisierung als Web-Applikation ein rein Server-seitiger Ansatz mit statischem HTML ohne Einsatz von Javascript nicht genügt. Nur ein Beispiel hierzu: Man kann heute einen Anwender nicht mehr 20 Dinge eingeben lassen in einer Datenerfassungs-Maske und ihm erst nach dem Abschicken aller Daten sagen, dass alles falsch ist. Eine unzulässige Eingabe auf einem Textfeld erfordert eine sofortige Fehlermeldung, und das heisst im Browser Einsatz von Javascript in irgendeiner Form.

Ich habe darum abgeklärt, wie man heute denn so Web-Applikationen mit einem hohen Anteil an Logik im Client programmiert. Welche Javascript-Frameworks gibt es, die sich bewährt und Reife erlangt haben? Welche Programmier-Muster haben sich etabliert? Welche Regeln befolgen erfahrene Programmierer bei der Entscheidung, was Client-seitig und was Server-seitig implementiert werden soll?

Angetroffen habe ich einen Dschungel, wie ich ihn mir so nicht hätte träumen lassen: Buchstäblich Dutzende miteinander konkurrierender Javascript-Frameworks, Bibliotheken oder wie immer man das nennen mag. Sammlungen mit Hunderten von Plugins bei mindestens einem dieser Frameworks. Viele dieser Dinge mit mehreren Releases, die dazu noch oft in unglaublich schneller Folge erscheinen. Grosse verwirrende Tabellen, was in welchem Browser in welcher Version wie gut funktioniert – oder eben nicht. Und für Leute, die übermütig werden, weil sie meinen, sie hätten es geschafft, lange Abhandlungen darüber, was man alles anders machen muss, damit es auch mit Tablets und Smartphones gut klappt.

Blickt man auf jedes noch so kleine Problem, das sich beim Bauen von Web-Applikationen typischerweise stellt, wie z.B. ein schlauer Editor mit interaktiven Formatierungens-Funktionen als Aufsatz für Textboxen, entdeckt man nicht etwas, das sich als Standard etabliert hat, sondern einen wilden Haufen miteinander konkurrierender Lösungen verschiedenster Grösse und Qualität.

Ok, sagte ich mir, das ist wohl eben so, wenn sich etwas so stürmisch entwickelt wie das Internet, seine Standards und die Geräte, mit denen man auf Websites zugreift. Aber wie baut man da Software, die man bezahlen kann und die nicht nächstes Jahr schon völlig obsolet ist?

Ich kann mir ganz verschiedene Strategien vorstellen, wie man versuchen könnte, sich in diesem Dschungel sinnvoll zu bewegen und länger als ein paar Monate zu überleben. Man könnte die Client-Logik sorgfältig so wählen, dass mit möglichst wenig Javascript-Einsatz ein möglichst grosser Gewinn an Benutzerfreundlichkeit herausschaut: Weniger Javascript bedeutet weniger Abhängigkeiten und potentiell weniger Ärger.

Man könnte versuchen Wahrsager zu spielen und vorherzusehen, was sich in Zukunft einmal durchsetzen könnte, wenn sich die Situation dereinst einmal stabilisieren wird, und dann darauf wetten. Auf der einen Seite Pech, wenn man falsch wettet, aber aber der anderen Seite auch nicht sooo schwierig: jQuery wird auf jeden Fall unter den „Siegern“ sein, wenn Sie mich fragen.

Man könnte auch einen Satz von Open-Source-Komponenten zusammenstellen, der jetzt gut funktioniert, und diesen dann „adoptieren“, spricht selbst weiterentwickeln und an neue Browser und Standards anpassen – mindestens ein paar Jahre lang, bis man etwas Neues machen kann.

Ich hatte grosse Mühe, im Internet brauchbare Diskussionen darüber aufzutreiben, wie man die Strategie findet, die für die jeweils eigene Situation angebracht ist. Viele Leute scheinen noch nicht einmal die Notwendigkeit einer Strategie zu empfinden, und mixen frisch-fröhlich die neuesten Versionen von einem Dutzend oder mehr Plugins zu Web-Applikationen zusammen, als ob es kein Morgen gäbe.

Ich fühlte mich weit davon entfernt, eine Entscheidung darüber zu treffen, welchen Weg die Megos AG einschlagen müsste auf dem Weg zu einem Moneysoft.web, und war am Schluss ziemlich beunruhigt über die ganze Situation.

Aber dann dann kam sie, die eingangs angesprochene Erleuchtung, eines Abends kurz vor dem Einschlafen, und brachte zwar nicht die Antwort auf die Frage nach der Strategie, aber trotzdem ein Ende meiner Zweifel, ob das je etwas werden wird:

Frage: Wie ist es überhaupt möglich, dass es diese riesige Zahl an Javascript-Bibliotheken und -Plugins gibt? Antwort: Es muss einfach und nicht allzu zeitaufwendig sein, so etwas zu bauen. Und das wiederum heisst, dass es eine Obergrenze gibt, wie komplex und kompliziert diese Software überhaupt sein kann: nicht sehr.

Auf die eine oder andere Weise werden wir das darum in den Griff kriegen.

Zu guter Letzt noch ein Link: Ich habe im Zuge der beschriebenen Abklärungen gute Web-Applikationen gesucht, die von der Art der Funktionalität her mit Moneysoft vergleichbar sind (welche man breit gefasst als „Verwaltung administrativer Daten“ umschreiben könnte), und bin dabei auf smallinvoice gestossen. Funktioniert ausgezeichnet, sogar im relativ exotischen Opera-Browser, mit dem ich normalerweise unterwegs bin, was ein sehr gutes Zeichen punkto Einhaltung von Web-Standards darstellt, und wurde offenbar von einem vergleichsweise kleinen Team unter Schweizer Leitung gebaut. Geht doch!

Veröffentlicht in Keine Kategorie. Schlagwörter: , , . Leave a Comment »

Visual Studio Refactoring und Code in .aspx

Als ich vor ein paar Jahren die Refactoring-Befehle in Visual Studio kennenlernte, insbesondere das Rename-Kommando, hatte ich irgendwie das Gefühl, nach einem langem Aufenthalt in der Tool-Steinzeit endlich in der Moderne angekommen zu sein: Nie wieder der Horror von rein textuellem Search & Replace, wenn 2 ganz verschiedene Dinge gleich heissen und man nur eines davon umbenennen will.

Mit der Zeit denkt man gar nicht mehr so darüber nach: Ist doch selbstverständlich, den Texteditor mit dem Compiler zusammenzuschalten, der schliesslich ganz genau weiss, welche Referenz auf welches Objekt zeigt, ganz egal, wie viele Dinge rein textuell gesehen gleich heissen.

Als vor kurzem ein ASP.NET-MVC2-Projekt nach einem Refactoring mit Fehlern in .aspx-Files nicht mehr kompilieren wollte, dachte ich zuerst an eine Fehlbedienung meinerseits oder an einen nur sporadisch auftretenden Bug in Visual Studio 2010, aber eine Recherche heute brachte schliesslich Klarheit: Es herrscht wieder Steinzeit. Das Refactoring in VS2010 ist nicht schlau genug, bei Rename auch Code-Stücke in .aspx-Files zu erfassen.

Man findet dieses Problem im Internet, z.B. in dieser Frage auf Stack Overflow, aber eine eigentliche Empörung über dieses klaffende Loch im System scheint es interessanterweise nicht zu geben. (Intellisense funktioniert auch in .aspx-Files, irgendwie, aber mit einem Fehlen jenes Features wäre Microsoft wahrscheinlich nicht durchgekommen bei der Entwickler-Gemeinde.)

Zum Glück gibt es Leute, welche sich solcher Probleme annehmen, und Tools wie ReSharper programmieren, welche die Welt sozusagen wieder geraderücken.

Allerdings droht bereits neues Ungemach: Leute scheinen sich immer wieder neue Spielarten von Syntax auszudenken, wie man am besten und elegantesten C#-Code mit HTML mischt, nicht zuletzt Microsoft selbst mit der neuen Razor View Engine für ASP.NET MVC3. Und diese neuen Spielarten überfordern dann Tools wie den erwähnten ReSharper zunächst wieder, wie man etwa im Blog der Hersteller-Firma nachlesen kann.

Das ist wohl ein nicht zu vermeidendes Problem im Zuge der rasanten Weiterentwicklung, welche die ganze .NET-Welt mitmacht…

Veröffentlicht in Keine Kategorie. Schlagwörter: , . Leave a Comment »

Wie funktioniert ASP.NET-Inline-Code?

Seit den Anfangszeiten von ASP.NET vor vielen Jahren gibt es die Möglichkeit von Inline-Code, also die Möglichkeit, Code-Schnippsel in HTML einzustreuen. Hier ist ein kleines aktuelles Beispiel mit ASP.NET MVC 2, Teil einer Seite mit einer HTML-Tabelle, bei der die Zeilen mit Hilfe einer Schleife gebildet werden, die in C# programmiert ist:

<table>
    <% foreach (var item in Model) { %>
        <tr>
            <td>
                <%: Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |
                <%: Html.ActionLink("Delete", "Delete", new { id=item.Id })%>
            </td>
            <td>
                <%: item.Id %>
            </td>
            <td>
                <%: item.Title %>
            </td>
            <td>
                <%: String.Format("{0:g}", item.DateReleased) %>
            </td>
        </tr>
    <% } %>
</table>

Ich habe mich in der Vergangenheit schon öfters gefragt, wie genau ein solches buntes Gemisch von HTML und Code zur Ausführung kommt. Es wird ja wohl nicht so sein, dass irgendein Prozess den Text durchgeht und dabei jeweils fliegend zwischen einer Art „HTML-Modus“ und einer Art „Code-Modus“ wechselt, also quasi die Mischung nachvollzieht. Aber wie es geht es dann?

Am einfachsten sieht man, was läuft, wenn man auf irgendwelchen Code auf so einer Seite einen Breakpoint setzt und sich dann nach einem Break im Debugger genauer ansieht, wo man denn gelandet ist. Die Seiten einer Website mit Code werden durch dynamische Compilation in eine temporäre .NET-Assembly verwandelt, die typischerweise unter kryptischem Namen in einer kryptischen Directory abgelegt ist, bei mir z.B.

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\d0bb04eb\40bc3df1\App_Web_sm1qknju.dll

Pro Seite gibt es 1 Klasse, und in jeder Klasse ist eine Methode namens __RenderContent2() zuständig dafür, den Inhalt der Seite d.h. das reine HTML zu generieren. Dank dem IL-Disassembler ILDASM kann man sich auf einfache Weise die Details einer solchen Methode ansehen.

Die Lösung, wie genau die Mischung von Code und HTML realisiert wird, ist denkbar einfach und eigentlich wenig überraschend: Es wird alles zu Code. Was schon Code ist, bleibt natürlich Code, und alle verbleibenden Sequenzen von Zeichen vor, zwischen und nach Code-Stücken, die HTML darstellen, werden mit Hilfe von Aufrufen von System.Web.UI.HtmlTextWriter.Write ausgegeben.

Das sieht disassembliert dann z.B. so aus:

IL_0031: ldarg.1
IL_0032: ldstr „\r\n </td>\r\n“
IL_0037: callvirt instance void [mscorlib]System.IO.TextWriter::Write(string)

Nun zu wissen, „wie es geht“, bringt mir nicht unbedingt viel, aber immerhin habe ich jetzt kein schlechtes Gefühl mehr, wenn mir das ständige Abwechseln von kleinen HTML-Stücken und Code-Stücken zu dumm wird und ich dann Dinge schreibe wie:

<% Response.Write("<td>"+item.Id+"</td><td>"+item.Title+"</td><td>"+String.Format("{0:g}", item.DateReleased)+"</td>") %>

Schliesslich entspricht das mehr oder weniger dem, was technisch gesehen zur Ausführung kommt, wenn ich es als „Mischung“ hinschreibe. (Acht geben muss ich dabei allerdings darauf, dass ich den bei <%: automatisch inbegriffenen Aufruf von Server.HtmlEncode bei Bedarf selbst mache; siehe hierzu z.B. diesen Artikel.)

Veröffentlicht in Keine Kategorie. Schlagwörter: , , . Leave a Comment »

Schweizer TechDays 2010

1 Jahr nach diesem Eintrag ist es Zeit, über die TechDays 2010 zu berichten.

Sie fanden dieses Mal im Congress Center Basel statt – einem Gebäude, das sich hervorragend eignet für solche Veranstaltungen. Wiederum bekam man in 2 Tagen auf einer sehr professionell organisierten Veranstaltung eine Menge Information mit auf den Weg, woran Microsoft im Moment arbeitet und wie die Firma die Prioritäten legt.

Eine ganz grosse Produkteinführung wie letztes Jahr mit Windows 7 stand dieses Jahr nicht an, aber Silverlight 4 und Visual Studio 2010 stehen vor der Tür und waren dementsprechend wichtige Themen.

Ich finde es recht eindrücklich, was Microsoft mit Silverlight in kurzer Zeit hochzieht – es jagt ja mehr oder weniger eine Version die nächste – aber meiner Meinung nach ist noch ziemlich offen, wie verbreitet es zum Einsatz kommen wird. In der freien „Wildbahn“ des Internet hat es in Flash einen starken, bewährten und auf einer unglaublichen Menge von PCs installierten Konkurrenten, und in einem Firmenumfeld, z.B. in Intranets, sehe ich nicht unbedingt den grossen Vorteil von Silverlight-Applikationen gegenüber konventionellen .NET-Applikationen, die ganz „normal“ auf den PCs laufen.

Und ja, es war wieder da, wie schon letztes Jahr, jenes absolut surreale Gefühl, wenn neue Fähigkeiten von Silverlight 4 „out of browser“ präsentiert werden: Wow, eine Silverlight-Applikation kann jetzt drucken. Ja, sogar Output auf mehrere Seiten verteilen, mit brauchbarem Seitenumbruch. Eine Silverlight-Applikation kann jetzt Rechtsklick-Kontextmenus haben. Nun ja, wenn ich richtig aufgepasst habe zwar jeweils nicht ein echtes Menu Control, sondern nur eine Listbox, die auf Rechtsklick kommt und dann in etwa aussieht wie ein Kontextmenu, aber hey, wir wollen nicht pingelig sein.

Und dann der Hammer: Man kann das Fenster einer Silverlight-Applikation jetzt stylen, wenn sie „out of browser“ läuft. Ja, wer will, kann z.B. den Titelbalken weglassen. Sogar auf die Grösse, in der das Fenster geöffnet wird, kann die Applikation jetzt Einfluss nehmen. Starkes Stück.

Windows Azure, die Microsoft’sche „Wolke“, war ebenfalls ein interessantes Thema. Ich denke, man wird das über ein paar Generationen hinweg reifen lassen müssen, und der grosse Hype in Sachen Clouds muss wohl auch noch zuerst abklingen, bevor man in Ruhe ernsthaft mit solchen Systemen arbeiten kann, aber ich habe schon den Verdacht, dass in ein paar Jahren Systeme wie Windows Azure in der IT absolut akzeptiert sein werden als eine Möglichkeit, Applikationen zu bauen und zu betreiben.

Microsoft scheint mir recht gut positioniert, um hier in Zukunft gross mitzumischen. Schliesslich stellt auch nicht jeder mal eben schnell ein paar Rechenzentren auf jeden Kontinent, eine gewisse Firmengrösse muss da schon sein.

Zum ersten Mal in der Schweiz wurde an diesen TechDays Windows Phone 7 vorgestellt. Das könnte eine ausgesprochen spannende Aufholjagd werden mit einem Mitbewerber, der buchstäblich Jahre Vorsprung hat und auch nicht gerade langsam unterwegs ist. Man munkelt, es sei nur etwas über 1 Jahr her, seit man sich bei Microsoft eingestand, dass man mit Windows Mobile 6.x auf einem toten Pferd sitzt und endlich umsatteln sollte. Was in dieser kurzen Zeit auf die Beine gestellt wurde, sieht für mich recht gut aus.

Und dann gab es noch die Frage: Do you poken?. Am Anfang der TechDays bekam jeder ein Poken, ein kleines Gerätchen für den Austausch von Kontaktinformationen zwischen Teilnehmern (Wikipedia-Artikel ist hier.) Für mich eine Lösung auf der verzweifelten Suche nach einem Problem, ein Ding wie aus den besten Hoch-Zeiten der New Economy – man glaubt förmlich die Hitze der Risiko-Kapital-Millionen zu spüren, die da abgefackelt werden.

Aber vielleicht bin ich einfach nur zu alt für solche Neuerungen…

Veröffentlicht in Keine Kategorie. Schlagwörter: , , . Leave a Comment »