<?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-3658737890059945344</id><updated>2012-02-16T01:53:56.158-08:00</updated><category term='Technology SearchEngine'/><category term='.NET VS2005 Tricks'/><category term='ASP.NET C# PageMethods'/><category term='.NET C# TextInfo'/><category term='Mac'/><category term='Browsers FF3.0'/><category term='.NET VS Tricks'/><category term='ASP.NET AJAX Modal Popup extender'/><category term='ASP.NET C#'/><category term='Google GMail Labs Features'/><category term='Humor'/><category term='iPhone Mac'/><category term='JavaScript'/><category term='AJAX.NET'/><title type='text'>Tech Reflexes</title><subtitle type='html'>Cognitive learning</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></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-3658737890059945344.post-5068397615183948657</id><published>2010-04-21T10:24:00.000-07:00</published><updated>2010-05-05T11:20:49.763-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET C# PageMethods'/><title type='text'>Passing object[] from a webmethod</title><content type='html'>A PageMethod returning a object[] will be the ugliest of solutions, you would say. Sometimes, you are forced to code in a not-so-elegant style. And here's one such implementation. If any of you think you can make it better, please leave a comment.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_9lhxuq-7mYw/S-GueZpn0aI/AAAAAAAAEFQ/S12uP7UU-lo/s1600/object.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 52px;" src="http://4.bp.blogspot.com/_9lhxuq-7mYw/S-GueZpn0aI/AAAAAAAAEFQ/S12uP7UU-lo/s400/object.PNG" alt="" id="BLOGGER_PHOTO_ID_5467843259909263778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another solution to this will be to wrap all these objects up into a class and have this as the return type.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;public class MyReturnType {&lt;br /&gt;    public ClassA A { get;set; }&lt;br /&gt;    public ClassB B { get;set; }&lt;br /&gt;    public ClassC C { get;set; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and return an instance of MyReturnType (or List&lt;MyReturnType&gt; for multiple values)&lt;br /&gt;&lt;br /&gt;Returning this composite MyReturnType object will be the ideal solution. But in my case, the elements of this class are known only at run time. Typically, this class will need to be build at run time. The easier alternate will be to &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public object[] GetObjects()&lt;br /&gt;{&lt;br /&gt;   ...&lt;br /&gt;   return new object[] { objA, objB, objC };&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-5068397615183948657?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/5068397615183948657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=5068397615183948657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5068397615183948657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5068397615183948657'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2010/04/passing-object-from-webmethod.html' title='Passing object[] from a webmethod'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_9lhxuq-7mYw/S-GueZpn0aI/AAAAAAAAEFQ/S12uP7UU-lo/s72-c/object.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-5419861877412619011</id><published>2010-04-13T08:48:00.000-07:00</published><updated>2010-05-05T10:36:37.481-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET VS Tricks'/><title type='text'>Tidy your HTML code on Visual Studio</title><content type='html'>I, so absolutely love this shortcut! (Next only to Ctrl + k,c)&lt;br /&gt;&lt;br /&gt;There's a way to tidy up your HTML source code view on your Visual Studio&lt;br /&gt;- Ctrl + k,d and Ctrl + k,f&lt;br /&gt;&lt;br /&gt;While Ctrl + k,d formats the whole page, Ctrl + k,f formats the selected area on the page&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-5419861877412619011?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/5419861877412619011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=5419861877412619011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5419861877412619011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5419861877412619011'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2010/04/tidy-your-html-code-on-visual-studio.html' title='Tidy your HTML code on Visual Studio'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-5474696548109918028</id><published>2010-04-07T07:37:00.000-07:00</published><updated>2010-04-07T08:57:19.280-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX.NET'/><title type='text'>Implementing ICallbackEventHandler</title><content type='html'>Asynchronous communication with the server is also made possible by implementing the ICallbackEventHandler interface (System.Web.UI.ICallbackEventHandler).  ICallbackEventHandler sends user defined elements back to the server to process and the output is return in the form of a string back to the client, thus enabling a partial postback without the UpdatePanel.&lt;br /&gt;&lt;br /&gt;These are the steps in implementing ICallbackEventHandler interface:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 153);"&gt;Inherit ICallbackEventHandler&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Inherit ICallbackEventHandler on the page or the user control where it needs to be implemented. The code for this will be&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;public partial class Contributions : System.Web.UI.UserControl, ICallbackEventHandler&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As a result, two functions needs to be implemented in the code&lt;br /&gt;&lt;ol&gt;&lt;li&gt;public void RaiseCallbackEvent(string eventArgument)&lt;/li&gt;&lt;li&gt;public string GetCallbackResult()&lt;/li&gt;&lt;/ol&gt;RaiseCallbackEvent() is automatically called when there is a Callback event. The GetCallbackResult() is called in sequence right after the RaiseCallbackEvent() is processed.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;public string GetCallbackResult()&lt;br /&gt;   {&lt;br /&gt;       return result;&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This method here just ejects HTML code into the page to set the server datetime.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt; public void RaiseCallbackEvent(string eventArgument)&lt;br /&gt;   {&lt;br /&gt;       result = "document.getElementById('txtPercentage').innerHTML = '" + DateTime.Now.ToLongTimeString() + "'";&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The method RaiseCallbackEvent() here, just passes the server datetime back to the client. This can typically be any server process and the result variable being set.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 153);"&gt;ASPX/ASCX page&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Below is the HTML for the usercontrol. The Callback, in this case will be initiated from a user control.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&lt;%@ Control Language="C#" AutoEventWireup="true" CodeFile="Contributions.ascx.cs" Inherits="Contributions" %&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="randomQuote"&gt;&lt;br /&gt;&lt;asp:literal runat="Server" id="lblQuote"&gt;&lt;br /&gt;&lt;/asp:literal&gt;&lt;/div&gt;&lt;br /&gt;&lt;label id="txtPercentage"&gt;&lt;/label&gt;&lt;br /&gt;&lt;input id="Button1" onclick="GetValue()" value="click" type="button"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;    function GetValue() {&lt;br /&gt;        CallBack();&lt;br /&gt;    }&lt;br /&gt;    function DisplayResults(arg, context) {&lt;br /&gt;        eval(arg);&lt;br /&gt;    }&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The above code will just create a CallbackEvent on onclick() event of the HTML button control.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 153);"&gt;Code File Wireup&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The code for the server side OnPageLoad() will be,&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;if (!IsPostBack)&lt;br /&gt;   {&lt;br /&gt;       string callback = Page.ClientScript.GetCallbackEventReference(this, "arg", "DisplayResults", "context");&lt;br /&gt;       string script = "function CallBack(arg,context){" + callback + ";}";&lt;br /&gt;       Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CB", script, true);&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;GetCallbackEventReference() obtains a reference to the client function that when invoked, initiates a client callback to the server.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;public string GetCallbackEventReference(&lt;br /&gt;	string target,&lt;br /&gt;	string argument,&lt;br /&gt;	string clientCallback,&lt;br /&gt;	string context,&lt;br /&gt;	string clientErrorCallback,&lt;br /&gt;	bool useAsync&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;target  &lt;/span&gt;- The server control that initiates the callback. The control 'must' implement the ICallbackEventHandler interface&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;argument &lt;/span&gt;- Argument that is passed from the client script to the server for processing&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;clientCallback &lt;/span&gt;- The client script method that needs to be called after the server callback is processed&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;context&lt;/span&gt; - Client script that is evaluated on the client before initiating a callback to the server&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;useAsyn - &lt;/span&gt;When &lt;span style="font-style: italic;"&gt;true&lt;/span&gt; initiates the call in the asynchronous fashion&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function CallBack(arg,context) - is the client side script that invokes the GetCallbackEventReference() with the required arguments.&lt;br /&gt;&lt;br /&gt;All this should set you going for your implementation of ICallbackEventHandler.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-5474696548109918028?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/5474696548109918028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=5474696548109918028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5474696548109918028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5474696548109918028'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2010/04/implementing-icallbackeventhandler.html' title='Implementing ICallbackEventHandler'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-5726061749428552094</id><published>2009-08-18T11:41:00.000-07:00</published><updated>2009-08-18T11:57:39.726-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Mac'/><title type='text'>Hello World - iPhone</title><content type='html'>I have always been intrigued by iPhone apps and this is a long pending (self-learning) post of a simple 'Hello World' program in iPhone. This blog post serves to let the user get familiar with the iPhone code environment.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#330099;"&gt;Creating a Project&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Download XCode along with IPhone's SDK from Apple's website.&lt;/li&gt;&lt;li&gt;Once installed and opened, click File -&gt; New Project&lt;/li&gt;&lt;li&gt;Pick the Application template under iPhone OS category&lt;/li&gt;&lt;li&gt;Select 'View-based application' and click Choose&lt;/li&gt;&lt;li&gt;At this point, it will ask for the Project name -&gt; Save&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Once, the Project file is created, it will display all the code files and resources associated with the project. There isn't much now but it is a fully functional application that of course, does nothing. Click on the 'Build &amp;amp; Go' to see the iPhone Simulator open up the application.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;XIB files are where the user interface behind the Mac and iPhone application are stored. Double clicking on the MainWindow.xib file will open up the Interface Builder app. This lets the user create the user interfaces. Once the IB loads, it displays a mock iPhone view. The users can select an array of objects (buttons, text boxes and the whole lot of it) from the Tools Library. If the Tools library is not automatically loaded, click Tools -&gt; Libary or (command - shift+command+L)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#330099;"&gt;&lt;b&gt;Interface design&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;On the Too&lt;img src="/img/blank.gif" alt="Numbered List" border="0" class="gl_list_num" /&gt;ls Library, make sure Object is selected. And then, in the search box start typing 'text'. &lt;/li&gt;&lt;li&gt;Select TextView and drag it on the mock iPhone area and place it. Double clicking, lets you change the text. Then type the infamous - "Hello World!!"&lt;/li&gt;&lt;li&gt;Close the Interface Builder and select 'Build &amp;amp; Go' on XCode window. &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's the simple 'Hello World!" app on iPhone.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I plan to explore more on iPhone and Objective C and plan to have series of posts. Looking forward to learning more!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-5726061749428552094?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/5726061749428552094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=5726061749428552094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5726061749428552094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5726061749428552094'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/08/hello-world-iphone.html' title='Hello World - iPhone'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-2565730702852954170</id><published>2009-07-30T09:05:00.000-07:00</published><updated>2009-07-30T09:31:28.679-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET C#'/><title type='text'>Mono for .Net on Mac</title><content type='html'>I am a .Net developer and with the new Mac, Mono has been inviting me for a long time now. With my baby's (long!) nap for an hour provided me with the opportunity to try out Mono and blog about it!&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;Why Mono?&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;1. A .Net developer since I learn to code - you know how addicted you can get to VS :)&lt;/div&gt;&lt;div&gt;2. A new Mac enthusiast&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;Steps to start trying out Mono&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;1. Get the installable from the &lt;a href="http://www.go-mono.com/mono-downloads/download.html"&gt;go-mono&lt;/a&gt; site.&lt;/div&gt;&lt;div&gt;2. Run the installer. Mono installs under /Library/Frameworks/Mono.Framework&lt;/div&gt;&lt;div&gt;3. Here comes the famous 'Hello World'!!&lt;/div&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;using System;&lt;br /&gt;public class Hello&lt;br /&gt;{&lt;br /&gt;static public void Main()&lt;br /&gt; {&lt;br /&gt;     Console.WriteLine("Hello World, Here I come");&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;div&gt;&lt;i&gt;Note: For those of us .Net developers that hadn't worked in a shell terminal for a long time now, here are some of the notes to freshen up your memory!&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;1. vi filename - opens the vi editor with the filename&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;2. to save the file - :w&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;3. to quit the editor - :q&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;4. obviously, to save and quit - :wq (although, you would have figured it by now!)&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;4. Compile the code with - 'gmacs hello.cs'&lt;/div&gt;&lt;div&gt;5. Execute the code with - 'mono hello.exe'&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There you go! Your first C# program on a Mac! Though simple, doesn't it thrill you?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#003300;"&gt;&lt;b&gt;Bang! Bang!!&lt;/b&gt;&lt;/span&gt; - The first time I compile the program - I got the error, &lt;/div&gt;&lt;div&gt;"`System.Console' does not contain a definition for `Writeline'". It took a full thirty seconds to spot the reason for the error - It should have been Write&lt;span class="Apple-style-span"  style="color:#990000;"&gt;L&lt;/span&gt;ine!! Darn, VS has us fully spoiled!&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-2565730702852954170?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/2565730702852954170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=2565730702852954170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/2565730702852954170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/2565730702852954170'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/07/mono-for-net-on-mac.html' title='Mono for .Net on Mac'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-3864716819758968738</id><published>2009-07-29T12:44:00.000-07:00</published><updated>2009-07-29T12:45:36.345-07:00</updated><title type='text'>Is C++ really dead?</title><content type='html'>Is it?? Read this discussion group &lt;a href="http://discuss.techinterview.org/default.asp?joel.3.3114.38"&gt;thread&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-3864716819758968738?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/3864716819758968738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=3864716819758968738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/3864716819758968738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/3864716819758968738'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/07/is-c-really-dead.html' title='Is C++ really dead?'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-2400489448463129669</id><published>2009-07-29T12:17:00.000-07:00</published><updated>2009-07-29T12:36:22.707-07:00</updated><title type='text'>Inline Vs. Code Behind</title><content type='html'>StackOverflow has this &lt;a href="http://stackoverflow.com/questions/1201418/asp-net-inline-vs-code-behind"&gt;discussion&lt;/a&gt; on some code being inline in the aspx page versus it getting into the code behind file. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, it made me start thinking. Thinking about it, I used to hate code getting into aspx pages with my colleagues. It led into code getting scattered and ended up losing the control of the code. Somehow, code behind makes it look more natural. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, in case of a gridview - some people get more code into code behind&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas, -webkit-fantasy;font-size:130%;"&gt;&lt;span class="Apple-style-span"  style="font-size:14px;"&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; color: #0000ff; background-color:#f5f5f5;"&gt;&lt;span style="color:#000000;"&gt;&lt;&lt;/span&gt;&lt;span style="color:#7d0000;"&gt;asp:Literal&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#f90000;"&gt;ID&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;"litExample"&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#f90000;"&gt;runat&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;"server"&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; color: #7d0000; background-color:#f5f5f5;"&gt;&lt;span style="color:#000000;"&gt;    &lt;/span&gt;&lt;span style="color:#f90000;"&gt;OnDataBinding&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;"&lt;/span&gt;litExample_DataBinding&lt;span style="color:#0000ff;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; color: #7d0000; background-color:#f5f5f5;"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; color: #7d0000; background-color:#f5f5f5;"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color:#f5f5f5;"&gt;&lt;span style="color:#00008f;"&gt;protected&lt;/span&gt; &lt;span style="color:#00008f;"&gt;void&lt;/span&gt; litExample_DataBinding(&lt;span style="color:#00008f;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#3191b1;"&gt;System&lt;/span&gt;.&lt;span style="color:#3191b1;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color:#f5f5f5;"&gt;{&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color:#f5f5f5;"&gt;    &lt;span style="color:#3191b1;"&gt;Literal&lt;/span&gt; lit = (&lt;span style="color:#3191b1;"&gt;Literal&lt;/span&gt;)(sender);&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color:#f5f5f5;"&gt;    lit.&lt;span style="color:#3191b1;"&gt;Text&lt;/span&gt; = &lt;span style="color:#00008f;"&gt;string&lt;/span&gt;.&lt;span style="color:#3191b1;"&gt;Format&lt;/span&gt;(&lt;span style="color:#7d0000;"&gt;"{1} - {2}"&lt;/span&gt;,&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color:#f5f5f5;"&gt;        &lt;span style="color:#3191b1;"&gt;Eval&lt;/span&gt;(&lt;span style="color:#7d0000;"&gt;"ExampleField"&lt;/span&gt;).&lt;span style="color:#3191b1;"&gt;ToString&lt;/span&gt;(),&lt;/p&gt; &lt;p color="#f5f5f5" style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-"&gt;        &lt;span style="color:#3191b1;"&gt;Eval&lt;/span&gt;(&lt;span style="color:#7d0000;"&gt;"ExampleField2"&lt;/span&gt;).&lt;span style="color:#3191b1;"&gt;ToString&lt;/span&gt;());&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color: #f5f5f5"&gt;}&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color: #f5f5f5"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color: #f5f5f5"&gt;There will be no performance difference on either type of the code. It's more to do with the best practices and to improve the readability of the code.&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color: #f5f5f5"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color: #f5f5f5"&gt;In this case, I like to keep the code in the aspx page as the code here is more declarative and design oriented.&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color: #f5f5f5"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px Consolas; background-color: #f5f5f5"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; border-collapse: collapse; line-height: 18px; "&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class="prettyprint" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(245, 245, 245); font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New'; overflow-x: auto; overflow-y: auto; width: auto; max-height: 600px; background-position: initial initial; "&gt;&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New'; background-position: initial initial; "&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: black; background-position: initial initial; "&gt;&lt;asp:Literal ID="litExample" runat="server"&lt;br /&gt;    Text='&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: black; background-position: initial initial; "&gt;&lt;%&lt;/span&gt;&lt;span class="com" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: gray; background-position: initial initial; "&gt;# Eval("ExampleField").ToString() &lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: black; background-position: initial initial; "&gt;%&gt;' /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  color: rgb(128, 128, 128); font-family:Consolas, fantasy;font-size:14px;"&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-2400489448463129669?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/2400489448463129669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=2400489448463129669' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/2400489448463129669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/2400489448463129669'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/07/inline-vs-code-behind.html' title='Inline Vs. Code Behind'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-4203746416295265547</id><published>2009-06-19T07:26:00.000-07:00</published><updated>2009-06-19T07:30:29.472-07:00</updated><title type='text'>Safari Quirks</title><content type='html'>Have you found that Safari opens all links in a new window a little weird. And you can not force Safari to open it in the same window (in a different tab!) - Read this &lt;a href="http://www.tuaw.com/2008/03/21/terminal-tip-safari-3-1-brings-true-one-window-mode/"&gt;blog post&lt;/a&gt; by &lt;span class="Apple-style-span" style="color: rgb(153, 153, 153); font-family: 'lucida grande'; font-size: 11px; line-height: 14px; "&gt;&lt;a href="http://www.tuaw.com/bloggers/nik-fletcher/" style="color: rgb(51, 153, 217); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;Nik Fletcher&lt;/a&gt; &lt;/span&gt;of TUAW to make Safari use the Uni-Window mode!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-4203746416295265547?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/4203746416295265547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=4203746416295265547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/4203746416295265547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/4203746416295265547'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/06/safari-quirks.html' title='Safari Quirks'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-3548102121003331414</id><published>2009-05-20T08:56:00.000-07:00</published><updated>2009-05-20T09:32:37.016-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technology SearchEngine'/><title type='text'>Wolfram Alpha: Get your answers</title><content type='html'>After being dubbed the &lt;a href="http://www.google.com/#hl=en&amp;amp;q=wolfram+alpha+next+google+killer&amp;amp;btnG=Google+Search&amp;amp;aq=f&amp;amp;oq=wolfram+alpha+next+google+killer&amp;amp;fp=EPM4eul9pXk"&gt;next Google killer&lt;/a&gt; - in one line, &lt;a href="http://www.wolframalpha.com/"&gt;Wolfram &lt;span style="font-style: italic;"&gt;Alpha&lt;/span&gt;&lt;/a&gt; is: It is certainly not a Google killer but will make Google really think about how it can improve presenting data.&lt;br /&gt;&lt;br /&gt;The introduction &lt;a href="http://www.wolframalpha.com/screencast/introducingwolframalpha.html"&gt;screencast &lt;/a&gt;left all of us waiting for the launch on 7pm CST on last Friday. The screencast had raised the expectations and scores of thousands were eagerly awaiting its launch. To top the expectations, Wolfram had announced that it will&lt;a href="http://www.justin.tv/wolframalpha"&gt; video cast&lt;/a&gt; the release, which was a first of the kind for a service with such big expectations. Though it started with a small glitch, the computational knowledge-base search engine did quite well.&lt;br /&gt;&lt;br /&gt;Wolfram Alpha is certainly impressive and has raised the bar with how the objective data can be computed in real time and facts presented in a neat format. I typed in some of the queries and Wolfram Alpha handled them exceptionally well:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www96.wolframalpha.com/input/?i=goog+msft"&gt;GOOG MSFT&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www96.wolframalpha.com/input/?i=%28a%2Bb%29%5E2"&gt;(a+b)^2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www96.wolframalpha.com/input/?i=coimbatore+India"&gt;Coimbatore India&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;I did have some no-showers/bloopers:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www96.wolframalpha.com/input/?i=first+president+of+india"&gt;first president of india&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www96.wolframalpha.com/input/?i=common+cold"&gt;common cold&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;The Verdict:&lt;/span&gt; Wolfram Alpha did amazingly well when given a mathematically corelated input or statistically inclined input. It still has to climb some mountains for &lt;span style="font-style: italic;"&gt;Natural Language Processing (NLP). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But given the fact that it is still &lt;span style="font-style: italic;"&gt;Alpha, &lt;/span&gt;Wolfram Alpha has a long way to go and has shown us all a new dimension. It may not be a immediate threat to Google, but will surely be one to Wikipedia.&lt;br /&gt;&lt;br /&gt;Kudos to the team at Wolfram Alpha for a new relevation!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 153, 0);"&gt;Twitter&lt;/span&gt;: I did see the real power of Twitter in action during the Wolfram release. On TweetDesk, I could get a consolidated view on what people were thinking about Wolfram Alpha instantly! Makes me more appreciative of Twitter!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-3548102121003331414?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/3548102121003331414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=3548102121003331414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/3548102121003331414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/3548102121003331414'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/05/wolfram-alpha-get-your-answers.html' title='Wolfram Alpha: Get your answers'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-4287821347299766584</id><published>2009-05-19T09:43:00.000-07:00</published><updated>2009-05-19T10:23:10.516-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET VS2005 Tricks'/><title type='text'>Speed up VS 2005</title><content type='html'>VS2005 is always thirsty for more memory. There are a few tricks that could save up some RAM for you.&lt;br /&gt;&lt;br /&gt;Speed up the launch of VS2005&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Disable the 'Start Page' - Tools-&gt;Options-&gt;Environment-&gt;Startup section&lt;/li&gt;&lt;li&gt;Disable Splash screeen - Properties-&gt;Add parameter /nosplash to the target&lt;/li&gt;&lt;li&gt;Close all unnecessary panels and tabs so that the IDE does not reload them on restart&lt;/li&gt;&lt;/ol&gt;More Options&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Turn off 'Track Changes' - Tools -&gt; Options -&gt; Text Editor&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Turn off 'Track Active Item' - Tools -&gt; Options -&gt; Projects &amp;amp; Solutions&lt;/li&gt;&lt;li&gt;Turn off 'Auto Populate Toolbox' - Tools -&gt; Options -&gt; Windows Form Designer&lt;/li&gt;&lt;/ol&gt;HDD speed matters. 7200 r.p.m is better than a 5400 r.p.m. Read &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/01/tip-trick-hard-drive-speed-and-visual-studio-performance.aspx"&gt;here &lt;/a&gt;to see why it's important.&lt;br /&gt;&lt;br /&gt;And of course, having more memory helps :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-4287821347299766584?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/4287821347299766584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=4287821347299766584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/4287821347299766584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/4287821347299766584'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/05/speed-up-vs-2005.html' title='Speed up VS 2005'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-5755143677569581802</id><published>2009-05-13T11:49:00.000-07:00</published><updated>2009-05-13T17:20:47.141-07:00</updated><title type='text'>Google Hosted JQuery</title><content type='html'>Roughly a year back, Google announced that it would host widely used open source JavaScript Libraries on their &lt;span style="font-style: italic;"&gt;Content Distribution Network&lt;/span&gt; - jQuery, Prototype, Script.aculo.us, MooTools to name a few. Google suggests the use of their Google AJAX API Loader's &lt;a href="http://code.google.com/apis/ajax/documentation/#GoogleLoad"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;google.load()&lt;/span&gt;&lt;/a&gt; method to gain application speed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;How to use in ASP.Net Application?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is how the JQuery library could be loaded using Google AJAX API Loader's google.load() method.&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;&lt;script type="text/javascript" src="http://www.google.com/jsapi"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;  google.load("jquery", "1");&lt;br /&gt;&lt;br /&gt;  google.setOnLoadCallback(function() {&lt;br /&gt;&lt;br /&gt;  alert("Welcome to Google Hosted JQuery!!");&lt;br /&gt;&lt;br /&gt;  });&lt;br /&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;There are certainly some benefits using Google's CDN&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;Caching&lt;br /&gt;Decreased Latency&lt;br /&gt;Convenience&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153); font-weight: bold;"&gt;Caching - Better speed&lt;/span&gt;&lt;br /&gt;The main advantage of using Google's CDN is they manage all the bug fixes, recent updates and provide a high speed access due to better caching, etc. &lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt; The simple idea behind this is speed - the user's browser does not have to download multiple copies of JS libraries from different public facing websites.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;Decreased latency&lt;/span&gt;&lt;br /&gt;Certainly, you could make use of Google's distributed servers to download the JS files from a server located physically close to you.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;Convenience&lt;/span&gt;&lt;br /&gt;Google takes out the pain of staying upto date with the source code, bug fixes, minifying and version changes.&lt;br /&gt;&lt;br /&gt;However, there are certain things that a developer needs to be aware of before taking the road of Google CDN.&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;What if Google goes down? Will your code be prepared to handle something like this. Well, if you will take care of it, you are all set!&lt;/li&gt;&lt;li&gt;There will be a performance speedup only when the user happens  to have those libraries loaded from some other site that uses google’s service&lt;/li&gt;&lt;/ol&gt;&lt;span style=""&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/3658737890059945344-5755143677569581802?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/5755143677569581802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=5755143677569581802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5755143677569581802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5755143677569581802'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/05/google-hosted-jquery.html' title='Google Hosted JQuery'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-6592965591593728782</id><published>2009-05-13T11:02:00.001-07:00</published><updated>2009-05-13T11:04:06.251-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Humor'/><title type='text'>A Good Programmer Cartoon</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_9lhxuq-7mYw/SgsLjGmdhLI/AAAAAAAACkk/HqsRZ5w6emM/s1600-h/simplicity.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 207px; height: 400px;" src="http://3.bp.blogspot.com/_9lhxuq-7mYw/SgsLjGmdhLI/AAAAAAAACkk/HqsRZ5w6emM/s400/simplicity.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5335370881245742258" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-6592965591593728782?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/6592965591593728782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=6592965591593728782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/6592965591593728782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/6592965591593728782'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/05/good-programmer-cartoon.html' title='A Good Programmer Cartoon'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_9lhxuq-7mYw/SgsLjGmdhLI/AAAAAAAACkk/HqsRZ5w6emM/s72-c/simplicity.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-206025761368063031</id><published>2009-04-28T12:12:00.000-07:00</published><updated>2009-04-28T13:07:08.938-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET C#'/><title type='text'>DateTime.Now Vs. System.Diagnostics.Stopwatch</title><content type='html'>Occasionally all of us, as programmers would like to see how fast or how slow a C# function can execute. I am sure, most of us must have used &lt;span style="font-style: italic;"&gt;DateTime.Now&lt;/span&gt; for the measurements. Roughly on these lines,&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;DateTime startTime = DateTime.Now;&lt;br /&gt;&lt;br /&gt;// Some Execution Process&lt;br /&gt;&lt;br /&gt;DateTime endTime = DateTime.Now;&lt;br /&gt;TimeSpan totalTimeTaken = endTime.Subtract(startTime);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, does &lt;span style="font-style: italic;"&gt;DateTime.No&lt;/span&gt;w accurately measure performance? No, it does not. DateTime.Now, according to &lt;a href="http://msdn.microsoft.com/en-us/library/system.datetime.now.aspx"&gt;MSDN&lt;/a&gt; has a resolution of ~16ms, which means it is not very precise.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153); font-weight: bold;"&gt;Environment.TickCount&lt;/span&gt;&lt;br /&gt;Another approach would to use system tickcount as kept by &lt;span style="font-style: italic;"&gt;Environment.TickCount&lt;/span&gt;. This keeps the number of milliseconds since the computer was started. Unfortunately it is stored as a signed int, so every 49 days it is actually counting backwards. We can compensate for this by just taking off the most siginificant bit.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153); font-weight: bold;"&gt;Stopwatch&lt;/span&gt;&lt;br /&gt;Another better approach is to use Stopwatch. System.Diagnostics offers Stopwatch that automatically checks for high precision timers. You can check if the Stopwatch is using high-precision timers by checking via &lt;span style="font-style: italic;"&gt;Stopwatch.IsHighResolution()&lt;/span&gt; method.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;Stopwatch swTimer = Stopwatch.StartNew();&lt;br /&gt;//Some execution process here&lt;br /&gt;foo()&lt;br /&gt;swTimer.Stop();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Watch for the difference in the code results&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;  {&lt;br /&gt;    DateTime  sStartTime, sEndTime;   &lt;br /&gt;    TimeSpan  tsTotalTimeTaken;&lt;br /&gt;       &lt;br /&gt;    sStartTime = DateTime.Now;&lt;br /&gt; for (long lCount = 0; lCount &lt; 100; lCount++)&lt;br /&gt;      {&lt;br /&gt;        Thread.Sleep(1);&lt;br /&gt;      }//for(int iCount=0; iCount&lt;100; iCount++)&lt;br /&gt;      &lt;br /&gt;      sEndTime = DateTime.Now;&lt;br /&gt;&lt;br /&gt;      Stopwatch swTimer = Stopwatch.StartNew();&lt;br /&gt;      &lt;br /&gt;      for (long lCount = 0; lCount &lt; 100; lCount++)&lt;br /&gt;      {&lt;br /&gt;        Thread.Sleep(1);&lt;br /&gt;      }//for(int iCount=0; iCount&lt;100; iCount++)      &lt;br /&gt;      &lt;br /&gt;      swTimer.Stop();&lt;br /&gt;      &lt;br /&gt;      tsTotalTimeTaken = sEndTime.Subtract(sStartTime);      &lt;br /&gt;&lt;br /&gt;      Response.Write("Elaspsed Time according to DateTime.Now(): " + tsTotalTimeTaken.Milliseconds + "&lt;br&gt;");&lt;br /&gt;      Response.Write("Elapsed Time according to StopWatch(): " + swTimer.Elapsed.Milliseconds);&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Output:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_9lhxuq-7mYw/SfdfwaUuuzI/AAAAAAAACi0/8ob3pcjSW_A/s1600-h/Stopwatch.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 124px;" src="http://1.bp.blogspot.com/_9lhxuq-7mYw/SfdfwaUuuzI/AAAAAAAACi0/8ob3pcjSW_A/s320/Stopwatch.PNG" alt="" id="BLOGGER_PHOTO_ID_5329833969320901426" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-206025761368063031?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/206025761368063031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=206025761368063031' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/206025761368063031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/206025761368063031'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/04/datetimenow-vs-systemdiagnosticsstopwat.html' title='DateTime.Now Vs. System.Diagnostics.Stopwatch'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_9lhxuq-7mYw/SfdfwaUuuzI/AAAAAAAACi0/8ob3pcjSW_A/s72-c/Stopwatch.PNG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-1627338888899736443</id><published>2009-04-03T13:45:00.000-07:00</published><updated>2009-04-03T15:22:13.886-07:00</updated><title type='text'>Wanna be Macbie</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_9lhxuq-7mYw/SdaKlCU15kI/AAAAAAAACdo/x8DnEAaDlBs/s1600-h/overview-hero20081014.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 166px;" src="http://2.bp.blogspot.com/_9lhxuq-7mYw/SdaKlCU15kI/AAAAAAAACdo/x8DnEAaDlBs/s320/overview-hero20081014.jpg" alt="" id="BLOGGER_PHOTO_ID_5320592378668901954" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(153, 51, 153); font-weight: bold;font-size:100%;" &gt;Mac Dream&lt;/span&gt;&lt;br /&gt;MacBook has been on my '&lt;span style="font-style: italic;"&gt;Desire List&lt;/span&gt;' for sometime now. Everytime I think of indulging myself with the sleek user interface that Apple offers, I push the idea out thinking that its going to be a difficult shift for a ASP.NET developer. Is it really that difficult?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);"&gt;ForeWord:&lt;/span&gt; This blog post comes out with no PC vs. Mac argument.This is just research on things needed for a ASP.NET developer treading into Mac waters.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;Questions Galore&lt;/span&gt;&lt;br /&gt;How can I compile C# code on Mac? Will I have to learn to write code on &lt;span style="font-style: italic;"&gt;Objective-C&lt;/span&gt;? Should I start using the &lt;span style="font-style: italic;"&gt;Cocoa Framework&lt;/span&gt; instead of the &lt;span style="font-style: italic;"&gt;.NET Framework&lt;/span&gt;? Will I still be able to use AJAX.NET on Mac? These are the questions that ring loud and clear in any .NET programmer's mind.&lt;br /&gt;&lt;br /&gt;I try to seek answers to these and wish for a Mac soon! :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;BootCamp&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.apple.com/macosx/features/bootcamp.html"&gt;BootCamp&lt;/a&gt; comes packaged with Mac OS X. This software assists users to install Windows XP and Windows Vista while leaving all the Mac data in place while it creates a separate partition on your drive for Windows. BootCamp even lets you start up the Mac using either of the operating systems.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;Parallels and VMWare&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.parallels.com/"&gt;Parallels&lt;/a&gt; and &lt;a href="http://www.vmware.com/products/fusion/"&gt;VMWare&lt;/a&gt; are virtualization softwares that help break down the wall between Mac and a PC. Both these products offer a seamless desktop environment between Mac OS X and PC applications.&lt;br /&gt;&lt;br /&gt;These virtualization softwares do come with certain performance penalties. See Jeff Atwood &lt;a href="http://www.codinghorror.com/blog/archives/000207.html"&gt;ponder problems&lt;/a&gt; and &lt;a href="http://www.codinghorror.com/blog/archives/000714.html"&gt;discuss solutions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.notebookreview.com/default.asp?newsID=2990&amp;amp;article=Apple+Bootcamp+versus+Parallels"&gt;Decide&lt;/a&gt; between Parallels/VMWare and BootCamp&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;&lt;br /&gt;Mono&lt;/span&gt;&lt;br /&gt;Mono is a open-source development initiative to develop an open source, UNIX version of Microsoft.NET development platform. Mono includes a CLI (Common Language Infrastructure) virtual machine, a class library that works on CLR and a compiler for C# language.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;&lt;/span&gt;Everything seems okay, but aren't we still missing something that .NET programmers cannot live without?? Yeah, the Visual Studio has got you hooked onto it - you will not know how much you love this tool until you start missing it! I see the Microsoft guys smiling :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_9lhxuq-7mYw/SdaKwyk1nGI/AAAAAAAACdw/R6_rlYhTLNo/s1600-h/ss-main-window.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 222px;" src="http://1.bp.blogspot.com/_9lhxuq-7mYw/SdaKwyk1nGI/AAAAAAAACdw/R6_rlYhTLNo/s320/ss-main-window.png" alt="" id="BLOGGER_PHOTO_ID_5320592580599454818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here comes &lt;a href="http://monodevelop.com/"&gt;MonoDevelop&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;.&lt;/span&gt; MonoDevelop is a IDE designed for C# and other .NET languages. Developed code can also be ported on unix machines. Take a look at &lt;a href="http://monodevelop.com/Screenshots"&gt;Screenshots for MonoDevelop&lt;/a&gt;, they are really promising.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;Mono and AJAX.NET?&lt;/span&gt;&lt;br /&gt;Microsoft's ASP.NET AJAX Control Toolkit works on Mono, and is open source (Ms-PL). That doesn't preclude the use of jQuery, though. There are actually several third party AJAX libraries and control toolkits that support Mono, and many are compatible or work in conjunction with ASP.NET AJAX.&lt;br /&gt;&lt;br /&gt;You .Net developers, ready for a Mac? :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-1627338888899736443?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/1627338888899736443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=1627338888899736443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/1627338888899736443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/1627338888899736443'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/04/wanna-be-macbie.html' title='Wanna be Macbie'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_9lhxuq-7mYw/SdaKlCU15kI/AAAAAAAACdo/x8DnEAaDlBs/s72-c/overview-hero20081014.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-435530057129266196</id><published>2009-03-26T16:13:00.001-07:00</published><updated>2009-03-26T18:53:01.573-07:00</updated><title type='text'>Twitter Buzz</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_9lhxuq-7mYw/ScwxchUYu8I/AAAAAAAACbI/EbW9urGQlBw/s1600-h/TwitterBranch.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 201px; height: 156px;" src="http://1.bp.blogspot.com/_9lhxuq-7mYw/ScwxchUYu8I/AAAAAAAACbI/EbW9urGQlBw/s400/TwitterBranch.jpg" alt="" id="BLOGGER_PHOTO_ID_5317679626067688386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;It's been a couple of weeks since I have said - &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;'I do'&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt; to Twitter and I have a couple of interesting observations to make.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153); font-weight: bold;"&gt;Twitter's sweet success&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;Twitter, with its infamous 140 word limit has carved a niche out for itself in micro-blogging arena. Twitter's growth has been so phenomenal that it has 750,000 user profiles with a whopping 1382% increase in user profiles since last year. Get started in to this world with its own '&lt;/span&gt;&lt;a style="color: rgb(51, 51, 51);" href="http://www.hanselman.com/blog/HowToTwitterFirstStepsAndATwitterGlossary.aspx"&gt;Twitter Glossary&lt;/a&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;'.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;&lt;span style="font-weight: bold;"&gt;Who's Tweeting&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;Adults between the ages of 35 and 49 comprise almost 42 percent of the site's audience - and about 62 percent of them are accessing the site from work. The average user hits Twitter.com about 14 times a month and spends about seven minutes on the site. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Twitter on the move&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;It could a simple "&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;What are you doing now?&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;". Now, you wonder who would want to know what you do in everyday life? Realistically speaking, will it be just random bragging of an unexceptional life. Rewind to early 2000's and one realizes that the same argument was held when '&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;Weblogs&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;' were still young in the internet space. Twitter is a platform for social communication. What you do with it depends on '&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;You&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;'. You could use it for simple '&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;I did this, I did that sorta stuff'&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt; or for something more useful.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;You end up following not just people, but their activities and lifestyle in general. Twitter is brevity at its best. It promotes communicating one's thoughts with concise and clear sentences. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;Twitter is the latest method of evoking quick answers to your questions. Try posting a question or a musing and you will be surprised to see answers. Twitter is the new age information travel where you follow others without being intrusive.&lt;br /&gt;&lt;br /&gt;Twitter creates a sense of virtual world where you have a lifestyle, friends and conversations. It creates the &lt;span style="font-style: italic;"&gt;Third World &lt;/span&gt;after Home and Work. It is a place where you go to when you are done with family, friends, work and everything else.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153); font-weight: bold;"&gt;Twitter bird feed&lt;/span&gt;&lt;br /&gt;The social networking platform is a free for all service right now. There were rumors that Twitter is going to start using advertising platform to start generating revenues. Now, Twitter has confirms that it will soon offer paid premium accounts to businesses.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153); font-weight: bold;"&gt;Time flies with Twitter&lt;/span&gt;&lt;br /&gt;Oh! Time does fly fast with Twitter. It leads you onto interesting Tweets, entertaining blog posts, more interesting Tweets and more entertaining stuff - and the world has endless of these. It easily can eat into your productive time. Use it well and it stays your best pal.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153); font-weight: bold;"&gt;Spams Ho!&lt;/span&gt;&lt;br /&gt;Where there is a means of communications there are spams and phishers. Watch out for them while you spend your time here.&lt;br /&gt;&lt;br /&gt;So the answer to - &lt;span style="font-style: italic;"&gt;To Tweet or Not To&lt;/span&gt; is - Use it well, or you could end up &lt;a href="http://thebrandbuilder.wordpress.com/2009/03/19/how-to-lose-your-job-in-140-characters-or-less/"&gt;losing your job in 140 characters or less&lt;/a&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/3658737890059945344-435530057129266196?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/435530057129266196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=435530057129266196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/435530057129266196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/435530057129266196'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/03/its-been-couple-of-weeks-since-i-have.html' title='Twitter Buzz'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_9lhxuq-7mYw/ScwxchUYu8I/AAAAAAAACbI/EbW9urGQlBw/s72-c/TwitterBranch.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-7010736396566324402</id><published>2009-03-10T10:51:00.000-07:00</published><updated>2009-03-10T11:01:50.299-07:00</updated><title type='text'>ToTweet Or Not to Tweet...</title><content type='html'>To Tweet or Not To Tweet - That's the question my friend....&lt;br /&gt;&lt;br /&gt;I am away from work on a maternity leave - will be quite long, a year actually. Gotta spend some time with the little one, right? Absolutely loving it....&lt;br /&gt;&lt;br /&gt;So, I am trying to be a regular at my blogging space exploring new things. This is one such expedition - I have always wanted to try out Twitter and see why everyone (on the blog space) has been using it. Is it one of those fads or is it here to stay? Is it a great networking tool that people claim it to be or is it just a 'time-gobbler' and 'productivity-hinder'? Should you really 'Tweet' or is it just a farce?&lt;br /&gt;&lt;br /&gt;Please stay by, while I explore and do check again later to see my views on Twitter :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-7010736396566324402?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/7010736396566324402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=7010736396566324402' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/7010736396566324402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/7010736396566324402'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/03/i-am-away-from-work-on-maternity-leave.html' title='ToTweet Or Not to Tweet...'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-5647267688849849260</id><published>2009-02-17T10:21:00.000-08:00</published><updated>2009-02-17T11:54:29.565-08:00</updated><title type='text'>Frustrating "Local Access Only" Problem - Vista Worries</title><content type='html'>Being the 'computer handyman' of the family, I was fiddling with my sister's relatively new notebook that has a Vista Home Basic Edition installed on it. After keeping her notebook, up-to-date with all the security patches, service packs and similar things - the weirdest thing (ok! not something totally weird, if you are used to working on a PC :)!) happened. The notebook lost all contact to the outside world. You got it right! - the notebook lost its wireless connection. I was getting a 'Local Access Only'.&lt;br /&gt;&lt;br /&gt;The notebook had Vista Home Basic Edition with SP1 installed. Googling, I realized that this was not an isolated issue but a prevalent problem among Vista users. This is a consolidated list of numerous recommended things I tried, before resolving the issue -&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Using Windows Diagnostics Mode to resolve the problem automatically. I received the message that the notebook was unable to acquire a new IP address and was asked to reset the router.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Reset the router and modem individially and reset them together.&lt;/li&gt;&lt;li&gt;Disabled DHCP and assigned a static IP to the notebook&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Connected the computer using a wired connection to the modem&lt;/li&gt;&lt;li&gt;Uninstalled and reinstalled the wireless adapters numerous times&lt;/li&gt;&lt;li&gt;Checked to see if the wireless adapters (NIC) had any more updates&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Was unable to connect in the safe mode with networking turned on&lt;/li&gt;&lt;li&gt;Turned the IPV6 off to see if that was the issue&lt;/li&gt;&lt;li&gt;Removed Symantec and AVG Anti Virus Software running in the system&lt;/li&gt;&lt;li&gt;Turned Windows Firewall off to make sure that was not holding back the connection.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Turned DHCP broadcast flag to ON in the Registry. Read more in this Microsoft &lt;a href="http://support.microsoft.com/kb/928233"&gt;KB Article&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Gateway 0.0.0.0 problem. Type 'route print' in the Command Window (Start-&gt;Run-&gt;Cmd-&gt;Enter). If you see a 0.0.0.0 entry against the Default Gateway, enter 'route delete 0.0.0.0' and then press Enter.&lt;/li&gt;&lt;/ol&gt;After all this, I was all set to 'Restore' the system to a prior date when the Wireless Connection was working perfectly fine - and surprisingly, it did the trick! Go to 'Start-&gt;Data backup and Recovery' and select the Restore Point when things were working perfectly ok.&lt;br /&gt;&lt;br /&gt;Its true that sometimes, the solution can lie just under your nose and you may overlook it :)&lt;br /&gt;&lt;br /&gt;Bottomline - The guess is that, Windows has some software updates that might cause this problem to arise. So, once you have the system restored - you should be able to reinstall the Microsoft updates one by one to get hold of the culprit. I will update this blog with the details once I can pinpoint the software update!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-5647267688849849260?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/5647267688849849260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=5647267688849849260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5647267688849849260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5647267688849849260'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2009/02/frustrating-local-access-only-problem.html' title='Frustrating &quot;Local Access Only&quot; Problem - Vista Worries'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-331284734594328896</id><published>2008-11-12T08:04:00.000-08:00</published><updated>2008-11-12T11:00:59.480-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET C#'/><title type='text'>String Vs. StringBuilder classes</title><content type='html'>One of the .Net performance efficiency tip that we, developers keep hearing from all quarters is to use StringBuilder over String concatenates.&lt;br /&gt;&lt;br /&gt;Now, lets see what actually happens behind the scenes. Are people right when they StringBuilder is better? Does it have a performance edge? If so, when?&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204); font-weight: bold;"&gt;Scenario 1:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;String Concatenation&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="c-sharp"&gt;String sStringHolder = "";&lt;br /&gt;Random rRandomize  = new Random(150);&lt;br /&gt;&lt;br /&gt;DateTime dtStartTime = System.DateTime.Now;&lt;br /&gt;for (int iCount = 0; iCount &lt; 10000; iCount++)&lt;br /&gt;{&lt;br /&gt; sStringHolder = sStringHolder + "1";&lt;br /&gt;}//for(int iCount=0; iCount&lt;1000; iCount++)&lt;br /&gt;DateTime dtEndTime = System.DateTime.Now;&lt;br /&gt;&lt;br /&gt;Trace.WriteLine("Time taken using the Concat operation &gt;&gt; 10000 Iterations: ");&lt;br /&gt;Trace.WriteLine(((TimeSpan)(dtEndTime - dtStartTime)).Milliseconds);&lt;br /&gt;&lt;br /&gt;dtStartTime = System.DateTime.Now;&lt;br /&gt;for (int iCount = 0; iCount &lt; 20000; iCount++)&lt;br /&gt;{&lt;br /&gt; sStringHolder = sStringHolder + "1";&lt;br /&gt;}//for(int iCount=0; iCount&lt;1000; iCount++)&lt;br /&gt;dtEndTime = System.DateTime.Now;&lt;br /&gt;&lt;br /&gt;Trace.WriteLine("Time taken using the Concat operation &gt;&gt; 20000 iterations: ");&lt;br /&gt;Trace.WriteLine(((TimeSpan)(dtEndTime - dtStartTime)).Milliseconds);&lt;br /&gt;&lt;/pre&gt;The first iteration (for 10000 loops) took 46 milliseconds while the second iteration where the loop count doubled (20000 loops) increased almost 9 times (375 milliseconds).&lt;br /&gt;&lt;br /&gt;So, what does really go on inside? Why are the results so drastically different?&lt;br /&gt;&lt;pre name="code" class="c-sharp"&gt;sStringHolder = sStringHolder + "1";&lt;br /&gt;&lt;/pre&gt;Strings are immutable, i.e., the value can not modified once it is created. So, in this case three instance of the String objects are created to accommodate the concatenation. When a concat is performed, the old sStringHolder is discarded and a new one created to hold the newly concatenated string. That is the reason why it becomes too expensive.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Scenario 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;StringBuilder Goodness&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="c-sharp"&gt;StringBuilder sbStringHolder = new StringBuilder(50);&lt;br /&gt;&lt;br /&gt;dtStartTime = System.DateTime.Now;&lt;br /&gt;for (int iCount = 0; iCount &lt; 50000; iCount++)&lt;br /&gt;{&lt;br /&gt; sbStringHolder.AppendFormat("{0}", "Hello");&lt;br /&gt;}//for(int iCount=0; iCount &lt; 1000; iCount++)&lt;br /&gt;dtEndTime = System.DateTime.Now;&lt;br /&gt;   &lt;br /&gt;Trace.WriteLine("Time taken using StringBuilder class:AppendFormat &gt;&gt; 50000 iterations: ");&lt;br /&gt;Trace.WriteLine(((TimeSpan)(dtEndTime - dtStartTime)).Milliseconds);&lt;br /&gt;&lt;/pre&gt;That was 15 milliseconds for a 50000 count iteration! StringBuilder certainly has an edge here.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_9lhxuq-7mYw/SRsiJeLx9oI/AAAAAAAABS8/cdeRGd4qdYs/s1600-h/TestResults.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 59px;" src="http://4.bp.blogspot.com/_9lhxuq-7mYw/SRsiJeLx9oI/AAAAAAAABS8/cdeRGd4qdYs/s400/TestResults.PNG" alt="" id="BLOGGER_PHOTO_ID_5267841735256569474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This advantage that StringBuilder has is due to the fact that the string allocation and copies does not have to be as frequent as a String Concatenate. That's from where the majority of the savings come from.  But if the StringBuilder has a buffer that's just right for the string that it holds, it will have to grow on every Append which is as good (or bad) as the string concatenate.&lt;br /&gt;&lt;br /&gt;Although, this cannot be taken as a rule of thumb that StringBuilder is always more efficient than a String concatenation - &lt;a href="http://blogs.msdn.com/ricom/archive/2003/12/02/40778.aspx" target="_blank"&gt;Rico Mariani&lt;/a&gt; explains the four different cases.&lt;br /&gt;&lt;br /&gt;Big string and small appends&lt;br /&gt;=&gt;It's substantially likely that appends will fit in the slop and so they're fast, this is the best case(buffer size becomes double the string when it no longer fits so on average the slop is half the current string length) (if there are lots of small appends to a big string you win the most using stringbuilder)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Big string and big appends:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;=&gt;While the string is comparable in size (or smaller) to the appends stringbuilder won't save you much, if this continues to the point where the appends are small compared to the accumlated string you're in the good case &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Small string big appends:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;=&gt; bad case, string builder will just slow you down until enough slop has built up to hold those appends, you move to "big string big appends" as you append and finally to "big string small appends" if/when the buffer becomes collossal&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Small string, small appends:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;=&gt; could be ok if you had a good idea how big your string was going to get and pre-allocated enough so that you have sufficient slop for the appends. You might be able to do better if you just concatenated all the small appends together in one operation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Otherwise put, if the operation that is to be performed is something like this:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;         x = f(x) + f(y) + f(z) + f(a)&lt;/span&gt; - String Concat is better&lt;br /&gt;&lt;br /&gt;If the operation will be something to this effect:&lt;br /&gt;      &lt;span style="font-style: italic;"&gt;x += f(x);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        x += f(y);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        x += f(z);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        x += f(a)&lt;/span&gt; - StringBuilder will suit better in this scenario&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-331284734594328896?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/331284734594328896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=331284734594328896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/331284734594328896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/331284734594328896'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2008/11/whats-up-with-string-and-stringbuilder.html' title='String Vs. StringBuilder classes'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_9lhxuq-7mYw/SRsiJeLx9oI/AAAAAAAABS8/cdeRGd4qdYs/s72-c/TestResults.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-1497032578844438399</id><published>2008-11-06T08:49:00.000-08:00</published><updated>2008-11-06T10:29:49.016-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET C#'/><title type='text'>The ?? Operator</title><content type='html'>Today was my first brush with the ?? operator and was pleasantly surprised by what it can do.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="CSharp"&gt;&lt;br /&gt;string sString1 = null;&lt;br /&gt;string sString2 = "Hi";&lt;br /&gt;string value = "";&lt;br /&gt;&lt;br /&gt;// We would normally it this way&lt;br /&gt;value = sString1 != null ? sString1 : sString2;&lt;br /&gt;&lt;br /&gt;// Using ?? operator also called as coalescing&lt;br /&gt;value = sString1 ?? sString2;&lt;br /&gt;&lt;br /&gt;// In effect, it could be string&lt;br /&gt;// val = a ?? b ?? c&lt;br /&gt;// - The first non-null value is assigned to val&lt;br /&gt;Response.Write(value);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Chaining ?? operator certainly makes it easier to perform a bunch of comparisons. When the ?? operator is chained, it assigns the value of the first non-null value.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-1497032578844438399?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/1497032578844438399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=1497032578844438399' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/1497032578844438399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/1497032578844438399'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2008/11/operator.html' title='The ?? Operator'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-7552798760941385519</id><published>2008-10-24T13:40:00.001-07:00</published><updated>2008-10-24T13:58:00.550-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Hourglass (Wait) cursor on page load</title><content type='html'>This is another pearl that was figured at work today. There are instances where we might want to turn the cursor into a hourglass symbolizing that the user needs to wait as the page is getting loaded. There are more than one way to achieve this. There are two that comes to my mind (please feel free to add more)&lt;br /&gt;&lt;br /&gt;1. Using AJAX - UpdateProgress Extender that displays a wait modal popup extender when the page is getting loaded and ready&lt;br /&gt;2. A simpler approach is to use JavaScript that does exactly this&lt;br /&gt;&lt;br /&gt;We are going to see the second approach at work -&lt;br /&gt;&lt;pre class="coloredcode"&gt;&lt;span style="font-size:130%;"&gt;function doWait()&lt;br /&gt;{&lt;br /&gt;document.body.style.cursor = 'wait';&lt;br /&gt;}&lt;br /&gt;&lt;&lt;/span&gt;&lt;span class="tag"  style="font-size:130%;"&gt;body&lt;/span&gt;&lt;span class="attr"  style="font-size:130%;"&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;onbeforeunload&lt;/span&gt;=&lt;/span&gt;&lt;span class="attrv"  style="font-size:130%;"&gt;"&lt;/span&gt;&lt;span style="font-size:130%;"&gt;doWait&lt;/span&gt;&lt;span class="attrv"  style="font-size:130%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;()&lt;/span&gt;;"&lt;/span&gt;&lt;span class="attr"  style="font-size:130%;"&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;onunload&lt;/span&gt;=&lt;/span&gt;&lt;span class="attrv"  style="font-size:130%;"&gt;"&lt;/span&gt;&lt;span style="font-size:130%;"&gt;doWait&lt;/span&gt;&lt;span class="attrv"  style="font-size:130%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;()&lt;/span&gt;;"&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&gt;&lt;/span&gt;&lt;span class="attr"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;Notice the events onbeforeunload() and onunload() events. The reason we use two events is that these events are browser dependent and so to behave well with different browsers, we do this!&lt;br /&gt;&lt;br /&gt;Both Mozilla FireFox and Internet Explorer implements onbeforeunload() DOM events.&lt;br /&gt;&lt;br /&gt;Another useful function of onbeforeunload() is to alert the user when he leaves the webpage. Read &lt;a href="http://tim.mackey.ie/HowToCancelAnOnbeforeunloadEvent.aspx"&gt;here &lt;/a&gt;to know more about this DOM event.&lt;br /&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-7552798760941385519?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/7552798760941385519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=7552798760941385519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/7552798760941385519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/7552798760941385519'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2008/10/blog-post.html' title='Hourglass (Wait) cursor on page load'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-1334309049753154118</id><published>2008-10-14T06:10:00.000-07:00</published><updated>2008-10-14T12:44:30.619-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET C# TextInfo'/><title type='text'>Capitializing first letter of every word</title><content type='html'>The ToTitleCase method in .NET is not a part of String class but of TextInfo class that resides in System.Globalization namespace. This method converts the first character of every word into upper case. Here's how to use it,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt;String &lt;/span&gt;sHelpText = "aN eXamPle tEXT";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;System.Globalization.&lt;span style="color: rgb(51, 102, 102);"&gt;CultureInfo &lt;/span&gt;oCInfo = System.Threading.Thread.CurrentThread.CurrentCulture;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;System.Globalization.TextInfo &lt;span style="color: rgb(51, 102, 102);"&gt;oTextInfo &lt;/span&gt;= oCInfo.TextInfo;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;return&lt;/span&gt;(oTextInfo.ToTitleCase(sHelpText.ToLower()));&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;      &lt;br /&gt;Note: The .ToLower() Method is used to explicitly convert the string into lower case. According to MSDN - the title casing converts the first character into upper case, except for a word that is upper case in entirety. Read more on this &lt;a href="http://msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase.aspx"&gt;here.&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-1334309049753154118?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/1334309049753154118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=1334309049753154118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/1334309049753154118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/1334309049753154118'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2008/10/capitializing-first-letter-of-every.html' title='Capitializing first letter of every word'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-6538833479095503206</id><published>2008-10-10T10:05:00.000-07:00</published><updated>2008-10-14T06:59:47.936-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Browsers FF3.0'/><title type='text'>Faster Firefox 3.0</title><content type='html'>While you were thinking about giving up FireFox due to its speed and memory bloats, Mozilla came out with 3.0 - a relatively faster successor.&lt;br /&gt;&lt;br /&gt;Now, is it possible to tweak FireFox 3.0's default settings and make it work at lightening speed? Here are some of FF 3.0 browser tweaks.&lt;br /&gt;&lt;br /&gt;For the uninitiated - you don't want to see all the gruesome details of application settings, but still want to experience the speed? Rush ahead to &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/9148"&gt;https://addons.mozilla.org/en-US/firefox/addon/9148&lt;/a&gt;, install the add-on. From my experience, there is a consistent 30-40% increase in the browser's rendering speed for the web pages. Go on! Try it.&lt;br /&gt;&lt;br /&gt;For those of you, who would like to know the nuts and bolts of everything - read on!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;HTTP&lt;/b&gt; is the application-layer protocol that web pages&lt;a id="KonaLink2" target="_top" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://howto.helpero.com/howto/Speed-Up-Firefox_31.html#"&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;color:#b00000;"   &gt;&lt;span class="kLink" style=";font-family:&amp;quot;;font-size:12;color:#b00000;"   &gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; are transferred with. In &lt;b&gt;HTTP 1.1&lt;/b&gt;, multiple requests can be sent before any responses are received. This is known as &lt;b&gt;pipelining&lt;/b&gt;. Pipelining reduces page loading times.&lt;br /&gt;&lt;br /&gt;1. Open FireFox&lt;br /&gt;2. Type about:config in the address bar and press Enter&lt;br /&gt;3. In the filter bar type &lt;b&gt;network.http.pipelining&lt;/b&gt;. Double-click to set it to &lt;span style="font-weight: bold;"&gt;true&lt;/span&gt;&lt;br /&gt;4. Return to the filter bar and type &lt;b&gt;network.http.pipelining.maxrequests&lt;/b&gt;. Double-click this option and set its value to 8.&lt;br /&gt;5. Go to the filter bar and type &lt;b&gt;network.http.proxy.pipelining&lt;/b&gt;. Once it opens double-click it to set it to &lt;b&gt;true&lt;/b&gt;.&lt;br /&gt;6. Right-click Preference Name and create a new Integer value. Enter &lt;b&gt;content.notify.backoffcount&lt;/b&gt; in the New integer value pop-up window and click &lt;b&gt;OK&lt;/b&gt;.&lt;br /&gt;7. Right-click Preference Name and create a new Boolean value. Enter &lt;b&gt;plugin.expose_full_path&lt;/b&gt; in the New boolean value pop-up window and click &lt;b&gt;OK&lt;/b&gt;.&lt;br /&gt;8. Right-click Preference Name and create a new Integer value. Enter &lt;b&gt;ui.submenuDelay&lt;/b&gt; in the New integer value pop-up window and click &lt;b&gt;OK&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;These all the common settings for everyone. Check out below for specifics:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_9lhxuq-7mYw/SO-XDTlt3tI/AAAAAAAABQE/7xsrChvLasI/s1600-h/FasterFF.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_9lhxuq-7mYw/SO-XDTlt3tI/AAAAAAAABQE/7xsrChvLasI/s400/FasterFF.PNG" alt="" id="BLOGGER_PHOTO_ID_5255585373218528978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Note: A faster computer means - &gt;513 MB Memory and 1.5 Ghz and a Faster Connection means - DSL/Cable (not dialup)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-6538833479095503206?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/6538833479095503206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=6538833479095503206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/6538833479095503206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/6538833479095503206'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2008/10/faster-firefox-30.html' title='Faster Firefox 3.0'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_9lhxuq-7mYw/SO-XDTlt3tI/AAAAAAAABQE/7xsrChvLasI/s72-c/FasterFF.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-877865694205237889</id><published>2008-09-25T11:38:00.000-07:00</published><updated>2008-09-25T12:00:58.058-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google GMail Labs Features'/><title type='text'>Forgotten Attachment Detector</title><content type='html'>For those few that are not aware of GMail Labs yet - GMail Labs is an experimental ground for trying out the new ideas and features from the Google team. These add-ons may or may not make it to the GMail feature list in future. Meanwhile, it is certainly worthwhile to try our hand at them.&lt;br /&gt;&lt;br /&gt;I was awed and pleasantly surprised by this new GMail Labs feature available. &lt;span class="jwjW1c"&gt;Forgotten Attachment Detector warns you about sending an email without attachments. According to &lt;/span&gt;Jonathan K, the author of this wonderful piece of code from Google Labs - Forgotten Attachment Detector prompts  you if you mention attaching a file, but forgot to do so.&lt;br /&gt;&lt;br /&gt;See the prompting feature in action!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_9lhxuq-7mYw/SNvf2Cqri4I/AAAAAAAAA_M/6IrjXtClnEw/s1600-h/untitled.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_9lhxuq-7mYw/SNvf2Cqri4I/AAAAAAAAA_M/6IrjXtClnEw/s400/untitled.PNG" alt="" id="BLOGGER_PHOTO_ID_5250035910152260482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is such a cool feature that it makes me think - how did we miss having this all along on an email client. &lt;span class="jwjW1c"&gt;Kudos to Jonathan and the team at Google labs! This add-on looks for the the word 'attach' or its derivatives in the email before sending it (somehow, it thinks 'attachments' is not one of those and does not prompt for the files to be attachments!!)&lt;br /&gt;&lt;br /&gt;If you have still not enabled this Labs feature, take a look at how to enable them&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_9lhxuq-7mYw/SNveX7f-yJI/AAAAAAAAA-8/eXFroqpwqkk/s1600-h/Google-Settings.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_9lhxuq-7mYw/SNveX7f-yJI/AAAAAAAAA-8/eXFroqpwqkk/s400/Google-Settings.PNG" alt="" id="BLOGGER_PHOTO_ID_5250034293320632466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_9lhxuq-7mYw/SNvdyQuGyQI/AAAAAAAAA-0/bQjF1KFjHp8/s1600-h/Google-Labs.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_9lhxuq-7mYw/SNvdyQuGyQI/AAAAAAAAA-0/bQjF1KFjHp8/s400/Google-Labs.PNG" alt="" id="BLOGGER_PHOTO_ID_5250033646181992706" border="0" /&gt;&lt;/a&gt;And then enable the Forgotten Attachment Detector - and voila, you are all set!&lt;br /&gt;&lt;br /&gt;&lt;span class="jwjW1c"&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/3658737890059945344-877865694205237889?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/877865694205237889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=877865694205237889' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/877865694205237889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/877865694205237889'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2008/09/forgotten-attachment-detector.html' title='Forgotten Attachment Detector'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_9lhxuq-7mYw/SNvf2Cqri4I/AAAAAAAAA_M/6IrjXtClnEw/s72-c/untitled.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-5362598488116397445</id><published>2008-09-23T13:35:00.000-07:00</published><updated>2008-09-23T14:11:25.017-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET AJAX Modal Popup extender'/><title type='text'>Modal Popup Extender and flicker issues</title><content type='html'>ModalPopup extender is a very convenient and easy tool for designing lightbox style modal popups.&lt;br /&gt;&lt;br /&gt;During development, I realized that the contents that go in the modal popup box appear for a split second when the page gets loaded. In repeated tries, I was actually able to grab a screen shot of the strange behaviour.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_9lhxuq-7mYw/SNlUTAR7YiI/AAAAAAAAA98/cOqKO7-_TBQ/s1600-h/WithFlicker.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_9lhxuq-7mYw/SNlUTAR7YiI/AAAAAAAAA98/cOqKO7-_TBQ/s320/WithFlicker.JPG" alt="" id="BLOGGER_PHOTO_ID_5249319526146466338" border="0" /&gt;&lt;/a&gt;Look at the contents below the button! They are a part of the modal popup contents. Pretty weird, huh?&lt;br /&gt;&lt;br /&gt;To get around this - simply set the popup panel's style to &lt;span style="font-style: italic;"&gt;display:none&lt;/span&gt;.&lt;span&gt;&lt;span class="tag"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_9lhxuq-7mYw/SNlbSM59wBI/AAAAAAAAA-c/3N2hXEprpuU/s1600-h/panel.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_9lhxuq-7mYw/SNlbSM59wBI/AAAAAAAAA-c/3N2hXEprpuU/s400/panel.JPG" alt="" id="BLOGGER_PHOTO_ID_5249327208937144338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And the modal popup extender code&lt;br /&gt;&lt;span&gt;&lt;span class="tag"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_9lhxuq-7mYw/SNlbBKSKxwI/AAAAAAAAA-U/Nvt7IxJdEDI/s1600-h/mde.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_9lhxuq-7mYw/SNlbBKSKxwI/AAAAAAAAA-U/Nvt7IxJdEDI/s400/mde.JPG" alt="" id="BLOGGER_PHOTO_ID_5249326916175578882" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-5362598488116397445?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/5362598488116397445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=5362598488116397445' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5362598488116397445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/5362598488116397445'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2008/09/modal-popup-extender-and-flicker-issues.html' title='Modal Popup Extender and flicker issues'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_9lhxuq-7mYw/SNlUTAR7YiI/AAAAAAAAA98/cOqKO7-_TBQ/s72-c/WithFlicker.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-9222056104660488265</id><published>2008-09-22T06:33:00.000-07:00</published><updated>2008-09-22T08:14:13.444-07:00</updated><title type='text'>Android - Google's 'Dream'</title><content type='html'>Android - another addition to the U.S smart phone industry. The smart phone market boils to two key players - Apple iPhone and it's competitor RIM Blackberry. The irony, however is that nobody even mentions Windows SmartPhones in that list (that has been in the market for quite a while).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_9lhxuq-7mYw/SNes8y3igzI/AAAAAAAAA90/o4ih0gG36ac/s1600-h/Android+Emulator+%284%29.preview.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_9lhxuq-7mYw/SNes8y3igzI/AAAAAAAAA90/o4ih0gG36ac/s320/Android+Emulator+%284%29.preview.png" alt="" id="BLOGGER_PHOTO_ID_5248854051170452274" border="0" /&gt;&lt;/a&gt;Android OS dubbed GPhone, is about to be launched on September 23, 2008 integrated into T-Mobile's HTC phone, and is called 'Dream'. This would definitely spark a fierce competition between Dream and iPhone during the Christmas period.&lt;br /&gt;&lt;br /&gt;Built on the Linux kernel, Android is a so-called &lt;span style="font-style: italic;"&gt;open platform&lt;/span&gt; where nobody is charged for using it on the phone or for building applications on the phone. Though iPhone has a similar set up for its users and developers where millions of iPhone applications have been downloaded - the catch is that, all applications will have to be available only through iTunes store.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold; color: rgb(102, 0, 204);"&gt;highlights &lt;/span&gt;of Android is guessed to be&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Mobile OS-Linux that will include a in-built browser, 2D and 3D graphics, SQLite DB, video and audio playback, GSM, Bluetooth, WiFi, 3G wireless, camera, compass, GPS - that's a standard, neat list&lt;/li&gt;&lt;li&gt;QWERTY keyboard based touch screen with haptic feedback (You can feel the bumps of keys and virtual games)&lt;/li&gt;&lt;li&gt; A complete Java based development environment with a plug-in to Eclipse.&lt;/li&gt;&lt;li&gt;Core applications built with OS - GMail, GDocs, Maps&lt;/li&gt;&lt;li&gt;The price tag is guessed to be around $199 to position itself with iPhone, and to be a direct compeititor. There are rumors that it would be $150 for a existing customer account upgrade.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;For an Android walk-through, click &lt;a href="http://www.mobilecrunch.com/2008/08/19/android-video-walk-through/"&gt;here&lt;/a&gt; and more screenshots &lt;a href="http://gizmodo.com/gadgets/android-screenshots/android-ui-screenshots-321708.php"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As always, an average customer knows what he wants to do with a phone: make and receive calls, send and receive text messages and access some basic online information. However, a couple of months into using iPhone, I can see the excessive dependence on information on the go - Maps, search for business in a locality, emails, messengers and increased productivity.&lt;br /&gt;&lt;br /&gt;This launch will be closely watched by a users and developers alike.  Unlike iPhone, the impact this launch will cause will not be effectively gauged right after the release - it will take sometime to sink into the minds of people as yet another smart phone.  This phone will certainly make its impact on the cost of the mobile and its applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3658737890059945344-9222056104660488265?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/9222056104660488265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=9222056104660488265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/9222056104660488265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/9222056104660488265'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2008/09/android-googles-dream.html' title='Android - Google&apos;s &apos;Dream&apos;'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_9lhxuq-7mYw/SNes8y3igzI/AAAAAAAAA90/o4ih0gG36ac/s72-c/Android+Emulator+%284%29.preview.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3658737890059945344.post-8925619894127464808</id><published>2008-09-09T12:26:00.000-07:00</published><updated>2008-09-10T12:09:38.603-07:00</updated><title type='text'>Google's Chrome</title><content type='html'>The first thing that catches the eye in Google Chrome is its &lt;span style="font-weight: bold;"&gt;minimalist &lt;/span&gt;design that gives the feeling of a light weight application. Chrome is built on the existing rendering engine &lt;a href="http://webkit.org/"&gt;Webkit&lt;/a&gt; - framework version of the engine used by Safari and Android.&lt;br /&gt;&lt;br /&gt;One thing that I find very interesting is the multi-process design of the application. The application resources are not shared between different tabs and so you will be able to isolate that particular website that eats memory. (Yikes! Now you can tell Youtube.com eats about 280MB of the 300MB browser load - Now that's something, isn't?)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 204);"&gt;Omnibox&lt;/span&gt;&lt;br /&gt;The address bar has in-built auto-suggest feature that helps users to get where they are going. Chrome uses Google Suggest to fetch the suggestions as the user starts to type. It allows access to bookmarks, history, search and much more from the same place. This feature is very similar to the one available in Firefox 3.0&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 204);"&gt;Downloads&lt;/span&gt;&lt;br /&gt;Downloading has become much more neat and non-intrusive - no more status bars or pop-up dialogues. This features is again very much similar to the the add-ons available for FF, the difference here is that it is built right into the browser.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_9lhxuq-7mYw/SMbffXh7uNI/AAAAAAAAAyU/0ulB5IQBa20/s1600-h/Downloads.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_9lhxuq-7mYw/SMbffXh7uNI/AAAAAAAAAyU/0ulB5IQBa20/s320/Downloads.bmp" alt="" id="BLOGGER_PHOTO_ID_5244124546104801490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204); font-weight: bold;"&gt;Performance&lt;/span&gt;&lt;br /&gt;The faster the website is rendered, better is the user experience and thus, better is the performance. Chrome takes advantage from its all new Javascript Engine V8 built from scratch by its Denmark team.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0); font-weight: bold;"&gt;Chrome for Developers&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&lt;br /&gt;DOM Inspector&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The HTML Document Object Model can be viewed in a neatly organized tree structure. This however, is not entirely new to the browser world - FF has it. Although, what's new is the CSS style description on the right.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_9lhxuq-7mYw/SMgSJKVd2oI/AAAAAAAAA6M/xYMCyTJvm8c/s1600-h/DOM.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_9lhxuq-7mYw/SMgSJKVd2oI/AAAAAAAAA6M/xYMCyTJvm8c/s400/DOM.JPG" alt="" id="BLOGGER_PHOTO_ID_5244461714675456642" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Chrome Inspector derives a lot of inspiration from FF's Firebug (a FF addon, available for IE also) . Chrome Inspector also has the pictorial resources view of the resources and their load time. This DOM Inspector is certainly a welcome start to inspect/edit the live DOM of any web document or XUL application.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_9lhxuq-7mYw/SMgSTnEYDbI/AAAAAAAAA6U/KWIN6kyKhMU/s1600-h/Resources.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_9lhxuq-7mYw/SMgSTnEYDbI/AAAAAAAAA6U/KWIN6kyKhMU/s400/Resources.JPG" alt="" id="BLOGGER_PHOTO_ID_5244461894187093426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 204);"&gt;JavaScript Console&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_9lhxuq-7mYw/SMgVIvHS4EI/AAAAAAAAA6k/frWfwdds3fw/s1600-h/JS-Console.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_9lhxuq-7mYw/SMgVIvHS4EI/AAAAAAAAA6k/frWfwdds3fw/s200/JS-Console.JPG" alt="" id="BLOGGER_PHOTO_ID_5244465005903142978" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;Another feature straight out of Firebug is JS Console. To view this console, right-click on the webpage &gt; Inspect Element; then click Show console at the bottom tag of the window.&lt;br /&gt;&lt;br /&gt;Chrome finally eases JS debugging by providing us with the much awaited auto-complete feature. This command line tool feature will be more handy when used with 'Breakpoint' debugging - something that is available in Firebug and missing in Chrome.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 204);"&gt;&lt;br /&gt;JS Debugger&lt;/span&gt;&lt;br /&gt;Chrome equips us with a command-line JS debugger. I looked around Google Chrome's FAQ for developers and could not find more information on how to use this. I am certain that some developers will surely find this tool powerful, but I am not in that league yet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 204);"&gt;Memory Usage&lt;/span&gt;&lt;br /&gt;Chrome has surely taken us by storm with this feature - a by-product of their multi-process architecture. Click &lt;span style="font-style: italic;"&gt;Developers &lt;/span&gt;on the &lt;span style="font-style: italic;"&gt;Control the current page&lt;/span&gt; icon &gt; Task Manager &gt; Stats for nerds - provides a prolific view of the open tabs and the  memory usage. Keep hitting F5 - Refresh to corner out webpages that are leaking memory. This information will certainly be useful for developers to identify memory leaks.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_9lhxuq-7mYw/SMgY6zr413I/AAAAAAAAA60/x1zsxwWtFVY/s1600-h/Memory.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_9lhxuq-7mYw/SMgY6zr413I/AAAAAAAAA60/x1zsxwWtFVY/s320/Memory.JPG" alt="" id="BLOGGER_PHOTO_ID_5244469164658710386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 204);"&gt;Easter Eggs!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Easter Eggs are hidden, intentional messages in a software or application. They are the most interesting finds when an application gets released! I think many of you would agree with me on this! Here are some of the Easter Eggs I found while looking around&lt;br /&gt;&lt;br /&gt;Try these at the Google Chrome's address bar and enjoy!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-style: italic; font-variant: normal; font-weight: bold; letter-spacing: normal; line-height: 23px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:Georgia;font-size:100%;"  &gt;about:internets&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-style: italic; font-variant: normal; font-weight: bold; letter-spacing: normal; line-height: 23px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:Georgia;font-size:100%;"  &gt;about:stats&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-style: italic; font-variant: normal; font-weight: bold; letter-spacing: normal; line-height: 23px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:Georgia;font-size:100%;"  &gt;about:memory&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-style: italic; font-variant: normal; font-weight: bold; letter-spacing: normal; line-height: 23px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:Georgia;font-size:100%;"  &gt;about:plugins&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-style: italic; font-variant: normal; font-weight: bold; letter-spacing: normal; line-height: 23px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:Georgia;font-size:100%;"  &gt;about:histograms&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-style: italic; font-variant: normal; font-weight: bold; letter-spacing: normal; line-height: 23px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:Georgia;font-size:100%;"  &gt;about:cache&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-style: italic; font-variant: normal; font-weight: bold; letter-spacing: normal; line-height: 23px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:Georgia;font-size:100%;"  &gt;about:dns&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-style: italic; font-variant: normal; font-weight: bold; letter-spacing: normal; line-height: 23px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:Georgia;font-size:100%;"  &gt;about:crash&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/3658737890059945344-8925619894127464808?l=reflexangle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reflexangle.blogspot.com/feeds/8925619894127464808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3658737890059945344&amp;postID=8925619894127464808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/8925619894127464808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3658737890059945344/posts/default/8925619894127464808'/><link rel='alternate' type='text/html' href='http://reflexangle.blogspot.com/2008/09/googles-chrome.html' title='Google&apos;s Chrome'/><author><name>Narmatha</name><uri>http://www.blogger.com/profile/00145096478647336150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_9lhxuq-7mYw/SMbffXh7uNI/AAAAAAAAAyU/0ulB5IQBa20/s72-c/Downloads.bmp' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
