<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tanzim Saqib</title>
	<atom:link href="http://tanzimsaqib.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tanzimsaqib.com</link>
	<description>on software for everybody</description>
	<lastBuildDate>Fri, 20 Apr 2012 17:43:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>5 Usages of Near Field Communication (NFC)</title>
		<link>http://tanzimsaqib.com/526/5-usages-of-near-field-communication-nfc/</link>
		<comments>http://tanzimsaqib.com/526/5-usages-of-near-field-communication-nfc/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 16:36:55 +0000</pubDate>
		<dc:creator>TanzimSaqib</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[near field communication]]></category>
		<category><![CDATA[nfc]]></category>
		<category><![CDATA[o2]]></category>
		<category><![CDATA[payment]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://tanzimsaqib.com/?p=526</guid>
		<description><![CDATA[NFC is suddenly a buzz, whereas we already have Bluetooth and IrDA (Infrared Data Association) technologies for decades for similar device-to-device communication. NFC is becoming an integral part of the all latest and upcoming smart phones such as Nexus S, &#8230; <a href="http://tanzimsaqib.com/526/5-usages-of-near-field-communication-nfc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>NFC is suddenly a buzz, whereas we already have Bluetooth and IrDA (Infrared Data Association) technologies for decades for similar device-to-device communication. NFC is becoming an integral part of the all latest and upcoming smart phones such as Nexus S, Galaxy S, Some Motorola Devices, and Purportedly, iPhone 5. It is a way of communication that uses short-range wireless technologies and requires a distance of 4 cm or less for its operation. Let us take a look at what’s possible with NFC technology.</p>
<p>1. Phone can suddenly become your smart cards for payment using NFC’s very short range manner of contactless communication. NFC is not too new though, because <a href="http://www.o2.co.uk">O2</a> has been deploying and testing its payment usage since 2007.</p>
<p>2. NFC can empower your cell phone to become keys to your door. Without a physical key to share, apps can be developed with which you can allow your spouse or children to grant/deny access to doors. </p>
<p>3. Post NFC tags on the wall of your shop/restaurant to enable NFC users to come and swipe to check-in to your business. </p>
<p>4. Ticket vending machines might go obsolete. Purchase ticket from the app, and that will allow you to hop on the bus/train. </p>
<p>5. Contact, Data, or file exchange between two phones very quickly without pairing like Bluetooth and much faster than IrDA.</p>
]]></content:encoded>
			<wfw:commentRss>http://tanzimsaqib.com/526/5-usages-of-near-field-communication-nfc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>50+ Windows Phone App Ideas</title>
		<link>http://tanzimsaqib.com/512/50-windows-phone-app-ideas/</link>
		<comments>http://tanzimsaqib.com/512/50-windows-phone-app-ideas/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 08:02:48 +0000</pubDate>
		<dc:creator>TanzimSaqib</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://tanzimsaqib.com/?p=512</guid>
		<description><![CDATA[Frist of all, I have come up with these ideas in just two hours, and I did not mind overlapping with the most common ones in the marketplaces (WP/iOS/Android) or even really silly ideas. The challenge was to think of &#8230; <a href="http://tanzimsaqib.com/512/50-windows-phone-app-ideas/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image22.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb22.png" alt="image" width="240" height="143" align="right" border="0" /></a></p>
<p>Frist of all, I have come up with these ideas in just two hours, and I did not mind overlapping with the most common ones in the marketplaces (WP/iOS/Android) or even <em>really</em> silly ideas. The challenge was to think of 50+ ideas in two hours, right before I had presented before <a href="http://www.facebook.com/events/213576075399449/" target="_blank">Microsoft-PRIYO.com Windows Phone App Contest kick-off session</a>. The idea behind such attempt was to help the contestants see things and life from different angles, and inspire to think outside the box. You can use these ideas to generate your own for just about any platform, yet I used &#8220;Windows Phone&#8221; on my title to make it even more search result friendly for Windows Phone enthusiasts. By the way, I will try hard to ignore games ideas.</p>
<p>Secondly, most of the attendees of the event were University students and lacked experience in Windows Phone/Visual Studio based development. Therefore, I began with super simple ideas, so that they could think of ways to do it while going along with the demonstration of each idea.</p>
<p align="center"><a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image23.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb23.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image24.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb24.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image25.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb25.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image26.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb26.png" alt="image" width="127" height="240" border="0" /></a></p>
<p align="left"><strong>1. Simple Counter:</strong> This is probably the world’s tiniest app to build, yet works as a programming exercise on your Windows Phone App development journey.</p>
<p align="left"><strong>2. Flashlight:</strong> This is probably the world’s simplest app. This works as a flashlight in the dark, and when you are in developing or under-developed countries you surely need it because power failures are every night event (which stays for a looong looong time).</p>
<p><strong>3. Strobe light:</strong> If you are in macro photography, this app helps to light a color specified, instead of buying strobe lights.</p>
<p><strong>4. Angry Birds Pet:</strong> <a href="http://en.wikipedia.org/wiki/Angry_Birds" target="_blank">Angry Birds</a> is a global success. Angry Birds movies, plush and what not. How about an app that will allow you to keep Angry Birds characters as pet? Users can feed, grow, and play with them. The characters should make funny (or angry) moves and sounds.</p>
<p align="center"><a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image27.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb27.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image28.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb28.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image29.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb29.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image30.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb30.png" alt="image" width="127" height="240" border="0" /></a></p>
<p><strong>5. Baby Timeline:</strong> I wish there were smartphones back in the day when I was born. My parents could log my history and later on could publish on Facebook.</p>
<p><strong>6. Pregnancy Timeline:</strong> How about a similar app for pregnancy? This should also include symptoms and cases of pregnancy in various month-wise parts of the pregnancy period.</p>
<p><strong>7. BMI Tracker:</strong> <a href="http://en.wikipedia.org/wiki/Body_mass_index" target="_blank">Body Mass Index</a> is a very common measurement to understand whether you are overweight, normal or underweight according to your height. This app should keep track of that over time.</p>
<p><strong>8. Closet:</strong> Keep track of your closet categorically.</p>
<p><strong>9. Gadget Inventory, 10. Wishlist:</strong> Same ideas as above.</p>
<p><strong>11. Coin Toss:</strong> Every Phone platform must have this app, still an interesting idea to explore in case you want to get started with basic animation and gesture detection.</p>
<p align="center">  <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image31.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb31.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image32.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb32.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image33.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb33.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image34.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb34.png" alt="image" width="127" height="240" border="0" /></a></p>
<p><strong>12. Daily Accomplishments:</strong> Keep track of your daily successes to feel great about yourself at the end of the day.</p>
<p><strong>13. Gutenberg eBook Reader:</strong> <a href="http://www.gutenberg.org/" target="_blank">Gutenberg</a> project has 36000 free eBooks in various formats. The most easily consumable formats for your Windows Phone app would be HTML (includes image and basic formatting) and Text.</p>
<p><strong>14. Emergency Info:</strong> I was talking to one of the attendees and got this idea inspired from that chat. What if you have become unconscious and whoever has found you needed to know the possible reasons or may want to contact someone nearer to you in relation?</p>
<p><strong>15. Food-o-graphy:</strong> I am a food enthusiast and I keep track of whatever I eat. I also maintain this popular <a href="http://www.facebook.com/Food.o.graphy.BD" target="_blank">Facebook group</a>. You can use the same framework you may think of using for idea #8, #9, and #10.</p>
<p align="center"><a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image35.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb35.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image36.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb36.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image37.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb37.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image38.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb38.png" alt="image" width="127" height="240" border="0" /></a></p>
<p><strong>16. High On Encryption:</strong> Simple text encryption/decryption and features to be able to share via Text Message and Email and save for later.</p>
<p><strong>17. Interactive Ruby Shell (IRB, yes IRB), 18. Python, 19. JavaScript:</strong> How about interpreters that can code on the fly? Hint: call external webservice to fetch result.</p>
<p><strong>18.  Love Calculator:</strong> No matter what age is yours – you must have used this app either online or on desktop. There are various algorithms to build it, so pick one and get started.</p>
<p><strong>19. Blogging tool:</strong> Support WordPress, Tumblr, Posterous, etc. including images, and drafts.</p>
<p align="center"><a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image39.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb39.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image40.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb40.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image41.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb41.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image42.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb42.png" alt="image" width="127" height="240" border="0" /></a></p>
<p><strong>20. Moodlights:</strong> Workaholic? Make a configurable moodlight, so that the world around you will seem less inanimated.</p>
<p><strong>21. News Reader:</strong> User should be able to type in any domain name, and the app will discover the default RSS URL and allow user to prepare his news reader list.</p>
<p><strong>22. Password Safe:</strong> The mockup says everything. Later on, when we will get access to Near Field Communication (NFC), we will be able to pay at the retail shops using this app.</p>
<p><strong>23. Puzzle:</strong> Again, the mockup says everything.</p>
<p align="center"><a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image43.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb43.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image44.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb44.png" alt="image" width="127" height="240" border="0" /></a> <a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image45.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb45.png" alt="image" width="127" height="240" border="0" /></a></p>
<p><strong>24. Recipe Book:</strong> Use the same framework as idea #15.</p>
<p><strong>25. Talk it!:</strong> There was this really funny application used to ship with Microsoft Plus, back in the days, that could talk your text loud in different voices. Just clone that software. Use Microsoft Speech SDK and stream it to your device.</p>
<p><strong>26. Tic Tac Toe:</strong> Yet another popular game.</p>
<p><em>Now that I am tired of preparing mockups and running out of time, skipping them. altogether.</em></p>
<p><strong>29. Website Mobilizer:</strong> This app should make any website reading friendly trimming down to the text and bare minimum menus.</p>
<p><strong>30. Domain Checker:</strong> Make a client for <a href="http://godaddy.com" target="_blank">Godaddy</a> or <a href="http://hover.com" target="_blank">Hover</a> or such.</p>
<p><strong>31. Site Health Watcher:</strong> Should perform service availability check, ping tests, response validations, etc. on the site.</p>
<p><strong>32. WebCam Viewer:</strong> There are tons of beautiful public webcams. Make a directory and viewer of those.</p>
<p><strong>33. Comic (Manga) Reader:</strong> There are also tons of cartoon websites out there, that you may want to parse and display on your mobile screen.</p>
<p><strong>34. Who Wants to be a Millionaire?:</strong> The title says it all.</p>
<p><strong>35. URL Shortener:</strong> Clone of <a href="http://tinyURL.com" target="_blank">tinyURL</a>, <a href="http://bit.ly" target="_blank">bit.ly</a>.</p>
<p><strong>36. Virtual News Reader:</strong> Capture expressions of a human being while talking, and make an app for reading newspaper, which will mimic the original news reading experience on TV.</p>
<p><strong>37. Delicious client:</strong> A client for <a href="http://delicious.com" target="_blank">Delicious</a>.</p>
<p><strong>38. </strong><a href="http://en.wikipedia.org/wiki/Getting_Things_Done" target="_blank"><strong>Getting Things Done</strong></a><strong> </strong>client.</p>
<p><strong>39. </strong><a href="http://en.wikipedia.org/wiki/Pomodoro_Technique" target="_blank"><strong>Pomodoro</strong></a> client.</p>
<p><strong>40. Aspirations:</strong> Keep track of the aspirations of family members, friends, dates.</p>
<p><strong>41. Dhaka Stock Market:</strong> I built it couple years back, but couldn’t publish fearing legal consequences. You can go ahead and resolve this paying your lawyer. <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/wlEmoticon-smile.png" alt="Smile" /></p>
<p><strong>42. Cartoonizer:</strong> Turn photos into cartoons.</p>
<p><strong>43. Instagram:</strong> Clone of popular iPhone app.</p>
<p><strong>44. Local Events:</strong> Show events happening nearby the user aggregating from various sources. I have shown such example in an <a href="http://dotnetslackers.com/articles/aspnet/SevenWaysToDoPerformanceOptimizationOfAnASPNET35Web20Portal.aspx" target="_blank">article</a> four years ago as a web facing client.</p>
<p><strong>45. Daily life recipes:</strong> There are always workflows in our lives. For example, if you want to obtain a Visa for any country, you have to accomplish formalities of a particular task list. This app should collect the experience in digital format instead of living in the brains until we are all dead.</p>
<p><strong>46. Rajnikanth vs. Chuck Norris:</strong> What happens when two super humans meet?</p>
<p><em>Rajnikanth can divide by zero!<br />
Chuck Norris can delete the recycle bin!</em></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image46.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb46.png" alt="image" width="640" height="211" border="0" /></a></p>
<p><strong>47. Text-based adventures:</strong> Popular games in the past.<a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/image47.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/image_thumb47.png" alt="image" width="454" height="480" border="0" /></a></p>
<p><strong>48. Private Emotion:</strong> This app should allow to post really private posts in the community in totally anonymous fashion.</p>
<p><strong>49. Subject Matter Tracker:</strong> How about sticking topics to an app and whenever we browse to that topic it will display information and interesting facts from various sources, such as Google, Facebook, Flickr, Delicious, Digg, and so on.</p>
<p><strong>50. News Fx apps:</strong> <a href="http://newsfx.codeplex.com/" target="_blank">News Fx</a> is <a href="http://tanzimsaqib.com/about/" target="_blank">one of my open source frameworks</a> that I built over 1.5 years ago. You can take advantage of that framework and quickly (as little as in 5 mins by <a href="http://weblogs.asp.net/tanzimsaqib/archive/2010/10/03/3-steps-to-build-a-windows-phone-7-app-using-news-framework.aspx" target="_blank">editing an XML file</a>) build full blown Windows Phone apps. So, eventually you can make tons of apps based on this framework.</p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2012/02/NewsFx.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="NewsFx" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/NewsFx_thumb.png" alt="NewsFx" width="408" height="768" border="0" /></a></p>
<p>Obviously, you are wondering why on earth I am giving away ideas for free, and several ideas may actually make people millionaire when executed properly. Well, the fact of the matter is that I allow them to do so, because I believe you can copy my ideas and make fortune, but you cannot copy me, no matter how silly I am! <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://tanzimsaqib.com/wp-content/uploads/2012/02/wlEmoticon-smile.png" alt="Smile" /></p>
<p>Let me know in the comments if you have further queries. If you want to learn building apps for Windows Phone, check out my micro eBook: <a href="http://tanzimsaqib.com/326/windows-phone-7-5-apps-in-record-time/" target="_blank">Windows Phone 7.5 Apps in Record Time</a>. If you want to know more about the contest, <a href="http://tech.priyo.com/WPAppCon" target="_blank">head over to Priyo.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tanzimsaqib.com/512/50-windows-phone-app-ideas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Programming Office 365 Jump Start 2</title>
		<link>http://tanzimsaqib.com/402/programmingoffice365-2/</link>
		<comments>http://tanzimsaqib.com/402/programmingoffice365-2/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 18:01:24 +0000</pubDate>
		<dc:creator>TanzimSaqib</dc:creator>
				<category><![CDATA[How-to]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Office 365]]></category>
		<category><![CDATA[S+S]]></category>

		<guid isPermaLink="false">http://tanzimsaqib.com/?p=402</guid>
		<description><![CDATA[In this series, I will talk about how to start programming with Office 365 in shortest investment of time. I assume my audience will be .NET developers who do not have prior knowledge of Office 365. Prerequisite: Programming Office 365 &#8230; <a href="http://tanzimsaqib.com/402/programmingoffice365-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In this series, I will talk about how to start programming with Office 365 in shortest investment of time. I assume my audience will be .NET developers who do not have prior knowledge of Office 365.
<p>Prerequisite: <a href="http://tanzimsaqib.com/400/programmingoffice365/">Programming Office 365 Jump Start 1</a><br />
<h1>Exchange Online</h1>
<p>Microsoft released Exchange Web Services Managed API SDK for programming messaging solutions for Exchange Online. The SDK is a class library that you can reference in your application and use its methods to connect to Exchange Online and consume its services. Version 1.1 is available at <a href="http://bit.ly/z1EY06">http://bit.ly/z1EY06</a>, but version 1.2 is soon to be released of which documentation can be found here: <a href="http://bit.ly/yHcqVE">http://bit.ly/yHcqVE</a>. After installing the SDK, an assembly is available at C:Program FilesMicrosoftExchangeWebServices1.1Microsoft.Exchange.WebServices.dll for accessing Email, Calendar, Tasks and Contacts hosted in the cloud.</p>
<h1>Authenticating to Exchange Online</h1>
<p>Using the SDK, authenticating to Exchange Online with admin username and password is fairly easy:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:bb37e222-98bb-42b1-8e04-ebaedbe5a5ea" class="wlWriterEditableSmartContent">
<pre style="background-color:#FFFFFF;overflow: hidden;"><span style="color: #000000;">var exchange </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> ExchangeService(ExchangeVersion.Exchange2010_SP1)
{
     Credentials </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> System.Net.NetworkCredential()
     {
          UserName </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">admin@mycompany.onmicrosoft.com</span><span style="color: #800000;">"</span><span style="color: #000000;">,
          Password </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">passw0rd!</span><span style="color: #800000;">"</span><span style="color: #000000;">
     }
};

exchange.AutodiscoverUrl(primaryUser, url </span><span style="color: #000000;">=&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">true</span><span style="color: #000000;">);</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>If the user is already logged on to that domain, username and password are not required. Use <em>exchange.UseDefaultCredentials = true</em> instead. </p>
<h1>Querying User Availability</h1>
<p>Prior to scheduling an appointment among two or more attendees, it is better to check whether they are free/busy at that time. Otherwise, it may result in conflict with other appointments. </p>
<div id="codeSnippetWrapper">
<div id="codeSnippetWrapper">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:0ca2e4e9-1dfb-4f3f-ba77-a6241808d9d8" class="wlWriterEditableSmartContent">
<pre style="background-color:#FFFFFF;overflow: auto;"><span style="color: #000000;">var attendees </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> List</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">AttendeeInfo</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">
{
    </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> AttendeeInfo()
    {
        SmtpAddress </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">attendee1@mycompany.onmicrosoft.com</span><span style="color: #800000;">"</span><span style="color: #000000;">,
        AttendeeType </span><span style="color: #000000;">=</span><span style="color: #000000;"> MeetingAttendeeType.Organizer
    },

    </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> AttendeeInfo()
    {
        SmtpAddress </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">attendee2@mycompany.onmicrosoft.com</span><span style="color: #800000;">"</span><span style="color: #000000;">,
        AttendeeType </span><span style="color: #000000;">=</span><span style="color: #000000;"> MeetingAttendeeType.Required
    }
};

var results </span><span style="color: #000000;">=</span><span style="color: #000000;"> exchange.GetUserAvailability(attendees,
     </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> TimeWindow(DateTime.Now, DateTime.Now.AddDays(</span><span style="color: #800080;">3</span><span style="color: #000000;">)),
     AvailabilityData.FreeBusyAndSuggestions);</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>The code above returns whole bunch of information on availability and suggestions (responsible flag for this was <em>AvailabilityData.FreeBusyAndSuggestions</em>) according to availability of the attendees for next three days. You can go ahead and explore by yourself various types of properties this method reveals, but let us take a look at how we can get access to the suggestions that it made:</div>
</div>
<div id="codeSnippetWrapper">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:b8eaec15-54a2-4bf8-846d-dbcbd1858ccb" class="wlWriterEditableSmartContent">
<pre style="background-color:#FFFFFF;overflow: hidden;"><span style="color: #0000FF;">foreach</span><span style="color: #000000;"> (var time </span><span style="color: #0000FF;">in</span><span style="color: #000000;"> results.Suggestions.SelectMany(suggestion </span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">
     suggestion.TimeSuggestions))
{
     Console.WriteLine(time.MeetingTime </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">t</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> time.Quality);
}</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>It is also capable of calculating conflicts automatically and return as part of the <em>TimeSuggestion</em> object. </div>
<h1>Creating an Appointment</h1>
<p>Now that we have learned how to query user’s availability, let us pick up a suggested time and create an appointment: </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:d0e50ecb-a4f7-4739-95af-64ab2c88048c" class="wlWriterEditableSmartContent">
<pre style="background-color:#FFFFFF;overflow: auto;"><span style="color: #000000;">var appointment </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> Appointment(exchange)
{
     Subject </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Discuss Exchange migration</span><span style="color: #800000;">"</span><span style="color: #000000;">,
     Body </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Let us find a migration process that will</span><span style="color: #800000;">
</span><span style="color: #000000;">              cause least downtime of the service.</span><span style="color: #800000;">"</span><span style="color: #800000;">,</span><span style="color: #800000;">
</span><span style="color: #000000;">     Start </span><span style="color: #000000;">=</span><span style="color: #000000;"> appointmentTime,
     End </span><span style="color: #000000;">=</span><span style="color: #000000;"> appointmentTime.AddMinutes(</span><span style="color: #800080;">30</span><span style="color: #000000;">)
};

appointment.RequiredAttendees.Add(
    </span><span style="color: #800000;">"</span><span style="color: #800000;">attendee2@mycompany.onmicrosoft.com</span><span style="color: #800000;">"</span><span style="color: #000000;">);

appointment.Save(); </span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<h1>Sending an Email</h1>
<p>The quality indicator of a good SDK is that it gives a solid object model and makes it fairly easy to consume services such as sending email while taking care of the underlying complexities associated with communications all by itself: </p>
<div>
<div id="codeSnippetWrapper">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:b5120aa0-7a95-49f4-8ce8-3c45ba3cd0df" class="wlWriterEditableSmartContent">
<pre style="background-color:#FFFFFF;overflow: auto;"><span style="color: #000000;">var email </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> EmailMessage(exchange)
{
     Body </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Hello from my cool C# demo.</span><span style="color: #800000;">"</span><span style="color: #000000;">,
     Subject </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Email by code</span><span style="color: #800000;">"</span><span style="color: #000000;">
};

email.Attachments.AddFileAttachment(</span><span style="color: #800000;">"</span><span style="color: #800000;">c:\mypic.jpg</span><span style="color: #800000;">"</span><span style="color: #000000;">);
email.ToRecipients.Add(</span><span style="color: #800000;">"</span><span style="color: #800000;">user@mycompany.onmicrosoft.com</span><span style="color: #800000;">"</span><span style="color: #000000;">);
email.Send();</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
</div>
</div>
<h1>Accessing Folders</h1>
<p>In this example, we will get access to a folder and delete all its contents including sub-folders: </p>
<div>
<div id="codeSnippetWrapper">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:2d64b9b2-d74b-4168-9b21-247ca027fc52" class="wlWriterEditableSmartContent">
<pre style="background-color:#FFFFFF;overflow: auto;"><span style="color: #000000;">var folder </span><span style="color: #000000;">=</span><span style="color: #000000;"> Folder.Bind(exchange,
    WellKnownFolderName.DeletedItems);

folder.Empty(DeleteMode.HardDelete, </span><span style="color: #0000FF;">true</span><span style="color: #000000;">);</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
</div>
</div>
<p>If we wanted to search for folders that contain certain string, instead of well known folders, we can do so as well. First of all we have to decide our search criteria, then call <em>ExchangeService’s FindFolders</em> method, which takes a folder root to search from, search criteria (filter) and maximum how many folders we are interested in getting in return: </p>
<div>
<div id="codeSnippetWrapper">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:e891404b-8123-41f6-a5c5-e05c8fc9b6f8" class="wlWriterEditableSmartContent">
<pre style="background-color:#FFFFFF;overflow: auto;"><span style="color: #000000;">var filter </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> SearchFilter.ContainsSubstring(
    FolderSchema.DisplayName, </span><span style="color: #800000;">"</span><span style="color: #800000;">Reports</span><span style="color: #800000;">"</span><span style="color: #000000;">);

var results </span><span style="color: #000000;">=</span><span style="color: #000000;"> exchange.FindFolders(
    WellKnownFolderName.MsgFolderRoot,
    filter, </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> FolderView(</span><span style="color: #800080;">10</span><span style="color: #000000;">));

</span><span style="color: #0000FF;">foreach</span><span style="color: #000000;"> (var folder </span><span style="color: #0000FF;">in</span><span style="color: #000000;"> results)
{
    Console.WriteLine(folder.DisplayName);
    </span><span style="color: #008000;">//</span><span style="color: #008000;"> If we have three folders contain 'Reports', output:
    </span><span style="color: #008000;">//</span><span style="color: #008000;"> Annual Reports
    </span><span style="color: #008000;">//</span><span style="color: #008000;"> Monthly Reports
    </span><span style="color: #008000;">//</span><span style="color: #008000;"> Report formats</span><span style="color: #008000;">
</span><span style="color: #000000;">}</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
</div>
<h1>Scheduling Out of Office</h1>
</div>
<p>Let us schedule an Out of Office automatic reply starting from now for five days, which will send message to people at work only (Internal): </p>
<div>
<div id="codeSnippetWrapper">
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:24427782-8345-433c-a2f0-55b805c62935" class="wlWriterEditableSmartContent">
<pre style="background-color:#FFFFFF;overflow: auto;"><span style="color: #000000;">var oofSettings </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> OofSettings
{
    InternalReply </span><span style="color: #000000;">=</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> OofReply(</span><span style="color: #800000;">"</span><span style="color: #800000;">Hi, thank you for your email, but I am</span><span style="color: #800000;">
</span><span style="color: #000000;">              </span><span style="color: #0000FF;">out</span><span style="color: #000000;"> of office.</span><span style="color: #800000;">"</span><span style="color: #800000;">),</span><span style="color: #800000;">
</span><span style="color: #000000;">
    Duration </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> TimeWindow(DateTime.Now,
                    DateTime.Now.AddDays(</span><span style="color: #800080;">5</span><span style="color: #000000;">)),
    State </span><span style="color: #000000;">=</span><span style="color: #000000;"> OofState.Scheduled
};

exchange.SetUserOofSettings(
    </span><span style="color: #800000;">"</span><span style="color: #800000;">admin@mycompany.onmicrosoft.com</span><span style="color: #800000;">"</span><span style="color: #000000;">, oofSettings);</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
</div>
<h1> Notification Streaming</h1>
<p>Exchange Web Service SDK allows to listen for change notifications whether it’d be new email arrival, Free/Busy status changed, item created/deleted and so on. Let us see how we can listen for new email arrival: </p>
<div>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:57a0f1f4-562a-4258-8562-41554be1d284" class="wlWriterEditableSmartContent">
<pre style="background-color:#FFFFFF;overflow: auto;"><span style="color: #000000;">var subscription </span><span style="color: #000000;">=</span><span style="color: #000000;"> exchange.SubscribeToStreamingNotifications(
    </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> FolderId[] { WellKnownFolderName.Inbox },
    EventType.NewMail);

var connection </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> StreamingSubscriptionConnection(exchange, </span><span style="color: #800080;">30</span><span style="color: #000000;">);

connection.AddSubscription(subscription);
connection.OnNotificationEvent </span><span style="color: #000000;">+=</span><span style="color: #000000;"> (s, a) </span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">
    {
        </span><span style="color: #0000FF;">foreach</span><span style="color: #000000;"> (var item </span><span style="color: #0000FF;">in</span><span style="color: #000000;"> a.Events.Select(
             notification </span><span style="color: #000000;">=&gt;</span><span style="color: #000000;"> notification </span><span style="color: #0000FF;">as</span><span style="color: #000000;"> ItemEvent))
        {
            Console.WriteLine(</span><span style="color: #0000FF;">string</span><span style="color: #000000;">.Format(
                 </span><span style="color: #800000;">"</span><span style="color: #800000;">Type: {0}, ItemId: {1}</span><span style="color: #800000;">"</span><span style="color: #000000;">,
                 item.EventType, item.ItemId.UniqueId));
        }
    };

connection.Open();</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
</div>
<div>Streaming subscription connection does not allow to persist more than 30 minutes. In order to extend the period of listening time, you will have to subscribe to OnDisconnect event which will be fired upon timeout and then you can invoke connection.Open() once again to establish reconnection and keep listening to the subscribed events. </div>
<div>&nbsp;</div>
<h1>Conclusion</h1>
<p>There are countless many things that you can do with the object model. I hope this post has enough exercises to get you started with Exchange Online programming. </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://tanzimsaqib.com/402/programmingoffice365-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Programming Office 365 Jump Start 1</title>
		<link>http://tanzimsaqib.com/400/programmingoffice365/</link>
		<comments>http://tanzimsaqib.com/400/programmingoffice365/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 12:25:14 +0000</pubDate>
		<dc:creator>TanzimSaqib</dc:creator>
				<category><![CDATA[How-to]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Lync]]></category>
		<category><![CDATA[Office 365]]></category>
		<category><![CDATA[S+S]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Web Apps]]></category>

		<guid isPermaLink="false">http://tanzimsaqib.com/?p=400</guid>
		<description><![CDATA[In this series, I will talk about how to start programming with Office 365 in shortest investment of time. I assume my audience will be .NET developers who do not have prior knowledge of Office 365. Programming Office 365 Jump &#8230; <a href="http://tanzimsaqib.com/400/programmingoffice365/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In this series, I will talk about how to start programming with Office 365 in shortest investment of time. I assume my audience will be .NET developers who do not have prior knowledge of Office 365.</p>
<p><a href="http://tanzimsaqib.com/402/programmingoffice365-2/">Programming Office 365 Jump Start 2</a></p>
<h1>Office 365 Overview</h1>
<p>Office 365, publicly made available on June 28, 2011, is a cloud hosted Software + Services offering from Microsoft that includes online versions (read: cloud hosted version) of Exchange Online, and Lync Online, SharePoint Online. Office Web Apps and Office Professional Plus are also included as per plan.
<p>Office 365 is a complete business productivity solution which includes platforms such as SharePoint. Microsoft&#8217;s yearly revenue from SharePoint alone is nearly $2B, which gives us a glimpse of the magnitude of success SharePoint has managed to achieve in past 10 years. Because SharePoint is a web application platform, IT Pros and Devs around this industry comprise even bigger of an economics than just that. That also begs a question what is your worth as a developer if you have Office 365 or SharePoint skill in your bag? <a href="http://tanzimsaqib.com/wp-content/uploads/2012/01/Office365.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Office365" border="0" alt="Office365" src="http://tanzimsaqib.com/wp-content/uploads/2012/01/Office365_thumb.png" width="473" height="280"></a>
<p>Microsoft Exchange is one of the most popular Email, Calendar and Contacts hosting choice for the enterprise. On the other hand, Microsoft Lync, which was formerly known as Microsoft Office Communication Server, is the biggest push from Microsoft to establish itself as an automatic choice in the Unified Communication space. Being the cloud citizen Office 365 offers additional addons to fulfill scaling needs as business grows or shrinks.<br />
<h1>Office 365 Plans</h1>
<p>As we have just mentioned earlier it is one size fits all, there are three plans to choose from:</p>
<ul>
<li>Professional and small businesses
<li>Midsize business and enterprises
<li>Education</li>
</ul>
<p>Enterprises enjoy an additional benefit though, which is being able to offer Office 365 to kiosk users. Some of the scenarios they may cover depending on of course how you use it are Timesheet entry, keep track of schedule on Calendar, Inventory, Request workflows and lookup policies. </p>
<p>Before your company or you decide to go for Office 365, which is as low as $6/user/month, you can always signup for a 30-day trial, which we will use throughout this series for our development work, too. </p>
<p>Full details about plans: <a href="http://bit.ly/yIly6l">http</a><a href="http://bit.ly/yIly6l">://</a><a href="http://bit.ly/yIly6l">bit.ly/yIly6l</a>&nbsp;<br />How you can deploy to private cloud: <a href="http://bit.ly/Aal6LR">http://</a><a href="http://bit.ly/Aal6LR">bit.ly/Aal6LR</a>&nbsp;<br />Cost estimator: <a href="http://tinyurl.com/78gk5r5">http://</a><a href="http://tinyurl.com/78gk5r5">tinyurl.com/78gk5r5</a></p>
<p>As soon as you have signed up for trial and activated, it gives you control over complete feature-set if you would have purchased a paid subscription as well:</p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2012/01/Admin.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Admin" border="0" alt="Admin" src="http://tanzimsaqib.com/wp-content/uploads/2012/01/Admin_thumb.png" width="467" height="557"></a></p>
<p>You can administer everything very easily from this control panel, including user, services, subscriptions, licenses management, etc.</p>
<h1>Office 365 Infrastructure Layer</h1>
<p>It is hosted on Windows Azure, Microsoft’s cloud, administered via Windows Intune. Windows Intune is a cloud based update and security patches management solution via Web Browser, which by the way, we do not have to worry about, because it is done by Microsoft to keep their Azure infrastructure up-to-date. One of the key benefits of going cloud is that the infrastructure is free from maintenance at consumer level. On top of that, Microsoft guaranties financially backed 99.9% uptime of the service. Therefore, it offers ultimate reliability as well as enterprise-grade security. That said, Microsoft collects no data or put up ads, no document scanning for analytics/mining or improve their service, complete data portability and 5 layers of security: Data, Application, Host, Network and Physical. </p>
<p>All are hosted and configured to work right after your signup, so there is no deployment or configuration really is involved. Furthermore, you can access the same services across different form-factors, such as PC/Mac, Mobile: Windows Phone, Blackberry, iPhone, Android and Symbian. So, according to Forrester survey it came up about more than 300% ROI from Office 365.</p>
<h1>Software + Services</h1>
<p>Office 365 enjoys <a href="http://tanzimsaqib.com/201/the-web-of-pain-for-those-who-did-not-adopt-cloud-yet/">generic benefits of going cloud</a> associated with it. However, as a developer you need to know how it is treated in the cloud. In the beginning I have mentioned that Office 365 is a cloud hosted Software + Services offering, before we look into that aspect, let us quickly recap some of the conventional hosting models that we are most familiar with.</p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2012/01/Traditional.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Traditional" border="0" alt="Traditional" src="http://tanzimsaqib.com/wp-content/uploads/2012/01/Traditional_thumb.png" width="399" height="120"></a></p>
<p>In traditional Client-Server system, there is a stack of servers for clients to connect over network or internet. As business grows, new servers are to be purchased and as business shrinks servers are needed to be offloaded. </p>
<p>Traditional Cloud/Software as-a Service (SaaS) model solves the problem with scaling up, out and down on business demand. Everything’s hosted in a cloud vendor’s datacenter. If it is Windows Azure, Microsoft has megastructures of datacenters across different continents of the world, which confirms nuclear-bomb-proof part of the cloud feature. </p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2012/01/PreCloud.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="PreCloud" border="0" alt="PreCloud" src="http://tanzimsaqib.com/wp-content/uploads/2012/01/PreCloud_thumb.png" width="284" height="284"></a></p>
<p>As you can see from the diagram, software is replaced with Cloud based SaaS websites which are accessibly via Web Browser, and rest of the client applications use On-premise servers, ie. locally hosted Lync, Exchange and SharePoint servers.</p>
<p>Software + Services offers best of both worlds, minus the need of network connectivity (managed hosting). Sure, you can use SaaS via Web Browser, but additionally, there are programmable API endpoints, which let Client Applications (App that you will write) to connect and consume services. In this case Exchange, Lync, and SharePoint Online.</p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2012/01/SS.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="S S" border="0" alt="S S" src="http://tanzimsaqib.com/wp-content/uploads/2012/01/SS_thumb.png" width="503" height="191"></a></p>
<p>Your Apps live on the Client machines, enjoy the faster local data access and processing power, while syncing necessary selective data over the wire from/to the Cloud. These are the kind of apps that we will see how we can write in later posts in this series.</p>
<h1>PinPoint: Office 365 Marketplace</h1>
<p>Once you have built an app, it is time to go global. You can get yourself listed as vendor as well as your apps as products in the Office 365 Marketplace. Head over to <a href="http://pinpoint.com">http://pinpoint.com</a> or for detailed guide: <a href="http://bit.ly/eMVqaf">http://bit.ly/eMVqaf</a>. Potential customers can then discover your apps and purchase from there, or perhaps even better contact your company for further customization or support. PinPoint allows your company to acquire global reach.</p>
]]></content:encoded>
			<wfw:commentRss>http://tanzimsaqib.com/400/programmingoffice365/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows Phone 7.5 Apps In Record Time</title>
		<link>http://tanzimsaqib.com/326/windows-phone-7-5-apps-in-record-time/</link>
		<comments>http://tanzimsaqib.com/326/windows-phone-7-5-apps-in-record-time/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 18:32:00 +0000</pubDate>
		<dc:creator>TanzimSaqib</dc:creator>
				<category><![CDATA[Book Review]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[eBook]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://tanzimsaqib.com/blog/326/windows-phone-7-5-apps-in-record-time/</guid>
		<description><![CDATA[I have started writing an evolving micro eBook “Windows Phone 7.5 Apps In Record Time.” It was written as briefly as possible to act as a jump starter for those who have intermediate level of practical experience in C#. However, &#8230; <a href="http://tanzimsaqib.com/326/windows-phone-7-5-apps-in-record-time/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have started writing an evolving micro eBook “<a href="http://tanzimsaqib.com/wp-content/uploads/WP75AppDevInRecordTime.pdf">Windows Phone 7.5 Apps In Record Time</a>.” It was written as briefly as possible to act as a jump starter for those who have intermediate level of practical experience in C#. However, I can’t call it cheatsheet either, because it’s vision is different than that. I have never thought of writing it until attendees of the 3-hour long workshop that I host on <a href="https://www.facebook.com/events/315832398436340/">Building Windows Apps</a> weekly at <a href="https://www.facebook.com/mugbd">Microsoft Bangladesh</a> demanded so. However, this is not the final edition. I will keep on revising and adding content to it as many as 20 or so pages.</p>
<p><a title="Windows Phone 7.5 Apps In Record Time by Tanzim Saqib" href="http://tanzimsaqib.com/wp-content/uploads/WP75AppDevInRecordTime.pdf"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="Windows Phone 7.5 Apps In Record Time" src="http://tanzimsaqib.com/wp-content/uploads/2011/12/Windows-Phone-7.5-Apps-In-Record-Time1.png" alt="Windows Phone 7.5 Apps In Record Time" width="219" height="309" border="0" /></a></p>
<p>I hope this micro eBook will help in a particular way, because it targets a very common and specific audience and speaks to the point without much jibber jabber. By the way, on the 40th Victory Day of my beloved country, Bangladesh, I couldn’t give any better gift than this! Long live Bangladesh.</p>
]]></content:encoded>
			<wfw:commentRss>http://tanzimsaqib.com/326/windows-phone-7-5-apps-in-record-time/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NoBrainer: My New Open Source project</title>
		<link>http://tanzimsaqib.com/329/nobrainer-my-new-open-source-project/</link>
		<comments>http://tanzimsaqib.com/329/nobrainer-my-new-open-source-project/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 03:23:17 +0000</pubDate>
		<dc:creator>TanzimSaqib</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[nobrainer]]></category>

		<guid isPermaLink="false">http://tanzimsaqib.com/blog/?p=294</guid>
		<description><![CDATA[Yesterday we had an electrifying event “Open Source in .NET &#124; Open Day” in collaboration with Microsoft Bangladesh, that I have posted earlier about. In my second session I unveiled my shiny new Open Source project “NoBrainer” which is the &#8230; <a href="http://tanzimsaqib.com/329/nobrainer-my-new-open-source-project/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday we had an electrifying event “<a href="http://tanzimsaqib.com/blog/293/open-source-in-net-open-day/">Open Source in .NET | Open Day</a>” in collaboration with Microsoft Bangladesh, that I have posted earlier about. In my second session I unveiled my shiny new Open Source project “<a href="http://nobrainer.codeplex.com/">NoBrainer</a>” which is the topic of this post. The presentation can be viewed here:</p>
<div style="width: 425px" id="__ss_9410161"><strong style="margin: 12px 0px 4px; display: block"><a title="NoBrainer - An MVC + CMS Framework" href="http://www.slideshare.net/TanzimSaqib/no-brainer-9410161" target="_blank">NoBrainer &#8211; An MVC + CMS Framework</a></strong> <iframe height="355" marginheight="0" src="http://www.slideshare.net/slideshow/embed_code/9410161" frameborder="0" width="425" marginwidth="0" scrolling="no"></iframe>
<div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"></div>
</div>
<p><a href="http://nobrainer.codeplex.com/">NoBrainer</a> is an MVC + CMS Framework, as its name suggests for low-fi developers and savvy business stakeholders. It provides developers the flexibility of MVC as well as the control of WebForm, resulting in a testable and content manageable WebForm infrastructure for you application. NoBrainer currently supports only Web at the launch, however it can easily be extended to work with Desktop as well as Mobile. That way your logic and test code remain the same across different UI layers. Take time and flip over the slides. You will get the understanding what I have tried to achieve with this project. This Framework is used by one of the largest Enterprises and it is serving several millions of their users pretty well.</p>
<h1>The Motivation</h1>
<p>Converting your WebForms project into ASP.NET MVC is not always a suitable option for you. There is a huge cost associated with conversion, which is in ideal case totally dependent on decision from business stakeholders. On the other hand, if you are one of the business guys and you maintain a pool of developers for your project, chances are that you may want to convert your project into an ASP.NET MVC project. But, when your developers become reluctant to change, and to learn a whole new paradigm of development, you have no choice but stick to the old WebForm, until you use NoBrainer. So, you need a Framework that slowly guides your developers to the MVC practice without sacrificing the convenience of rich and drag &amp; drop designer of WebForms.</p>
<p>Note: This Framework addresses a particular need – it does not necessarily replace the ASP.NET MVC in all aspects.</p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image41.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb40.png" width="580" height="370"></a></p>
<p><em>Figure: Data validation and automatic error binding: CMS-driven MVC Framework in action</em></p>
<p>The project itself is easy to setup and the Sample is concise, so that one who wants to learn can follow easily. This step-by-step walkthrough is also included (as you can see in the Documentation part) in the project.</p>
<p>Note: This project assumes that you have general idea about Model-View-Controller pattern.</p>
<h1>Easy Setup</h1>
<p>NoBrainer takes a novel approach &#8211; WebForm is totally rethought to use with MVC. Follow the steps:</p>
<p>(1) Reference <font color="#d16349">NoBrainer.dll</font> in your web project. <br />(2) Add the following in your web.config:</p>
<p><span class="kwrd"></p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">appSettings</span><span class="kwrd">&gt;</span>
   <span class="rem">&lt;!-- Any folder path you want. A folder inside your web project is preferred. --&gt;</span>
   <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">key</span><span class="kwrd">="CmsXmlDirectory"</span> <span class="attr">value</span><span class="kwrd">="D:NoBrainerNoBrainer.SampleContent"</span><span class="kwrd">/&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">appSettings</span><span class="kwrd">&gt;</span></pre>
<p></span></p>
<p>(3) Add this to your Global.asax:</p>
<pre class="csharpcode"><span class="kwrd">void</span> Application_Start(<span class="kwrd">object</span> sender, EventArgs e)
{
    <span class="rem">// Ignite NoBrainer engine.    </span>
    Engine.Boot(() =&gt; <span class="kwrd">new</span> NoCache(),
    ConfigurationManager.AppSettings[<span class="str">"CmsXmlDirectory"</span>], <span class="str">"xml"</span>, <span class="str">"html, htm"</span>);
}</pre>
<p>Done! Now you are free to choose which WebForm inside your project, you would prefer to convert to MVC pattern.</p>
<h1>NoBrainer makes it a breeze to make your WebForm CMS-driven MVC style </h1>
<p>Magic of NoBrainer is that you can very slowly start converting your project into MVC. You can take one WebForm at a time. Let us see how we can implement MVC in our Login.aspx page. Follow the steps:</p>
<h3>1. Model</h3>
<p>Let&#8217;s create a Model for our MVC that will be used to hold necessary data to transfer back and forth from and to View and Controller. Notice that the Model was derived from ModelBase which is the base class from NoBrainer to indicate that the class which extends it is actually a Model.</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> AccountModel : ModelBase
{
     <span class="kwrd">public</span> <span class="kwrd">string</span> UserName { get; set; }
     <span class="kwrd">public</span> <span class="kwrd">string</span> Password { get; set; }
     <span class="kwrd">public</span> <span class="kwrd">string</span> Email { get; set; }
     <span class="kwrd">public</span> <span class="kwrd">bool</span> PersistentCookieEnabled { get; set; }
}</pre>
<h3>2. View (HTML)</h3>
<p>Now let&#8217;s create the View. Notice that the HTML tags here have several highlighted non-standard attributes. Some of them matches the properties of the Model that we created earlier. Ex. UserName, Password, PersistentCookieEnabled. NoBrainer automatically maps these Model properties without requiring any hand written code.</p>
<pre class="csharpcode"><span class="rem">&lt;!-- Example: Model(you can also say View)-wide common error message --&gt;</span>
 <span class="kwrd">&lt;</span><span class="html">span</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="attr">class</span><span class="kwrd">="failureNotification"</span> <strong><span class="attr">Model</span><span class="kwrd">="ErrorMessage"</span></strong><span class="kwrd">&gt;&lt;/</span><span class="html">span</span><span class="kwrd">&gt;</span>

<span class="kwrd">&lt;</span><span class="html">fieldset</span> <span class="attr">class</span><span class="kwrd">="login"</span><span class="kwrd">&gt;</span>
     <span class="kwrd">&lt;</span><span class="html">legend</span><span class="kwrd">&gt;</span>Account Information<span class="kwrd">&lt;/</span><span class="html">legend</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">asp:TextBox</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="attr">ID</span><span class="kwrd">="UserName"</span> <span class="attr">CssClass</span><span class="kwrd">="textEntry"</span> <strong><span class="attr">Model</span><span class="kwrd">="UserName"</span></strong><span class="kwrd">&gt;</span>
                 <span class="kwrd">&lt;/</span><span class="html">asp:TextBox</span><span class="kwrd">&gt;</span> 

        <span class="rem">&lt;!-- Example: automatic error binding from Model to View --&gt;</span>
         <span class="kwrd">&lt;</span><span class="html">span</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="attr">class</span><span class="kwrd">="failureNotification"</span> <strong><span class="attr">Model-Error</span><span class="kwrd">="UserName"</span></strong><span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">asp:TextBox</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="attr">ID</span><span class="kwrd">="Password"</span> <span class="attr">CssClass</span><span class="kwrd">="passwordEntry"</span> <span class="attr">TextMode</span><span class="kwrd">="Password"</span>
<strong><span class="attr">Model</span><span class="kwrd">="Password"</span></strong><span class="kwrd">&gt;&lt;/</span><span class="html">asp:TextBox</span><span class="kwrd">&gt;</span> 

        <span class="rem">&lt;!-- Example: </span>
<span class="rem">            1. HTML-attribute level CMS capability </span>
<span class="rem">            2. Show/hide CMS driven error message by Cms-Error</span>
<span class="rem">        --&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">span</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="attr">class</span><span class="kwrd">="<strong>&lt;%# Cms[&amp;quot;spnPasswordError&amp;quot;].CssClass%&gt;</strong>"</span>
                   <strong><span class="attr">Cms-Error</span><span class="kwrd">="Password"</span></strong><span class="kwrd">&gt;</span>

            <span class="rem">&lt;!-- Example: strongly typed Model --&gt;</span>
            <strong><span class="asp">&lt;%</span># Cms[<span class="str">"spnPasswordError"</span>].Content <span class="asp">%&gt;</span>
</strong>        <span class="kwrd">&lt;/</span><span class="html">span</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span>

    <span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">asp:CheckBox</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="attr">ID</span><span class="kwrd">="RememberMe"</span> <strong><span class="attr">Model</span><span class="kwrd">="PersistentCookieEnabled"</span></strong><span class="kwrd">/&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">asp:Label</span> <span class="attr">ID</span><span class="kwrd">="RememberMeLabel"</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="attr">AssociatedControlID</span><span class="kwrd">="RememberMe"</span>
                 <span class="attr">CssClass</span><span class="kwrd">="inline"</span><span class="kwrd">&gt;</span>Keep me logged in<span class="kwrd">&lt;/</span><span class="html">asp:Label</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">fieldset</span><span class="kwrd">&gt;</span></pre>
<p><strong>Model-Error</strong> is an amazing feature that automatically maps error message sent from Controller to the UI. For example, if user has typed wrong password, NoBrainer will find HTML element having <strong>Model-Error = &#8220;Password&#8221;</strong> and update its content to the error message associated with Password.</p>
<p>Cms is a page level dictionary which allows you to put CMS content which come from XML (we will cover that in a while). </p>
<p>Our Model did not have <strong>ErrorMessage</strong> property. Where did it come from? Well, No Brainer provides bunch of really useful extensions and default properties to help you write MVC friendly WebForm. <strong>ErrorMessage</strong> is one of them, which contains View-wide generic error message occured. For example: Incorrect username/password combination.</p>
<p>As you can see there is no MVC specific change in WebForm design. You can use your same old WebForm practice, drag and drop controls from the Toolbox, use design-view, etc. whatever you like. However, to make automatic control mapping work, you will have to map Model properties. Even that&#8217;s optional too, if you prefer to do that WebForm way. Example: <strong>model.UserName = txtUserName.Text</strong> in your code-behind file. NoBrainer gives you absolute freedom.</p>
<h3>3. View (code-behind)</h3>
<p>Let&#8217;s take a look at the code-behind of this page. First thing you are going to notice is that the View does not inherit System.Web.UI.Page, rather it does from ViewBase which is the base class for Views provided by NoBrainer. It takes two parameters. First is the Controller name which has the driving logic for this View and the Model type that the Controller and View both will be dealing with. We have declared AccountModel earlier, but AccountController (our Controller) will be implemented in the next step.</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">partial</span> <span class="kwrd">class</span> Login : <strong>ViewBase&lt;AccountController, AccountModel&gt;</strong>
 {
    <span class="kwrd">protected</span> <span class="kwrd">void</span> Page_Load(<span class="kwrd">object</span> sender, EventArgs e)
    {
        <span class="kwrd">if</span>(IsPostBack)
        {
            <strong>InvokeController(v =&gt; Controller.Login(Model));</strong>        

            <span class="kwrd">if</span>(<strong>Model.IsValid</strong>)
            {
                FormsAuthentication.RedirectFromLoginPage(Model.UserName, Model.PersistentCookieEnabled);
            }
        }
        <span class="kwrd">else</span>
        {
            <span class="kwrd">if</span>(Request.IsAuthenticated)
            {
                Response.Redirect(<span class="str">"~/Account/Manage.aspx"</span>);
            }
        }
    }
 }</pre>
<p>You will also notice that there is a method named <em><strong>InvokeController</strong></em> which is a native NoBrainer method inferred from ViewBase. This method allows you to map View =&gt; Model and pass that Model to the designated method you have written in your Controller (in here: <strong><em>Login</em></strong> is a method written inside <strong><em>AccountController</em></strong>. We will see that in a while.). Then the Controller method performs some actions (such as Validation, etc.) and returns the modified Model to the View. The View (web layer/WebForm) then examines the Model and decides what to do next. That way we leave NoBrainer to do the mapping work, and seperate the logic to our Controller.</p>
<h3>4. Controller</h3>
<p>Now that our Model and View are complete, let&#8217;s talk about Controller. We will talk everything via interfaces. Why? Because one of the advantages of using interfaces is that it will allow us to make the Controllers unit testable.</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">interface</span> <strong>IAccountController</strong>
{
    AccountModel Login(AccountModel user);
}

<span class="kwrd">public</span> <span class="kwrd">class</span> AccountController : <strong>ControllerBase, IAccountController</strong>
{
    <span class="kwrd">public</span> AccountModel Login(AccountModel user)
    {
        <span class="rem">/* </span>
<span class="rem">            Example: how Models can be validated and </span>
<span class="rem">            error messages can be sent from Controllers.</span>
<span class="rem">        */</span>
        <span class="rem">// Example: how error messages can be set from the Controllers </span>
        <span class="kwrd">if</span> (<span class="kwrd">string</span>.IsNullOrEmpty(user.UserName))
            <strong>user.ErrorMessages[<span class="str">"UserName"</span>] = <span class="str">"UserName cannot be empty."</span>;</strong>

        <span class="rem">// Example: how to enable/disable CMS based error messages to the UI</span>
        <span class="kwrd">if</span> (<span class="kwrd">string</span>.IsNullOrEmpty(user.Password))
           <strong> user.CmsErrorMessages[<span class="str">"Password"</span>] = <span class="kwrd">true</span>;</strong>
         <span class="kwrd">if</span>(<span class="kwrd">string</span>.IsNullOrEmpty(user.UserName)
            || <span class="kwrd">string</span>.IsNullOrEmpty(user.Password))
        {
            <strong>user.ErrorMessage = <span class="str">"There are errors. Please fix them and try again."</span>;</strong>
        }
        <span class="kwrd">else</span>
        {
            <span class="kwrd">if</span> (!<strong>Membership.ValidateUser</strong>(user.UserName, user.Password))
            {
                user.ErrorMessage = <span class="str">"UserName/Password combination is incorrect."</span>;
            }
            <span class="kwrd">else</span>
            {
                <strong>FormsAuthentication.SetAuthCookie</strong>(user.UserName, user.PersistentCookieEnabled);
                user.IsValid = <span class="kwrd">true</span>;
            }
        }
        <span class="kwrd">return</span> user;
    }
 }</pre>
<p>First thing you are noticing here is that it inherits ControllerBase as well as IAccountController. AccountController has to implement the method (for our case: Login) that we called earlier from View. As you can see it takes an instance of AccountModel, which is later validated whether there&#8217;s any error message and then returned the same object in the end after necessary modification.</p>
<p>If you need to set an error message specific to certain property (in here: UserName) of the Model, you should use the Model&#8217;s in-built dictionary <strong><em>ErrorMessages</em></strong> to do that. However, should you require to make the error message CMS driven, in other words, your business stakeholders want it to hand-written by themselves outside the application, you should use the other dictionary named <strong><em>CmsErrorMessages</em></strong>. You will create a CMS collection which we will discuss in the last step of this tutorial, that should hold a text representing <strong>user.CmsErrorMessages[</strong><strong>"Password"</strong>]. What this piece of code will do is it will turn on/off the text&#8217;s visibility (recall: <strong>Cms-Error</strong><strong>=&#8221;Password&#8221;</strong>). We will look at that later.</p>
<p>Now about the Membership.ValidateUser and use of FormsAuthentication. You can use them. That&#8217;s fine! But, if you would like to make your MVC to work across different form factors of computing devices such as Desktop/Mobile, you will have to move it to web layer or plug it from somewhere else to make the Model and Controllers device independant. Because these classes belong to ASP.NET which you do not want to use in Desktop/Mobile.</p>
<h3>5. CMS XML</h3>
<p>That&#8217;s it! Oh, one last thing, because this View (as we have written) requires us to define a CMS variable &#8220;spnPasswordError&#8221; (see View HTML) for this particular View, we need to define it inside our <em><strong>Content </strong></em>(move to the beginning of this document where we defined <em>CmsXmlDirectory</em>) folder. Let&#8217;s create TanzimSaqib.NoBrainer.Sample.Controllers.StaticPageController.xml, which matches the Controller namespace we have in this project. This namespace mapping is important. Put the following XML inside of that.</p>
<pre class="csharpcode"><span class="kwrd">&lt;?</span><span class="html">xml</span> <span class="attr">version</span><span class="kwrd">="1.0"</span> <span class="attr">encoding</span><span class="kwrd">="utf-8"</span> ?<span class="kwrd">&gt;</span>
<span class="rem">&lt;!-- Example of content injection aka CMS capability --&gt;</span>
<span class="kwrd">&lt;</span><span class="html">Views</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">View</span> <strong><span class="attr">pageName</span><span class="kwrd">="AccountLogin.aspx"</span></strong><span class="kwrd">&gt;</span>
<strong>    <span class="kwrd">&lt;</span><span class="html">Content</span> <span class="attr">id</span><span class="kwrd">="spnPasswordError"</span> <span class="attr">cssClass</span><span class="kwrd">="failureNotification"</span><span class="kwrd">&gt;</span>
          Password cannot be empty.<span class="kwrd">&lt;/</span><span class="html">Content</span><span class="kwrd">&gt;</span></strong>
  <span class="kwrd">&lt;/</span><span class="html">View</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">Views</span><span class="kwrd">&gt;</span></pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>As you can see this XML file contains all possible Views that this Controller can handle. For our example of Login screen, we are specifying our View page path as AccountLogin.aspx, inside of that we are defining our CMS variable spnPasswordError, its cssClass as well as the content. These data are modifiable as CMS data as well as injected while rendering the page by NoBrainer.</p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/02-backdrop_net_12x51.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="02 backdrop_net_12x5" border="0" alt="02 backdrop_net_12x5" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/02-backdrop_net_12x5_thumb1.jpg" width="581" height="242"></a>&nbsp;</p>
<p><em>Figure: Open Source in .NET | Open Day, at which NoBrainer was launched</em></p>
<h2>Conclusion</h2>
<p>That way you make your logic seperate from the UI layer, which also makes it unit testable, and deployable to many different form factors of computing devices. It also facilitates the power of CMS. You do not have to give business stakeholders full freedom on your code. Just give them FTP access to the <em>Content </em>folder if you will, and they will take it from there. They will never call you up at the dead night to make some changes to the content just because that&#8217;s important to their business, rather they could do it by themselves.</p>
]]></content:encoded>
			<wfw:commentRss>http://tanzimsaqib.com/329/nobrainer-my-new-open-source-project/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Open Source in .NET &#124; Open Day</title>
		<link>http://tanzimsaqib.com/328/open-source-in-net-open-day/</link>
		<comments>http://tanzimsaqib.com/328/open-source-in-net-open-day/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 01:55:00 +0000</pubDate>
		<dc:creator>TanzimSaqib</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://tanzimsaqib.com/blog/293/open-source-in-net-open-day/</guid>
		<description><![CDATA[Yesterday we arranged an awesome first of its kind event “Open Source in .NET &#124; Open Day” at IDB Bhaban in Dhaka, Bangladesh with Microsoft Bangladesh’s immense help. I had two sessions. One of them was all about introducing great &#8230; <a href="http://tanzimsaqib.com/328/open-source-in-net-open-day/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday we arranged an awesome first of its kind event “<a href="https://www.facebook.com/event.php?eid=222856761104881">Open Source in .NET | Open Day</a>” at IDB Bhaban in Dhaka, Bangladesh with Microsoft Bangladesh’s immense help. I had two sessions. One of them was all about introducing great Open Source softwares that we have with the community. My another presentation was unveiling my new Open Source project that is subject to another post. Photos of the event can be found at on our <a href="https://www.facebook.com/media/set/?set=a.174613115951534.45427.129401070472739">Facebook page</a> and <a href="http://to.ly/bbJF">here</a>.</p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/02-backdrop_net_12x5.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="02 backdrop_net_12x5" border="0" alt="02 backdrop_net_12x5" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/02-backdrop_net_12x5_thumb.jpg" width="574" height="239"></a></p>
<p>The event flow was as follows:</p>
<ul>
<li>Vincent Quah &#8211; Opening Speech
<li><a href="http://fb.com/SaqibRocks">Tanzim Saqib</a> &#8211; Wilderness of Open Source Softwares in .NET (this blog post)
<li><a href="https://www.facebook.com/rizviews">Rizwanur Rashid</a> – <a href="http://www.slideshare.net/rizviews/data-driven-automationwithwatin">Data-driven Test Automation – A WatiN Approach</a>
<li><a href="https://www.facebook.com/kazimanzurrashid">Kazi Manzur Rashid</a> – <a href="http://bit.ly/q44HW7">Starting an Open Source project from Ground Up!</a>
<li><a href="https://www.facebook.com/ashraful.alam" class="broken_link">Ashraful Alam</a> – <a href="http://www.slideshare.net/joycsc/getting-people-excited-about-your-open-source-project">Getting People Excited about your Open Source project</a>
<li>Tanzim Saqib &#8211; Project Showcase: <a href="http://tanzimsaqib.com/294/nobrainer-my-new-open-source-project/">NoBrainer</a>
<li><a href="https://www.facebook.com/omar.al.zabir" class="broken_link">Omar Al Zabir</a> – Project Showcase: <a href="http://dropthings.googlecode.com/">Dropthings</a>
<li>Omar Al Zabir – Bootstrap your Open Source project to Cash
<li>Ashraful Alam &amp; <a href="https://www.facebook.com/wahid.bin.ahsan" class="broken_link">Wahid bin Ahsan</a> – <a href="http://www.slideshare.net/joycsc/employee-info-starter-kit">EmployeeInfo Starter Kit</a>
<li><a href="https://www.facebook.com/omiazad">Omi Azad</a> – Wrap up, prize distribution, announcement of .NET Codex. </li>
</ul>
<p>Thanks to Microsoft Bangladesh for making this event possible. I was truly amazed by the interactions happened with the audience. Thanks to them for making this event a grand success. Electrifying environment, effective sessions, lunch, freebies, free gifts including a Windows Phone, very active crowd – man, this event couldn’t be any better than this.</p>
<p>Here you go a post based on my first presentation. It was a lightweight session. The objective was to introduce popular .NET Open Source projects with the local community.</p>
<h2>Source Control, Issue Tracker, Wiki</h2>
<h4>TortoiseSVN: </h4>
<p><a href="http://code.google.com/p/tortoisesvn/">http://code.google.com/p/tortoisesvn/</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image20.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb19.png" width="426" height="461"></a></p>
<h4>AnkhSVN:</h4>
<p><a href="http://ankhsvn.open.collab.net/">http://ankhsvn.open.collab.net/</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image21.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb20.png" width="421" height="508"></a></p>
<h4>BugNET:</h4>
<p><a href="http://www.bugnetproject.com">http://www.bugnetproject.com</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image22.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb21.png" width="514" height="551"></a></p>
<h4>ScrewTurn Wiki:</h4>
<p><a href="http://www.screwturn.eu">http://www.screwturn.eu</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image23.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb22.png" width="511" height="398"></a></p>
<h2>Core Framework</h2>
<h4>.NET Framework:</h4>
<p><a href="http://bit.ly/40Nmi">http://bit.ly/40Nmi</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image24.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb23.png" width="514" height="411"></a></p>
<h4>.NET Micro Framework:</h4>
<p><a href="http://netmf.codeplex.com/">http://netmf.codeplex.com/</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image25.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb24.png" width="509" height="386"></a></p>
<h4>ASP.NET MVC: </h4>
<p><a href="http://aspnet.codeplex.com/">http://aspnet.codeplex.com/</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image26.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb25.png" width="511" height="409"></a></p>
<h4>ASP.NET AJAX Control Toolkit:</h4>
<p><a href="http://ajaxcontroltoolkit.codeplex.com">http://ajaxcontroltoolkit.codeplex.com</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image27.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb26.png" width="510" height="289"></a></p>
<h4>Mono | MonoDevelop | MoonLight:</h4>
<p><a href="http://www.mono-project.com">http://www.mono-project.com</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image28.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb27.png" width="507" height="357"></a></p>
<h2>Software Development</h2>
<h4>MonoUML:</h4>
<p><a href="http://www.mono-project.com">http://www.mono-project.com</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image29.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb28.png" width="513" height="385"></a></p>
<h4>All-in-One Code Framework: </h4>
<p><a href="http://1code.codeplex.com">http://1code.codeplex.com</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image30.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb29.png" width="493" height="230"></a></p>
<h4>Enterprise Library: </h4>
<p><a href="http://entlib.codeplex.com">http://entlib.codeplex.com</a></p>
<ul>
<li>Unity – IOC
<li>Caching
<li>Validation
<li>Policy Injection </li>
</ul>
<h4>Castle Project: </h4>
<p><a href="http://castleproject.org">http://castleproject.org</a></p>
<ul>
<li>ActiveRecord
<li>MonoRail &#8211; MVC
<li>Windsor – IOC
<li>NVelocity – Template engine
<li>DynamicProxy </li>
</ul>
<h4>Nancy: </h4>
<p><a href="https://github.com/thecodejunkie/Nancy">https://github.com/thecodejunkie/Nancy</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image31.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb30.png" width="481" height="345"></a></p>
<h4>Inversion of Control</h4>
<ul>
<li>Autofac
<ul>
<li><a href="http://code.google.com/p/autofac/">http://code.google.com/p/autofac/</a> </li>
</ul>
<li>Spring.NET
<ul>
<li><a href="http://www.springframework.net/">http://www.springframework.net/</a> </li>
</ul>
<li>StructureMap
<ul>
<li><a href="http://structuremap.net/structuremap/" class="broken_link">http://structuremap.net/structuremap/</a> </li>
</ul>
<li>NVelocity – Template engine
<li>DynamicProxy </li>
</ul>
<h4>Test-driven:</h4>
<ul>
<li>xUnit
<ul>
<li><a href="http://xunit.codeplex.com/">http://xunit.codeplex.com/</a> </li>
</ul>
<li>NUnit
<ul>
<li><a href="http://www.nunit.org/">http://www.nunit.org/</a> </li>
</ul>
<li>StructureMap
<ul>
<li><a href="http://structuremap.net/structuremap/" class="broken_link">http://structuremap.net/structuremap/</a> </li>
</ul>
<li>Test Driven
<ul>
<li><a href="http://www.testdriven.net/">http://www.testdriven.net/</a> </li>
</ul>
<li>EasyMock.NET
<ul>
<li><a href="http://sourceforge.net/projects/easymocknet/">http://sourceforge.net/projects/easymocknet/</a> </li>
</ul>
<li>Fake It Easy
<ul>
<li><a href="http://code.google.com/p/fakeiteasy/">http://code.google.com/p/fakeiteasy/</a> </li>
</ul>
<li>MSpec
<ul>
<li><a href="https://github.com/machine/machine.specifications">https://github.com/machine/machine.specifications</a> </li>
</ul>
<li>Moq
<ul>
<li><a href="http://code.google.com/p/moq">http://code.google.com/p/moq</a> </li>
</ul>
<li>WatiN
<ul>
<li><a href="http://watin.org/">http://watin.org/</a> </li>
</ul>
</li>
</ul>
<h4>Telerik Extensions for ASP.NET MVC:</h4>
<p><a href="http://telerikaspnetmvc.codeplex.com/">http://telerikaspnetmvc.codeplex.com/</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image32.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb31.png" width="257" height="354"></a></p>
<h4>Facebook SDK:</h4>
<ul>
<li><a href="http://facebooksdk.codeplex.com/">http://facebooksdk.codeplex.com/</a>
<li><a href="https://github.com/facebook/csharp-sdk" class="broken_link">https://github.com/facebook/csharp-sdk</a>
<li><a href="http://facebooknet.codeplex.com/">http://facebooknet.codeplex.com/</a> </li>
</ul>
<h4>Others:</h4>
<ul>
<li>NCover
<li>NAnt
<li>CruiseControl.NET
<li>Log4Net
<li>Elmah
<li>SharpPdf
<li>Nhibernate
<li>Subsonic
<li>SharpArchitecture </li>
</ul>
<h2>Blog Engines</h2>
<ul>
<li>dasBlog
<ul>
<li><a href="http://dasblog.info/">http://dasblog.info/</a> </li>
</ul>
<li>BlogEngine
<ul>
<li><a href="http://www.dotnetblogengine.net/">http://www.dotnetblogengine.net/</a> </li>
</ul>
<li>SubText
<ul>
<li><a href="http://subtextproject.com">http://subtextproject.com</a> </li>
</ul>
</li>
</ul>
<h2>Content Management Systems</h2>
<h4>Orchard:</h4>
<p><a href="http://www.orchardproject.net">http://www.orchardproject.net</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image33.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb32.png" width="473" height="392"></a></p>
<h4>DotNetNuke:</h4>
<p><a href="http://dotnetnuke.codeplex.com/">http://dotnetnuke.codeplex.com/</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image34.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb33.png" width="470" height="396"></a></p>
<h4>mojoPortal:</h4>
<p><a href="http://www.mojoportal.com">http://www.mojoportal.com</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image35.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb34.png" width="473" height="297"></a></p>
<h4>umbraco:</h4>
<p><a href="http://umbraco.com">http://umbraco.com</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image36.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb35.png" width="460" height="364"></a></p>
<h2>Games Engines</h2>
<h4>Axiom3D:</h4>
<p><a href="http://axiom3d.net">http://axiom3d.net</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image37.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb36.png" width="460" height="345"></a></p>
<h2>Less Microsoftie</h2>
<h4>IronPython:</h4>
<p><a href="http://ironpython.codeplex.com/">http://ironpython.codeplex.com/</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image38.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb37.png" width="474" height="442"></a></p>
<h4>IronRuby:</h4>
<p><a href="http://ironruby.net/">http://ironruby.net/</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image39.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb38.png" width="464" height="294"></a></p>
<h4>DroidExplorer:</h4>
<p><a href="http://de.codeplex.com/">http://de.codeplex.com/</a></p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/image40.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/image_thumb39.png" width="466" height="274"></a></p>
<h4>List of All Great ASP.NET Open Source projects: </h4>
<p><a href="http://www.asp.net/community/projects">http://www.asp.net/community/projects</a></p>
<h4>List of All Great Windows Forms/WPF Open Source projects: </h4>
<p><a href="http://windowsclient.net/community/">http://windowsclient.net/community/</a></p>
<h4>Popular Microsoft Open Source destinations: </h4>
<ul>
<li><a href="http://www.codeplex.com/">http://www.codeplex.com/</a>
<li><a href="http://www.outercurve.org/">http://www.outercurve.org/</a> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tanzimsaqib.com/328/open-source-in-net-open-day/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Microsoft Student Partners: The Missing Manual</title>
		<link>http://tanzimsaqib.com/208/microsoft-student-partners-the-missing-manual/</link>
		<comments>http://tanzimsaqib.com/208/microsoft-student-partners-the-missing-manual/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 06:47:15 +0000</pubDate>
		<dc:creator>TanzimSaqib</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Microsoft Student Partners]]></category>
		<category><![CDATA[MSP]]></category>
		<category><![CDATA[Practice]]></category>
		<category><![CDATA[Public Relations]]></category>

		<guid isPermaLink="false">http://tanzimsaqib.com/blog/208/microsoft-student-partners-the-missing-manual/</guid>
		<description><![CDATA[Audience of this post: all who are involved with MSP program, MSPs, MSP wannabes. In this post I will show if I were, hypothetically, the designer of the Microsoft Student Partners program, how a few things of the program would &#8230; <a href="http://tanzimsaqib.com/208/microsoft-student-partners-the-missing-manual/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Audience of this post:</em> all who are involved with MSP program, MSPs, MSP wannabes.</p>
<p>In this post I will show if I were, <em><strong>hypothetically</strong></em>, the designer of the Microsoft Student Partners program, how a few things of the program would have been different. Not that anybody asked though! In some countries, their Leads in Microsoft lay out how they want to see MSP program operational in their localities. That’s probably best that way. The others, mostly from under-developed or developing countries, are still in search of better ways to make the most out of this program. I have binged online, talked to many MSPs across the world, but couldn’t find a single manual that helps them get started. So, this post is more appropriate for the later. The way I see a few quality attributes of the program, if they are not enforced by the program policy (I’m unsure if it is already), it deviates in practice from country to country.</p>
<p><em>Disclaimer:</em> In a few occasions, they have also reported in interview that they had trouble to communicate with their Leads, mostly because they were foreigners to those countries. If all these match with your local MSP program, I can assure you that this post was not prepared based on any particular locality.</p>
<p>One of the Microsoft’s goals, I believe, was to line students up and provide them a common platform to excel. I agree that Microsoft’s vision and goals are different from country to country, so their related operations would not be the same. But, when it comes to MSP, it is the same for all – which I have found everybody is missing out. No matter if you are satisfied or unsatisfied with your local MSP program, point this manual to your Leads and see if you already are doing these or have any scope to improve.</p>
<h2>MSP program &#8211; What’s the <em>Fuzz</em>?</h2>
<p>First of, I am starting with general information. It’s a shame that I have been awarded MVP twice and have been playing with Visual Studio since pre-.NET era, until recently I haven’t heard of <a href="https://www.microsoftstudentpartners.com">Microsoft Student Partners</a> (MSP), which was founded in 2001. MSP is a worldwide educational program that enhances students <em>employability</em> by offering trainings that are not necessarily part of the academia. This is a noble and an amazing program. Every MSP should find herself privileged of such an opportunity to truly shine. Microsoft is recognizing you as one of those who are different than the rest and nurturing your talent even further to flourish through MSP program. There are approximately 3000 MSPs worldwide. Unfortunately, this program is not operated in <em>all</em> the countries. You should check local Microsoft office whether they are operating it through your educational institute. If they do not, ask your Head of IT to contact them. Participants of the MSP program receive huge benefits, which is not the topic of today’s post.</p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/msp.jpg"><img style="display: inline" title="msp" alt="msp" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/msp_thumb.jpg" width="565" height="424"></a></p>
<h2>Recipe for MSP Success</h2>
<p>If you are operating MSP program in your locality. You need only two things: <strong><em><font color="#0000ff">control</font></em></strong> and <font color="#ff0000"><strong><em>leadership </em></strong><font color="#000000">to make it a success</font><strong><em>.</em></strong></font></p>
<h2>Awarding/Evaluating MSP</h2>
<p>Every Microsoft country office has different rules governing this process. Go to <a href="https://www.microsoftstudentpartners.com">Microsoft Student Partners</a> and see which rules apply to you towards becoming an MSP. For some countries, it is as detail and interactive as filling up a long form and posting 3-minute YouTube video. However, some countries do not spend time and effort on this, they simply call for Resumes, instead. Candidates who are good fit, get called for interviews. How do you know you could qualify for MSP? For starters: if you are a student and love to throw parties, especially technology parties, and hesitate not to share your work and passion for Microsoft tools with your community, you could be a great fit!</p>
<p>Students from three disciplines have greater chances to succeed in MSP program than the rest: Computer Science, IT, and Business. For example, if you are a student of History, or Microbiology, MSP is probably not the best use of your time, nor MSP program can benefit from you.</p>
<h1><strong><em>What I see differently:</em></strong> </h1>
<p><strong><em></em></strong>It is very easy to be an MSP in some countries though, it was ideally supposed be something to achieve. Making something easier for the sake of simplicity is not an effective way to find out the ones who are more deserving for the award. At least a short phone interview is required to get an idea if she is someone who would potentially uphold company’s image or not. In addition, students in the program should be strictly to Computer Science, IT and Business.</p>
<p>The following I see as the criteria to evaluate someone for MSP:</p>
<ul>
<li><u>Technical expertise on Microsoft stack </u>
<li>Community activity: visible effort on
<ul>
<li><font color="#0000ff">creating new leaders </font><font color="#000000">(more later on)</font>
<li><font color="#0000ff">seeking knowledge</font>
<ul>
<li>playing with .NET </li>
</ul>
<li><font color="#0000ff">demos</font> </li>
</ul>
<li><em>Faculty engagement </em>(more later on)
<li><font color="#9b00d3">Positive public relations</font>
<ul>
<li>Because, the fellow is a Microsoft face in the campus, inappropriate use of language while debating or in public threads should ideally warn her for a few times and then subsequently disqualify from the program
<ul>
<li>Why? No one will award you their partner, if you don’t care about their image in return. </li>
</ul>
</li>
</ul>
</li>
</ul>
<blockquote><p><em>“I want everybody here to be careful about what you post on Facebook, because in the YouTube age whatever you do, it will be pulled up again later somewhere in your life, That’s number one.” – Barack Obama.</em></p>
</blockquote>
<p><font color="#000000">All MSPs should be evaluated in every year’s end to renew their award. </font></p>
<h1><em>Creating New Leaders</em></h1>
<p>The ultimate goal of Microsoft community programs both MVP and MSP is profound. It is &#8211; creating even more leaders. Once you become an MVP/MSP, it is your responsibility to seek out the ones like yourself: knowledgeable, passionate, sharing, caring, and a demo guy. If you think becoming an MVP/MSP, is all about beating Microsoft’s drums (more later on) mindlessly, you are wrong.</p>
<h1><em>Faculty Engagement</em></h1>
<p>I have heard couple of very sorry stories as to how students are crying inside for knowledge on industry practices, putting theory at work, latest technology and tools. When I asked why they are not turning to the faculties who should be happy to mentor them. They replied their faculties did not cope with the latest advancement of the technology world. They are still in their times of study and their researches are even more focused on theory. That gets me thinking and I think it is time to innovate something profound. Students/MSPs should take the initiative, instead, to let the faculties know about the existence of the cool technologies that Microsoft, the first and the largest software company in the world, produce so that they can take it from there. From that point on, they can mentor back to the students blended their Computer Science theories at work. If I were the designer of MSP program worldwide, I would have put this at the top most priority. Now you may ask what if the MSPs themselves, are not knowledgeable? Read on.</p>
<h2>The MSP Roles</h2>
<p>OK – now I am an MSP, but who do I report? You must have received a welcome email and credentials to your new email addresses (ending msptechrep.com, student-partners.com, the other one may be country specific) upon acceptance of your enrolment. Chances are, the person you have received that email from is your primary contact. The next thing you will ask what are the roles in MSP? That’s something I have pondered a lot and the more I did, the more I got confused. Different countries have implemented this in different ways.</p>
<p><strong><em>Student Partner:</em></strong> This role does not have any official name. If you’re enrolled in MSP, your default role is this.</p>
<p><strong><em>Campus Lead:</em></strong> I understand the fact that a team of 4-6 people needs a coordinator – they are often called <em>Campus Lead</em>. That’s fine as long as the team is democratized. However, there are obvious caveats of centralized leadership for small teams. Unfortunately, it starts monarchy in some cases in absence of democracy. Although, It is expected and natural that the youngsters who are trying out new “leadership” thing in their lives, may experience hiccups on their way, team members of such seek ways to please the <em>Campus Lead</em> which often leads to unwanted situations that demand resolutions and interventions from outside. <em><font color="#0000ff">Unhappy MSPs = failure</font></em>.</p>
<p><strong><em>The Other Roles:</em></strong> There are other roles that confuse me a lot: Country/Academic Lead/Event/Marketing/Media Evangelist – all are students. I am unsure what these roles do, but I assume when a campus hires more MSPs (disregarding the criteria I have mentioned above) than it can accommodate, roles such as those emerge. By definition, every MSP is capable of playing the roles mentioned above. I’d suggest to have a cap on MSP count per institute. Otherwise it will give more power to the <em>Campus Lead/that institute over other institutes</em> than necessary as I have mentioned as <em>caveats of centralized leadership for small teams</em> in the paragraph earlier.</p>
<h1><strong><em>What I see differently:</em></strong> </h1>
<ol>
<li>Everybody should be considered equal in order to provide everybody equal opportunity to be a leader. </li>
<li>A decision should be made from the campus taking everybody’s vote in account. </li>
<li>All MSPs are fathers and mothers of two: success and failure. No blame on individual. </li>
<li>When malpractices such as credit hunting start to make presence, you would know leadership has been centralized somehow and chances are it is monarchical. </li>
<li>Help each other to help yourself. </li>
</ol>
<h2>MSP Misconceptions</h2>
<p>Some of the popular misconceptions around MSP are:</p>
<ul>
<li>MSP is about arranging seminars and hiring industry people/MVPs to present their talks
<li>MSP is about mindlessly beating Microsoft’s drums
<li>MSP is about helping Microsoft selling their products
<li>MSP is about stealing students as early adopters of Microsoft tools </li>
</ul>
<h2>MSP Conceptions</h2>
<p>But the truth is way farther from the myth. MSP is about YOU.</p>
<ol>
<li>You should be <font color="#c0504d"><strong>very active in the community </strong></font>
<ol>
<li>with your own talks.. each of the MSPs. </li>
</ol>
<li>You should
<ol>
<li><font color="#0000ff"><strong>Learn/Gather knowledge</strong></font>
<li>Seek pointers/training from the MVPs
<ol>
<li>Bang your head against Microsoft office’s walls for an MVP to learn from, I’m sure they’d be more than happy to facilitate that
<li>That way MVPs, can contribute to MSP program without officially being part of it. </li>
</ol>
</li>
</ol>
<li>Follow other MSPs
<ol>
<li>Learn from each other: that way all MSPs will get equal opportunity to become leaders
<li>Remember, becoming a Campus Lead should not be your goal of life
<ol>
<li>The world is big enough to accommodate all of you once you learn how to lead </li>
</ol>
</li>
</ol>
<li><font color="#9b00d3"><strong>Be not scared of sharing</strong></font> – it won’t make you incompetent
<ol>
<li>Remember your followers can copy your work, but they cannot copy you (your brain). </li>
</ol>
<li>When you will become knowledgeable and start to share goodness of Microsoft with the community:
<ol>
<li>Don’t blame Microsoft have asked you to do so.
<ol>
<li>Because they did not. </li>
</ol>
<li>It’s expressive human nature to share cool things with the people s/he cares. </li>
</ol>
<li>The more you will know about Microsoft
<ol>
<li><font color="#0000ff"><strong>The more you will fall in love with the company</strong></font>
<li><font color="#9b00d3"><strong>The more you will tend to express your love</strong></font>
<li>And trust me, no one will prevent you from doing so! </li>
</ol>
<li><font color="#c0504d"><strong>When students will take you as a leader?</strong></font>
<ul>
<li>When you will:
<ol>
<li>initiate dialogs
<li>build cool demos
<li>and showcase
<li>allow students to connect with you and Microsoft technology
<ol>
<li>Why Microsoft technology?
<ol>
<li>Microsoft is providing you all the logistics support you may possibly need </li>
</ol>
</li>
</ol>
</li>
</ol>
<li>engage faculties in the conversations
<li>NOT mindlessly fight for Microsoft </li>
</ul>
<li>Why should you be an early adopter of Microsoft tools?
<ul>
<li>Microsoft is
<ul>
<li>creating learning environment
<li>giving away all software they built to see you excel
<li>facilitating communities to grow to empower you
<li>arranging nationwide seminars and trainings
<li><em><font color="#d16349">EVERYTHING FOR FREE</font></em> </li>
</ul>
</li>
</ul>
<li>Why MSP program?
<ol>
<li>It facilitates <em><font color="#9b00d3">collaborative learning environment</font></em>
<li>Increases your <strong><em><font color="#0000ff">employability</font></em></strong>
<ol>
<li>There’s a huge gap from academia to industry </li>
</ol>
</li>
</ol>
<li>An aid for making the first step to your professional image
<ol>
<li>Walk, talk, act like a professional </li>
</ol>
<li>If you are a fan of MSP program
<ol>
<li>Why not spreading the word to your friends in other institutions? </li>
</ol>
<li>MSP is not a prize
<ul>
<li><em><font color="#0000ff">It’s a responsibility to create leaders</font></em>
<li>It’s a privilege and a huge challenge
<li><strong><font color="#ff0000">There are hundreds of your friends want to be MSP. Why you? </font></strong></li>
</ul>
</li>
</ol>
<h2>Ask Yourself If You Want to be a Perfect MSP</h2>
<ol>
<li><strong>Are you worth following?</strong>
<li>If you do not make yourself cool, nobody will do that for you!
<li><font color="#0000ff">If you think your Ray-ban sunglasses will make you cool, MSP is not your program.</font>
<li>It is: 1. knowledge and 2. leadership that makes you cool!
<li>It is not about how cool you think you are, rather how cool your followers think you are.
<li>Hint: posting The Rock’s/Undertaker’s theme song every now and then on Facebook does not automatically make you cool.
<li>What is the first and foremost criteria to be a leader? <br />Marketing skills? Cool vibe?
<ul>
<li>Communication skills?
<li>Pretending to be a leader?
<li>NO. <strong><em><font color="#ff0000">Becoming knowledgeable!</font></em></strong>
<li>Does not mean being able to share cool links from the web on Facebook that everybody is sharing. </li>
</ul>
</li>
</ol>
<h2>Conclusion</h2>
<p>I have many more ideas about MSP, but I should not write all of them down in one post. In this post I have tried to put together several lists of actionable measures that can be taken to streamline MSP program worldwide and will help you to be a better MSP everyday. This post is particularly helpful for those who need help to take the most out of the program and want to have better control over the teams spanned across the region. If you find it helpful, let me know in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://tanzimsaqib.com/208/microsoft-student-partners-the-missing-manual/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The ‘Web of Pain’ for Those Who Did Not Adopt Cloud Yet!</title>
		<link>http://tanzimsaqib.com/201/the-web-of-pain-for-those-who-did-not-adopt-cloud-yet/</link>
		<comments>http://tanzimsaqib.com/201/the-web-of-pain-for-those-who-did-not-adopt-cloud-yet/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 15:26:24 +0000</pubDate>
		<dc:creator>TanzimSaqib</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[failures]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[pain points]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://tanzimsaqib.com/blog/201/the-web-of-pain-for-those-who-did-not-adopt-cloud-yet/</guid>
		<description><![CDATA[No one wants downtime. In this age of Web 2.0 (or even more), the usage of internet based applications has been redefined. People tend to engage themselves in much more volume than ever before, making it even harder for infrastructure &#8230; <a href="http://tanzimsaqib.com/201/the-web-of-pain-for-those-who-did-not-adopt-cloud-yet/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>No one wants downtime. In this age of Web 2.0 (or even more), the usage of internet based applications has been redefined. People tend to engage themselves in much more volume than ever before, making it even harder for infrastructure guys to keep up the servers in full health. Server uptime is often one of the key factors for customer retention. Mashups built on top of open API based services are dependent on the health of the data source. For example, if Twitter is down, no Twitter-mashups may work without its own previously stored tweets. For complex, Line of Business and mission critical systems such as financial applications, availability is a vital aspect in success of the business. Whether the application is being served from on-premise servers or third party datacenters, there are numerous things that can go wrong and may directly impact availability.</p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/09/TwitterOverCapacity.png"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="TwitterOverCapacity" alt="TwitterOverCapacity" src="http://tanzimsaqib.com/wp-content/uploads/2011/09/TwitterOverCapacity_thumb.png" width="563" height="404"></a></p>
<h2>1. Web or Database server got corrupted</h2>
<p>No wonder. It can happen. Anytime! There are various reasons as to why it may occur. You may have automatic Windows Updates turned on, and it got itself installed new patches that are not working so well with your software. You may have installed new software, hardware or driver for your newly installed hardware, weak firewall, Antivirus or Antispyware got failed, disk failure and many more. Security threats are up-to-date and intelligent, so if you do not regularly install Service Packs, fixes, this may result in to server crash too. The resolution may be reinstalling Windows and setting up all other applications necessary, which may lead to a really long downtime.</p>
<h2>2. Hard disk failure</h2>
<p>The single most important hardware in your server is probably the hard disk. You may have static resources cached in many places like RAM, Content Delivery Network, etc. However, dynamic queries like displaying list of items from inventory, getting a list of currently logged on user and so on, involve database. All kinds of databases store data in hard disk. File and database operations are more dependent on hard disk usage than other operations. Large and complex queries, even excessive calls to less complicated queries and file operations may be responsible for a relatively cheaper hard disk to get overheated, and hence turn itself down or get damaged. Hard disk failures are often hard to fix, costly and a big threat to application stability unless regular and proper backups were taken or there is no effective replication implemented in place.</p>
<h2>3. Database replication is not easy</h2>
<p>If your primary database server goes offline, you need a standby server that can serve requests almost instantly with complete and most current data. Replication ensures propagation of the update to the slaves, the primary server has just made. The slave then acknowledges, thus allows the sender to ripple the same through subsequent slaves. While distributed databases are not technically difficult to implement in local datacenter, performance-wise they are not the same since the machines are networked. On the other hand, to mitigate the situation of natural disasters, terrorist attacks, or such bring your datacenter down, you may want to have distributed datacenters in different continents across the globe.</p>
<h2>4. Power Outages and Internet Cable-cuts</h2>
<p>Information superhighways are super connected with each other. When a user hits your website, the request travels across several hops around the world to reach your server. Some of them may not have backup connectivity which may make your site unavailable to various parts of the world when they are down. Although, most well reputed hosting providers have connectivity to good backbones which also take care of decreasing the number of hops by intelligent routing, hence reducing chance of downtime. Power outages can happen in many ways and frequency of it varies in different countries. It is even harder for on-premise server environment to stay online without backup power generators. Both power and internet outages may occur very few times a year.</p>
<h2>5. Server Monitoring is painful</h2>
<p>There are so many things to look out regularly to ensure the servers stay in maximum health. You have to keep an eye on how it performs in extreme load, response/second to the requests over time, request execution time, disk read/write time, memory usage, CPU usage and so on. Although there are tools which can do this job for you, however, you still have to go through the logs and reports to find out what went wrong, when, and figure out possible reasons.</p>
<h2>6. Architecting network is challenging</h2>
<p>Network architecture for your internet application should be done well. To scale out you need more servers to be added to the system. The network architecture that can handle scalability, load balance the servers in harmony, keep network latency at minimum, replications requires network experts and visionary architects. Network latency directly affects user experience, so to keep it low, you may need to have datacenters established across the continents. A good architecture must have a door open for that too. Bad network architecture not only restricts you to flawlessly scale your business and present user with good experience, but also troubleshooting it can cause you sleepless nights.</p>
<h2>7. Scaling is inconvenient</h2>
<p>We, the programmers and architects may not always write code and design keeping scalability in mind. Even if we do, it often happens that userbase goes beyond expectation that the whole architecture requires to be redesigned, or the product finds less userbase than anticipated that most of the IT infrastructure stay underused, hence cause waste in operating cost. Both ways, scaling is a difficult decision to make. Whether we would like to scale up, down or out, it involves hundreds other technology and business criteria to be taken into consideration. Scaling does not happen right away as you have to have several meetings with IT department, business strategists, policy makers, etc. in your company to come an agreement.</p>
<h2>8. More attention on infrastructure layer</h2>
<p>The casualties take place in infrastructure layer distracts the whole company whether you are a developer or business executive and gets you put less attention to your work. You have a demo to a potential customer and your demo server stopped working right before it. This server is down, that server is up, but that functionality is not working, we are blocked on background services to run, this server has the wrong URL redirection – these are the most common sentences you hear in the morning and throughout the day in a company that uses IT.</p>
<p>In this post, I have shown 8 key pain points of traditional server systems. Hope this will give you a little glimpse of a few challenges of a living software.</p>
]]></content:encoded>
			<wfw:commentRss>http://tanzimsaqib.com/201/the-web-of-pain-for-those-who-did-not-adopt-cloud-yet/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Process Template for Small Startups</title>
		<link>http://tanzimsaqib.com/179/a-process-template-for-small-startups/</link>
		<comments>http://tanzimsaqib.com/179/a-process-template-for-small-startups/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 06:01:46 +0000</pubDate>
		<dc:creator>TanzimSaqib</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Small team]]></category>
		<category><![CDATA[Startup]]></category>
		<category><![CDATA[Template]]></category>

		<guid isPermaLink="false">http://tanzimsaqib.com/blog/179/a-process-template-for-small-startups/</guid>
		<description><![CDATA[Scenario 1: You have founded a startup with couple of your friends, and now you are struggling to figure out who should do what without making relationship with cofounders bitter enough to fail. Scenario 2: You work for an enterprise &#8230; <a href="http://tanzimsaqib.com/179/a-process-template-for-small-startups/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em><strong>Scenario 1:</strong></em> You have founded a startup with couple of your friends, and now you are struggling to figure out who should do what without making relationship with cofounders bitter enough to fail.</p>
<p><strong><em>Scenario 2:</em></strong> You work for an enterprise and you are given a small team to lead. As it usually turns out, you become the central point of authority, contact and accountability for the work that your team carries out. You are visible to the enterprise, not your teammates. That gives them flexibility to be casual enough to mess up the assignments (vampirific deployment nightmares!) too often. So you want discipline!</p>
<p><strong><em>Scenario 3:</em></strong> You have formed a <a href="http://www.imaginecup.com/">Microsoft Imagine Cup</a> team: three students and one mentor in your team. Now how do you start working in an organized and efficient way spending less time over <em>who’s the daddy now</em> argument?</p>
<p>This post does not tell you about a Software Development Life Cycle (SDLC) template. SDLC is a workflow that is imposed on development lifetime of a software from start to finish. There are several models such as <a href="http://en.wikipedia.org/wiki/Waterfall_model">Waterfall</a>, <a href="http://en.wikipedia.org/wiki/Spiral_model">Spiral</a>, <a href="http://en.wikipedia.org/wiki/Iterative_and_incremental_development">Iterative</a>, <a href="http://en.wikipedia.org/wiki/Agile_software_development">Agile</a>, but the one you choose for the particular software project you are working on, depends on the nature of requirements, delivery (doesn’t mean a release) frequencies, release cycles to name a few.</p>
<p>This post, however, does help newbies to start their startups from scratch by establishing an organogram/chain of responsibility within you team without chaining you real tight. That being said, your team members are absolutely free to roam inside your team.</p>
<h2>Freedom is in Visibility</h2>
<p>Many argue that if everybody knows about everybody’s work – that’s just too much accountability, control, interference and pressure over team members. But, I personally see no reason why anybody who is working honestly should be ashamed of reporting in public (by public I mean the team) about what he has done and about to start doing. Actually visibility earns freedom across the team and it is very essential to gain more speed in development. Freedom is a feature as requirement to the Process Template I am proposing here and free flow of information across the team is absolutely critical to the success of its implementation. Here are a few tools that facilitate this practice.</p>
<h3>Bug/Issue/Feature Tracking System</h3>
<p>I prefer one system for tracking all bugs, features and issues, instead of separate system for each, so that you do not have to keep track of different logins and you can ensure such closely related information is in one place. Remember, the more system you will introduce in your team, the more it will demand maintenance overhead. Since you are reading my blog post, chances are that you are using Windows for your development work. I recommend <a href="http://bugnetproject.com/">BugNET</a>, a free and open source project that can help you track your project’s health. Users can report bugs, add feature requests, open issues and update statuses of the tasks. This is a very comprehensive web based software that allows to manage multiple projects for small to medium size companies without extending or customizing it.</p>
<h3>Source Control</h3>
<p>Because you will be working in a team, there is no better way to do work in a collaborative environment than hosting your codebase and often documents in a Source Control, in another name Version Control system. For the sake of visibility, you should create logins for up to CEO or the owner of the business, so that he can run a few tools sometimes and track progress/<a href="http://tanzimsaqib.com/113/what-changes-were-made-in-svn/">changes</a> or who is checking in what. I highly recommend <a href="http://www.visualsvn.com/server/">VisualSVN</a> Server that you can use to manage SVN projects visually and easily without needing to run text-based maintenance scripts. It is free as long as you are not becoming an Enterprise. Although you can go for <a href="http://mercurial.selenic.com/">Mercurial</a> or <a href="http://git-scm.com/">Git</a> as well, but I am assuming you are more familiar with SVN since it is the most widely used Version Control system. However, if your project is open source, obviously you can pick up one from there: <a href="https://github.com/">Github</a>, <a href="http://code.google.com/hosting/">Google Code</a> or <a href="http://codeplex.com/">Codeplex</a>.</p>
<h3>Wiki</h3>
<p>You need to put up a wiki to centralize team’s knowledgebase collaboratively. You should start creating articles and document everything about your project in depth. It could be a ‘Getting Started with the codebase’ guide for newcomers. It could be detailed requirements. It could be the process model for your team’s work. It could be a list of important URLs and network shared file paths. Instead of spawning email threads, it is smarter and more organized to wikify your project related information that are worth sharing across the team. One of the reasons why it is smarter is that you can avoid email clutter in a wiki after you have searched for certain topic. I’d have recommended you <a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>, but I am assuming you are using Windows, so <a href="http://www.screwturn.eu/">Screwturn Wiki</a> is the best open source ASP.NET wiki option that I recommend which of course has all necessary features of a fine and standard wiki software in the industry.</p>
<h2>The Process Template</h2>
<p>Now that we have learnt to gain visibility across the team, it is time we start talking about the Process Template that you can use as-is or customize according to your own needs. I am proposing a very simple yet powerful team model that can be used as a template right upfront for all small teams to kick off their great ventures.</p>
<p><a href="http://tanzimsaqib.com/wp-content/uploads/2011/08/TeamProcess.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="TeamProcess" border="0" alt="TeamProcess" src="http://tanzimsaqib.com/wp-content/uploads/2011/08/TeamProcess_thumb.png" width="586" height="395"></a></p>
<p>There are four types of people in this model, however, it does not necessarily mean this model applies to team comprises of 5 or more persons.</p>
<ul>
<li><strong>Project Management/CEO/Business owner:</strong> All are accountable to this person. This person owns the endeavor and everybody answers to her. She knows the overall business objectives, sets strategy and lays out goals in broader perspective. Even if all of you in the team shares the same stock, one or more people among you have to own the projects. If you are forming a team for competing in the contests like Imagine Cup, this guy is your mentor.
<li><strong>Technical Project Manager:</strong> This guy oversees the technical management. In some companies, he is known as Vice President – Development. Most of his daily time goes to server and resource management, allocation, wiki, bug/feature tracking, task breakdown. He usually drinks a lot of coffee, uses smartphone to answer emails and questions as promptly as possible, since the rest of the team is waiting on his replies. He is also responsible for requirement analysis in collaboration with the Software Architect/CTO. He gets what he needs from the team. For a very small team, multiple people should distribute his responsibilities among themselves. If you are a bunch of inexperienced people starting up, you need to appoint someone who is relatively better manager of himself than that of the rest.
<li><strong>Software Architect/CTO:</strong> This person takes over the technological side of the projects. He listens to the Management and works with Technical Project Manager to breakdown the tasks, milestones and delivery deadlines. He models architectures of the projects, and hands over the blueprints to the development team, which are executable and actionable. He is also responsible for providing with technological guidance and support to the team during development as well as later in post-production. The most knowledgeable person in your team should be appointed as the Software Architect. And yes, he should have a Smartphone, too!
<li><strong>Team Lead/Team members:</strong> You do not necessarily need to have a Team Lead unless it is required. If you think your team has been suffering from communication overhead more frequently than your sweet, productive working hours, you should get a team face, who will do those chores for you. Team members are you, everybody, including your CEO, CTO and VP. In a small startup, everybody has got his/her tasks assigned and everybody works. </li>
</ul>
<h3>A Sample Communication</h3>
<p>Let me give you a sample short communication across a geographically distributed team on a post-production issue that uses this template:</p>
<blockquote><p><strong>Project Management:</strong> Production customers are complaining that they are not receiving user registration email after our recent release. I am flagging it as our <em>Topmost Priority</em> now.</p>
<p><strong>Technical Project Manager:</strong> It was working in staging. Have we deployed the latest code properly? System Admin, can you check?</p>
<p><strong>Software Architect:</strong> Test Lead, can you confirm if our unit tests were passed? Dev (Team) Lead, can you check SVN that your code was properly checked in?</p>
<p><strong>System Admin:</strong> Yes, the latest codebase was deployed to the production.</p>
<p><strong>Team Lead:</strong> Yes, I have checked. The code is exactly my team has in local workstations.</p>
<p><strong>Test Lead:</strong> All tests are green.</p>
<p><strong>Software Architect:</strong> System Admin, is our “send confirmation email” flag “on” in the configuration?</p>
<p><strong>System Admin:</strong> Yes.</p>
<p><strong>Software Architect:</strong> Then, email server must be down.</p>
<p><strong>Technical Project Manager:</strong> I am checking with the vendor/the server health.</p>
</blockquote>
<p>This is not an ideal case study for effective communication. What should happen ideally for a geographically distributed team is they should get on a call and discuss the matter instead of exchanging emails for hours. This is one of the malpractices many startups follow initially and learn the lesson in a very hard way and at a high price.</p>
<h2>Conclusion</h2>
<p>This model helps <em>Team Members</em> to be under protection of <em>Technical Project Manager</em> and <em>Software Architect</em> secures them by his deep technological knowledge, while they can concentrate on doing what they do best: deliver work that generates business value to the <em>Project Management</em>. This principle is very simple, yet proved to be very effective for small teams in my years of personal experience.</p>
<p>Like I have mentioned before, critical to success of the implementation of this concept, lies in saying no to censorship in your team. What I mean by that is availability of information is your ultimate control over the projects. The more it is transparent, the more the communications are clear, the more work gets done!</p>
<p>If this helps you, let me know. Happy starting up!</p>
]]></content:encoded>
			<wfw:commentRss>http://tanzimsaqib.com/179/a-process-template-for-small-startups/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.791 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-17 22:39:50 -->
<!-- Compression = gzip -->
