# Wednesday, 30 July 2008

What is a Software Architect?

Ted Neward offers a very good description of what a Software Architect is:

"an architect is not like a construction architect, but more like the conductor of a band or symphony. Yes, the band could play without him, but at the end of the day, the band plays better with one guy coordinating the whole thing. The larger the band, the more necessary a conductor becomes. Sometimes the conductor is the same thing as the composer (and perhaps that's the most accurate analogous way to view this), in which case it's his "vision" of how the music in his head should come out in real life, and his job is to lead the performers into contributing towards that vision. Each performer has their own skills, freedom to interpret, and so on, but within the larger vision of the work."

#    Comments [0] |
# Monday, 07 April 2008

Presentations from Code Camp 9

The Boston Code Camp 9 is over and done with. It was a great two day event and kudos to Chris, Chris and all the presenters that put their time and effort into making this an excellent happening!

Here are the two presentations from the session that I did:

04-06-2008 CC9 - Building a State Machine Workflow.zip (231.61 KB)
04-06-2008 CC9 - Building applications with logic.zip (1.78 MB)
#    Comments [0] |
# Thursday, 06 March 2008

Cardspace - One ID to rule them all?

Slowly but surely more website are starting to support CardSpace. I’ve recently blogged about using Cardspace in conjunction with an OpenID from MyOpenID.com to log on to http://dev.aol.com/. Just the other day I discovered that that my hosting provider has started a beta program allowing me to sign on to my website’s control panel using CardSpace. Never one to shy away from a beta program I gave it a swirl.

After logging in to the website using my regular username/password I proceeded to my account page. Here a new button has been added ‘Bind card to account’, after clicking the button the CardSpace cardselector on my Vista machine opened up and I was allowed to select a card. Press OK and all was good. Time for a little test. Log out of the website. Then go back to the logon page and now instead of using my username/password I can use my CardSpace card to logon. And sure enough it worked!

Next came the real test. Since I also have DiscountASP hosting the website for our user group (Maine Developer Network) I tried to logon to this account using my CardSpace card. While doing so I discovered that this did not work. I could not bind the same card to two different accounts. I had to dive in a little deeper, but soon discovered this not to be a limitation of CardSpace, but rather, the website does not support multiple accounts to one card.
The way to solve this would be to implement an account selector which would become available after logging using the CardSpace card. The same would be true if DiscountASP would support OpenID. Then one ID would have to be attached to multiple accounts.

Moral of the story: We’re a long way away from the ‘one ID to rule them all’. There is more to it than replacing your username/password validation with an OpenID or CardSpace control. You will have to reconsider the relationship between user accounts and your customer.

#    Comments [0] |
# Thursday, 03 January 2008

SIP - Simple Iterative Partitions

Roger Sessions writes about an interesting concept called SIP (Simple Iterative Partitions) in this month's ObjectWatch newsletter. He says CIO's will fail their 2008 objectives because they are unable to focus on the underlying problem that IT is facing these days, which according to him is: complexity.

I've seen quite a few project fail by having too large a scope and thus becoming way too complex, leading to project failure. So reducing complexity will lead to a higher project succes rate and thus helps you reach your goals.

The example Roger uses in his newsletter is a little flawed though. Roger assumes any system of 7 (or 14) dice can be split in 7 partitions which do not influence eachother. Reality will be that the succes or failure of any of the 7 partitions will influence the succes of the others. And unlike dice there is no black/white success with IT projects. Succesful projects typically achieve somewhere between 70 to a 100% of their original goals. 1% of a missed goal in one of the 7 partitions may lead to 100% failure in another (extreme case).

I'll be doing some more reading on the SIP proposition though. More on SIP here.



Services like cingular wireless have contributed a lot to the promotion of personal web hosting. Not that web site hosting was not happening before, but never had internet advertising been this sort of a giant. Now from laymen to professional webmasters, all know about seo, about sem strategies like ppc advertising and the list can go on. The internet marketing arena is expanding everyday.

#    Comments [0] |
# Tuesday, 27 February 2007

Session material : Implementing Application Logic in .NET 2.0

Here are the powerpoint and demo code from my session about implementing application logic in .NET 2.0 at the Maine Developer Network meeting on the 27th of February 2007 in Augusta, ME.

UserManagement.zip (2.1 MB)

02-27-2007_MDN_-_Implementing_application_logic_in_.NET_2.0.zip (1.14 MB)

