<?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-7564203053073127032</id><updated>2025-11-05T23:11:22.200+05:30</updated><category term="golang"/><category term="Chrome"/><category term="source control"/><category term="Android"/><category term="Google+"/><category term="apps"/><category term="cloud"/><category term="dev"/><category term="fastcgi"/><category term="git"/><category term="javascript"/><category term="knockoutjs"/><category term="mercurial"/><category term="metrics"/><category term="nginx"/><category term="office365"/><category term="perf"/><category term="sharepoint"/><category term="social"/><category term="trading"/><category term="usability"/><category term="web"/><category term="windowsazure"/><title type='text'>Sanat&#39;s Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-3239337471565085085</id><published>2015-11-30T09:06:00.000+05:30</published><updated>2015-11-30T09:10:23.921+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="dev"/><category scheme="http://www.blogger.com/atom/ns#" term="perf"/><title type='text'>Perf</title><content type='html'>&lt;div class=&quot;graf--p graf-after--h3&quot; id=&quot;3d96&quot; name=&quot;3d96&quot; style=&quot;background-color: white; color: rgba(0, 0, 0, 0.8); font-family: medium-content-serif-font, Georgia, Cambria, &#39;Times New Roman&#39;, Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 12px;&quot;&gt;
&lt;span style=&quot;font-size: 21px; letter-spacing: -0.063px; line-height: 33.18px;&quot;&gt;Perf isn’t just about how fast your framework runs.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 21px; letter-spacing: -0.063px; line-height: 33.18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 21px; letter-spacing: -0.063px; line-height: 33.18px;&quot;&gt;Perf is also about:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: rgba(0 , 0 , 0 , 0.8);&quot;&gt;&lt;span style=&quot;font-size: 21px; letter-spacing: -0.063px; line-height: 33.18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: rgba(0 , 0 , 0 , 0.8); font-size: 21px; letter-spacing: -0.063px; line-height: 33.18px;&quot;&gt;how fast you can set up a dev environment for it&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: rgba(0 , 0 , 0 , 0.8); font-size: 21px; letter-spacing: -0.063px; line-height: 33.18px;&quot;&gt;how fast you can train people to use it&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: rgba(0 , 0 , 0 , 0.8); font-size: 21px; letter-spacing: -0.063px; line-height: 33.18px;&quot;&gt;how fast they become productive in it&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: rgba(0 , 0 , 0 , 0.8); font-size: 21px; letter-spacing: -0.063px; line-height: 33.18px;&quot;&gt;how fast it can be deployed&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: rgba(0 , 0 , 0 , 0.8); font-size: 21px; letter-spacing: -0.063px; line-height: 33.18px;&quot;&gt;how fast someone new looking at it 3 years later can begin to maintain it&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/3239337471565085085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2015/11/perf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/3239337471565085085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/3239337471565085085'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2015/11/perf.html' title='Perf'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-6787463319479908545</id><published>2015-03-05T09:15:00.000+05:30</published><updated>2015-03-05T09:15:46.771+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="apps"/><category scheme="http://www.blogger.com/atom/ns#" term="metrics"/><category scheme="http://www.blogger.com/atom/ns#" term="usability"/><title type='text'>Friction</title><content type='html'>Every app needs one primary metric - Friction. This is a function of how easy it is for users of the app to do what they came to do and how long it takes them to do it. Every other metric flows from that, even revenue earned - because if your users encounter too much friction, you&#39;re not gonna get any revenue.</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/6787463319479908545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2015/03/friction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/6787463319479908545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/6787463319479908545'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2015/03/friction.html' title='Friction'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-5979706158117927444</id><published>2015-01-01T16:27:00.000+05:30</published><updated>2015-01-01T16:31:40.511+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="golang"/><title type='text'>FizzBuzz</title><content type='html'>This is a simple implementation of the &lt;a href=&quot;http://c2.com/cgi/wiki?FizzBuzzTest&quot;&gt;FizzBuzz Test&lt;/a&gt; in Go. 

