It's 2008. Where's my flying car? RSS 2.0
 Monday, September 12, 2005

I am in Los Angeles for PDC05 and I am staying at the Renaissance Hollywood Hotel. Why is that interesting? Well, because …

Someone at that hotel is apparently thinking that it is a brilliant marketing idea to put little (live) fish into tiny bowls into the guest rooms along with a note that you might want to try out their room service (the note says that you don’t have to feed the fish because the chef is doing that and the chef wants to prepare something for you too). I think that’s a really, really bad idea and it’s pretty cruel. I think I need to talk to the hotel manager there. Save the fish!   

 

Monday, September 12, 2005 9:49:45 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [8] - Trackback

 Friday, September 09, 2005

Now here is an unlikely blog post! Clemens writes VBA snippets for PowerPoint!

There’s one problem that bugs everyone who is doing lots of presentations with PowerPoint at conferences and has to adjust the slides to whatever the respective conference’s PowerPoint template is: Color Schemes. Color Schemes are quite nice when you are in control of whatever your templates are, but if you must comply with someone else’s taste for color combinations or their complete ignorance about the color scheme, you might end up spending hours re-coloring your presentation’s graphics, because whenever you import or copy & paste graphics between presentations, the graphics adopt the destination’s color scheme. Here’s how that might end up looking:

 

Bah! I have tons of very complex graphics with animations that evolve over time (and reuse) and re-coloring the slide I am showing here would take quite a bit of time. And – really – green and light gray on dark gray with light gray text on white isn’t exactly “best practice” when it comes to presentations.   

What causes this is that PowerPoint will, by default, assign the “color scheme index” to the fill and line colors of any shape if you pick the colors from the existing color scheme (and the UI is designed to make you do that). This index information takes precedence over any explicit RGB value set for the shape’s fill or line or text color. So whenever you move the shapes to a different presentation, they will adopt the color scheme setting. Luckily, and that’s something I found out yesterday because I found myself once again in the situation to have to fix a deck, it’s possible to break that link between a shape’s coloring and the color scheme by programmatically modifying the respective ColorFormat element and resetting the SchemeColor so that it doesn’t refer to one of the  preset color scheme “slots”. Below is the resulting VBA macro for PowerPoint (yes, it cost me great pain to go there) that’ll simply replace the color-scheme index information on any drawing shape so that colors of shapes (the macro ignores text) will be completely preserved as you copy stuff between presentations. Put that into the source presentation and run StripSchemeColorFromShapes() once.

Sub StripSchemeColorFromShapes()
    Dim currentShape As Shape
    Dim currentSlide As Slide

    For Each currentSlide In ActivePresentation.Slides
        For Each currentShape In currentSlide.Shapes
        If currentShape.Type = msoGroup Then
            RecolorGroup currentShape.GroupItems
        Else
            RecolorShape currentShape
        End If
        Next currentShape
    Next currentSlide
End Sub

Sub
RecolorGroup(group As GroupShapes)
   Dim currentShape As Shape

   For Each currentShape In group
      If currentShape.Type = msoGroup Then
          RecolorGroup currentShape.GroupItems
       Else
          RecolorShape currentShape
       End If
   Next currentShape
End Sub

Sub RecolorShape(currentShape As Shape)
    Dim clr As ColorFormat

    On Error Resume Next

    If currentShape.Fill.Visible Then
        Set clr = currentShape.Fill.ForeColor
        clr.SchemeColor = ppSchemeColorMixed
        currentShape.Fill.ForeColor = clr
        Set clr = currentShape.Fill.ForeColor
        clr.SchemeColor = ppSchemeColorMixed
        currentShape.Fill.BackColor = clr
    End If

    If currentShape.Line.Visible Then
        Set clr = currentShape.Line.ForeColor
        clr.SchemeColor = ppSchemeColorMixed
        currentShape.Line.ForeColor = clr

        Set clr = currentShape.Line.BackColor
        clr.SchemeColor = ppSchemeColorMixed
        currentShape.Line.BackColor = clr
    End If

   On Error GoTo 0
End Sub


Once I ran the macro in the original presentation, all I had to do was to copy & paste it into the destination and see there! Done:

Friday, September 09, 2005 2:10:45 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [3] - Trackback

 Wednesday, August 31, 2005

