Tuesday, September 23, 2008

Art of Business

I recently read Sun Tzu's "The Art of Business" and was intrigued with his approach to competition.  I took the following notes:

1. Win all without Fighting
     a. Capture your Market without Destroying it
     b. Use the "Take-All-Under-Heaven" approach leaving everything intact though
     c. The goal is relative market dominance without destroying the industry

2. Avoid Strength, Attack Weakness
     a. Strike your enemy / competitor where they least expect it
     b. Attacking weaknesses is a better use of your resources
     c. Going strength against strength is the preferred method in Western culture
     d. Attack the weakest part of your competitor's value chain
     e. Be the "first mover" to launch a preemptive attack to gain competitive advantage
     f. Find the boundaries of your competitor…capitalize on their vulnerability
     g. Attack a competitor psychologically…attack their plans
     h. To be strong everywhere is to be strong nowhere

3. Deception and Foreknowledge
     a. Maximizing the power of market information
     b. Competitive research and analysis should be deep, conducted ethically, and taken seriously
     c. Learn your competitors strengths, weaknesses, and capabilities and know the marketplace
     d. Know yourself as well as your competitors
     e. Beating the competitor involves deceiving executives about the true nature of your plans

Saturday, September 20, 2008

Scaling Strategies for ASP.NET applications

I finished reading an interesting MSDN article (http://msdn.microsoft.com/en-us/magazine/cc500561.aspx) that spoke to many of issues that enterprise application developers must face when scaling their solutions. Things like: it working just fine in the development environment but choking in Production due to the number of simultaneous users, or determining how to architect your server environment (i.e. application, web servers) for optimal performance, or what load-balancing is best for your situation, or what method should be chosen for storing Session State (with the intent of ridding your solution of affinity).
The article is long so I'll highlight some of their suggestions:

1) Use a hardware-based load-balancing solution.
2) Use SQL Server or ASP State Server to store session state.
3) Make sure file compression is turned on within IIS.
4) Turn off viewstate within your UI where it is not needed.
5) Leverage AJAX to reduce the payload on the client.
6) Use Data Caching judiciously but expect it to get complex.
7) Partition your data across databases and use replication to syncronize data.
8) Plan on your strategy growing as your application data and user base grows.

Saturday, September 06, 2008

Ajaxification

"Ajaxification", a word you won't yet find on Wikipedia, is a word that we use to describe the process of applying AJAX to a web-based applicaiton. The technology was introduced to me about 18 months or so ago and I must admit that at first I was reserved and a little hesitant to jump on board the bandwagon. So, we decided to just "test it out" with one of our apps. Well, let's just say it didn't take too long to "ajaxify" everything we'd built. Now it's an integral part of the OSS development framework and a technology that we liberally use. The benefits are huge (i.e. real-time page updates, partial page rendering for optimized UI performance, no more screen flickering and repeated full page loads, a richer user experience, and the list goes on. Dino Esposito, who is referred to by some in the software development industry as a "machine", wrote an article (http://msdn.microsoft.com/en-us/magazine/cc507641.aspx) recently discussing in more depth Single-Page Interface and AJAX Patterns.