It's 2008. Where's my flying car? RSS 2.0
 Sunday, June 19, 2005

“All for this one moment” is Lufthansa’s marketing tagline for FlyNet, their in-flight Internet service. One of the ads reads (I don’t have the exact wording right so, so I paraphrase) “Read your email or cheer about the goal in the 92th minute”. Now… that with the goal is of course an issue, because how could you possibly see it? Sure, there are live text tickers on news sites and there is Internet radio, but that’s all lame, right? So I bought myself a PC with some big disks, two TV capture cards, upped my DSL connection at home to 3072/512KBps, and got myself a copy of SnapStream’s Beyond TV. Outcome: Live TV from Germany, football included, streamed from my home PC to my notebook to anywhere I go – given that I get at least a 96 KBps link. The maximum feed I can get out of this with a good connection to home is about 496 KBps, which gives me near VHS picture and sound quality.

The screenshot is taken in the Lufthansa lounge at Munich airport. Connection is via Vodafone’s WLAN. Greece playing Japan in the Confederation Cup right now. (Of course they’ve got that here on the regular TV screens, but it seemed like a good moment to show that).

  

 

Sunday, June 19, 2005 9:19:04 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [3] - Trackback

“Self inflicted damage“ is probably the right expression to use. It’s Sunday, I am home, it’s a beautiful day and I am once again packing a suitcase. The taxi arrives at 16:00h and I’ll be airborne at around 16:45h (the drive to Düsseldorf airport from my apartment is about 8 minutes and I am already checked in via phone) going to Munich and from there to Bern in Switzerland for a 1 1/2 day workshop with a customer. Tuesday afternoon I take the train to Zürich airport and will fly straight to Brussels for a series of meetings Tuesday evening and Wednesday all day. As per current planning, I’ll be back at Düsseldorf airport on Wednesday by 21:45h.

And all that in a week that was supposed to be “work at home”. In the past four months, I’ve been to the U.S. three times and I’ve been to Singapore, Algeria, Saudia Arabia, Pakistan, and Turkey as well as in Croatia, Slovenia, Austria, Norway, England, Italy, and Holland – with the occasional business meeting in Germany in between. With some of these trips being really short – like less than 2 full days in Karachi, Pakistan coming from Miami in Florida (+9 hrs) and leaving to Europe (-3 hrs) I even give up trying to adjust to the time zones and if I happen to wake up at 3am in the morning I just accept that as what the body thinks is right, make or order coffee and just stay awake. I thought last year was nuts in terms of traveling, but this year easily beats it.

The traveling per-se isn’t all that bad, but getting up at 3:30am in the morning or earlier or just stay awake through the evening to catch a flight in the Middle-East, crossing more than 6 hours of time-zone differentials three times in a week, and all the irregular sleep hours and the irregular eating hours are definitely causing stress, are badly affecting my ability to get work done and aren’t really healthy. And since I am always cordially invited to be someone’s guest most of the evenings I am on the road, it’s not a very polite thing to reject the invitation to dinner and a drink or two – which doesn’t help keeping the weight down and doesn’t contribute to be well rested all the time. And I really can see why some frequent business travelers become alcoholics. If one’s body is easily vulnerable to addiction, the “dinner meeting culture” alone drives people straight to the edge and then they do hard liquor – done. Beer and wine in good measure is good enough for me, thanks.

What’s somewhat frustrating about the traveling on tight schedules is that you often get to places where you haven’t been and then you don’t get to see anything of the city or country. Pakistan is one of these examples, with the added, unfortunate complication of a very volatile security situation. I’ve now been in Karachi twice and all I have seen is the airport, the highway from the airport into the city, a particular hotel (both times), and two restaurants. And whenever we left the hotel, we’ve been in a bus followed by a pick-up truck with a bunch of policemen with machine-guns. And with that “experience”, you get pulled in front of a TV camera for an interview and get asked “what do you think of Pakistan?” Well… What I can say about Pakistan is that the people are great. It’s difficult to find a room with 600-800 people who are so exuberantly enthusiastic about information technology as in Karachi. It’s hard to find a fitting analogy to describe it, but the way they are longing for and absorbing knowledge is as if you had a room full of sponges and you are holding a water hose at it for an hour and once you are done, the floor is still dry like a desert. And once you say “that’s it, thank you for your attention” at the end of a session, you’ve got 50 people jumping up, running up to the front, bombarding you with questions. It’s absolutely amazing.

