Wednesday, March 17, 2010

Microsoft MIX10: Silverlight 4 and Windows Phone 7 full video demos

A nice 2 hours long video with demos and Scott Gu!
Though I am scrathcing my head, Silverlight 4 RC is out and Blend 4 is on its way where we have just got our hands on Silverlight 3 and blend 3, either Microsoft didn't plan it well or they are too agressive, too agile.

http://www.product-reviews.net/2010/03/16/microsoft-mix10-windows-phone-7-and-silverlight-4-video-demos-in-full/

"
"For all of you who missed Microsoft’s keynote speeches at their MIX10 event in Las Vegas this week, it is good news – as we have the entire video to show you, detailing key features for Windows Phone 7, as well as Silverlight 4.""

Monday, March 15, 2010

SharePoint 2010 | Office 2010- Live Launch event on May 12

From Microsoft Official Sharepoint Site

Watch Stephen Elop, President of the Microsoft Business Division, announce the launch of Office 2010 and SharePoint 2010 on May 12, 2010 at 11 a.m. EST. The live keynote focuses on the next wave of productivity that delivers:
  • End user productivity across the PC, phone and browser
  • IT choice and flexibility
  • A platform for developers to build innovative solutions
Join the virtual launch event with Microsoft executives, product developers, partners and customers to:
  • Find out how peers and partners are already seeing benefits to their business by leveraging the next wave of productivity.
  • Submit your questions through live Q&A.
  • Participate via blogs, tweets, social media networks, commenting, and more.
View on-demand breakout sessions showing how Office 2010 and SharePoint 2010 meet the unique challenges people and businesses are faced with today, and provide the solutions they need for tomorrow.
Save the Date: Microsoft Office + SahrePoint Launch Event
Add to your outlook

Saturday, January 23, 2010

Writing Software Requirements Specifications | A Technical Communication Community

I like to share this very nice article on writing requirement specifications, reading that was like a taking a step back and think again

Writing Software Requirements Specifications A Technical Communication Community: "Writing Software Requirements Specifications
by Donn Le Vie, Jr.
Here's the scenario: You're finishing up your latest HTML Help project...no more late nights or weekends...back to a 'normal' 50-hour work week. That's when the development team lead strolls into your office and says she just got your manager's okay for you to help the development team 'put together the functional requirements specification template for the next major project.'............."

Monday, January 18, 2010

Creating virtual image of your PC using disk2vhd and SunVirtualBox

Why do we need to create an image?

When we take the backups we normally do it by copying the data to some external storage. However, we know very well that it is not only data that is critical to us. Our complete PC, with OS and applications installed is the working environment that we need to carry on our work in addition to data. There is an easy way to create the virtual backup of your machine so that you can use that image on any machine and get your complete working environment back in no time. Also if you need to get another developer on the project you can create a standard dev machine image.

What do we need  ?

1. Microsoft Disk2vhd http://technet.microsoft.com/en-us/sysinternals/ee656415.aspx

2. Sun VirtualBox http://www.virtualbox.org/ (Recommended, required for 64 bit machines)

OR Microsoft Virtual PC http://www.microsoft.com/windows/virtual-pc/ (doesn’t support 64 bit windows)

3. External hard disk (with free space equivalent to you machines used disk space)

Steps:

1. Create Virtual image using Disk2Vhd. Either do it from command prompt or through UI. Remember to ensure that your external drive is formatted on NTFS otherwise it will not create more than 4GB file. For my 67 GB image it took around 2 hours to create the file on external drive. Also if you gave got other virtual images on your PC’s drive then better backup them manually from your machine hard disk to external hard disk in order to keep the back up image size small. I wonder if we can get an option in Disk2Vhd to select the files/folders that we want to be excluded from the image.

Command Line Usage

Disk2vhd includes command-line options that enable you to script the creation of VHDs.

Specif the volumes you want included in a snapshot by drive letter (e.g. c:) or use "*" to include all volumes.

Usage: diskvhd <[drive: [drive:]...]|[*]> <vhdfile>
Example: disk2vhd * c:\vhd\snapshot.vhd

User Interface

ee656415_Disk2vhd_1_4r(en-us,MSDN_10)

 

2. Once the image is taken then you can run Sun VirtualBox and create a new virtual machine. Select the right parameters (like the operating system of your original machine) and allocate enough RAM (at least 50% of the original machine). Now you just need to start the machine. With Sun VirtualBox you do not need to worry about creating loopback connections as we do in MS VirtualPC. As soon as your virtual machine comesup it will be able to start using the network connection of the host to access internet.

Here is the image of my own machine running on the original machine.

 

machine into machine

Thursday, June 18, 2009

Bing it or Bung it? Google it.

Yes it is beta but…..

This is in continuation of my previous post. Although Bing it is still in Beta but it really surprises me how could Microsoft release such a half cooked product. As I understand beta version means a software that has been tested internally, found stable,  worked as required and released as beta so that if some something missed from the testing team could be captured by early users.

the test,

1. Search mvc.net 1.0 in Bing and Google, search results look ok (better than Live Search), see my previous post on Google and live search comparison

2. Frequently when I search technical stuff I go straight to images to find an architectural document as ‘ a picture is worth thousand words’. So I did the same in Bing and Google and my jaw dropped – () .

3. I searched for ‘Mvc.net 1.0’. Bing came with only three images, not relevant to search, while Google came with 1470 very relevant images. Clicked on Video & news, not result found in Bing, Google came with loads of videos as well as relevant news items.

4. To make it easy , modified the search to just ‘mvc.net’ , images came in greater number but more than 90% irrelevant while Google came with about 90% relevant!

Sorry Bing,

For search engine war, Microsoft can’t win with their old strategy of ‘Early to market with bugs’ . They could win with products like Office, windows and SharePoint etc where there is not that stiff competition but taking on Google Search is something different. So I still go for ‘Google it’

Thursday, May 21, 2009

KUMO (BING), Can it take on Google?

the latest,

Microsoft is expected to show the first preview of its new search engine BING code named Kumo next week.

From very brief details available online it looks that it is going to fix a basic shortcoming (when compared with google) i.e. search results categorization. Also at the moment google shows up the results with images and videos for your search while Live Search doesn't .


