Friday, November 16, 2007

MyTechEd 2007 - Day 3

Clearly the best day of the conference until now, with two really great sessions: Pat Helland's and Rafal's.

The first session was Justin Smith's "Connections in the Cloud - BizTalk Services and WCF". This was an interesting session about BizTalk Services, with some demos to illustrate how it can be used. I've described the technology previously, so I'm not going to spend time here on it. I especially liked the demo where the access control to a service is done at the ISB-level, based on claims and w/out any change whatsoever to the service. We were also told the team is using agile methodologies, with new drops every 6-8 weeks. Workflow is obviously the feature everybody is waiting for. And I personally wish it had context-based routing, and not only named-uri/topic-like pub/sub. CBR is an immensely powerful mechanism available in BizTalk Server, and it allows for greater decoupling between the sender and receiver(s) of a given message.

Next was Matt Winkler's "What's the Context of this Conversation: Enabling long running services in workflow services". The basic ideas of Workflow Services (in .Net 3.5) are implementing services as workflows, and hosting workflows as services. The session described the current mechanisms used to communicate between the wf host and its instances using applicational queues, and described how this works in long running scenarios. If this was BizTalk Server, this would be a session about Correlation and Convoys. Since its not, it was about the exchange of context information between the service and its clients so that the correct instances can be rehydrated when messages/invocations arrive. Matt highly recommends the "Conversation" sample from the SDK to learn about this topic. Having studied previous versions of WF, I'm glad they are dropping the Handle External Event/Call External Method ways of communication between host and workflows, which always felt strange to use.
This was not the greatest of sessions, but it was interesting nonetheless.

After lunch there was Pat Helland's "Data on the Outside vs Data on the Inside", the best session of TechEd IMHO. This is not a new session (also see this), it's a couple of years old, but the ideas are still up-to-date. The session starts with the idea that services communicate using messages, and from there Pat explores the location of the data (inside services, or in messages being exchanged). The most interesting part of the presentation were the parallels between the theory of relativity and messaging. Definitely a great session. Some quotable sentences I noted: «Messages are not from the now, but from the past. There is no simultaneity at a distance», «Services, transactions and locks bound simultaneity», «All data from distant stars is from the past [so, each service has its own perspective]» and «operators is hope that something will happen in the future».

The next session was "Silverlight, Asp.Net and Web Services in IronPython and IronRuby", presented by Mahesh Prakriya. The session was very much about the Dynamic Language Runtime and the languages that use it. It included quite a few impressive demos of Silverlight and its interaction with IronPython, as well as using Web Services (and dynamic proxy creation). The Asp.Net demo was less interesting. I find dynamic languages really interesting (I love languages like Lisp, Prolog and Xslt), although much less structured that C++/C#/Java-like languages, and would like to experiment using these languages in some enterprise scenarios. Unfortunately, however, it's possible to call from DLR languages into CLR languages, but not vice-versa. Which means I can't develop over SharePoint, OBA-apps, or even BizTalk, calling into DLR code. Helas.

The last session of the day was Rafal Lukawiecki's "Developing More Intelligent Applications Using Data Mining". Rafal  is a great speaker, and this was a very good session, which is available online here at a previous event. Rafal is widely known to be able to deliver great sessions whatever topic (he did sessions on security, networking and MSF, at TechEd), being a very eloquent and expressive speaker. His session was dedicated to the use of data mining techniques in application development, and started by establishing the differences between OLAP (interactive exploration of data) and Data Mining (Proactive discovery of information/patterns). This "discovery" aspect, or "Predictive Programming", is what can allow use to develop more intelligent apps, with adaptative user interfaces, data input validation, and business process validation. De session ended with a demo of Input Validation using Sql Server 2005 Analysis Services. Overall this was a very interesting session that left me with several ideas of possible applications in the development work we do at |create|it|.

Thursday, November 8, 2007

MyTechEd 2007 - Day 2