Also amazing is my new friend Arfa Karim (picture), who is the youngest “Microsoft Certified  Professional” in Pakistan and – by what I have been told – the youngest girl at that in the world, having achieved the application developer certification with just 9 years of age. And after talking too her for quite a bit in Karachi this year, I can say that Arfa certainly didn’t cheat there. She’s really a C# wizard and she’s got a well developed self-esteem about it.

Speaking of “Microsoft Certified” …

Since May, I proudly carry the title of a Microsoft Certified Architect after passing a very humbling board review in Redmond. It’s my first ever Microsoft Certified Anything that I have, so I am very happy to have it. The Microsoft Certified Architect program, which has only been announced at TechEd US, is a very interesting and very ambitious program, which is not primarily about Microsoft technologies and not about someone sitting down and answering some questions to a program. To become an MCA, you have to be a well-rounded person, balancing technical, business and people skills and you have to prove that you’ve done stuff and shipped stuff. Having been accepted into the circle of the first 50 MCAs is truly a big thing – and given who the other folks are, I am still not sure whether I am worthy. When I was sitting on the reviewer side of the certification board in March (they had a boot-up “chicken and egg” issue – only MCAs can sit on the board, but what do you do if there are none?) I had several people where I was thinking to myself “who are you to dare making any judgment about this person?” since we’ve had several people coming in where you just learn new stuff with every sentence they’re saying.

From the board review in May I went straight to one of every year’s favorite “little big conferences” in Portoroz/Slovenia, to which I’ve been for the 4th straight year. There are just over 2 million Slovenians overall, but Microsoft manages to pull well over 1500 people to a developer and IT pro conference. Translated to the scale of Germany, we’d have to have 64000 attendees at an event to match that. And traditionally, Microsoft Slovenia throws one of the best event parties each year.

Once things settle down at the end of this week and with only one (“the”) major event left to go in this first half year (TechEd Europe in Amsterdam), I’ll have to log some of the past months travel experiences for myself here in my blog and also get back to writing about technology issues. There are a lot of things that I’ve learned and I’ve actually written a bit of code here and there that’s worth sharing, but with all the travel I just never found time to sit down and write about it – sometimes I just need a break as well. TTYL, gotta catch a flight.

Sunday, June 19, 2005 6:09:30 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [6] - Trackback

 Tuesday, June 07, 2005

Here’s the raw, not really well documented code drop with the sample and framework code for my CSI360 and CSI359 talks here at TechEd US. The talks are today at 5pm (CSI360 – Asynchronous Messaging) and on Thursday at 1:30pm (CSI359 – Handling Transaction Abort Cases). As soon as I find time, I’ll document the framework classes a bit better here on the blog. The archive contains, amongst other things, a WSE channel and a WebRequest/WebResponse set that lets you use MSMQ as an alternate transport for WSE and/or ASMX. It also has the complete queue listener code for the messaging series I posted some months ago.

My blogging backlog is ridiculous. In the past weeks I’ve crossed the Atlantic several times (with one quick trip to Singapore in addition to that), had some crazy “one city per day” trips and had to meet deadlines for whitepapers, articles, and presentations. I guess I travel too much. From here (Orlando,FL) I will fly straight to the Pakistan Developer Conference in Karachi (about 24 hours, via Amsterdam and Dubai) and then back home. If all goes well, I’ll be at home for 2 weeks. That’s a first for this year, I think.

Download: techEd2005.zip

Tuesday, June 07, 2005 12:07:03 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] - Trackback
Talks
 Monday, May 02, 2005