My blogging efforts this year aren’t really impressive, are they? Well, the first half of the year I was constantly on the road at a ton of conferences and events and didn’t really get the time to blog much. After TechEd Europe, I was simply burned out, took three weeks of vacation to recover somewhat and since then I’ve been trying to get some better traction with areas of Visual Studio that I hadn’t really looked at well enough since Beta 2 came out. And of course there’s WinFX with Avalon and Indigo that I need to track closely.

Now, of course I have the luxury of being able to dedicate a lot of time to learning, because taking all the raw information in, distilling it down and making it more accessible to folks who can’t spend all that time happens to be my job. However, I am finding myself in this rather unfortunate situation again that I will have to throw some things overboard and will have to focus on a set of areas.

At some point rather early in my career I decided that I just can’t track all hardware innovations anymore. I certainly still know what’s generally going on, but when I buy a new machine I am just a client for Dell, Siemens or Alienware like the next guy. I don’t think I could make a qualified enough choice on good hardware components to build my own PC nowadays and I actually have little interest to do so. All that stuff comes wrapped in a case and if I don’t really have to open it to put an extension card in, I have no interest to look inside. The same goes for x86 assembly language. The platform is still essentially the same even after more than a decade, and whenever Visual Studio is catching an exception right in the middle of “the land of no source code”, I can – given I have at least the debug symbols loaded – actually figure out where I am and, especially if it’s unmanaged code, often figure out what’s failing. But if someone were ask me about the instruction set innovations of the Pentium 4 processor generation I’ll happily point to someone else. In 2001, I wrote a book on BizTalk and probably knew the internals and how everything fits together as good as someone outside of Microsoft possibly could know it. BizTalk 2006 is so far away from me now that I’d have a hard time giving you the feature delta between the 2004 and 2006 versions. Over time, many things went over board that way; hardware and assembly being the first and every year it seems like something else needs to go.

The reason is very simple: Capacity. There’s a limit to how much information an individual can process and I think that by now, Microsoft managed to push the feature depth to the point where I can’t fit Visual Studio and related technologies into my head all at once any longer. In my job, it’s reasonable for people to expect that whenever I get up on stage or write an article that I give them the 10%-20% of pre-distilled “essentials” that they need 80% of the time out of a technology and that I know close to 100% of the stuff that’s underneath, so that they can ask me questions and I can give them good, well founded answers.  In the VS2003/NETFX 1.1 wave, I’ve done something (and even if it was just a demo) with every single public namespace and I am confident that I can answer a broad range of customer questions without having to guess.

Enter VS2005 and the summary of trying to achieve the same knowledge density is: “Frustrating”.

There is so much more to (have to) know, especially given that there’s now Team System and the Team Foundation Server (TFS). TFS is “designed to be customized” and the product makes that clear wherever you look. It is a bit like an ERP system in that way. You don’t really have a solution unless you set up a project to customize the product for your needs. Hence, “Foundation” is a more than fitting name choice.

I’ve been in a planning project for the past two weeks where the customer has a well thought out idea about their analysis, design and development processes and while TFS seems like a great platform for them, they will definitely need customized events, a custom-tailored version of MSF Agile with lots of new fields and custom code analysis and check-in policies, integration with and bi-directional data flow from/into “satellite products” such as a proper requirements analysis system, a help-desk solution and a documentation solution, and probably will even want to get into building their own domain specific language (DSL).  All of that is possible and the extensibility of Visual Studio and TFS is as broad as the customer would need it to be, but … who would know? The Team System Extensibility Kit has documentation to extend and customize process templates, work items, source control, the build system, the team explorer, test tools, and reporting and that’s just the headlines. Add the tools for custom domain specific languages (huge!) and the class designer extensibility and you’ve got more than enough stuff to put your head into complete overflow mode.

And at that point you haven’t even looked at the news in Windows Forms (where I like all the new data binding capabilities a lot) and much less at ASP.NET 2.0, which is an entire planet all by itself. Oh, and of course there is the new deployment model (aka “ClickOnce”), SQL 2005, with all those new features (whereby SQL/CLR is the least interesting to me) and BizTalk 2006 and, and, and …

And of course, my core interest is really with the Windows Vista WinFX technology wave including of course Indigo (don’t make me use “WCF”) and for me to a lesser degree Avalon (yes, yes: “WPF”) for which knowing the VS2005/NETFX 2.0 foundation is of course a prerequisite.

