<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEEEQXY5eSp7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735</id><updated>2011-11-28T07:30:00.821+08:00</updated><category term="appjet" /><category term="google reader" /><category term="firefox" /><category term="javascript" /><category term="web2.0" /><category term="cygwin" /><category term="greasemonkey" /><category term="nba" /><category term="twitter" /><category term="chrome" /><title>Angus Blog</title><subtitle type="html">Hong Kong Developer</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://angusdev.blogspot.com/" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/angusdeve" /><feedburner:info uri="angusdeve" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEIAQHs8eyp7ImA9WxBWE0g.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-4271212481880533830</id><published>2010-02-05T10:19:00.009+08:00</published><updated>2010-02-05T15:55:41.573+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-05T15:55:41.573+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><title>Fixing the XPath problem in Firefox 3.6</title><content type="html">In Greasemonkey development, it is a common practice to use GM_xmlhttpRequest + DOM Document Wrapper + XPath to process cross-origin content.  However in Firefox 3.6, the XPath query stop working.  Here is the fix:&lt;br /&gt;&lt;br /&gt;Firefox 3.5 code&lt;br /&gt;&lt;pre class="brush: js"&gt;&lt;br /&gt;var doc = document.implementation.createDocument("", "", null);&lt;br /&gt;div.innerHTML = html;&lt;br /&gt;doc.appendChild(div);&lt;br /&gt;var res = doc.evaluate("//p[@class='content']/span", div, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;&lt;br /&gt;// res is null&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Firefox 3.6 code&lt;br /&gt;&lt;pre class="brush: js"&gt;&lt;br /&gt;var isFF36up = false;&lt;br /&gt;if (navigator.userAgent) {&lt;br /&gt;  var ffver = navigator.userAgent.match(/Firefox\/3\.(\d+)/);&lt;br /&gt;  isFF36up = ffver &amp;amp;&amp;amp; parseInt(ffver[1], 10) &gt;= 6;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var nsResolver = {&lt;br /&gt;  lookupNamespaceURI:function (prefix) {&lt;br /&gt;    if (isFF36up &amp;amp;&amp;amp; prefix == "ns") {&lt;br /&gt;      return "http://www.w3.org/1999/xhtml";&lt;br /&gt;    }&lt;br /&gt;    else {&lt;br /&gt;      return "";&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;var doc = document.implementation.createDocument("", "", null);&lt;br /&gt;div.innerHTML = html;&lt;br /&gt;doc.appendChild(div);&lt;br /&gt;var res = doc.evaluate("//ns:p[@class='content']/ns:span", div, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;&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/6256145082126410735-4271212481880533830?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/LP8P8oVwoew" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/4271212481880533830/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=4271212481880533830" title="42 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/4271212481880533830?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/4271212481880533830?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/LP8P8oVwoew/fixing-xpath-problem-in-firefox-36.html" title="Fixing the XPath problem in Firefox 3.6" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><thr:total>42</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2010/02/fixing-xpath-problem-in-firefox-36.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEASHo5eip7ImA9WxVUFEo.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-7204444620687191361</id><published>2009-03-19T19:54:00.005+08:00</published><updated>2009-03-20T00:04:09.422+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-20T00:04:09.422+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title>Better Mobile Twitter version 5</title><content type="html">&lt;img style="margin: 0px 0px 10px; display: block; width: 500px; height: 229px;" src="http://lh3.ggpht.com/_6Zb6t03gLi4/Sb8ZdirF7sI/AAAAAAAAATw/y3ma2W9IVro/s800/bettermobiletwitter-v5-a.png" alt="Better Mobile Twitter" border="0" /&gt;&lt;br /&gt;&lt;img style="margin: 0px 0px 10px; display: block; width: 500px; height: 434px;" src="http://lh5.ggpht.com/_6Zb6t03gLi4/Sb8ZeMSRWfI/AAAAAAAAAT4/R_PmTlF_iwE/s800/bettermobiletwitter-v5-b.png" alt="Better Mobile Twitter" border="0" /&gt;&lt;br /&gt;Just released the version 5 of &lt;span style="font-weight: bold;"&gt;Better Mobile Twitter&lt;/span&gt; greasemonkey script.  You can install in &lt;a href="http://userscripts.org/scripts/show/35396"&gt;http://userscripts.org/scripts/show/35396&lt;/a&gt;.  There version adds image preview and auto expand short URL.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;I prefer to use the mobile web version of Twitter because it is faster. &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Better Mobile Twitter&lt;/span&gt; is to enhance the user experience in Twitter's mobile version, with the following features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Automatically load next page when scrolling to bottom of the page (continues browsing similar to Google Reader)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display replies and direct messages in sidebar&lt;/b&gt; (&lt;span style="color: rgb(255, 0, 0); font-style: italic; "&gt;New&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;&lt;span&gt;Images and Youtube thumbnail preview (supports twitpic, flickr, YouTube, &lt;b&gt;hellotxt, ping.fm&lt;/b&gt;, TwinkleShots&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt; (&lt;span style="color: rgb(255, 0, 0); font-style: italic;"&gt;New&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;&lt;span&gt;Auto expand short URL (supports Tinyurl, bit.ly, Friendfeed, hellotxt, is.gd, Ping.fm, &lt;b&gt;short.to&lt;/b&gt;, SnipURL, &lt;b&gt;Tweetburner&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;, &lt;/span&gt;tr.im&lt;/b&gt;)&lt;/span&gt; (&lt;span style="color: rgb(255, 0, 0); font-style: italic;"&gt;New&lt;/span&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Add reply button like standard version&lt;/b&gt; (&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;New&lt;/span&gt;&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;Count the characters remaining as you typing&lt;/li&gt;&lt;li&gt;Check for new tweets in background and &lt;span&gt;display number of new tweets in title bar&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Wider input box&lt;/li&gt;&lt;li&gt;&lt;span&gt;Add a user filter&lt;/span&gt;&lt;/li&gt;&lt;li&gt;An on/off button so you can turn off the auto-next-page function to access the links in the bottom of the page&lt;/li&gt;&lt;/ul&gt;Firefox users can first install the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/748"&gt;Greasemonkey add-on&lt;/a&gt;, install the script from &lt;a href="http://userscripts.org/scripts/show/35396"&gt;http://userscripts.org/scripts/show/35396&lt;/a&gt;, then point your browser to &lt;a href="http://m.twitter.com/home"&gt;http://m.twitter.com/home&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Chrome users please &lt;a href="http://dev.chromium.org/developers/design-documents/user-scripts"&gt;read this document&lt;/a&gt; to enable user scripts.&lt;br /&gt;&lt;br /&gt;You can take a look on my other greasemonkey scripts in &lt;a href="http://userscripts.org/users/24804/scripts"&gt;my user page in userscripts.org&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-7204444620687191361?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/5fgcbbitv0c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/7204444620687191361/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=7204444620687191361" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/7204444620687191361?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/7204444620687191361?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/5fgcbbitv0c/better-mobile-twitter-version-5.html" title="Better Mobile Twitter version 5" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_6Zb6t03gLi4/Sb8ZdirF7sI/AAAAAAAAATw/y3ma2W9IVro/s72-c/bettermobiletwitter-v5-a.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2009/03/better-mobile-twitter-version-5.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEESXc8eyp7ImA9WxVVEUk.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-8078613723170758545</id><published>2009-03-03T10:37:00.006+08:00</published><updated>2009-03-04T14:20:08.973+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-04T14:20:08.973+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title>Better Mobile Twitter version 4</title><content type="html">&lt;img style="margin: 0px 0px 10px; display: block; width: 500px; height: 229px;" src="http://lh5.ggpht.com/_6Zb6t03gLi4/SalOG-gQQVI/AAAAAAAAASI/b2AQFMfDiyg/s800/bettermobiletwitter-v4.png" alt="Better Mobile Twitter" border="0" /&gt;Just released the version 4 of &lt;span style="font-weight: bold;"&gt;Better Mobile Twitter&lt;/span&gt; greasemonkey script.  You can install in &lt;a href="http://userscripts.org/scripts/show/35396"&gt;http://userscripts.org/scripts/show/35396&lt;/a&gt;.  There version adds image preview and auto expand short URL.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Better Mobile Twitter&lt;/span&gt; is to enhance the user experience in Twitter's mobile version, with the following features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Automatically load the next page when scrolling to bottom of the page (similar to Google Reader)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Images and Youtube thumbnail preview (supports twitpic, flickr, YouTube and TwinkleShots)&lt;/span&gt; (&lt;span style="color: rgb(255, 0, 0); font-style: italic;"&gt;New, Firefox only&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Auto expand short URL (supports Tinyurl, bit.ly, Friendfeed, hellotxt, is.gd, Ping.fm and SnipURL)&lt;/span&gt; (&lt;span style="color: rgb(255, 0, 0); font-style: italic;"&gt;New, Firefox only&lt;/span&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Count the characters remaining as you typing&lt;/li&gt;&lt;li&gt;Check for new tweets in background and &lt;span style="font-weight: bold;"&gt;display number of new tweets in title bar&lt;/span&gt;  (&lt;span style="color: rgb(255, 0, 0); font-style: italic;"&gt;New&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Wider input box&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Add a user filter&lt;/span&gt; (&lt;span style="color: rgb(255, 0, 0); font-style: italic;"&gt;New&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;An on/off button so you can turn off the auto-next-page function to access the links in the bottom of the page&lt;/li&gt;&lt;/ul&gt;Firefox users can first install the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/748"&gt;Greasemonkey add-on&lt;/a&gt;, install the script from &lt;a href="http://userscripts.org/scripts/show/35396"&gt;http://userscripts.org/scripts/show/35396&lt;/a&gt;, then point your browser to &lt;a href="http://m.twitter.com/home"&gt;http://m.twitter.com/home&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Chrome users please &lt;a href="http://dev.chromium.org/developers/design-documents/user-scripts"&gt;read this document&lt;/a&gt; to enable user scripts.&lt;br /&gt;&lt;br /&gt;You can take a look on my other greasemonkey scripts in &lt;a href="http://userscripts.org/users/24804/scripts"&gt;my user page in userscripts.org&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-8078613723170758545?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/tceissA8MMw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/8078613723170758545/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=8078613723170758545" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/8078613723170758545?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/8078613723170758545?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/tceissA8MMw/better-mobile-twitter-version-4.html" title="Better Mobile Twitter version 4" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_6Zb6t03gLi4/SalOG-gQQVI/AAAAAAAAASI/b2AQFMfDiyg/s72-c/bettermobiletwitter-v4.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2009/03/better-mobile-twitter-version-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMMQn48fSp7ImA9WxRaGUw.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-4142879038476714460</id><published>2008-12-18T14:36:00.012+08:00</published><updated>2008-12-22T10:21:23.075+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-22T10:21:23.075+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="nba" /><title>ESPN FBA Player Rater userscript</title><content type="html">For Fantasy Basketball lover! A small Greasemonkey script that show more information in &lt;a href="http://games.espn.go.com/fba/playerrater"&gt;ESPN FBA Player Rater&lt;/a&gt; page:&lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Positional ranking (PRK)&lt;/li&gt;&lt;li&gt;% owned&lt;/li&gt;&lt;li&gt;Average draft position (ADP)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Not very useful, but is funny for you to locate the sleepers and dusts. Watch &lt;a href="http://sports.espn.go.com/nba/players/profile?playerId=1713"&gt;Nene&lt;/a&gt; jump from ADP 96 to rank 21, &lt;a href="http://sports.espn.go.com/nba/players/profile?playerId=2377"&gt;Duhon&lt;/a&gt; from ADP 122 to 29 and &lt;a href="http://sports.espn.go.com/nba/players/profile?playerId=3015"&gt;Millsap&lt;/a&gt; from undrafted to 31.&lt;/div&gt;&lt;div&gt;Down to the table, you will feel sorry for the owners of &lt;a href="http://sports.espn.go.com/nba/players/profile?playerId=510"&gt;Marion&lt;/a&gt; (11.5 to 72), &lt;a href="http://sports.espn.go.com/nba/players/profile?playerId=366"&gt;Iverson&lt;/a&gt; (11.3 to 85) and &lt;a href="http://sports.espn.go.com/nba/players/profile?playerId=91"&gt;Brand&lt;/a&gt; (17.2 to 111).&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Install and download from &lt;a href="http://userscripts.org/scripts/show/38843"&gt;http://userscripts.org/scripts/show/38843&lt;/a&gt;.  It supports Firefox and Chrome (Chrome users please &lt;a href="http://angusdev.blogspot.com/2008/12/chrome-10-not-chromium-supports.html"&gt;read this post&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;width:520px;height:550px;" src="http://lh3.ggpht.com/_6Zb6t03gLi4/SUn3pxXi1nI/AAAAAAAAAQQ/lI8mHRTnuiA/s800/espn-fba-player-rater-before-after.png" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-4142879038476714460?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/-rVoKe2ldCg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/4142879038476714460/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=4142879038476714460" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/4142879038476714460?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/4142879038476714460?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/-rVoKe2ldCg/espn-fba-player-rater-userscript.html" title="ESPN FBA Player Rater userscript" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_6Zb6t03gLi4/SUn3pxXi1nI/AAAAAAAAAQQ/lI8mHRTnuiA/s72-c/espn-fba-player-rater-before-after.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2008/12/espn-fba-player-rater-userscript.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8HRHc_fyp7ImA9WxRaGUk.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-3741576810951678606</id><published>2008-12-16T13:17:00.010+08:00</published><updated>2008-12-22T18:13:55.947+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-22T18:13:55.947+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><title>Chrome 1.0 (not Chromium) supports Greasemonkey now</title><content type="html">&lt;img style="border:none;float:left; margin:0 10px 10px 0;width: 156px; height: 62px;" src="http://lh5.ggpht.com/_6Zb6t03gLi4/SUc-tsnneEI/AAAAAAAAAQA/b__UmQcoZKU/s800/chromonkey.png" border="0" alt="Chromonkey" /&gt;Google Chrome 1.0 supports Greasemonkey.  You can use &lt;a href="http://angusdev.blogspot.com/2008/11/google-reader-unread-count-version-4.html"&gt;Google Reader Unread Count&lt;/a&gt; and &lt;a href="http://angusdev.blogspot.com/2008/11/better-mobile-twitter-version-3.html"&gt;Better Mobile Twitter&lt;/a&gt; in Chrome now.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To enable Greasemonkey in Chrome, download and install the latest &lt;a href="http://www.google.com/chrome"&gt;Chrome&lt;/a&gt;. Right click your Chrome shortcut, add "&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;--enable-greasemonkey&lt;/span&gt;" to the end of the "Target" box (see below).  Finally, you have to put the scripts in the folder "&lt;span style="font-weight: bold;"&gt;C:\scripts\&lt;/span&gt;" and the script files' extension must be "&lt;span style="font-weight: bold;"&gt;.user.js&lt;/span&gt;".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;width: 367px; height: 502px;" src="http://lh4.ggpht.com/_6Zb6t03gLi4/SUdAO9YhBgI/AAAAAAAAAQI/2ByuD8ZdapA/s800/chrome-enable-greasemonkey.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-3741576810951678606?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/655PYSnOo50" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/3741576810951678606/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=3741576810951678606" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/3741576810951678606?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/3741576810951678606?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/655PYSnOo50/chrome-10-not-chromium-supports.html" title="Chrome 1.0 (not Chromium) supports Greasemonkey now" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_6Zb6t03gLi4/SUc-tsnneEI/AAAAAAAAAQA/b__UmQcoZKU/s72-c/chromonkey.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2008/12/chrome-10-not-chromium-supports.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YNQ3Y4cSp7ImA9WxRbFEk.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-3801391664047946320</id><published>2008-12-05T09:49:00.002+08:00</published><updated>2008-12-05T10:46:32.839+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-05T10:46:32.839+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="google reader" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><title>Google Reader has new look</title><content type="html">&lt;img src="http://lh6.ggpht.com/_6Zb6t03gLi4/STiU3ktvtmI/AAAAAAAAAPg/j59XfVJKkE0/s800/google-unread-081205.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googlereader.blogspot.com/2008/12/square-is-new-round.html"&gt;Google Reader has new look&lt;/a&gt;.  I like the collapsible section so I can free more space for the feed list.  And I'm please to tell you that my &lt;a href="http://angusdev.blogspot.com/2008/11/google-reader-unread-count-version-4.html"&gt;Google Reader Unread Count&lt;/a&gt; greasemonkey script still works for new look.  Enjoy it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-3801391664047946320?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/fIKWsInfMQk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/3801391664047946320/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=3801391664047946320" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/3801391664047946320?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/3801391664047946320?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/fIKWsInfMQk/google-reader-has-new-look.html" title="Google Reader has new look" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_6Zb6t03gLi4/STiU3ktvtmI/AAAAAAAAAPg/j59XfVJKkE0/s72-c/google-unread-081205.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2008/12/google-reader-has-new-look.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEMQHs5fip7ImA9WxRaFUU.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-71510353436770308</id><published>2008-11-20T01:15:00.003+08:00</published><updated>2008-12-18T15:18:01.526+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-18T15:18:01.526+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title>Better Mobile Twitter version 3</title><content type="html">&lt;img style="margin: 0px 0px 10px; display: block; width: 400px; height: 228px;" src="http://lh3.ggpht.com/_6Zb6t03gLi4/SSQmq-Hb4_I/AAAAAAAAANc/w4v8kxJbF9M/bettermobiletwitter-v3.png" alt="Better Mobile Twitter" border="0" /&gt;Just finish the version 3 of &lt;span style="font-weight: bold;"&gt;Better Mobile Twitter&lt;/span&gt; greasemonkey script.  You can install in &lt;a href="http://userscripts.org/scripts/show/35396"&gt;http://userscripts.org/scripts/show/35396&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Better Mobile Twitter&lt;/span&gt; is to enhance the user experience in Twitter's mobile version, with the following features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Automatically load the next page when scrolling to bottom of the page (similar to Google Reader)&lt;/li&gt;&lt;li&gt;Count the characters remaining as you typing&lt;/li&gt;&lt;li&gt;Check for new tweets in background&lt;/li&gt;&lt;li&gt;Wider input box&lt;/li&gt;&lt;li&gt;An on/off button so you can turn off the auto-next-page function to access the links in the bottom of the page&lt;/li&gt;&lt;/ul&gt;You can see how it works in the video below.&lt;br /&gt;&lt;br /&gt;Firefox users can first install the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/748"&gt;Greasemonkey add-on&lt;/a&gt;, install the script from &lt;a href="http://userscripts.org/scripts/show/35396"&gt;http://userscripts.org/scripts/show/35396&lt;/a&gt;, then point your browser to &lt;a href="http://m.twitter.com/home"&gt;http://m.twitter.com/home&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Chrome users need to &lt;a href="http://build.chromium.org/buildbot/snapshots/chromium-rel-xp/?C=M;O=D"&gt;download the nightly build of Chromium&lt;/a&gt;, put the script in c:\scripts and run Chrome with command-line "chrome.exe --enable-greasemonkey", or create a shortcut for it.&lt;br /&gt;&lt;br /&gt;You can take a look on my other greasemonkey scripts in &lt;a href="http://userscripts.org/users/24804/scripts"&gt;my user page in userscripts.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sAL4E23EqT0&amp;amp;hl=zh_TW&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/sAL4E23EqT0&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;ap=%2526fmt%3D18" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-71510353436770308?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/a2PtYbvMeZA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/71510353436770308/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=71510353436770308" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/71510353436770308?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/71510353436770308?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/a2PtYbvMeZA/better-mobile-twitter-version-3.html" title="Better Mobile Twitter version 3" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_6Zb6t03gLi4/SSQmq-Hb4_I/AAAAAAAAANc/w4v8kxJbF9M/s72-c/bettermobiletwitter-v3.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2008/11/better-mobile-twitter-version-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8NSHcyfyp7ImA9WxRVFk8.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-1907615983669685795</id><published>2008-11-14T09:50:00.007+08:00</published><updated>2008-11-14T10:14:59.997+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-14T10:14:59.997+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="google reader" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><title>Google Reader Unread Count version 4 supports Chrome</title><content type="html">I rewrite the &lt;a href="http://angusdev.blogspot.com/2008/11/greasemonkey-script-to-show-actual.html"&gt;Google Reader Unread Count&lt;/a&gt; user script to support Chrome (i.e. &lt;a href="http://build.chromium.org/buildbot/snapshots/chromium-rel-xp/?C=M;O=D"&gt;Chromium nightly build&lt;/a&gt;).  And fix the bug that cannot display the '+' sign if any one single feed has more than 1000 unread items.&lt;br /&gt;&lt;br /&gt;Get the update from &lt;a href="http://userscripts.org/scripts/show/12601"&gt;http://userscripts.org/scripts/show/12601&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There is a major difference of Greasemonkey support in Firefox and Chrome. In Firefox, your user script is put in a separated context.  That's why you should use unsafeWindow to refer to the webpage's context.  In Chrome, otherwise, is put in same context of the webpage.  This introduce name conflicts in the script.  For example, I added the famous $(id) function in my script which overrides the original $ function in Google Reader and makes it broken.  To solve it I put everything in my own namespace to avoid the conflict.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-1907615983669685795?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/uTj4RJOspps" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/1907615983669685795/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=1907615983669685795" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/1907615983669685795?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/1907615983669685795?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/uTj4RJOspps/google-reader-unread-count-version-4.html" title="Google Reader Unread Count version 4 supports Chrome" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2008/11/google-reader-unread-count-version-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8EQnk9cCp7ImA9WxRVFk8.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-9175756762826376202</id><published>2008-11-07T01:21:00.002+08:00</published><updated>2008-11-14T10:13:23.768+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-14T10:13:23.768+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="google reader" /><title>Google Reader Unread Count version 3</title><content type="html">Someone reported that my &lt;a href="http://angusdev.blogspot.com/2008/11/greasemonkey-script-to-show-actual.html"&gt;Google Reader Unread Count user script&lt;/a&gt; doesn't work since 28-Oct (I'm busy keeping my unread items below 1000 so I didn't notice that it is broken).  I made up a version 3 to fix this problem and another bug that didn't count the untagged feeds.&lt;br /&gt;&lt;br /&gt;Get the update from &lt;a href="http://userscripts.org/scripts/show/12601"&gt;http://userscripts.org/scripts/show/12601&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In addition, I include this script to my greasemonkey collections project (&lt;a href="http://code.google.com/p/ellab-gm/"&gt;ellab-gm&lt;/a&gt;) in Google Code.  Please check out my other scripts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-9175756762826376202?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/S1ReTd7qcFU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/9175756762826376202/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=9175756762826376202" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/9175756762826376202?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/9175756762826376202?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/S1ReTd7qcFU/google-reader-unread-count-version-3.html" title="Google Reader Unread Count version 3" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2008/11/google-reader-unread-count-version-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8GQnc-eip7ImA9WxRVFk8.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-6014842378578294215</id><published>2008-10-13T01:38:00.001+08:00</published><updated>2008-11-14T10:13:43.952+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-14T10:13:43.952+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title>Better Mobile Twitter user script</title><content type="html">I always keep a tab in Firefox opening Twitter and I prefer the mobile version instead of the standard one for speed and simplicity.&lt;br /&gt;&lt;br /&gt;Despite the simplicity, one thing I would like to have is automatically load next page when the mouse scroll to bottom (just like what Google Reader does).   As a result I come up with the Better Mobile Twitter user script.&lt;br /&gt;&lt;br /&gt;You can install in &lt;a href="http://userscripts.org/scripts/show/35396"&gt;http://userscripts.org/scripts/show/35396&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Below is showing how it works, or you can &lt;a href="http://hk.youtube.com/watch?v=X3M5otYVq8k&amp;amp;fmt=18"&gt;watch in high quality&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/X3M5otYVq8k&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/X3M5otYVq8k&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-6014842378578294215?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/hg-OH4Rr0OQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/6014842378578294215/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=6014842378578294215" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/6014842378578294215?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/6014842378578294215?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/hg-OH4Rr0OQ/better-mobile-twitter-user-script.html" title="Better Mobile Twitter user script" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2008/11/better-mobile-twitter-user-script.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ADRnk9fip7ImA9WxRWGUo.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-3738381665895830632</id><published>2008-06-14T09:28:00.000+08:00</published><updated>2008-11-06T21:56:17.766+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-06T21:56:17.766+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="appjet" /><title>Some stats from Firefox 3 Download Day</title><content type="html">&lt;p&gt;&lt;a href="http://www.spreadfirefox.com/node&amp;amp;id=0&amp;amp;t=269" target="_blank"&gt;&lt;img src="http://www.spreadfirefox.com/files/images/affiliates_banners/sns_badge1_en.png" alt="Download Day" title="Download Day" style="float: left;" border="0" hspace="5" /&gt;&lt;/a&gt;Did you pledge in &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://www.spreadfirefox.com/worldrecord/" target="_blank"&gt;Firefox 3 Download Day 2008&lt;/a&gt;?  For me, I'm very interest on the world map, where I know how many people pledge to download Firefox 3 on the first day in each country or region.  To have a more detail view, I wrote an AppJet webapp to visualize the data.&lt;/p&gt;&lt;p&gt;Here is the URL:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://ffpledge08.appjet.net/" target="_blank" title="Firefox Download Day 2008 Stats"&gt;http://ffpledge08.appjet.net/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We can see that besides US, Poland has the second most pledges, followed by Brazil, France and Italy.&lt;/p&gt;&lt;p&gt;If we count the population factor, among the regions which population greater than 1 million, &lt;a href="http://en.wikipedia.org/wiki/Slovenia" title="Wikipedia entry of Slovenia"&gt;Slovenia&lt;/a&gt; has the highest support rate - 0.25% of Slovenian promise to download Firefox 3 in the first day of release.  &lt;a href="http://en.wikipedia.org/wiki/Estonia" title="Wikipedia entry of Estonia"&gt;Estonia&lt;/a&gt; and Poland are not far behind, has 0.23% and 0.22% respectively.&lt;/p&gt;&lt;p&gt;The data by some means reflecting the Internet penetrating rate in these countries.  For example, &lt;a href="http://en.wikipedia.org/wiki/Bangladesh" title="Wikipedia entry of Bangladesh"&gt;Bangladesh&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Nigeria" title="Wikipedia entry of Nigeria"&gt;Nigeria&lt;/a&gt;, which population greater than 100 million, have only 500 and 200 pledges respectively.  Most Africa countries fill up the bottoms.  &lt;a href="http://en.wikipedia.org/wiki/Ethiopia" title="Wikipedia entry of Ethiopia"&gt;Ethiopia&lt;/a&gt; is the worst, only 70 out of 77,127,000 people pledged.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-3738381665895830632?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/A3Ohu7QhEDc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/3738381665895830632/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=3738381665895830632" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/3738381665895830632?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/3738381665895830632?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/A3Ohu7QhEDc/some-stats-from-firefox-3-download-day.html" title="Some stats from Firefox 3 Download Day" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2008/06/some-stats-from-firefox-3-download-day.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EFSHo4eyp7ImA9WxRWGUo.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-2192011449294561149</id><published>2008-01-16T04:12:00.000+08:00</published><updated>2008-11-06T21:53:39.433+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-06T21:53:39.433+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="web2.0" /><title>The best About Us I ever seen</title><content type="html">&lt;img style="margin: 0pt 10px 10px 0pt; float: left;" src="http://images.crunchbase.com/fileupload/company_logo/837_zivitylogo.png" alt="" border="0" /&gt;&lt;a href="http://zivity.com/"&gt;Zavity&lt;/a&gt; may not be a success web2.0 startup, but it's &lt;a href="http://zivity.com/about"&gt;About Us&lt;/a&gt; is the best I ever seen.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://www.techcrunch.com/2007/12/30/zivity-founder-bares-all-to-promote-her-startup/"&gt;TechCrunch's article&lt;/a&gt; about Zavity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-2192011449294561149?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/A45Qe8BVNAQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/2192011449294561149/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=2192011449294561149" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/2192011449294561149?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/2192011449294561149?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/A45Qe8BVNAQ/best-about-us-i-ever-seen.html" title="The best About Us I ever seen" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2008/01/best-about-us-i-ever-seen.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IBQn0yeCp7ImA9WxRWGUo.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-2262061518479133197</id><published>2007-12-19T16:46:00.000+08:00</published><updated>2008-11-06T21:52:33.390+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-06T21:52:33.390+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="appjet" /><title>My first AppJet and some thoughts on it</title><content type="html">I write my first &lt;a href="http://www.appjet.com/"&gt;AppJet&lt;/a&gt; application, which is migrate from a Google Gadget.  The migration is smooth and the experience is very good.  The app is called "Goal Chart" you can try it from the following URL.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://goalchart.appjet.net/"&gt;http://goalchart.appjet.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;AppJet is great for writing small-scale web application.  If it provides a XML+HTML parser and support OpenID it will be our dream platform for writing mashup.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-2262061518479133197?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/kvifDaXmZSI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/2262061518479133197/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=2262061518479133197" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/2262061518479133197?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/2262061518479133197?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/kvifDaXmZSI/my-first-appjet-and-some-thoughts-on-it.html" title="My first AppJet and some thoughts on it" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2007/12/my-first-appjet-and-some-thoughts-on-it.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMHQnw6fSp7ImA9WxRWGUU.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-8236269565117099729</id><published>2007-11-24T02:33:00.001+08:00</published><updated>2008-11-06T22:57:13.215+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-06T22:57:13.215+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><title>Howto install Firefox 3 co-exists with Firefox 2</title><content type="html">Mozilla just release &lt;a href="http://www.mozilla.com/en-US/firefox/all-beta.html"&gt;Firefox 3 Beta 1&lt;/a&gt;. Review said it is much faster and consume less memory.  It definitely worth a try but for the obvious reason you have to keep your Firefox 2.  Here is the steps show you how to install Firefox 3 and make it co-exists with Firefox 2.&lt;br /&gt;&lt;br /&gt;1. Right click the shortcut of the Firefox 2, click "Properties".  Add "&lt;span style="font-weight: bold;"&gt;-profilemanager&lt;/span&gt;" at the end of the shortcut path.  Click OK.  Then run this shortcut to launch Firefox Profile Manager.&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center;" src="http://4.bp.blogspot.com/_6Zb6t03gLi4/SRL6U0d4PnI/AAAAAAAAAKM/v9AtdpofbnA/s1600/firefox3-1-profilemanager.png" border="0" /&gt;&lt;br /&gt;2. Create a new profile, name it "&lt;span style="font-weight: bold;"&gt;firefox3&lt;/span&gt;".  And uncheck the "&lt;span style="font-weight: bold;"&gt;Don't ask at startup&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center;" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/SRL6VEeROvI/AAAAAAAAAKc/20hJIKkPAjI/s1600/firefox3-2-createprofile.png" alt="" border="0" /&gt;&lt;br /&gt;3. Go to Properties of the Firefox 2 shortcut again, remove the "-profilemanager" and add "&lt;span style="font-weight: bold;"&gt;-p default&lt;/span&gt;" at the end of the path.  This forces Firefox 2 to open the original profile.&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center;" src="http://4.bp.blogspot.com/_6Zb6t03gLi4/SRL6VHILFxI/AAAAAAAAAKU/_ZUSVuj8Ym8/s1600/firefox3-3-2shortcut.png" alt="" border="0" /&gt;&lt;br /&gt;4. Start install Firefox 3.  Choose "&lt;span style="font-weight: bold;"&gt;Custom&lt;/span&gt;" when you are asked.&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center;" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/SRL6VeIQ4CI/AAAAAAAAAKk/SlEY71peATg/s1600/firefox3-4-custom.png" alt="" border="0" /&gt;&lt;br /&gt;5. The default Destination Folder is "Mozilla Firefox 3 Beta 1", which is stupid when you later update to Beta 2, Beta 3 or even 3.0.1.  So change it to &lt;span style="font-weight: bold;"&gt;Mozilla Firefox 3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center;" src="http://4.bp.blogspot.com/_6Zb6t03gLi4/SRL6Vo4JVkI/AAAAAAAAAKs/jghsKNKAnpg/s1600/firefox3-5-path.png" alt="" border="0" /&gt;&lt;br /&gt;6. Same in Start Menu Folder name.&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center;" src="http://3.bp.blogspot.com/_6Zb6t03gLi4/SRL-v2XzriI/AAAAAAAAAK0/3-ZQl_TvOIs/s1600/firefox3-6-group.png" alt="" border="0" /&gt;&lt;br /&gt;7.  When installation completed, uncheck the "&lt;span style="font-weight: bold;"&gt;Launch Firefox now&lt;/span&gt;".  You still have something to do before you can run it.&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center;" src="http://3.bp.blogspot.com/_6Zb6t03gLi4/SRL-wAUy08I/AAAAAAAAAK8/_AKE2erKYRo/s1600/firefox3-7-nolaunch.png" alt="" border="0" /&gt;&lt;br /&gt;8. Go to the Properties of the Firefox 3 shortcut.  Append "&lt;span style="font-weight: bold;"&gt;-no-remote -p firefox3&lt;/span&gt;" to the Target.  The "-no-remote" will let Firefox run a separate instance.  The "-p firefox3" will force yoru Firefox 3 to run the newly clean profile.&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center;" src="http://3.bp.blogspot.com/_6Zb6t03gLi4/SRL-wFmWwfI/AAAAAAAAALE/kFE553piFfg/s1600/firefox3-8-3shortcut.png" alt="" border="0" /&gt;&lt;br /&gt;9. Run the Firefox 3, and you will be prompted  that your Firefox is not the default browser.  &lt;b&gt;DON'T&lt;/b&gt; click Yes.  Firefox 3 is not stable and you won't like to use it as your default browser.  Simple uncheck the "Always perform this check when starting Firefox" and click No.&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center;" src="http://1.bp.blogspot.com/_6Zb6t03gLi4/SRL_cS2zZvI/AAAAAAAAALw/xluNfCNieUg/s1600/firefox3-9-nodefault.png" border="0" /&gt;&lt;br /&gt;10. Now you can run Firefox 2 and Firefox 3 at the same time.  Enjoy it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-8236269565117099729?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/74V65yIaI50" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/8236269565117099729/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=8236269565117099729" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/8236269565117099729?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/8236269565117099729?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/74V65yIaI50/howto-install-firefox-3-co-exists-with.html" title="Howto install Firefox 3 co-exists with Firefox 2" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_6Zb6t03gLi4/SRL6U0d4PnI/AAAAAAAAAKM/v9AtdpofbnA/s72-c/firefox3-1-profilemanager.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2007/11/howto-install-firefox-3-co-exists-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MNRn07eCp7ImA9WxRWGUo.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-689850204160246597</id><published>2007-11-10T02:37:00.000+08:00</published><updated>2008-11-06T21:51:37.300+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-06T21:51:37.300+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><title>The most overrated Firefox addons</title><content type="html">I like Firefox, and addons is the biggest reason. But some of highly rated addons doesn't seems to be that useful and you shouldn't install them. Here is my brief review of the &lt;a href="https://addons.mozilla.org/en-US/firefox/browse/type:1/cat:all/sort:popular"&gt;top 10 Firefox addons&lt;/a&gt; (as of 9-Nov-2007).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;3. &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/722"&gt;NoScript&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; by Giorgio Maone&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"Winner of the "2006 PC World World Class Award", this tool makes Firefox the safest browser around."&lt;br /&gt;&lt;br /&gt;If you want the safest browser, get &lt;a href="http://lynx.browser.org/"&gt;lynx&lt;/a&gt;. Without javascript you have problem visiting all of your favorite website, including Gmail, Facebook and Meebo. Once installed it, you find yourself just keep allowing javascript for each site you visit, which is very annoying&lt;br /&gt;&lt;br /&gt;Firefox is safe, period.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;6. &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/636"&gt;PDF Download&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; by Denis Remondini&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"Allows to choose if you want to view a PDF file inside the browser (as PDF or HTML), if you want to view it outside Firefox with your default or custom PDF reader, or if you want to download it!"&lt;br /&gt;&lt;br /&gt;If you want to view PDF outside Firefox, use &lt;a href="http://www.foxitsoftware.com/pdf/rd_intro.php"&gt;Foxit Reader&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;9. &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/398"&gt;Forecastfox&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; by richwklein, Jon Stritar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"Get international weather forecasts from AccuWeather.com, and display it in any toolbar or statusbar with this highly customizable and unobtrusive.."&lt;br /&gt;&lt;br /&gt;Believe me, you don't need to know the weather every second. When you want to know, just click the bookmark.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;10. &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/219"&gt;FoxyTunes&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; by Alex Sirota&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"Do you listen to Music while surfing the Web? FoxyTunes lets you control almost any media player and find lyrics, covers, videos, bios and much more with a click right from your browser."&lt;br /&gt;&lt;br /&gt;Just because I like to control my player directly instead of clicking the tiny buttons in my browser.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-689850204160246597?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/KoAVAQid7Vk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/689850204160246597/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=689850204160246597" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/689850204160246597?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/689850204160246597?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/KoAVAQid7Vk/most-overrated-firefox-addons.html" title="The most overrated Firefox addons" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2007/11/most-overrated-firefox-addons.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8DSHY5fip7ImA9WxRVFk8.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-3111071259279130799</id><published>2007-09-29T03:15:00.001+08:00</published><updated>2008-11-14T10:14:39.826+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-14T10:14:39.826+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="google reader" /><title>Greasemonkey script to show actual unread count in Google Reader</title><content type="html">&lt;img src="http://2.bp.blogspot.com/_6Zb6t03gLi4/SRL0hvnH9LI/AAAAAAAAAH8/gfAHRyIFKiI/s1600/greader-unread-1.png" alt="" border="0" /&gt; &lt;img src="http://1.bp.blogspot.com/_6Zb6t03gLi4/SRL0iEBYbEI/AAAAAAAAAIE/8LbmkzAfuz8/s1600/greader-unread-2.png" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;I subscribed over 200 feeds in &lt;a href="http://reader.google.com/"&gt;Google Reader&lt;/a&gt;. And for some reason I did not login for a week, guess what? I have thousands of unread items. At the old days, Google Reader displayed "100+" unread items which is absolutely not enough for most users. After upgrading, it improved. Now it displays "1000+" as unread items count. It is enough for most cases, but not this one.&lt;br /&gt;&lt;br /&gt;I start clearing the articles. After a few hours I loss the motivation. The unread count is always "1000+" and I don't know when can I finish. I don't know the target. I need to know the exact unread items count. So I wrote a Greasemonkey script to calculate the actual unread count.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://userscripts.org/scripts/show/12601" target="_blank"&gt;Install the script in userscripts.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After installed the script, you can see a button (the Google Reader icon) besides the unread count, click on it will do the calculation and update the unread count with the actual number. Note that it will ignore any duplicated entries.&lt;br /&gt;&lt;br /&gt;This is not the best solution. It doesn't auto-update, you have to click it every time. But at least you can get the count and you shouldn't use it every day.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7-Nov-2008 update:&lt;/span&gt;&lt;br /&gt;Version 3 released to fix the layout changed from Google.  &lt;a href="http://angusdev.blogspot.com/2008/11/google-reader-unread-count-version-3.html"&gt;Details here&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;13-Nov-2008 update:&lt;/div&gt;&lt;div&gt;Version 4 released to support Chrome.  &lt;a href="http://angusdev.blogspot.com/2008/11/google-reader-unread-count-version-4.html"&gt;Details here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-3111071259279130799?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/klllTfdN0iI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/3111071259279130799/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=3111071259279130799" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/3111071259279130799?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/3111071259279130799?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/klllTfdN0iI/greasemonkey-script-to-show-actual.html" title="Greasemonkey script to show actual unread count in Google Reader" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_6Zb6t03gLi4/SRL0hvnH9LI/AAAAAAAAAH8/gfAHRyIFKiI/s72-c/greader-unread-1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2008/11/greasemonkey-script-to-show-actual.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QNQ38yfyp7ImA9WxRWGUo.&quot;"><id>tag:blogger.com,1999:blog-6256145082126410735.post-3714170784178271908</id><published>2007-02-07T03:58:00.000+08:00</published><updated>2008-11-06T21:49:52.197+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-06T21:49:52.197+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cygwin" /><title>Preserve directory when change drive in cygwin</title><content type="html">In &lt;a href="http://www.cygwin.com/"&gt;cygwin&lt;/a&gt;,  you can use "cd c:" or "cd d:" to change to different drives.  However, it always change to the root directory of the drive.  In Windows command prompt you have a nice feature that the c: or d: will change to the directory that you previous stayed in that drive.  For example:&lt;br /&gt;&lt;div class="commandprompt"&gt;C:\Program Files\Mozilla Firefox\extensions&gt;d:&lt;br /&gt;D:\&gt;c:&lt;br /&gt;C:\Program Files\Mozilla Firefox\extensions&gt;&lt;/div&gt;&lt;br /&gt;However, in bash, you just can't do this&lt;br /&gt;&lt;br /&gt;&lt;div class="commandprompt"&gt;extensions&gt;cd d:&lt;br /&gt;d&gt;cd c:&lt;br /&gt;c&gt;&lt;/div&gt;&lt;br /&gt;Here I add some aliases to implement this feature in bash.  Add the following lines in $HOME/.bashrc:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;export PWD_c=c:/&lt;br /&gt;export PWD_d=d:/&lt;br /&gt;export PWD_e=e:/&lt;br /&gt;alias c:='export PWD_`expr substr "$PWD" 11 1`="$PWD";cd "$PWD_c"'&lt;br /&gt;alias d:='export PWD_`expr substr "$PWD" 11 1`="$PWD";cd "$PWD_d"'&lt;br /&gt;alias e:='export PWD_`expr substr "$PWD" 11 1`="$PWD";cd "$PWD_e"'&lt;/div&gt;&lt;br /&gt;You may need to add more PWD_x environment variables and alias in case you have more drive.  Make sure you have the quotes (") because of the spaces in long file name.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6256145082126410735-3714170784178271908?l=angusdev.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/angusdeve/~4/Wx1-Oh1-4po" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://angusdev.blogspot.com/feeds/3714170784178271908/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6256145082126410735&amp;postID=3714170784178271908" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/3714170784178271908?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6256145082126410735/posts/default/3714170784178271908?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/angusdeve/~3/Wx1-Oh1-4po/preserve-directory-when-change-drive-in.html" title="Preserve directory when change drive in cygwin" /><author><name>Angus</name><uri>http://www.blogger.com/profile/04572573943214646766</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_6Zb6t03gLi4/S2vOtVYDWAI/AAAAAAAAAgI/kWUceCD12uU/S220/angusdev-logo-400.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://angusdev.blogspot.com/2007/02/preserve-directory-when-change-drive-in.html</feedburner:origLink></entry></feed>