In the past months I’ve been throwing ideas back and forth with some of my friends and we’re slowly realizing that “Service Oriented Architecture” doesn’t really exist.

The term “Service Oriented Architecture” implies that there is something special about architecture when it comes to service orientation, Web services, XML, loose coupling and all the wonderful blessings of the past 5 years in this wave. But if you look at it, there really isn’t much special about the good, old, proven architectural principles once you throw services into the picture.

I’ll try to explain what I mean. There are five pillars of software architecture (this deserves more elaboration, but I will keep it short for now):

·        Edges: Everything that talks about how the network edge of a software system is shaped, designed, and implemented. SOAP, WSDL, WS-*, IIOP, RMI, DCOM are at home here, along with API and message design and ideas about coupling, versioning, and interoperability.

·        Protocols: Which information do you exchange between two layers of a system or between systems and how is that communication shaped? What are the communication patterns, what are the rules of communication? There are low-level protocols that are technically motivated, there are high-level protocols that are about punting business documents around. Whether you render a security token as a binary thing in DCOM or as an angle brackets thing is an edge concern. The fact that you do and when and in which context is a protocol thing. Each protocol can theoretically be implemented on any type of edge. If you were completely insane, you could implement TCP on top of SOAP and WS-Addressing and some other transport.

·        Runtimes: How do you implement a protocol? You pick an appropriate runtime, existing class or function libraries, and a programming language. That’s an architectural decision, really. There are good reasons why people pick C#, Java, Visual Basic, or FORTRAN, and not all of them are purely technical. Technically, the choice of a runtime and language is orthogonal to the choice of a protocol and the edge technology/design. That’s why I list it as another pillar. You could choose to do everything in Itanium assembly language and start from scratch. Theoretically, nothing stops you from doing that, it’s just not very pragmatic.

·        Control Flow: For a protocol to work and really for any program to work, you need concepts like uni- and bidirectional communication and their flavors such as datagrams, sockets, and queues, which support communication styles such as monologues, dialogues, multicast, or broadcast. You need to ideas like parallelization and synchronization, and iterations and sequences. All of these are abstract ideas. You can implement those on any runtime. They are not dependent on a special edge. They support protocols, but don’t require them. Another pillar.

·        State: This is why we write software (most of it, at least). We write software to transform a system from one state to the next. Press the trigger button and a monster in Halo turns into a meatloaf, and you score. Send a message to a banking system and $100.000 change owners. Keeping track of state, keeping it isolated, current, and consistent or things to consider. Is it ok to have it far away or do you need it close by? Do you cache, and replicate it for the purpose? Is it reference data or business data? Consolidated, preprocessed, or raw? How many concurrent clients have access to the data and how do you deal with the concurrency? All these are questions that have to do with state, and only state. None of this is depends on having a special technology that is being talked through way up above at the edge.

Service orientation only speaks about the edge. Its tenets are about loose coupling, about independent evolution and versioning of contracts, and about technology-agnostic metadata exchange. All this is important to make systems interoperate better and to create systems where the effects of changes to one of its parts to any other part are minimized.

But none of the SO tenets really speaks about architecture [Sidenote: The “autonomy” is about autonomous development teams and not about autonomous computing]. When you look at what’s being advertised as “serviced oriented architecture”, you see either the marketing-glorified repackaging of Ethernet, TCP/IP, and LDAP (“Enterprise Service Bus”), or architectural blueprints that looks strikingly similar to things that people have been doing for a long time with DCE, CORBA, J2EE, COM, or mainframe technologies. What’s different now is that it is easier, cheaper and likely more productive to create bridges between systems. And even that comes at a significant price at this point. Realistically, the (web) services stacks yet have to catch up with these “proprietary” stacks in terms of reliability, security, and performance.

There is Service Orientation – and that’s good. There is appropriate architecture for a problem solution – and that’s good too. These are two things. Combining the two is excellent. But “Service Oriented Architecture” is not an isolated practice. I’ve started to use “SO/A” to make clear that I mean architecture that benefits from service orientation.