What kills me with Avalon, for instance, is that I’ve got quite a bit of the 2D stuff cornered and know how to do things even with just an XML editor in hands, but that the 3D stuff is nicely integrated and sits right there in front of me and I just don’t have the necessary knowledge depth about building 3D apps to do the simplest thing and not the time to acquire that knowledge. And I’ve got such great ideas for using that stuff.

It looks like it’s time to take some things off the table again and that’s an intensely frustrating decision to make.

Don’t get me wrong … I am not complaining about Microsoft adding too many features to the platform. Au contraire! I think that we’re seeing a wave of innovation that’s absolutely fantastic and will enable us out here to build better, more featured applications.

But for a development team to benefit from all these technologies, specialization is absolutely needed. The times when development teams had roughly the same technology knowledge breadth and everyone could do everything are absolutely coming to an end. And the number of generalists who have a broad, qualified overview on an entire platform is rapidly shrinking.

And the development teams will change shape. Come Avalon, and game developers (yes, game developers) will be in great demand in places that are as far away from gaming as you could imagine. I’ve just had meetings with a very conservative and large investment management company and they are thinking hard about adding multi-layer, alpha-blended, 3D data visualizations complete with animations and all that jazz to their trading system UIs, and they’ve got the business demand for it. Of course, the visualization experts won’t be data mining and data analysis or software integration specialists; that’s left for others to do.

For “generalists” like me, these are hard and frustrating times if they’re trying to stay generalists. Deep and consequent specialization is a great opportunity for everyone and the gamble is of course to pick the right technology to dig into and become “the expert” in. If that technology or problem space becomes the hottest thing everyone must have – you win your bet. Otherwise you might be in trouble.

Here are some ideas and “predictions” for such sought-after specialists – but, hey, that’s just my unqualified opinion:

·         Cross-platform Web service wire doctors. As much as all the vendors will try to make their service platforms such as Indigo and Web Sphere and Web Logic and Apache interoperable, customers will try hard to break it all by introducing “absolutely necessary” whacky protocol extensions and by using every extensibility point fathomable. As if that wasn’t hard enough already today where most interop happens with more or less bare-bones SOAP envelopes, just wait until bad ideas get combined with the full WS-* stack, including reliable messaging, security and routing. These folks of course will have to know everything about security aspects like federation, single-sign-on, etc.  

·         Visualization Developers. Avalon is a bit like an advanced 3D gaming engine for business application developers. While that seems like a whacky thing to say – just wait what’ll happen. Someone will come along and build a full-blown ERP or CRM package whose data visualization capabilities and advanced data capture methods will blow everything existing out of the water and everything with white entry fields on a gray background with boring fonts and some plain bar charts will suddenly look not much better than a green-screen app. In 3 years you will have people modeling 3D wire-frames on your development teams or you are history – and the type of app doesn’t really matter much.

·         Development Tool and Process Customization Specialists:  I expect Team System to become the SAP R/3 of software development. No deployment without customization, even if that only happens over time. Brace for the first product update that comes around and changes and extends the foundation’s data structures. I fully expect Team System and the Team Foundation Server to gain substantial market share and I fully expect that there’ll be a lot of people dying to get customization assistance.

 

That said: I am off to learn more stuff.

Wednesday, August 31, 2005 1:53:45 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [6] - Trackback
IT Strategy | Technology
 Wednesday, July 13, 2005

I am technically on vacation now and for the following 2 1/2 weeks, so I’ve been a little slow posting this. Below is the link to the source code archive for my TechEd Europe 2005 talks on transactions and asynchronous messaging. The “newtelligence.TechEdTools” assembly with the message queue listener and the WSE and ASMX transports for MSMQ is essentially the same as the one I posted after TechEd US, but there is now a little sample application that goes with it. People have specifically asked for the “transactional file writer” example. You can find that in the “CustomersService” code.

Download: techEd2005Europe.zip

Wednesday, July 13, 2005 4:55:17 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [3] - Trackback
Talks
 Thursday, June 30, 2005

I spent yesterday in Brussels at the European Parliament. I attended session at a conference and had the opportunity to speak to a few members of the European Parliament and chatting with the press. As you might know, next week the parliament votes on the EU Directive in Computer Implemented Inventions, which is supposed to regulate how and which computer-implemented inventions shall become patentable in the European Union. More precisely, the directive really only manifests what the European Patent Office practices today and aims to pull that practice under the umbrella of European law – which it is not at this point.  And what’s currently going on in Brussels in terms of lobbying, especially on the side of the patent opponents, is bordering the insane.

