<?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: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-8122201059116092067</id><updated>2011-07-31T15:38:58.083+05:30</updated><category term='Python'/><category term='Twitter'/><category term='design patterns'/><category term='research'/><category term='scalability'/><category term='CSS'/><category term='cloud computing'/><category term='cache'/><category term='REST'/><category term='security'/><category term='startup'/><category term='AJAX'/><category term='humour'/><category term='business models'/><category term='web services'/><category term='Java'/><category term='freeware'/><category term='TinyURL'/><category term='time management'/><category term='IDE'/><category term='networking'/><category term='ASP.NET'/><category term='HTML'/><category term='RoR'/><category term='project'/><category term='architecture'/><category term='JavaScript'/><category term='chess'/><category term='.NET'/><title type='text'>developerspeak</title><subtitle type='html'>Ashwin Phatak's blog on computer software and programming</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-3524804406758615974</id><published>2010-08-04T15:51:00.004+05:30</published><updated>2010-08-04T15:56:37.416+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><category scheme='http://www.blogger.com/atom/ns#' term='chess'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><title type='text'>Announcing Chessific</title><content type='html'>I'm very excited to announce the launch of our first product at APP2 Technologies: Chessific&lt;br /&gt;&lt;br /&gt;Chessific empowers chess players around the world with "fast", "deep" and "affordable" computer analysis. Think of it as "chess analysis meets cloud computing".&lt;br /&gt;&lt;br /&gt;Please visit the &lt;a href="http://www.chessific.com/"&gt;site&lt;/a&gt; to learn more!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-3524804406758615974?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.chessific.com/' title='Announcing Chessific'/><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/3524804406758615974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=3524804406758615974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/3524804406758615974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/3524804406758615974'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2010/08/announcing-chessific.html' title='Announcing Chessific'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-7885767602554011323</id><published>2010-07-03T11:06:00.003+05:30</published><updated>2010-07-03T11:13:32.174+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><title type='text'>A new beginning</title><content type='html'>Something I've dreamed of since childhood is happening... I'm starting my own software company. I always knew this is what I would eventually do. A quote to mark the occasion:&lt;br /&gt;&lt;br /&gt;"Its time to trust my instincts, close my eyes and leap" - &lt;span class="author-label"&gt;Stephen Schwartz&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-7885767602554011323?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/7885767602554011323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=7885767602554011323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/7885767602554011323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/7885767602554011323'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2010/07/new-beginning.html' title='A new beginning'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-6547671578846268473</id><published>2009-09-27T11:12:00.002+05:30</published><updated>2009-09-27T11:18:06.276+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='time management'/><title type='text'>Maker's schedule, Manager's schedule</title><content type='html'>This &lt;a href="http://www.paulgraham.com/makersschedule.html"&gt;article&lt;/a&gt; explains very nicely why I've always hated long meetings and in general disliked short meetings too. Now that I'm a manager also doing development/programming, it gets even more tricky.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-6547671578846268473?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.paulgraham.com/makersschedule.html' title='Maker&apos;s schedule, Manager&apos;s schedule'/><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/6547671578846268473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=6547671578846268473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6547671578846268473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6547671578846268473'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2009/09/makers-schedule-managers-schedule.html' title='Maker&apos;s schedule, Manager&apos;s schedule'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-6484210508010609969</id><published>2008-07-24T21:15:00.003+05:30</published><updated>2008-07-24T21:20:06.322+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Switched over to OpenDNS</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;DNS&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;lookups&lt;/span&gt; from my home network have been getting really slow lately, thanks to my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ISP&lt;/span&gt; (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;BSNL&lt;/span&gt;). Switched over to the &lt;a href="http://opendns.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;OpenDNS&lt;/span&gt;&lt;/a&gt; servers this morning and experienced an immediate increase in browsing speeds. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Firefox&lt;/span&gt; no longer just waits at "Looking up ....".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-6484210508010609969?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/6484210508010609969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=6484210508010609969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6484210508010609969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6484210508010609969'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/07/switched-over-to-opendns.html' title='Switched over to OpenDNS'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-6416031906160937663</id><published>2008-07-13T22:47:00.001+05:30</published><updated>2008-07-13T23:09:27.379+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='RoR'/><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><title type='text'>Using GEdit as a Rails IDE</title><content type='html'>The thing I look for the most in an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;IDE&lt;/span&gt; is speed. Over the past few months, been trying out different options for Rails development. Eclipse + &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;RadRails&lt;/span&gt; looked promising, but turned out to be quite slow. Then, shifted to using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;NetBeans&lt;/span&gt; 6.1, which turned out to be better than &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;RadRails&lt;/span&gt;, but not as fast as I needed it to be. My search finally led me to customizing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;GEdit&lt;/span&gt; (yes, believe me) and so far been quite happy using it. It &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;blazing&lt;/span&gt; fast (except the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;SnapOpen&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;plugin&lt;/span&gt;), and the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;plugins&lt;/span&gt; are pretty cool too. The integration with Rails itself is nothing great, but who needs that when you can cook up a bunch of shell scripts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lifehacker.com/software/linux-tip/give-gedit-the-power-of-textmate-321945.php"&gt;Linux Tip: Give &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;gedit&lt;/span&gt; the Power of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;TextMate&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://grigio.org/pimp_my_gedit_was_textmate_linux"&gt;Pimp my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Gedit&lt;/span&gt; (Was: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Textmate&lt;/span&gt; for Linux) | &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Grigio&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.thaumatocracy.com/textpad-for-linux"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Thaumatocracy&lt;/span&gt; » Post Topic » &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Textmate&lt;/span&gt; for Linux&lt;/a&gt;&lt;br /&gt;&lt;a href="http://live.gnome.org/Gedit/ToolLauncherPlugin"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Gedit&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;ToolLauncherPlugin&lt;/span&gt; - GNOME Live!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-6416031906160937663?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/6416031906160937663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=6416031906160937663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6416031906160937663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6416031906160937663'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/07/using-gedit-as-rails-ide.html' title='Using GEdit as a Rails IDE'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-3211064225151792180</id><published>2008-06-28T09:07:00.003+05:30</published><updated>2008-06-28T09:28:14.722+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='TinyURL'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='business models'/><title type='text'>How do they make money?</title><content type='html'>Every time I see a new Web 2.0 site, one of the first things that comes to my mind is "how do these guys make money?". Take TinyURL, for example. Or Twitter. Looks like many of these services follow the principle of "get big first, worry about business models later", or rely mostly on advertising revenue. Some related links:&lt;br /&gt;&lt;a href="http://blogs.zdnet.com/Berlind/?p=200"&gt;&lt;br /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.zdnet.com/Berlind/?p=200"&gt;TinyURL.com - The next YouTube?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.centernetworks.com/twitter-monetization-2?rfdid=1255074"&gt;Twitter's Monetization Conundrum&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-3211064225151792180?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/3211064225151792180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=3211064225151792180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/3211064225151792180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/3211064225151792180'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/06/how-do-they-make-money.html' title='How do they make money?'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-5874274163380440297</id><published>2008-06-18T21:52:00.007+05:30</published><updated>2008-06-18T22:20:06.844+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><title type='text'>pypeek - peeking at a particular line in a log file</title><content type='html'>Announcing &lt;a href="http://code.google.com/p/pypeek/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;pypeek&lt;/span&gt;&lt;/a&gt;, a pretty straightforward Python script to print out a given line in a log file, with lines of context. While it works fine standalone, it's meant to be used in conjunction with grep. When I search for something interesting in a log file, I usually also want to see lines around the matching line, e.g. when I grep for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;NullPointerException&lt;/span&gt;, I also want to see the nearby lines to understand the problem better.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Usage: peek filename line_number [no. of context lines]&lt;filename&gt;&lt;line&gt;&lt;filename&gt;&lt;line&gt; &lt;/line&gt;&lt;/filename&gt;&lt;/line&gt;&lt;/filename&gt;&lt;/p&gt;&lt;p&gt;grep &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;MyException&lt;/span&gt; -n big-file.log | cut -d":" -f1 | &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;xargs&lt;/span&gt; -n1 peek big-file.log&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;P.S.: Don't try it with very huge log files just yet. It's painfully slow. Planning to work on a memory mapped I/O version later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-5874274163380440297?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/pypeek/' title='pypeek - peeking at a particular line in a log file'/><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/5874274163380440297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=5874274163380440297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/5874274163380440297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/5874274163380440297'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/06/pypeek-peeking-at-particular-line-in.html' title='pypeek - peeking at a particular line in a log file'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-7961313973713474905</id><published>2008-06-07T11:46:00.006+05:30</published><updated>2008-06-07T12:59:13.195+05:30</updated><title type='text'>My top #3 interviewing tips</title><content type='html'>Over the course of my career, I've attended quite a few job interviews, and also conducted a huge number of interviews at my last job while we were building out the team for our unit at Hyderabad. Based on my experiences, here are the top three tips for interviewing candidates:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#1 : Respect the candidate&lt;/span&gt;&lt;br /&gt;Just because you are taking an interview doesn't mean you have the "upper hand", and can take liberties with how you interact. An arrogant interviewer creates a very poor and lasting impression about the entire company. Remember that the candidates are going to carry that impression for the rest of their careers. Even if they qualify, the best candidates are unlikely to join if they perceive that the work culture at the company is not good.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#2: Test the candidate in his/her area of expertise, not yours&lt;/span&gt;&lt;br /&gt;No matter how much kung-fu you know, chances are that the candidate knows more kung-fu in his or her own area of expertise. Good interviewers try to discover the strengths of the candidate and check if that matches with what the job needs. Insecure interviewers are more likely to keep the questions to their own area of expertise and get into technical arguments about who is right.&lt;br /&gt;&lt;br /&gt;To illustrate, here is how the interaction went at one of the interviews I attended about 3 years back with one of the largest IT consulting companies in the world:&lt;br /&gt;&lt;br /&gt;Interviewer: How good are you at JSP?&lt;br /&gt;Me: Never worked on it, but I have worked on several other Java technologies&lt;br /&gt;Interviewer: How do you rate yourselves on a scale of 1 to 10 in JSP?&lt;br /&gt;Me: Huh, maybe 0 or 1. I _haven't_ worked on JSP at all, you know.&lt;br /&gt;Interview: So I'm going to ask you a few questions on JSP now&lt;br /&gt;Me: Hello? Why don't you ask me about some of the other technologies that I _have_ worked on?&lt;br /&gt;Interviewer: Well, I don't have any knowledge about those technologies, so we'll stick to JSP&lt;br /&gt;&lt;br /&gt;Stupid, isn't it? I was then interviewed by several other folks, and was selected. Needless to say, I didn't join.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#3: Keep the interview/selection process short&lt;/span&gt;&lt;br /&gt;Any interview/selection process lasting more than a few hours is suspect. Sure, it can take much longer to actually compare different candidates and decide which ones to make an offer to, but all that can and should be done after the candidate has left. If you can't decide within a couple of technical interviews if the candidate is good enough, chances are that your selection process is faulty or that the interview panel is not good enough.&lt;br /&gt;&lt;br /&gt;After telling a candidate your company believes in quick work and fast decision making, having him/her attend 5 technical and 3 HR rounds spread over 2 days is just not on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-7961313973713474905?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/7961313973713474905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=7961313973713474905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/7961313973713474905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/7961313973713474905'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/06/my-top-3-interviewing-tips.html' title='My top #3 interviewing tips'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-2476875833841431672</id><published>2008-06-05T23:35:00.002+05:30</published><updated>2008-06-05T23:41:22.142+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='scalability'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><title type='text'>Twitter status</title><content type='html'>After some very public scalability problems, Twitter finally decides that it's best to keep the &lt;a href="http://status.twitter.com/"&gt;customer informed&lt;/a&gt;. Wonder how they are serving the status feed/blog, but I bet they're not using the Twitter service itself. The last thing they need is for the status service to go down ;-)&lt;br /&gt;&lt;br /&gt;Ah, it's there right on the page - they are using &lt;a href="http://www.tumblr.com/"&gt;Tumblr&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-2476875833841431672?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/2476875833841431672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=2476875833841431672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/2476875833841431672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/2476875833841431672'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/06/twitter-status.html' title='Twitter status'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-3992085944673391666</id><published>2008-06-05T08:41:00.002+05:30</published><updated>2008-06-05T08:43:45.855+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><title type='text'>Microsoft gives .NET a distributed cache</title><content type='html'>Think of it as memcached for &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B24C3708-EEFF-4055-A867-19B5851E7CD2&amp;amp;displaylang=en"&gt;.NET&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Related blog post here: http://simpable.com/code/velocity/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-3992085944673391666?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/3992085944673391666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=3992085944673391666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/3992085944673391666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/3992085944673391666'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/06/microsoft-gives-net-distributed-cache.html' title='Microsoft gives .NET a distributed cache'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-4624138155665590750</id><published>2008-06-01T12:59:00.002+05:30</published><updated>2008-06-01T13:17:15.362+05:30</updated><title type='text'>Expanding technical knowledge</title><content type='html'>It's important nowadays for software developers to be comfortable with as large a number of technologies as possible. Having knowledge of just one programming knowledge/technology can be very limiting. I'm not talking about job prospects, but about having a big picture understanding of what you are working on.&lt;br /&gt;&lt;br /&gt;Very rarely does a software application or product use just one technology these days. To illustrate, take the example of any typical web application. At the very least, it would involve some of the following, based on which technology you are using:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HTML&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;CSS&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Javascript&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;JSP&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Django&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;RoR&lt;/span&gt;/ASP.NET&lt;/li&gt;&lt;li&gt;Tomcat/Apache/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;IIS&lt;/span&gt;/Mongrel&lt;/li&gt;&lt;li&gt;Windows/Linux&lt;/li&gt;&lt;li&gt;Oracle/MySQL/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Sqlite&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Given the large list above, it's really unimaginable that a "only Java" or "only &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;CSS&lt;/span&gt;" developer would have more than a trivial technical understanding of the application he or she is working on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-4624138155665590750?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/4624138155665590750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=4624138155665590750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/4624138155665590750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/4624138155665590750'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/06/expanding-technical-knowledge.html' title='Expanding technical knowledge'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-8515460687695399095</id><published>2008-04-11T00:20:00.005+05:30</published><updated>2008-04-11T00:31:19.111+05:30</updated><title type='text'>Joined a startup</title><content type='html'>After spending more than 5 1/2 years at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;BigITCompany&lt;/span&gt;, I felt the need to move on and take in the experience of working at a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;startup&lt;/span&gt;. Primary motivations were taking on more ownership of product development, working with a small but smart team and also learning how &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;startups&lt;/span&gt; work, since I hope to have my own company some day.&lt;br /&gt;&lt;br /&gt;It's just been over two weeks at the new company, and so far things have worked out great. While my experience at my previous company was also very good, I now believe everyone should work in a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;startup&lt;/span&gt; at least once!&lt;br /&gt;&lt;br /&gt;My advice to folks considering a switch from a big IT organization to a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;startup&lt;/span&gt;? Just do it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-8515460687695399095?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/8515460687695399095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=8515460687695399095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/8515460687695399095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/8515460687695399095'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/04/joined-startup.html' title='Joined a startup'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-4667424176777949682</id><published>2008-02-17T18:57:00.002+05:30</published><updated>2008-02-17T20:51:34.141+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><title type='text'>Announcing twittershell</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_i0oMlFVIAK8/R7hQ5qHzxmI/AAAAAAAACT4/UI5wu2GDLFQ/s1600-h/twsh.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_i0oMlFVIAK8/R7hQ5qHzxmI/AAAAAAAACT4/UI5wu2GDLFQ/s400/twsh.gif" alt="" id="BLOGGER_PHOTO_ID_5167969523897452130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Check out &lt;a href="http://code.google.com/p/twittershell/"&gt;twittershell&lt;/a&gt;, the shell-like interface I've created for Twitter. Works best on UNIX/Linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-4667424176777949682?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/4667424176777949682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=4667424176777949682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/4667424176777949682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/4667424176777949682'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/02/announcing-twittershell.html' title='Announcing twittershell'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_i0oMlFVIAK8/R7hQ5qHzxmI/AAAAAAAACT4/UI5wu2GDLFQ/s72-c/twsh.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-6096202892966887872</id><published>2008-01-29T15:51:00.001+05:30</published><updated>2008-01-29T15:51:54.161+05:30</updated><title type='text'>How enterprises use functional languages, and why they don’t</title><content type='html'>&lt;div&gt;Research Paper: &lt;a href="http://homepages.inf.ed.ac.uk/wadler/papers/how-and-why/how-and-why.pdf"&gt;http://homepages.inf.ed.ac.uk/wadler/papers/how-and-why/how-and-why.pdf&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-6096202892966887872?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/6096202892966887872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=6096202892966887872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6096202892966887872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6096202892966887872'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/01/how-enterprises-use-functional.html' title='How enterprises use functional languages, and why they don’t'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-6566235303625579444</id><published>2008-01-29T15:14:00.001+05:30</published><updated>2008-01-29T15:21:00.278+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Restricting access to AJAX Services</title><content type='html'>&lt;div class="gmail_quote"&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/J2EE/usingapikeys/" target="_blank"&gt;Restricting Access to AJAX Services&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-6566235303625579444?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/6566235303625579444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=6566235303625579444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6566235303625579444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6566235303625579444'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2008/01/restricting-access-to-ajax-services.html' title='Restricting access to AJAX Services'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-5664112863438371823</id><published>2007-12-20T17:41:00.000+05:30</published><updated>2007-12-20T17:45:06.337+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>AJAX activity indicators</title><content type='html'>Need some nice activity indicators for your AJAX applications? Try &lt;a href="http://www.napyfab.com/ajax-indicators/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-5664112863438371823?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/5664112863438371823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=5664112863438371823' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/5664112863438371823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/5664112863438371823'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2007/12/ajax-activity-indicators.html' title='AJAX activity indicators'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-2261817833302595864</id><published>2007-11-23T19:22:00.000+05:30</published><updated>2007-11-23T19:27:50.275+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='design patterns'/><title type='text'>Resign Patterns - Ailments of Unsuitable Project-Disoriented Software</title><content type='html'>This is a &lt;a href="http://www.lsd.ic.unicamp.br/%7Eoliva/fun/prog/resign-patterns"&gt;hilarious&lt;/a&gt; take on the design patterns book by the Gang of Four. While on the subject, also check out these &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=46282"&gt;broken&lt;/a&gt; but commonly used development methodologies. Don't miss them!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-2261817833302595864?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.lsd.ic.unicamp.br/~oliva/fun/prog/resign-patterns' title='Resign Patterns - Ailments of Unsuitable Project-Disoriented Software'/><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/2261817833302595864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=2261817833302595864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/2261817833302595864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/2261817833302595864'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2007/11/resign-patterns-ailments-of-unsuitable.html' title='Resign Patterns - Ailments of Unsuitable Project-Disoriented Software'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-5681950600127273908</id><published>2007-11-23T19:09:00.000+05:30</published><updated>2007-11-23T19:14:24.740+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>The Architecture Journal</title><content type='html'>Sign up &lt;a href="http://msdn2.microsoft.com/en-us/arcjournal/default.aspx"&gt;here&lt;/a&gt; to receive a free print subscription of The Architecture Journal! Somehow, reading this kind of technical stuff on paper feels much better than reading a PDF.&lt;br /&gt;&lt;br /&gt;"The Architecture Journal is an independent platform for free thinkers and practitioners of IT architecture. New editions are issued quarterly with articles designed to offer perspective, share knowledge, and help you learn the discipline and pursue the art of IT architecture. The Architecture Journal reaches over 53,000 subscribers worldwide."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-5681950600127273908?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://msdn2.microsoft.com/en-us/arcjournal/default.aspx' title='The Architecture Journal'/><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/5681950600127273908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=5681950600127273908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/5681950600127273908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/5681950600127273908'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2007/11/architecture-journal.html' title='The Architecture Journal'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-5386808431821792271</id><published>2007-11-23T18:51:00.001+05:30</published><updated>2007-11-23T18:55:07.900+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Web application development references</title><content type='html'>If you are developing applications for the web, keep these nice links bookmarked for reference:&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/default.asp"&gt;HTML 4.01 / &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XHTML&lt;/span&gt; 1.0 Reference&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.w3schools.com/css/css_reference.asp"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CSS&lt;/span&gt;2 Reference&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.w3schools.com/jsref/default.asp"&gt;JavaScript Reference&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-5386808431821792271?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/5386808431821792271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=5386808431821792271' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/5386808431821792271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/5386808431821792271'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2007/11/web-application-development-references.html' title='Web application development references'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-6210533653425767735</id><published>2007-11-22T21:36:00.000+05:30</published><updated>2007-11-23T18:59:35.587+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Distributing Python applications as Windows executables</title><content type='html'>It's possible to convert Python scripts into executable Windows programs using a utility called &lt;a href="http://www.py2exe.org/"&gt;py2exe&lt;/a&gt;. The great thing about the executable produced is that it does not require Python to be installed on the target machine to run.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-6210533653425767735?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.py2exe.org/' title='Distributing Python applications as Windows executables'/><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/6210533653425767735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=6210533653425767735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6210533653425767735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/6210533653425767735'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2007/11/distributing-python-applications-as.html' title='Distributing Python applications as Windows executables'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-2657758599316382890</id><published>2007-11-22T19:50:00.000+05:30</published><updated>2007-11-22T21:49:30.125+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>The REST architectural style</title><content type='html'>I've been reading more about the REST architectural style for the last couple of days. Here are are few references which explain the topic pretty well:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xfront.com/REST-Web-Services.html"&gt;Building Web Services the REST Way&lt;/a&gt;&lt;br /&gt;&lt;a href="http://rest.blueoxen.net/cgi-bin/wiki.pl?FrontPage"&gt;RESTWiki&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.xml.com/pub/a/2004/12/01/restful-web.html"&gt;How to create a REST protocol&lt;/a&gt;&lt;br /&gt;&lt;a href="http://207.22.26.166/bytecols/2001-08-15.html"&gt;The power of the URL-line&lt;/a&gt;&lt;br /&gt;&lt;a href="http://rest.blueoxen.net/cgi-bin/wiki.pl?FrontPage"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-2657758599316382890?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/2657758599316382890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=2657758599316382890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/2657758599316382890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/2657758599316382890'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2007/11/rest-architectural-style.html' title='The REST architectural style'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-4169192474616246691</id><published>2007-11-16T23:30:00.001+05:30</published><updated>2007-11-16T23:35:11.615+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><title type='text'>Functional programming comes to the .NET Framework</title><content type='html'>Microsoft research is working on &lt;a href="http://research.microsoft.com/fsharp/about.aspx"&gt;F#&lt;/a&gt;, which is a typed functional programming language for the .NET framework. It combines the succinctness,  expressivity, and compositionality of typed functional programming with the  runtime support, libraries, interoperability, tools and object model of .NET.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-4169192474616246691?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/4169192474616246691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=4169192474616246691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/4169192474616246691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/4169192474616246691'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2007/11/functional-programming-comes-to-net.html' title='Functional programming comes to the .NET Framework'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-5486671013612873205</id><published>2007-11-14T17:39:00.000+05:30</published><updated>2007-11-14T18:11:17.682+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Lessons Learned from Five Years of Building More Secure Software</title><content type='html'>"&lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/11/lessons/default.aspx"&gt;Security&lt;/a&gt; is an arms race. To stay ahead and anticipate the attackers, we the defenders must learn from our mistakes and create better ways to secure users from being compromised."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-5486671013612873205?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://msdn.microsoft.com/msdnmag/issues/07/11/lessons/default.aspx' title='Lessons Learned from Five Years of Building More Secure Software'/><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/5486671013612873205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=5486671013612873205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/5486671013612873205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/5486671013612873205'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2007/11/lessons-learned-from-five-years-of.html' title='Lessons Learned from Five Years of Building More Secure Software'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-2829883631982605604</id><published>2007-11-13T23:12:00.000+05:30</published><updated>2007-11-14T14:05:19.394+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><title type='text'>Free security software for your PC</title><content type='html'>Keep your computer safe from viruses and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;spyware&lt;/span&gt; and strengthen it against attacks using the following free software.&lt;br /&gt;&lt;br /&gt;Anti-Virus: &lt;a href="http://free.grisoft.com/doc/2/us/frt/0"&gt;AVG Anti-Virus Free Edition&lt;/a&gt;&lt;br /&gt;Anti-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Spyware&lt;/span&gt;: &lt;a href="http://free.grisoft.com/doc/download-free-anti-spyware/us/frt/0"&gt;AVG Anti-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Spyware&lt;/span&gt; Free Edition&lt;/a&gt;&lt;br /&gt;Anti-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Rootkit&lt;/span&gt;: &lt;a href="http://free.grisoft.com/doc/download-free-anti-rootkit/us/frt/0"&gt;AVG Anti-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Rootkit&lt;/span&gt; Free Edition&lt;/a&gt;&lt;br /&gt;Personal Firewall: &lt;a href="http://www.personalfirewall.comodo.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Comodo&lt;/span&gt; Free Firewall&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-2829883631982605604?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/2829883631982605604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=2829883631982605604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/2829883631982605604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/2829883631982605604'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2007/11/free-security-software-for-your-pc.html' title='Free security software for your PC'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-2426981732333656706</id><published>2007-11-13T23:01:00.000+05:30</published><updated>2007-11-13T23:10:47.242+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>AJAX toolkits</title><content type='html'>AJAX toolkits simplify creating AJAX based web applications. Writing JavaScript by hand is time consuming and error prone. Instead, use these toolkits which provide a rich set of AJAX controls and take care of issues like browser compatibility.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeplex.com/AtlasControlToolkit"&gt;ASP.NET AJAX Control Toolkit&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/webtoolkit/"&gt;Google Web Toolkit&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-2426981732333656706?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/2426981732333656706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=2426981732333656706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/2426981732333656706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/2426981732333656706'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2007/11/ajax-toolkits.html' title='AJAX toolkits'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8122201059116092067.post-4376815958313044170</id><published>2007-11-13T22:26:00.000+05:30</published><updated>2007-11-13T22:28:40.736+05:30</updated><title type='text'>Welcome!</title><content type='html'>Welcome to my blog on computer software and programming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8122201059116092067-4376815958313044170?l=developerspeak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://developerspeak.blogspot.com/feeds/4376815958313044170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8122201059116092067&amp;postID=4376815958313044170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/4376815958313044170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8122201059116092067/posts/default/4376815958313044170'/><link rel='alternate' type='text/html' href='http://developerspeak.blogspot.com/2007/11/welcome.html' title='Welcome!'/><author><name>Ashwin Phatak</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_i0oMlFVIAK8/RznpY0FcVqI/AAAAAAAAA9M/E3FnL-3rn_U/s200/ashwin.jpg'/></author><thr:total>0</thr:total></entry></feed>
