<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1129989720638767043</id><updated>2022-04-17T04:42:47.949-07:00</updated><category term="Video"/><category term="General"/><category term="Javascript"/><category term="Ux"/><category term="csharp"/><category term="frameworks"/><category term="Opensource"/><category term="HTML"/><category term="Others"/><category term="clientside"/><category term="C#"/><category term="asp"/><category term="UI"/><category term="asp.net"/><category term="microsoft"/><category term="visual studio 2010"/><category term="CSS"/><category term="Database"/><category term="silverlight"/><category term="windows 8"/><category term="Announcements"/><category term="Design"/><category term="Downloads"/><category term="Rich UI"/><category term="SQLServer"/><category term="WCF"/><category term="WP7"/><category term="Windows Azure"/><category term="data"/><category term="windows8"/><category term="2012"/><category term="Architecture"/><category term="Bangalore"/><category term="Cross browser"/><category term="Experiences"/><category term="HTML 5"/><category term="HTML 5 Support"/><category term="HTML5"/><category term="Highcharts example"/><category term="Highcharts.js"/><category term="MS Office reports with c#"/><category term="Notifications"/><category term="Performance"/><category term="Reports"/><category term="SignalR"/><category term="Solution Design"/><category term="TIPS"/><category term="TechEdIn"/><category term="XAML"/><category term="asyncronous file upload"/><category term="caching"/><category term="comparison"/><category term="datagrid"/><category term="display"/><category term="dock panel"/><category term="facebook"/><category term="happening technologies"/><category term="javascript bunding"/><category term="jquery"/><category term="metro"/><category term="minifier"/><category term="mootools"/><category term="picture library"/><category term="server load"/><category term="templater"/><category term="twitter"/><category term="upload"/><category term="user interface frameworks"/><category term=".NET Reactive Extensions"/><category term=".net 4.5"/><category term="2011 technologies"/><category term="2013"/><category term="ASP.Net 4.0 Reactive Extensions"/><category term="ASP.Net MVC 4"/><category term="Active Directory"/><category term="Adapt"/><category term="Address"/><category term="Alias"/><category term="App"/><category term="Apple"/><category term="Application"/><category term="Balmer CES 2012"/><category term="Beginners"/><category term="Bill gates"/><category term="BingMaps"/><category term="BlueCss"/><category term="Browser"/><category term="C# Linq to Twitter"/><category term="C# Twitter"/><category term="CEO"/><category term="CES 2012"/><category term="Camera"/><category term="Charting"/><category term="Choosers"/><category term="Cloud"/><category term="Code Diet"/><category term="Connection"/><category term="Cross Platform Mobile Development"/><category term="Development"/><category term="Directory Services"/><category term="Email"/><category term="End Points"/><category term="Entity Framework 4.5"/><category term="Excel Reports in C#"/><category term="Firefox OS"/><category term="FirefoxOS"/><category term="Fonts"/><category term="Forex"/><category term="Fresh"/><category term="Geo Location"/><category term="Hot technologies"/><category term="Interfaces"/><category term="Ipad"/><category term="Iphone"/><category term="Iterating"/><category term="JS Library"/><category term="Javascript charts"/><category term="Launchers"/><category term="Less"/><category term="Library"/><category term="Lightswitch"/><category term="Linq"/><category term="LinqToTwitter"/><category term="Live"/><category term="MEF 2.0"/><category term="MSGuy Blog"/><category term="Media Services SDK"/><category term="MediaPlayer"/><category term="Microsoft technologies"/><category term="Minifier Addon for Visual Studio"/><category term="Mobile Application"/><category term="Mobile Services"/><category term="Modernizer"/><category term="Modernizr"/><category term="Nuget"/><category term="Overloading"/><category term="PNotify"/><category term="Phone Gap"/><category term="PhoneCall"/><category term="PhoneGap"/><category term="PhoneNumberChooser"/><category term="Platform"/><category term="Practices"/><category term="Recorded"/><category term="Resizable"/><category term="Responsive"/><category term="Reverse Ajax"/><category term="Rx"/><category term="SQL"/><category term="Scheduler"/><category term="Scripting"/><category term="Search"/><category term="Security"/><category term="Service"/><category term="ShareStatus"/><category term="Show Followers"/><category term="Show Friends"/><category term="Show Tweets"/><category term="Simulator"/><category term="Skeletion"/><category term="Sms"/><category term="Software Engineering"/><category term="Static Types"/><category term="Steve"/><category term="Style"/><category term="Sun One"/><category term="Surface"/><category term="Thumbnails"/><category term="Transform"/><category term="Twitter Bootstrap"/><category term="Typescript"/><category term="URL chop"/><category term="Usability"/><category term="VS 2010"/><category term="VS Features"/><category term="Virtual Machines"/><category term="WCF 4.5"/><category term="WWF 4.5"/><category term="Web Design"/><category term="Webpages"/><category term="Website Preview"/><category term="Website usability"/><category term="Win 8"/><category term="WinRT"/><category term="WindRT"/><category term="Windows 8 Support"/><category term="Windows Phone"/><category term="Windows cmmunication"/><category term="Windows communication foundation 4.5"/><category term="Word"/><category term="add-on"/><category term="allocation pattern"/><category term="apps"/><category term="asp.net performance"/><category term="async"/><category term="asyncronous calls"/><category term="attitude"/><category term="azure"/><category term="basics"/><category term="bit.ly client"/><category term="bitly"/><category term="bugs"/><category term="bulk insert"/><category term="charts"/><category term="communication foundation"/><category term="compensation"/><category term="compress Seadragon"/><category term="custom handler"/><category term="datatable"/><category term="datatables.net"/><category term="death reactions"/><category term="developers"/><category term="device"/><category term="dialogs"/><category term="difference"/><category term="differences"/><category term="dynamic data"/><category term="ebook"/><category term="feed and share"/><category term="file upload"/><category term="for phone"/><category term="framework"/><category term="free"/><category term="functional programming"/><category term="future"/><category term="generic list"/><category term="grid"/><category term="gridview"/><category term="hot frameworks"/><category term="hot trends"/><category term="image"/><category term="image upload"/><category term="improvement"/><category term="index"/><category term="index scan"/><category term="industry"/><category term="jobs"/><category term="jqgrid"/><category term="jquery vs mootools"/><category term="keyword"/><category term="language features"/><category term="layout"/><category term="load balancing"/><category term="loop"/><category term="microsoft shell 32"/><category term="microsoft tablet"/><category term="microsoft touch"/><category term="microsoft zip"/><category term="mobile"/><category term="mootools advantages"/><category term="mootools benifits"/><category term="multifile"/><category term="native zip"/><category term="output buffering"/><category term="performance tuning"/><category term="pie-chart"/><category term="plugins"/><category term="positive"/><category term="problems"/><category term="productivity"/><category term="profiler"/><category term="prototype"/><category term="queries"/><category term="redirection client"/><category term="repeat calls"/><category term="rotation filters"/><category term="salary"/><category term="salesforce"/><category term="scaffolding"/><category term="scattered view"/><category term="scatterview"/><category term="sdk"/><category term="sencha"/><category term="shell unzip"/><category term="shell zip"/><category term="shell32"/><category term="silverlight panel"/><category term="silverlight panels"/><category term="software"/><category term="sql server wait"/><category term="stack panel"/><category term="steve death reaction"/><category term="steve jobs"/><category term="stored procedure"/><category term="stylesheet minifier"/><category term="table types"/><category term="tablet"/><category term="tech blogs"/><category term="tech news"/><category term="testing"/><category term="text rotation with CSS"/><category term="tiles"/><category term="tiles interface"/><category term="tools"/><category term="trigger"/><category term="unzip"/><category term="uploadify"/><category term="url shorten"/><category term="user defined table type"/><category term="users"/><category term="wcf service"/><category term="web-fonts"/><category term="win8"/><category term="windows 7"/><category term="windows workflow foundation 4.5"/><category term="wrap panel"/><category term="yield"/><category term="zip"/><title type='text'>@msguy blog</title><subtitle type='html'>All about web, programming and passion.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.msguy.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default'/><link rel='alternate' type='text/html' href='http://www.msguy.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default?start-index=26&amp;max-results=25'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>65</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-4722293737597705822</id><published>2017-06-17T02:19:00.000-07:00</published><updated>2017-06-17T02:19:02.259-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="Design"/><category scheme="http://www.blogger.com/atom/ns#" term="Solution Design"/><title type='text'>Web Apps: Design &amp; architecture tips</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;I previously (&lt;a href=&quot;https://medium.com/@msguy/a-take-on-solution-architecture-design-6a350b4dec39&quot; target=&quot;_blank&quot;&gt;my take on solution design&lt;/a&gt;) mentioned about sharing a few tips on application design &amp;amp; architecture. Here is a post with a few raw design pointers. Some I learned from my own experience and some by looking at others implementation. I will update this post with more and more tips as and when I find time and will also make an attempt to categorize them under different architectural pillars.&lt;br /&gt;&lt;br /&gt;Here we go…&lt;br /&gt;&lt;br /&gt; The biggest sources of failure in a system are usually people and not the machines or networks. Have fewer components in the system which involves human intervention. &lt;br /&gt;&lt;br /&gt;Automation works well with homogeneous and modular systems. Look for opportunities in your current and the new systems you design.&lt;div&gt;&lt;br /&gt;Whatever is a pain to humans should be automated.&lt;br /&gt;&lt;br /&gt; If scaling out is an easy &amp;amp; affordable option, choose it over scaling up. Scaling out does more than scaling. If you need to scale a little, go vertical.&lt;/div&gt;&lt;div&gt;&lt;br /&gt; Avoid cascading failures unless you absolutely intend it. If something fails, it should be okay and should be treated as a norm. Not everything should fail to depend on it. Synchronous operations are the usual reason for cascading failures. If your system has more and more async operations then, if something fails, it fails in isolation and does not fail together.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;As experts say, treat your servers like cattle and not like pets. If one of them isn’t doing well, kill it and spin another. Don’t be in love with a server. No emotions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Write probes that Periodically checks security, health &amp;amp; load (CPU/memory/application/databases) and to kill unhealthy/non-adherent (to best practices) machines and spin new ones.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Destruction: Write programs that randomly kill your servers and services. This is to ensure periodically that your system works with failures. Don’t wait for your servers/services to fail naturally with an assumption that your backup servers will be live on a disaster. Better fail it yourself occasionally to see if your recovery mechanism is working intact. Netflix does this.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The overall complexity of a system is not just the sum of complexities of independent components. It will be much more. So, keep things sim...&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can write programs which check your systems for resource wastage and the program can optimize the resources if needed. Not using something but still paying is foolishness.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Stop guessing the capacity. Design your system to scale up/down automatically based on the load. Enable auto-scaling when required. One way people do is to bake the code and keep it in a place (like a storage bucket or a repo). During the process of auto instance creation, the image on boot can pull the code from a bucket and add machines to service.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Regularly backup your data. OK, you know this. Even more importantly, test your backups regularly. Many times backups will be present but don’t get restored when you need. Bad format, bad media or corruption = loss.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Your recovery process should just be a part of regular processes you follow. It should not be treated as a special exercise.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Define and establish a path for support and escalation process to handle things when a system goes wrong.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Server-less architectures remove the need for you to run and maintain servers to carry out traditional compute activities. (An s3 bucket storage can act as a website. You may not need a web-server. Many times, things like this remove the operation burden.)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Excess use of applications/services from a particular vendor is a risk. You get tied up. The number of versions of your application probably would depend on the number of times your cloud provider upgrades his service and forces you to redo. Think twice before you decide to get locked-in. The point is to make an informed decision. You might not want to rely completely on a vendor in order for your whole business/org to function. Cloud adoption is going to grow for sure and not shrink.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Port, firewall, and database misconfigurations are the usual causes for security breaches. Write a scanner and periodically scan for potential problems. Lock down everything and then open what you just need. (Not the other way for sure)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Secure your system at all levels &amp;amp; layers and not just at edges. Use encryption whenever and wherever data is sensitive. Multiple levels of defense are always better than a huge monolith door. &lt;br /&gt;Decide what you keep in-house. Moving everything to the cloud may not be the best way in terms of cost, security or feasibility.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Stress test your systems often. Initially, your system might work very well but over a period of time, many things get added and chances of breaking become more.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Log and audit all the actions (from programming &amp;amp; operations point). Storing data is less expensive today. Traces help a lot.&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/4722293737597705822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/4722293737597705822'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2017/06/web-apps-design-architecture-tips.html' title='Web Apps: Design &amp; architecture tips'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-5798452277579964716</id><published>2017-04-05T03:59:00.000-07:00</published><updated>2017-04-08T12:54:01.880-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="Design"/><category scheme="http://www.blogger.com/atom/ns#" term="Practices"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Engineering"/><category scheme="http://www.blogger.com/atom/ns#" term="Solution Design"/><title type='text'>A take on solution architecture design</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Published a post on medium to discuss a kind of mindset that works in favor of self when doing solution architecture design.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Here it is &lt;a href=&quot;https://medium.com/@msguy/a-take-on-solution-architecture-design-6a350b4dec39&quot;&gt;https://medium.com/@msguy/a-take-on-solution-architecture-design-6a350b4dec39&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/5798452277579964716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/5798452277579964716'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2017/04/a-take-on-solution-architecture-design.html' title='A take on solution architecture design'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-6642334977678149070</id><published>2015-09-05T21:41:00.000-07:00</published><updated>2017-04-08T11:26:40.213-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="data"/><category scheme="http://www.blogger.com/atom/ns#" term="Forex"/><category scheme="http://www.blogger.com/atom/ns#" term="Live"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Services"/><category scheme="http://www.blogger.com/atom/ns#" term="Scheduler"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Azure"/><title type='text'>Windows Azure Mobile Services : Scripting a Scheduler to dump Live Forex data for future analytics</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-Whu6cC8Pd1E/UZJZnc53mfI/AAAAAAAAARg/nMFPNYfbJmY/s1600/forex-market.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;142&quot; src=&quot;https://2.bp.blogspot.com/-Whu6cC8Pd1E/UZJZnc53mfI/AAAAAAAAARg/nMFPNYfbJmY/s200/forex-market.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Before using the scheduler, you just need to know a little about Windows Azure Mobile Services. The below paragraph summarizes the features.&lt;br /&gt;&lt;br /&gt;Mobile Services on azure allows you to add structured storage, user authentication and push notifications to your Android, iOS, HTML, Windows Store, or Windows Phone 8 apps. Have a look at the below list of features. You can visit mobile services website if you are a beginner.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-nHgX-x18zXk/UZJHp1Wu2gI/AAAAAAAAARA/emjqaw89XLQ/s1600/2013-05-14+19_47_42-Mobile+Services.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://3.bp.blogspot.com/-nHgX-x18zXk/UZJHp1Wu2gI/AAAAAAAAARA/emjqaw89XLQ/s1600/2013-05-14+19_47_42-Mobile+Services.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #274e13;&quot;&gt;What are we going to achieve?&lt;/span&gt;&lt;/h3&gt;As a proof of concept, let us &lt;span style=&quot;color: #274e13;&quot;&gt;&lt;i&gt;create a mobile services scheduler job on azure to get the live Forex data from an API and then load the data into a table recursively&lt;/i&gt;&lt;/span&gt;. (It simply means, every x minutes, our&amp;nbsp;scheduler&amp;nbsp;gets the fresh Forex currency data and stores it in a structured storage). The data we store can be used in a variety of ways later. You can push the data to end user&#39;s mobile phones through push notifications or you may want to draw a currency chart on your users mobile phone screens. It is up-to&amp;nbsp;you. Here we go.&lt;br /&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #274e13;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #274e13;&quot;&gt;Creating a Mobile Service&lt;/span&gt;&lt;/h3&gt;&lt;a href=&quot;https://manage.windowsazure.com/&quot; target=&quot;_blank&quot;&gt;Login&lt;/a&gt; to Azure management portal, navigate to the mobile services tab. First, let us create a Mobile Service.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-28frhf9kwoQ/UZI6Q_aMNKI/AAAAAAAAAOE/B8WuCigCfxw/s1600/2013-05-13+19_16_48-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://4.bp.blogspot.com/-28frhf9kwoQ/UZI6Q_aMNKI/AAAAAAAAAOE/B8WuCigCfxw/s1600/2013-05-13+19_16_48-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Click on the &quot;create a new mobile service&quot; link (see above screen) and provide the details of your new mobile service (like in the screen below).&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-ACF3GNxE5RM/UZI7I-FUPwI/AAAAAAAAAOQ/XQJn1QHZPAE/s1600/2013-05-13+19_18_55-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://2.bp.blogspot.com/-ACF3GNxE5RM/UZI7I-FUPwI/AAAAAAAAAOQ/XQJn1QHZPAE/s1600/2013-05-13+19_18_55-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;go &lt;b&gt;Next&lt;/b&gt;. Specify the database settings like I have done below.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-fnvOX8Ynarc/UZI7I_GJ0HI/AAAAAAAAAOY/qLKURsEfCyo/s1600/2013-05-13+19_19_59-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-fnvOX8Ynarc/UZI7I_GJ0HI/AAAAAAAAAOY/qLKURsEfCyo/s1600/2013-05-13+19_19_59-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Finish &lt;/b&gt;(Click on the check mark above). Wait for a few seconds. Your mobile service will be created and ready to use. You will the below screen.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-vw6ch5s-MVo/UZI7I6LyWwI/AAAAAAAAAOU/48oH7iLNgPs/s1600/2013-05-13+19_21_56-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-vw6ch5s-MVo/UZI7I6LyWwI/AAAAAAAAAOU/48oH7iLNgPs/s1600/2013-05-13+19_21_56-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #274e13;&quot;&gt;Adding a table to store data&lt;/span&gt;&lt;/h3&gt;Click on the Forex-Loader mobile service (The arrow&amp;nbsp;pointing&amp;nbsp;towards right) in the above screen. Mobile Service screen will get displayed. &amp;nbsp;Click on the &lt;b&gt;DATA&lt;/b&gt; tab to see the below screen to start creating a table.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-G5ljk0D5_FQ/UZI7KdmVpzI/AAAAAAAAAOo/4l0JwGKPEsA/s1600/2013-05-13+19_23_06-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-G5ljk0D5_FQ/UZI7KdmVpzI/AAAAAAAAAOo/4l0JwGKPEsA/s1600/2013-05-13+19_23_06-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now, Add a table with details below. (Well, you can give your own set of permissions to be safe. I gave &#39;Everyone&#39; just to make it quick)&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-jM4zdQpK2k4/UZI7KjrXnCI/AAAAAAAAAOw/uYmL5kw82v0/s1600/2013-05-13+19_24_48-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-jM4zdQpK2k4/UZI7KjrXnCI/AAAAAAAAAOw/uYmL5kw82v0/s1600/2013-05-13+19_24_48-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Once you click &lt;b&gt;Finish &lt;/b&gt;(check mark) in the above screen, table will be created with a index and with no records automatically. See the below screen on how it looks. (&lt;i&gt;Now, don&#39;t&amp;nbsp;worry that you did not provide details of fields, datatypes etc. Azure will do the magic!. Fields are created automatically at the time of loading the data. You don&#39;t have to define it well in advance&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-16gqfJXbkDA/UZI7LSwFkOI/AAAAAAAAAO4/Goga0vO5dSE/s1600/2013-05-13+19_25_05-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://4.bp.blogspot.com/-16gqfJXbkDA/UZI7LSwFkOI/AAAAAAAAAO4/Goga0vO5dSE/s1600/2013-05-13+19_25_05-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #274e13;&quot;&gt;Creating a Scheduler Job&lt;/span&gt;&lt;/h3&gt;Let us create a scheduler. Click on the Scheduler tab. You will see the below screen.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-oU0FU6Uo79w/UZI7Li-h_RI/AAAAAAAAAO8/uDPa4kky3lU/s1600/2013-05-13+19_25_30-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://4.bp.blogspot.com/-oU0FU6Uo79w/UZI7Li-h_RI/AAAAAAAAAO8/uDPa4kky3lU/s1600/2013-05-13+19_25_30-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Click on the &quot;Create a scheduled Job&quot; link to create a new job. Provide the details as mentioned below and &lt;b&gt;Finish&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-MoCyKI9gsY8/UZI7LzDGAEI/AAAAAAAAAPI/d0naFZQXtqQ/s1600/2013-05-13+19_27_40-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://4.bp.blogspot.com/-MoCyKI9gsY8/UZI7LzDGAEI/AAAAAAAAAPI/d0naFZQXtqQ/s1600/2013-05-13+19_27_40-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;While creating a job, you may notice that you can schedule to run the jobs in different&amp;nbsp;time frames&amp;nbsp;in a variety of available combinations. &amp;nbsp;You can select the option &#39;On demand&#39;, if you want to manually run the job.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-MVBfmK9FFhI/UZI7MSYog6I/AAAAAAAAAPY/1FMY6NW8aLs/s1600/2013-05-13+19_29_04-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-MVBfmK9FFhI/UZI7MSYog6I/AAAAAAAAAPY/1FMY6NW8aLs/s1600/2013-05-13+19_29_04-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-U2zC5TZPu04/UZI7MXDYSQI/AAAAAAAAAPU/JUrSCiGRMzA/s1600/2013-05-13+19_28_12-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://4.bp.blogspot.com/-U2zC5TZPu04/UZI7MXDYSQI/AAAAAAAAAPU/JUrSCiGRMzA/s1600/2013-05-13+19_28_12-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Now, your&amp;nbsp;Forex&amp;nbsp;job is created. (screen below)&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-bhrTFExkBGk/UZI7NNzP9rI/AAAAAAAAAPo/z2IwfZC3t4o/s1600/2013-05-13+19_31_03-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-bhrTFExkBGk/UZI7NNzP9rI/AAAAAAAAAPo/z2IwfZC3t4o/s1600/2013-05-13+19_31_03-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Let us now write some code to do the actual task. Click on the right arrow to open the ForexJob you just created. When the Forex job opens, by default it will take you to Configure tab. Now, you should navigate to the SCRIPT tab. You will see something like the below screen.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-ixSqIVgC8GM/UZI7NmjSiBI/AAAAAAAAAPw/fTs8_j-NFbo/s1600/2013-05-13+19_32_11-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-ixSqIVgC8GM/UZI7NmjSiBI/AAAAAAAAAPw/fTs8_j-NFbo/s1600/2013-05-13+19_32_11-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Delete the default javascript function you already see (screen above) and add the below code instead. It is a simple script. Scheduler allows you to write your own script for doing the job.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class=&quot;brush:javascript&quot;&gt;var updatesTable = tables.getTable(&#39;ForexLive&#39;); // Table Name to store data&lt;br /&gt;var request = require(&#39;request&#39;);&lt;br /&gt;var url=&#39;http://api.apirates.com/api/update&#39;; // This api gets the fresh forex data&lt;br /&gt;&lt;br /&gt;function ForexJob() {   //Notice that the function name is same as the Job Name&lt;br /&gt;       request(url, function ForexDataLoaded (error,response, body) { &lt;br /&gt;       console.log(&quot;------BEGIN------&quot;); //Log it&lt;br /&gt;       var list =JSON.parse(body).ticks; //Read the JSON data and store it as object&lt;br /&gt;       var now = new Date(); //Get current date time                             &lt;br /&gt;                                &lt;br /&gt;                   for (var currency in list) {&lt;br /&gt;                         var data = {&lt;br /&gt;                                    Currency_Name: currency,&lt;br /&gt;                                    Present_Value: list[currency],&lt;br /&gt;                                    Date_Time: now&lt;br /&gt;                                    }; //Prepare the object&lt;br /&gt;                        updatesTable.insert(data); //Insert data to the updatesTable&lt;br /&gt;                        console.log(currency + &quot; ::: &quot; + list[currency]);&lt;br /&gt;                    }&lt;br /&gt;       console.log(&quot;------End------&quot;);&lt;br /&gt;       });&lt;br /&gt;    &lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Code is self explanatory. Read the comments. To summarize, we already have an API from APIRates which gets fresh Forex currency data when you call it. The output returned by the API will be in JSON format. (Just try hitting the API&amp;nbsp;URL&amp;nbsp;in browser. You should see the latest Forex ticks. An API call always gets you the currency pair values of that moment changes every now and then.)&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-YRBUnV3DxY0/UZJUnyo3JfI/AAAAAAAAARQ/HlIPyJp8UdM/s1600/2013-05-14+20_42_53-api.apirates.com_api_update.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://4.bp.blogspot.com/-YRBUnV3DxY0/UZJUnyo3JfI/AAAAAAAAARQ/HlIPyJp8UdM/s1600/2013-05-14+20_42_53-api.apirates.com_api_update.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;Then the code, parses the&amp;nbsp;JSON response and&amp;nbsp; gets the individual currency pair values and loads it into an object and finally pushes the data (of every pair) into the table. (within a loop).&lt;br /&gt;&lt;br /&gt;Below screen shows how it looks after you add the above code.&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-P4jCv6gHfN0/UZI7N4IkUPI/AAAAAAAAAPs/2-dIWrDKMms/s1600/2013-05-13+19_37_40-.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://3.bp.blogspot.com/-P4jCv6gHfN0/UZI7N4IkUPI/AAAAAAAAAPs/2-dIWrDKMms/s1600/2013-05-13+19_37_40-.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Click on the save button (above screen) to save the Job.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;Before running the Job, It is very important to Enable it first. Click on the &lt;b&gt;Enable &lt;/b&gt;button in the above screen.&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #274e13;&quot;&gt;Running the job once&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;You are almost done with it. Now, if you do not want to wait for few minutes to see the job running, just click on the &quot;RUN ONCE&quot; button to forcefully run/test the job once.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-u5zMHu4RcHs/UZI7QOVhWNI/AAAAAAAAAQQ/IOEKS1ZYbkY/s1600/2013-05-13+19_38_52-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-u5zMHu4RcHs/UZI7QOVhWNI/AAAAAAAAAQQ/IOEKS1ZYbkY/s1600/2013-05-13+19_38_52-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Congratulations. You just ran a new Job. Waiting to see the result?. Just click on the Back button as you see in the screen (below).&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-r-hFDNtzXGw/UZI7Q9VVftI/AAAAAAAAAQg/QMzGy2buEv0/s1600/2013-05-13+19_41_41-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://3.bp.blogspot.com/-r-hFDNtzXGw/UZI7Q9VVftI/AAAAAAAAAQg/QMzGy2buEv0/s1600/2013-05-13+19_41_41-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;You will see the below screen. Now, open the DATA tab&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-on45t-5uMNA/UZI7PirwKhI/AAAAAAAAAQM/ZP75SALqj5w/s1600/2013-05-13+19_39_52-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://4.bp.blogspot.com/-on45t-5uMNA/UZI7PirwKhI/AAAAAAAAAQM/ZP75SALqj5w/s1600/2013-05-13+19_39_52-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Open the &lt;b&gt;ForexLive &lt;/b&gt;table (Click on the Arrow pointing towards the right) and you will realize the Magic that has happened !!&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-I_dapdZWekg/UZI7Q-yxZVI/AAAAAAAAAQk/9yo3CIHFIs4/s1600/2013-05-13+19_40_13-Mobile+Services+-+Windows+Azure.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://2.bp.blogspot.com/-I_dapdZWekg/UZI7Q-yxZVI/AAAAAAAAAQk/9yo3CIHFIs4/s1600/2013-05-13+19_40_13-Mobile+Services+-+Windows+Azure.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;The scheduler has done its job and loaded fresh data to the table. Remember, this will happen every x minutes you selected earlier. Observe the Column Names of the table and the way it got created :). To your surprise, an Auto Ident column got created too!&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Use this data and do whatever you want, show it to users at run time, push it to phones, do analytics, come up with fresh charts or what not. Hopefully this post helped you to learn a thing about Windows Azure Mobile Services.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;For windows azure mobile services scripting reference, click &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windowsazure/jj554226.aspx&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Happy Learning :)&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;NOTE : Delete the Mobile Service after doing this exercise. You will end up paying HUGE Bills otherwise as it silently runs in the background every now and then costing you.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/6642334977678149070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/6642334977678149070'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2013/05/windows-azure-mobile-services-scripting-scheduler-push-forex-data.html' title='Windows Azure Mobile Services : Scripting a Scheduler to dump Live Forex data for future analytics'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-Whu6cC8Pd1E/UZJZnc53mfI/AAAAAAAAARg/nMFPNYfbJmY/s72-c/forex-market.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-4624351467183233478</id><published>2015-02-11T11:02:00.000-08:00</published><updated>2017-04-08T11:26:57.257-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="End Points"/><category scheme="http://www.blogger.com/atom/ns#" term="load balancing"/><category scheme="http://www.blogger.com/atom/ns#" term="Virtual Machines"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Azure"/><title type='text'>Windows Azure - Load balancing a website running on different Virtual Machines</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.philgalfond.com/wp-content/uploads/weighing_the_balance_587x30.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.philgalfond.com/wp-content/uploads/weighing_the_balance_587x30.jpg&quot; height=&quot;105&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;In this post, we shall create two Windows Virtual Machines in Azure, set up the end points for communication, deploy a web application and finally enable the load balancing mechanism to distribute the load.&lt;br /&gt;&lt;br /&gt;To start with, we shall first create a virtual machine on azure. If you  do not have a Windows Azure account yet, subscribe for a free trial &lt;a href=&quot;https://www.windowsazure.com/en-us/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-byC1aeC4iaQ/URkjB0wcNxI/AAAAAAAAAIw/FxyWZH6su1U/s1600/01.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;307&quot; src=&quot;https://1.bp.blogspot.com/-byC1aeC4iaQ/URkjB0wcNxI/AAAAAAAAAIw/FxyWZH6su1U/s640/01.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Once you create a trial, just log on to &lt;a href=&quot;http://manage.windowsazure.com/&quot; target=&quot;_blank&quot;&gt;manage.windowsazure.com&lt;/a&gt; and create a new Virtual Machine. &lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-DRzz9rLCgAk/URkjcbsPPsI/AAAAAAAAAI4/09nC72bE3RI/s1600/Capture.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;491&quot; src=&quot;https://3.bp.blogspot.com/-DRzz9rLCgAk/URkjcbsPPsI/AAAAAAAAAI4/09nC72bE3RI/s640/Capture.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-DRzz9rLCgAk/URkjcbsPPsI/AAAAAAAAAI4/09nC72bE3RI/s1600/Capture.PNG&quot; imageanchor=&quot;1&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;Here are the steps to create. Select NEW -&amp;gt; COMPUTE &amp;gt; VIRTUAL MACHINE &amp;gt; QUICK CREATE. Provide a DNS Name, Select OS as Windows Server 2008, provide a windows password and you are good to go. Click the check-mark arrow.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-y_Z3r4J9RpM/URkjeBdXGzI/AAAAAAAAAJA/TZRnBfVNKQU/s1600/2.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;292&quot; src=&quot;https://2.bp.blogspot.com/-y_Z3r4J9RpM/URkjeBdXGzI/AAAAAAAAAJA/TZRnBfVNKQU/s640/2.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-y_Z3r4J9RpM/URkjeBdXGzI/AAAAAAAAAJA/TZRnBfVNKQU/s1600/2.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;You will see something like this. Wait for some time.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-ti7VxMKRprc/URkjebQ-zCI/AAAAAAAAAJI/KOePeQPz5Lo/s1600/3.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;92&quot; src=&quot;https://1.bp.blogspot.com/-ti7VxMKRprc/URkjebQ-zCI/AAAAAAAAAJI/KOePeQPz5Lo/s640/3.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&amp;nbsp;And finally, your VM Should be up and running in a few minutes.&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-ywpYdZiaYgA/URklSpyD3PI/AAAAAAAAAJU/1jDbsOo6dI0/s1600/4.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;76&quot; src=&quot;https://2.bp.blogspot.com/-ywpYdZiaYgA/URklSpyD3PI/AAAAAAAAAJU/1jDbsOo6dI0/s640/4.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Open the virtual machine you just created by clicking on the name.&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-TM6LFkGn9UE/URkmdSvBy-I/AAAAAAAAAJs/Hw5L9vV3spo/s1600/6.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-SXTZmPcN_dE/URkmZuT8DAI/AAAAAAAAAJk/vy0Rrkis7S8/s1600/5.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;498&quot; src=&quot;https://4.bp.blogspot.com/-SXTZmPcN_dE/URkmZuT8DAI/AAAAAAAAAJk/vy0Rrkis7S8/s640/5.PNG&quot; width=&quot;640&quot; /&gt; &lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Click on the CONNECT button at the bottom. You will be prompted to download the RDP File. Just save it and open it. &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-TM6LFkGn9UE/URkmdSvBy-I/AAAAAAAAAJs/Hw5L9vV3spo/s1600/6.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;297&quot; src=&quot;https://3.bp.blogspot.com/-TM6LFkGn9UE/URkmdSvBy-I/AAAAAAAAAJs/Hw5L9vV3spo/s400/6.PNG&quot; width=&quot;400&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Provide the password and you should be able to get inside your brand new virtual machine in no time. Install the IIS in your Virtual Machine (By Adding a New Role, Selecting IIS Web Server to Install).&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-F-VKf5uOG2I/URkterNqAqI/AAAAAAAAAKA/2lDeeLMUwM8/s1600/7.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;482&quot; src=&quot;https://4.bp.blogspot.com/-F-VKf5uOG2I/URkterNqAqI/AAAAAAAAAKA/2lDeeLMUwM8/s640/7.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;You are almost done with your First VM. Now, let us create a second VM. But this time, we shall create the second one in a different way.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;Here are the steps to create. Select NEW -&amp;gt; COMPUTE &amp;gt; VIRTUAL MACHINE &amp;gt; &lt;span style=&quot;color: #cc0000;&quot;&gt;FROM GALLERY&lt;/span&gt;.&amp;nbsp; (Click on it)&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-loQnUIJK2Vo/URkvIhzCVpI/AAAAAAAAAKU/mQ1ouW9Rp_w/s1600/8.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://1.bp.blogspot.com/-loQnUIJK2Vo/URkvIhzCVpI/AAAAAAAAAKU/mQ1ouW9Rp_w/s640/8.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;A popup will be opened&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-o5IjJQXIxgw/URkvHH_kB4I/AAAAAAAAAKM/rFHnFQq49bU/s1600/9.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;458&quot; src=&quot;https://2.bp.blogspot.com/-o5IjJQXIxgw/URkvHH_kB4I/AAAAAAAAAKM/rFHnFQq49bU/s640/9.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-o5IjJQXIxgw/URkvHH_kB4I/AAAAAAAAAKM/rFHnFQq49bU/s1600/9.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Select Windows Server 2008 image from the list. click Next. In the next screen, provide a VM name (VM 2 for example), provide a&amp;nbsp; new windows password and click next.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-2pVF50phsYs/URkvri8rN-I/AAAAAAAAAKs/0LgdGnkEl9M/s1600/10.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;464&quot; src=&quot;https://2.bp.blogspot.com/-2pVF50phsYs/URkvri8rN-I/AAAAAAAAAKs/0LgdGnkEl9M/s640/10.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;You will see the below screen once you click on the &quot;Next&quot; arrow from the above screen.&amp;nbsp; Here, you have to select the option &quot;&lt;b&gt;Connect to an existing virtual machine&lt;/b&gt;&quot; and from the dropdown, select the name of the First VM you just created. &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-CMF2F7v-NqI/URkwoG_1UxI/AAAAAAAAAK4/jjOMF81_YrE/s1600/11.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;458&quot; src=&quot;https://4.bp.blogspot.com/-CMF2F7v-NqI/URkwoG_1UxI/AAAAAAAAAK4/jjOMF81_YrE/s640/11.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Click next, do not modify anything else and click Complete.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-AISX8GwD0Xk/URkxJ2staRI/AAAAAAAAALA/iVmhsCUJrog/s1600/12.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;460&quot; src=&quot;https://1.bp.blogspot.com/-AISX8GwD0Xk/URkxJ2staRI/AAAAAAAAALA/iVmhsCUJrog/s640/12.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;After a few minutes, even this VM will be up and running. Now, in the same way, connect to 2nd VM through RDC and login. Install IIS (like we did for first VM).&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;So, finally we have two VM&#39;s connected and with IIS installed. Close the remote desktop client for now.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;The next step is to create two html files locally on your machine.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Just open up notepad/visual studio and create a new index.html file with the below content.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;/div&gt;&lt;pre class=&quot;brush:html&quot;&gt;&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Welcome&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h1&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This page is served from Virtual Machine 1&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;pre&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Create a directory &lt;b&gt;VM1&lt;/b&gt; and save the above &lt;b&gt;index.html&lt;/b&gt; file inside.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Now, let us create one more index.html file with a different heading&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;/div&gt;&lt;pre class=&quot;brush:html&quot;&gt;&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Welcome&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h1&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This page is served from Virtual Machine 2&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Create a directory &lt;b&gt;VM2 &lt;/b&gt;and save the above &lt;b&gt;index.html&lt;/b&gt; file inside. &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;So, now we have two folders VM1 &amp;amp; VM2 and each has a different index.html file. We are almost done. Here are the steps now to deploy this code on your VM&#39;s&lt;/div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Login to VM1 using RDC&lt;/li&gt;&lt;li&gt;Just copy the VM1 folder from your local desktop. and paste it inside your d drive of VM1&lt;/li&gt;&lt;li&gt;Open IIS, Create a new web application by name &quot;first&quot; and point it to the VM1 folder (From Step.2) &lt;a href=&quot;http://2.bp.blogspot.com/-f8P2fyeYsfE/URk1UwvA1VI/AAAAAAAAALk/94d-xk2jswY/s1600/13.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;476&quot; src=&quot;https://2.bp.blogspot.com/-f8P2fyeYsfE/URk1UwvA1VI/AAAAAAAAALk/94d-xk2jswY/s640/13.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;Browser the website http://localhost/first/index.html . You will see the below kind of output&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-osEcakVQI24/URk1TV4r5-I/AAAAAAAAALc/6xCL4hjpsfM/s1600/14.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;142&quot; src=&quot;https://2.bp.blogspot.com/-osEcakVQI24/URk1TV4r5-I/AAAAAAAAALc/6xCL4hjpsfM/s640/14.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp;And now, &lt;/div&gt;&lt;ol&gt;&lt;li&gt;Login to VM2 using RDC&lt;/li&gt;&lt;li&gt;Just copy the VM2 folder from your local desktop. and paste it inside your d drive of VM2.&lt;/li&gt;&lt;li&gt;Open IIS, Create a new web application by name &quot;first&quot; and point it to the VM2 folder. &lt;/li&gt;&lt;li&gt;Launch http://localhost/first/index.html . You will see the below screen.&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-ouFdpwJT9c0/URk2DY4J5-I/AAAAAAAAALs/iMFB2xKo2lA/s1600/15.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;136&quot; src=&quot;https://4.bp.blogspot.com/-ouFdpwJT9c0/URk2DY4J5-I/AAAAAAAAALs/iMFB2xKo2lA/s640/15.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You are done with your deployment now. Close all the remote desktop connections. Return back to the Azure Management Portal.&lt;br /&gt;&lt;br /&gt;You have the Virtual Machines up and running but there is no way for the rest of the world to access your webpages. We need to create endpoints for both the Virtual Machines so that the webpages inside can be accessed by public. (ie. to make your website Public Facing). To do that,&lt;br /&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Open the VM1 in Azure Portal&lt;/li&gt;&lt;li&gt;Navigate to ENDPOINTS tab (tabs will be on top)&lt;a href=&quot;http://3.bp.blogspot.com/-0noNLryfy_Y/URk3Kwa6EeI/AAAAAAAAAL4/yfz1wNbcjyA/s1600/16.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;448&quot; src=&quot;https://3.bp.blogspot.com/-0noNLryfy_Y/URk3Kwa6EeI/AAAAAAAAAL4/yfz1wNbcjyA/s640/16.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Click on the ADD ENDPOINT button, provide the name as http, select TCP protocol and enter 80 for public and private ports. It should look like below.&lt;a href=&quot;http://4.bp.blogspot.com/-xTrdFx1CXlo/URk3LZ9F6vI/AAAAAAAAAMA/hRGYaG-n3To/s1600/17.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;456&quot; src=&quot;https://4.bp.blogspot.com/-xTrdFx1CXlo/URk3LZ9F6vI/AAAAAAAAAMA/hRGYaG-n3To/s640/17.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;We have now added an endpoint so that anyone can talk to VM1 using the port 80.&lt;br /&gt;&lt;br /&gt;From the Azure portal, select VM2, Navigate to END POINTS tab, click on the Add new End point button at the bottom. But this time, select the option &quot;Load Balance Traffic on an existing Endpoint&quot;. &lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-_P7_xZej0-8/URk41PlaeII/AAAAAAAAAMU/y9rO_5H4tKM/s1600/18.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;330&quot; src=&quot;https://1.bp.blogspot.com/-_P7_xZej0-8/URk41PlaeII/AAAAAAAAAMU/y9rO_5H4tKM/s640/18.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Click Next. Provide the details as mentioned below. (Name &amp;amp; Port)&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-AAo-hgpAu3k/URk42A5BruI/AAAAAAAAAMc/EXMWhVvVddI/s1600/19.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;458&quot; src=&quot;https://3.bp.blogspot.com/-AAo-hgpAu3k/URk42A5BruI/AAAAAAAAAMc/EXMWhVvVddI/s640/19.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Yes. We are done. We have 2 VM&#39;s connected. We also have created End Points for both. We also have enabled the Load Balancing option for the VM2. Now, just find out the IP of your VM1 or VM2. To do that, go to the Azure Portal Dashboard, open your VM. Just note down the Public Virtual IP Address. In my case it is 168.62.36.130.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-OxVqTEj6Q7c/URk57WNAeSI/AAAAAAAAAMw/OVm1UpRT3SQ/s1600/20.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;470&quot; src=&quot;https://4.bp.blogspot.com/-OxVqTEj6Q7c/URk57WNAeSI/AAAAAAAAAMw/OVm1UpRT3SQ/s640/20.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;That is all you had to do. Thanks for following it up. Now, from any pc (having internet access) launch your favorite browser and hit&amp;nbsp; http://&amp;lt;Your Public Virtual IP Address&amp;gt;/first/index.html&lt;br /&gt;In my case it will be http://168.62.36.130/first/index.html . You may see any one of the pages.&lt;br /&gt;&lt;b&gt;&quot;This page is served from Virtual Machine 2&quot;&lt;/b&gt; or &lt;b&gt;&quot;This page is served from Virtual Machine 1&quot;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Just switch your browser, access the same URL again and again from different browsers or after clearing browser cache, randomly you will either see a page from VM1 or may be from VM2.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;So, Windows Azure did the Magical job of Load Balancing your websites. Some times, the request is sent to VM1 and some times to VM2 sharing the load.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;However, this is just for illustration. In real scenarios, you will deploy the same code in both VM&#39;s. If you are even smart, you will deploy your code on 1 VM and clone/copy it as second VM.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;There are about 20 screenshots in the article making it really big. But the concept is too small and simple. Isn&#39;t it?&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/4624351467183233478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/4624351467183233478'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2013/02/windows-azure-load-balancing-your.html' title='Windows Azure - Load balancing a website running on different Virtual Machines'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-byC1aeC4iaQ/URkjB0wcNxI/AAAAAAAAAIw/FxyWZH6su1U/s72-c/01.PNG" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-4705114073678250101</id><published>2014-02-02T01:32:00.000-08:00</published><updated>2017-04-08T11:27:08.539-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="csharp"/><category scheme="http://www.blogger.com/atom/ns#" term="Media Services SDK"/><category scheme="http://www.blogger.com/atom/ns#" term="upload"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Azure"/><title type='text'>Programmatically Uploading Media Content using Windows Azure Media Services SDK &amp; C#</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-NmTK5b_IUQY/UOKuj-5KVeI/AAAAAAAAAIM/EtPSp8YrdcE/s1600/clouds-upload.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-NmTK5b_IUQY/UOKuj-5KVeI/AAAAAAAAAIM/EtPSp8YrdcE/s1600/clouds-upload.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In this post, have explained how to create a proof of concept to demonstrate how media files can be uploaded to the azure storage using the Media Services SDK. Just before writing code, it is very important to understand the basics of media services.&amp;nbsp; If you are interested only in code, scroll down to the end of this post.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;What are Media Services?&lt;/h3&gt;Windows Azure Media Services offer the flexibility, scalability and reliability of a cloud platform to handle high quality media experiences.&lt;br /&gt;&lt;br /&gt;In simple terms, Windows Azure Media Services allows you to upload media files, encode them, convert the formats, protect the media content, do on-demand streaming or live streaming. and Yes, you have complete support for programming if you are a developer.&lt;br /&gt;&lt;br /&gt;If you are interested to learn the concepts in detail, please visit this page from windows azure main website.&lt;br /&gt;&lt;br /&gt;Prerequisites for uploading media files to storage (Programmatically)&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Have a Windows Azure Account (Free Trial at least)&lt;/li&gt;&lt;li&gt;Login &amp;amp; Create a Media Services account (In my case I created it as msguymediaservice). &lt;/li&gt;&lt;li&gt;Obtain the Account Name and Key &amp;amp; keep them handy (Have written the steps after the prerequisites section)&lt;/li&gt;&lt;li&gt;Have the below development environment&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Operating Systems: Windows 7, Windows 2008 R2, or Windows 8.&lt;/li&gt;&lt;li&gt;.NET Framework 4.5 or .NET Framework 4.&lt;/li&gt;&lt;li&gt;Visual Studio 2012 or Visual Studio 2010 SP1 (Professional, Premium, or Ultimate).&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;br /&gt;To obtain the key and account name, after creating media services account in step 2 above, you can just click on it (as shown below)&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-L3cY8DiqBHE/UOKGq67WFtI/AAAAAAAAAGs/T98jqaHeopc/s1600/M2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;306&quot; src=&quot;https://4.bp.blogspot.com/-L3cY8DiqBHE/UOKGq67WFtI/AAAAAAAAAGs/T98jqaHeopc/s1600/M2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The below screen will be displayed.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-HymuRrFF4y4/UOKGsPldTxI/AAAAAAAAAG0/MZdPjbE9hEw/s1600/M3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;509&quot; src=&quot;https://3.bp.blogspot.com/-HymuRrFF4y4/UOKGsPldTxI/AAAAAAAAAG0/MZdPjbE9hEw/s1600/M3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Then, click on the Manage Keys button (as shown above) to see the below dialog&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-Rl03zXQL4QI/UOKGKrf-uuI/AAAAAAAAAGk/Psp3bv30sNo/s1600/m4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;506&quot; src=&quot;https://1.bp.blogspot.com/-Rl03zXQL4QI/UOKGKrf-uuI/AAAAAAAAAGk/Psp3bv30sNo/s1600/m4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now, just copy the account name and primary media service access key and paste them in a notepad. We will be using these credentials for this proof of concept later.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To get content into media services, you must first create an asset (one or more media files together) and upload it to storage.&lt;br /&gt;&lt;br /&gt;Once you have the development environment ready, use Nuget to install the Azure media service SDK&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div&gt;&lt;b&gt;PM &amp;gt; Install-Package windowsazure.mediaservices &lt;/b&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;Here is the complete listing with explanation for uploading the video file to azure storage using media services. Create a console application and copy the below code.&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System;&lt;br /&gt;        using System.IO;&lt;br /&gt;        using System.Configuration;&lt;br /&gt;        using Microsoft.WindowsAzure;&lt;br /&gt;        using Microsoft.WindowsAzure.MediaServices.Client;&lt;br /&gt;&lt;br /&gt;       //Let us have a Global Handle for accessing the media services context&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static CloudMediaContext m_MediaContext;&lt;br /&gt;       // Entry point to your console application&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the server context. The Media Service Name &amp;amp; Access key are the inputs&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_MediaContext = new CloudMediaContext(&quot;msguymediaservice&quot;, &quot;/u4+RqlARQcRWti5OOtBewOEHEgzn/H6hiWOcXSGwZg=&quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Upload the video file. Asset Creation Options can&amp;nbsp; Common Encryption Protected or Envelope Encryption Protected if you want to encrypt it &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //during the process or leave it to None otherwise. Replace the below file path with the actual video file path on your machine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UploadMedia(AssetCreationOptions.None, @&quot;D:\sample_mpeg4.mp4&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Creates the asset and returns the object&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static private IAsset CreateAsset(string i_sAssetName, AssetCreationOptions i_AssetCreationOption)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var objAsset = m_MediaContext.Assets.Create(i_sAssetName, i_AssetCreationOption);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return objAsset;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Uploads the media file to Azure Storage after creating the asset&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static public void UploadMedia(AssetCreationOptions i_Option, string i_sFilePath)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Form a Name for asset&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var sDynamicAssetName = &quot;Asset_&quot; + DateTime.UtcNow.ToString();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Create a empty asset&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var objAsset = CreateAsset(sDynamicAssetName, i_Option);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get filename with extension which needs to be associated with asset&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var fileName = Path.GetFileName(i_sFilePath);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Create the asset file&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var objAssetFile = objAsset.AssetFiles.Create(fileName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&quot;Created assetFile {0}&quot;, objAssetFile.Name);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Create an AccessPolicy instance that defines the permissions and duration of access to the asset.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var accessPolicy = m_MediaContext.AccessPolicies.Create(sDynamicAssetName, TimeSpan.FromDays(3), AccessPermissions.Write | AccessPermissions.List);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Create a Locator instance that provides access to the asset.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var locator = m_MediaContext.Locators.CreateLocator(LocatorType.Sas, objAsset, accessPolicy);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&quot;Upload {0}&quot;, objAssetFile.Name);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Updoad the asset to Azure Storage&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objAssetFile.Upload(i_sFilePath);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&quot;Done uploading of {0} using Upload()&quot;, objAssetFile.Name);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Finally, Some Cleanup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; locator.Delete();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; accessPolicy.Delete();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Now, run the project. The code will create asset and upload it to the storage on your account automatically.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-U7ssjD3WiFE/UOKeC0I4opI/AAAAAAAAAHU/nS17F0p8edk/s1600/M5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;327&quot; src=&quot;https://1.bp.blogspot.com/-U7ssjD3WiFE/UOKeC0I4opI/AAAAAAAAAHU/nS17F0p8edk/s640/M5.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span id=&quot;goog_393163688&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_393163689&quot;&gt;&lt;/span&gt;&lt;br /&gt;Once the upload is complete, just login to your azure account and verify.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-qOArcWr6hEc/UOKetjDq60I/AAAAAAAAAHc/vaR3RCmWA_k/s1600/M6.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;122&quot; src=&quot;https://3.bp.blogspot.com/-qOArcWr6hEc/UOKetjDq60I/AAAAAAAAAHc/vaR3RCmWA_k/s640/M6.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now, from the azure portal, You may publish your video in one click (ref. screenshot below. You can see a button). Once you publish it, you should see a publish URL for the video which you can use !!.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-wwRL7g6WVFo/UOKmEd39XRI/AAAAAAAAAH8/a5O5mDq-UL4/s1600/M7.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-wwRL7g6WVFo/UOKmEd39XRI/AAAAAAAAAH8/a5O5mDq-UL4/s1600/M7.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://4.bp.blogspot.com/-wwRL7g6WVFo/UOKmEd39XRI/AAAAAAAAAH8/a5O5mDq-UL4/s1600/M7.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-0rnUYUXV9Yo/UOKkBD_8rfI/AAAAAAAAAHs/o7RDtIHBVWs/s1600/M7.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;For a list of supported Media file formats, click &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/hh973634&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. You can also upload multiple files, upload even asynchronously &amp;amp; get the progress of the upload. I will leave this part to you. You can also program Media Services using the OData-based REST APIs. I will explain this part in an other post in the near future. Hope this post was useful. Your feedback and comments are welcome.&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/4705114073678250101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/4705114073678250101'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2013/01/WindowsAzureMediaServicesUploadVideos.html' title='Programmatically Uploading Media Content using Windows Azure Media Services SDK &amp; C#'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-NmTK5b_IUQY/UOKuj-5KVeI/AAAAAAAAAIM/EtPSp8YrdcE/s72-c/clouds-upload.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-2378762522052075690</id><published>2014-01-21T05:27:00.004-08:00</published><updated>2014-01-21T10:44:42.715-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dialogs"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="feed and share"/><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="sdk"/><title type='text'>Facebook Javascript API : Feed and Share Dialog for Beginners</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-5GQsisZ27G8/Ut6GYYiq-SI/AAAAAAAAAUA/52eND4UcH5c/s1600/LAPI.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-5GQsisZ27G8/Ut6GYYiq-SI/AAAAAAAAAUA/52eND4UcH5c/s1600/LAPI.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;I received five emails last month especially from students on making their websites social. &amp;nbsp;This post is for them and all others who are interested in social media programming. Facebook Graph API no doubt is a silver bullet and a primary way today that allows us to post and retrieve data from-to Facebook. I am using it since its inception. I must say it is amazing and easy to work with.&lt;br /&gt;&lt;br /&gt;This post is all about an interesting Facebook dialog which is powerful and has potential to generate decent traffic for your webpages. If you are a webmaster or an app developer, this post is for you.&lt;br /&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Facebook dialogs are cool because they do not require any additional permissions as each one do not require someone to directly interact with them. Facebook offers dialogs for various purposes. I will write about each one of them in coming days. This post will give an introduction to Feed and Share dialog to begin with.&lt;br /&gt;&lt;br /&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Feed and Share Dialog&lt;/h3&gt;Feed dialog allows users to post a story on their/others timeline (Well, after you login). The dialog works even on IOS &amp;amp; Android mobile platforms with a little variation in implementation. In the phone world, we call the same feed dialog as a Share Dialog. Here is how it looks. You might have come across this dialog while browsing websites or when using social media plugins on the blogs yourself.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-AiGhBjBUw8c/Ut5Fq2pDoGI/AAAAAAAAASA/dr2k39T2pl8/s1600/fb1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-AiGhBjBUw8c/Ut5Fq2pDoGI/AAAAAAAAASA/dr2k39T2pl8/s1600/fb1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;&lt;/h4&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Javascript Implementation : The fastest way&lt;/h4&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Idea : Let us have a screen with a login button. Clicking on it should allow a user to login through his facebook credentials. After&amp;nbsp;successful&amp;nbsp;login, our&amp;nbsp;application&amp;nbsp;must show another button, clicking on which would launch the Facebook Feed dialog. Our code should decide what to display in the dialog.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Open Visual Studio, create a new website by name &quot;&lt;b&gt;FBPlayground&lt;/b&gt;&quot;. Right click on the website name in the solution explorer and add a new html file &quot;&lt;b&gt;FeedAndShare.html&lt;/b&gt;&quot;.&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Open the new file you just created and clear the contents of it. Add the below code, and save it.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;pre class=&quot;brush:javascript&quot;&gt;       &lt;br /&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;    &amp;lt;title&amp;gt;Feed and Share Dialog&amp;lt;/title&amp;gt;&lt;br /&gt;    &amp;lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;        //Not Jquery !!! just a helper function to return an object&lt;br /&gt;        function $(i_obj) {&lt;br /&gt;            return document.getElementById(i_obj);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        window.fbAsyncInit = function () {&lt;br /&gt;            FB.init({&lt;br /&gt;                appId: &#39;757846120912141&#39;, // App ID : Insert the APP ID of the APP you created here&lt;br /&gt;                status: true,&lt;br /&gt;            });&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        function fbLogin() {&lt;br /&gt;            FB.login(function (response) {&lt;br /&gt;                if (response.status == &quot;connected&quot;) {&lt;br /&gt;                    //User has logged in, hide the login button and show the launch button&lt;br /&gt;&lt;br /&gt;                    $(&quot;btnlogin&quot;).className = &quot;Hide&quot;;&lt;br /&gt;                    $(&quot;btnlauncher&quot;).className = &quot;Show&quot;;&lt;br /&gt;&lt;br /&gt;                } else {&lt;br /&gt;                    // user has not yet logged in, hide launcher button and display login button&lt;br /&gt;&lt;br /&gt;                    $(&quot;btnlogin&quot;).className = &quot;Show&quot;;&lt;br /&gt;                    $(&quot;btnlauncher&quot;).className = &quot;Hide&quot;;&lt;br /&gt;                }&lt;br /&gt;            });&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        //Function displays the Feed Dialog&lt;br /&gt;        function LaunchFeedDialog() {&lt;br /&gt;        &lt;br /&gt;        //Create an object with the below properties.&lt;br /&gt;//There are a lot more parameters than what I have written below. Will explain each one of them in coming posts.&lt;br /&gt;            var obj = {&lt;br /&gt;                method: &#39;feed&#39;,&lt;br /&gt;                link: &#39;www.msguy.com&#39;,&lt;br /&gt;                picture: &#39;http://fbrell.com/f8.jpg&#39;,&lt;br /&gt;                name: &#39;A Title for Feed Dialog&#39;,&lt;br /&gt;                caption: &#39;Some Caption for the URL&#39;,&lt;br /&gt;                description: &#39;A description for the URL which is to be displayed&#39;&lt;br /&gt;            };&lt;br /&gt;&lt;br /&gt;            //Calling the Facebook API : Important&lt;br /&gt;            FB.ui(obj, callback);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        function callback(response) {&lt;br /&gt;            //Do anything you want here :)&lt;br /&gt;            //document.getElementById(&#39;msg&#39;).innerHTML = &quot;Post ID: &quot; + response[&#39;post_id&#39;];&lt;br /&gt;            //alert(response[&#39;post_id&#39;]); Some diagnostics lol :)&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Load the SDK Asynchronously. This is a very important part. It loads the Facebook javascript SDK automatically.&lt;br /&gt;        (function (d) {&lt;br /&gt;            var js, id = &#39;facebook-jssdk&#39;, ref = d.getElementsByTagName(&#39;script&#39;)[0];&lt;br /&gt;            if (d.getElementById(id)) { return; }&lt;br /&gt;            js = d.createElement(&#39;script&#39;); js.id = id; js.async = true;&lt;br /&gt;            js.src = &quot;//connect.facebook.net/en_US/all.js&quot;;&lt;br /&gt;            ref.parentNode.insertBefore(js, ref);&lt;br /&gt;        } (document));&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!--Styles --&amp;gt;&lt;br /&gt;    &amp;lt;style type=&quot;text/css&quot;&amp;gt;&lt;br /&gt;        /*Hides a element*/&lt;br /&gt;        .Hide&lt;br /&gt;        {&lt;br /&gt;            display: none;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        /*Shows an element*/&lt;br /&gt;        .Show&lt;br /&gt;        {&lt;br /&gt;            display: block;&lt;br /&gt;        }&lt;br /&gt;    &amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;!--User can click on this button and the fbLogin method is invoked which prompts for facebook login--&amp;gt;&lt;br /&gt;    &amp;lt;input id=&quot;btnlogin&quot; type=&quot;button&quot; onclick=&quot;fbLogin()&quot; value=&quot;Login with Facebook&quot; /&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;!--After user logs in using facebook credentials, make this button visible. Not until.--&amp;gt;&lt;br /&gt;    &amp;lt;input id=&quot;btnlauncher&quot; type=&quot;button&quot; onclick=&quot;LaunchFeedDialog();&quot; value=&quot;Launch Feed Dialog&quot;&lt;br /&gt;        class=&quot;Hide&quot; /&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;The next thing you should do is to create a facebook app. With your Facebook credentials, login to official Facebook developer apps platform &lt;a href=&quot;https://developers.facebook.com/apps&quot; target=&quot;_blank&quot;&gt;https://developers.facebook.com/apps&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;After login, just navigate to the &quot;Apps&quot; menu and select &quot;Create a New App&quot;. A pop-up will be shown just like this.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-2fs3HL7N_jc/Ut5Xdp8_GMI/AAAAAAAAASQ/RIiOmJ394n4/s1600/2014-01-21+16_47_30-DialogueDemo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-2fs3HL7N_jc/Ut5Xdp8_GMI/AAAAAAAAASQ/RIiOmJ394n4/s1600/2014-01-21+16_47_30-DialogueDemo.png&quot; height=&quot;206&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Provide a name for your app (In my case, it is &lt;b&gt;Dialo&lt;/b&gt;). It can be anything you wish. Leave the namespace field blank. You can select a category which is appropriate for your app. Then, click on the &quot;&lt;b&gt;Create App&lt;/b&gt;&quot;                     button. It will prompt you to complete a Captcha. Complete it. You are almost done.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Your app is now created. Let us configure it to work with our code. Select the Settings menu from the left pane. You will see the below screen.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-GGxU9bMzsLs/Ut5bmLfutKI/AAAAAAAAASc/lF7d-84qIcw/s1600/2014-01-21+17_01_56-Dialo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-GGxU9bMzsLs/Ut5bmLfutKI/AAAAAAAAASc/lF7d-84qIcw/s1600/2014-01-21+17_01_56-Dialo.png&quot; height=&quot;241&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Note down the APP ID. &lt;b&gt;We need it later in our code.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Enter the name of &amp;nbsp;App Domain as &quot;localhost&quot; in case you are running this sample on localhost.&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Now, click on the &quot;+&lt;b&gt;Add Platform&lt;/b&gt;&quot; button to see the below screen. Select &quot;&lt;b&gt;Website&lt;/b&gt;&quot;. The pop-up would close and you will be back to previous screen with a few additional controls displayed in it.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-NcSWnTvW4KM/Ut5bmPQoVCI/AAAAAAAAASw/wrdWst6eDzY/s1600/2014-01-21+17_02_16-Dialo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-NcSWnTvW4KM/Ut5bmPQoVCI/AAAAAAAAASw/wrdWst6eDzY/s1600/2014-01-21+17_02_16-Dialo.png&quot; height=&quot;245&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Now, enter the path to the virtual directory of the application you just created in the &quot;&lt;b&gt;Site URL&lt;/b&gt;&quot; field. In my case, it was &quot;&lt;b&gt;http://localhost:62735/FBPlayground&lt;/b&gt;&quot;&lt;b&gt;. &lt;/b&gt;(In your case, the port number would differ. Just run your website and copy the same port number).&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;Say for&amp;nbsp;example, if the test application you created is available at&amp;nbsp;&lt;b&gt;http://localhost/MyDialogTest&lt;/b&gt;, provide the same URL in the Site URL box of the above screen. (In case your app will be hosted on a domain, provide the full URL of the site and virtual directory. This is where users are redirected after they login to your app using their facebook credentials. Just be cautious. This URL is very important and your app only works if you provide a valid URL. In case you are using Visual Studio and running the website using the built-in web server, the port number would vary when compared to the one above. I have provided a sample screenshot below which works for me.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-avmfQoDKhBY/Ut5bmVtjYYI/AAAAAAAAASs/Pjh86G5vpjw/s1600/2014-01-21+17_02_39-Dialo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-avmfQoDKhBY/Ut5bmVtjYYI/AAAAAAAAASs/Pjh86G5vpjw/s1600/2014-01-21+17_02_39-Dialo.png&quot; height=&quot;279&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Save the changes.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;color: red;&quot;&gt;Do not forget to change the APP ID in the code above with the actual APP ID of your Facebook app.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Running It&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;In your Visual Studio, set &quot;&lt;b&gt;FeedAndShare.html&lt;/b&gt;&quot;&lt;b&gt;&amp;nbsp;&lt;/b&gt;as a start page and run the website. You will see the screen below.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-6VMQy3-liBw/Ut5-2OSM6vI/AAAAAAAAAS8/NmiqUs7etWs/s1600/2014-01-21+19_30_12-Feed+and+Share+Dialog.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-6VMQy3-liBw/Ut5-2OSM6vI/AAAAAAAAAS8/NmiqUs7etWs/s1600/2014-01-21+19_30_12-Feed+and+Share+Dialog.png&quot; height=&quot;122&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Click on the &quot;&lt;b&gt;Login with Facebook&lt;/b&gt;&quot; button. You would then see the below screen. (If you don&#39;t see the below screen, there are two reasons. The website URL you provided while creating Facebook App is not correct or you have opened the html file directly without a web server.)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-N_IQzsFkVjY/Ut5-2EG9zbI/AAAAAAAAATM/RsEL8s8ZSNw/s1600/2014-01-21+19_31_00-Feed+and+Share+Dialog.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-N_IQzsFkVjY/Ut5-2EG9zbI/AAAAAAAAATM/RsEL8s8ZSNw/s1600/2014-01-21+19_31_00-Feed+and+Share+Dialog.png&quot; height=&quot;272&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Login with valid Facebook credentials. You would then see a screen requesting permission.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-RFjn2BqRWK0/Ut5-2zZ-TDI/AAAAAAAAATo/G6WojKOBEKY/s1600/2014-01-21+19_34_52-Feed+and+Share+Dialog.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-RFjn2BqRWK0/Ut5-2zZ-TDI/AAAAAAAAATo/G6WojKOBEKY/s1600/2014-01-21+19_34_52-Feed+and+Share+Dialog.png&quot; height=&quot;286&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Click on the &quot;&lt;b&gt;Okay&lt;/b&gt;&quot; button. Now, you will see another option on the screen to launch Feed dialog. The login button would be hidden.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-OY5_bhMuGk4/Ut6AgLwRscI/AAAAAAAAATw/WhJXIPz8qAY/s1600/2014-01-21+19_42_55-Feed+and+Share+Dialog.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-OY5_bhMuGk4/Ut6AgLwRscI/AAAAAAAAATw/WhJXIPz8qAY/s1600/2014-01-21+19_42_55-Feed+and+Share+Dialog.png&quot; height=&quot;110&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Click on the &quot;&lt;b&gt;Launch Feed Dialog&lt;/b&gt;&quot; button. You see see the dialog with all the settings configured. You can just type something and share it on your wall.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-ZU1JQtECQ3w/Ut5-3ADbq9I/AAAAAAAAATk/wv7UBkRTIEE/s1600/2014-01-21+19_35_19-Feed+and+Share+Dialog.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-ZU1JQtECQ3w/Ut5-3ADbq9I/AAAAAAAAATk/wv7UBkRTIEE/s1600/2014-01-21+19_35_19-Feed+and+Share+Dialog.png&quot; height=&quot;206&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Now, Login to facebook and check your wall. You will find the post you just shared. All your friends can see it and share it if they like.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;The code is self explanatory. However, I have added a few comments. Go through them. Let me know if it worked for you and even if it doesn&#39;t, I will help you to fix it and make it work for you.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/2378762522052075690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/2378762522052075690'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2014/01/facebook-feed-and-share-dialog-for.html' title='Facebook Javascript API : Feed and Share Dialog for Beginners'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-5GQsisZ27G8/Ut6GYYiq-SI/AAAAAAAAAUA/52eND4UcH5c/s72-c/LAPI.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-334218498567874278</id><published>2014-01-18T03:05:00.000-08:00</published><updated>2017-04-08T11:29:30.028-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="General"/><category scheme="http://www.blogger.com/atom/ns#" term="generic list"/><category scheme="http://www.blogger.com/atom/ns#" term="MS Office reports with c#"/><category scheme="http://www.blogger.com/atom/ns#" term="Reports"/><category scheme="http://www.blogger.com/atom/ns#" term="templater"/><title type='text'>Creating a cool Microsoft Word Report  for listing Scientists with Templater and C# Generic List</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_TFauG3posoU/TT5aanN81fI/AAAAAAAAADM/J2v9kWCWvxo/s1600/1088924_annual_report_2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://2.bp.blogspot.com/_TFauG3posoU/TT5aanN81fI/AAAAAAAAADM/J2v9kWCWvxo/s200/1088924_annual_report_2.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Some time back, I had written a post on Templater Library for creating a simple &quot;Prize Winner Notification&quot; e-mailer template using MS Word &amp;amp; Templater. It was a simple one. If you have not read it yet, please have a look at this &lt;a href=&quot;http://www.msguy.com/2011/12/generating-reports-with-templater-ms.html&quot; target=&quot;_blank&quot;&gt;Post&lt;/a&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In this post, let us create a Microsoft Word Report which lists few great scientists across the world. Also, let us see how the Templater supports Generic List as a data source for the report.&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b style=&quot;color: purple;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Creating the report template using MS Word&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Open Microsoft Word, create a new blank document.&lt;/li&gt;&lt;li&gt;Insert a table with just 1 Row and 2 Columns&lt;/li&gt;&lt;li&gt;Insert the Tags inside the cells [[NAME]] &amp;amp; [[BIRTH_DEATH]]&lt;/li&gt;&lt;li&gt;Select the table design or do the color, font formatting and style the way you want. (This is not mandatory!). You can even select a bullet!&lt;/li&gt;&lt;li&gt;Save the document as Scientists.docx (or .doc)&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-t_bywcOPZ8w/TxaiEzMVQJI/AAAAAAAAABw/pRDnL8rwIf8/s1600/Templater2_1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://3.bp.blogspot.com/-t_bywcOPZ8w/TxaiEzMVQJI/AAAAAAAAABw/pRDnL8rwIf8/s1600/Templater2_1.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b style=&quot;color: purple;&quot;&gt;Writing some code&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Open Visual Studio and Create a new console application for this demonstration! Reference the Templater DLL to Your Project or do Install-Package Templater from Nuget!&lt;/li&gt;&lt;li&gt;&amp;nbsp;Now, let us create a Entity which can hold the Name and Active years of a scientist.Add a class file, Create a Class like this.&lt;/li&gt;&lt;/ol&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;class Scientist&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string m_sName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string m_sYears;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string NAME&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return m_sName; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { m_sName = value; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string BIRTH_DEATH&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return m_sYears; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { m_sYears = value; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;The property names are in UPPERCASE just because the tags we gave in the word document are also in Uppercase. Also, the property names here exactly match the tags we gave in the word document template.&lt;br /&gt;In the main program.cs, let us add a function which generates a list of employess&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// This method Creates a List of Scientists and adds the objects into a Generic List Collection &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// and Returns it back&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static List&amp;lt;Scientist&amp;gt; GetScientistData()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Scientist&amp;gt; lstScientists = new List&amp;lt;Scientist&amp;gt;();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scientist scntst0 = new Scientist { NAME = &quot;Albert Einstein&quot;, BIRTH_DEATH = &quot;1879 - 1955&quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstScientists.Add(scntst0);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scientist scntst1 = new Scientist { NAME = &quot;Sir Isaac Newton&quot;, BIRTH_DEATH = &quot;1642 - 1727&quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstScientists.Add(scntst1);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scientist scntst2 = new Scientist { NAME = &quot;Galileo Galilei&quot;, BIRTH_DEATH = &quot;1564 - 1642&quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstScientists.Add(scntst2);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scientist scntst3 = new Scientist { NAME = &quot;Charles Darwin&quot;, BIRTH_DEATH = &quot;1809 - 1882&quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstScientists.Add(scntst3);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scientist scntst4 = new Scientist { NAME = &quot;Johannes Kepler&quot;, BIRTH_DEATH = &quot;1571 - 1630&quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstScientists.Add(scntst4);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scientist scntst5 = new Scientist { NAME = &quot;Louis Pasteur&quot;, BIRTH_DEATH = &quot;1822 - 1895&quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstScientists.Add(scntst5);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scientist scntst6 = new Scientist { NAME = &quot;James Maxwell&quot;, BIRTH_DEATH = &quot;1831 - 1879&quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstScientists.Add(scntst6);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scientist scntst7 = new Scientist { NAME = &quot;Edwin Hubble&quot;, BIRTH_DEATH = &quot;1889 - 1953&quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstScientists.Add(scntst7);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scientist scntst8 = new Scientist { NAME = &quot;Emil Fisher&quot;, BIRTH_DEATH = &quot;1852 - 1919&quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstScientists.Add(scntst8);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scientist scntst9 = new Scientist { NAME = &quot;Paul Dirac&quot;, BIRTH_DEATH = &quot;1902 - 1984&quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstScientists.Add(scntst9);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return lstScientists;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;Now, we have the data and also the report template. Let us write the code to generate report&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// This method Generates the Report using Templater&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name=&quot;lstScientists&quot;&amp;gt;List of Scientist (Generic List) &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name=&quot;i_sReportLocation&quot;&amp;gt;Location of the Word Template&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static void GenerateReport(List&amp;lt;Scientist&amp;gt; lstScientists, string i_sReportLocation)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (var document = Configuration.Factory.Open(i_sReportLocation))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.Process(lstScientists);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Open the report (file) for the user to view it&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Process.Start(i_sReportLocation);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;Thats all we have to do. But hold on. We have to invoke these methods. Lets do it&lt;br /&gt;&lt;br /&gt;In the main function , call the above methods to create the report&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;using System.Collections.Generic;&lt;br /&gt;using NGS.Templater;&lt;br /&gt;using System.Diagnostics;&lt;/pre&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;&lt;/pre&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;static void Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;//Generates Data&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Scientist&amp;gt; lstScientists = GetScientistData(); &lt;br /&gt;&lt;br /&gt;//Generates Report based on the data. When trying out this code, Give appropriate path of your report template (Which you created earlier) below.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GenerateReport(lstScientists,@&quot;C:\Scientists.docx&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;Hurry up!&lt;br /&gt;&lt;br /&gt;Run it and believe it!&lt;br /&gt;&lt;br /&gt;Here is how it looks!&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-OYvMuG-zeM0/TxamdvY986I/AAAAAAAAAB4/1RvY8BY7t-A/s1600/Templater2_2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://3.bp.blogspot.com/-OYvMuG-zeM0/TxamdvY986I/AAAAAAAAAB4/1RvY8BY7t-A/s1600/Templater2_2.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Working with MS Office reports was never easier for C# developers earlier. Isn&#39;t it?&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/334218498567874278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/334218498567874278'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/01/creating-cool-microsoft-word-report-for.html' title='Creating a cool Microsoft Word Report  for listing Scientists with Templater and C# Generic List'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/_TFauG3posoU/TT5aanN81fI/AAAAAAAAADM/J2v9kWCWvxo/s72-c/1088924_annual_report_2.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-1517738410214167211</id><published>2013-10-24T04:42:00.000-07:00</published><updated>2014-03-31T01:35:34.127-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="basics"/><category scheme="http://www.blogger.com/atom/ns#" term="Beginners"/><category scheme="http://www.blogger.com/atom/ns#" term="Win 8"/><category scheme="http://www.blogger.com/atom/ns#" term="windows 8"/><category scheme="http://www.blogger.com/atom/ns#" term="windows8"/><category scheme="http://www.blogger.com/atom/ns#" term="WinRT"/><title type='text'>5 Windows 8 posts for beginners</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;There are few posts on the web which makes Windows 8 Installation and understanding the concepts easier. Here are five of them which I found simple and interesting.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;50 Windows 8 tips, tricks and secrets&lt;br /&gt;&lt;a href=&quot;http://www.techradar.com/news/software/operating-systems/50-windows-8-tips-tricks-and-secrets-1028220&quot; style=&quot;font-weight: normal;&quot; target=&quot;_blank&quot;&gt;http://www.techradar.com/news/software/operating-systems/50-windows-8-tips-tricks-and-secrets-1028220&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;font-weight: normal; text-align: left;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;font-weight: normal; text-align: left;&quot;&gt;How to Install Windows 8 In 7 Simple Steps&lt;br /&gt;&lt;a href=&quot;http://www.soluto.com/knowledgebase/how-to-install-windows-8&quot; target=&quot;_blank&quot;&gt;http://www.soluto.com/knowledgebase/how-to-install-windows-8&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;font-weight: normal; text-align: left;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;font-weight: normal; text-align: left;&quot;&gt;How to optimize Windows 8 on old hardware&lt;br /&gt;&lt;a href=&quot;http://www.pcworld.com/article/2011906/how-to-optimize-windows-8-on-old-hardware.html&quot; target=&quot;_blank&quot;&gt;http://www.pcworld.com/article/2011906/how-to-optimize-windows-8-on-old-hardware.html&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-weight: normal; text-align: left;&quot;&gt;Windows 8 Secrets: WinRT, the Windows Runtime &lt;br /&gt;&lt;a href=&quot;http://www.winsupersite.com/article/windows8/windows-8-secrets-winrt-windows-runtime-142196&quot; target=&quot;_blank&quot;&gt;http://www.winsupersite.com/article/windows8/windows-8-secrets-winrt-windows-runtime-142196&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;font-weight: normal; text-align: left;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;font-weight: normal; text-align: left;&quot;&gt;How to Backup and Import Wireless Network Settings&lt;br /&gt;&lt;a href=&quot;http://mywindows8.org/backup-import-wireless-network-settings/&quot; target=&quot;_blank&quot;&gt;http://mywindows8.org/backup-import-wireless-network-settings/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/1517738410214167211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/1517738410214167211'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/10/5-windows-8-posts-for-beginners.html' title='5 Windows 8 posts for beginners'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-3526063425250277855</id><published>2013-09-19T06:51:00.000-07:00</published><updated>2014-03-31T01:37:40.529-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Application"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Development"/><category scheme="http://www.blogger.com/atom/ns#" term="metro"/><category scheme="http://www.blogger.com/atom/ns#" term="picture library"/><category scheme="http://www.blogger.com/atom/ns#" term="Thumbnails"/><category scheme="http://www.blogger.com/atom/ns#" term="Video"/><category scheme="http://www.blogger.com/atom/ns#" term="windows 8"/><category scheme="http://www.blogger.com/atom/ns#" term="windows8"/><category scheme="http://www.blogger.com/atom/ns#" term="WindRT"/><title type='text'>Video Tutorial : Creating Win 8 Metro App to work with Picture Library (WinRT, XAML and C# )</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Some time back, I created a small Windows 8 Metro Application&amp;nbsp;(Windows Store App)&amp;nbsp;which can access the&amp;nbsp;Windows Picture Library and display thumbnails of all the pictures available in it. This post should be of a little help for developers who just started exploring Metro Apps for Windows 8.&lt;br /&gt;&lt;br /&gt;I&#39;ve created a detailed 30 minutes video covering many aspects (Code, UI, Concepts)&amp;nbsp;of building a Metro Application for the Picture library Thumbnails. Go ahead and watch it.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot; height=&quot;360&quot; src=&quot;http://www.youtube.com/embed/3sxXm_LAsC0&quot; width=&quot;440&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/3526063425250277855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/3526063425250277855'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/09/video-tutorial-creating-windows-8-metro.html' title='Video Tutorial : Creating Win 8 Metro App to work with Picture Library (WinRT, XAML and C# )'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/3sxXm_LAsC0/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-4270545460477682792</id><published>2013-09-07T01:22:00.000-07:00</published><updated>2014-03-31T01:42:44.987-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apps"/><category scheme="http://www.blogger.com/atom/ns#" term="async"/><category scheme="http://www.blogger.com/atom/ns#" term="metro"/><category scheme="http://www.blogger.com/atom/ns#" term="picture library"/><category scheme="http://www.blogger.com/atom/ns#" term="windows 8"/><category scheme="http://www.blogger.com/atom/ns#" term="windows8"/><category scheme="http://www.blogger.com/atom/ns#" term="XAML"/><title type='text'>User Content Files and Windows 8 Metro Application - Part 1</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://www.theinquirer.net/IMG/281/212281/microsoft-skydrive-metro-app-for-windows-8-540x334.png?1329839839&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.theinquirer.net/IMG/281/212281/microsoft-skydrive-metro-app-for-windows-8-540x334.png?1329839839&quot; height=&quot;195&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;This post introduces a few concepts which can help you when working with user content files in Metro Applications. Next post will focus on the code and a demo. The post is full of concepts and theory and you may be a person who like to see code more than the concepts. However, it is necessary to understand the basic concepts before starting a code demonstration. I promise. Next post will have code, code and nothing else. Read further..&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;When we are working on Windows 8 Metro Apps, we have a wide range of options when choosing the data source for our apps. A metro application can access data&lt;br /&gt;&lt;ol&gt;&lt;li&gt;From the user content files located on a machine, removable storage, or a network drive.&lt;/li&gt;&lt;li&gt;From the isolated storage which is local to application (APP DATA)&lt;/li&gt;&lt;li&gt;From the Web. (Through WCF, OData Service etc)&lt;/li&gt;&lt;li&gt;From other applications if they expose.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;i&gt;And by the time I am writing this post, Microsoft has introduced the Azure Mobile services. Now, Windows 8 Metro Apps for PC &amp;amp; Mobile can access data from the azure cloud and the data can be in structured format. I will write about this in a separate post in near future.&lt;/i&gt;&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;Metro Apps can access certain file system locations, like the app install directory, app data locations and the Downloads folder by default. Apps can also access additional locations through the file picker or by declaring capabilities.&lt;/blockquote&gt;&lt;br /&gt;Metro apps can access the user files located in Windows Library.&amp;nbsp; To a windows library, user can add documents, pictures and videos. Also users can add additional content locations which can be of a disk, network drive or a removable storage and the library then acts as a central repository for all the files and folders you mapped. Your metro app can access the library by just declaring a capability in the manifest of the application. When your Metro app is installed by users, it asks them to provide permission to access the library. Also, in cases where we do not want our apps to access the library directly, we can display the file pickers which allows users to select files from different locations of user&#39;s computer.&lt;br /&gt;&lt;br /&gt;Windows 8 makes it very easy to work with files in a location transparent manner. You work with the local files, network files and the web files in the same way with the same windows storage API.&lt;br /&gt;&lt;br /&gt;The &lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;StorageFile&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&amp;amp; &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;b&gt;StorageFolder&lt;/b&gt;&lt;/span&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;classes of the Storage API abstracts away the physical locations. The Storage File can represent a file on the local machine or a file on the cloud and similarly a Storage folder may be a physical folder on the machine or a virtual folder representing a windows library or a group of files.&lt;br /&gt;&lt;br /&gt;Now, to access a top level folder within our Metro Application, we need to provide a reference to it.&amp;nbsp; For example, we can write the code like&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;StorageFolder picLibrary = Windows.Storage.KnownFolders.PicturesLibrary;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;b&gt;KnownFolders &lt;/b&gt;&lt;/span&gt;class Provides access to common locations that contain user content. The class is static and cannot be instantiated. You must Call the methods directly instead. Also, In order to access the folder and libraries represented by the properties of this class, you must declare the necessary capabilities in your app manifest as I mentioned..&lt;br /&gt;&lt;br /&gt;We can create metro applications using C# / VB.Net for the business logic and XAML for the User Interface. Also, if you are from a web background, you can create a metro app just with JavaScript for business logic and HTML for the User interface. No more disappointment!&lt;br /&gt;&lt;br /&gt;In the next post, we shall create a Metro Application for displaying images from the windows pictures library. Just install the prerequisites Visual Studio 2012 (at least a express edition) and the Windows 8 operating system (a preview version at least) and get ready for the action.&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/4270545460477682792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/4270545460477682792'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/09/user-content-files-and-windows-8-metro.html' title='User Content Files and Windows 8 Metro Application - Part 1'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-2335678152214123304</id><published>2013-07-28T07:03:00.000-07:00</published><updated>2014-03-31T01:40:00.329-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bit.ly client"/><category scheme="http://www.blogger.com/atom/ns#" term="bitly"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="csharp"/><category scheme="http://www.blogger.com/atom/ns#" term="redirection client"/><category scheme="http://www.blogger.com/atom/ns#" term="URL chop"/><category scheme="http://www.blogger.com/atom/ns#" term="url shorten"/><title type='text'>Developing a Link Chopper using C# and Bit.ly API in 1 Hour</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cdn1.iconfinder.com/data/icons/Primo_Icons/PNG/128x128/link.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://cdn1.iconfinder.com/data/icons/Primo_Icons/PNG/128x128/link.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;I just spent an hour today to develop a very small tool (Just 130 KB) for Shortening the links using the API provided by bitly. I call it Link Chopper. I wrote it just for fun and to explore bit.ly API. I have Link Chopper ready and you can download it for free from this link &lt;a href=&quot;http://dstats.net/download/http://www.msanil.com/files/LinkChopper.zip&quot; target=&quot;_blank&quot;&gt; Download LinkChopper&lt;/a&gt;. You dont have to say thanks as it is a no big stuff :)&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;The tool gives an option for users to enter a long URL and generate a short bit.ly url with just one click.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-jwYpr6LyCI8/UBPrv6jwBkI/AAAAAAAAAEM/WKEU9oKGAnk/s1600/LinkChopper.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-jwYpr6LyCI8/UBPrv6jwBkI/AAAAAAAAAEM/WKEU9oKGAnk/s1600/LinkChopper.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-YBQboYOSHqQ/UBPrfMW7SmI/AAAAAAAAAEE/CRDGdX_EaaA/s1600/LinkChopper.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;/div&gt;Also, the short URL is copied to clipboard automatically so that users can just paste it wherever required. Link Chopper comes with basic functionality to clear the controls &amp;amp; launch the URL in browser.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Its a very simple tool and anyone can use it. I have used the background worker to generate the URL in the background while displaying the progress to user without blocking him.&lt;br /&gt;&lt;br /&gt;However, if you are a developer and interested in the code to generate the short url, read further.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;First, create a free bit.ly account. Go to &lt;a href=&quot;https://bitly.com/a/sign_up&quot; target=&quot;_blank&quot;&gt;https://bitly.com/a/sign_up&lt;/a&gt;. Of course, if you have a Facebook or twitter account, you can use that as well. &lt;/li&gt;&lt;li&gt;Login to your bit.ly account using your credentials and then visit this link &lt;a href=&quot;http://bitly.com/a/your_api_key/&quot; target=&quot;_blank&quot;&gt;http://bitly.com/a/your_api_key/&lt;/a&gt; . You will see a screen something like below (Do not use this same exact key. It doesn&#39;t work either as I have scrambled it. So, use your own keys)&lt;/li&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-9x9kN0GC4a4/UBPqT9S5XtI/AAAAAAAAAD8/FRAXZWKHQ54/s1600/BitlyAPI.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-9x9kN0GC4a4/UBPqT9S5XtI/AAAAAAAAAD8/FRAXZWKHQ54/s1600/BitlyAPI.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;I know you cannot wait anymore to see the code. Here is the function which can generate a Short URL.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// If you pass a Long URL, the bitly USER ID and THE API Key, this function will shorten the URL and return it back to caller&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param name=&quot;i_sLongUrl&quot;&amp;gt;Long URL&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name=&quot;i_sBitlyUserName&quot;&amp;gt;User ID&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name=&quot;i_sBitlyAPIKey&quot;&amp;gt;API Key&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;returns&amp;gt;URL if succeeds or Status if Fails&amp;lt;/returns&amp;gt;&lt;br /&gt;/// &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;br /&gt;public static string GetShortUrl(string i_sLongUrl, string i_sBitlyUserName, string i_sBitlyAPIKey)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Construct a valid URL and parameters to connect to Bitly Server&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder sbURL = new StringBuilder(&quot;http://api.bitly.com/v3/shorten?&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sbURL.Append(&quot;&amp;amp;format=xml&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sbURL.Append(&quot;&amp;amp;longUrl=&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sbURL.Append(HttpUtility.UrlEncode(i_sLongUrl));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sbURL.Append(&quot;&amp;amp;login=&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sbURL.Append(System.Web.HttpUtility.UrlEncode(i_sBitlyUserName));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sbURL.Append(&quot;&amp;amp;apiKey=&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sbURL.Append(System.Web.HttpUtility.UrlEncode(i_sBitlyAPIKey));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpWebRequest objRequest = WebRequest.Create(sbURL.ToString()) as HttpWebRequest;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; objRequest.Method = &quot;GET&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; objRequest.ContentType = &quot;application/x-www-form-urlencoded&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; objRequest.ServicePoint.Expect100Continue = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; objRequest.ContentLength = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Send the Request and Get the Response. The Response will have the status of operation and the bitlyURL&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WebResponse objResponse = objRequest.GetResponse();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StreamReader myXML = new StreamReader(objResponse.GetResponseStream());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dynamic xr = XmlReader.Create(myXML);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Retrieve the Status and URL from the Response&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; XmlDocument xdoc = new XmlDocument();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xdoc.Load(xr);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; string sStat = xdoc.ChildNodes(1).ChildNodes(1).ChildNodes(0).Value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (sStat == &quot;OK&quot;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return xdoc.ChildNodes(1).ChildNodes(2).ChildNodes(0).ChildNodes(0).Value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return sStat;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //I know the above code is dirty. You can use Linq to make it good and beautiful. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //I did not wanted to use linq and inteded to finish it fast. However, it works!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //the xml node status_txt will have the status of the operation and the tag url will have the link.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Instead of above code, Something like below code can make your code Neat. Leave the comments as as it is if you do not like to get your hands dirty&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //dynamic xdoc = XDocument.Load(xr);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if (xdoc.Descendants(&quot;status_txt&quot;).Value == &quot;OK&quot;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; return xdoc.Descendants(&quot;url&quot;).Value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; return xdoc.Descendants(&quot;status_txt&quot;).Value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return &quot;SOME_OTHER_ERROR&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;And, you can call it like&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;var sShortUrl = &lt;br /&gt;GetShortUrl(&quot;http://wwww.xyz.com/a_long_xyz_url_which_is_really_boring.html&quot;, &quot;23567o_6das567dflpu567m34dl&quot;, &quot;R_4e957fe279asdfasdfasdf03be81asdffbfefcc38c40e2b463&quot;) &lt;/pre&gt;Make sure you replace the above parameters with valid ones. Especially your bitly User Name and Key&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/2335678152214123304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/2335678152214123304'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/07/developing-link-chopper-using-c-and.html' title='Developing a Link Chopper using C# and Bit.ly API in 1 Hour'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-jwYpr6LyCI8/UBPrv6jwBkI/AAAAAAAAAEM/WKEU9oKGAnk/s72-c/LinkChopper.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-3501767155325276253</id><published>2013-03-29T10:24:00.000-07:00</published><updated>2013-04-02T04:59:02.746-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="attitude"/><category scheme="http://www.blogger.com/atom/ns#" term="comparison"/><category scheme="http://www.blogger.com/atom/ns#" term="compensation"/><category scheme="http://www.blogger.com/atom/ns#" term="industry"/><category scheme="http://www.blogger.com/atom/ns#" term="positive"/><category scheme="http://www.blogger.com/atom/ns#" term="problems"/><category scheme="http://www.blogger.com/atom/ns#" term="salary"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><title type='text'>The Big Post : Being positive about your work and organization</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-Ctez93Ky5mk/UVXNOTCw1BI/AAAAAAAAANw/Z3RjgSrB1mM/s1600/positive-attidtue.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://4.bp.blogspot.com/-Ctez93Ky5mk/UVXNOTCw1BI/AAAAAAAAANw/Z3RjgSrB1mM/s320/positive-attidtue.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Look. If you are a guy or gal who do not like the organization you are working at, this post may help you to learn a few things which you should actually know to start feeling successful @ work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Background:&lt;/b&gt; &amp;nbsp;First, I hate writing these kind of posts related to non-programming stuff. I am a techie, (Not a HR Guy) passionate about tools, technologies and programming. You will find no other posts in my blog which is non-technical. I am writing this post not because I am too rich or too much happy with my present employer. Also, I am not working for a fortune 100 giant too! &lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Adding to it, I never&amp;nbsp;traveled&amp;nbsp;abroad till today through my employer and I am not a silent spiritual guru who can teach you how to compromise in life and assume yourself to be happy inside. I am saying all this because I am always positive at work and telling you how to be positive at work. That&#39;s it !!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I like to earn a great salary, love to buy new smart phones every now and then and love to have beach vacations every month! I am a kind of person just like you. So, try to read the post completely before you start looking at the X button on the top right corner! &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Hey, look further.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&quot;Being successful at work&quot; is a delicious recipe to have and the main ingredients are &quot;Financial Success, Happiness and Job Satisfaction&quot;. Job satisfaction is as important as like a tablespoon of salt in a hot and spicy recipe.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This post is all about a typical employee mindset and the attitude. Most of the times, employees will be right in what they think, what they assume to be and what they predict about their organization. But the actions they take will usually be incorrect. Seriously, there will nothing be happening around them as they think. The problem is the resistance they have in accepting a thing or may be their organization is not doing well!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Any guy like you and me want these things @ work&lt;/div&gt;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Cool Designation: Like an evangelist or an expert or something smelling fancy&lt;/li&gt;&lt;li&gt;Easy to do work. (Which you yourself call it challenging)&lt;/li&gt;&lt;li&gt;A great N digit salary. (N is up to you)&lt;/li&gt;&lt;li&gt;Perks, Bonus, Goodies and rewards every now and then.&lt;/li&gt;&lt;li&gt;Onsite Opportunities&lt;/li&gt;&lt;li&gt;Holidays, Vacations and Sponsored trips!&lt;/li&gt;&lt;li&gt;Company Stocks, Club memberships and discounts.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;div&gt;OK. Now, read the above 7 lines few more times. You will know what you wanted and wanting. &amp;nbsp;Lemme tell you one thing. Whoever doesn&#39;t want these things are either sitting on top of mountains (meditating) or they do not belong to our planet. &amp;nbsp;Agree? I know you would. Well, you did. Yes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My intention here is to convey that everyone likes to have these things but mostly will not be getting all of these or my god&amp;nbsp; some guys do not get even one of these!! But still, you can be positive and work (here or there) with a smile :)&lt;/div&gt;&lt;div&gt;How? Read further.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;Just try to follow these things to be positive and energetic. Try seeing the difference in you&lt;/div&gt;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;b&gt;Be passionate&lt;/b&gt; about something in life. The so called &quot;Something&quot; in this context can be a Technology, art, painting, Sport or anything that interests you.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Maintain good Health:&lt;/b&gt; Sleep 8 Hours a day. Have enough food and water. This is a real important thing. I am not a doctor to suggest you to do physical exercise and all. Huh. I don&#39;t do it myself. Who gets time!! So, just get addicted to an indoor/outdoor game and play every day without miss. See, if you start thinking too much about the problems you have at work or about that damn employer, you yourself are getting tensed. You will die a few years early and your employer will never be affected. So, take care of yourself.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Spend time with your friends and family:&lt;/b&gt; &amp;nbsp;Have enough time for your family. Talk to them, spend more time with them, play with your kids, take your parents outside on a small vacation and do not think about your organization when you are with them. Don’t tell them how bad you feel about your organization. You are already wounded. Why are you passing the pain to your innocent family members?&lt;/li&gt;&lt;li&gt;&lt;b&gt;Think like a business owner:&lt;/b&gt; Think as if you are a business owner and observe the challenges. What would be your reaction if you open your own dream company and your employees eventually talk rubbish about it in front of others just like you are doing it now?&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Do not get influenced by External Factors:&lt;/b&gt; Do not allow external factors to influence you negatively. Many of your friends may not like their work, their financial life, and their team mates. You should never get influenced by what they are vomiting! It’s their problem and their problem should not create a problem to you. Observe what they are saying, listen to them, analyze the good and bad sides of it, but never take it seriously.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Don’t spread the disease: &lt;/b&gt;&amp;nbsp;Do not discuss what your friends talk about your organization with others. Do not even talk about this to your closest friends. Though your friends are complaining about your organization, they are discussing it with you just because they trust you. If you leak what they say, it’s like you are seriously doing some damage to your relationship. So, keep the things confidential. The worst thing one would do is to talk about such guys with the boss just to impress him. By doing such things, no one becomes a super hero; they just start losing their value. Even employers will hate such kind of guys eventually.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Do not show resistance&lt;/b&gt;. Accept everything positively in work. See, you are working for your customers. But again, your customers are working for someone else. What you think about your customers may not be true always. They might be having their own worries too.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Money is not everything:&lt;/b&gt; Money is very important and you and I work for it. But, why it should become everything? I personally know many super rich families. You will be surprised to know that they suffer more than you do. Own brothers and sisters quarrel for money. Own blood relatives will have disputes and the main reason most of the times will be that piece of paper called Money.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Stop Unnecessary Comparison:&lt;/b&gt; Understand that every human being in unique. Every human being deserves something which is unique. Let me give you an example&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Assume that you are a Person P having around 5 years of industry experience. You draw a monthly salary of S dollars. You are putting E amount of effort to earn it.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Now, your colleague has the experience as much you have. He might be drawing S + 100 dollars, He might just be putting E – 100 amount of effort only. &amp;nbsp;OK. Why can’t you accept it? Till you come to know the other guy is earning more than you, were you not happy?&amp;nbsp;Didn&#39;t&amp;nbsp;you unnecessarily make yourself unhappy?&lt;/li&gt;&lt;li&gt;So, is comparing bad?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;No. Not really. You must always compare yourself to others. Compare it to know where you are.&lt;/li&gt;&lt;li&gt;Compare it with your friends who earn less than you&lt;/li&gt;&lt;li&gt;Okay. Compare it with others who earn more than you. But, have an ambition or a desire to earn more. It is not harmful. But, don’t use that as a thing to talk negative about your organization; don’t allow that matter to demotivate you. Don’t allow that matter to hurt you inside. Don’t allow that matter to show less interest in your work. Instead, think of what you can do to earn more.&amp;nbsp;Isn&#39;t&amp;nbsp;it a good idea?&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;li&gt;&lt;b&gt;Think about yourself:&lt;/b&gt; This is kind of a tip which you should never ignore. You always think about others, work, things which bothers you. Do this. Go, just sit below a tree for some time alone, and think about yourself. Think what you are feeling, what you are doing, Why are you doing it, what best can be done, Where do you want to be? This is the thing you should be doing.&amp;nbsp;Isn&#39;t&amp;nbsp;it? By appreciating your organization or by blaming them, you are allowing your mind to think about the organization itself. I suggest you to think about yourself. You will find lot of ways to improve in your work, financials and other aspects.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;Okay, for some of you all the above things are good to hear but difficult to adopt.&amp;nbsp;Isn&#39;t&amp;nbsp;it? I know. Here is a list of items which I would like to bring into your attention.&lt;/div&gt;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Were you not happy the first day you joined your organization. It is only you who agreed to work for this compensation.&amp;nbsp;Isn&#39;t&amp;nbsp;it? But now why worrying?&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Yes I was but I &amp;nbsp;never knew my increments will be less in future :&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Did you bring it to your boss notice that your compensation is less? if&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ol&gt;&lt;ol&gt;&lt;ul&gt;&lt;li&gt;YES – if you think even then they did not consider it after many years, try quitting the job. Do not wait further.&lt;/li&gt;&lt;li&gt;NO - Try discussing it with your boss. It’s your mistake.&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;No. I joined my present organization because of some other commitment and not for a financial reason.&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;ul&gt;&lt;li&gt;Cool. Then, live with it if your commitment is more important than your desire. So that is the answer, but stop thinking negative now! Your present job solved a problem you had which is more important than a financial thing. So, work happily now.&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;li&gt;For me, role and designations are more important than financial things but not getting it&lt;/li&gt;&lt;ul&gt;&lt;li&gt;if you think you can’t grow in your present organization, why are you working there still? Are you capable? If yes then try joining another organization where you think you can fulfill your dreams.&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;Many employees do this. When their friend wants to join the same organization, they say “No, why do you want to join my company. They don’t give you good work; here they won’t pay you well, we are already suffering...”. If your friend is smart, he would say “Why the heck are you working in your present organization then. Go and change your job first. There are too many opportunities to shine in this world”&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, if you have issues other than financial or work related and you have been forced to work in your present company for some inevitable reason; I suggest you to start thinking positive or at least start finding an alternative way to earn. Who knows, you may do good as a business owner.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The final statement.&lt;/b&gt; &amp;nbsp;After reading the post, hopefully you will go back to work with a smile. If you still think you can’t be positive at work tomorrow,&amp;nbsp; and if you think you are not happy with your present work and also if you think there is no way to get rid of your problem in your present organization, &lt;b&gt;just change your job but don’t blame Mr. Bob !&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/3501767155325276253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/3501767155325276253'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2013/03/the-big-post-being-positive-about-your.html' title='The Big Post : Being positive about your work and organization'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-Ctez93Ky5mk/UVXNOTCw1BI/AAAAAAAAANw/Z3RjgSrB1mM/s72-c/positive-attidtue.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-7014183071291011728</id><published>2013-03-21T02:46:00.001-07:00</published><updated>2013-03-21T03:06:26.716-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cross browser"/><category scheme="http://www.blogger.com/atom/ns#" term="Interfaces"/><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Scripting"/><category scheme="http://www.blogger.com/atom/ns#" term="Static Types"/><category scheme="http://www.blogger.com/atom/ns#" term="Typescript"/><category scheme="http://www.blogger.com/atom/ns#" term="Video"/><title type='text'>TypeScript : My Video tutorial on its Need, Usage and benefits with a demo</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-1I6y-ETf8k0/UUrUCAu5G9I/AAAAAAAAANg/BycefK-Cdk4/s1600/logo_small.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;77&quot; src=&quot;http://2.bp.blogspot.com/-1I6y-ETf8k0/UUrUCAu5G9I/AAAAAAAAANg/BycefK-Cdk4/s320/logo_small.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;If you love writing&amp;nbsp;javascript, you may even like to explore a new scripting language which is becoming popular these days known as &quot;TypeScript&quot;. You can write TypeScript just like you write javascript. &amp;nbsp;You can compile TypeScript code to generate output javascript&amp;nbsp;which is clean,&amp;nbsp;maintainable&amp;nbsp;and cross browser compatible.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The best thing about TypeScript is you can get rid of the problems posed by dynamic types of javascript. Adding to it, you get to use the object oriented features like Interfaces, Visibility Modifiers &amp;amp; Classes. Here is a video where in I have explained&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;/div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Why we need TypeScript?&lt;/li&gt;&lt;li&gt;What is TypeScript?&lt;/li&gt;&lt;li&gt;Features of TypeScript&lt;/li&gt;&lt;li&gt;TypeScript Compiler&lt;/li&gt;&lt;li&gt;Keywords &amp;amp; Hierarchy&lt;/li&gt;&lt;li&gt;Tooling Options&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;At the end, you will see a demo of a small hello world application with TypeScript. Enjoy watching this video. Happy Learning !&lt;/div&gt;&lt;br /&gt;&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;360&quot; src=&quot;http://www.youtube.com/embed/t95NMZuWqSc&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt; &lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/7014183071291011728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/7014183071291011728'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2013/03/typescript-my-video-tutorial-on-its.html' title='TypeScript : My Video tutorial on its Need, Usage and benefits with a demo'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-1I6y-ETf8k0/UUrUCAu5G9I/AAAAAAAAANg/BycefK-Cdk4/s72-c/logo_small.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-1292499565028340422</id><published>2013-02-26T06:44:00.000-08:00</published><updated>2013-02-26T06:46:50.690-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="App"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox OS"/><category scheme="http://www.blogger.com/atom/ns#" term="FirefoxOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Application"/><category scheme="http://www.blogger.com/atom/ns#" term="Platform"/><category scheme="http://www.blogger.com/atom/ns#" term="Simulator"/><title type='text'>Creating your first mobile application for Firefox OS, the new Rockstar!</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://firefoxos.info/img/news/02-07-2012.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://firefoxos.info/img/news/02-07-2012.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;If you are new to Firefox OS, the definition says it all. &quot;Firefox OS (project name: Boot to Gecko also known as B2G) is a Linux-based open source operating system for smartphones and tablet computers being developed by Mozilla.&quot;&lt;br /&gt;&lt;br /&gt;Thing is that, there is a new OS coming to market sometime near future. Smartphones will be equipped with a fresh new OS known as Firefox OS. In this post, let us create a first hello world application and see it running inside Firefox OS.&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; No No. You don&#39;t have to learn a new language. It&#39;s a promise. Well, stop guessing now. Firefox OS is designed to allow HTML5  applications to integrate directly with the device&#39;s hardware using  JavaScript. So, you just need to know a bit of html, css and javascript to begin writing awesome apps for Firefox OS.&amp;nbsp; You can access your phone&#39;s contacts, camera, settings, so on and so forth just like you did with your Hybrid Mobile Apps. Firefox OS is not just a framework like Phone Gap. It is an open source operating system written in HTML/CSS/JS/C++.&amp;nbsp; As a developer, you can modify anything and everything. Firefox OS is not a garden with a wall like other Mobile Operating systems. It is open and wall-less !!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://hacks.mozilla.org/wp-content/uploads/2013/01/geeksphone.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://hacks.mozilla.org/wp-content/uploads/2013/01/geeksphone.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This post is not about the history of Firefox OS, the need or its future. Read the below posts if you interested in such stuff. We shall start using it instead !!&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Firefox_OS&quot; target=&quot;_blank&quot;&gt;Wiki Definition&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.mozilla.org/en-US/firefox/partners/#os&quot; target=&quot;_blank&quot;&gt;Documentation from Firefox&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Architecture#DOM_APIs&quot; target=&quot;_blank&quot;&gt;Architecture&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There is also a marketplace now for Firefox OS apps. Here it is &lt;a href=&quot;https://marketplace.firefox.com/&quot;&gt;https://marketplace.firefox.com&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;As a developer, you only need to learn three things.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-8BPl2tjq9oU/USyNlFbjwII/AAAAAAAAANM/67B-97z-4-A/s1600/Capture.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-8BPl2tjq9oU/USyNlFbjwII/AAAAAAAAANM/67B-97z-4-A/s1600/Capture.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Think of a concept, use a responsive frameworks to design it, develop your apps using web technologies and publish it to marketplace. Oh Yes, you can make some money too :)&lt;br /&gt;&lt;br /&gt;Now, the first thing to know, there are only few phones at present with Firefox OS installed. I know its difficult to get one at this point of time. So, it&#39;s obvious. There is a simulator available using which you can install your app, test it and then you can publish it.&lt;br /&gt;&lt;br /&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Firefox OS Simulator&lt;/h3&gt;The Simulator is easy to install and runs on Windows, Linux and  Mac. To install it, use Firefox as your browser and click &lt;a href=&quot;https://addons.mozilla.org/firefox/downloads/file/180652/firefox_os_simulator-1.0-fx-windows.xpi&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. (Simulator is around 60 MB. Do not worry if your browser goes for a task during installation. Just &#39;continue&#39; running it.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once you install it, On the &lt;b&gt;Firefox&lt;/b&gt; menu (Windows) or the &lt;b&gt;Tools&lt;/b&gt; menu (Mac, Linux), go to &lt;b&gt;Web Developer&lt;/b&gt; and click &lt;b&gt;Firefox OS Simulator&lt;/b&gt;. The dashboard appears.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://marketplace.cdn.mozilla.net/media/img/ecosystem/sim-dashboard.jpg?b=691c86b&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;444&quot; src=&quot;https://marketplace.cdn.mozilla.net/media/img/ecosystem/sim-dashboard.jpg?b=691c86b&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Click the &lt;b&gt;Stopped&lt;/b&gt; button. It changes into the &lt;b&gt;Running&lt;/b&gt; button and Firefox OS boots up in its own window. The default size for this window is 320x480.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://marketplace.cdn.mozilla.net/media/img/ecosystem/simulator-screen.jpg?b=691c86b&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://marketplace.cdn.mozilla.net/media/img/ecosystem/simulator-screen.jpg?b=691c86b&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Let us now create an application locally (without a web server) and deploy it inside the simulator.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Follow the steps written below. (Create all the files mentioned below in a single folder)&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;STEP 1: WRITING HTML CODE&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Create a basic index.html in your favorite editor with the below html.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;/div&gt;&lt;pre class=&quot;brush:html&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;Hello World from Firefox OS&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt; &lt;/pre&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;STEP 2- ICONS FOR YOUR APP&lt;/blockquote&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Create a folder by name &quot;img&quot;. Within that, create one more folder by name&quot;icons&quot; and you can add three icons with size 16 X 16 , 48 X 48 , 128 X 128 respectively. This step is just for adding an icon for your app. In my case, I have three icons by names mortar-16.png, mortar-48.png and mortar-128.png. You can have your own icons for your app.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;STEP 3 - CREATE MANIFEST.WEBAPP&lt;/blockquote&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;The Open Web App manifest contains information that a Web browser needs to interact with an app. A manifest is one of the key things that distinguish an Open Web App from a website. It is a JSON file with a name and description for the app, and it can also contain the origin of the app, icons, and the permissions required by the app, among other things.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Using your favorite text editor, create a file by name &lt;b&gt;manifest.webapp&lt;/b&gt;. Copy the below json contents into it. Save the file.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;pre class=&quot;brush:js&quot;&gt;{&lt;br /&gt;  &quot;version&quot;: &quot;0.1&quot;,&lt;br /&gt;  &quot;name&quot;: &quot;MY First App&quot;,&lt;br /&gt;  &quot;description&quot;: &quot;Some Description for my awesome App&quot;,&lt;br /&gt;  &quot;launch_path&quot;: &quot;index.html&quot;,&lt;br /&gt;  &quot;icons&quot;: {&lt;br /&gt;    &quot;16&quot;: &quot;/img/icons/mortar-16.png&quot;,&lt;br /&gt;    &quot;48&quot;: &quot;/img/icons/mortar-48.png&quot;,&lt;br /&gt;    &quot;128&quot;: &quot;/img/icons/mortar-128.png&quot;&lt;br /&gt;  },&lt;br /&gt;  &quot;installs_allowed_from&quot;: [&quot;*&quot;],&lt;br /&gt;  &quot;appcache_path&quot;: &quot;/cache.manifest&quot;,&lt;br /&gt;  &quot;default_locale&quot;: &quot;en&quot;&lt;br /&gt;} &lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;You are almost ready. I have created a video on how to deploy the application you just created. Watch it.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;360&quot; src=&quot;http://www.youtube.com/embed/dTMIQQJ8BCY&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;It is a matter of few minutes to get started with a basic hello world app for Firefox OS. This post only talks about creating and installing a basic app. You can use the device capabilities to access maps, camera, sensors and settings using javascript inside Firefox OS. We shall look into it in coming days.  Happy Coding !    &lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/1292499565028340422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/1292499565028340422'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2013/02/creating-your-first-mobile-application.html' title='Creating your first mobile application for Firefox OS, the new Rockstar!'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-8BPl2tjq9oU/USyNlFbjwII/AAAAAAAAANM/67B-97z-4-A/s72-c/Capture.PNG" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-5180593242487687519</id><published>2012-12-28T12:15:00.001-08:00</published><updated>2012-12-28T12:23:05.518-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Announcements"/><category scheme="http://www.blogger.com/atom/ns#" term="Fresh"/><category scheme="http://www.blogger.com/atom/ns#" term="MSGuy Blog"/><title type='text'>A fresh look for my blog. Layout changed !!</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-eUfkm0EdYCs/UN3_TwF2hUI/AAAAAAAAAF4/wg0ZL0XxzLQ/s1600/fresh_yellow_lemon_3228.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-eUfkm0EdYCs/UN3_TwF2hUI/AAAAAAAAAF4/wg0ZL0XxzLQ/s1600/fresh_yellow_lemon_3228.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The year 2012 was really fun and was a prosperous year in my personal &amp;amp; professional life. Had wrote many articles, created many videos, participated in User Group Meetings, delivered sessions, visited places, met Industry experts and the best of all, me and my wife blessed with a cute little angel baby girl.&lt;br /&gt;&lt;br /&gt;Talking about my views &amp;amp; passion, I always wanted to update the layout of my blog not because it was ugly but it was outdated and heavy. I wanted it to be light, usable and responsive to some extent. It took me around two months to put the things in place. Finally I am done customizing the layout of my blog. I almost had to rewrite the entire page stuff. I hardly wrote something on my blog in the last two months. I felt bad, used to curse myself for not being able to write any thing for so long. However, I am happy now with the new layout and now it feels so fresh &amp;amp; decent and the blog is all set to rock in year 2013. &lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In an attempt to make it better, I had to remove a few ads which were earning some money for me but was really annoying the readers. Also, have modified the color scheme to make the readers feel as though they are reading a newspaper. Well, I was happy with the Discuss commenting system but always felt it heavy &amp;amp; a performance killer. Just replaced it with Facebook commenting system. It should be okay now. Let me see how it goes.&lt;br /&gt;&lt;br /&gt;Menu has been restructured now. Readers can now find the posts based on the category that interests them. Many times I received emails &amp;amp; appreciations from readers saying the quality of the video tutorials on my blog were good. I could not believe it myself as I am really poor in making videos &amp;amp; screencast recordings. The support shown by my friends and readers always motivated me to write something Interesting. The video channel has been added as a widget in the sidebar of blog to make it easily accessible.&lt;br /&gt;&lt;br /&gt;I wish you all a Happy and prosperous New Year ahead. I suggest you guys adding a New Year resolution to Learn &amp;amp; share tech stuff. Wish I could learn more in the year to come. Happy Reading. &lt;br /&gt;Once again, thanks for all your comments, opinions, support, reactions, likes and tweets. Have a fantastic year ahead. Keep an eye on my blog!!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/5180593242487687519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/5180593242487687519'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/12/a-fresh-look-for-my-blog-layout-changed.html' title='A fresh look for my blog. Layout changed !!'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-eUfkm0EdYCs/UN3_TwF2hUI/AAAAAAAAAF4/wg0ZL0XxzLQ/s72-c/fresh_yellow_lemon_3228.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-6341664657945040912</id><published>2012-08-19T02:58:00.000-07:00</published><updated>2012-12-27T00:45:08.762-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bugs"/><category scheme="http://www.blogger.com/atom/ns#" term="developers"/><category scheme="http://www.blogger.com/atom/ns#" term="Downloads"/><category scheme="http://www.blogger.com/atom/ns#" term="ebook"/><category scheme="http://www.blogger.com/atom/ns#" term="free"/><category scheme="http://www.blogger.com/atom/ns#" term="General"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><title type='text'>New ebook : A guide for developers to keep the QA bugs count minimum</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.redstaplerchronicles.com/wp-content/uploads/2010/10/killing%20bugs.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;186&quot; src=&quot;http://www.redstaplerchronicles.com/wp-content/uploads/2010/10/killing%20bugs.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;I always wanted to write an ebook which could help both developers and testers in some way to save their valuable time.&lt;br /&gt;&lt;br /&gt;All software engineering gurus say Unit Testing is important. Yes it really is and please do. However, if you are running short of time to carry out detailed unit tests, here is a guide with a list of items you can verify against the application to make sure that the bugs count on your head goes minimum during QA.&lt;br /&gt;&lt;br /&gt;Testers can use this guide as a checklist for finding common errors and developers can make use of this guide to fix them before testing !&lt;br /&gt;&lt;br /&gt;If you have some more things to add,&amp;nbsp; your comments and suggestions are welcome.&lt;br /&gt;&lt;br /&gt;You can download the eBook &lt;a href=&quot;http://dstats.net/download/http://msanil.com/files/A_guide_for_developers_to_keep_the_QA_bugs_minimum.zip&quot;&gt;here&lt;/a&gt; for free.&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/6341664657945040912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/6341664657945040912'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/08/new-ebook-guide-for-developers-to-keep.html' title='New ebook : A guide for developers to keep the QA bugs count minimum'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-6302724397060009426</id><published>2012-08-04T08:27:00.003-07:00</published><updated>2012-12-27T00:26:48.822-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="clientside"/><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="Fonts"/><category scheme="http://www.blogger.com/atom/ns#" term="General"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="Style"/><category scheme="http://www.blogger.com/atom/ns#" term="UI"/><category scheme="http://www.blogger.com/atom/ns#" term="Ux"/><category scheme="http://www.blogger.com/atom/ns#" term="web-fonts"/><title type='text'>Introduction to Webfonts for HTML &amp; CSS developers</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cdncms.fonts.net/images/701e2cd1fe01293d/web_fonts.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://cdncms.fonts.net/images/701e2cd1fe01293d/web_fonts.gif&quot; width=&quot;165&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I am writing this post as an answer to a question I received in email. A developer wanted to know about Webfonts and using them. If you are a Web-font expert or you have used them , you can hit the X button right on your browser tab.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;However, read further if you want to learn about it.&lt;br /&gt;&lt;br /&gt;In the modern web era, fonts play a major role in web design, usability and typography. Webfont is the solution to a big problem which all web designers and developers were facing. Now, lets dive into the problem statement.&lt;br /&gt;&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;In simple words, until recently, most websites could only display text using a small selection of fonts which are already installed on user&#39;s computer. Simply, the font names/types you use in your HTML/CSS should be available on user&#39;s machine and only then users could see the text with that font and not otherwise.&lt;/blockquote&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As a designer, if you wanted to use some fonts which are catchy, flair or with a different appeal, it was not possible as you could not expect your users to install the fonts which you like as a developer. Just imagine, how many times we used images instead of text to show a attractive text or a small section header?&lt;br /&gt;&lt;br /&gt;The biggest problem with images is that ; Search engines cannot understand the text on your images so could not index your pages very well. And suppose, if you wanted to change the font size in your heading, you had to recreate an image!&lt;br /&gt;&lt;br /&gt;And with the Introduction to Web-fonts, the problem is solved!.&lt;/div&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;Webfonts are a font format with a specific license that permits web designers and developers to use real typography online without losing the advantages of live text — dynamic, searchable, accessible content.&lt;/blockquote&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Today, there are many providers offering web-fonts as a service. Few services are for free and few of them comes for a cost! Using a web-font is fairly simple. The service provider gives a Javascript reference URL and a font name. Just reference that URL on your web page and start using the font in your CSS. And these fonts are available to your users without having them to manually install it!!&lt;br /&gt;&lt;br /&gt;Almost every one likes &quot;Free&quot; just like me. So, lets look into a Free Web-font Service.&lt;br /&gt;&lt;br /&gt;Google !!&lt;br /&gt;Google Web Fonts makes it quick and easy for everyone to use web fonts, including professional designers and developers. There are many fonts available on the Google directory for free use. Also, you can submit your own font. Find more details here &lt;b&gt;&lt;a href=&quot;http://www.google.com/webfonts/#&quot; target=&quot;_blank&quot;&gt;http://www.google.com/webfonts/#&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-xBz0erODkCA/UB03J1UsvSI/AAAAAAAAAEc/uClCH8fnwgk/s1600/GoogleFonts.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-xBz0erODkCA/UB03J1UsvSI/AAAAAAAAAEc/uClCH8fnwgk/s1600/GoogleFonts.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Here is an example on using a free Web-font called &quot;Merienda One&quot; available on Google.&lt;br /&gt;&lt;br /&gt;Add the below code in the Head Section of your HTML&lt;br /&gt;&lt;pre class=&quot;brush:css&quot;&gt;&amp;lt;link href=&#39;http://fonts.googleapis.com/css?family=Merienda+One&#39; rel=&#39;stylesheet&#39; type=&#39;text/css&#39;&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can obtain the URL ref like above for every font available on Google web-fonts. Just browse the &lt;a href=&quot;http://www.blogger.com/%20http://www.google.com/webfonts/#&quot; target=&quot;_blank&quot;&gt;web-font&lt;/a&gt; directory and for the desired font, click on &quot;Quick -Use&quot; for that particular font. You will get the javascript ref link code to use it.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-nvlQjuV2zIQ/UB0-NOapB4I/AAAAAAAAAE8/S7tqdLBlQ9w/s1600/QuickUse.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-nvlQjuV2zIQ/UB0-NOapB4I/AAAAAAAAAE8/S7tqdLBlQ9w/s1600/QuickUse.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And that&#39;s all you have to do. You can Just use the font name wherever required in your HTML document. Here is the complete listing. &lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;brush:css&quot;&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;link href=&#39;http://fonts.googleapis.com/css?family=Merienda+One&#39; rel=&#39;stylesheet&#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type=&#39;text/css&#39;&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form id=&quot;form1&quot; runat=&quot;server&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div style=&quot;font-family: &#39;Merienda One&#39;&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This text is looking cool. Thanks to the font Meerienda One!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;and for every user and every browser, the output will be&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-l5LPAcqP6bE/UB05h_f7pXI/AAAAAAAAAEs/UVkfZea1L2s/s1600/Text.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-l5LPAcqP6bE/UB05h_f7pXI/AAAAAAAAAEs/UVkfZea1L2s/s1600/Text.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Interesting? Here are some more web-font services&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://typekit.com/&quot; target=&quot;_blank&quot;&gt;Typekit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.webtype.com/&quot; target=&quot;_blank&quot;&gt;Webtype&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://fontdeck.com/&quot; target=&quot;_blank&quot;&gt;FontDeck&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.fontslive.com/&quot; target=&quot;_blank&quot;&gt;FontsLive&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://typefront.com/&quot; target=&quot;_blank&quot;&gt;TypeFront&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;If you are looking for free webfonts, just Google for &quot;&lt;a href=&quot;https://www.google.co.in/search?q=free+Web-fonts&quot; target=&quot;_blank&quot;&gt;Free Web-fonts&lt;/a&gt;&quot; and you will find couple of them.&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/6302724397060009426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/6302724397060009426'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/08/an-intro-to-webfonts-services-for-html.html' title='Introduction to Webfonts for HTML &amp; CSS developers'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-xBz0erODkCA/UB03J1UsvSI/AAAAAAAAAEc/uClCH8fnwgk/s72-c/GoogleFonts.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-8891256090232815827</id><published>2012-07-21T02:37:00.003-07:00</published><updated>2012-12-27T00:11:24.911-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="csharp"/><category scheme="http://www.blogger.com/atom/ns#" term="Iterating"/><category scheme="http://www.blogger.com/atom/ns#" term="keyword"/><category scheme="http://www.blogger.com/atom/ns#" term="language features"/><category scheme="http://www.blogger.com/atom/ns#" term="loop"/><category scheme="http://www.blogger.com/atom/ns#" term="yield"/><title type='text'>Back to C# School:  Basics of Yield keyword</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.wecantpaythattab.org/wp-content/uploads/2011/05/basic-blocks.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;177&quot; src=&quot;http://www.wecantpaythattab.org/wp-content/uploads/2011/05/basic-blocks.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It is a common thing that, as and when we progress to use advanced language features and get some experience on few types, we almost tend to forget using the basics.&lt;br /&gt;&lt;br /&gt;This post is all about an interesting C# stuff that exists right from C# 2.0!! Which you should be aware when writing code. Yes. If&amp;nbsp; you are an expert or if you already know the use of Yield keyword, stop reading right here.&lt;br /&gt;&lt;br /&gt;Carry on if you dont mind reading it !&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;/h2&gt;&lt;h2 style=&quot;color: purple; text-align: left;&quot;&gt;Yield (A C# language feature)&lt;/h2&gt;It is an iterator block to provide some value to the enumerator object or to signal the end of iteration.&lt;br /&gt;According to Microsoft definition, the yield statement can only appear inside an iterator block, which might be used as a body of a method, operator, or accessor. The body of such methods, operators, or accessors is controlled by the following restrictions:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Unsafe blocks are not allowed.&lt;/li&gt;&lt;li&gt;Parameters to the method, operator, or accessor cannot be ref or out.&lt;/li&gt;&lt;/ol&gt;Let us see an example. Create a Console application and add this function below inside the class.&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static IEnumerable&amp;lt;int&amp;gt; GetNumbers()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield return 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield return 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield return 3;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield return 4;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;Now, from your main, you can call it like this&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;IEnumerable x = GetNumbers();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and now, to print the values from x, just use a loop and just add a break-point to above function and the below foreach loop to see how it works at debug time. &lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (int i in x)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write(&quot;{0} &quot;, i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;During debugging, the first thing you need to note is every single call maintains the state!! So only yield statement is executed at a time. &lt;b&gt;That means, the call is made when required!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;That’s pretty basic. Being said, If you want your function to return multiple values, you can use yield and finally at the caller end, you can iterate through the results. That’s fine. At first, Looks similar to a collection. Not a big deal.&amp;nbsp; Let us see one more example now to see the usefulness of yield.&lt;br /&gt;&lt;br /&gt;Let us first write two extensions to int. The &lt;b&gt;To &lt;/b&gt;extension prints a number serially.&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static IEnumerable&amp;lt;int&amp;gt; To(this int value, int inclusiveMax)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = value; i &amp;lt;= inclusiveMax; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield return i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And the Multiply Extension just multiplies a value with the multiplier. &lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static IEnumerable&amp;lt;int&amp;gt; Multiply(this IEnumerable&amp;lt;int&amp;gt; val, int multiplierval)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (int v in val)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield return v * multiplierval;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now, you will see the &lt;b&gt;.To&lt;/b&gt; extension for integers. So you can use something like&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var numbers = 1.To(10);&lt;br /&gt;&lt;/pre&gt;and doing a&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (var i in numbers)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Will print the values from 1 to 10.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-w1gx44vzZxU/UApydxLny2I/AAAAAAAAADo/-FcBRjU2Vv0/s1600/ip.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-w1gx44vzZxU/UApydxLny2I/AAAAAAAAADo/-FcBRjU2Vv0/s1600/ip.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now, how about multiplying each of the above output value by 5?&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var op = 1.To(10).Multiply(5);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (var i in op)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(i);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And you should see&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-EPZ3pBzSkOI/UApyzB-o2bI/AAAAAAAAADw/oEMTlqjD01E/s1600/OP.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-EPZ3pBzSkOI/UApyzB-o2bI/AAAAAAAAADw/oEMTlqjD01E/s1600/OP.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This proves yield is useful. Isnt it? Here are few more things about Yield&lt;br /&gt;&lt;br /&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Interacts with the foreach-loop. It is a contextual keyword: yield is a keyword only in certain statements. It allows each iteration in a foreach-loop be generated only when needed. In this way it can improve performance.&lt;/li&gt;&lt;li&gt;Yield is not a behavior of CLR but a C# language feature. &lt;/li&gt;&lt;li&gt;This keyword is used to return items from a loop within a method and retain the state of the method through multiple calls. The call maintains the state and you don’t have to worry about doing it yourself!&lt;/li&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Try it once!&lt;br /&gt;&lt;br /&gt;To reach me, You can follow me on twitter &lt;a href=&quot;http://www.twitter.com/MSGuytweets&quot; target=&quot;_blank&quot;&gt;@MSGuyTweets&lt;/a&gt; or find me on Facebook at &lt;i&gt;&lt;a href=&quot;http://facebook.com/MysoreGuy&quot;&gt;Facebook.com/MysoreGuy&lt;/a&gt;&lt;/i&gt; &lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/8891256090232815827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/8891256090232815827'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/07/back-to-c-school-basics-of-yield-keyword.html' title='Back to C# School:  Basics of Yield keyword'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-w1gx44vzZxU/UApydxLny2I/AAAAAAAAADo/-FcBRjU2Vv0/s72-c/ip.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-1452190560914773606</id><published>2012-07-03T01:33:00.001-07:00</published><updated>2012-12-27T00:26:48.800-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="clientside"/><category scheme="http://www.blogger.com/atom/ns#" term="Cross browser"/><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="rotation filters"/><category scheme="http://www.blogger.com/atom/ns#" term="text rotation with CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="Transform"/><title type='text'>Cross Browser Text Rotation just with CSS Transforms &amp; HTML</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.w3.org/TR/css3-transforms/compound_transform.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://www.w3.org/TR/css3-transforms/compound_transform.png&quot; width=&quot;198&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I keep getting frequent emails and questions regarding CSS and JavaScript hacks. This time, one of the developer wanted to know how to rotate text in CSS. So, this post is all about rotating text with CSS &amp;amp; HTML. I have not used JavaScript for doing it and it is not necessary too.&lt;br /&gt;&lt;br /&gt;&lt;b style=&quot;color: red;&quot;&gt;The first rule to know!&amp;nbsp; :&lt;/b&gt;&lt;br /&gt;There is no single universal property in CSS to rotate text which works on all the versions of all the browsers. &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, it is obvious that we need to write CSS for all the browsers. Now, assuming that the output we are expecting is something like below,&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-NkudDPHl7Io/T_KmXVTazYI/AAAAAAAAADc/ETtCmf-00B4/s1600/Rotate_Output.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-NkudDPHl7Io/T_KmXVTazYI/AAAAAAAAADc/ETtCmf-00B4/s1600/Rotate_Output.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;the very first thing we need to know is the angle at which we need to rotate the text. It is very easy if you know basic math. For example, The above text is rotated to 300 Degrees. Let us first write some code to see how we can rotate text.&lt;br /&gt;&lt;br /&gt;Now, the CSS Class for rotation would be&lt;br /&gt;&lt;pre class=&quot;brush:css&quot;&gt;.box_rotate&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; filter: progid:DXImageTransform.Microsoft.Matrix(/* IE6–IE8 */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; M11=0.50000000, M12=0.86602540, M21=-0.86602540, M22=0.50000000, sizingMethod=&#39;auto expand&#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;Not simple?&lt;br /&gt;&lt;br /&gt;OK. Let me make it clear. There are 4 parameters in above code. M11, M12, M21 &amp;amp; M22. They mean nothing but the angle of rotation.&lt;br /&gt;&lt;br /&gt;Assuming THETA is the angle of Rotation,&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;b&gt;M11 = COS THETA,&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;b&gt;M12 = -SIN THETA,&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;b&gt;M21 = SIN THETA,&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;b&gt;M22 = COS THETA&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;So, if you want to rotate text to 300 degrees,&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;b&gt;M11 = COS 300,&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;b&gt;M12 = -SIN 300,&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;b&gt;M21 = SIN 300,&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #38761d;&quot;&gt;&lt;b&gt;M22 = COS 300,&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;So, use a &lt;a href=&quot;http://web2.0calc.com/&quot; target=&quot;_blank&quot;&gt;Scientific Calculator&lt;/a&gt; to calculate the above and the output will be &lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;color: #0b5394;&quot;&gt;&lt;b&gt;M11=0.50000000&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #0b5394;&quot;&gt;&lt;b&gt;M12=0.86602540&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #0b5394;&quot;&gt;&lt;b&gt;M21=-0.86602540&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;color: #0b5394;&quot;&gt;&lt;b&gt;M22=0.50000000&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;And exactly, this is what i have specified in the above CSS class!&lt;br /&gt;Now simple? Yes it is.&lt;br /&gt;&lt;br /&gt;Hold on. You see a weird comment which says /* IE6–IE8 */ in the above code. It exactly means what it says. It is for Older IE browsers. Let us go a step further to make it compliant with modern browsers. So, the modified CSS becomes&lt;br /&gt;&lt;pre class=&quot;brush:css&quot;&gt;.box_rotate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -moz-transform: rotate(300deg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-transform: rotate(300deg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -o-transform: rotate(300deg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -ms-transform: rotate(300deg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filter: progid:DXImageTransform.Microsoft.Matrix(/* IE6–IE8 */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; M11=0.50000000, M12=0.86602540, M21=-0.86602540, M22=0.50000000, sizingMethod=&#39;auto expand&#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The good thing is that, Mozilla and Webkit based browsers already have support and you can specify the rotation angle as a parameter directly. However, even older IE browsers has some support but you need to mention something like 1,2,3,4 to rotate and you cannot provide rotation angle of your choice like 110, 221 etc. So, the above code is good enuf and rotation works best with Matrix values even for older IE browsers.&lt;br /&gt;&lt;br /&gt;Well, I did not try this with IE10 yet but hope it works as I have provided the -ms-transform for IE 9 +. And if you don&#39;t want to do COS SIN Bla bla bla then here is a link which can give you the calculations if you just enter the rotation angle in degrees.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.boogdesign.com/examples/transforms/matrix-calculator.html&quot; target=&quot;_blank&quot;&gt;http://www.boogdesign.com/examples/transforms/matrix-calculator.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can also specify an optional &lt;i&gt;writing mode&lt;/i&gt; as a css property to indicate how text is written, for example&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:css&quot;&gt;.box_rotate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -moz-transform: rotate(300deg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-transform: rotate(300deg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -o-transform: rotate(300deg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -ms-transform: rotate(300deg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filter: progid:DXImageTransform.Microsoft.Matrix(/* IE6–IE8 */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; M11=0.50000000, M12=0.86602540, M21=-0.86602540, M22=0.50000000, sizingMethod=&#39;auto expand&#39;);&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: magenta;&quot;&gt;writing-mode: tb-rl; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The below list can make you to understand the writing mode and flow.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lr-tb – This is the default value, left to right, top to bottom&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rl-tb – This flows the text from right to left, top to bottom&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tb-rl – Flows the text vertically from top to bottom, right to left&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bt-rl – bottom to top, right to left&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tb-lr – This and the followings value are only available in IE8+ using -ms-writing-mode. Text flows top to bottom, left to right&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bt-lr – Bottom to top, left to right&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lr-bt – Left to right, bottom to top&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rl-bt – Right to left, bottom to top&lt;br /&gt;&lt;br /&gt;Try out the above writing modes and Have fun. And Here is the complete listing&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:html&quot;&gt;&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style type=&quot;text/css&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .box_rotate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -moz-transform: rotate(300deg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-transform: rotate(300deg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -o-transform: rotate(300deg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -ms-transform: rotate(300deg); /*Internet Explorer 9 + */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filter: progid:DXImageTransform.Microsoft.Matrix(/* IE6–IE8 */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; M11=0.50000000, M12=0.86602540, M21=-0.86602540, M22=0.50000000, sizingMethod=&#39;auto expand&#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&quot;box_rotate&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rotated 1&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&quot;box_rotate&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rotated 2&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&quot;box_rotate&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rotated 3&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;More details can be found at &lt;a href=&quot;http://www.css3files.com/transform/&quot; target=&quot;_blank&quot;&gt;http://www.css3files.com/transform/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Details related to Browser support for CSS Transforms: &lt;a href=&quot;http://caniuse.com/transforms2d&quot; target=&quot;_blank&quot;&gt;http://caniuse.com/transforms2d&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Remember, CSS Transforms are not just meant for rotating the text. They can do a lot more like 2D and 3D !&lt;br /&gt;The above code can be used even for images!&lt;br /&gt;&lt;br /&gt;Lets do programming together. You can follow me on twitter &lt;a href=&quot;http://www.twitter.com/MSGuytweets&quot; target=&quot;_blank&quot;&gt;@MSGuyTweets&lt;/a&gt; or find me on Facebook at &lt;i&gt;&lt;a href=&quot;http://facebook.com/MysoreGuy&quot;&gt;Facebook.com/MysoreGuy&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/1452190560914773606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/1452190560914773606'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/07/cross-browser-text-rotation-just-with.html' title='Cross Browser Text Rotation just with CSS Transforms &amp; HTML'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-NkudDPHl7Io/T_KmXVTazYI/AAAAAAAAADc/ETtCmf-00B4/s72-c/Rotate_Output.PNG" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-4135034257520172979</id><published>2012-06-21T01:37:00.000-07:00</published><updated>2012-12-27T00:11:24.906-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Active Directory"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="csharp"/><category scheme="http://www.blogger.com/atom/ns#" term="Directory Services"/><category scheme="http://www.blogger.com/atom/ns#" term="server load"/><category scheme="http://www.blogger.com/atom/ns#" term="Sun One"/><title type='text'>C# and Sun One Directory Server : Retrieve Domain Group Members</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.contrib.andrew.cmu.edu/%7Eapae/groupmember.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;http://www.contrib.andrew.cmu.edu/%7Eapae/groupmember.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;If you have already worked on the Sun One Directory Server product, you might already know that SunONE Directory Server is a robust, scalable server designed to manage an enterprise-wide directory of users and resources. This is something like the Active Directory Microsoft has built for windows. &lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://i.technet.microsoft.com/dynimg/IC180356.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;452&quot; src=&quot;http://i.technet.microsoft.com/dynimg/IC180356.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;When working with the Sun One directory using C# &amp;amp; the .Net 2.0/Above, most of the developers find it difficult to get the Members of a group within a domain programmatically. This post should help few of those developers to resolve the problem. You can easily query the directory to get all the members of a group using c#.&lt;br /&gt;&lt;br /&gt;Now, how do we get the members?&lt;br /&gt;No more hitting the bush. Lets write code. Create a console/web/windows application using Visual Studio. In my case,&amp;nbsp; have used a console application for making the things quick. &lt;br /&gt;&lt;br /&gt;First, create a entity which can hold the details of a group user like Id, Full Name of the user, email id of user, path where he resides. Create a class CLDAPUser with the below code.&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;class CLDAPUser&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string m_sUId = string.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string m_sFullName = string.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string m_sEmailId = string.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string m_sPath = string.Empty;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Uid&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { return m_sUId; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { m_sUId = value;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string FullName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {return m_sFullName;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {m_sFullName = value;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string EmailId&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {return m_sEmailId;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {m_sEmailId = value;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Path&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {return m_sPath;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {m_sPath = value;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now, let us write the function to retrieve the Sun One Users of a Group. I have added comments inside which gives the explanation&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;//Include the below namespaces.&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.DirectoryServices;&lt;br /&gt;&lt;br /&gt;private static List&amp;lt;CLDAPUser&amp;gt; SunOne_GetGroupMembers(string i_sGroup, string i_sADsPath,&amp;nbsp; string i_sDomainName, string i_sPath)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sFName = string.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sLName = string.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sFullName = string.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sMail = string.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sADsPath = string.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sPath = string.Empty;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;CLDAPUser&amp;gt; objLdapUserList = new List&amp;lt;CLDAPUser&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DirectoryEntry oRoot = new DirectoryEntry();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oRoot.Path = i_sADsPath;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oRoot.AuthenticationType = AuthenticationTypes.ServerBind;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oRoot.Username = m_sUserName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oRoot.Password = m_sPassword;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sADsPath = i_sADsPath.Substring(0, i_sADsPath.LastIndexOfAny(&quot;/&quot;.ToCharArray()));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DirectorySearcher oDSSearcher = new DirectorySearcher(oRoot);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //The very important step. CN = Group Name &amp;amp; uniqueMember=* is a filter which returns all members from Sun One&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oDSSearcher.Filter = &quot;(&amp;amp;(CN=&quot; + i_sGroup + &quot;)(uniqueMember=*))&quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SearchResultCollection oSRC = oDSSearcher.FindAll();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (SearchResult oSResult in oSRC)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResultPropertyCollection resultPropColl = oSResult.Properties;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Loop to iterate for each sun one user of the group and get the details further&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (object oMemberColl in resultPropColl[&quot;uniqueMember&quot;])&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DirectoryEntry ogpMemberEntry = new DirectoryEntry(sADsPath + &quot;/&quot; + oMemberColl.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ogpMemberEntry.AuthenticationType = AuthenticationTypes.ServerBind;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ogpMemberEntry.Username = m_sUserName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ogpMemberEntry.Password = m_sPassword;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.DirectoryServices.PropertyCollection oUserProps = ogpMemberEntry.Properties;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sID = oUserProps[&quot;uid&quot;].Value.ToString();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sID != &quot;&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //givenname is the property name to get the First Name of Sun One User&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sFName = oUserProps[&quot;givenname&quot;].Value.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex) { /*Do Some Error Logging*/ sFName = &quot;N/A&quot;; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //sn is the property name to get the Last Name of Sun One User&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sLName = oUserProps[&quot;sn&quot;].Value.ToString();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex) { /*Do Some Error Logging*/ sLName = &quot;N/A&quot;; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sFullName = sFName + &quot; &quot; + sLName;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //mail is the property name to get the email address of Sun One User&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sMail = oUserProps[&quot;mail&quot;].Value.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex) { /*Do Some Error Logging*/ sMail = &quot;N/A&quot;; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sPath = oMemberColl.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex) { /*Do Some Error Logging*/ sPath = &quot;N/A&quot;; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Store the details&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLDAPUser objLdapUser = new CLDAPUser();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objLdapUser.Uid = sID;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objLdapUser.FullName = sFullName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objLdapUser.EmailId = sMail;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objLdapUser.Path = sPath;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Add this user detail to the list&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objLdapUserList.Add(objLdapUser);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex) { /*Do Some Error Logging*/}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //The List contains all the users/members of the group!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return objLdapUserList;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now, we need to call the above function with required parameters. Here we go. Write it in Main() of your console application&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is the Group for which we need to Retrieve the Users from Sun One&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sGroup = &quot;Accounting Managers&quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; //Port the Sun One Server is Listening at&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int iPort = 30291;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Server &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sServername = &quot;192.168.37.202&quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Domain String &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sDomainstr = &quot;dc=yoursun1,dc=local&quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Create LDAP Path based on above credentials&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sAdsPath = &quot;LDAP://&quot; + sServername + &quot;:&quot; + iPort + &quot;/&quot; + sDomainstr;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //I dont have a user name password required to connect to Sun One so let me make it null.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_sUserName = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_sPassword = null;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Create a list to Hold Sun One Users&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;CLDAPUser&amp;gt; objLdapUserList = new List&amp;lt;CLDAPUser&amp;gt;();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; //Finally, Get the Sun One users for the Group by calling the function&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objLdapUserList = SunOne_GetGroupMembers(sGroup, sAdsPath,&amp;nbsp; sDomainstr, sDomainstr);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;And thats it!!, pass any Group name and you get the users within it. Easy. Isnt it?&lt;br /&gt;&lt;br /&gt;Lets do programming together. You can follow me on twitter &lt;a href=&quot;http://www.twitter.com/MSGuytweets&quot; target=&quot;_blank&quot;&gt;@MSGuyTweets&lt;/a&gt; or find me on Facebook at &lt;i&gt;&lt;a href=&quot;http://facebook.com/MysoreGuy&quot;&gt;Facebook.com/MysoreGuy&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/4135034257520172979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/4135034257520172979'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/06/c-and-sun-one-directory-server-retrieve.html' title='C# and Sun One Directory Server : Retrieve Domain Group Members'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-17238715098556925</id><published>2012-05-31T04:50:00.002-07:00</published><updated>2012-12-27T00:11:24.895-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Alias"/><category scheme="http://www.blogger.com/atom/ns#" term="asp"/><category scheme="http://www.blogger.com/atom/ns#" term="asp.net"/><category scheme="http://www.blogger.com/atom/ns#" term="csharp"/><category scheme="http://www.blogger.com/atom/ns#" term="General"/><category scheme="http://www.blogger.com/atom/ns#" term="Overloading"/><category scheme="http://www.blogger.com/atom/ns#" term="WCF"/><title type='text'>WCF: Operation Overloading inside Service Contracts using C#</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://koolcomputer.com/wp-content/uploads/2012/02/overloading2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;214&quot; src=&quot;http://koolcomputer.com/wp-content/uploads/2012/02/overloading2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In this post, I will explain a simple way to do operation overloading for Service Contracts in a WCF Service.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;If you create WCF Services, you might already know about &lt;b&gt;ServiceContract &lt;/b&gt;attribute. It just describes the operations that a client can perform over a service and if you are from Object oriented programming background, you know that programming languages support &lt;b&gt;&lt;i&gt;Method Overloading&lt;/i&gt;&lt;/b&gt;. It is as simple as having two or more methods with the same name but with different parameters in same scope. The advantage is &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;that we can perform same operations on different datatypes without having the need to use separate names for each version.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;public Interface ICalc&lt;br /&gt;    {&lt;br /&gt;      Int Subtract (int a, int b);&lt;br /&gt;      double Subtract (double a, double b);&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Well the above code is fine with C++ for overloading. if you try to do the same thing with WCF like below,&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;[ServiceContract]&lt;br /&gt;    public interface ICalc&lt;br /&gt;    {&lt;br /&gt;        [OperationContract]&lt;br /&gt;        int Subtract(int x, int y);&lt;br /&gt;&lt;br /&gt;        [OperationContract]&lt;br /&gt;        double Subtract(double x, double y);&lt;br /&gt;      &lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;public class Service1 : ICalc&lt;br /&gt;    {&lt;br /&gt;        public int Subtract(int x, int y)&lt;br /&gt;        {&lt;br /&gt;            return x - y;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public double Subtract(double x, double y)&lt;br /&gt;        {&lt;br /&gt;            return x - y;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;it compiles but you would end up seeing a &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;InvalidOperationException &lt;/span&gt;&lt;/b&gt;at the service host load time! &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-c5VY_oYzxgg/T8dTCflH4QI/AAAAAAAAADI/juDsCk2FjuA/s1600/two.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;51&quot; src=&quot;http://1.bp.blogspot.com/-c5VY_oYzxgg/T8dTCflH4QI/AAAAAAAAADI/juDsCk2FjuA/s640/two.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;color: purple; text-align: justify;&quot;&gt;&lt;i&gt;“Cannot have two operations in the same contract with the same name, methods Subtract and Subtract in type xyz violate this rule. You can change the name of one of the operations by changing the method name or by using the Name property of OperationContractAttribute.”&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;color: #274e13; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;The reason is simple; Operations are only identified by names and messages in this particular world.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Now, to get rid of this problem, just manually enable the operation overloading. Simple. Use the &lt;b&gt;Name&lt;/b&gt; property of the OperationContract Attribute to alias the operation.&lt;/div&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;[AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;    Public sealed class OperationContractAttribute : Attribute&lt;br /&gt;    {&lt;br /&gt;      Public string Name&lt;br /&gt;        {get;set;}&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;However, you need to alias both at Server and the Client Side. Here is how you give a unique name at server side&lt;/div&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;[ServiceContract]&lt;br /&gt;    public interface ICalc&lt;br /&gt;    {&lt;br /&gt;        [OperationContract(Name = &quot;SubInt&quot;)]&lt;br /&gt;        int Subtract(int x, int y);&lt;br /&gt;&lt;br /&gt;        [OperationContract(Name=&quot;SubDouble&quot;)]&lt;br /&gt;        double Subtract(double x, double y);&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now, When the client generates the proxy the operations will have the alias names&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;[ServiceContract]&lt;br /&gt;    public interface ICalc&lt;br /&gt;    {&lt;br /&gt;        [OperationContract]&lt;br /&gt;        int SubInt(int x, int y);&lt;br /&gt;&lt;br /&gt;        [OperationContract]&lt;br /&gt;        double SubDouble(double x, double y);&lt;br /&gt;       &lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Now, the client can use the generated proxy as above. But this is not so cool! The overloading has not been done to use with two different name by the client.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-DAye7Nyw5wY/T8dTjP5y0xI/AAAAAAAAADQ/V6nH0iNk8VM/s1600/One.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;204&quot; src=&quot;http://1.bp.blogspot.com/-DAye7Nyw5wY/T8dTjP5y0xI/AAAAAAAAADQ/V6nH0iNk8VM/s640/One.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;To make it even better, rename the methods on the imported contract and the proxy to overloaded names. The proxy class should call on the internal proxy using overloaded methods and use the Name property and imported contract on client side to complete it. Now we have overloading at client side.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;[ServiceContract]&lt;br /&gt;     public Interface ICalc&lt;br /&gt;     {&lt;br /&gt;        [OperationContract(Name = &quot;SubInt&quot;)]&lt;br /&gt;        int Subtract(int x, int y);&lt;br /&gt;&lt;br /&gt;        [OperationContract(Name=&quot;SubDouble&quot;)]&lt;br /&gt;        double Subtract(double x, double y);&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     class CalcClient: Servicereferce1.CalcClient&lt;br /&gt;     {&lt;br /&gt;        public int Subtract (int a, int b)&lt;br /&gt;        {&lt;br /&gt;          return Channel.SubInt(a,b);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public double Subtract (double a, double b)&lt;br /&gt;        {&lt;br /&gt;          return Channel.SubDouble(a,b);&lt;br /&gt;        }&lt;br /&gt;     }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now it is easy to use the overloaded operations without any confusions!&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:csharp&quot;&gt;CalcClient pxy = new CalcClient();&lt;br /&gt;    int output1=pxy.Subtract(3,2);&lt;br /&gt;    double output2= pxy.Subtract(3.0, 2.0);&lt;br /&gt;    pxy.Close(); &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Thats it.Very simple and straight. Happy coding :)&lt;br /&gt;&lt;br /&gt;Lets do programming together. You can follow me on twitter &lt;a href=&quot;http://www.twitter.com/MSGuytweets&quot; target=&quot;_blank&quot;&gt;@MSGuyTweets&lt;/a&gt; or find me on Facebook at &lt;i&gt;&lt;a href=&quot;http://facebook.com/MysoreGuy&quot;&gt;Facebook.com/MysoreGuy&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/17238715098556925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/17238715098556925'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/05/wcf-operation-overloading-inside.html' title='WCF: Operation Overloading inside Service Contracts using C#'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-c5VY_oYzxgg/T8dTCflH4QI/AAAAAAAAADI/juDsCk2FjuA/s72-c/two.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-7218206834534302592</id><published>2012-05-14T03:11:00.001-07:00</published><updated>2012-05-14T03:15:09.563-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="happening technologies"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft technologies"/><category scheme="http://www.blogger.com/atom/ns#" term="tech blogs"/><category scheme="http://www.blogger.com/atom/ns#" term="tech news"/><title type='text'>A cool list of Tech News Websites and the Blogs I follow</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_wXG-O0Gal_o/SW5CYx-ClpI/AAAAAAAACsk/BOlnS0a2DoA/s400/paint-chip-bookmarks.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;http://2.bp.blogspot.com/_wXG-O0Gal_o/SW5CYx-ClpI/AAAAAAAACsk/BOlnS0a2DoA/s200/paint-chip-bookmarks.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;For many techies who asked me where to get good tech news everyday, here is my answer. &quot;This article is all about the list of websites and blogs you must follow to keep yourself updated on the latest happenings in technology&quot;.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Usually, the websites provide the latest happenings in the form of news content and the blogs help you to learn/understand a specific technology or a topic. &lt;/span&gt;&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Below is a list of around 20 good websites I visit for technology news. (Covers news on Social Media, Inventions, Happenings, Announcements, Hacks and General). Make a habit of opening few of them at least once a day and read the headlines at least. I have not categorized as mostly all are worth reading and mostly talk everything in common.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;/div&gt;&lt;ol style=&quot;font-family: inherit; text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.cnet.com/&quot; target=&quot;_blank&quot;&gt;http://www.cnet.com/&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://mashable.com/%20&quot; target=&quot;_blank&quot;&gt;http://mashable.com/ &lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.techcrunch.com/&quot; target=&quot;_blank&quot;&gt;http://www.techcrunch.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.redmondpie.com/&quot; target=&quot;_blank&quot;&gt;http://www.redmondpie.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.theregister.co.uk/&quot; target=&quot;_blank&quot;&gt;http://www.theregister.co.uk/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.wired.com/&quot; target=&quot;_blank&quot;&gt;http://www.wired.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.techrepublic.com/&quot; target=&quot;_blank&quot;&gt;http://www.techrepublic.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.huffingtonpost.com/&quot; target=&quot;_blank&quot;&gt;http://www.huffingtonpost.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.smashingmagazine.com/&quot; target=&quot;_blank&quot;&gt;http://www.smashingmagazine.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.boingboing.net/&quot; target=&quot;_blank&quot;&gt;http://www.boingboing.net/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.lifehacker.com/&quot; target=&quot;_blank&quot;&gt;http://www.lifehacker.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://pcworld.com/&quot; target=&quot;_blank&quot;&gt;http://pcworld.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.arstechnica.com/&quot; target=&quot;_blank&quot;&gt;http://www.arstechnica.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.engadget.com/&quot; target=&quot;_blank&quot;&gt;http://www.engadget.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.gizmodo.com/&quot; target=&quot;_blank&quot;&gt;http://www.gizmodo.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.bgr.com/&quot; target=&quot;_blank&quot;&gt;http://www.bgr.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.informationweek.com/&quot; target=&quot;_blank&quot;&gt;http://www.informationweek.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://gigaom.com/&quot; target=&quot;_blank&quot;&gt;http://gigaom.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.geek.com/&quot; target=&quot;_blank&quot;&gt;http://www.geek.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.webpronews.com/&quot; target=&quot;_blank&quot;&gt;http://www.webpronews.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.readwriteweb.com/&quot; target=&quot;_blank&quot;&gt;http://www.readwriteweb.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://venturebeat.com/&quot; target=&quot;_blank&quot;&gt;http://venturebeat.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;As I work on the Web &amp;amp; Microsoft Technologies (In the .Net Stack), I keep an eye only on blogs which talks about my interests. Some of them are from well-known great authors and some from my friends who are experts in a technology. I know there are 100’s of great blogs. I have listed only the ones I follow. Please post few more links if you think they are good to go in the list below. I shall add them with a big thanks to you :)&lt;/span&gt;&lt;/div&gt;&lt;ol style=&quot;font-family: inherit; text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;cite&gt;&lt;a href=&quot;http://www.hanselman.com/&quot; target=&quot;_blank&quot;&gt;http://www.hanselman.com/&lt;/a&gt; (Microsoft Technologies , General Tech &amp;amp; Tools)&lt;/cite&gt;&lt;cite&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;/span&gt;&lt;/cite&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;cite&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;a href=&quot;http://weblogs.asp.net/scottgu/&quot; target=&quot;_blank&quot;&gt;http://weblogs.asp.net/scottgu/&lt;/a&gt; &lt;/span&gt;&lt;/cite&gt;&lt;cite&gt;(Microsoft Technologies like ASP.Net, IIS, Silverlight &amp;amp; General)&lt;/cite&gt;&lt;cite&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;/span&gt;&lt;/cite&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://odetocode.com/Blogs/scott/&quot; target=&quot;_blank&quot;&gt;http://odetocode.com/Blogs/scott/&lt;/a&gt; (.Net &amp;amp; Client side)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.4guysfromrolla.com/blogs/aspnet.aspx&quot; target=&quot;_blank&quot;&gt;www.4guysfromrolla.com/blogs/aspnet.aspx&lt;/a&gt; &lt;cite&gt;(ASP.net)&lt;/cite&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://dotnetkicks.com/default.aspx&quot; target=&quot;_blank&quot;&gt;http://dotnetkicks.com/default.aspx&lt;/a&gt; (.Net)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://weblogs.asp.net/shijuvarghese/default.aspx&quot; target=&quot;_blank&quot;&gt;http://weblogs.asp.net/shijuvarghese/default.aspx&lt;/a&gt; (Azure &amp;amp; Cloud)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://amazedsaint.com/&quot; target=&quot;_blank&quot;&gt;http://amazedsaint.com/&lt;/a&gt; (C#, Silverlight &amp;amp; .Net)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.dotnet247.com/&quot; target=&quot;_blank&quot;&gt;http://www.dotnet247.com&lt;/a&gt; (.Net)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://dotnetcurry.com/&quot; target=&quot;_blank&quot;&gt;http://dotnetcurry.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://windowsteamblog.com/windows_phone/b/wpdev/&quot; target=&quot;_blank&quot;&gt;http://windowsteamblog.com/windows_phone/b/wpdev/&lt;/a&gt; &amp;nbsp;(Windows Phone) &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/7218206834534302592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/7218206834534302592'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/05/cool-list-of-tech-news-websites-and.html' title='A cool list of Tech News Websites and the Blogs I follow'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_wXG-O0Gal_o/SW5CYx-ClpI/AAAAAAAACsk/BOlnS0a2DoA/s72-c/paint-chip-bookmarks.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-7806681685187136972</id><published>2012-04-24T03:32:00.000-07:00</published><updated>2012-12-27T00:45:08.765-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="clientside"/><category scheme="http://www.blogger.com/atom/ns#" term="Downloads"/><category scheme="http://www.blogger.com/atom/ns#" term="Rich UI"/><category scheme="http://www.blogger.com/atom/ns#" term="TIPS"/><category scheme="http://www.blogger.com/atom/ns#" term="Usability"/><category scheme="http://www.blogger.com/atom/ns#" term="users"/><category scheme="http://www.blogger.com/atom/ns#" term="Ux"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Design"/><category scheme="http://www.blogger.com/atom/ns#" term="Website usability"/><title type='text'>Free Ebook : 25 Tips for Making your website Usable</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Usability factors play an important role in a website design process. Keeping users engaged on your website and allowing them to get the most from your pages can be challenging. I have written a small guide containing 25 tips which can help your website to become more usable and friendly.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://dstats.net/download/http://msanil.com/files/25_Tips_For_Making_Your_Website_Usable.zip&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-BgFsPueDX8Y/T5aAc472fzI/AAAAAAAAADA/pxPTKfLz0v4/s1600/Tips+for+usability.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You can download the ebook from the below link.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://dstats.net/download/http://msanil.com/files/25_Tips_For_Making_Your_Website_Usable.zip&quot; target=&quot;_blank&quot;&gt;Free ebook - 25 tips for making your website usable&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/7806681685187136972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/7806681685187136972'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/04/free-ebook-25-tips-for-making-your.html' title='Free Ebook : 25 Tips for Making your website Usable'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-BgFsPueDX8Y/T5aAc472fzI/AAAAAAAAADA/pxPTKfLz0v4/s72-c/Tips+for+usability.PNG" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-5439855051658133196</id><published>2012-04-08T06:10:00.002-07:00</published><updated>2012-12-27T00:35:33.055-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Adapt"/><category scheme="http://www.blogger.com/atom/ns#" term="BlueCss"/><category scheme="http://www.blogger.com/atom/ns#" term="clientside"/><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="Design"/><category scheme="http://www.blogger.com/atom/ns#" term="frameworks"/><category scheme="http://www.blogger.com/atom/ns#" term="Less"/><category scheme="http://www.blogger.com/atom/ns#" term="Resizable"/><category scheme="http://www.blogger.com/atom/ns#" term="Responsive"/><category scheme="http://www.blogger.com/atom/ns#" term="Skeletion"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter Bootstrap"/><category scheme="http://www.blogger.com/atom/ns#" term="Ux"/><category scheme="http://www.blogger.com/atom/ns#" term="Webpages"/><title type='text'>Responsive Web Design &amp; Frameworks : Kick Start your brain</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.reliablenetworks.co.uk/Blog/wp-content/uploads/2011/12/responsive_web_design.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;135&quot; src=&quot;http://www.reliablenetworks.co.uk/Blog/wp-content/uploads/2011/12/responsive_web_design.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;If you are still designing/developing websites which just works on PC&#39;s &amp;amp; Laptops, it&#39;s time to upgrade yourself. Remove that old brain. Wash it and replace it back with a new battery called &quot;sense&quot;.&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Do you think your users only use desktops to browse your webpages? &lt;/b&gt;&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;No. Not at all. People use mobile phones, small notebooks, tablet devices such as iPad or even Playbooks to access the web &amp;amp; apps you develop. &lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;If you are still busy creating the traditional fixed width webpages, the output of them on the devices would be cluttered pages, unwanted scroll-bars, missing Ratio &amp;amp; Proportions in the Size of images &amp;amp; text would be causing a big imbalance and thus creating frustration among the users. &amp;nbsp;Take some time. Just browse your webpage on a Mobile phone and see how it looks.&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;Now, if you are really serious about designing and developing web pages that are usable across devices and platforms, start learning the art of Responsive Design. &lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;Responsive design is all about the adaptive design principles which helps your web pages adjust their size to fit in all the display resolutions and the devices. Flexible images &amp;amp; content are the keys for a responsive design. First, open these webpages and resize your browser window back and forth &amp;amp; observe what happens when you do that. &lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://colly.com/&quot; target=&quot;_blank&quot;&gt;http://colly.com/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://seesparkbox.com/&quot; target=&quot;_blank&quot;&gt;http://seesparkbox.com/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://www.bostonglobe.com/&quot; target=&quot;_blank&quot;&gt;http://www.bostonglobe.com/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://staffanstorp.se/&quot; target=&quot;_blank&quot;&gt;http://staffanstorp.se/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://www.movembermike.com/&quot; target=&quot;_blank&quot;&gt;http://www.movembermike.com/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;Did you observe that, even the images change their size based on your screen size, there is no clipping of text, images, cluttered blocks of text or unnecessary scrollbars that make you feel bad? Instead it had a mechanism for folding the columns as and when you reduce the screen size, had elastic gutters to make your pages expandable and to look simple and readable even on different resolutions.&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;And Now. try doing the same for some other webpages which doesn’t have the responsive design thinking in them. You feel shame on what you have done really. Common Sense &amp;amp; A good framework are two important things which can make your webpages responsive. However, when you want to know the basics, two things you need to be aware of are &lt;a href=&quot;http://webdesignerwall.com/tutorials/css3-media-queries&quot; target=&quot;_blank&quot;&gt;CSS3 Media Queries&lt;/a&gt; and a &lt;a href=&quot;http://goldengridsystem.com/&quot; target=&quot;_blank&quot;&gt;CSS Grid System&lt;/a&gt;.&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;OK. Now, if you argue that you really don&#39;t have time to learn complicated HTML, CSS and all. Just learn and use any of the frameworks mentioned below.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;color: #134f5c; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Skeleton&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;i&gt;Skeleton is a small collection of CSS &amp;amp; JS files that can help you rapidly develop sites that look beautiful at any size, be it a 17&quot; laptop screen or an iPhone.&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Website &lt;/b&gt;: &lt;a href=&quot;http://getskeleton.com/&quot; target=&quot;_blank&quot;&gt;http://getskeleton.com/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Demo &lt;/b&gt;: &lt;a href=&quot;http://getskeleton.com/#grid&quot; target=&quot;_blank&quot;&gt;http://getskeleton.com/#grid&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;color: #134f5c; text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;color: #134f5c; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;BluCss&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;i&gt;BluCSS is a CSS framework designed with ease of use and simplicity in mind. It is specifically made so that when you&#39;re working on your next project, you don&#39;t have to worry about the essentials. With BluCSS, you can be up and running in less than a minute. &lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Website &lt;/b&gt;: &lt;a href=&quot;http://designlunatic.com/projects/blucss/&quot; target=&quot;_blank&quot;&gt;http://designlunatic.com/projects/blucss/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Demo &lt;/b&gt;: &lt;a href=&quot;http://designlunatic.com/projects/blucss/demo.html&quot; target=&quot;_blank&quot;&gt;http://designlunatic.com/projects/blucss/demo.html&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;color: #134f5c; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Adapt.js&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;i&gt;Adapt.js is a lightweight (848 bytes minified) JavaScript file that determines which CSS file to load before the browser renders a page. If the browser tilts or resizes, Adapt.js simply checks its width, and serves only the CSS that is needed, when it is needed. &lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Website &amp;amp; Demo&lt;/b&gt; : &lt;a href=&quot;http://adapt.960.gs/&quot; target=&quot;_blank&quot;&gt;http://adapt.960.gs/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;color: #741b47; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Less Framework 4&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;i&gt;Less Framework is a CSS grid system for designing adaptive web­sites. It contains 4 layouts and 3 sets of typography presets, all based on a single grid.&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Website &amp;amp; Demo&lt;/b&gt; : &lt;a href=&quot;http://lessframework.com/&quot; target=&quot;_blank&quot;&gt;http://lessframework.com/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #274e13; font-size: large;&quot;&gt;Twitter Bootstrap&lt;/span&gt;&lt;/b&gt; (Yes, this is from the twitter development team)&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;i&gt;Simple and flexible HTML, CSS, and Javascript for popular user interface components and interactions.&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Website &amp;amp; demo&lt;/b&gt; :&lt;a href=&quot;http://twitter.github.com/bootstrap/&quot; target=&quot;_blank&quot;&gt;http://twitter.github.com/bootstrap/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;Among all the above frameworks, I personally like twitter bootstrap. Because it can be used by people with all skill levels, Built for and by nerds, It has a 12-column grid, Cross-everything and the very important thing is that it is made in twitter! and is growing. Here are some great examples of pages done using the&amp;nbsp; Twitter Bootstrap &lt;a href=&quot;http://twitter.github.com/bootstrap/examples.html&quot; target=&quot;_blank&quot;&gt;http://twitter.github.com/bootstrap/examples.html&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;Twitter bootstrap offers three kind of free templates for everyone to download and start using that as the starting point for creating a responsive webpage.&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;If you have some time, you can look into the nUit, Tiny Fluid Grid, Respond &amp;amp; Zurb Foundation frameworks for responsive design.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;You can follow me on twitter &lt;a href=&quot;http://twitter.com/#%21/msguytweets&quot; target=&quot;_blank&quot;&gt;@msguytweets&lt;/a&gt; and Subsribe to the feeds &lt;a href=&quot;http://feeds.feedburner.com/MsGuyblog&quot; target=&quot;_blank&quot;&gt;http://feeds.feedburner.com/MsGuyblog&lt;/a&gt; . Happy Reading :)&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/5439855051658133196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/5439855051658133196'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/04/responsive-web-design-frameworks-kick.html' title='Responsive Web Design &amp; Frameworks : Kick Start your brain'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-1129989720638767043.post-7667470055878823844</id><published>2012-03-27T03:33:00.005-07:00</published><updated>2012-12-27T11:40:24.769-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2012"/><category scheme="http://www.blogger.com/atom/ns#" term="Bangalore"/><category scheme="http://www.blogger.com/atom/ns#" term="Experiences"/><category scheme="http://www.blogger.com/atom/ns#" term="microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="TechEdIn"/><title type='text'>TechEdIn 2012 : My Experience - Part 2</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;&lt;a href=&quot;http://www.thehindubusinessline.com/multimedia/dynamic/00962/BL22_IT_MICROSOFT_962641f.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;146&quot; src=&quot;http://www.thehindubusinessline.com/multimedia/dynamic/00962/BL22_IT_MICROSOFT_962641f.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;What a wonderful Keynote it was from Sanket Akerkar (Managing Director, Microsoft India). Every Word he delivered reflected &amp;amp; demonstrated his energy and passion towards his work along with his vast experience. Soon after his note, Bernardo Caldas, General Manager for Windows &amp;amp; Live (Emerging Markets) continued to pour energy adding to Sanket&#39;s words. I could see his eyes sparkling and feel his sense of responsibility. &lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://a6.sphotos.ak.fbcdn.net/hphotos-ak-prn1/523700_279884562086754_100001956374758_645863_1016414213_n.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;149&quot; src=&quot;http://a6.sphotos.ak.fbcdn.net/hphotos-ak-prn1/523700_279884562086754_100001956374758_645863_1016414213_n.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;The Groovy background music was kicking at my chest just to allow myself to feel proud of my presence. After the Keynote, pushed the recording switch off on my handy cam, just came out, took a snap with the SQL Guru @pinaldave and there was a surprise waiting for everyone. Guess what. There was hardly any space even for a mosquito to get inside the &quot;T-SQL Rediscovered with SQL Server 2012” session. House Full!. &amp;nbsp;#techedIn was trending on twitter (India) already.&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;Without any option, I attended &quot;The Windows 8 platform for Metro style apps from Kraig Brockschmidt&quot;. It was gr8 session, ah, nothing to regret.&amp;nbsp; After that, one more metro design principles session from Krishnan Rengasamy (I believe he is a Senior Program Manager ).&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://a5.sphotos.ak.fbcdn.net/hphotos-ak-ash3/547214_279902385418305_100001956374758_645878_911214879_n.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;149&quot; src=&quot;http://a5.sphotos.ak.fbcdn.net/hphotos-ak-ash3/547214_279902385418305_100001956374758_645878_911214879_n.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;Time for lunch. &amp;nbsp;Had each and every veg recipe I found there. Loved the desserts very much. The very important thing i noted is that, the buffet had a good spread and also it was accessible to thousands of participants all together at a time.&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;Met Lohith (@Kashyapa) and took a snap with him along with Mr. Pavanaja and Ganesh. &lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://a8.sphotos.ak.fbcdn.net/hphotos-ak-ash3/534844_279900195418524_100001956374758_645874_1713275299_n.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;149&quot; src=&quot;http://a8.sphotos.ak.fbcdn.net/hphotos-ak-ash3/534844_279900195418524_100001956374758_645874_1713275299_n.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;I did not want to miss the Kinect session from Abhijit Jana so ran quickly to Magadh Hall. Met him, introduced myself, spoke to him for few minutes, and took a Snap. &amp;nbsp;Hmm... He was tensed!! Really. But once he started presenting &quot;Windows Azure meets Kinect, Windows Phone and Windows 8 Metro &quot;, he was amazing. He almost impressed everyone with his demos.&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;We knew that SQL Track would be running full so walked away from the previous session 10 minutes early to the &quot;SQL Server Misconceptions and Resolution – A Practical Perspective&quot; from Pinal Dave &amp;amp; Vinod Kumar M. &amp;nbsp;I had no place to Sit.&amp;nbsp; One hour completely on my feet. Was sweating even with the Air conditioning turned on. &amp;nbsp;But, the stunning presentation from both the guys kept me entertaining with loads of knowledge. &amp;nbsp;Almost everyone got stumped! Yes, that is what I call an interactive session.&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;After a tea break, went to &quot;Building Metro style apps with XAML: What .NET developers need to know&quot; session. It was not too great but was good just because I knew many things he mentioned. &amp;nbsp;And not to forget, others enjoyed it.&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;The Demo Extravaganza in Kalinga hall was the highlight of the day. Collected 2 t-shirts (thx to Nokia &amp;amp; Microsoft) &amp;amp; Returned back to home with great satisfaction.&lt;/div&gt;&lt;div class=&quot;MsoNoSpacing&quot;&gt;(to be continued)&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/7667470055878823844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1129989720638767043/posts/default/7667470055878823844'/><link rel='alternate' type='text/html' href='http://www.msguy.com/2012/03/techedin-2012-my-experience-part-2.html' title='TechEdIn 2012 : My Experience - Part 2'/><author><name>MS Guy [Blog]</name><uri>http://www.blogger.com/profile/02281833484465959279</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>