The Anti-Intellectual-Property Lobby

One of the events I attended briefly (I didn’t have time to sit through the whole thing) was the so called “Economic Majority Conference”. I heard 30 minutes of testimony by (three) small businesses on how patents supposedly have or will hurt their business and a little storytelling by an attorney who acted as moderator for the event. The attorney, who admitted right from the start that he is not a patent attorney (which makes me wonder why he’d be chairing a patent-law related conference), told a sobbing story about a company that built a content management system for a whopping EUR 100.000 (they’re either really productive, or they’ve outsourced development to somewhere really cheap, or their system is probably not very featured) and their patent research showed that they are violating 4 EU patents.

 Then he went on to tell the shocking things he found out working with the client: Patents protect inventions, it might cost money to license a patented method, and if you are found to violate one you could get sued. If you ever sat down with a patent attorney for 30 minutes, you know that. What stunned me was when he went into a rather obscure series of calculations of penalty license fees and associated cost and came out with a total damage of EUR 45.000 that his client would have to pay if they were found to be in violating and the patent holder would decide to sue. The numbers alone tell me one story: This sounds bogus. Building a remotely competitive CMS isn’t something you do with 100K. And if you are really found to be in substantial violation of a competitor’s patent and it’s worth the hassle for your competitor to go after you, 45K isn’t even going to pay your attorney’s expenses. Looking around in the audience I saw several people who were visibly amused about this open display of lack of expertise.

The three company testimonies I listened to were similarly “interesting”. One gentleman claimed that he had developed a mapping software together with a partner company and they had expected (it’s interesting how those numbers are all the same) 100.000 EUR in annual revenues from that software service. And because there is a company who has a patent on the same things they’re doing, they couldn’t go on with the project. He claimed that the patent precluding him from realizing his business model is as broad as “putting a point on a map”.  I am sure that he could find friends at Google (Google Maps), MSN (Mappoint), or Mapquest (do I need to go on?) who’d happily help him suing to have that patent invalidated. And, really, if the annual revenue expectation from all that work is just 100K, wouldn’t it make sense to try doing something else?

The next company presenting creates some seriously (seriously!) impressive geology software. The CEO said that they don’t need patents, because copyright is enough for them. Having been asked for it, he said they have 4 software developers and “about the same number” of geologists on staff. The software they make is, as he explained, used to search for oil reserves. What confuses me, though, is that they don’t seem to understand themselves as a “computer-aided geology company”, but as a “software for geologists” company. The CEOs claim was that they develop most of the science models behind their software themselves. So, I was asking myself, if they have geologists developing new ways to do geological analysis to find oil reserves, why wouldn’t they patent that geology science? What does that have to do with any software implementation of those methods? If that company is really as good as they claim, wouldn’t those methods alone be worth tens of millions of Euros in license revenues alone? Well, and if it turns out that that science isn’t exactly original, but they are just implementing existing models – then they indeed do not have anything to do with patents, except, possibly consuming them and paying due licenses, because in that case they’re clearly capitalizing on someone else’s method inventions. And mind that these patents wouldn’t be covering anything that has to do with software; these would be patents related to geology.

The last company presenting claimed to be a market leader in digital video processing. Again, that company says that copyright is good enough for them. They, too, had some really impressive demos on how their effects software is used to improve video footage and how customers applied their digital effects to anything from music videos to blockbuster motion pictures. And I am thinking: Talk to a lawyer. Copyright protects the concrete manifestation of a program. If someone reverse engineers (that is not forbidden by copyright law, that’d at most be a license violation) your code and comes up with a functionally equivalent reimplementation of the same underlying method, you have nothing in your hands to defend yourselves. And here again, the method worthy of protection has nothing to do with its concrete implementation in software: it’s rather a specific (and likely very complex) mathematical model applied to digital images. It’s an invention that can clearly only be implemented on a computer, but it’s not a program per-se.

When listening to this and when speaking to a few audience members when we were taken to the conference room by our escort, I started to realize why this whole debate is so complicated: Lots of people involved in the “software patent” debate seem to be against the entire idea of patents, licensing, and intellectual property protection per-se and there seems to be not much of an understanding of the patent system as it exists and how many industries wouldn’t function without it.

Biotech Engineers United Against Patents!