I understand that there is an additional architectural tier of “service orientation” that sits at the business/technology boundary. On that meta-level, there could indeed be something like “service oriented architecture” along the lines of the service convergence that Rafal, Pat and myself were discussing on stage at TechEd Europe last year. But when I see or hear SOA discussed, people speak mostly about technology and software architecture. In that context, selling “SOA” as a completely new software architecture school does not (no longer) make sense to me.

Or am I missing something?

Monday, May 02, 2005 6:34:33 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [9] - Trackback
Technology

Ron Jacobs has posted podcasts of two conversations Ron and Arvindra Sehmi and myself had at Microsoft UK two weeks ago, when we coincidentally ran into each other there.

Monday, May 02, 2005 5:59:54 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [1] - Trackback

 Sunday, April 24, 2005

I just looked at my blog and found that I haven’t written anything in more than three weeks and not anything of any substance in more than 6 weeks. I can’t even believe it’s been that long. Time flies by when you’re busy. I still owe a follow up to this here, and will try to get that done in the next two weeks or so.

So what happened in the past 6 weeks? I learned how to stand and “surf” for several seconds at a time on a snowboard in Vail (Colorado) and bruised every part of my body the next week when my friends put me up on a real mountain in Keystone. I had the honor of sitting on the review board of the Microsoft Certified Architect program in Redmond, attended the Indigo Software Design Review in Seattle, spoke at the Visual Studio User Groups in Denver and Boulder (Tim Huckaby gave me 15 minutes of his time at the latter), and had several customer meetings in the US and Germany. I recorded 8 hours worth of webcasts on Service Orientation and spoke at workshops on the same topics in Belgium and Germany.  I spoke at the Microsoft Gulf Developer Conference GDC2005 in Riyadh (Saudi Arabia), at the Microsoft North Africa Developer Conference NDC2005 in Algiers (Algeria), and between all these things I ported an application to Indigo and prepared my talks for several conferences that are happening this next week and later this year and for which the content deadlines were due.

Now, if that sounds busy, consider next week: Today I fly to Istanbul at 17:30h, get there at 21:30h. I will do 3 talks at a large MS conference in Istanbul the next day. Tuesday morning (really: middle of the night) I have to get out to the airport and catch a 5:40am flight to Ljubljana in Slovenia. From there I will be picked up and driven to Opatija in Croatia where I’ll do a track keynote and another talk at the WinDays conference in the afternoon. After dinner, I go back to Ljubljana aiport and fly (at 11:45pm) back to Istanbul, getting there at 2:50am. 3 more talks in Turkey on Wednesday. Then, Thursday morning, I catch the same flight to Ljubljana at 5:40am, but will connect through to Vienna in Austria where I will arrive at around 8:30am and will hurry to the Microsoft office to do two full days of Visual Studio 2005 training for the MS Ascend program and then fly home to Düsseldorf Friday evening. By Saturday I will likely need medical attention.

The upcoming week is so crazy that I will try to document it here. Let’s see whether I can pull it off.

Sunday, April 24, 2005 1:12:40 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [6] - Trackback
Talks
 Friday, April 01, 2005

You can make a difference on this day in April. Go and sign this petition. Help save IDL.

What I personally would love to see are two new switched alongside midl.exe /mktyplib203:  

/wsdl – Verifies that all attributes used are applicable to a wsdl contract and then generates a *.wsdl file from IDL

/serviceModel – Verifies that all attributes are System.ServiceModel compatible and then generates a *.cpp file (managed code!) definition Indigo [ServiceContract] and [OperationContract].

Friday, April 01, 2005 7:54:13 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [2] - Trackback

 Wednesday, March 16, 2005

The Indigo bits are out at MSDN Subscriber downloads. Go get them and start playing.

  Tools, SDKs and DDKs,
      Platform Tools, SDKs, DDKs
          WinFX SDK – Community Technology Preview
              Avalon and Indigo Community Technology Preview - March 05 (English)