The second day started with a BizTalk Server session: "Enterprise Ready BizTalk - Best Practices from Customer Implementations", by Ewan Fairweather, one of the authors of the excellent "Professional BizTalk Server 2006" (ed. wrox). Not the greatest of sessions, but it had some interesting stuff. One of the topics covered was BizUnit, the test framework for BizTalk, and what I found interesting here was the usage of the database query shapes to query BizTalk's own database, as well as the notion of "priming messages", to warm up the system to the tests you are doing. The session also described and demo'ed code coverage using Visual Studio's performance tools (vsperfmon/vsinstr), to use for instance when testing pipelines of custom components, and the last part was dedicated entirely to Disaster Recovery and the various mechanisms available, from Log Shipping to SAN mirroring or applicational mirroring.

After this, a level 200 session, "Introducing the Microsoft Synchronization Framework", by Philip Vaughn. This was a very high level and un-technical description of the features of the just announced sync framework, presenting its use scenarios (offline and collaboration). The framework supports both hub&spoke and P2P topologies, and was described as "the glue for S+S". The fw includes three components: a sync agent (the "deamon"), a set of built in providers (relational, file system, etc. -- and like the name implies, this set is extensible), and the runtime, and basically supports a "poll" model of change detection, based on versions. Apparently there's already a dev center at MSDN about this CTP technology. The session also included a demo of n-way contact synchronization between a SQL database, Outlook contacts, Windows Mobile 6 Contacts, and Windows Vista contacts. Also, the SF is based on metadata information for the sync, which was summarily described, but no-one quite understood what that metadata consists of. I was really curious about the Sync Framework, but this was definitely not the best of sessions, especially because of being too general for a technical audience (IMHO).

Following this session was lunchtime's David S. Plat's "Why Software Sucks". David Plat is a very engaging and amusing speaker, and his session was basically about user experience... problems. The session highlighted several UX problems, enumerated his law of UX design: «Know thy user because he is not thee», and ended giving 5 suggestions: 1) Add a Virgin to the design team (ie, someone from outside); 2) Break convention when needed (ie, Palm/OneNote/MS Money lack of a Save feature); 3) Don't let the edge cases complicate the mainstream case; 4) Instrument carefully (ie, get info from user usage); 5) Always ask: "Is this individual design decision taking us closer to Just Working? or farther away?" (ie, are we introducing unnecessary steps or interaction). Having worked in Usability in my previous life, the message convened in the session really resonates with my personal views on this topic. HOWEVER, this is an easy session to make: the problems and bad examples in UX abound (I used several when I sold usability services), and Usability is described in a very light way. I totally agree with David Plat's principle, and clearly having the developers engage users (or at least be conscious of them and of the difference in usage profiles) is advantageous, but by itself this is not enough. Plus, I've seen a lot of bad decisions being done by marketing (after all, marketing teams design sites/products, not developers -- usually, at least), NOT developers, so pointing the fingers at them is not 100% correct. To conclude: a fun and motivational session, if not 100% "scientific". :-)

After lunch there was another excellent session by Pat Helland, "Life beyond distributed transactions: an apostate's opinion". Pat's basic premise is that you shouldn't use distributed transactions. They are fragile, and they break encapsulation (especially in SOA scenarios). The entire session explored what happens when you assume this, and ways to design your systems, also focusing on scalability. Pat published an article at CIDR 2007 which apparently is available online for download on this topic alone, and he also has posts on his blog about this which I highly recommend. This is the kind of session that makes you re-consider the way you design systems. One of the sentences that I always find motivational is his "accountants don't use erasers". A lot can be derived from this, especially in the way we use databases.
Btw, and I didn't know this, apparently Pat was involved in the several implementations of Transactions, both local and distributed (2PC), and the word "apostate" means "someone who used to believe [in distributed txs] but no longer does". And when someone in the audience asked him about the MS sales pitch about dist tx's a few years back, he just honestly replied: "You're right. I'm sorry."

Next session, Neil Padgett's "Implementing solutions that leverage MS Sync Framework to provide sync capabilities across devices, services and applications". This session gave some more detail about the Sync technology, and included both a repeat of the contact-sync demo and some code samples (who had the idea of using dark blue keywords over a dark gray slide background?). I learnt that the SF is a set of assemblies, about "sync endpoints/replicas" - the various parts in a sync network - , and that the providers are used to expose these replicas. Neil also described the concepts of Version (of the information) and Knowledge (a representation of the versions a replica knows about), essential to the architecture.
I'm guessing the team still didn't have the time to prime SF's presentations, as this was another somewhat poor session. Also Neil didn't always speak very clearly, so I ended up leaving early.

