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

<channel>
	<title>Ryanium.com</title>
	<atom:link href="http://www.ryanium.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ryanium.com</link>
	<description>Sketch pad of Ryan Li</description>
	<lastBuildDate>Thu, 24 Nov 2011 05:45:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Making boot image for Huawei C8650</title>
		<link>http://www.ryanium.com/android/making-boot-image-for-huawei-c8650/</link>
		<comments>http://www.ryanium.com/android/making-boot-image-for-huawei-c8650/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 05:45:57 +0000</pubDate>
		<dc:creator>Ryan Li</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.ryanium.com/?p=149</guid>
		<description><![CDATA[There is an excellent post on unpacking and repacking the boot.img for Android systems, however, not only the the links to scripts are broken, also they may not work for certain devices. For example, Huawei C8650 is an exception, running &#8230; <a href="http://www.ryanium.com/android/making-boot-image-for-huawei-c8650/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There is an excellent post on <a href="http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack%2C_Edit%2C_and_Re-Pack_Boot_Images">unpacking and repacking the boot.img</a> for Android systems, however, not only the the links to scripts are broken, also they may not work for certain devices.</p>
<p>For example, Huawei C8650 is an exception, running <code>repack-bootimg.pl</code> immediately after <code>unpack-bootimg.pl</code> result in a different <code>boot.img</code> — the scripts don&#8217;t take all possible arguments into consideration.</p>
<p>And after a little investigation, I found out a way to integrate a newly built kernel into your image, given that you already have Android built on your machine:</p>
<ol>
<li>Use <a href="http://www.ryanium.com/scripts/split_bootimg.pl"><code>split_bootimg.pl</code></a> to split an existing <code>boot.img</code> into <code>boot.img-kernel</code> and <code>boot.img-ramdisk.gz</code>.</li>
<li>Run in your shell:
<p><code>$ANDROID_SRC_DIR/out/host/linux-x86/bin/mkbootimg --kernel $NEW_KERNEL --ramdisk boot.img-ramdisk.gz --cmdline 'console=ttyDCC0 androidboot.hardware=huawei' --base 0x10200000 -o $NEW_IMG</code>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.ryanium.com/android/making-boot-image-for-huawei-c8650/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Setting up Huawei C8650 for adb under GNU/Linux</title>
		<link>http://www.ryanium.com/android/setting-up-huawei-c8650-for-adb-under-gnulinux/</link>
		<comments>http://www.ryanium.com/android/setting-up-huawei-c8650-for-adb-under-gnulinux/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 15:52:54 +0000</pubDate>
		<dc:creator>Ryan Li</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.ryanium.com/?p=147</guid>
		<description><![CDATA[I wasn&#8217;t able to connect to my Huawei C8650 device with adb (Android debug bridge) from my Gentoo box for a long time, but I found out this post, informing that the following command could solve this issue: echo 22 &#8230; <a href="http://www.ryanium.com/android/setting-up-huawei-c8650-for-adb-under-gnulinux/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I wasn&#8217;t able to connect to my Huawei C8650 device with <code>adb</code> (<a href="http://developer.android.com/sdk/index.html" title="Android SDK" target="_blank">Android debug bridge</a>) from my Gentoo box for a long time, but I found out <a href="http://pengpeng.biz/?p=33" title="C8650 ubuntu真机调试不能识别" target="_blank">this post</a>, informing that the following command could solve this issue:</p>
<p><code>echo 22 > /sys/devices/platform/msm_hsusb/gadget/fixusb</code></p>
<p>Now it shows up in <code>./adb devices</code>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryanium.com/android/setting-up-huawei-c8650-for-adb-under-gnulinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Awesome Android.</title>
		<link>http://www.ryanium.com/android/awesome-android/</link>
		<comments>http://www.ryanium.com/android/awesome-android/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 15:04:34 +0000</pubDate>
		<dc:creator>Ryan Li</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.ryanium.com/?p=140</guid>
		<description><![CDATA[Despite getting a webOS phone, Palm Pixi Plus, in early March, only half a year later I again jumped into another boat, Android this time, after getting more and more frustrated with the webOS device. After three days use of &#8230; <a href="http://www.ryanium.com/android/awesome-android/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Despite getting a webOS phone, Palm Pixi Plus, in early March, only half a year later I again jumped into another boat, Android this time, after getting more and more frustrated with the webOS device.</p>
<p>After three days use of <a href="http://www.huaweidevice.com/cn/productFeatures.do?pinfoId=2818&#038;treeId=3677&#038;directoryId=5005&#038;tab=0" title="Huawei C8650">Huawei C8650</a>, I realized why HP <a href="developer.palm.com/index.php?option=com_content&#038;view=article&#038;id=1840&#038;Itemid=34" title="HP halts development on webOS">halted the development on webOS</a> — Android is fast, easy-to-use, and most important of all, it&#8217;s more open than webOS.</p>
<p>One of the most important aspect of webOS was its UI. The introduction of card-based applications, innovative user interaction with the mobile phone, including gesture area and swipe-to-delete, are something to be missed after switching to Android. But those features, when in webOS, didn&#8217;t make that much sense since the system is slow enough to run only one application, not to mention two or three: what would application cards be of use then? Running multiple applications is reasonable when you already have adequate hardware to support it.</p>
<p>These couple days with an Android phone are really nice, despite that my roommates has criticized the low resolution of my device, which I at first rejected but eventually conceded the truth. Once having gotten rid of the default system which contains numerous carrier-provided (i.e. useless) applications and substituting with a capable system, I am able to exploit the capability of Android, and Google behind it.</p>
<p>The contact book has extensive support for Chinese, ordering and categorizing people&#8217;s names by pinyin automatically, and full names entered in Gmail can be split into given name and family name automatically: an easy example of Chinese language processing which has been studied thoroughly but no one ever used it publicly by default before.</p>
<p>And obviously, the dedicated Gmail client is way better than the E-mail client in webOS, which was already good enough.</p>
<p>The only real difficulty I have encountered, is that I am unable to connect to my device from my Gentoo laptop via <code>adb</code>. I am still not sure of the reason behind this, more strangely, it can be recognized under Window$ 7 in the same machine, and Gentoo could recognize my roommate&#8217;s Moto Defy. Should I be able to solve this (hopefully), I&#8217;ll post again here.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryanium.com/android/awesome-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An interesting post on dynamic languages</title>
		<link>http://www.ryanium.com/programming/an-interesting-post-on-dynamic-languages/</link>
		<comments>http://www.ryanium.com/programming/an-interesting-post-on-dynamic-languages/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 08:57:59 +0000</pubDate>
		<dc:creator>Ryan Li</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Programming Languages]]></category>

		<guid isPermaLink="false">http://www.ryanium.com/?p=136</guid>
		<description><![CDATA[I haven&#8217;t read it in full yet, but it seems very interesting and informative, I may write a more detailed review later. Anyway, here it is: http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t read it in full yet, but it seems very interesting and informative, I may write a more detailed review later.</p>
<p>Anyway, here it is:<br />
<a href="http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html" title="http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html">http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryanium.com/programming/an-interesting-post-on-dynamic-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HP webOS Internet access via USB</title>
		<link>http://www.ryanium.com/webos/hp-webos-internet-access-via-usb/</link>
		<comments>http://www.ryanium.com/webos/hp-webos-internet-access-via-usb/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 14:22:39 +0000</pubDate>
		<dc:creator>Ryan Li</dc:creator>
				<category><![CDATA[webOS]]></category>

		<guid isPermaLink="false">http://www.ryanium.com/?p=129</guid>
		<description><![CDATA[Sometimes it&#8217;s annoying to find it unable to do something which seems quite natural, take this for example: your computer has access to the Internet, and your phone can connect to your computer with a USB cable, but at times, &#8230; <a href="http://www.ryanium.com/webos/hp-webos-internet-access-via-usb/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Sometimes it&#8217;s annoying to find it unable to do something which seems quite natural, take this for example: your computer has access to the Internet, and your phone can connect to your computer with a USB cable, but at times, it&#8217;s simply impossible to connect your phone to the Internet via the computer.</p>
<p>However, under <a href="http://developer.palm.com/">webOS</a> with the Linux kernel and some UNIX tools, this is realizable. Here&#8217;s an introduction on how to achieve this. (<em>Tested with Palm Pixi Plus under <a href="http://www.gentoo.org/">Gentoo GNU/Linux</a>.</em> Should also be working with other phones and distributions.)</p>
<ol>
<li>A preparation step: you need to have the <a href="http://www.webos-internals.org/wiki/Portal:Accessing_Linux">access to the <strong>Linux shell</strong> on your phone</a>, and have <code>novaterm</code> available on your computer, which is used to access the phone shell from your computer.</li>
<li>Enable <a href="http://www.webos-internals.org/wiki/USBnet_Setup">enable <strong>USBnet</strong></a> on your phone, and connect it to your computer. Make sure you have the the <em>usb0</em> interface properly shown upon the <code>ifconfig</code> command on both the computer and the phone. We assume the IP of the computer is 192.168.0.201, and the IP of the phone is 192.168.0.202.</li>
<li>Install <a href="http://www.squid-cache.org/"><strong>squid</strong></a> on your computer. It will open up a port to redirect requests from your mobile phone. The default configuration should work. After installation completes, run <code>/etc/init.d/squid start</code> to start the daemon.</li>
<li>Then we <strong>redirect TCP requests</strong> from the phone to the computer by running this command in novaterm:<br />
<code>
<pre>iptables -t nat -A OUTPUT -p tcp -j DNAT --to-destination 192.168.0.201:3128</pre>
<p></code> Replace <code>192.168.0.201:3128</code> with the actual IP of the computer and the actual port squid is listening to.
	</li>
<li>Finally, we tell the <strong>route table</strong> to route the packages to the usb0 interface, so that the requests go properly to your computer instead of WIFI/mobile network. To complete this, we run:<br />
<code>
<pre>route add -net 0.0.0.0 netmask 128.0.0.0 dev usb0
route add -net 128.0.0.0 netmask 128.0.0.0 dev usb0</pre>
<p></code>
	</li>
</ol>
<p>And here we go! We should now be able to access the Internet from the phone via the computer network.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryanium.com/webos/hp-webos-internet-access-via-usb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Election Cruncher — 北京大学补选脚本</title>
		<link>http://www.ryanium.com/scripts/election-cruncher/</link>
		<comments>http://www.ryanium.com/scripts/election-cruncher/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 13:30:39 +0000</pubDate>
		<dc:creator>Ryan Li</dc:creator>
				<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://www.ryanium.com/?p=118</guid>
		<description><![CDATA[Election Cruncher 是一个适用于在北京大学补退选期间自动补选的 Greasemonkey 脚本. 该脚本在 GNU General Public License version 3 下发布. 使用 Greasemonkey 安装脚本后在补退选页面即可看见相关选项, 填写验证码之后点击“Go!”可开始自动刷新, 如果有空位自动补上. 理论上可以同时对多个课程进行刷新, 并补选第一个有空位的课程, 但是实际操作中由于服务器方的原因, 可能只有一个能够正常运行. 安装 Election Cruncher]]></description>
			<content:encoded><![CDATA[<p>Election Cruncher 是一个适用于在北京大学补退选期间自动补选的 <a href="https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/">Greasemonkey</a> 脚本. 该脚本在 <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License version 3</a> 下发布.</p>
<p>使用 Greasemonkey 安装脚本后在<a href="http://elective.pku.edu.cn/elective2008/edu/pku/stu/elective/controller/supplement/SupplyAndCancel.do">补退选页面</a>即可看见相关选项, 填写验证码之后点击“Go!”可开始自动刷新, 如果有空位自动补上. 理论上可以同时对多个课程进行刷新, 并补选第一个有空位的课程, 但是实际操作中由于服务器方的原因, 可能只有一个能够正常运行.</p>
<p><a href="/scripts/election-cruncher.user.js">安装 Election Cruncher</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryanium.com/scripts/election-cruncher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>/etc/adjtime causing time shift after NTP sync</title>
		<link>http://www.ryanium.com/gnulinux/etc-adjtime-causing-time-shift/</link>
		<comments>http://www.ryanium.com/gnulinux/etc-adjtime-causing-time-shift/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 06:04:29 +0000</pubDate>
		<dc:creator>Ryan Li</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://www.ryanium.com/?p=116</guid>
		<description><![CDATA[Some days ago, I made some changes to my time settings for Gentoo in /etc/conf.d/clock, then synchronized my local time with an NTP server, and was happy to see that everything is right in order. However after the next boot, &#8230; <a href="http://www.ryanium.com/gnulinux/etc-adjtime-causing-time-shift/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Some days ago, I made some changes to my time settings for Gentoo in <code>/etc/conf.d/clock</code>, then synchronized my local time with an NTP server, and was happy to see that everything is right in order.<br />
However after the next boot, the system time went to a seemingly random value, and I have to run <code>sntp -r my.ntp.server</code> each time the system boots up.<br />
And finally I find out the problem: after sntp syncs with the NTP server, it leaves a file /etc/adjtime that indicates the time difference from the system and the remote server. So it adjusts the time every time after booting. Removing it solves the problem for me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryanium.com/gnulinux/etc-adjtime-causing-time-shift/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liferea 订阅 Blogbus 重复条目问题</title>
		<link>http://www.ryanium.com/gnome/liferea-duplicate-blogbus-items/</link>
		<comments>http://www.ryanium.com/gnome/liferea-duplicate-blogbus-items/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 16:39:49 +0000</pubDate>
		<dc:creator>Ryan Li</dc:creator>
				<category><![CDATA[GNOME]]></category>

		<guid isPermaLink="false">http://www.ryanium.com/?p=110</guid>
		<description><![CDATA[Liferea 在订阅 Blogbus 的博客时每次更新都会把所有条目重新载入一遍. 于是只好退订了 Blogbus. 过了好多个月想起这件事, 发现已经有人遇到过这个问题, 不过给的 sed 脚本已经过时了. 这里是新的解决方法: 在 Liferea 的 feed 属性中, 进入 Source 标签. 启用 Use conversion filter, 并使用 sed -r 's&#124;&#60;div class="sysmsg"&#62;.*?&#60;/div&#62;&#124;&#124;g' 作为 filter.]]></description>
			<content:encoded><![CDATA[<p><a href="http://liferea.sourceforge.net/">Liferea</a> 在订阅 <a href="http://www.blogbus.com/">Blogbus</a> 的博客时每次更新都会把所有条目重新载入一遍. 于是只好退订了 Blogbus.</p>
<p>过了好多个月想起这件事, 发现已经<a href="http://kang.v.6test.edu.cn/blog/13/">有人遇到过这个问题</a>, 不过给的 <code>sed</code> 脚本已经过时了.</p>
<p>这里是新的解决方法:</p>
<ol>
<li>在 Liferea 的 feed 属性中, 进入 Source 标签.</li>
<li>启用 Use conversion filter, 并使用 <code>sed  -r 's|&lt;div class="sysmsg"&gt;.*?&lt;/div&gt;||g'</pre>
<p></code> 作为 filter.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.ryanium.com/gnome/liferea-duplicate-blogbus-items/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hanvon N516 bricked</title>
		<link>http://www.ryanium.com/general/hanvon-n516-bricked/</link>
		<comments>http://www.ryanium.com/general/hanvon-n516-bricked/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 12:06:15 +0000</pubDate>
		<dc:creator>Ryan Li</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ryanium.com/?p=105</guid>
		<description><![CDATA[I borrowed a Hanvon N516 eReader from the school library at noon today. Hours later, I successfully made it a brick. Here is what I have done: As I know that there is a newer firmware, namely 23420, available, I &#8230; <a href="http://www.ryanium.com/general/hanvon-n516-bricked/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I borrowed a <a href="http://www.hanwang.com.cn/epbooks/product/N516-2.html">Hanvon N516 eReader</a> from the school library at noon today.</p>
<p>Hours later, I successfully made it a brick.<br />
<div id="attachment_106" class="wp-caption alignleft" style="width: 310px"><a href="http://www.ryanium.com/wp-content/uploads/2011/01/IMG_0179.jpg"><img src="http://www.ryanium.com/wp-content/uploads/2011/01/IMG_0179-300x225.jpg" alt="Hanvon N510 brickshot" title="Bricked!" width="300" height="225" class="size-medium wp-image-106" /></a><p class="wp-caption-text">Hanvon N510 brickshot</p></div><br />
Here is what I have done: As I know that there is a newer firmware, namely 23420, available, I decided to fetch and install it. And after the update is finished and I&#8217;m prompted to restart the machine, the terrible thing happens: it&#8217;s stuck at its welcome image, and not responding to any key press other than the reset button. Even after reset, the same thing still.</p>
<p>I tried several methods on some Chinese forums, press rotate and then power, discharge the battery, and none worked.</p>
<p>I&#8217;ll have to go to Zhongguancun (中关村), and ask if they could repair it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryanium.com/general/hanvon-n516-bricked/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Chrome extensions? No good.</title>
		<link>http://www.ryanium.com/web/chrome-extensions-no-good/</link>
		<comments>http://www.ryanium.com/web/chrome-extensions-no-good/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 07:03:32 +0000</pubDate>
		<dc:creator>Ryan Li</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.ryanium.com/?p=94</guid>
		<description><![CDATA[In the past several days I tried out Google&#8216;s latest browser, Google Chrome 8. Indeed it is very fast when coming to HTML rendering and JS execution, but its non-uniform look with the system and the lack of extension support, &#8230; <a href="http://www.ryanium.com/web/chrome-extensions-no-good/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In the past several days I tried out <a href="http://www.google.com/">Google</a>&#8216;s latest browser, <a href="http://www.google.com/chrome">Google Chrome</a> 8.</p>
<p>Indeed it is very fast when coming to HTML rendering and JS execution, but its non-uniform look with the system and the lack of extension support, makes it very frustrating for me to use it.</p>
<p>Unlike <a href="http://www.firefox.com/">Firefox</a> and other Mozilla platform based browsers, in which extensions can have full access to the browser itself and content document, Chrome extensions are divided into two parts:</p>
<ul>
<li>Background pages</li>
<li>Content scripts</li>
</ul>
<p>Each of them are restricted either to the browser chrome, or the content document. And they communicate through message passing. It can be illustrated as so (excuse me for my Inkscape skills):<br />
<a href="http://www.ryanium.com/wp-content/uploads/2010/12/drawing.png"><img src="http://www.ryanium.com/wp-content/uploads/2010/12/drawing-223x300.png" alt="" title="drawing" width="223" height="300" class="aligncenter size-medium wp-image-95" /></a></p>
<p>Compared to Firefox, it is quite convenient to develop a light weight extension to Chrome: it&#8217;s just like using Greasemonkey with user scripts. However, the defects of the underlying JavaScript language, makes it very hard, if not impossible, to develop a large-scale extension.</p>
<p>The message passing between content scripts and background is surely asynchronous, while due to the implementation of underlying JavaScript language, it&#8217;s essentially impossible to block on an asynchronous call, as JavaScript is executed in one thread. <strong>You need to provide a callback.</strong> Combined with the native infectiousness of asynchronous calls, if you use it in a part of your code, it&#8217;s likely to spread over all your code.</p>
<p>Consider this situation: an extension&#8217;s preferences is stored in the <code>localStorage</code> provided by the browser. In order to access it&#8217;s very own preference, a content script need to make an asynchronous call to the background script. And…? You see here that we now need to arrange our code <em>in favour of where the asynchronous calls appear, instead of their functionalities.</em></p>
<p>Yes, this is an issue for all JavaScript asynchronous calls, but in Chrome, the separation of content and browser, forces away all other work-arounds: the only thing you can pass as a message, must be a JSON object.</p>
<p>Furthermore, there are some other needless restrictions for content scripts: their XMLHttpRequests must obey the <a href="http://en.wikipedia.org/wiki/Same_origin_policy">same origin policy</a>. But, the background script are not restricted by this, and could therefore pass the result of XHR to content scripts by message passing mentioned above. So, what&#8217;s the use for restricting these content scripts? This completely makes no sense.</p>
<p>The tolerance of JavaScript has already introduced so much amateur, error-prone code, and the extension framework of Google Chrome even make well structured programs impossible to write.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryanium.com/web/chrome-extensions-no-good/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

