Friday, October 25, 2002

This weblog has been moved to http://radio.weblogs.com/0112946/

Please update your links.

It's been a couple weeks since I started getting rare random crashes of Groove Workspace on my machine. According to MoonlightGroove (moderator of Groove support forums) this is one of those problems that just would not happen in their lab.


Having shipped 8 software products in my life I can relate to the pain support and development teams experience in trying to hunt down those kinds of problems. So I'm now installing patches, running Groove in debugger, sending call stacks and memory dumps to Groove Support and waiting catch that rare crash. The point is, if you care about a product - help its developers to help you.


MoonlightGroove announced yesterday that the latest patch release 2.1b fixes some of the crashes.


As an added bonus, I found activation code for Groove Professional Edition in my in-box this morning as a birthday gift from MoonlightGroove. What a wonderful surprise!

Wednesday, October 23, 2002

Being true to the duty of "Master of Ceremony" Chris Sells posts a good collection of Web Services DevCon summaries from various weblogs.

Tuesday, October 22, 2002

A picture named book.jpg

High Tech Start Up: The Complete Handbook for Creating Successful New High Tech Companies
by John L. Nesheim


This book is for anyone thinking about starting a high-tech business and is hoping to finance it. The author does a great job exposing all the complexities of finding the money and closing the financing. This book shows the problems to be watched for at every step of the way. But notice one thing - this book was written that time of common VC and high-tech lunacy. Now when first-to-market-wins rules of the game are no longer applicable. I wonder how the author would change the tone of the book if it was written in 2002.


Regardless of the times, this book shows just how hard it is to get the money and why the financing should be done only if absolutely necessary.

While this book does a great job covering all-things-money, it is not a complete handbook of creating companies. This book does not cover all of the other aspects CEOs need to worry about. If you're looking for a comprehensive handbook, check out book by Gordon Bell. 

Monday, October 21, 2002

Kenny Jones, Martin Harwar, and Edward Jezierski have put together a 142 page paper called "Deploying .NET Applications. Lifecycle Guide" availabe on MSDN and in PDF.



This guide provides guidance, recommendations, and the technical information you need to successfully plan for and deploy Microsoft .NET applications.


This is the most comprehencive .NET deployement work that I've seen so far.

Thursday, October 17, 2002

NUnit V2.0 is released



Some of the highlights of the new release include the following:
- Attribute based mechanism for specifying test and test fixtures.
- New Forms Interface that displays Tests and TestSuites in an
Explorer like fashion. The interface allows you to run individual
tests and/or suites from the forms interface.
- Automatic construction of suites based on namespaces. Just provide
an assembly and the test runner constructs a suite of all
TestFixtures in the assembly.
- Minimal amount of effort to upgrade due to inclusion of a
backwards compatibility class called TestCase and the framework also
looks for methods that begin with "test" regardless of case as it
did in the past.
- XML output from the console program.


 [DOTNET-PRODUCTS@DISCUSS.DEVELOP.COM]

WS DevCon: Tim Ewald: Building Web Services using System.XML


Tim is a big proponent of what he calls ?XML Way? of doing web services. This basically means using XML (as oppose to object models) as data representation for a web service. His weblog has a note explaining the concept.


Tim didn?t only talked about it, he also presented some practical solutions with example code that shows how to customize C# [WebMethod] (Tim pointed to his home page for source code) to get access to XML from within a method. Tim explained that [WebMethod] attribute really does three very different things:


-          dispatches SOAP request to the right method


-          generates WSDL (using reflection)


-          Marshal parameters


There?s a way to turn off WSDL generation. This is handy if you?re doing web services the ?right way? (WSDL first). There?s a way to turn off parameter marshalling as well. I think this may be handy if you?re dealing with some odd XML coming your way or need to optimize the way your handling XML. Once you turn off these two [WebMethods] features, you can still them to dispatch messages to methods.


It is nice to know you can access raw XML in .NET WS, but I?m not convinced one would need to go down to this level without a really good reason.


 


WS DevCon: Keith Ballinger: WS-Security support in .NET


Keith?s talk made me understand why we can?t just use SSL to secure Web Services. In a nutshell, it comes down to two arguments:


-          There may not be a direct connection between client and server. Web services requests can travel though intermediaries who have to understand the routing instructions, but cannot be trusted with the contents of the payload itself. Using SSL would obscure such routing information and make it impossible for the intermediary to process the message.


-          WS protocols must remain independent from HTTP. SSL secures HTTP traffic, but won?t help with other protocols that may be used to deliver a SOAP message.


 


Keith?s talk was a good intro to WSDK, but didn?t remove the need to read the documentation. It was pretty clear current incarnation of WSDK services will require developers to do quite a bit of hand-coding. It should get better with future versions.


 