Following is a brief summary from eweek.com Microsoft to Unveil Kumo, a New Search Engine

"Kumo will organize search results in an efficient way, grouping them into sub-categories, and represents an upgrade from Microsoft’s Live Search. For example, if you do a search of "Audi S8," it will feed back results categorized under "Audi S8 Parts," "Used Audi S8," "Top images for Audi S8," and "Top video for Audi S8." In theory, this will result in faster searches, sparing the community from having to sort on their own through pages of ungrouped hyperlinks. Microsoft has been testing the search engine internally for months, according to several different published reports. "


After reading the news I asked myself 'Why do I like Google?' The first immediate answer was its interface was so simple and came out with that simplicity when the other search engines home pages were loaded with tons of crap (news, weather, sports, entertainment etc).

how google search differs from live search?

I spotted few differences when I ran a search for 'asp.net mvc'. There is one serious issue with live search that could be spotted very quickly. Both Google and Live search came with similar results but the description of the search results were totally different. Where google was showing the text that was related to the search context, Live search was showing the site description instead. Of course I do not need to see the description of the site as whole, I am more interested to see if there is something promising enough for me in the site making me click and open the web page. This alone is enough for me in preferring google over Microsoft Live search, lets wait and see if they have fixed this in KUMO or not.

see yourself,








Further more, from aesthetic point of view, leaving space on left side as blank in Live search results page doesn't look good to eyes.

Monday, May 18, 2009

Software development - A to Z

A picture is worth a thousand words

Monday, November 3, 2008

WCF Performance: Don't take it for granted

Conclusion first,

Our Challenge: 300 user base, when users execute complex search queries that will go through wcf services and for that our db would take more time than usual in executing the searches then other users will experience significant delays while interacting with the system. They will get web service calls timing out but you find CPU, RAM and other hardware resources were underutilized on IIS and DB box.

Solution:

  • By default WCF can't serve more than a limited number of concurrent users or requests. OUT of box WCF comes with conservative performance settings and in most of the cases you will have to tune WCF services yourself.

the key parameters that are to be set in services config file

<serviceThrottling maxConcurrentCalls="Integer"
maxConcurrentInstances="Integer"
maxConcurrentSessions="Integer" />


Following values should give you a good performance boost, you can even go beyond 10000 but you sould perform som load testing to see if you have got enough CPU and RAM to support.

<serviceThrottling maxConcurrentCalls="3000"
maxConcurrentInstances="3000"
maxConcurrentSessions="3000" />


  • basic http bindings for WCF web services provide almost double the performance as compared to secure http bindings


MS products, ready to use:

We developed the application based on WCF web services but didn't realize that we should be thinking of tuning WCF before going into production, we took it for granted that things would go normal as they used to do with other ms products (like .net runtimes, IIS etc) simply because we did not have a very large user base but what we did not know was that WCF came out of box tuned for a very limited set of users.

the key config parameters ,

if your application is running in an environment where WCF services perform some blocking operation (because of some dependency on external processes like db or file read/write operations ) then you should consider setting the following parameters appropriately in the services config file.

<serviceThrottling maxConcurrentCalls="Integer" maxConcurrentInstances="Integer" maxConcurrentSessions="Integer" />

Me and my mate Merill worked together on this task and he was the first who detailed what we did in his blog, so instead of duplicating I refer to his post, check this nice article http://merill.net/2008/10/wcf-performance-optimization-tips.

Stay tuned,

However beside tuning WCF, I have learned another lesson. The degrade in performance might not due to a single factor but may be a combination of factors when combined give rise to the problem. Trying fixes one by one might not give you a success, leaving you scratching your head. My next blog will on how to attack a slow performing application and what to look for & where, so stay tuned.

Monday, June 30, 2008

Bridging the gap: Business and IT

We know the people who give requirements called 'Business' and the people who develop the requirements the 'Developers'. Also we know that there is another group of people who work as coordinators among these two groups and called 'Analysts'.

The challenge,

For analysts the major challenge is to make both 'business' and 'developers' happy. They deal with the people who want to stick with their guns and hard to change their opinions. Business just believe in getting whatever they want 'somehow' and Developer whatever they 'understand' to deliver is to deliver with the technology they know the best. The analysts have to master the art of communicating to both the groups in their own language.

What happens in the real world,

Analysts might come from one of two backgrounds; IT developers with strong communication and problem solving skills or Business people with strong management and understanding skills.

A successful analyst would be the person who attempts to see the picture from the other side.
Limiting the focus to the areas they know best do not deliver the results.

For instance, an analyst with background in business may attempt to force the development team to cut the crap ("methodology and processes") and deliver fast. On the other hand an analyst with expertise in IT may try to focus more on technical solution (tools and technology and methodology) than functional solution (the process and achieving the value), stressing the quality of the software.

recipe for success,

DOs
  1. Realistic
  2. Quality of software and processes does matter
  3. Business people needs solution to their business problems
  4. Developers want clarity so remove ambiguity from requirements as much as possible
  5. Business is more interested in functional solution then technical design so give them the only part they are interested in.
  6. Speedy communication is the key to success
  7. For everything, coming from developer or business, ask again and again 'Does it make sense?'
  8. Be flexible but Quality Does Matter!
  9. Learn how to understand people, deal with each person (technical or business) with the way they should be
  10. Understand the environment, the people, the context and the people. Every place is different so modify your approach but always make it goal driven.
  11. Be agile, embrace changes and updates