The next session I picked was about "Microsoft Robotics Studio", by Martin Calsyn and Olivier Bloch. Robotics Studio is very frequently mentioned because of the CCR (Concurrency and Coordination Runtime), which can be used to manage apps w/out robots. Back to the session: Martin did most of the session and demos, which several robots on-stage. The basic idea of the RS is abstracting the capabilities of the robots (which are controlled with Web Services), and once you do this, you can now change the specific physical robot without modifying your code.  MRS also includes a visual programming language (VPL).
I have been an owner of Lego Mindstorm for some years now, and am still amazed with how easy it is to program robots using Lego's visual language. This session is mostly unrelated to most of my everyday work, but it was very interesting nonetheless. It's a technology to keep an eye on, even if only for personal curiosity.

And thus ended the second day of the event. At night, there was a "Influential's" dinner, with several MVP's, RD's, and conference speakers. Did I mention TechEd was largely about networking? ;-)

MyTechEd 2007 - Day 1

The event officially opened with Soma's Keynote, "Building great apps". This was an overview session, as was to be expected, with some announcements: VS2008/.Net 3.5 will RTM before the end of the month (Nov07). Also announced were the MS Synchronization Framework and P&P's "S+S Blueprints", both of which sounded interesting, and a "Popfly explorer". The session included a few very nice demos, including one of using Visual Studio (no open to third-parties) to develop World Of Warcraft Add-Ins.

After this I went to Pat Helland's "Metropolis: Interchangeability of Applications". This was the first of a series of sessions Pat is doing, and it consisted of a study of how interchangeability evolved in the physical and industrial world, with parts replacement, assemblage locations, etc., and what we can learn in IT from this evolution, and apply it to the services-enabled world. We frequently read that, in the SOA world, if a service is not adequate, you can simply replace it with another one with the same interface. Well, truth is, I've never seen this happening in the real world. And even if the interface/contract is the same, are the semantics the same? So this is the kind of issue Pat discussed. It was a very thought-provoking and interesting session.

The next session was Stephen Forte's "Database Design Patterns", which identified some interesting database patterns. The most interesting were the Slowly Changing Dimension (SCD) and the horizontal/vertical partitionings. The SCD basically consists of creating a replica of your business database, but optimized for reporting or a given type of queries. The replicas are typically created using some ETL mechanism like SQL Server Integration Services/DTS. This allows you to alleviate load from your original, normalized, business database. I'm guessing this technique is not as frequently used as it should, especially in high-traffic systems. Forte's style is very dynamic, maybe we'll have him at the next TechDays. I hear he's available at that date and interesting in visiting Lisbon, so perhaps someone will invite him over.

And thus ended the first day of the event. At night, after some time at the welcome reception, there was a "Connected Systems Influential's" dinner at Las Ramblas. Did I mention TechEd was largely about networking? ;-)

Monday, November 5, 2007

techEd 2007 Influencer Community Camps: Development +/vs Architecture Communities

This year Microsoft held a set of pre-conference meetings with "Community Influencers" (MVP's, etc.). These meetings happened in an interesting open format:

The Microsoft Influencers Community Camps will be modeled after Open Space Technology where the attendees define the topics, volunteer or nominate peers to host sessions and then attend a series of sessions that interest them most (quote from here).

Basically the idea is that the participants define the rules and what is to be discussed. At an initial session, people suggest topics that are placed in an agenda and assigned a room, and whoever wants shows up. And rules are there to be bent (schedule, topic, etc.). A very interesting format which I am looking forward to try out in Portugal. Maybe at the next TechDays 2008? :-)

I proposed the topic "Development +/vs Architecture Communities", which got some people interested in the idea. The two issues that were mentioned more often were "Architects are the guys with the tie" and "Architects don't know the real technology, they are just theory". It's interesting how - at least at GASP - this doesn't happen, as the group is very much focused in real experiences. There were some good ideas about how to keep the "gap" small, most focused on the real issue: community and social issues. The Wiki will be updated with notes from that session, I'm told, so keep an eye on that for a complete summary.