WS DevCon: Clemens Vasters: Web Service Extensions for ASP.NET


Clemens presented his way of using SOAP extensions to insert all kinds of useful things into ASP.NET processing pipeline. I was very impressed by the elegance of the design and the care Clemens took in terms of delivering the best user experience.


Here?s what I understood: What he come up with is essentially an attribute-based approach towards extending a WebMethod. Want to add authentication? Just add [KerberosAuthentication] to the WebMethod. Want logging? Add another attribute.


Once the attribute is set, Clemens? code does a lot of plumbing ? modified WSDL; update *.config files, inserts the extension handler before and after your WebMethod call.


But that?s not all! On the client side, once the WSDL is used to build a proxy, the thing actually reads the WSDL, finds the SOAP extensions; generates the code using System.CodeDom.


Using this design newtelligence have implemented the support for WS-Security. The difference with WSDK is striking ? Clemen?s way is much simpler to use. KeithBa should definitely take note and consider adopting this design for WSDK.


(A few days after the conference Clemens has announced a wizard that generates soap extensions. Nice!)


 


WS DevCon: Rich Salz: What WS Needs to know about PKI


Rich gave a broad overview of crypto, PKI and XML security standards. I?ve learned that there?s much more to XML security than WS-Security.


Talking about digital signatures, Rich mentioned canonicalization ? the process of getting the one canonical XML string from an infinite set of different XML documents have only in insignificant differences (white space, order of attributes, etc). Rich pointed out that canonical XML is not the same thing as PVIS (post validated infoset). It seemed odd at a time, but now it makes sense. XML Schema defines PVIS in terms of data structure that satisfies a particular Schema. Since XML Schema was designed to define data structures for any kind of medium  (not just XML) it cannot possibly prescript things like the order of XML attributes or the amount of white space between angle brackets.

Wednesday, October 16, 2002

WS DevCon: Yasser Shohoud: The Right Way to Build Web services


Yesser delivered a clear message, true for anyone building component-oriented software ? nail the interfaces first, then think about internal component design. In Web Services world this practice is also applicable. One should start with WSDL first. Then design service internals using classes and data structures. Point taken.


There?s little support in ?developer tools? for this kind of workflow, so Yesser have called upon the audience to write their congressman and demand better ?tools?.  By ?tools? Yasser really meant VS.NET and seemed to brush off the reminders from the audience that there are in fact other developer tools that do support WSDL-first workflow. Being firmly in VS.NET camp, I nevertheless wasn?t impressed with the way Yasser made VS.NET the center of the world of dev tools.


 


WS DevCon: David Seidel & Mark Ericson:  Web Services Diagnostics


David and Mark gave some good tips of how to ease debugging web services.


Some of the tips:


-          Use HTTP headers to transport logging messages


-          Always compare cashed WSDL with the original to make sure that the other end is still using the same definition


They also gave a demo of SOAPscope (looks like very interesting product). Contrasting with the previous speaker, they gave generous information about other diagnostic tools out there, including their direct competitors.




Some of the tools I?ve noted: proxyTrace, xmldiff


 


WS DevCon: Andres Aguiar : DeKlarit Demo


DeKlarit seems like a truly useful product, especially for people who are can start an application with a brand new database schema (as oppose to build an application on top of existing database). The design of the product and the way it integrates in VS.NET is very well done as well. Detailed product review by Chris is here.

WS DevCon: Don Box: What?s in a Name: Types and semantics in a web service universe


Brian has a good account of this talk, so won?t repeat it.


 


I find it hard to crystallize key messages of this talk. Don seemed to spend most of his slot making an elaborated preamble and we out of time before delivering the key message.


I think he wanted to explain how to achieve compatibility of types with XML Schema and  WSDL. XML Schema allows in fact substitutions of one type with another ?compatible? type using substitutionGroup attribute. How to use it with WSDL isn?t clear to me.

WS DevCon: Panel


Here are some bits of the panel discussion I had time to jot down (lots of detail missing).


Q: Thoughts on denial of service attack against Web Services?


A: (Noan, Tim, Clemens): There?s no simple answer. SOAP makes such attacks easier to do and harder to protect against. To some extent, DOS is better solved at the network infrastructure level. When the flood of request hits your SOAP server, its probably too late.


Q: Why does Microsoft has two SOAP stacks?


A: (Don, carefully choosing words) Msft will make it really really simple to choose one over the other. [Read this any way you like?]


Q: Any performance metrics that compare Axis against .NET SOAP?


A: (Glen, Don) Axis is much faster than Apache SOAP. .NET Remoting is the fastest tech for distributed apps.


Q: How valuable it is to become Web Services expert?


A: (Don, others) In 5 years WS experts will be as valuable as TCP/IP expects today. Unless you work for msft .net group or other ?plumbing shop? there will not be much opportunity to makes loads of money.


