<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Winston{YW} WordPress</title>
	
	<link>http://www.winstonyw.com</link>
	<description>Web Development, Design, Usability and All Things Geeky</description>
	<lastBuildDate>Mon, 04 Jul 2011 10:40:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/winstonyw/wordpress" /><feedburner:info uri="winstonyw/wordpress" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>winstonyw/wordpress</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwinstonyw%2Fwordpress" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/winstonyw/wordpress" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwinstonyw%2Fwordpress" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fwinstonyw%2Fwordpress" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwinstonyw%2Fwordpress" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>The Secret Project</title>
		<link>http://feedproxy.google.com/~r/winstonyw/wordpress/~3/lZc_4JkeYFU/</link>
		<comments>http://www.winstonyw.com/2010/04/23/the-secret-project/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 13:49:35 +0000</pubDate>
		<dc:creator>Winston</dc:creator>
				<category><![CDATA[Secret Project]]></category>

		<guid isPermaLink="false">http://www.winstonyw.com/?p=438</guid>
		<description><![CDATA[I have a lot of ideas, but as everyone (including myself) says: Ideas are Cheap Ideas are only worthwhile when you execute. Lately, I have been feeling the urge to turn some of my ideas into reality, because: I want to scratch my itches, and verify that my ideas are useful. I should continue to [...]]]></description>
			<content:encoded><![CDATA[<p>I have a lot of ideas, but as everyone (including myself) says: </p>
<blockquote><p>Ideas are Cheap</p></blockquote>
<p>Ideas are only worthwhile when you execute.</p>
<p>Lately, I have been feeling the urge to turn some of my ideas into reality, because:</p>
<ul>
<li>I want to scratch my itches, and verify that my ideas are useful.</li>
<li>I should continue to code and code, and learn and learn.</li>
<li>I am awed and inspired by <a href="http://www.imayday.com/">May Day</a>, <a href="http://www.bookdepository.co.uk/book/9780091929787/ReWork?a_aid=winstonyw">Rework</a>, and friends.</li>
<li>I hope to find alternative / passive income.</li>
</ul>
<p>Anyway, I have decided to focus on one of the many ideas, and it&#8217;s a secret for now. The idea may not be anything grand, but I believe (and hope) that it solves a problem, and will be something useful for the target market.</p>
<p>I&#8217;ll post my progress as often as I can, and hopefully, I&#8217;ll be able to reveal it soon.</p>
<p>For a start, I registered the domain name last night.</p>
<p>Now, to start designing the database schema..</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=lZc_4JkeYFU:xzWxd56IFLM:2ZSE8t3tixs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=lZc_4JkeYFU:xzWxd56IFLM:2ZSE8t3tixs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=lZc_4JkeYFU:xzWxd56IFLM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=lZc_4JkeYFU:xzWxd56IFLM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=lZc_4JkeYFU:xzWxd56IFLM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=lZc_4JkeYFU:xzWxd56IFLM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=lZc_4JkeYFU:xzWxd56IFLM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=lZc_4JkeYFU:xzWxd56IFLM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/winstonyw/wordpress/~4/lZc_4JkeYFU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.winstonyw.com/2010/04/23/the-secret-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.winstonyw.com/2010/04/23/the-secret-project/</feedburner:origLink></item>
		<item>
		<title>GoogleVisualr Presentation Slides</title>
		<link>http://feedproxy.google.com/~r/winstonyw/wordpress/~3/T8D54TQ9UcI/</link>
		<comments>http://www.winstonyw.com/2010/04/16/googlevisualr-presentation-slides/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 06:33:05 +0000</pubDate>
		<dc:creator>Winston</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.winstonyw.com/?p=413</guid>
		<description><![CDATA[These are the slides I presented at Singapore Ruby Brigade meetup on 14th April 2010, updated and uploaded to SlideShare. Enjoy! Resources GoogleVisualr Source GoogleVisualr Reference/Examples]]></description>
			<content:encoded><![CDATA[<div style="width:425px" id="__ss_3737737"><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=srb-100415122809-phpapp01&#038;rel=0&#038;stripped_title=googlevisualr-3737737" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=srb-100415122809-phpapp01&#038;rel=0&#038;stripped_title=googlevisualr-3737737" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px"></div>
</div>
<p>These are the slides I presented at Singapore Ruby Brigade meetup on 14th April 2010, updated and uploaded to SlideShare. Enjoy!</p>
<h3>Resources</h3>
<ul>
<li><a href="http://github.com/winston/google_visualr">GoogleVisualr Source</a></li>
<li><a href="http://googlevisualr.heroku.com">GoogleVisualr Reference/Examples</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=T8D54TQ9UcI:9VO415b6hYM:2ZSE8t3tixs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=T8D54TQ9UcI:9VO415b6hYM:2ZSE8t3tixs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=T8D54TQ9UcI:9VO415b6hYM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=T8D54TQ9UcI:9VO415b6hYM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=T8D54TQ9UcI:9VO415b6hYM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=T8D54TQ9UcI:9VO415b6hYM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=T8D54TQ9UcI:9VO415b6hYM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=T8D54TQ9UcI:9VO415b6hYM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/winstonyw/wordpress/~4/T8D54TQ9UcI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.winstonyw.com/2010/04/16/googlevisualr-presentation-slides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.winstonyw.com/2010/04/16/googlevisualr-presentation-slides/</feedburner:origLink></item>
		<item>
		<title>A Ruby Library For Google Visualization API, GoogleVisualr</title>
		<link>http://feedproxy.google.com/~r/winstonyw/wordpress/~3/vrHiYdrir7g/</link>
		<comments>http://www.winstonyw.com/2010/04/16/a-ruby-library-for-google-visualization-api-googlevisualr/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 06:29:35 +0000</pubDate>
		<dc:creator>Winston</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.winstonyw.com/?p=372</guid>
		<description><![CDATA[In Wego, we have our own analytics and billing tool that I started building 2 years ago. This tool, in short, observes and logs user behaviour, digitizes and processes the data, then reports it on a Ruby on Rails front-end. I named the tool aptly, Wegonomics. Anyway, the very first version of Wegonomics only has [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://www.wego.com">Wego</a>, we have our own analytics and billing tool that I started building 2 years ago. This tool, in short, observes and logs user behaviour, digitizes and processes the data, then reports it on a Ruby on Rails front-end.</p>
<p>I named the tool aptly, Wegonomics.</p>
<p>Anyway, the very first version of Wegonomics only has numbers in rows and columns, and the metrics displayed were simply just a count of actions grouped by date.</p>
<p>However, I soon realized that a good and useful analytics dashboard is not only about the visual diarrhea of every possible numbers in tables.</p>
<p>What is a good analytics dashboard?</p>
<ul>
<li>
    A good analytics dashboard provides insight to the numbers.
  </li>
<li>
    A good analytics dashboard highlights patterns and trends.
  </li>
<li>
    A good analytics dashboard helps one digests the numbers easily/quickly, and draws brilliant conclusions and  decisions about them.
  </li>
</ul>
<p>What&#8217;s essentially missing are charts &#8211; visual helpers for the numbers!</p>
<p>My initial search for a great-looking charting tool brought me to <a href="http://teethgrinder.co.uk/open-flash-chart-2/">Open Flash Charts</a>. Indeed, a useful charting tool! However, the Ruby on Rails libraries were disappointing, and it&#8217;s actually a hassle to integrate OFC into my system.</p>
<p>In the end, I found <a href="http://code.google.com/apis/visualization/http://code.google.com/apis/visualization/http://code.google.com/apis/visualization/interactive_charts.html">Google Visualization API</a>, a Google developed JavaScript library that enables adding of charts into any web page. </p>
<p>In fact, the API actually powers quite a number of visuaizations in Google Analytics, which means I can recreate a Google Analytics look for my dashboard easily too.</p>
<p>This is the perfect solution for a great-looking and full-featured charting tool! </p>
<p>However, I need an easier way to integrate Google Visualization API into my system, without having to write data manipulation logic into RoR&#8217;s views or JavaScript files.</p>
<h3>GoogleVisualr</h3>
<p>Therefore, I created GoogleVisualr &#8211; a Ruby library for the Google Visualization API.</p>
<h5>The Gist</h5>
<p>In your model or controller, write Ruby code to create your visualization.</p>
<p>Configure your visualization with any options as listed in Google Visualization API Docs.</p>
<p>In your view, just call a <em>visualization.render(div_id)</em> method and the library will magically generate and insert JavaScript into the final HTML output.</p>
<p>You get your visualization, and you didn&#8217;t write any JavaScript!</p>
<h5>Limitations</h5>
<p>GoogleVisualr is created solely for the aim of simplifying the display of a visualization, and not the interactions.</p>
<p>Hence, do note that GoogleVisualr is not a 100% complete wrapper for the API.</p>
<p>To be precise, visualization-specific <em>Methods</em> and <em>Events</em> for use after a visualization has been rendered in a View have not been implemented (and may never be?), because they felt more native being written as JavaScript functions, in views/.js files.</p>
<h3>Install</h3>
<p>Clone the GitHub repository into your app/vendor/plugin folder.</p>
<pre class="brush: plain; title: ; notranslate">
&gt; rails my_app
&gt; cd my_app
&gt; script/plugin install git://github.com/winston/google_visualr.git
</pre>
<h3>Basics</h3>
<p>1. In your Rails layout, load Google Ajax API in the head tag, at the very top.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script src='http://www.google.com/jsapi'&gt;&lt;/script&gt;
</pre>
<p>2. In your Rails controller, initialize a visualization with an empty constructor.</p>
<pre class="brush: ruby; title: ; notranslate">
@chart = GoogleVisualr::AreaChart.new
</pre>
<p>3. Populate visualization with column headers, and row values.</p>
<pre class="brush: ruby; title: ; notranslate">
# Add Column Headers
@chart.add_column('string', 'Year' )
@chart.add_column('number', 'Sales')
@chart.add_column('number', 'Expenses') 

# Add Rows and Values
@chart.add_rows(4)
@chart.set_value(0, 0, '2004')
@chart.set_value(0, 1, 1000)
@chart.set_value(0, 2, 400)
@chart.set_value(1, 0, '2005')
@chart.set_value(1, 1, 1170)
@chart.set_value(1, 2, 460)
@chart.set_value(2, 0, '2006')
@chart.set_value(2, 1, 1500)
@chart.set_value(2, 2, 660)
@chart.set_value(3, 0, '2007')
@chart.set_value(3, 1, 1030)
@chart.set_value(3, 2, 540)
</pre>
<p>4. Configure visualization with options.</p>
<pre class="brush: ruby; title: ; notranslate">
@chart.width  = 400
@chart.height = 240
</pre>
<p>5. In your Rails view, render visualization.</p>
<pre class="brush: ruby; title: ; notranslate">
&lt;div id='chart'&gt;&lt;/div&gt;
&lt;%= @chart.render('chart') %&gt;
</pre>
<h3>Documentation and Example</h3>
<p>The above is a basic example of getting started with the GoogleVisualr Ruby library. For more alternatives and examples in instantiating/configuring your visualization, please visit the reference site at <a href="http://googlevisualr.heroku.com">http://googlevisualr.heroku.com</a>.</p>
<p>Current available visualizations are:</p>
<ul>
<li>Annotated Time Line</li>
<li>Area Chart</li>
<li>Bar Chart</li>
<li>Column Chart</li>
<li>Gauge</li>
<li>Spark Line (Image)</li>
<li>Intensity Map</li>
<li>Line Chart</li>
<li>Map</li>
<li>Motion Chart</li>
<li>Organizational Chart</li>
<li>Pie Chart</li>
<li>Scatter Chart</li>
<li>Table</li>
</ul>
<h3>Contribution and Support</h3>
<p>The <a href="http://github.com/winston/google_visualr">source of GoogleVisualr is available on GitHub</a>. Go head and clone/fork it!</p>
<p>Please also submit all feedback, bugs and feature-requests to <a href="http://github.com/winston/google_visualr/issues">GitHub Issues Tracker</a>.</p>
<h3>Resources</h3>
<ul>
<li><a href="http://code.google.com/apis/visualization/interactive_charts.html">Google Visualization API</a></li>
<li><a href="http://www.slideshare.net/winstonyw/googlevisualr-3737737">GoogleVisualr Slides</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=vrHiYdrir7g:e4sDdUrtL5o:2ZSE8t3tixs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=vrHiYdrir7g:e4sDdUrtL5o:2ZSE8t3tixs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=vrHiYdrir7g:e4sDdUrtL5o:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=vrHiYdrir7g:e4sDdUrtL5o:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=vrHiYdrir7g:e4sDdUrtL5o:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=vrHiYdrir7g:e4sDdUrtL5o:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=vrHiYdrir7g:e4sDdUrtL5o:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=vrHiYdrir7g:e4sDdUrtL5o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/winstonyw/wordpress/~4/vrHiYdrir7g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.winstonyw.com/2010/04/16/a-ruby-library-for-google-visualization-api-googlevisualr/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.winstonyw.com/2010/04/16/a-ruby-library-for-google-visualization-api-googlevisualr/</feedburner:origLink></item>
		<item>
		<title>Chrome Extension: Gmail Unreads Summary</title>
		<link>http://feedproxy.google.com/~r/winstonyw/wordpress/~3/WOSYQUSR_lA/</link>
		<comments>http://www.winstonyw.com/2010/03/21/chrome-extension-gmail-unreads-summary/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 15:48:12 +0000</pubDate>
		<dc:creator>Winston</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Google Chrome]]></category>

		<guid isPermaLink="false">http://www.winstonyw.com/?p=340</guid>
		<description><![CDATA[Lately, I have been trying to migrate my Gmail workflow from Firefox to Google Chrome because of its speed. Everything&#8217;s good, except that since I am so used to my own Greasemonkey script: Gmail Unreads Summary (absolutely essential for a zero-inbox), I always felt a little handicapped in Google Chrome. As I was sometimes asked [...]]]></description>
			<content:encoded><![CDATA[<p>Lately, I have been trying to migrate my Gmail workflow from Firefox to Google Chrome because of its speed. Everything&#8217;s good, except that since I am so used to my own <a href="www.winstonyw.com/2009/08/08/greasemonkey-script-gmail-unreads-summary/">Greasemonkey script: Gmail Unreads Summary</a> (absolutely essential for a zero-inbox), I always felt a little handicapped in Google Chrome.</p>
<p>As I was sometimes asked the possibility of making a Google Chrome extension for the Greasemonkey script too, I decided finally to do just that.</p>
<p>Therefore, I present <a href="https://chrome.google.com/extensions/detail/gjcakikdceplkjdcjclidemkcmdbhlkc">my 1st Google Chrome extension !</a></p>
<p><img src="http://www.winstonyw.com/uploads/images/Chrome_Extension_Gmail_Unreads_Summary.jpg" alt="Gmail Unreads Summary in Google Chrome Extensions Gallery" title="Gmail Unreads Summary in Google Chrome Extensions Gallery" class="clear left" /></p>
<p>Since this extension is actually a remake of the Greasemonkey script which I wrote, the functionality is essentially identical. Thus, quoting from it..</p>
<p>The features of this extension are:</p>
<ul>
<li>Summary of unread emails in your current view.</li>
<li>Emails are grouped by sender, with count, sorted in descending order.</li>
<li>Every group is a quick link to filter emails by sender.</li>
<li>Easy to use! </li>
</ul>
<p>Hope it just made you more productive!</p>
<p><strong>Update (29-03-2010)</strong><br />
I just pushed an update to Google Chrome Extensions gallery which fixes a few bugs. In addition, the sender groups are now sorted by count, in descending order.</p>
<p>Update the <a href="https://chrome.google.com/extensions/detail/gjcakikdceplkjdcjclidemkcmdbhlkc">Google Chrome extension</a> now!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=WOSYQUSR_lA:U-MYEIdw_6M:2ZSE8t3tixs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=WOSYQUSR_lA:U-MYEIdw_6M:2ZSE8t3tixs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=WOSYQUSR_lA:U-MYEIdw_6M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=WOSYQUSR_lA:U-MYEIdw_6M:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=WOSYQUSR_lA:U-MYEIdw_6M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=WOSYQUSR_lA:U-MYEIdw_6M:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=WOSYQUSR_lA:U-MYEIdw_6M:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=WOSYQUSR_lA:U-MYEIdw_6M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/winstonyw/wordpress/~4/WOSYQUSR_lA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.winstonyw.com/2010/03/21/chrome-extension-gmail-unreads-summary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.winstonyw.com/2010/03/21/chrome-extension-gmail-unreads-summary/</feedburner:origLink></item>
		<item>
		<title>How To Speed Up Firefox In 3 Simple Steps</title>
		<link>http://feedproxy.google.com/~r/winstonyw/wordpress/~3/qHVLV0wPWs8/</link>
		<comments>http://www.winstonyw.com/2009/10/29/how-to-speed-up-firefox-in-3-simple-steps/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 15:10:35 +0000</pubDate>
		<dc:creator>Winston</dc:creator>
				<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://www.winstonyw.com/?p=326</guid>
		<description><![CDATA[Firefox is a great browser and I can&#8217;t live without it, because of all its useful plugins. However, every so often, Firefox will devour all the memory on my MacBook and become so slow, that I&#8217;ll be forced to issue a &#8220;kill -9&#8243; command. Today, I have had enough, and so decided to go find [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox is a great browser and I can&#8217;t live without it, because of all its useful plugins. However, every so often, Firefox will devour all the memory on my MacBook and become so slow, that I&#8217;ll be forced to issue a &#8220;kill -9&#8243; command.</p>
<p>Today, I have had enough, and so decided to go find some Firefox optimization tips that will help to speed up my Firefox. The following are 3 simple steps to make your Firefox fast again, consolidated from sources as listed at the bottom of this post.</p>
<p>Hope you&#8217;ll find this reference useful, and FYI, my Firefox is amazingly fast again!</p>
<h3>1. Optimize Firefox Database</h3>
<ul>
<li>Menu > Tools > Error Console</li>
<li>Paste the following in the <em>Code</em> box, press &#8220;Evaluate&#8221;, and wait.</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
Components.classes[&quot;@mozilla.org/browser/nav-history-service;1&quot;].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL(&quot;VACUUM&quot;);
</pre>
<p>This vacuums the SQLite database, and is the most significant in speeding up Firefox! Remember to do this periodically.</p>
<h3>2. Limit Your History Sizes</h3>
<ul>
<li>Menu > Preferences (Mac) / Options (Windows) > Privacy Tab</li>
<li>Set &#8220;Remember my browsing history for at least ? days&#8221; to a small number. Personally, I set mine to 10.</li>
</ul>
<p>As for &#8220;Download History&#8221;, I also unchecked the option, because I have no need for it.</p>
<h3>3. Change Settings in About:Config</h3>
<ul>
<li>Type <em>about:config</em> in your urlbar.</li>
<li>In the <em>Filter</em> box, search for the following names and edit them accordingly.</li>
</ul>
<h5>Browsing and Session Settings</h5>
<p><em><a href="http://kb.mozillazine.org/Browser.sessionstore.max_windows_undo">browser.sessionstore.max_windows_undo</a></em></p>
<blockquote><p>A positive integer indicating how many window closures to remember for later possible restoration. (Default is 3)</p></blockquote>
<p>Suggestion: Reduce to 1</p>
<p><em><a href="http://kb.mozillazine.org/Browser.sessionstore.max_tabs_undo">browser.sessionstore.max_tabs_undo</a></em></p>
<blockquote><p>A positive integer indicating how many tab closures to remember for later possible restoration. (Default is 10)</p></blockquote>
<p>Suggestion: Reduce to 4</p>
<p><em>browser.sessionhistory.max_entries</em></p>
<blockquote><p>Number of pages stored in the history of your browsing session. Basically these are pages that can be reached using your Back and Forward buttons. (Default is 50)</p></blockquote>
<p>Suggestion: Reduce to 10</p>
<p><em><a href="http://kb.mozillazine.org/Browser.urlbar.maxRichResults">browser.urlbar.maxRichResults</a></em></p>
<blockquote><p>A non-negative integer corresponding to the maximum number of entries that can appear in the Location Bar auto-complete dropdown. (Default is 12)</p></blockquote>
<p>Suggestion: Reduce to 6</p>
<p><em><a href="http://kb.mozillazine.org/Browser.sessionstore.interval">browser.sessionstore.interval</a></em></p>
<blockquote><p>A positive integer indicating the number of milliseconds between session saving operations. (Default is 10000, or 10 seconds)</p></blockquote>
<p>Suggestion: Increase to 150000, or 2.5min</p>
<h5>Networking Settings</h5>
<p><em><a href="http://kb.mozillazine.org/Network.http.max-connections">network.http.max-connections</a></em></p>
<blockquote><p>This integer preference takes values between 1 and 65535 inclusive, directly corresponding to the maximum number of HTTP connections Mozilla can have open at once. (Default is 30).</p></blockquote>
<p>Suggestion: Increase to 48 or 96</p>
<p><em><a href="http://kb.mozillazine.org/Network.http.max-connections-per-server">network.http.max-connections-per-server</a></em></p>
<blockquote><p>This preference takes values between 1 and 255 inclusive, directly corresponding to the maximum number of HTTP connections Mozilla can have open at once. (Default is 15)</p></blockquote>
<p>Suggestion: Increase to 24  </p>
<p><em><a href="http://kb.mozillazine.org/Network.http.max-persistent-connections-per-server">network.http.max-persistent-connections-per-server</a></em></p>
<blockquote><p>This preference takes values between 1 and 255 inclusive, directly corresponding to the maximum number of HTTP keep-alive connections the application can have open at once to a single server. (Default is 6)</p></blockquote>
<p>Suggestion: Increase to 12</p>
<p><em><a href="http://kb.mozillazine.org/Network.http.pipelining">network.http.pipelining</a></em></p>
<blockquote><p>Attempt to use pipelining in HTTP 1.1 connections</p></blockquote>
<p>Suggestion: Change to TRUE</p>
<p><em><a href="http://kb.mozillazine.org/Network.http.pipelining.maxrequests">network.http.pipelining.maxrequests</a></em></p>
<blockquote><p>Any integer from 1 to 8 inclusive determines the maximum number of requests to pipeline at once. A value of 1 disables pipelining. (Default is 4)</p></blockquote>
<p>Suggestion: Increase to 8</p>
<h5>Resources</h5>
<ul>
<li><a href="http://mozillalinks.org/wp/2009/08/vacuum-firefox-databases-for-better-performance-now-with-no-restart/">Vacuum Firefox Databases For Better Performance, Now With No Restart</a></li>
<li><a href="http://lifehacker.com/5177260/speed-up-firefox-by-limiting-history-size">Speed Up Firefox By Limiting History Size</a></li>
<li><a href="http://blog.codefront.net/2008/09/10/optimize-firefoxs-memory-usage-by-tweaking-session-preferences/">Optimize Firefox&#8217;s Memory Usage By Tweaking Session Preferences</a></li>
<li><a href="http://www.makeuseof.com/tag/the-ultimate-guide-to-speeding-up-firefox-3-5/">The Ultimate Guide To Speeding Up Firefox 3.5</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=qHVLV0wPWs8:97qHAIqdqOU:2ZSE8t3tixs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=qHVLV0wPWs8:97qHAIqdqOU:2ZSE8t3tixs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=qHVLV0wPWs8:97qHAIqdqOU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=qHVLV0wPWs8:97qHAIqdqOU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=qHVLV0wPWs8:97qHAIqdqOU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=qHVLV0wPWs8:97qHAIqdqOU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=qHVLV0wPWs8:97qHAIqdqOU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=qHVLV0wPWs8:97qHAIqdqOU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/winstonyw/wordpress/~4/qHVLV0wPWs8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.winstonyw.com/2009/10/29/how-to-speed-up-firefox-in-3-simple-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.winstonyw.com/2009/10/29/how-to-speed-up-firefox-in-3-simple-steps/</feedburner:origLink></item>
		<item>
		<title>Do You Understand Your Users?</title>
		<link>http://feedproxy.google.com/~r/winstonyw/wordpress/~3/nu0F-3arJRM/</link>
		<comments>http://www.winstonyw.com/2009/09/11/do-you-understand-your-users/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 07:03:02 +0000</pubDate>
		<dc:creator>Winston</dc:creator>
				<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.winstonyw.com/?p=317</guid>
		<description><![CDATA[I was at the bookstore recently browsing along the Marketing section, and I observed a recurring theme in most of the marketing references: Customer Service. What is &#8220;Customer Service&#8221;? According to Wikipedia: .. is a series of activities designed to enhance the level of customer satisfaction – that is, the feeling that a product or [...]]]></description>
			<content:encoded><![CDATA[<p>I was at the bookstore recently browsing along the Marketing section, and I observed a recurring theme in most of the marketing references: Customer Service.</p>
<p>What is &#8220;Customer Service&#8221;? According to <a href="http://en.wikipedia.org/wiki/Customer_service">Wikipedia</a>:</p>
<blockquote><p>.. is a series of activities designed to enhance the level of customer satisfaction – that is, the feeling that a product or service has met the customer expectation.
</p></blockquote>
<p>Customer service is also a business strategy, and providing excellent customer service is key to growing a business. Since, such a strategy definitely helps to retain your existing customers and to grow your customers base through word of mouth.</p>
<p>That&#8217;s definitely one of the oldest trick in any marketing reference, but do all businesses care about customer service?</p>
<p>Given that I am in the web industry, do all websites care about customer service?</p>
<h3>Customer Service = User Experience</h3>
<p>In the web context, I simply equate customer service to user experience, since both serve the same purpose of ensuring that a customer / user is happy with a product or service.</p>
<p>Therefore, for websites to succeed, providing excellent user experience should be of the utmost priority, as this can lead to more returning visitors, and more new visitors (by word of mouth). Websites win when they have a high volume of visitors, as monetization is always easy when there&#8217;s traffic.</p>
<p>As simple as the logic sounds.. However, many websites fail in user experience design, and users suffer as a result. Luckily, there are always alternatives (or clones!) to any website, and so suffering users can be unforgiving and simply go to an alternative with a better user experience design.</p>
<p>A simple conclusion from this is that websites should always focus most of their resources on creating a wonderful user experience in order to retain and grow the traffic. </p>
<h3>I Don&#8217;t Really Care</h3>
<p>I hear you say: &#8220;Ultimately, our website survives on advertising revenue. I don&#8217;t care about user experience, and I&#8217;ll just focus on getting more advertisers.&#8221;</p>
<p>Hmm.. Who will want to advertise with you when all of your users have left for another website with a better user experience? Probably there isn&#8217;t such &#8220;another&#8221; website now, but that means you are always vulnerable to that possibility, right?</p>
<h3>Google: The Case Study</h3>
<p>Take <a href="http://www.google.com">Google</a> as an example. Their <a href="http://gigaom.com/2009/07/17/where-does-google-get-97-of-its-revenue/">main source of revenue is from advertising</a> too, but do they only focus their resources in getting more advertisers? The answer is: No. Google is constantly evolving their <a href="http://googleblog.blogspot.com/2009/09/now-s-u-p-e-r-sized.html">search</a> and <a href="http://blogoscoped.com/archive/2009-05-29-n26.html">results</a> interface, in order to give their users a great user experience. Imagine that Google has a small search box with multiple options, and ads and sponsored links are everywhere (above the fold, eye-leveled, etc) in their search results making it difficult to discern real content from ads. Will you like it? Will you search for alternatives that offer you a much better user experience?</p>
<p>The point is, Google knows what users want. Google neither assumes nor imagines what users want. Commonly known as actual usage vs. perceived usage. A user&#8217;s objective when visiting Google is simply to ask, learn, compare and leave, and that&#8217;s what Google is enabling all users to do, quickly. They display the search results clearly and prominently, and there are minimal distractions in terms of ads and options that would obstruct a user&#8217;s objective.</p>
<p>In terms of each search result content, Google doesn&#8217;t try to show you everything they know too. They display just enough crucial information that can either pique your interest, or help you make comparisons and draw conclusions. Essentially, displaying more information doesn&#8217;t always equate to easier evaluation of results. Haven&#8217;t you heard of information-overload? And when more information is actually more useless information, that&#8217;s even worse!</p>
<p>Features, that&#8217;s part of user experience too. Don&#8217;t get carried away with including all the features into the UI, or with adding the next-new-shiny-feature which was seen on another website. Again, understand who your users are and what your users want. Are they mostly power users or first-timers? Do they use all the existing features? Do they need the next new feature? Always measure and evaluate the effectiveness of every feature. Kill the ones that only serves as distraction to your users, or even worse, as distractions to your development team as they need to spend time to maintain something that only contributes to 1% traffic. Google have done so, by publicly announcing that they will <a href="http://googlenotebookblog.blogspot.com/2009/01/stopping-development-on-google-notebook.html">stop all developments on Google NoteBook</a>, and in this context, although it&#8217;s more like killing off a product rather than a feature, the idea permeates.</p>
<p>Even though I have been using Google exclusively in my examples, that&#8217;s not to say Google is perfect. They are not, but <a href="http://www.google.com/corporate/ux.html">Google has demonstrated successfully that devoting resources to user experience is worth the effort</a>. Even till today, they are <a href="http://www.google.com/corporate/timeline/#homepage-original-prototype">constantly measuring and improving their UI</a> to give all of us a greater user experience.</p>
<h3>User Experience Is Important</h3>
<p>Anyway, so you have accepted the premise that user experience is important. What should you do now?</p>
<p><a href="http://www.joelonsoftware.com/articles/fog0000000012.html">Eat your own dog food.</a> Imagine that you are a first-timer to your website and go through all the entry points to your website. Does your website helps you, as a first-timer, to answer, learn, compare and draw conclusions to your questions from these entry points?</p>
<p>That&#8217;s not enough. </p>
<p>Ask your employees the same question. They are your best assets even before you should consider seeking advice from a consultant.</p>
<p>Ask your users the same question. They are the ones who are using your website! Gather as much feedback as possible from your users, through feedback boxes easily accessible from every page of your website, and reply to your users in a timely manner, as that&#8217;s user support and is a part of user experience too.</p>
<p>The purpose of all these? To understand your users, and so to be able to create a wonderful user experience that users want and users like.</p>
<p>That&#8217;s basic customer service, you know.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=nu0F-3arJRM:YbTLJVq1SrQ:2ZSE8t3tixs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=nu0F-3arJRM:YbTLJVq1SrQ:2ZSE8t3tixs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=nu0F-3arJRM:YbTLJVq1SrQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=nu0F-3arJRM:YbTLJVq1SrQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=nu0F-3arJRM:YbTLJVq1SrQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=nu0F-3arJRM:YbTLJVq1SrQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=nu0F-3arJRM:YbTLJVq1SrQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=nu0F-3arJRM:YbTLJVq1SrQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/winstonyw/wordpress/~4/nu0F-3arJRM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.winstonyw.com/2009/09/11/do-you-understand-your-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.winstonyw.com/2009/09/11/do-you-understand-your-users/</feedburner:origLink></item>
		<item>
		<title>Setting Up A Git Repository On Dreamhost For My WordPress Theme</title>
		<link>http://feedproxy.google.com/~r/winstonyw/wordpress/~3/yGW4LHevSn8/</link>
		<comments>http://www.winstonyw.com/2009/08/24/setting-up-a-git-repository-on-dreamhost-for-my-wordpress-theme/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 15:57:13 +0000</pubDate>
		<dc:creator>Winston</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.winstonyw.com/?p=271</guid>
		<description><![CDATA[For any Dreamhost questions, I always refer to the Wiki which is excellently compiled. However, I realised that the Wiki has either an outdated answer or simply failed to answer the question of &#8220;How to set up a Git Repository on your Dreamhost account&#8221;. Thus you can sort of ignore this page on the Wiki. [...]]]></description>
			<content:encoded><![CDATA[<p>For any Dreamhost questions, I always refer to the <a href="http://wiki.dreamhost.com">Wiki</a> which is excellently compiled. However, I realised that the Wiki has either an outdated answer or simply failed to answer the question of &#8220;How to set up a Git Repository on your Dreamhost account&#8221;. Thus you can sort of <a href="http://wiki.dreamhost.com/Git">ignore this page on the Wiki</a>.</p>
<p>My goal is to set up a private repository for <a href="http://github.com/winston/winstonyw/tree/master">my own WordPress theme</a>, so that I&#8217;ll have version control and a complete change log for all developmental work on the theme. Another benefit in this is that I can sync the theme easily with my WordPress install, without having to do any FTP uploads (while figuring out which files were changed).</p>
<p>To set up Git repositories on Dream is actually quite easy, and I&#8217;ll recount how I did it. In the shell code examples below, <strong><em>USER</em></strong> refers to your user name on Dreamhost, while <strong><em>EXAMPLE.COM</em></strong> refers to your domain.</p>
<h3>Step 1: Create A Dreamhost Repository</h3>
<p>Firstly, I created a sub-domain to store my repositories, and I used .htaccess to protect it from the general public.  </p>
<p>Both of these can be done from the Dreamhost Panel by following these two wikis:</p>
<p>1. <a href="http://wiki.dreamhost.com/Subdomain#Adding_A_Subdomain_To_Your_DreamHost_Account">Adding A Subdomain To Your Dreamhost Account</a><br />
2. <a href="http://blog.dreamhosters.com/kbase/index.cgi?area=801">Configuring .htaccess</a></p>
<p>Then I entered shell, browsed to the sub-domain which I created in the step above, and created an empty repository with these commands:</p>
<pre class="brush: plain; title: ; notranslate">
$ mkdir my_wp_theme.git
$ cd my_wp_theme.git
$ git --bare init
$ git --bare update-server-info
</pre>
<h3>Step 2: Create A Local Repository</h3>
<p>Next, I created a local repository on my development machine, which will be later published to the Dreamhost repository.</p>
<pre class="brush: plain; title: ; notranslate">
$ mkdir my_wp_theme
$ cd my_wp_theme
$ git init
</pre>
<p>Configure the local repository with the Dreamhost repository details.</p>
<pre class="brush: plain; title: ; notranslate">
$ git config push.default matching
$ git remote add origin ssh://USER@EXAMPLE.COM/home/USER/SUB.EXAMPLE.COM/my_wp_theme.git
$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master
</pre>
<h3>Step 3: Push The Contents</h3>
<p>Following which, I copied over my WordPress theme files into this local repository. Then I added, committed and pushed my changes.</p>
<pre class="brush: plain; title: ; notranslate">
$ git add .
$ git commit -m &quot;Initialization.&quot;
$ git push --all
$ git pull
</pre>
<h3>Step 4: Sync With WordPress Install</h3>
<p>To sync with my WordPress install, I browsed to <em>&lt;wordpress&gt;/wp-content/themes</em> and cloned the repository. </p>
<pre class="brush: plain; title: ; notranslate">
git clone ssh://USER@EXAMPLE.COM/home/USER/SUB.EXAMPLE.COM/my_wp_theme.git
</pre>
<p>Then I went into the WordPress Admin and activated this gitorised theme. Done!</p>
<p>In the future, when I am finished with any changes to my theme, all I have to do is: Push my changes, then pull the changes on the server.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=yGW4LHevSn8:HcHWlvhm2U4:2ZSE8t3tixs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=yGW4LHevSn8:HcHWlvhm2U4:2ZSE8t3tixs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=yGW4LHevSn8:HcHWlvhm2U4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=yGW4LHevSn8:HcHWlvhm2U4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=yGW4LHevSn8:HcHWlvhm2U4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=yGW4LHevSn8:HcHWlvhm2U4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=yGW4LHevSn8:HcHWlvhm2U4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=yGW4LHevSn8:HcHWlvhm2U4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/winstonyw/wordpress/~4/yGW4LHevSn8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.winstonyw.com/2009/08/24/setting-up-a-git-repository-on-dreamhost-for-my-wordpress-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.winstonyw.com/2009/08/24/setting-up-a-git-repository-on-dreamhost-for-my-wordpress-theme/</feedburner:origLink></item>
		<item>
		<title>My Claim To Fame On The Internet</title>
		<link>http://feedproxy.google.com/~r/winstonyw/wordpress/~3/i46rsBeCw2E/</link>
		<comments>http://www.winstonyw.com/2009/08/16/my-claim-to-fame-on-the-internet/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 14:54:23 +0000</pubDate>
		<dc:creator>Winston</dc:creator>
				<category><![CDATA[Daily]]></category>

		<guid isPermaLink="false">http://www.winstonyw.com/?p=253</guid>
		<description><![CDATA[The most &#8220;famous&#8221; that I ever got (on the Internet) was getting a mention on both Download Squad and Techmeme in 2006, and that was a great achievement for me! All of it began with a Greasemonkey script that I wrote, which basically integrates Google Reader into Gmail. Back then, I merely shared my script [...]]]></description>
			<content:encoded><![CDATA[<p>The most &#8220;famous&#8221; that I ever got (on the Internet) was getting a mention on both <a href="http://www.downloadsquad.com">Download Squad</a> and <a href="http://www.techmeme.com">Techmeme</a> in 2006, and that was a great achievement for me! All of it began with <a href="http://www.winstonyw.com/2006/11/03/greasemonkey-script-gmail-and-reader-integrator/">a Greasemonkey script that I wrote</a>, which basically integrates Google Reader into Gmail.</p>
<p>Back then, I merely <a href="http://groups.google.com/group/google-reader-past/browse_thread/thread/af129cfade115e62/90088d791266952a?q=#90088d791266952a">shared my script on Google Reader&#8217;s Google Group</a>, but I got an encouraging reply from <a href="http://blog.davebc.com/">David Chartier</a> who was then a blogger for Download Squad. Soon, the script got <a href="http://www.downloadsquad.com/2006/11/03/new-better-greasemonkey-script-to-combine-gmail-and-google-reade/">a dedicated post on Download Squad</a>, written by <a href="http://www.jasonclarke.net">Jason Clarke</a>. Surprise, surprise! After which, more people came to know of the script, and it was <a href="http://delicious.com/url/98c71549d280d7f0af91f08e995aa1d7">delicious-ed a total of 144 times</a>. By the following day, <strong><a href="http://www.techmeme.com/061104/p8#a061104p8">I was listed on Techmeme</a></strong>. Wow! Techmeme! Have you <strong>EVER</strong> been listed on Techmeme?!</p>
<p>Anyway, I soon neglected the maintenance of the script due to other commitments, but <a href="http://userscripts.org/scripts/review/7435">a</a> <a href="http://userscripts.org/scripts/review/8450">few</a> <a href="http://userscripts.org/scripts/review/14030">others</a> continued to make further improvements to my Greasemonkey script. Eventually, the functionality of the script was acknowledged by <a href="http://www.ginatrapani.org/">Gina of Lifehacker</a>, and one of the improved version was included into the Better Gmail Firefox extension. Even though I was not named as the author of the script, but I was still able to see that I was credited in the comments section of the script, and that&#8217;s good enough for me.</p>
<p>Just an egoistic post to document one of my (lesser-known) greater achievements, and I wonder if I&#8217;ll ever achieve such &#8220;fame&#8221; again.</p>
<p>What about you? What&#8217;s your claim to fame?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=i46rsBeCw2E:n4Fm-jtte8s:2ZSE8t3tixs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=i46rsBeCw2E:n4Fm-jtte8s:2ZSE8t3tixs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=i46rsBeCw2E:n4Fm-jtte8s:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=i46rsBeCw2E:n4Fm-jtte8s:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=i46rsBeCw2E:n4Fm-jtte8s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=i46rsBeCw2E:n4Fm-jtte8s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=i46rsBeCw2E:n4Fm-jtte8s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=i46rsBeCw2E:n4Fm-jtte8s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/winstonyw/wordpress/~4/i46rsBeCw2E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.winstonyw.com/2009/08/16/my-claim-to-fame-on-the-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.winstonyw.com/2009/08/16/my-claim-to-fame-on-the-internet/</feedburner:origLink></item>
		<item>
		<title>Greasemonkey Script: Gmail Unreads Summary</title>
		<link>http://feedproxy.google.com/~r/winstonyw/wordpress/~3/mXOf0XzPtAY/</link>
		<comments>http://www.winstonyw.com/2009/08/08/greasemonkey-script-gmail-unreads-summary/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 04:33:47 +0000</pubDate>
		<dc:creator>Winston</dc:creator>
				<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.winstonyw.com/?p=242</guid>
		<description><![CDATA[I am a heavy-user of Gmail and Google Apps, and I spend most of my day in either&#8217;s web interface. The great thing about using the web interface is that I can either customize it with Gmail&#8217;s Labs feature, Firefox extensions or Greasemonkey scripts. Lately, I encountered this problem with my inbox which I felt [...]]]></description>
			<content:encoded><![CDATA[<p>I am a heavy-user of Gmail and Google Apps, and I spend most of my day in either&#8217;s web interface. The great thing about using the web interface is that I can either customize it with Gmail&#8217;s Labs feature, <a href="http://lifehacker.com/software/exclusive-lifehacker-download/better-gmail-2-firefox-extension-for-new-gmail-320618.php">Firefox extensions</a> or <a href="http://www.winstonyw.com/2006/11/03/greasemonkey-script-gmail-and-reader-integrator/">Greasemonkey scripts</a>. Lately, I encountered this problem with my inbox which I felt warranted a scripted solution, and so, I spent a little time to get acquainted with <a href="http://www.greasespot.net/">Greasemonkey</a> again and wrote a simple one.</p>
<p><strong>First, the problem.</strong></p>
<p>The thing I dread most with opening my inbox every morning is that it&#8217;s always flooded with (duh?) emails. The speed at which emails are being sent nowadays is astonishing! After every night, my inbox is usually packed with emails from colleagues, partners, applications (automated notification), newsletters, spam and others. That&#8217;s a night&#8217;s worth, so consider my feelings after a long weekend.</p>
<p>Anyway, just for the record, I <strong>LOVE</strong> to adopt a zero-inbox policy, and I archive my emails <strong>VERY, VERY LIBERALLY</strong>, so if my inbox is teeming with 30-40 unread mails, that&#8217;s considered &#8220;full&#8221; or &#8220;flooded&#8221; to me. =)</p>
<p>To tackle the flood, I started with filters and that helped, but I am still not satisfied. Every morning, I&#8217;ll start the day in my inbox and traverse down the long, long list of unread emails to read, reply, archive or delete. However, at any single point in time, I&#8217;ll only know the number of unread emails I still have in my inbox, and no further details about these emails. Hmm.. Is there anything that I can do?</p>
<p><strong>And now, the solution.</strong></p>
<p>An idea struck me this morning, and I decided to give it a try. After tinkling with <a href="http://wiki.greasespot.net/Greasemonkey_Manual:API">Greasemonkey scripting</a> and <a href="http://code.google.com/p/gmail-greasemonkey/wiki/GmailGreasemonkey10API">Gmail&#8217;s Greasemonkey API</a> for a while, I present to you: <a href="http://userscripts.org/scripts/show/55245">Gmail Unreads Summary</a>!</p>
<p><img src="http://www.winstonyw.com/uploads/images/Gmail_Unreads_Summary.jpg" alt="Preview of Gmail Unreads Summary" title="Preview of Gmail Unreads Summary" class="left clear" /></p>
<p>The features of this Greasemonkey script are:</p>
<ul>
<li>Summary of unread emails in your current view.</li>
<li>Emails are grouped by sender, with unread count.</li>
<li>Every group is a quick link to filter emails by sender.</li>
<li>Easy to use! </li>
</ul>
<p><a href="http://userscripts.org/scripts/source/55245.user.js" class="download">Download Now!</a></p>
<p>Anyway, my original intention is to create a summary for ALL the unread emails in your account. However, it&#8217;s impossible to get all that information from the client-side? Therefore, as a workaround, the summary view is only for the CURRENT VIEW which you are looking at, and the summary changes when you paginates or change views.</p>
<p>Give it a try! Any feedbacks? Would you like to see any other summary details?</p>
<p>Hmm.. I wonder if this is worthy of Gmail Labs..</p>
<p><strong>Update (20-08-2009)</strong><br />
I have removed the &#8220;Close&#8221; functionality and replaced it with a &#8220;Toggle&#8221; functionality. This is because the &#8220;Close&#8221; functionality is buggy (as it used a GM value?) when installed as a Firefox extension. Download the script again. Thank you!</p>
<p><strong>Update (29-08-2009)</strong><br />
I have made some bug fixes to the script to improve your overall user experience. Firstly, search urls will now make an in-browser refresh and not a full-browser refresh. Secondly. emails with &#8220;+&#8221; are now searchable too. Download the updated script. Thank you!</p>
<p><strong>Update (30-08-2009)</strong><br />
As reported by users, the &#8220;minimize&#8221; functionality is not sticky after changing views. Therefore I have updated the script to ensure that your preference is remembered. Download the updated script. Thank you!</p>
<p><strong>Update (11-09-2009)</strong><br />
This script has been integrated into the <a href="https://addons.mozilla.org/en-US/firefox/addon/6076">Firefox add-on: Better Gmail 2</a> since <a href="http://lifehacker.com/5340034/better-gmail-2-summarizes-unread-messages-by-sender">Aug 18th</a>. Thanks to Gina of Lifehacker! </p>
<p><strong>Update (20-09-2009)</strong><br />
This script has been removed from the Better Gmail 2 extension since version 0.9.4 because I am using a new Greasemonkey function (@require) which is somewhat incompatible with the extension. Please install this as a Greasemonkey script instead.</p>
<p><strong>Update (26-11-2009)</strong><br />
The <a href="http://code.google.com/p/gmail-greasemonkey/wiki/GmailGreasemonkey10API">Gmail Greasemonkey API broke</a> (possibly due to changes within Gmail itself), which caused the Greasemonkey script to stop functioning. I have just fixed the bug, so go ahead and <a href="http://userscripts.org/scripts/source/55245.user.js">download the updated version</a>. Thank you!</p>
<p><strong>Update (16-02-2010)</strong><br />
The Gmail Greasemonkey API broke again. I have fixed two of the broken functions, but not the third, and so, my script has lost the functionality of &#8220;auto-refresh&#8221;. However, I have added a &#8220;Refresh&#8221; link, so that refresh can still be done manually. Hopefully this is a good-enough fix for now. Please <a href="http://userscripts.org/scripts/source/55245.user.js">download the updated script</a>. Thank you.</p>
<p><strong>Update (21-02-2010)</strong><br />
In this update, I have renamed the &#8220;Refresh&#8221; link in the last update to &#8220;Refresh GMUS&#8221; and have shifted its position &#8211; putting it just beside Gmail&#8217;s own &#8220;Refresh&#8221; view link. <a href="http://userscripts.org/scripts/source/55245.user.js">Download the updated script now.</a> Enjoy!</p>
<p><strong>Update (21-03-2010)</strong><br />
I made a minor update to the code and bumped version up to 0.2.1.</p>
<p>AND.. I released a <a href="https://chrome.google.com/extensions/detail/gjcakikdceplkjdcjclidemkcmdbhlkc">Google Chrome extension</a> of the same functionality! Hurray!</p>
<p><strong>Update (29-03-2010)</strong><br />
I just pushed an update to UserScripts.org which fixes a few bugs in the last release. In addition, the sender groups are now sorted by count, in descending order.</p>
<p><a href="http://userscripts.org/scripts/source/55245.user.js">Download</a> the updated script now. Thank you!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=mXOf0XzPtAY:YR_ov67wIZw:2ZSE8t3tixs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=mXOf0XzPtAY:YR_ov67wIZw:2ZSE8t3tixs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=mXOf0XzPtAY:YR_ov67wIZw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=mXOf0XzPtAY:YR_ov67wIZw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=mXOf0XzPtAY:YR_ov67wIZw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=mXOf0XzPtAY:YR_ov67wIZw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=mXOf0XzPtAY:YR_ov67wIZw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=mXOf0XzPtAY:YR_ov67wIZw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/winstonyw/wordpress/~4/mXOf0XzPtAY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.winstonyw.com/2009/08/08/greasemonkey-script-gmail-unreads-summary/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.winstonyw.com/2009/08/08/greasemonkey-script-gmail-unreads-summary/</feedburner:origLink></item>
		<item>
		<title>My Online Strategy</title>
		<link>http://feedproxy.google.com/~r/winstonyw/wordpress/~3/BqJ_eFdCW_Q/</link>
		<comments>http://www.winstonyw.com/2009/07/26/my-online-strategy/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 06:00:36 +0000</pubDate>
		<dc:creator>Winston</dc:creator>
				<category><![CDATA[Social Media]]></category>

		<guid isPermaLink="false">http://www.winstonyw.com/?p=225</guid>
		<description><![CDATA[Lately, I have been thinking of ways to organize and consolidate my online activities. This is largely because I have a distributed footprint in a number of online services, and this distribution is somewhat random and messy. I&#8217;ll like to have some guidelines so that I&#8217;ll know where to post, what to post and how [...]]]></description>
			<content:encoded><![CDATA[<p>Lately, I have been thinking of ways to organize and consolidate my online activities. This is largely because I have a distributed footprint in a number of online services, and this distribution is somewhat random and messy. I&#8217;ll like to have some guidelines so that I&#8217;ll know where to post, what to post and how to post. Thus, birth of this post.</p>
<p>Currently, <a href="http://friendfeed.com">FriendFeed</a> is doing a wonderful job in <a href="http://friendfeed.com/winstonyw">aggregating all my online services</a>, and so I will continue to leverage on this core functionality. However, at the same time, I want to categorize my online activities and target them to different audiences, and hopefully with this categorization, I&#8217;ll have answered the three questions above.</p>
<p>Starting with this blog, I shall continue to do my geeky writings on Winston{YW} since that has been the main focus of this blog. Moreover, I already have a few geeky posts here that are <a href="http://www.google.com.sg/search?q=ruby+soap4r">ranked</a> <a href="http://www.google.com.sg/search?q=mysql+select+timestamp">highly</a> in Google searches and these posts continue to bring in a stream of fellow-geeks, whom I suppose are only interested in other geeky writings.</p>
<p>In addition, I am going to create a <a href="http://winstonyw.posterous.com">multimedia blog</a>, which will contain my very own images, videos and sounds. <a href="http://posterous.com">Posterous</a> seems to be the oh-so perfect choice for this, as I can simply email my multimedia files to the service and my files will be magically converted and hosted intelligently, as an image gallery, or a video/music player! That&#8217;s really simple, as compared to a self-hosted WordPress blog.</p>
<p>For a start, I&#8217;ll be using Posterous as a replacement for Twitpic, since this service is able to auto-post to Twitter (and other services) and it&#8217;s a nicer archives of my images. Next, I&#8217;ll be posting random photos taken with my (newly-bought!) Panasonic Lumix LX3 onto Posterous too.</p>
<p>Posts from these two blogs will be fed into FriendFeed, along with services such as Twitter, Delicious and Google Reader for an aggregated and commentable view. Unless you are not subscribed to me on FriendFeed, you are probably already overwhelmed by my activities-stream.</p>
<p>However, I know that not everyone gets FriendFeed, and you might only be interested in my blog/s. Therefore, I&#8217;ll be offering not one, not two, but THREE RSS feeds:</p>
<ul>
<li><a href="http://feeds.feedburner.com/winstonyw/wordpress">The 1st feed is for this blog.</a></li>
<li><a href="http://feeds.feedburner.com/winstonyw/posterous">The 2nd feed is for my multimedia blog at Posterous.</a></li>
<li><a href="http://feeds.feedburner.com/winstonyw">The 3rd (default) feed is a combined feed</a> of the two feeds above, courtesy of <a href="http://pipes.yahoo.com">Yahoo Pipes</a>.</li>
</ul>
<p>As for <a href="http://www.twitter.com">Twitter</a>, I&#8217;ll continue to use it to stream my daily life, retweet interesting tweets, share funny videos and socialize with the crowd. Are you interested in &#8220;stalking&#8221; me? <a href="http://www.twitter.com/winstonyw">Join Twitter and Follow Me</a>. That is where I am spending most of my time. </p>
<p>What about <a href="http://www.facebook.com/winstonyw">my Facebook</a>? I have installed the Selective Twitter app on Facebook, so that any tweets with a hashtag of #fb will be piped into Facebook as well. In this way, I&#8217;ll also be able to interact with my Facebook friends when I tweet.</p>
<p>That&#8217;s the gist of my online strategy for now, and as trivial as it sounds, I actually spent quite some time mulling over it. Let&#8217;s see how my plan will evolve over time.. </p>
<p>Do you have an online strategy of your own?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=BqJ_eFdCW_Q:a5kSwnYpxiA:2ZSE8t3tixs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=BqJ_eFdCW_Q:a5kSwnYpxiA:2ZSE8t3tixs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=BqJ_eFdCW_Q:a5kSwnYpxiA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=BqJ_eFdCW_Q:a5kSwnYpxiA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=BqJ_eFdCW_Q:a5kSwnYpxiA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?i=BqJ_eFdCW_Q:a5kSwnYpxiA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=BqJ_eFdCW_Q:a5kSwnYpxiA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/winstonyw/wordpress?a=BqJ_eFdCW_Q:a5kSwnYpxiA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/winstonyw/wordpress?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/winstonyw/wordpress/~4/BqJ_eFdCW_Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.winstonyw.com/2009/07/26/my-online-strategy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.winstonyw.com/2009/07/26/my-online-strategy/</feedburner:origLink></item>
	</channel>
</rss>