Now that’s a headline that you will unlikely see. Still, it seems perfectly reasonable that software developers stand up against patents? The whole pharmaceutical and biotech industry is built on the patent system. If you look at pharmaceutical and biotech SME (small and medium enterprises), it’s their stated goal to focus on a particular problem, get funding, and then drive their research to a point when they can file for patents, do studies and finally hope that a pharmacy giant with a big distribution network will licensing their research results for productization. The result of the millions or Euros that go into developing a drug often fits on a few sheets of paper; it’s a recipe for mixing together the right ingredients to produce that drug. This is why there are dozens of generic drugs appearing on the market as soon as a drug patent expires; it’s not particularly hard to copy the production process and the patent system actually guarantees that the recipe is out there for anyone to see. What the patent system does for the inventor is that they get a period of exclusivity to capitalize on their invention so they can reclaim their investments and make money off them. Once that expires, the innovation is automatically placed into the public domain (!). Because that model is fully understood in the pharmaceutical industry, you won’t see people from that industry rallying in front of the European Parliament in a call to abolish patents in their field; they’d effectively put themselves out of a job.

The Software Industry Needs to Grow Up

The software industry needs to grow up, quite literally. In which engineering science is it enough to get a computer for $200 at eBay, and load up a free compiler to claim to be a professional engineer? In which other industry is the actual intellectual capital and the result of engineering effort (research, conceptualization, architecture) regarded as mere collateral of its implementation (source code)? That is plain idiocy. Source code, no matter whether open or closed, doesn’t matter much. If today’s language of choice is C++ and in 2009 it’s something like “K-Square” running on a super-universal “VLR” runtime, that oh-so-important source code is suddenly just a legacy problem. What counts are the underlying concepts and methods. There are no software patents. Software is an implementation of a concept and implementations are subject to copyright. What’s patentable are implementation-independent technical solutions. And it is nothing less than a simple act of discrimination compared to any other field of engineering if innovators in the fields of database and transaction research, digital image and digital audio processing, or robotics are denied their right to claim protection on these inventions. 

The open-source advocates can claim and execute their right to free speech as much as they want, but when they finally gather up on stage at a conference and intonate “We are the world, we are the children”, they’re doing something good for Africa and impoverished children, because someone will have to pay license fees on a copyright protected work of art – whose proceeds go to the author and therefore, as I understand, to the Quincy Jones Listen Up foundation. That is true as soon as you can buy a drink at that conference. As it turns out, if you implement something in “free speech” (or in that case: free singing), someone may end up having a monetary claim if you do so in a public performance from which anybody has any financial gain (like the caterer).

A software implementation is, if we’ll take that as an analogy, the public performance of someone’s concepts and inventions. Just as you may certainly speak up freely, sing in the shower and recite your favorite author amongst your friends, patent law commonly and explicitly states that any hobbyist can implement any patent for their own private use in any way they wish. As soon as someone capitalizes on the implementation, they ought to pay their deeds to the inventor so they get their fair share of that financial gain. That said, as soon as “free speech”  turns into “free beer” and global services companies run around making billions of Euros of consulting revenue off “free” implementations of someone else’s inventions while the inventors don’t get their fair share, something is absolutely wrong. There are innovators and there are implementers. Sadly, many people I hear speak up against patents are implementers of other’s ideas who are more worried about writing source code in a special way or for a specific OS or under a certain license, than bring true innovation to our field of technology.  

The System Is Broken

And yet, you won’t hear me saying that I am happy with the patent system as it stands. It is blatantly obvious that there are serious issues with the U.S. Patent Office and the European Patent Office (and other patent agencies) when it comes to computer implemented inventions. Patents that are ridiculously broad or are granted on methods that have been used for decades, but have been reformulated by clever lawyers to sound new, are absolutely wrong and should either not be granted or be voided.

We all know that granting a patent claim on a mouse double-click, or on a shopping cart is stupid. But if you find that the executive branch of the administration in a particular field is severely broken, do you throw your hands up, give in to that inadequacy and change the law so that the executive doesn’t need to deal with that anymore? Or do you pass a law that’s adequate and preserves the rights of the innovators and then go and fix the broken system?