Q: Why don?t we see lots of commercial public WS out there?

A: (Don, Sam, others) MSN will have more consumer oriented with future releases (ex: mappoint) Most of the WS implementation will be done in the context of enterprise in-house developments, which in fact constitutes the majority of current and future software projects.

WS DevCon: Christopher Dix: .NET, XSLT and Web Services


In my view, Chris has presented a truly original way to use XSLT and to build Web Services.


The idea is simple. Fundamentally, a Web Service is nothing more than a processor that takes XML input and generates XML output. XSLT is a language to define transformations of one XML document in to another. If one thinks about WS and XSML in these terms, they are indeed pretty close. As Don put it ?SOAP is XSLT with a longer wire?.


So what Chris did was to create a Web Service almost entirely in XSLT. I say ?almost? because you still need to write basic plumbing (HTTP listener, trigger XSLT) in ?regular? code.


The question is: how is it useful?

After his talk I?ve bounced an application idea with Chris and others. I started thinking about how to expose inference engines and/or expert systems as Web Services. This problem is coming from the product I?m working on. Any application that is based on inference engine (such as CLIPS) is defined in terms of ?facts? and ?rules? about those facts. If one can find a mapping between CLIPS rules and XSLT templates; as well as mapping between CLIPS facts and SOAP messages ? then you might have a generic WS interface to any inference engine application. That would be pretty cool. Now, I don?t pretend to know how to build such mapping. But I promised Chris I?ll spend some time thinking about it :)

WS DevCon: Scott Seely: Using inheritance with WS

Scott has shown a design pattern that allows people to use class inheritance with classes that implement web services. I did not grasp all the fine details of the code and unfortunately I can?t find the code examples on Scott?s site. But from what I remember, he?d end up with a base class that would dispatch calls to sub-classes based on the type information found in WSDL. For many sub-classes you would end up with unmanageable switch-case construct. Then again, maybe I just didn?t get it?

WS DevCon: Noah Mendelsohn: XML Schema


 


Apart giving an overview of the finer points of XML Schema language Noan made a very interesting point about the spec:


XML Schema is not just for XML documents. It was designed to be a generic language to describe data structures. So far, the usual use-case is to use it to define the structure of XML document. Noan made it very clear that nothing in the spec restricts its usage to describe data schemas held in other mediums such as in-memory representation, relational database, etc.


 


After the talk I?ve asked Noah is he knew if XML Schema is already being used beyond XML. I was specifically interested to know if databases would support XML Schema as a way to define the database schemas. Turns out, major DB players (DB2, SQL Server, Oracle) have fact started to work on it.


 

Memorable quote: ?There is no such thing as simple feature?

Tuesday, October 15, 2002

WS DevCon: Steve Lougharn: When web services go bad


Steve was fabulous! He and Clemens share my prize for most entertaining speakers!


In a well-prepared presentation Steve showed what it takes to roll out a large-scale commercial web service.  As expected, in large-scale systems web services don?t really make life easier. This stuff is hard by definition.


 


Steve offered advice regarding keeping healthy development environment for such projects such as:


-          No barriers between r&d and operations


-          Deploy early and often


-          Operations tasks should be described as use cases


-          Track operations issues as defects


-          Instrument the code


Not surprisingly, most of the points are similar for a ?conventional? large-scale software project.


 


WS DevCon:Peter Drayton: Designing RESTful SOAP API
Peter gave a great intro to REST design pattern and the philosophy behind it. I?ve learned there?s lively debate going on between REST and SOAP ?camps?.


Rather than fueling the debate, Peter crystallized the benefits REST that can be directly used in SOAP world:
- Model your system as a set of resources. (This way you?ll be able to address them and work with them independently of the root SOAP interface)
- Assign logical URLs to resources. (Practically speaking, use URI strings as oppose to oblique Ids to refer to things)
- Define schemas for resource representations. (Now that a resource can be addressed via a URI, clients will also need access to WSDL)
- Enable discoverability of resources. (Allow traversal of SOAP ?content?)
- Provide appropriate resource manipulation operations. (Define a small set of operations clients can assume are supported)


After his talk, Peter, Tim and Sam talked about a need to get a WSDL from a SOAP URI. In order to enable discovery of resources, one would need to get a WSDL that corresponds to a URI referring to a SOAP resource. Everyone seemed to agree that this is one of the key missing links and will make "REST guys happy".

WS DevCon: Glen Daniels: Apache Axis
Apart from good info on history of Apache project and the reasons behind open-source nature of Axis Glen gave an introduction to Axis architecture.


It sounded like Axis has a simple and elegant pipeline-processing type architecture where a SOAP message flows though a series of ?handlers?. Handlers can modify the message as it flows though and can also add or get name/value pairs (or properties) in order to communicate with other handlers. The whole thing is pretty extensible meaning that users can create their own handlers and plug them in various places in the pipeline.


