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

<channel>
	<title>Senthil Rajasekharan&#039;s Personal Blog - Meeting of Minds &#187; Web Development</title>
	<atom:link href="http://blog.rajasekharan.com/category/technology/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rajasekharan.com</link>
	<description>And this too shall pass...</description>
	<lastBuildDate>Mon, 19 Dec 2011 02:45:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>How I improved my Handwriting</title>
		<link>http://blog.rajasekharan.com/2011/02/27/how-i-improved-my-handwriting/</link>
		<comments>http://blog.rajasekharan.com/2011/02/27/how-i-improved-my-handwriting/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 03:52:15 +0000</pubDate>
		<dc:creator>senthil</dc:creator>
				<category><![CDATA[lifehack]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[handwriting]]></category>
		<category><![CDATA[self-help]]></category>
		<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://blog.rajasekharan.com/?p=302</guid>
		<description><![CDATA[During high school, my term exams (quizzes) required handwritten answers spanning multiple pages. My handwriting was barely readable. Based on some observations I started to write the letters with, 1) consistent shapes 2) same size 3) equal spaces between the letters and words. This made my handwriting very readable but not necessarily pretty. A few [...]]]></description>
			<content:encoded><![CDATA[<p>During high school, my term exams (quizzes) required handwritten answers spanning multiple pages. </p>
<p>My handwriting was barely readable.</p>
<p>Based on some observations I started to write the letters with,</p>
<p>1) consistent shapes<br />
2) same size<br />
3) equal spaces between the letters and words.</p>
<p>This made my handwriting very readable but not necessarily pretty. </p>
<p>A few years back when I took an interest in typography I realized why this technique worked. </p>
<p>A printed page mostly uses a single font (letters of the same &#8220;shape&#8221;), same font size (same size) and consistent spacing between the characters (equal spaces). This among other things makes the page very readable.</p>
<p>I hope this technique helps someone improve their handwriting skills.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rajasekharan.com/2011/02/27/how-i-improved-my-handwriting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python modules, packages and code organization tips</title>
		<link>http://blog.rajasekharan.com/2011/02/09/python-modules-packages-and-code-organization-tips/</link>
		<comments>http://blog.rajasekharan.com/2011/02/09/python-modules-packages-and-code-organization-tips/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 15:59:39 +0000</pubDate>
		<dc:creator>senthil</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.rajasekharan.com/?p=277</guid>
		<description><![CDATA[...it is important to have a __init__.py in the package folder.]]></description>
			<content:encoded><![CDATA[<p>I am learning Python programming. </p>
<p>Having programmed in Java and C# (CSharp) for a while, one of my first questions was how do I structure code in Python.</p>
<p>Java has namespaces and a class per file construct to organize code. C# (CSharp) has namespaces to organize code. I was looking for something similar in Python.</p>
<p>It seems the answer is Python code can be organized into <a href="http://docs.python.org/tutorial/modules.html">modules</a> and module namespaces can be organized using packages.</p>
<p>Packages translate to a folder in the file system.</p>
<p>main.py<br />
music/<br />
       songs.py</p>
<p>A class called Song in songs.py can be imported into another module using the statement</p>
<p><code>from music.songs import Song</code></p>
<p>I was getting a python module not found or class not found error even though I had the right package folder structure.</p>
<p>On reading the python manual closely I realized that you need to create  a __init__.py file in the package folder.</p>
<p>The folder now looks like,</p>
<p>main.py<br />
music/<br />
       __init__.py<br />
       songs.py</p>
<p>After creating an empty __init__.py file in the package folder, I was able to import the Song class from music.songs module without any errors.</p>
<p>Some more <a href="http://www.velocityreviews.com/forums/t354440-code-organization.html">tips on Python code organization</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rajasekharan.com/2011/02/09/python-modules-packages-and-code-organization-tips/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Building a JSON Axis2 REST Client for a WCF Service.</title>
		<link>http://blog.rajasekharan.com/2010/10/19/building-a-json-axis2-rest-client-wcf-service/</link>
		<comments>http://blog.rajasekharan.com/2010/10/19/building-a-json-axis2-rest-client-wcf-service/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 20:00:26 +0000</pubDate>
		<dc:creator>senthil</dc:creator>
				<category><![CDATA[Axis2]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.rajasekharan.com/?p=242</guid>
		<description><![CDATA[Using JSON as the message format for a WCF REST service has some advantages if you are building a backend service for a purely browser based application. For instance, JSON is natively supported in all of the major web browsers. I had to build a REST client using Axis2 that uses the JSON message format. [...]]]></description>
			<content:encoded><![CDATA[<p>Using JSON as the message format for a WCF REST service has some advantages<br />
if you are building a backend service for a purely browser based application.</p>
<p>For instance, JSON is natively supported in all of the major web browsers.</p>
<p>I had to build a REST client using Axis2 that uses the JSON message format.</p>
<p>The blog post <a href="http://www.keith-chapman.org/2008/09/enabling-json-in-apache-axis2.html"> Enabling JSON in Apache Axis2</a> explains the conventions that are used to map XML to JSON and how to configure axis2.xml so that your client application can use the XML/JSON mapping convention of your choice.</p>
<p>I chose the mapped namespace convention which can be configured by adding the two lines to your axis2.xml</p>
<p>&lt;messageFormatter contentType=&quot;application/json&quot;<br />
                 class=&quot;org.apache.axis2.json.JSONMessageFormatter&quot;/&gt;  </p>
<p>&lt;messageBuilder contentType=&quot;application/json&quot;<br />
                 class=&quot;org.apache.axis2.json.JSONOMBuilder&quot;/&gt;</p>
<p>If you choose the mapped namespace convention you may get an exception that says &#8220;JSON mapped namespaces are not supported in Axis2&#8243;. If you see the above Axis2 exception then you need to patch jettison.</p>
<p>Instructions on the exception and the patch are in the <a href="http://www.marcusschiesser.de/?p=130">&#8220;Building a JSON web service with Java and Axis2&#8243;</a> post by <a href="http://www.marcusschiesser.de">Marcus Schiesser</a>.</p>
<p>The ServiceClient (org.apache.axis2.client.ServiceClient) object can be used to make REST API calls in Axis2.</p>
<p>The ServiceClient can be configured using the Options (org.apache.axis2.client.Options) object.</p>
<p>For a REST style service invocation you need the following options,</p>
<p><code><br />
Options options = new Options();<br />
options.setTo(new EndpointReference("http://your.service.endpoint.url"));<br />
options.setProperty(Configuration.MESSAGE_TYPE, "application/json");<br />
options.setProperty(Configuration.ENABLE_REST, Constants.VALUE_TRUE);</p>
<p>//reuse HTTP clients<br />
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Constants.VALUE_TRUE);<br />
options.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);</code></p>
<p>The httpClient object is created via the MultiThreadedHttpConnectionManager. This is needed for managing the HTTP connections if your client is used in a multithreaded application. See the post <a href="http://amilachinthaka.blogspot.com/2009/05/improving-axis2-client-http-transport.html">&#8220;Improving Axis2 Client HTTP  Transport Performance&#8221;</a></p>
<p>Finally, you have to engage the addressing module and set the ServiceClient options</p>
<p><code><br />
client = new ServiceClient();<br />
client.engageModule("addressing");<br />
client.setOptions(options);<br />
</code></p>
<p>The ServiceClient sendReceive call takes an OMElement which I created using custom XML serialization on the message objects.</p>
<p>Make sure you cleanup the http connections via the httpconnectionManager used to create the httpClient. Again. see the post <a href="http://amilachinthaka.blogspot.com/2009/05/improving-axis2-client-http-transport.html">&#8220;Improving Axis2 Client HTTP  Transport Performance&#8221;</a> on how to do this correctly.</p>
<p>The sendReceive call can be made non-blocking if you are looking for further improvements in performance.</p>
<p>The response returned by the sendReceive call is an OMElement again and can be de-serialized using custom XML de-serialization on your message objects.</p>
<p>If you are looking for pure SOAP interoperability between WCF .NET SOAP client and an Axis2 service be sure to chek out my other post <a href="http://blog.rajasekharan.com/2010/09/20/axis2-and-wcf-dotnet-interop/">Axis2 and WCF .Net Interoperability (Interop)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rajasekharan.com/2010/10/19/building-a-json-axis2-rest-client-wcf-service/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to Post to a Facebook Fan Page on Behalf of the Page.</title>
		<link>http://blog.rajasekharan.com/2009/10/03/how-to-post-to-the-facebook-fan-page-on-behalf-of-the-page/</link>
		<comments>http://blog.rajasekharan.com/2009/10/03/how-to-post-to-the-facebook-fan-page-on-behalf-of-the-page/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 18:59:23 +0000</pubDate>
		<dc:creator>senthil</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Fan Page]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.rajasekharan.com/?p=137</guid>
		<description><![CDATA[Quick Summary Use the Facebook.showPermissionDialog FBJS api call to authorize the Page for which you are an admin. Set the enableProfileSelector to true and include the page id in the profileSelectorIds. Once  the app user has authorized and given the extended permissions, You can use the Stream.publish api call with the page id as the target [...]]]></description>
			<content:encoded><![CDATA[<h2>Quick Summary</h2>
<p><span style="font-weight: normal;font-size: 13px">Use the <a title="Facebook.showPermissionDialog" href="http://wiki.developers.facebook.com/index.php/Facebook.showPermissionDialog" target="_self">Facebook.showPermissionDialog</a> <a title="FBJS" href="http://wiki.developers.facebook.com/index.php/FBJS" target="_self">FBJS</a> api call to authorize the Page for which you are an admin. Set the enableProfileSelector to true and include the page id in the profileSelectorIds. Once  the app user has authorized and given the extended permissions, You can use the <a title="Stream.publish facebook api" href="http://wiki.developers.facebook.com/index.php/Stream.publish" target="_self">Stream.publish</a> api call with the page id as the target id and publish on behalf of the page.</span></p>
<h2>The Details &#8211; Posting to the Facebook Fan Page on behalf of the page.</h2>
<p>Facebook allows you to create pages aka fan pages for your website, business, product, or almost just about anything. Page admins can customize their pages by adding facebook applications from the app directory to their pages. Using Facebook applications for fan pages allows you to integrate into the social connections of your fans better.</p>
<p>Applications with <a title="Facebook extended permissions" href="http://wiki.developers.facebook.com/index.php/Extended_permissions" target="_self">extended permissions</a> can publish to a user&#8217;s wall, news feed stream or profile. In addition, applications can now publish to a Page wall.</p>
<p>Publishing to a Page as a user is fairly simple with <a title="Stream.publish facebook api" href="http://wiki.developers.facebook.com/index.php/Stream.publish" target="_self">Stream.publish</a> facebook api, the Facebook developer api covers this well. You can prompt the user for  &#8217;publish_stream&#8217; extended permissions using the  <a title="fb:prompt-permission FBML tag" href="http://wiki.developers.facebook.com/index.php/Fb:prompt-permission" target="_self">fb:prompt-permission</a> <a title="FBML" href="http://wiki.developers.facebook.com/index.php/FBML" target="_self">FBML</a> tag, preferably during an initial set up workflow.</p>
<p>Once the user has authorized your app and given the extended permission, You just have to set the target id to the page id in your Stream.publish api call.  See the sample php api call below,</p>
<p><code> $facebook-&gt;api_client-&gt;stream_publish($message, $attachment,$action_links, $target_id);</code></p>
<p>Publishing on behalf of  a page is trickier.  Page admins have to authorize the app to publish on behalf of a page. You can do this by using</p>
<p>the <a title="Facebook.showPermissionDialog" href="http://wiki.developers.facebook.com/index.php/Facebook.showPermissionDialog" target="_self">Facebook.showPermissionDialog</a> <a title="FBJS" href="http://wiki.developers.facebook.com/index.php/FBJS" target="_self">FBJS</a> api call.</p>
<p><code> Facebook.showPermissionDialog('publish_stream, read_stream', ondone, showProfileSelector, [1234,2345]);</code></p>
<p>Just replace the profileSelectorIds ( [1234, 2345]) and include the page id in the FBJS call above. This should bring up a permission dialog and show</p>
<p>a &#8220;profile  selector&#8221; including the page for which you are an admin.</p>
<p>You should now be able to use the <a title="Stream.publish facebook api" href="http://wiki.developers.facebook.com/index.php/Stream.publish" target="_self">Stream.publish</a> api call with the page id as the target id and publish on behalf of the page.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rajasekharan.com/2009/10/03/how-to-post-to-the-facebook-fan-page-on-behalf-of-the-page/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>UI Programming Models</title>
		<link>http://blog.rajasekharan.com/2009/01/06/ui-programming-models/</link>
		<comments>http://blog.rajasekharan.com/2009/01/06/ui-programming-models/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 05:14:07 +0000</pubDate>
		<dc:creator>senthil</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[user interactions]]></category>

		<guid isPermaLink="false">http://blog.rajasekharan.com/?p=107</guid>
		<description><![CDATA[I found this excellent post Toward a better UI programing model with pointers to various UI programming models. Web designers are forced to think within the constraints of the web browser when it comes to user interaction design. The post above discusses more general approaches to user interaction design and not just within the context [...]]]></description>
			<content:encoded><![CDATA[<p>I found this excellent post <a title="Toward a better ui programming model" href="http://patricklogan.blogspot.com/2008/06/toward-better-ui-programming-models.html" target="_blank">Toward a better UI programing model</a> with pointers to various UI programming models.</p>
<p>Web designers are forced to think within the constraints of the web browser when it comes to user interaction design.</p>
<p>The post above discusses more general approaches to user interaction design and not just within the context of the web browser.</p>
<p>Since I am mostly involved in web UI interactions these days this post was very refreshing as it brought a new perspective to me.</p>
<p>While developing the UI for a web app recently I realized that the web design world is in the search-discovery cycle of  &#8220;patterns&#8221; that guide user interactions.  Patterns in user interactions has the dual benefit of helping both designers and users. Much like the &#8220;guidelines&#8221; on Windows ( <a title="Windows User Experience Interaction Guidelines" href="http://msdn.microsoft.com/en-us/library/aa511258.aspx" target="_blank">Windows User Experience Interaction Guidelines</a> ) or Mac (<a title="Apple Human Interface Guidelines" href="http://developer.apple.com/documentation/userexperience/Conceptual/AppleHIGuidelines/XHIGIntro/chapter_1_section_1.html#//apple_ref/doc/uid/TP30000894-TP6" target="_blank">Apple Human Interface Guidelines</a> ) development platforms that help Windows or Mac application developers respectively while standardizing the user interactions of the applications developed on those platforms. These guidelines ensure strict quality, improves user experience and makes the life of designers easier.</p>
<p>There are plenty of resources that discuss &#8220;web ui interaction patterns&#8221; .</p>
<p><a title="Designing Interfaces" href="http://www.amazon.com/dp/0596008031?tag=ourbookclub-20" target="_blank">Designing Interfaces</a> is a good resource if you are designing web user interactions. <a title="Rob Adams" href="http://www.usereccentric.com/" target="_blank">Rob Adams</a> one of the core developers of Adobe&#8217;s Flex  has an excellent set of <a title="Introductory Articles" href="http://www.adobe.com/devnet/flex/articles/fig_pt1.html" target="_blank">introductory articles</a> which not only apply to designing user interfaces using Adobe&#8217;s Flex but applies to user interface design in general. I especially liked the <a title="Structuring your Application" href="http://www.adobe.com/devnet/flex/articles/fig_pt3.html" target="_blank">Structuring your Application</a> part.</p>
<p>Everyone loves the web, even if there are a few frustrations that we still have to overcome <img src='http://blog.rajasekharan.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Happy Surfing !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rajasekharan.com/2009/01/06/ui-programming-models/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Capturing, Debugging localhost HTTP traffic with Fiddler</title>
		<link>http://blog.rajasekharan.com/2008/08/11/capturing-debugging-localhost-http-traffic-with-fiddler/</link>
		<comments>http://blog.rajasekharan.com/2008/08/11/capturing-debugging-localhost-http-traffic-with-fiddler/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 20:07:06 +0000</pubDate>
		<dc:creator>senthil</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[fiddler]]></category>
		<category><![CDATA[fiddler proxy]]></category>
		<category><![CDATA[localhost debugging]]></category>

		<guid isPermaLink="false">http://blog.rajasekharan.com/?p=85</guid>
		<description><![CDATA[Update: If you are using Fiddler 2 follow the instructions in the Fiddler FAQ Why don&#8217;t I see traffic sent to http://localhost or http://127.0.0.1? Fiddler does not capture packets sent to the localhost URL which makes debugging web applications hosted in your local machine painful. Here is how I configured Fiddler to debug web applications [...]]]></description>
			<content:encoded><![CDATA[<p><span><span style="small;"><span style="#000000;"><span style="Times New Roman;"><strong>Update: </strong></span></span></span></span></p>
<p><span><span style="small;"><span style="#000000;"><span style="Times New Roman;"><em>If you are using Fiddler 2 follow the instructions in the Fiddler FAQ</em></span></span></span></span></p>
<p><span><span style="small;"><span style="#000000;"><span style="Times New Roman;"><a title="Why don't I see localhost traffic...?" href="http://www.fiddlertool.com/Fiddler/help/hookup.asp#Q-LocalTraffic" target="_self"><em>Why don&#8217;t I see traffic sent to <span style="underline;">http://localhost</span> or <span style="underline;">http://127.0.0.1</span>?</em></a></span></span></span></span></p>
<p><span><span style="small;"><span style="#000000;"><span style="Times New Roman;">Fiddler does not capture packets sent to the localhost URL which makes debugging web applications hosted in your local machine painful.</span></span></span></span></p>
<p><span style="small;"><span style="#000000;"><span style="Times New Roman;">Here is how I configured Fiddler to debug web applications hosted in your local machine,</span></span></span></p>
<p><span style="small;"><span style="#000000;"><span style="Times New Roman;">Lets say your application is accessed using the URL http://localhost:8090/MySpiffyApp/default.aspx. To make fiddler capture the HTTP </span></span></span><span style="small;"><span style="#000000;"><span style="Times New Roman;">requests sent to this URL, all you have to do is edit the<span> </span>HKCU\Software\Microsoft\Fiddler\ReverseProxyForPort and set the </span></span></span><span style="small;">decimal value to 8090. This tells fiddler to proxy all traffic sent to HTTP port 8888 (default proxy port) to HTTP port 8090. Now access the application using the fiddler proxy port</span></p>
<p><span style="small;"><a href="http://localhost:8888/MySpiffyApp/default.aspx">http://localhost:8888/MySpiffyApp/default.aspx</a> </span></p>
<p><span style="small;">and you should be able to see the packet trace in Fiddler.</span></p>
<p><span style="small;">If you see the page below instead of your application then try restarting Fiddler and make sure the registry key name matches exactly as above.</span></p>
<div style="2px solid #666666;">GET / HTTP/1.1 Host: localhost:8888 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: ASPSESSIONIDAADBDSRQ=NJJLKNGCKNJMNIIFAIDFCEIB Cache-Control: max-age=0</p>
<hr />If you&#8217;d like to configure Fiddler as a reverse proxy instead:</div>
<ol>
<li>Set the HKCU\Software\Microsoft\Fiddler\ReverseProxyForPort registry DWORD to the local port you&#8217;d like to route inbound traffic to</li>
<li>Restart Fiddler</li>
</ol>
<p><span style="small;"><span style="#000000;"><span style="Times New Roman;">Let me know if this didn’t work for you or if you have another way of debugging web applications hosted on your local machine.</span></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rajasekharan.com/2008/08/11/capturing-debugging-localhost-http-traffic-with-fiddler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.488 seconds -->