DON'Ts
  1. Avoid attempting to be 100% clear on requirements , business will never (and they can't) give you. Make assumptions, take decisions and move forward with an acceptable margin of error
  2. - Avoid stressing too much on technical quality when it will deliver no value, making process too difficult to follow and creating a pile of documentation which no one would be interested in reading.
  3. Don't rush to get something done with half cooked requirement. you might have to scrap the whole work and do it again. In IT delivering a software with 95% functionality working means having bugs around 5% mark, too high!.
  4. Get out of your shell, your background (IT or business) is your strength, don't make it a constraint

Just a link,

http://www.requirementssolutions.com/Business_Analysis_Skills_Test.html

Friday, June 6, 2008

Back to life

Back to business after almost two months, at work life goes as usual, another project after another,but personal life has been changed completely, got married to a beautiful girl, came with her to Aus(yes we made it together!), just got the keys of our new home (moving very soon!) and last (but not the least!) will going to have someone soon who will call me Daddy! (what a feeling!)

So what should I write now? still IT thoughts are trying to make their way into my mind but with not much success

What if we map our lives to Software life cycle? how it would look like? I always love such analogies, they give some interesting knowledge bits, let you look at life from a different angle

We born to our parents,
* software born to business users and development team,

We grow, learn, improve, medical problems, see doctor, cry, laugh,parents feel proud
* software gets rich in feature, get defects (but they don't cry!), eases the pain of the users (but they don't laugh!), see technical support guys, get more stable and stable, business user and developers feel proud(not always though :D )

We socialise, make friends, help others, get benefited from others, create problems for others,
* software starts interacting with other software (ok I mean web services in today's term), relationships established, provide information to other systems, share data, share knowledge, sometimes crash the other systems too, but they don't feel!

We get threats, concerned for our security, financial struggle, move to other places, buy new homes, change lifestyles
* software attacked by viruses, spyware, malware ..., move from one server to another, behind another firewall, get new operating system, new features, work more efficiently (but they never pay themselves, their parents (business or consultants) always pay for them )

We plan our life, start family, Kids, travel and tours, family holidays,
* software , hmmm, sorry they always work, no such luxury , poor dumb systems, they need some AI to think, how crap their lives are!

well, ultimately we die, remembered or forgotten
* software, they die too, replaced by new systems and forgotten,

Conclusion:
I don't want to be a software, I want to be remain human, establish my life but want to work only part of a day not 24x7, enjoy my life, laugh and yes wanna cry too, I want to be remembered, I don't want to be a software

see u soon with some real IT stuff!

Friday, March 28, 2008

Architecture Journal Reader

Check this out, "The Architecture Journal Reader" a cool reader for viewing magazine articles.

Recently I have stopped receiving architecture journal issues at home and was desperate to restore the supply-line and then found this reader as a pleasant surprise. Personally I don't like reading stuff online, particularly when you have to read an article as tall as Eiffel tower but this reader eases the pain. Page scrolling is great and you can take notes too.

I wish Microsoft would publish it as a tool that could load contents from different sources. Thinking wildly, it could have some functionality that make a web article/URL appear in paper magazine article format.

though I will still miss my hard copy ( can't read them on train!, can't spill my coffee on ) :(

image

Thursday, March 13, 2008

Blogging Tips - Get the most out of your blog

There is a cool blog post by Dave "Tweaking your Blogger blog" that motivated me to share my own thoughts on blogging.

I will add some of my own tips, that I have learned over the past one year or so since I started blogging.

1.Think who will be reading your blog.

For me, I see my blog readers falling in one of two groups. The first group is of the people I know and they get my blog feeds and the other group of the people finds my blog while searching Google (oh yeah I mean Internet, Google is now a synonym to Internet search, something that I do not like, self-prophecy effect, more on this sometime later). So for the second group of people (net searchers) see if you can provide some background information and summary/conclusions. Such additional information might be obvious for first group but it will certainly help others in getting the message right.

2.Write in small paragraphs,

Personally I would close the window if I visit a blog/article with the page long paragraphs. With very less time available to us, it is really hard to read each and every line on such pages. Most of the times we will already have some partial information on the topic and will only be interested in picking up the right pieces from the blog. Breaking down your blog in small para and putting meaning full para headings will make your blog readers quickly pick the relevant information.

3.Write on latest technologies/trends

Attempt to stay ahead of the curve and while browsing net in your free time look what's new and related to your blog. Learn yourself and then share it with others. It is a great way of learning, by writing it down what you have learned. You will also get more hits on such posts. Also if you have some hard found solution for one of the problems you recently faced then that makes it a strong candidate for a blog.

4. Avoid posting your personal activities (for professionals)

Unless the topic of your blog your own/family life avoid posting posts like ' I went to the dinner", "I had great holidays"... and then describing your experience in lengths. Keep your blog focused. It is hard to get someone read your blog so don't bore them with something they are not interested. I mean who cares what I did on the weekend? Few sentences for fun are fine but If you need to put the details then better setup a separate blog for such posts. Don't make your blog a junkyard, full of stuff that is hardly useful for someone.

5. See if you can break lengthy articles into parts

That will help in two ways. First when you plan to write on something in details, you plan , plan and plan and wait for enough time to write it and then you never get chance. Second it will also help the readers in consuming it and they will come back for the next parts if they find it interesting. Another way of writing such lengthy articles is to use a blog writer, I prefer 'Windows Live Writer', it allows me to write long articles in parts, whenever I find sometime I will open up my draft post and add more.

6. Socialising on net, read other people's blog and develop your circle

Almost everyone is aware of the new ways socialising on net. So read the other people's blogs, leave comments, discuss with them topics of interest and increase your network. I love my personalised page http://www.google.com/ig , it allows me to have feeds from a number of blog posts on my home page and also is full of goodies (like feeds from CNET, technology news and funny Reuters:Oddly Enough) that will keep you update on latest trend and technologies.

7. Do some pre-reading

To make sure whatever you are writing is authentic and makes sense, don't write on simply hearing some rumours. Verify the information you are putting on your blog is correct and will provide value to the reader. I prefer to Google and verify the contents of my blog before posting it.

8. Be informal

You are not writing a report for your client, so relax and have a friendly tone in your blogs. Attempt to simulate as if you were talking to your close friend. It really makes blog interesting and fun reading.

9. Use your spare time to think about blog

Do you drive too far to reach work? do you take long train/bus rides? If you spend your time in looking outside window or taking a nap then see if you can think of something interesting for your blog. If you carry laptop/pda then you can blog then and there.

10. Blog regularly

Avoid disappearing from your blog for long periods, blog regularly, even one para each week/fortnightly would make you appear a serious a blogger (and you want to be a serious blogger!) .

Tuesday, March 4, 2008

SOA Maturity Model: Deep inside SOA

Again I have a book to recommend for reading if you need to understand/revise the philosophy of SOA and get some practical guidelines on implementing Service Oriented Architecture in your organisation.

SOA concept is quite old now but mostly we face challenges in implementing it successfully.

The basic issue that we face is when to start and where to stop or where to start and when to stop.

Some people get it confused with web services and they will build a whole stack of web services, every function within an application will be exposed as a web service, some will redesign the applications from scratch using some SOA framework and some will buy expensive tools to expose business functions within some legacy existing applications .

No doubt there is a lot of confusion out there. Even some people who have a good understanding of SOA find it really difficult to map it to a real business problem/environment because every place is different and SOA initiative required to be largely context driven.

For me, the major challenge is to decide if some project qualifies for SOA or not. The major issue is the time that we invest in developing SOA ready applications. I have seen the places where development teams follow strict standards, processes and develop highly reusable applications (or components) at the cost of slow response time to new business requests and changes. Sometimes the management gets so frustrated (as I witness a number of times) they themselves ask to compromise the quality and just deliver the solution because that's what the business demands. Sometimes it works (where we really need a throw away application) but many times it backfires (where we need a stable system, an LOB application).

So how can we achieve success with SOA?

The first basic thing is that the developers alone can not bring SOA revolution in an organisation. The SOA implementation must occur both in functional areas (business units/departments) as well as in technical areas. Business processes indicates what "functional services" can become the candidates of reusability and then IT attempts to model and deliver the systems that would map the interactions in real business world. Also studying business models will help understanding what services we might need and what not.

the book,

It is difficult to explain all here, therefore, I recommend reading this book SOA in the Real World which is a nice book and starts from the basics, takes you through the practical steps for a successful SOA implementation and talks about Enterprise Service Oriented Maturity Model (ESOMM) in good details. This book is free to download from Microsoft.

Happy Reading.

A Cool Utility:

UltraExplorer is designed to be the ultimate File Manager for Microsoft Windows.

http://www.download.com/UltraExplorer/3000-2248_4-10702384.html?tag=dl-blog

Friday, February 22, 2008

MS Performance Point connection issue

I recently encountered a problem that was resolved after some hit and trial efforts. Since I couldn't find the solution on google so I thought putting up it here would help some one using Performance Point and .Net 3.5

1. Installed and configured Performance Point server, no issues

2. Setup and published dashbaords

3. Didn't use for some time and in the meantime Installed Visual Studio 2008 and .Net 3.5

4. Recently tried to run the performance point, it failed to conenct to the database server, gave following error message

" unable to connect to the specified server"

5. Tested SQL db isntances and connectivity but everything was perfect and fully accessible from elsewhere

6. Tried connecting to to Performance Point Montioring Server (File->Options->Server->Connect), didn't' work either, same error message

7. Through IIS, brought up the web services page (http://localhost/WebService/PmService.asmx). There was the error message I was looking for, the web service could not run as it failed to load system.web.extension. The config file had version=1.0.61025.0 and although I had ver 1.1, 2, 3 and 3.5 of .net framework installed still it could not load the right dll.

8. I manually edited the web config and replaced all instances of version=1.0.61025.0 with Version=3.5.0.0. That's it, it started working again.

9. I had to do the same for http://localhost/Preview/web.config to bring up the preview site.

Thanks for your help Nick, the performance point guru.

Check Nick's post on similar database connectivity issue, if this is not the issue you are facing
http://nickbarclay.blogspot.com/2007/11/pps-data-source-connection-problems.html

Monday, February 18, 2008

Deep inside Agile Development

A nice article,

I have just read a fantastic article written by Ted Neward on pragmatic agile development, from an architectural prespective. I must say he beautifully put together the philosphy of agile development, core issues that we face and what exactly it means by agile development when it comes to delivery of the solution. read it here

http://msdn2.microsoft.com/en-au/architecture/bb892770.aspx


and I love his conclusion,

"Call it what you will, the basic keys to successful software remain the same: good people, whether they’re developers or managers; good process, whether it’s lightweight or rigorous; a good product, whether it’s detailed in a document or sketched on 3x5 cards; and good technology, whether it’s COBOL or something a bit more modern. Many shops do one thing right, some do two or three, but the truly spectacular successes get all four right, and the results…well, they speak for themselves, and need no buzzword to define them."

and the book,

the article reminded me of the book, Rapid Development (well how could I forget that book!) that laid the fondation stone of my software engineering concepts when I studied it at Uni in 1997. Its third chapter "Classical Mistakes" is fantastic and the list should be put on the walls of a software house as we tend to forget and commit such classical mistakes again and again. http://stevemcconnell.com/rdenum.htm

happy reading

Monday, January 21, 2008

How long Vista's defence could last? - 5 min

Yes, If you need to break into Windows Vista, all you need are 5 minutes. That's how long it took me to manipulate vista user accounts and set their passwords to blank, from outside windows vista. No, I am not a hacker, neither do I have an IQ level equal to Einstein and indeed that's a most surprising part, a kid with some expertise on searching Google can easily do this.

what if you forget your vista password?

Last weekend my friend contacted me for some help. His son changed his windows vista password and forgot that. He asked me if there is some way to restore that. My flat answer was 'No' and that if there were really some way to hack then it was going to be a climbing mount everest for a non-hacker.
I was confident that 'there must be no easy way' because I know how much noise now Microsoft makes when it comes to security. I told him now Microsoft is real serious about security and they must have implemented some rock solid security (at lease for some to-be-hacker). But my friend insisted if I could try something and I agreed and took his laptop for some weekend exploration (something that I had abandoned for some time, fixing friends/relatives machines).

Microsoft is Serious about security,hmmm, really?

To be honest whatever happened on the weekend left me scratching my head ' Is Microsoft really serious about security?'. I am not going to explain what exactly I did to break into vista (so that this blog should not be a first step guide for to-be-hackers) but will describe briefly.

so what did I do exactly ?

In order to break into vista, an external program (found from google with step by step guide and not at some hackers heaven) that knows how to access NTFS system can easily give you access to all windows accounts and let you set all the properties that you could set through windows GUI. So not only I managed to reset the user accounts' passwords but also I enabled the Administrator account with blank password (which is by default disabled in windows). The whole process completed within 5 minutes and then when I restarted the laptop I had access to all windows accounts, right in front of me with blank passwords.

implications,

Without going into debate of how it was possible, I am more interested in thinking what could that mean. I am really concerned about the security of personal data in PCs, particularly laptops. As others do, my own laptop is full of personal data, from credit card details to ebay accounts.
Now I can't rely on windows userid/pwd security anymore. A hacker with such a program on a disk, that I used, can easily break any windows security (even windows 2003) within minutes. Now either I use some specialised software to protect my data or explore what other advanced options are available with in windows (hard to trust now).

So if I am right in my conclusions, you better watch your back when it comes to PC security.

Tuesday, December 11, 2007

SOA everywhere - Delivery nowhere

Well, the title of this post is bit exaggerated, SOA is definitely good but implementation is hard and a number of times we end up in creating a mess, took ages to develop but failed to deliver success.

What is good about SOA?

As we know when we say SOA we mean that we need something that would be driven from business model and functions, would reuse existing functionalities with minimal impact on existing applications and making them interoperable with other systems so that we could save time in redevelopment in future.

Also when we develop new systems for future we attempt to make them 'SOA Ready' i.e. designed in a way that any business function can be made available to other systems/consumers without or minimal coding. Of course the idea is fascinating and it does work.

so what doesn't work?

Here the problem I want to address is that having a vision of SOA when technical people sit together and design a framework + lifecycle for the entire business apps and then if they force all development work to follow the same framework for all new developments in order to have consistent development practices, SOA ready applications, potential long term time saving in new developments, etc, there are some serious issues arise from application delivery perspective, particularly slow delivery of solution due to huge investment of efforts upfront for making applications 'SOA Ready'.

But do we really get all those benefits in future? The answer is context driven i.e. it may be or not depending upon the nature of business and development projects. But what I have seen a number of times you can not apply one solution to all your problems.

Take this example, you have got a very nice framework, a framework labelled as SOA based framework, with all nice components, this block, that service, this interface, that data contract and this and that etc. Now you have got a small application to develop for a small group of users in your environment. Would you go for an SOA ready application?

The mistake, in my opinion, people make is that they will go straight after a SOA based architecture while in principle the application is not a right fit for SOA. They do it becuase it is the standard architecture and practice of the organisation now. As a result, developers spend a lot of time in fulfilling framework requirements by developing interfaces, layers, services etc with very less probability of any reusability in future.

so what to do?

In my opinion whenever we design a SOA ready framework we have to consider following points

1. First SOA based architecture should not be a mandatory for all new applications to follow

2. Every application will have to be evaluated to see if there is any real benefit in developing it as an SOA ready application. This depends a lot on how business processes work and not the technology. If the new application is for a small group of users, who are working in isolation with less probability of exposing their functions as services, then we can use very simple architecture and forget complex SOA based architecture.

3. Also, the framework should have pre-defined cut down versions for medium and small applications with lesser number of layers/services/interfaces in order to reduce development overheads. The application will be judged and right model should be picked and applied

4. If using agile methodology, then future reusability can be left over to refactoring. What I mean is that instead of investing time today, leave it to the time when it is required to expose its services and at that time refactor the application and deploy it as an SOA service.

5. As a general rule core systems should be strong candidates of SOA style development. For example, customers database, core sales operations, main financial systems etc. While the systems like some feedback capturing application, some monthly computing application with short expected life span (2-4 years) etc are bad candidates and should be developed in a quick and easy way.

in summary,

We should focus more on delivery without investing too much time in provisions for 'future reusability scenarios'. For instance, once it happened to me that my team put a lot of effort in developing an application with SOA based architecture and ending up with the situation where business users discarded the application, never went live as the business owner of the application had left the organisation and the new owner did not see any real benefit in the application. All our efforts for a 'highly flexible and reusable service based SOA style' application go in vein.

question to ask yourself,

So next time you get an application to develop, ask yourself, does it really need to be developed as an SOA application?

Tuesday, November 6, 2007

The fear factor

Just a couple of quotes to start with

"Fear makes the wolf bigger than he is."---- German Proverb "

“Each time we face our fear, we gain strength, courage, and confidence in the doing.”


The above quotes just talk about fear factor in general, but I will go and talk about fear factor in software development.

You fear => You Fail,

This is an observation that I have made consistently in my career, if you fear then you will fail, and recently I have observed the same again, making me write this blog. Doesn' t matter whatever technical skills we have got but too much fear of uncertainty can spoil our hard work and progress.


By nature we tend to avoid taking risks, we attempt to follow a path with higher level of certainty and when it comes to software development then we translate this in having well defined requirements, using tested and proven technology, following well practised and adopted development life cycles etc. Particularly if we have spent working years and years in an environment following typical water fall life cycle models. So when we move from such an environment to a dynamic environment where all variables 'requirements', 'technology', 'timelines' and 'resources' continuously changing, we start fearing

- I can't suggest this technology, what if we fail?
- I can't develop this feature, what if doesn't provide value to business
- I have to commit to the deadline provided by my manager, otherwise....
- I have to provide all what my users/business ask, otherwise....
- I have to follow the current practices and procedures religiously and rigorously, otherwise...
- I have to do all documentation
- I am uncertain about requirements, I have to wait and get all clarifications
- I have to save my back
- I could be kicked out if I fail

the list goes on


Agilists don't fear,


One of the core characteristic of some agile development life cycle is that we try to get rid of the fear factor i.e. Agilisits don't fear (but they are not stupid too!). They take the decision early on, they believe that the total cost of pending your decisions too long will be higher than making a wrong decision (among other correct decisions) and rectifying it later. To illustrate this just read this fictitious challenge


A fictitious challenge,

Task: You have to reach your destination 'City A' as soon as possible. You have got two options.

1. Take the safe road that will take 24 hours to get you there.
2. Take a short off road trip, that will take you there in 4 hours.

What would you do?

A risk avoiding person will take the first option. Spending more time and money in reaching the destination, fearing the second option will have unforeseen risks and he will face a lot of trouble

An agilist will take the option 2. BUT as I said Agilists (supposedly and should be) not stupid. He will get a 4WD, with spare tyres, GPS device and a satellite phone, other tools and equipment necessary to rescue himself if something goes wrong and then begin the journey.

well, hmmm...,

You don't agree?? What if this and what if that...? Well it just a fictitious scenario and yes if reaching the destination is a 'do or die' sort of thing I myself will take option 1. But in general I should go for option 2.


The agilist might fail reaching the destination but if he takes such decision 10 times (and are used to taking such challenges and well trained on using his tools) he will probably reach the destination 8-9 times and when he fails to reach the destination he might have to come back and take the safe route, 1-2 times. The point is that the overall cost of failures would be less than the cost of late decisions and lengthy processing times.

So how we map it to software development?

In typical agile development we train ourselves

on techniques like

- User stories
- Automated unit testing
- Continuous integration
- Refactoring
- Iterative development
- Just enough documentation
- Strong communication
-etc etc

using tools

- Nunit/Junit
- Cruise control
- Codegenerators like Codesmith
- Resharper
- Task management tools that support iterative development (JIRA, Gemini, MS TFS)
- communication tools
- etc etc


The message,

The message I want to convey is that when you develop software in today's world, accept challenges and prepare yourself, take initiatives and get ready to mitigate the risks. Take stand on technical and quality grounds. Ask why this way and not that way. don't accept something in the environment just because it was defined in the past.

Challenge yours and others decisions. If you BELIEVE in something then stick to it and make other people change their course of action.

It is better to be kicked out of you organisation on taking stand on quality rather than being kicked out because of not taking initiative and appearing as a dumb person.



Friday, October 19, 2007

It is patent nonsense

I like to patent

- the way I walk, smile, eat and talk

- the way I carry my bag, mow my lawn, arrange my house, clean my house,

- the way I arrange my work desk, run my meetings, conduct interviews,


strange? keep reading

- the way I create a web page, name it, upload it,

- the way I sell products on my web page

- the way I wrap up gifts, Sorry already patented

- the way my customers Click and Buy, Sorry you can't do this too, it has been patented by Amazon
but thanks to a kiwi, not any more


I am writing all this to vent my frustration over these ridiculous patent laws. Probably you might have heard about the recent news story when Amazon has been successfully challenged for its 1-Click patent by a NewZealender. It is some great news. I read about this some time ago and couldn't believe how clicking buttons in some sequence on a web page could be patented? but that was done for Amazon. Not only that, Amazon was also making money from the web sites who were using the similar process, well it is law, they are the patent holders.

Another ridiculous example is 'Buy it now' button on eBay, yes it is patent by someone and that means on my own web site I can't name a button/functionality similar to "Buy it Now". How silly, then what should we do for 'Submit it Now', Check-out it Now', 'Close it Now', 'Cancel it Now', 'Sing-up now' ?? Can I get them patented for me, if some one hasn't already got them?

I am not an expert on laws, but I have done some research on net to understand this drama.
Patent laws originated to protect inventions so that someone investing money in some new technology should be able to get return on his investment/achievement before others start copying the technology, fair enough, no issues. The core problem is that these laws were primarily designed for mechanical (and later electrical/electronics) inventions. With the advent of software the same laws were used to protect software process and methods and here we ran into trouble. The software world is whole different world and patent laws have been misused by those were the first in getting the patent for some simple things/processes (which a layman can think of when faces the similar problem)

If you search net , you will find that there is a lot of noice from people protesting such misuse but what is not good is I couldn't find if there were some serious steps taken by Governments (well basically US Govt, there is one hope) to alter the laws. (In EU first it was recommended and then blocked by Parliament ). Also the bad thing about Amazon case is that the lawsuit against Amazon was won not on logical basis but on the fact that similar process exist before Amazon got it patented. What it means is that if someone could prove that I was the one who first used some process similar to 1-Click then he/she will have the patent, which I object. This is some common sense, the 1-Click sort of thing is not an invention , it shouldn't be get patented.

Few interesting comments against patent laws for software, from wikipedia

Bill Gates (Microsoft) 1991

Internal memo

"If people had understood how patents would be granted when most of today's ideas were invented and had taken out patents, the industry would be at a complete standstill today...The solution is patenting as much as we can. A future startup with no patents of its own will be forced to pay whatever price the giants choose to impose. That price might be high. Established companies have an interest in excluding future competitors."

(though Gates had slightly different view in 2005, when Microsoft needed patent laws)


Oracle Corporation 1994

Submission to USPTO

"Oracle Corporation opposes the patentability of software. The Company believes that existing copyright law and available trade secret protections, as opposed to patent law, are better suited to protecting computer software developments..."

Few more ridiculous patents

Someone claiming 'Most ridiculous patent application ever"

Net2Phone Suing Skype


Microsoft Granted Patent for Creating Insecure Software

I hope when I do some web development as my hobby I won't be getting some legal notice from someone sitting in another corner of the world 'hey you have just violated my patent', fingers crossed,

Wednesday, October 17, 2007

Ruby on Rails VS ASP.Net MVC

Ruby on rails is on track for getting more popularity among casual as well as professional developers when they need to develop and release a small- medium size application rapidly. I myself find it very interesting and have the opinion that it is a good innovation, helping the developers avoiding the complexities of ASP.Net or Java based structures where they mostly need to develop apps from scratch with lot of plugging.

Now it is more interesting to read about the ASP.NET MVC framework, going to be released in the first half next year and also will be a part of .Net 3.5 SP1 . Ruby on Rails favors convention over configuration (what does it mean? less crap more productivity). Now it seems Microsoft has realised this and they have come up with something that could counter people moving to ruby on rails by providing something that ruby on rails provide i.e. MVC framework to develop the application. I would keep on watching this (some sort of ) contest now with interest. Frankly, I myself recently downloaded ruby on rails to develop an application over the weekend to quickly implement my idea rather than starting development from scratch in asp.net. Now with this MVC thing ASP.Net is getting my attention again for RAD and I suspect there may be something more in pipeline from Microsoft. Stay tuned!

Resources:
(3 nice videos on ruby on rails to give you a quick overview)

plus another video tutorial


Friday, October 5, 2007

Software + Services <> SaaS & => Confusion

I am just writing this blog to draw a line between two different terms and jargon. That is if Software + Services and Saas (Software as a Service) mean the same thing?. I confess when I first heard this term Software + services I took it as a synonym to SaaS but Software + Services is a bit different. The first obvious difference is that Microsoft is an advocate of Software + Service :). (just like they did it with xml, web services & infamous passports).

The picture became a bit clearer when I read a recent article Profile: Ray Ozzie (chief software architect Microsoft) in architecture journal. (a good magazine to subscribe for free with no advertisement crap)

In my understanding SaaS represents selling the software as a web based service (or application) and thus the customers don't need to buy the full licenses of products and they pay only for what they use. Also it allows cutting cost in application maintenance as enterprises does not require to install and host the applications themselves, plus this benefit and that benefit. We have some successful stories on that like salesforce.com.

Microsoft thinks a bit differently, arguing there may be some scenarios when it is not entirely possible to market a software totally as a service. It questions the assumptions like having a high bandwidth connection would always be available to the users. It comes with another term Software + Services. In nutshell, you have your data stored in Internet cloud,may be exposed through web pages but also accessible to client applications running on PCs, PDAs/Smart phones with local data caching capabilities utilizing the device capabilities to process and present the information. So in way it is an extension of SaaS. Examples are Xboxlive, itunes etc.

I could save my time in elaborating it more in details as I found a very nice blog entry, almost talking the same that I had to write. Check this out. Software + Services = ?

See you next time.

Monday, September 17, 2007

C# - open source

A useful link for C# developers, looking for some open source solution in C#
http://csharp-source.net/

Thanks to Dave, he pointed me there when I was looking for some open source charting soluition for .net

Friday, August 31, 2007

OBA - Architecture or another Marketecture?

OBA: the concept is not new,



At the recent Tech-ed 07 in Gold Coast, there were quite few sessions on Office business applications. Microsoft's idea of Office Business Applications (OBAs) is not that new. It is new from Microsoft but it exists before in some shape from some other vendors like IBM's lotus notes that allows embedding application interfaces in email clients and integrating them with the database.

[Side note: Though I personally believe a number of times Microsoft copied a technology/trend but they master it with such perfection that original inventor got left behind (like Netscape), probably because they can afford huge investments in technology. Check this interesting news item where Sony is complaining about this tactic though what we see in a tight competitive market such copying is being done by almost all top vendors http://arstechnica.com/news.ars/post/20060628-7154.html ]

Feedback on OBA,


Coming back to OBA, I have received a mixed feedback from the developers community. Critics believe that it is more about marketing Microsoft Office Suite when today they are facing real threats from open source and free applications providers, like Google docs, Zoho Officiall Suite, Open Office etc. Once you develop OBAs, you are actually locking your users with Microsoft Office, guaranteeing continue revenue streams for Microsoft. Also some people who tried developing OBAs found a lot of difficulties in implementing real world scenarios and they say OBAs look good in a Microsoft presentation but not in a real world.

I will come back to these issues later but first I will talk about what OBAs are and what they can do for us.


What OBAs can do for us?


OBAs are built around the idea that why do we need a user to get out of their daily-use work tools (like email app, word processor, spreadsheet etc where user spends most of their time) and then log in to another LOB (line of Business) application, perform some business operation and then go back to their work tools to communicate/share the results to some other worker for further processing. OBAs are to be built inside these work tools and integrated with business logic and back-end databases. Web services + Sharepoint provide an ideal mechanism for integration. With office 2007, a developer can modify the user interface of office applications (outlook, excel etc), develop application interface and integrate it in office tools allowing users to enter and share the data then and there.

Few imaginary scenarios where OBA might help us,

1. A sales person gets an email from a customer asking about some new product and sales person wonders how much business do we do with customer?
2. A business analyst doing market analysis in Excel, needs more business data from an existing system
3. A sales person preparing a quote for a customer, to be sent through email, needs customer and product information, from two different systems, to fit in the email template and then needs to save the quote information to a database for future follow-up

These scenarios are commonly seen at work place.

So how can OBAs help?


1. Modifying user's outlook interface, enabling him to fetch the customer profile on a single click
2. Using excel services,business analyst can fetch data directly into his spreadsheet and perform further analysis
3. A user can fetch the product information in predefined format and upon sending quote to customer, outlook automatically parse the email and stores the quote data inside a sales application database for future reference

Check this case study http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=201115


OBA Tools,


Microsoft VSTO (Visual Studio Tools for MS Office System), Sharepoint portal server 2007 enables the developer to develop OBAs and though office 2003 provides some functionality to host OBA interfaces, office 2007 is the right tool to be used to fully utilise OBAs powers, through its new set of features like custom task panes, ribbon extensibility, the Business Data Catalog, Open XML file formats, and many others..



OBA Marketecture?



Now coming back to the discussion that is OBA another Marketecture? I personally believe that OBAs will provide some real business value for the users and it will cut their time they spend in operating numerous business applications. From development point of view, if your applications expose business logic through web services then the good thing is that you will be able to reuse existing services and cut new development times. With a lot lesser time you can integrate your existing LOBs with Office 2007. Such interfaces will decrease the user dependencies over system generated reports where they can them self pull the required data and prepare the reports in the way they like, using word,excel or outlook.


Issues with OBA,


One of the main issue I see is the maintenance of the OBAs. I fear a mushroom growth of OBAs in an enterprise if OBA initiative is not planned well. Development teams should be cautious in jumping to the OBA development. In an enterprise, this should be done as part of some development framework so that the application interfaces developed should not duplicate the functionalities, developed following some discipline and will be easy to be maintained and replaceable in future.

Thinking about locking up the user with MS Office issue, I personally feel, as a fan of open source development, this won't be good for overall IT industry. I know today how difficult it is for IBM Lotus notes users to migrate to MS Exchange, simply because over the times they would have got a whole range of applications built using Lotus notes. I won't like to see similar thing happening with Office in future. Having said that, I don't see Microsoft is wrong on this strategy as, for the time being, I see it is a win-win model where both Microsoft and user will get benefited. We will have to wait for an year or so to see what other competitors bring to the market.

OBA Resources,



There are few good Internet resources to find more information


Lewis Levin on Office Business Applications : http://channel9.msdn.com/showpost.aspx?postid=203534
Building better OBAs http://msdn2.microsoft.com/en-us/library/Aa905315.aspx


Case study http://msdn2.microsoft.com/en-us/library/Bb245765.aspx


Architectural talk http://drowningintechnicaldebt.com/blogs/dennisbottjer/archive/2007/05/24/Office-Business-Applications-Architecture-Talk-with-Colin-Cole.aspx


VSTO Tools blog http://blogs.msdn.com/vsto2/

Thursday, August 30, 2007

bits and pieces - from Tech.Ed 07



It's been quite a while since I attended recent teched 07 in Gold Coast and I thought to put some memories of the conference here before I forget them.

Overall impression,
A nice experience, very well organised with a balance of knowledge + fun, good speakers and plenty to learn at one's own pace through sessions or hands-on labs, provided opportunity for networking and catching up with some old fellows + finding what others are doing/thinking in the industry ........

New things coming,
Well not exactly new as most of the things presented there were already out there in the market or at lteast known. The things I pick were

  1. Office Business Applications (OBA) Wave, Microsoft looks real serious about that

  2. further growth of SaaS trend (Software As a Service),

  3. Architectures moving furhter away from dedicated synchronous calls to asynchronous messages, like system A sends a message to B, B to C and C to D and then D replies to B and A, invloving C whenver required => Mesh of messages (thinking of WCF, WWF ?)
  4. .Net 3.5 and C# 3.0 with loads of features
  5. Establishment of SDC (Solution Development Centre) at Microsoft in Sydney where Microsoft will develop the solutions with its partners, with the support of an ideal environment equipped with right machines, software and Microsoft Technical expertise to speed up the development and bring the innovative solutions. http://www.microsoft.com/australia/services/consulting/sdc.mspx

An interesting debate,

After attending a session on "using the web to develop connected systems" which talked about an idea of using http infrastructure and messages (like 404 etc) to run communication between layers (UI, Middle tier etc) of an enterprise application, I really did not like that session and then had an interesting & hot debate with my collegue Fernando with Mundeep as a mediator :D, Fernando's argument was (if my memory is working)
  1. This was some new idea and really simple and workable, a unqiue and different session at tech-ed where all other things were routine but this one was innovative thing
my argument was



  1. It could be a nice idea for a lab or close group discussion not for tech-ed which is not a research conference and we have very limited sessions to attend

  2. Personally, We have already got enough crap on internet, we have hardly managed to come to some standards like Web servies and WS-* and please no more crap on a crappy infrastructure

and then my last argument gave rise to another inconclusive debate between us on scrapping of the internet as it was not designed for the entire global family or should we wait and it is bascially evolving? { http://www.livescience.com/technology/070413_ap_new_internet.html } I took the stand I would love to scrap it because we are basically doing workarounds to overcome the limitations but I know practically it is not possible so we have to live with it, Fernando's opinion was nothing can be built in one day and it is basically going through evolution and no need to scrap it. At the end it was good mental exercise :)



Some interesting junk info: where will our data live?

Here =>


This football stadium size structure has 9 floors, 6 with storage disks & disks & disks and 3 floors with cooling fans, it belongs to Microsoft where our data (hotmail etc) will be stored.
The interesting part is its location, it is in middle of no-where, it is located in west Washington, near-by a Dam, ? Why? Because this is the place where electricity is cheapest in USA, the big players (Microsoft, yahoo, Google) believe that whoever provides the cheapest data storage would win the war of free internet spaces,
But the most interesting part is the right top corner of the bigger picture and right bottom (not visible). The top corner building belongs to Yahoo and towards right Google is constructing its own building :) They are keeping an eye on each other,

More Junk,
How does Microsoft come with its codenames? For Visual studio they looked for areas near Seattle and chosen the names like Everett, Whidbey, Orcas island and now Rosario. check this interesting blog for more detail http://blogs.msdn.com/bharry/archive/2006/12/20/what-s-in-a-code-name.aspx

Friday, July 13, 2007

Agile Toolbox

How many times in our environment do we find the developers not following the right processes? Sometimes it creates serious issues, affects the software quality, adds to team frustration etc.

So beside designing and developing development processes it is equally important to ensure they processes have been adopted and practised regularly. There are few tools available that let you enforce the processes in your environment. The objective of these tools is too provide one window solution where team members can collaborate and follow the (customisable ) life cycle model, project managers can manage, developer and tester can work together, and that can be used as a central repository of the documents etc.

1. RallyDev http://www.rallydev.com/
A very nice tool, offers ajax enabled dashboard/interface to plan and monitor releases and iteration, allows you to follow either some Agile or RUP development methodology and automatically fetches the unit test results (coming from some automated unit testing tool). a demo can be viewed on http://www.rallydev.com/Rally_14_logofix.html

2. Collabnet : http://www.collab.net/products/enterprise_edition/.
Free for 15 users, claims to have more than 1 million users and they have recently acquired sourceforge. It primarily targets the companies with team members located at different geographical locations but of course it can be used for a consulting or internal IT environment where multiple projects run in parallel. You can check their live demos on their web site

3. VisionOne: http://www.versionone.com/
Another product similar to RallyDev but interface is not that impressive. check the demo here
http://www.versionone.com/flashtour/VersionOne_Product_Tour.htm. Also they offer a tool they call 'AgileToolEvaluator' which basically is a checklist of the items you should be looking for in an Agile tool. though it is good but again it is from versionone so the checklist lists the items that versionone tool supports. So you can use it but also consider your environment specific requirements.

There is another buyer's guide from 'Forrester' which costs US$279 and help you in identifying your requirements and what you can find out of the tools available. find it there http://www.forrester.com/Research/Document/Excerpt/0,7211,34977,00.html

There is another good article http://alistair.cockburn.us/index.php/What_the_agile_toolbox_contains

One more tool, available for free, but for those who are following XP. http://xplanner.org/

Next time (or sometime in future) I will talk about independent tools and utilities and how those could be used in a combination to follow some agile process.