Amongst open issues Glen talked about difficulty in describing a SOAP error (fault). So I?ve wondered if there?s a way to marshal exception object within SOAP?s fault code? The simple answer would be to XML-serialize exception object on the server, pack it in fault code and re-throw it on the client side. That led to a hallway conversation with Steve Loughran who kindly answered by essentially saying ?It?s more complicated than you think!?. Steve pointed out that such technique will not really interoperate because CLR function call does not prescript the kind of exception it could throw. So .NET web service can potentially throw any kind of exception, while client-side Java code must know in advance which exception can be thrown by a function (via ?throws? keyword). There seem to be nothing in WSDL to describe how the error would be reported. Looking forward to learning how to do this right.

WS DevCon: Sam Ruby: ?Interop is All?
Chris and Tim could not have picked a more appropriate keynote ? the ideas from Sam?s talk resonated in most of the presentations that followed.


The key take-away: Do NOT use SOAP is you always control both ends of the wire in a distributed system. The ONLY reason you want to use SOAP is to assure interoperability with other SOAP end-points (web services and clients). 


Sam points out that systems that use things like ADO over SOAP are not interoperable right now, thus should not be used.


I had a pleasure to discussed .NET Remoting with Ingo in this context. People who think about building distributed applications should really think if they really SOAP (and consider Remoting instead). And inversely, if you need interop ? don?t use Remoting?s SOAP channel. It really gives people false impression they are building Web Services while they are using slow protocol inside a system that isn?t built for interop.

Back from WS DevCon.


 


This conference blew me away. It was at once exciting and humbling to spend two full days in the company of real experts. The energy in the room was truly amazing ? there was zero marketing bs, no Java-vs-CLR religion, the audience was engaged in every talk, complementing it with questions and comments.


 


I won?t try to summarize the talks here ? Brian Jepson posted near real-time account on his weblog. I?ll simply add my own impressions and observations.


The number one reason you?ve been hacking too many web services?


      You no longer see the angle brackets, "just blond, brunette, redhead"


 

Back from WS DevCon.


 


This conference blew me away. It was at once exciting and humbling to spend two full days in the company of real experts. The energy in the room was truly amazing ? there was zero marketing bs, no Java-vs-CLR religion, the audience was engaged in every talk, complementing it with questions and comments.


 


I won?t try to summarize the talks here ? Brian Jepson posted near real-time account on his weblog. I?ll simply add my own impressions and observations.


The number one reason you?ve been hacking too many web services?


      You no longer see the angle brackets, "just blond, brunette, redhead"


 

Tuesday, October 08, 2002

Next Stop, "Greenwich": Enterprise IM Takes Shape with Platform Roadmap [Microsoft PressPass]


Details on RTC platform from Marketing VP for Windows Server.

I'm going to Web Services DevCon!


I've never been excited about the conference, the topic, the speakrs and of course, the attendees since SIGGRAPH '96!


I certanly hope to meet the people behind the weblogs I'm reading.

Monday, October 07, 2002



Compuware has a .Net Profiler for free. It helps pinpointing performance bottlenecks in .NET applications. What have you to loose ? FMS Inc's new Total Net Analyzer is here and this is a terrific tool to complement code-review sessions with your peers. It's more thorough than the VS.Net compiler (both C# & VB) and costs ~$500.[SBC's Radio Weblog]


Another good addition to .NET development environment to keep it healthy. FMS' Total Net Analyzer along a free Assembly analyzer found on Gotdotnet should really be embedded into round-the-clock build scripts. I would advocate using such tools even before the code review. Code analysis reports should be as visible as compilation warnings, because that's precisely what they are.

Friday, October 04, 2002

Peter Drayton lists an impressive number of talks by some of the greatest minds of computer industry. The archive contains hours of video-on-demand. You'll want to find time to check some of those talks!



Food for Thought. The recent pilot of MIT's OpenCourseWare reminded me of another brain-food goldmine that I ran across a while back: the Multi University/Research Laboratory Seminar Series. Organized by a combination of Microsoft Research, Carnegie-Mellon, MIT, Stanford, University of Washington & Xerox PARC, the topics & speakers are absolutely bluechip. [...]  [Peter Drayton's Radio Weblog]

Thursday, October 03, 2002

Greg Reinbecker and Sam Gentile  are Announcing Groove Experiments shared space and work.


What a great idea! As I said before, I believe that the Groove Platform holds immense promise, way beyond the Groove Workspace and tools. When fully exposed to developers, Groove Platform has the potential to dramatically increase the value of applications enabling collaboration fro within the existing applications. (I hope I get admitted by Sam and Greg)