Wednesday, March 16, 2005 6:22:59 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [2] - Trackback
Indigo
 Tuesday, March 01, 2005

I’ll write a few more parts of my little Indigo series next weekend (too busy during the week), and will move from “throw arbitrary XML on the wire” to typed messages. However, before I’ll do so, I am curious about your opinion and I am asking you to comment (on the blog-site) on which of the following two declarations you would prefer.

I should probably quickly explain a few things before I let you look at the code snippets: [DataContract] attribute essentially replaces [Serializable] for Indigo and is used to label classes than can be serialized by the System.Runtime.Serialization infrastructure into XML or into a binary representation. So the serialization control through attributes is unified and independent of the actual output flavor you choose at runtime. The [DataMember] attribute labels fields or properties that are part of the data contract and should be (de)serialized. Unlike the current serialization models of Remoting (System.Runtime.Remoting.Formatters) and the XML Serializer (System.Xml.Serialization) where the serializers grab anything public, this model is strictly opt-in, meaning that public fields and properties do not get serialized unless you explicitly label them with [DataMember]. Even more surprising, the new serialization infrastructure does work with fields that are private.

I have a clear preference for one of these two declarations and have also what I think to be a solid explanation for why I prefer it, but before I elaborate, I am interested in your opinion.

Version A

[DataContract]
public partial class Address
{
    [DataMember("Company")]
    private string company;
    [DataMember("RecipientName")]
    private string recipientName;
    [DataMember("AddressLine1")]
    private string addressLine1;

    ... more fields ...

    public string Company
    {
        get { return company; }
        set { company = value; }
    }
   
    public string RecipientName
    {
        get { return recipientName; }
        set { recipientName = value; }
    }
   
    public string AddressLine1
    {
        get { return addressLine1; }
        set { addressLine1 = value; }
    }

    ... more properties and methods and stuff ...
}

 Version B

[DataContract]
public partial class Address
{
    private string company;
    private string recipientName;
    private string addressLine1;

    ... more fields ...

    [DataMember("Company")]
    public string Company
    {
        get { return company; }
        set { company = value; }
    }

    [DataMember("RecipientName")]
    public string RecipientName
    {
        get { return recipientName; }
        set { recipientName = value; }
    }
    [DataMember("AddressLine1")]
    public string AddressLine1
    {
        get { return addressLine1; }
        set { addressLine1 = value; }
    }

    ... more properties and methods and stuff ...
}

Consider this obvious statement: The class is declared in this way to provide programmatic access to and encapsulation of data that will eventually be serialized into some wire format or deserialized from a wire format.

Tuesday, March 01, 2005 6:27:00 AM (Pacific Standard Time, UTC-08:00)  #    Comments [16] - Trackback
Indigo
 Sunday, February 27, 2005

Christian Weyer is staying at my place for the next three nights, because we’re both presenting at a Microsoft Visual Studio 2005 training at Microsoft’s Neuss office, which is more or less down the street (highway) from where I live. Christian brought some good beer from his region (Franken – Bavaria’s northern part) and we’re having some of that, watch some TV (“We Were Soldiers” and “Broken Arrow”, we’re just guys like the next one), and otherwise get some email done, and chat. We just agreed on our programming hero. The prize goes to: Lutz Roeder. We’d be nothing without Reflector.

Sunday, February 27, 2005 2:00:00 PM (Pacific Standard Time, UTC-08:00)  #    Comments [9] - Trackback
Other Stuff
Stuff
About the author/Disclaimer

The content of this site are my own personal opinions and do not represent my employer's view in anyway. In addition, my thoughts and opinions often change, and as a weblog is intended to provide a semi-permanent point in time snapshot you should not consider out of date posts to reflect my current thoughts and opinions.

© Copyright 2008
Clemens Vasters
Sign In
Statistics
Total Posts: 714
This Year: 7
This Month: 0
This Week: 0
Comments: 1213
Themes
Pick a theme:
All Content © 2008, Clemens Vasters
DasBlog theme 'Business' created by Christoph De Baene (delarou)