Instead of lobbing to abolish a system that successfully supports pretty much all other fields of engineering, I would expect that the people who are so highly critical of patents and believe that the Armageddon is near would offer their help in fixing the system. And what I expect from the European Commission and the U.S. Administration is that they enable the public by executive order to help the patent offices by being more progressive and aggressive about patent application publishing and more open in the review process – especially for computer implemented inventions. I expect that the lawmakers keep the system simple by dropping amendments to the patent laws (such as the “forces of nature” clause in the CII directive draft) that only complicate matters and create new business opportunities for patent lawyers (If I mandate to write things to a physical disk, is that enough “force of nature”?).

Employing the Community

First off; if you If the community would be showing their willingness to help fixing the patent system, here’s what I think could be elements of a community collaboration model that’s a bit more proactive than the current practice of “publish & wait”:

·         Any patent application should immediately be made available to the public through a filterable push-feed. Media could be, for instance, Email and RSS. If I am interested in database and transaction methods, I should get the respective applications pushed into my email inbox automatically. This service should be free and available to anybody. (Except for “push”, that actually already exists: http://ep.espacenet.com)

·         Anyone demonstrating sufficient qualification can be accredited as a subject matter expert to the patent office. “Sufficient qualification” could stem from college degrees and diplomas, membership in an accredited technology association or working for an accredited company. Accreditation is free, associated with one or more specific technology categories, and the qualification requirement serves to exclude “interested bystanders” and people whose only intent is to be generally destructive. Subject matter experts are volunteers and must constructively contribute to the patent verification process on a regular basis; otherwise they lose their accreditation and the accreditation cannot be regained for a certain waiting period. As with the current system, anyone can still file objections against a published patent application, but the input of accredited subject matter experts is handled with priority, because it is more likely to lead to a quicker refusal of unjustified applications.

·         Subject matter experts shall inspect patent applications for clarity and can recommend refusal of a patent because of technical obscurity. Patents should be clear and complete enough so that an implementation can be devised by any qualified implementation engineer or engineering group. To be clear: If there is a 3D imaging patent at hand and the engineer’s linear algebra skills are not up to speed, then he/she is likely not qualified.

·         Subject matter experts shall aid the patent office in finding and collect instances of prior art or similar existing patents.

·         Subject matter experts can recommend refusal of a patent because of technical triviality – if a complete implementation of the invented method in software is merely a matter of minutes, the invented method might not be worthy of protection or is indeed one that is an inevitable, logical, and obvious solution path for a given problem.      

All in all, this means that if you really hate the idea of patents, you could volunteer to participate in such a collaboration model and help killing unjustified patents from within the system. Employing a community model would be a constructive move to help fixing the patent system as it stands. Today, the acceptance and refusal of patents is often at the mercy of overloaded patent officers who are certainly qualified in the respective field of technology, but who are not and simply can’t be active practitioners in the field. Because patents are published, but the access to those patents and the feedback channels is relatively obscure and patents are written in language where lawyer-speak overlays the technology details simply because patent law is too complicated and there are too many special cases, exclusions and restrictions to work around, patent research and objecting against unjustified patent applications is indeed a matter than only large corporations can afford. But that is not a problem of the law, that’s a problem of the system implementing the law.

What seems problematic about a community model is that there will be doubtlessly participants whose only mission is to kill and destroy, because they are against the patentability of computer implemented inventions per-se. That’s something that has to be expected – I can’t expect that fierce advocates of the technology of vendor X will be happy about technology innovations made by vendor Y. But because such a system would be proof and facts based, such “enthusiasm” would likely only help making the system better.

Conclusion

Advocacy against patents solely on the grounds that the execution of the patent law by the patent offices is broken looks very wrong to me. There are stupid patents that should never have been granted and we as in industry need to help get rid of them and help that such patents won’t pass in the future. But inventors in any field of digital technology are entitled to patent protection just as inventors in any other field of engineering. If you develop a digital image processing methods to take a digital photograph made with an off-the-shelf digital camera that enables a doctor to detect skin-cancer risks, that’s an invention that’s doubtlessly worth patenting. It’s simply untrue that software developers casually sit down in the morning and an implementation of that exact invention forms under their fingers as an inevitable evolution of thought given the problem – and in the unlikely event that he/she still end up with the same thing – then it’s very simply (and unfortunately for the runner up) a matter of “first innovator wins”. And if you are clever enough to find that solution path by chance, I would argue that you are clever enough to find another one, too. That’s called “patents drive innovation”.

Thursday, June 30, 2005 7:17:55 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [14] - Trackback

 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