[Updated: Fixed download link for powerpoint]

#    Comments [0] |
# Monday, 04 December 2006

Web Service performance optimization

Good design, smart data access and optimizing the results of your web service are good way to improve performance of your web service. In an earlier post I also mentioned turning off XML schema validation. As it turn out, this may not be necessary.

A company called Stampede offers a solution for improving Web Service perfomance by offloading XML schema validation!!!

The product is actually much more comprehensive than that, read below a copy from an interesting piece of text from their website.

SOA Optimization Services

The Stampede Web 2.0 Performance Series also addresses the demands placed on the network and Web servers as a result of the proliferation of XML data and Service Oriented Architecture applications.  Stampede's client and appliance technology are now XML-aware, and add services specifically designed to optimize this environment.

  • XML Document Differencing extends our Cache Differencing technology to only transmit the actual changes in the XML document; significantly reducing the data that is transmitted
  • XML Schema Validation to validate the grammar of the XML message, and ensure the message does not contain unexpected or potentially malicious content
  • XML Content Based Routing enables routing decisions to be made based on a dynamic analysis of the XML document

XML Threat Management Services

The transaction intensive demands of Web Services, AJAX and other XML applications require bullet-proof security.  XML applications are vulnerable to maliciously corrupted data, denial of service (DoS) attacks, and intrusion attempts.  The Stampede Web 2.0 Performance Series provides hardened security features to address these issues.

  • XML Content Inspection uses parallel hardware to do symantec threat analysis on the entire XML message
  • XML Well-formedness Checking protects the host environment against non-malicious message corruption
  • XML Denial of Service (XDoS) Detection provides detection of specific XML parser attacks
  • Message Anomaly Detection provides adjustable tolerance levels for recognition of message traffic patterns and identification of packet anomalies
#    Comments [0] |
# Tuesday, 11 April 2006

SOA made easy

I love it when best practices get incorporated into tools to help you actually follow them in an easy and intuitive way. ServiceBAT, released by the Microsoft Patterns & Practices team, seems to bring a bunch of basic principle of Service Oriented Architecture into Visual Studio with a package called the Service Baseline Architecture Toolkit (ServiceBAT) project. 

Edward Bakker has a great post on his blog with demo screenshots.

The download can be found on GotDotNet. It still all very much beta!

WSCF - Schema-based Contract First Web Services by ThinkTecture is another great tool which takes a similar approach, but also improves the WSDL for your web service.

#    Comments [0] |

Rocky Lothka Has An Interesting Quote When He Talks AboutnbspObject Oriented Designs A Hrefhttpwwwtheservers

Rocky Lothka has an interesting quote when he talks about Object Oriented designs:

"Reuse leads to coupling, coupling leads to high cost, high cost leads to anger, and anger leads to the dark side"

Now this is not just true for object orientation, it also applies to (web) services. Applications that use multiple web services and thus depend on multiple external systems are 'coupled'. Although at a technical level technologies like web services make that there is no binary dependency the logical, or business dependency is still very much there.

Headaches to ponder:
- How does my app behave when the web service is unavailable?
- What is the 'business' consequense of the technical solution for your chosen solution?
- How to deal with backup and restore if multiple systems go down?
  Or if just one goes down for that matter.


#    Comments [0] |
# Tuesday, 10 January 2006

Definition for Smart Client

I was reading my way through the Internet and came across some interesting stuff about Smart Client Architecture. It seems that the definition of a Smart Client is not so clear. On the Microsoft site it says:

Smart client (n) Definition: Smart clients are easily deployed and managed client applications that provide an adaptive, responsive and rich interactive experience by leveraging local resources and intelligently connecting to distributed data sources.

But then it shows the following picture:

As you can see there are two features that are unique to a Smart Client:
a) Online/Offline support
b) Device Adaptability
Without these features a Smart Client is really nothing more than either a Thick or Thin Client.

Personally I feel that from an architectural point of view offline/online support is much more important than device adaptability. Therefore I think that the definition for a Smart Client should read:

Smart client (n) Definition: Smart clients are easily deployed and managed client applications that provide an adaptive, responsive and rich interactive experience in both an online and offline scenario, by leveraging local resources and intelligently connecting to distributed data sources.

More interesting reading on: The ServerSide.NET and Clemens Vaster's Blog.


#    Comments [0] |