&lt;p&gt;
&lt;script src=&quot;https://gist.github.com/sanatgersappa/8c1f1bf68e6bdfb111ee.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/5979706158117927444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2015/01/fizzbuzz.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/5979706158117927444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/5979706158117927444'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2015/01/fizzbuzz.html' title='FizzBuzz'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-879584274574887133</id><published>2013-11-11T12:20:00.000+05:30</published><updated>2013-11-11T12:20:55.708+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="golang"/><title type='text'>Creating a &quot;Master Page&quot; for your Go Web App</title><content type='html'>&lt;p&gt;
Most web apps share a common layout across different views. This common layout may include a header or a footer and even a navigation menu. Go&#39;s batteries-included standard library provides an easy way to create these common elements that can be reused in different views to create a &quot;Master Page&quot;-like effect.
&lt;p&gt;
&lt;p&gt;
This basic example demonstrates how:
&lt;/p&gt;
&lt;p&gt;
Let&#39;s create a simple web app that has 2 views - a Main view and an About view. Both these views have the same header and footer sections.
&lt;/p&gt;
&lt;p&gt;
The header template is defined in a file named header.html
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/sanatgersappa/7408734.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;
The footer template is defined in a file named footer.html
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/sanatgersappa/7408745.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;
The Main template is defined in a file named main.html
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/sanatgersappa/7408747.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;
The About template is defined in a file name about.html
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/sanatgersappa/7408751.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;
And here&#39;s the code that serves it up.
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/sanatgersappa/7408722.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;
Each of the above templates has a name defined using the {{define &quot;name&quot;}} action. The Main and About templates include the header and footer templates using the {{template &quot;name&quot; .}} action. The &#39;.&#39; passes in the context to the named template. Now whenever the Main and About templates are executed, the header and footer will get included and inserted at the required location. That&#39;s all there is to it.
&lt;/p&gt;
&lt;p&gt;
This is how the 2 views look.

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhydVgE3OIfeqHgH9_s-db4haDYdXnjE-EHd1Xqb4O6Qnt83BeSj7Mar1LYt0SbO_rt6-wZFJq8mfa5WPiJ9DfZeRz_x9786OJgPwPgXeNxjQ2mpjfJ-dV58QnFSTeX6Z9FdiN2gXsAWzM/s1600/main.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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhydVgE3OIfeqHgH9_s-db4haDYdXnjE-EHd1Xqb4O6Qnt83BeSj7Mar1LYt0SbO_rt6-wZFJq8mfa5WPiJ9DfZeRz_x9786OJgPwPgXeNxjQ2mpjfJ-dV58QnFSTeX6Z9FdiN2gXsAWzM/s640/main.PNG&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;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKoMluPXLX8nyU3tjgaeh61XJPmGKf9gnNqwqBbYaL1RNacMeTXt6CdoReGw1LavN85qwujAUNvINpNbRL_wbbfVHz6ilfMbnct4ipKeEfud27h5If3Cd8GLa4lzVIJi_4Bcq0IQyNVM0/s1600/about.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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKoMluPXLX8nyU3tjgaeh61XJPmGKf9gnNqwqBbYaL1RNacMeTXt6CdoReGw1LavN85qwujAUNvINpNbRL_wbbfVHz6ilfMbnct4ipKeEfud27h5If3Cd8GLa4lzVIJi_4Bcq0IQyNVM0/s640/about.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
This technique can also be used to create different layouts for different sections of the web app; for example, the administration section may look different from the user section. We just need to name our templates appropriately and include them where required.
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/879584274574887133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2013/11/creating-master-page-for-your-go-web-app.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/879584274574887133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/879584274574887133'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2013/11/creating-master-page-for-your-go-web-app.html' title='Creating a &quot;Master Page&quot; for your Go Web App'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhydVgE3OIfeqHgH9_s-db4haDYdXnjE-EHd1Xqb4O6Qnt83BeSj7Mar1LYt0SbO_rt6-wZFJq8mfa5WPiJ9DfZeRz_x9786OJgPwPgXeNxjQ2mpjfJ-dV58QnFSTeX6Z9FdiN2gXsAWzM/s72-c/main.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-3874656570695766654</id><published>2013-11-09T09:36:00.002+05:30</published><updated>2025-11-05T11:41:50.137+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google+"/><category scheme="http://www.blogger.com/atom/ns#" term="social"/><title type='text'>On Google&#39;s social layer.</title><content type='html'>&lt;p dir=&quot;ltr&quot;&gt;Every once in a while, there is a major outrage over Google trying to &quot;shove Google+ down our throats&quot; as one more of its properties is integrated with Google+. There are accusations of Google wanting to inflate its active user count by &quot;forcing&quot; more people into Google+.&lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;Google+ is one of the most misunderstood pieces of the Google puzzle. It is popularly considered as Google&#39;s wannabe answer to Facebook/Twitter and as yet another attempt at &quot;getting&quot; social.&lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;Yet Google+ is more than just a mere social network. Google+ is literally Google + You (and your juicy details). &lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;Google&#39;s goal is to become your perfect personal assistant - the ultimate handheld/wearable Star Trek computer. To do this, it has to understand your behavior/preferences. Google+ is a fabric that is being built around Google&#39;s other properties to do just that. &lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;It is also important to understand this in the context of Google&#39;s business model. Google provides a number of services (mostly for free) in return for showing you advertisements (yes, there&#39;s no real free lunch). So, while attempting to become your Star Trek computer, it also has to stay relevant to advertisers - the people who spend money to keep it going. &lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;Advertisers want to make sure that the money they spend, results in ads being shown where there is the greatest chance of success. People who see the ads (users like you and me) don&#39;t like ads, but would rather see relevant ads than irrelevant ones.&lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;Understanding you, your behavior, preferences and social interactions helps Google achieve both objectives - becoming &lt;u&gt;your&lt;/u&gt; Star Trek computer as well as becoming the ultimate advertising platform.&lt;/p&gt;
&lt;p dir=&quot;ltr&quot;&gt;Judging from the outrage, a lot of people don&#39;t like this setup. The good thing about this, is that you don&#39;t have to use Google or any of its properties. There are alternatives. Be prepared to discover though, that these alternatives are not all that different, or if they are, are unviable from a long term perspective.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/3874656570695766654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2013/11/on-google-social-layer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/3874656570695766654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/3874656570695766654'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2013/11/on-google-social-layer.html' title='On Google&#39;s social layer.'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-3832328287931981875</id><published>2013-07-26T08:51:00.000+05:30</published><updated>2013-07-26T08:59:59.142+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="golang"/><title type='text'>Windows Service with Go - the easy way</title><content type='html'>This is a &lt;b&gt;quick and dirty&lt;/b&gt; way to create a Windows Service using Go.&lt;br /&gt;
&lt;br /&gt;
First, you create a normal Go program with a main() function. This calls another method where the actual work gets done. This function runs in an infinite loop (if you&#39;re writing a Go web server, you don&#39;t need this loop as the http listener will take care of this).&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;package main

func main() {
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;//Call this function where the action happpens
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;doStuff()
}

func doStuff() {
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;for {
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;//the actual stuff happens here.
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}
}

&lt;/pre&gt;
Once you build this to an exe file, register it as a service using the wonderful &lt;a href=&quot;http://nssm.cc/&quot;&gt;NSSM (the Non-Sucking Service Manager)&lt;/a&gt;. In our case, that would be -&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;nssm install MyService d:\MyService.exe&lt;/pre&gt;
&lt;br /&gt;
(where d:\MyService.exe is the full path to the exe file).&lt;br /&gt;
&lt;br /&gt;
This will register the exe as a Windows Service named MyService. You can change the settings of this service by typing Services.msc and choosing MyService from the services list.&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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6bUyt2-1Myg9HB3BGMIt4nUrEa3HVTF3pSwrmtlUiiRM7qSgolSHL-CXe1LAQ4-FyHsPMMPeCea9TUdk1ZqCPgdd2RxDZ4QPm5wu-DIhtjGKnkW4Qqat1AeHboPq-_MerHYKf3fgg-gE/s1600/Service.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;234&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6bUyt2-1Myg9HB3BGMIt4nUrEa3HVTF3pSwrmtlUiiRM7qSgolSHL-CXe1LAQ4-FyHsPMMPeCea9TUdk1ZqCPgdd2RxDZ4QPm5wu-DIhtjGKnkW4Qqat1AeHboPq-_MerHYKf3fgg-gE/s320/Service.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
You can delete this service using either NSSM or the native service control sc.exe&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;sc delete MyService&lt;/pre&gt;
&lt;br /&gt;
This method is pure Go and does not use any native Windows APIs directly. The advantage of this is that the same Go program can be run on another OS, if required.&lt;br /&gt;
&lt;br /&gt;
If you want to write something Windows-specific and take advantage of native APIs, like writing to the Windows Event Log, you can use &lt;a href=&quot;http://godoc.org/code.google.com/p/winsvc&quot;&gt;this package&lt;/a&gt; from&amp;nbsp;&lt;a class=&quot;g-profile&quot; href=&quot;http://plus.google.com/114845741327583275155&quot; target=&quot;_blank&quot;&gt;+Alex Brainman&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/3832328287931981875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2013/07/windows-service-with-go-easy-way.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/3832328287931981875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/3832328287931981875'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2013/07/windows-service-with-go-easy-way.html' title='Windows Service with Go - the easy way'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6bUyt2-1Myg9HB3BGMIt4nUrEa3HVTF3pSwrmtlUiiRM7qSgolSHL-CXe1LAQ4-FyHsPMMPeCea9TUdk1ZqCPgdd2RxDZ4QPm5wu-DIhtjGKnkW4Qqat1AeHboPq-_MerHYKf3fgg-gE/s72-c/Service.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-7965769797217438509</id><published>2013-06-13T08:30:00.004+05:30</published><updated>2013-07-31T14:18:50.993+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Chrome"/><title type='text'>Printing from your Android device.</title><content type='html'>Though things are going largely paperless, there are those times when you need to have a dead-tree edition of that important document. As we go increasingly mobile, a &#39;Print&#39; feature on your device becomes necessary. That is where Google Cloud Print comes to the rescue.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.google.com/cloudprint/learn/&quot;&gt;Google Cloud Print&lt;/a&gt; is a service that lets you print a document using any &lt;a href=&quot;http://www.google.com/cloudprint/learn/printers.html&quot;&gt;Cloud Print-enabled printer&lt;/a&gt; over the web. If you have a normal (classic) printer, you can use that too. You just need to connect your PC to the printer and enable Google Cloud Print using the Chrome browser on it. To do this, go to your Chrome Settings page, click on Show Advanced Settings and then on the Add Printers button under the Google Cloud Print heading.

&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;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-ZVNgXJ3MoEyDbB8enT6NLIeWdxnUbIwRLWaaH9OjMHC4Hkl-UXJexRGrdWBC7jiI2ftDZvQ790_2vDEKdkfUarqZB6jEPFp9ZO7XgLTMFtzhbqYrd4f8SHww5ZdVzG7Q167f2tJUwAw/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;123&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-ZVNgXJ3MoEyDbB8enT6NLIeWdxnUbIwRLWaaH9OjMHC4Hkl-UXJexRGrdWBC7jiI2ftDZvQ790_2vDEKdkfUarqZB6jEPFp9ZO7XgLTMFtzhbqYrd4f8SHww5ZdVzG7Q167f2tJUwAw/s640/Capture.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
This will display a list of printers your PC has access to and you can select one or more of them.&lt;br /&gt;
&lt;br /&gt;
Next, you need to install the &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.apps.cloudprint&quot;&gt;Google Cloud Print&lt;/a&gt; app on your Android device. Once you do this, you can print from your device using the Share option. For example, to print a webpage from Chrome, select Share and then Cloud Print.&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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiasx_0qLE-rWfm7P9Xyv96RQuGOo27UaNJ3A89AULMXVW6BZNmjTVK1a8x5pwKIXMxFt6jNMJtwCoikgmCj0UCuzIKsDdn5LrFi-vtyoz3ssIPtCihZg_nDJTBOCNJSV22Zxqd7nag-Co/s1600/Screenshot_2013-07-31-14-05-37.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiasx_0qLE-rWfm7P9Xyv96RQuGOo27UaNJ3A89AULMXVW6BZNmjTVK1a8x5pwKIXMxFt6jNMJtwCoikgmCj0UCuzIKsDdn5LrFi-vtyoz3ssIPtCihZg_nDJTBOCNJSV22Zxqd7nag-Co/s400/Screenshot_2013-07-31-14-05-37.png&quot; width=&quot;240&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;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfm9iuB2g1CyqJp0GKhRECL50PTtZSiGQnzLjh3YbzCFu82oUQA2e55RjyF6uDAeeXvUeNsvt980vsEq1vIDEMNjkYivosAKek2MXiqXZF6uQEfnkadpfDsakFFIdduH5bQpKBDPcyvoo/s1600/Screenshot_2013-07-31-14-06-02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfm9iuB2g1CyqJp0GKhRECL50PTtZSiGQnzLjh3YbzCFu82oUQA2e55RjyF6uDAeeXvUeNsvt980vsEq1vIDEMNjkYivosAKek2MXiqXZF6uQEfnkadpfDsakFFIdduH5bQpKBDPcyvoo/s400/Screenshot_2013-07-31-14-06-02.png&quot; width=&quot;240&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;
&lt;br /&gt;
This will display a list of printers you can print to. You can also save the webpage to your Google Drive.</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/7965769797217438509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2013/06/printing-from-your-android-device.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/7965769797217438509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/7965769797217438509'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2013/06/printing-from-your-android-device.html' title='Printing from your Android device.'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-ZVNgXJ3MoEyDbB8enT6NLIeWdxnUbIwRLWaaH9OjMHC4Hkl-UXJexRGrdWBC7jiI2ftDZvQ790_2vDEKdkfUarqZB6jEPFp9ZO7XgLTMFtzhbqYrd4f8SHww5ZdVzG7Q167f2tJUwAw/s72-c/Capture.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-1024440957198490258</id><published>2013-03-10T11:51:00.000+05:30</published><updated>2013-07-31T17:32:49.458+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="golang"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Handling Multiple File Uploads in a Go Web Application</title><content type='html'>&lt;p&gt;
It took me some time to get this right as I couldn&#39;t find an easy-to-follow example on the web. Since this is a common use case, this post may hopefully help someone.
&lt;/p&gt;
&lt;p&gt;
This example has a single template for the main webpage that has the file upload form. The backend handler serves this template on a GET request and handles the upload on a POST request. If you&#39;re not familiar with Go&#39;s html templates, I would recommend reading this well written &lt;a href=&quot;http://golang.org/doc/articles/wiki/&quot;&gt;document&lt;/a&gt; first.
&lt;/p&gt;
&lt;p&gt;
The uploadHandler method is where the action happens. This handler responds to a GET request by displaying the upload form. This form POSTs to the same URL - the handler responds by parsing the posted form, saving the uploaded files and displaying a success message.
&lt;/p&gt;
&lt;p&gt;
&lt;script src=&quot;https://gist.github.com/sanatgersappa/5127317.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;
You can find the complete project at -&amp;nbsp;&lt;a href=&quot;https://github.com/sanatgersappa/Go-MultipleFileUpload&quot;&gt;https://github.com/sanatgersappa/Go-MultipleFileUpload&lt;/a&gt;
&lt;/p&gt;

&lt;strong&gt;Update:&lt;/strong&gt; As pointed out by Luit in the comments, an alternate way of doing this is to use a mime/multipart.Reader exposed by r.MultipartReader() instead of r.MultiparseForm(). This approach has the advantage that it doesn&#39;t write to a temporary location on the disk, but processes bytes as they come in. 

&lt;p&gt;
&lt;script src=&quot;https://gist.github.com/sanatgersappa/5150439.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/1024440957198490258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2013/03/handling-multiple-file-uploads-in-go.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/1024440957198490258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/1024440957198490258'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2013/03/handling-multiple-file-uploads-in-go.html' title='Handling Multiple File Uploads in a Go Web Application'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-1064093078021822445</id><published>2012-11-13T10:28:00.000+05:30</published><updated>2015-11-30T14:27:38.505+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="fastcgi"/><category scheme="http://www.blogger.com/atom/ns#" term="golang"/><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><category scheme="http://www.blogger.com/atom/ns#" term="windowsazure"/><title type='text'>Serving Go using FastCGI on Windows Azure</title><content type='html'>One of the cooler features of &lt;a href=&quot;http://www.windowsazure.com/&quot;&gt;Windows Azure&lt;/a&gt; is that you can spin up Linux virtual machines on it and run apps written in the language of your choice.&lt;br /&gt;
&lt;br /&gt;
These are the steps I followed to create a Linux VM on Windows Azure, install nginx and Go on it and serve up a &quot;Hello World&quot; app using FastCGI.&lt;br /&gt;
&lt;br /&gt;
First, I signed up a 3-month trial account on Windows Azure - you will need a Microsoft Account for this.&lt;br /&gt;
&lt;br /&gt;
Next, I created a new Virtual Machine using &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;New -&amp;gt; Compute -&amp;gt; Virtual Machine -&amp;gt; From Gallery&lt;/span&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;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZOB46laAB3O7y-qHuIEc9-5PRCVzJ7H8KnVzsSZomM6zbbqEYdSFncAmhe_9YSmgsjvUfI0YVEAylasb2c637G7r7OtHWe-qf9-UdxtE_8jooa2S5pB6mEto3LzVgaYz1yRtJSWRXmsc/s1600/Pic1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZOB46laAB3O7y-qHuIEc9-5PRCVzJ7H8KnVzsSZomM6zbbqEYdSFncAmhe_9YSmgsjvUfI0YVEAylasb2c637G7r7OtHWe-qf9-UdxtE_8jooa2S5pB6mEto3LzVgaYz1yRtJSWRXmsc/s400/Pic1.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
I selected Ubuntu Server 12.04.1 -&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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm-CgyFoWxtYXMOATyu79vbirnIfGGz1zW4rw7NY9ECtDT3k9d4ec14Cc49sehe8lrFqHpJ83U4wqshrj6Ql6trAmEniw-2UrS9ksmId78i8e8IKEk6vr7-DoOgg3__sQ6pvdYpbKUoOQ/s1600/Gallery.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm-CgyFoWxtYXMOATyu79vbirnIfGGz1zW4rw7NY9ECtDT3k9d4ec14Cc49sehe8lrFqHpJ83U4wqshrj6Ql6trAmEniw-2UrS9ksmId78i8e8IKEk6vr7-DoOgg3__sQ6pvdYpbKUoOQ/s400/Gallery.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
I gave the new VM a name - GoMachine, selected a username and password and hit 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;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4W20XlNdwjA1HnefY8YdFH8XJRb6k9PN9J0EZKLXqtamyNsJd3z6MZlNbB6OQz_hTBNoVPtqPAyGRTd82tS-VYd39pDnTKPkyooBqHWwhzK5vd2gkV2xRYJfec4kCpCsJto_cfmHynvs/s1600/Pic3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;198&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4W20XlNdwjA1HnefY8YdFH8XJRb6k9PN9J0EZKLXqtamyNsJd3z6MZlNbB6OQz_hTBNoVPtqPAyGRTd82tS-VYd39pDnTKPkyooBqHWwhzK5vd2gkV2xRYJfec4kCpCsJto_cfmHynvs/s400/Pic3.png&quot; width=&quot;400&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;
I selected VM type as Standalone and the DNS name as gopher.cloudapp.net -&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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5uSsciC2kJoBCGGZExMv6SMpVDiqEdOFAgM2nBheP4azBDO6ef6SCzmG-6aKOOLyTUty_UwHjd_zhMTAQTQFtUjjRVZsOue_HUuSFW2reAIlH92lXNhmvIBy6Fc6UWcHteEB-QlNXKps/s1600/Pic4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;198&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5uSsciC2kJoBCGGZExMv6SMpVDiqEdOFAgM2nBheP4azBDO6ef6SCzmG-6aKOOLyTUty_UwHjd_zhMTAQTQFtUjjRVZsOue_HUuSFW2reAIlH92lXNhmvIBy6Fc6UWcHteEB-QlNXKps/s400/Pic4.png&quot; width=&quot;400&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;
&lt;br /&gt;
Choose Availability Set as None -&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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0yFbDdjYEaO8SzNnR-s90Gh8_Zv8kUQ7QIipsHt3p-lOjSQGq9mEPoVQ7eRSrHt52hgDCsJRpntymzJDWjubOYlGAvIHSq6_wRECIThQjcz-9YtB0LR53FT9pVVR4zUiLFy4yQh8cO6w/s1600/Pic5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0yFbDdjYEaO8SzNnR-s90Gh8_Zv8kUQ7QIipsHt3p-lOjSQGq9mEPoVQ7eRSrHt52hgDCsJRpntymzJDWjubOYlGAvIHSq6_wRECIThQjcz-9YtB0LR53FT9pVVR4zUiLFy4yQh8cO6w/s400/Pic5.png&quot; width=&quot;400&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;
&lt;br /&gt;
Once the VM was provisioned, I SSH&#39;d into it using &lt;a href=&quot;http://www.chiark.greenend.org.uk/~sgtatham/putty/&quot;&gt;PuTTy&lt;/a&gt; using the credentials I had set earlier -&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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvuBQ3ZZLm-PRqNBQ4cS8j-zfK4PNADiGcBaiP6xfSAsdPkK9_9EyIjPA7ARIiCPuJUdZBA9KbEE9WsUlEpIKbbLWIRgC_F3M-eWx2LY-cmo-Js5gbUlsbmPto4yHZliWk5B4YLLusWBA/s1600/Pic7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvuBQ3ZZLm-PRqNBQ4cS8j-zfK4PNADiGcBaiP6xfSAsdPkK9_9EyIjPA7ARIiCPuJUdZBA9KbEE9WsUlEpIKbbLWIRgC_F3M-eWx2LY-cmo-Js5gbUlsbmPto4yHZliWk5B4YLLusWBA/s640/Pic7.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I installed Go using the command - sudo apt-get install golang-go.&lt;br /&gt;
&lt;br /&gt;
I installed nginx using the command - sudo apt-get install nginx.&lt;br /&gt;
&lt;br /&gt;
Next, I created a directory called fcgi in which I created a file - fcgi.go -&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/sanatgersappa/4063850.js&quot;&gt;&lt;/script&gt;
and compiled it using &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;go build fcgi.go&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
I edited the file /etc/nginx/sites-available/default to allow it to serve FastCGI and pointed it to 127.0.0.1:9999 where the fcgi app will listen. The server will also take requests directed to http://gopher.cloudapp.net.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/sanatgersappa/4063871.js&quot;&gt;&lt;/script&gt;
I started the fcgi application using &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;~/fcgi/fcgi&amp;amp;&lt;/span&gt; to run it in the background. I also restarted nginx&amp;nbsp;using &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;sudo service nginx restart&lt;/span&gt;&amp;nbsp;for the new configuration &amp;nbsp;to take effect.&lt;br /&gt;
&lt;br /&gt;
To test the app, I typed &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;curl http://localhost/hello&lt;/span&gt;. It worked. However, &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;curl http://gopher.cloudapp.net/hello&lt;/span&gt; didn&#39;t. To make this work, I had to create a new &#39;endpoint&#39; for the VM in the dashboard -&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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfS20r75d4VDTPJw4vX71xYUvgCUdCdMqmkQjxxPy4YqRELaGSSIeCIg7JZyshuhyJXwtL55dQ7YcU1j3a2tSXxsJsZgriEqx601ZoWl27U_5zHiAeXCpTCB8TZHiWLfxJ-IP5bquhiCg/s1600/Pic10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;201&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfS20r75d4VDTPJw4vX71xYUvgCUdCdMqmkQjxxPy4YqRELaGSSIeCIg7JZyshuhyJXwtL55dQ7YcU1j3a2tSXxsJsZgriEqx601ZoWl27U_5zHiAeXCpTCB8TZHiWLfxJ-IP5bquhiCg/s400/Pic10.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I clicked on Add Endpoint, and created a new TCP endpoint on Port 80 -&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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMt9WFnUJy95pxKIIb6gEOzEPyxaIjru-aA48WOavkulCATJAvY2ws-7l38hjUs6avlSemKm8XSfer2p1a0mqQJEJuDDcrA211VctvviDmDf-_hQErS_prZhIhilpAizLuPkmHNWLvT80/s1600/Pic11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;201&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMt9WFnUJy95pxKIIb6gEOzEPyxaIjru-aA48WOavkulCATJAvY2ws-7l38hjUs6avlSemKm8XSfer2p1a0mqQJEJuDDcrA211VctvviDmDf-_hQErS_prZhIhilpAizLuPkmHNWLvT80/s400/Pic11.png&quot; width=&quot;400&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;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-zIM95f5InvQzJjZemmbOjXcK_omXucyfsUTxvs0NKoIKxqggh6LvZC1RBWideH2UOnXqgAWhEyZdUU3PzK6hg5_uPj6vaGoPI27wgfsxvEA00v-CtRRFBZ18fdIYseAOayGYJbWlKiE/s1600/Pic12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;201&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-zIM95f5InvQzJjZemmbOjXcK_omXucyfsUTxvs0NKoIKxqggh6LvZC1RBWideH2UOnXqgAWhEyZdUU3PzK6hg5_uPj6vaGoPI27wgfsxvEA00v-CtRRFBZ18fdIYseAOayGYJbWlKiE/s400/Pic12.png&quot; width=&quot;400&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;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR3tbCQIf7fMoMPMX9xFDl-yhx2d2Xm8V-CRB_-mUYTYFNQ3Ibt5gujQqOEJcBqh_B6g-_QzRS-b6PH-_YUG0WrpdTTgGaBB9-kSeIv7YPXDOtFUOjCG9D9Vd3BiPn3Lf24p-2-4L_cA4/s1600/Pic13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;201&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR3tbCQIf7fMoMPMX9xFDl-yhx2d2Xm8V-CRB_-mUYTYFNQ3Ibt5gujQqOEJcBqh_B6g-_QzRS-b6PH-_YUG0WrpdTTgGaBB9-kSeIv7YPXDOtFUOjCG9D9Vd3BiPn3Lf24p-2-4L_cA4/s400/Pic13.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Now, the web app is accessible from the outside world.&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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx67zTFfn-mNZQg4B_bFfwV1TMsh4IfRm9rBOwqj7NYIHoZr_bNLTJs0sk-BVX9JbApPmTmvnAfqcK-jdHjFvBnZmoroVLdVdjDIGZaKlSSq24IHBLOwnP3A22ZmB09xOkydANN1j1Vmk/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;215&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx67zTFfn-mNZQg4B_bFfwV1TMsh4IfRm9rBOwqj7NYIHoZr_bNLTJs0sk-BVX9JbApPmTmvnAfqcK-jdHjFvBnZmoroVLdVdjDIGZaKlSSq24IHBLOwnP3A22ZmB09xOkydANN1j1Vmk/s400/Capture.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Update:&lt;/b&gt; - My 3 month trial has expired. So the above URL is not accessible any longer.&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;br /&gt;
&lt;script src=&quot;https://raw.githubusercontent.com/sanatgersappa/gist-Blogger/master/public/gistLoader.js&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/1064093078021822445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2012/11/serving-go-using-fastcgi-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/1064093078021822445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/1064093078021822445'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2012/11/serving-go-using-fastcgi-on-windows.html' title='Serving Go using FastCGI on Windows Azure'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZOB46laAB3O7y-qHuIEc9-5PRCVzJ7H8KnVzsSZomM6zbbqEYdSFncAmhe_9YSmgsjvUfI0YVEAylasb2c637G7r7OtHWe-qf9-UdxtE_8jooa2S5pB6mEto3LzVgaYz1yRtJSWRXmsc/s72-c/Pic1.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-4924780005165163943</id><published>2012-11-07T15:41:00.000+05:30</published><updated>2013-07-31T17:27:53.044+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="golang"/><category scheme="http://www.blogger.com/atom/ns#" term="office365"/><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint"/><title type='text'>Querying Sharepoint on Office365 with Go</title><content type='html'>This code snippet shows how to query Sharepoint hosted on Microsoft&#39;s &lt;a href=&quot;http://www.microsoft.com/en-us/office365/default.aspx&quot;&gt;Office365&lt;/a&gt; service. This was inspired by Luc Stakenborg&#39;s excellent&amp;nbsp;&lt;a href=&quot;https://github.com/lstak/node-sharepoint&quot;&gt;Node-Sharepoint library&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/sanatgersappa/4030649.js&quot;&gt;&lt;/script&gt;

&lt;b&gt;Update:&lt;/b&gt; This no longer works. Office365 has now been upgraded to use Sharepoint 2013, which supports OAuth-based authentication. More details here - &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/fp142384.aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/fp142384.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/4924780005165163943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2012/11/querying-sharepoint-on-office365-with-go.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/4924780005165163943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/4924780005165163943'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2012/11/querying-sharepoint-on-office365-with-go.html' title='Querying Sharepoint on Office365 with Go'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-657081827506766393</id><published>2012-11-01T10:41:00.001+05:30</published><updated>2012-11-01T10:41:38.161+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="knockoutjs"/><title type='text'>Knockout.js – Creating a table with a cell conditionally spanning multiple rows.</title><content type='html'>Creating HTML tables with conditional elements is a common scenario when creating user interfaces. This fiddle demonstrates how to create a table with a cell that conditionally spans multiple rows using &lt;a href=&quot;http://knockout.js/&quot;&gt;Knockout.js&lt;/a&gt;.&lt;br /&gt;
&amp;nbsp;

&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot; src=&quot;http://jsfiddle.net/sanatgersappa/B773q/embedded/&quot; style=&quot;height: 300px; width: 100%;&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/657081827506766393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2012/11/knockoutjs-creating-table-with-cell.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/657081827506766393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/657081827506766393'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2012/11/knockoutjs-creating-table-with-cell.html' title='Knockout.js – Creating a table with a cell conditionally spanning multiple rows.'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-35292590174122675</id><published>2011-02-12T22:51:00.000+05:30</published><updated>2011-02-12T22:52:47.143+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chrome"/><title type='text'>App Updates - IE9 vs Chrome</title><content type='html'>Installed IE9 RC on my Win 7 Laptop. I had to uninstall IE9 Beta first, restart Windows, then run the IE9 RC installer and restart Windows again. When I compare this to how easily Chrome updates, I know why it is winning.</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/35292590174122675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2011/02/app-updates-ie9-vs-chrome.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/35292590174122675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/35292590174122675'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2011/02/app-updates-ie9-vs-chrome.html' title='App Updates - IE9 vs Chrome'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-7142923293541109941</id><published>2011-01-15T21:09:00.000+05:30</published><updated>2011-01-15T21:10:06.309+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="mercurial"/><category scheme="http://www.blogger.com/atom/ns#" term="source control"/><title type='text'>Hg Init: a Mercurial tutorial by Joel Spolsky</title><content type='html'>&quot;Mercurial is a modern, open source, distributed version control system, and a compelling upgrade from older systems like Subversion. In this user-friendly, six-part &lt;a href=&quot;http://hginit.com/&quot;&gt;tutorial&lt;/a&gt;, Joel Spolsky teaches you the key concepts.&quot;</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/7142923293541109941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2011/01/hg-init-mercurial-tutorial-by-joel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/7142923293541109941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/7142923293541109941'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2011/01/hg-init-mercurial-tutorial-by-joel.html' title='Hg Init: a Mercurial tutorial by Joel Spolsky'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-2751450961066619883</id><published>2011-01-15T21:01:00.000+05:30</published><updated>2011-01-15T21:08:32.458+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><category scheme="http://www.blogger.com/atom/ns#" term="source control"/><title type='text'>Git Immersion</title><content type='html'>&lt;div&gt;&quot;Git is a powerful, sophisticated system for distributed version control. Gaining an understanding of its features opens to developers a new and liberating approach to source code management. The surest path to mastering Git is to immerse oneself in its utilities and operations, to experience it first-hand.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://gitimmersion.com/&quot;&gt;Git Immersion&lt;/a&gt; is a guided tour that walks through the fundamentals of Git, inspired by the premise that to know a thing is to do it.&quot;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/2751450961066619883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2011/01/git-immersion-brought-to-you-by.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/2751450961066619883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/2751450961066619883'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2011/01/git-immersion-brought-to-you-by.html' title='Git Immersion'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-6676693302017551714</id><published>2010-12-13T18:22:00.000+05:30</published><updated>2010-12-13T18:22:23.755+05:30</updated><title type='text'>The Quentin Tarantino Guide to Creating Killer Content</title><content type='html'>&quot;If you want to be a great writer, you’ve got to own the story. Fiction or sales copy, know your story like nobody else and you will write words that no one else can touch.&quot;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.copyblogger.com/quentin-tarantino/&quot;&gt;The Quentin Tarantino Guide to Creating Killer Content&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/6676693302017551714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2010/12/quentin-tarantino-guide-to-creating.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/6676693302017551714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/6676693302017551714'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2010/12/quentin-tarantino-guide-to-creating.html' title='The Quentin Tarantino Guide to Creating Killer Content'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-5729772336988791575</id><published>2010-11-12T22:04:00.001+05:30</published><updated>2010-11-12T22:04:01.232+05:30</updated><title type='text'>Google Chrome blocks persistent javascript alerts</title><content type='html'>&lt;p&gt;Have you encountered a badly crafted/malicious webpage that shows javascript alerts and you just can&#39;t make them go away? Well, Google Chrome detects if a webpage is throwing up too many alerts and gives you an option to block them. Neat feature.&lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_twoaQMt-Slc/TN1sdRNysCI/AAAAAAAAAyM/VUE2JeuKULs/s1600-h/Capture%5B2%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;Capture&quot; border=&quot;0&quot; alt=&quot;Capture&quot; src=&quot;http://lh6.ggpht.com/_twoaQMt-Slc/TN1seM_Q1UI/AAAAAAAAAyQ/ryT0zB_4OgE/Capture_thumb.png?imgmax=800&quot; width=&quot;244&quot; height=&quot;154&quot;&gt;&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/5729772336988791575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2010/11/google-chrome-blocks-persistent.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/5729772336988791575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/5729772336988791575'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2010/11/google-chrome-blocks-persistent.html' title='Google Chrome blocks persistent javascript alerts'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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://lh6.ggpht.com/_twoaQMt-Slc/TN1seM_Q1UI/AAAAAAAAAyQ/ryT0zB_4OgE/s72-c/Capture_thumb.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-6581036607867195920</id><published>2010-11-03T21:54:00.001+05:30</published><updated>2010-11-03T21:54:43.087+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="trading"/><title type='text'>Trade what you see, not what you think</title><content type='html'>Nice video&lt;br /&gt;
&lt;br /&gt;
&lt;object width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/ktKNEGSqLB4?fs=1&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/ktKNEGSqLB4?fs=1&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/6581036607867195920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2010/11/trade-what-you-see-not-what-you-think.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/6581036607867195920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/6581036607867195920'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2010/11/trade-what-you-see-not-what-you-think.html' title='Trade what you see, not what you think'/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7564203053073127032.post-4354734115853765437</id><published>2010-10-22T08:02:00.000+05:30</published><updated>2010-10-22T08:02:11.977+05:30</updated><title type='text'></title><content type='html'>&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 17px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 17px;&quot;&gt;Value this time in your life kids, because this is the time in your life when you still have your choices, and it goes by so quickly. &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 17px;&quot;&gt;When you&#39;re a teenager you think you can do anything, and you do. Your twenties are a blur. Your thirties, you raise your family, you make a little money and you think to yourself, &quot;What happened to my twenties?&quot; Your forties, you grow a little pot belly you grow another chin. The music starts to get too loud and one of your old girlfriends from high school becomes a grandmother. Your fifties you have a minor surgery. You&#39;ll call it a procedure, but it&#39;s a surgery. Your sixties you have a major surgery, the music is still loud but it doesn&#39;t matter because you can&#39;t hear it anyway. Seventies, you and the wife retire to Fort Lauderdale, you start eating dinner at two, lunch around ten, breakfast the night before. And you spend most of your time wandering around malls looking for the ultimate in soft yogurt and muttering &quot;how come the kids don&#39;t call?&quot; By your eighties, you&#39;ve had a major stroke, and you end up babbling to some Jamaican nurse who your wife can&#39;t stand but who you call mama. &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 17px;&quot;&gt;Any questions?&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
- Mitch Robbins (City Slickers)&lt;br /&gt;
&lt;blockquote&gt;&amp;nbsp;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanatgersappa.blogspot.com/feeds/4354734115853765437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sanatgersappa.blogspot.com/2010/10/value-this-time-in-your-life-kids.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/4354734115853765437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7564203053073127032/posts/default/4354734115853765437'/><link rel='alternate' type='text/html' href='http://sanatgersappa.blogspot.com/2010/10/value-this-time-in-your-life-kids.html' title=''/><author><name>sanatgersappa</name><uri>http://www.blogger.com/profile/07259659941336332861</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><thr:total>0</thr:total></entry></feed>