<?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>Skypher &#187; Firefox</title>
	<atom:link href="http://skypher.com/index.php/category/browsers/firefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://skypher.com</link>
	<description>The blog for absolutely nothing!</description>
	<lastBuildDate>Fri, 16 Jul 2010 08:26:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Apple QuickTime memory corruption when loading BMP file</title>
		<link>http://skypher.com/index.php/2010/04/12/apple-quicktime-memory-corruption-when-loading-bmp-file/</link>
		<comments>http://skypher.com/index.php/2010/04/12/apple-quicktime-memory-corruption-when-loading-bmp-file/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 11:53:01 +0000</pubDate>
		<dc:creator>SkyLined</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[PoC]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://skypher.com/?p=455</guid>
		<description><![CDATA[<p>From <a href="http://support.apple.com/kb/HT4104">http://support.apple.com/kb/HT4104</a>:
CVE-ID: CVE-2010-0536</p>
<p>Impact: Opening a maliciously crafted BMP image may lead to an unexpected application termination or arbitrary code execution</p>
<p>Description: A memory corruption issue exists in the handling of BMP images...]]></description>
			<content:encoded><![CDATA[<p>From <a href="http://support.apple.com/kb/HT4104">http://support.apple.com/kb/HT4104</a>:<br />
CVE-ID: CVE-2010-0536</p>
<p>Impact: Opening a maliciously crafted BMP image may lead to an unexpected application termination or arbitrary code execution</p>
<p>Description: A memory corruption issue exists in the handling of BMP images. Opening a maliciously crafted BMP image may lead to an unexpected application termination or arbitrary code execution. This update addresses the issue by performing additional validation of BMP images.</p>
<p>More details here:<br />
<a href="http://code.google.com/p/skylined/issues/detail?id=11">http://code.google.com/p/skylined/issues/detail?id=11</a></p>
]]></content:encoded>
			<wfw:commentRss>http://skypher.com/index.php/2010/04/12/apple-quicktime-memory-corruption-when-loading-bmp-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advances in heap spraying #1: when size matters.</title>
		<link>http://skypher.com/index.php/2010/01/18/advances-in-heap-spraying-size/</link>
		<comments>http://skypher.com/index.php/2010/01/18/advances-in-heap-spraying-size/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 15:08:02 +0000</pubDate>
		<dc:creator>SkyLined</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming Languages]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://skypher.com/?p=146</guid>
		<description><![CDATA[<p><a href="http://skypher.com/SkyLined/heap_spray/small_heap_spray_generator.html">http://skypher.com/SkyLined/heap_spray/small_heap_spray_generator.html</a></p>
<p>I&#8217;ve created a <a href="http://en.wikipedia.org/wiki/Heap_spraying">heap-spray</a> generator...]]></description>
			<content:encoded><![CDATA[<p><a href="http://skypher.com/SkyLined/heap_spray/small_heap_spray_generator.html">http://skypher.com/SkyLined/heap_spray/small_heap_spray_generator.html</a></p>
<p>I&#8217;ve created a <a href="http://en.wikipedia.org/wiki/Heap_spraying">heap-spray</a> generator. It generates a small piece of JavaScript that sprays the heap using the following customizable settings:<br />
<UL><br />
  <LI><strong>Shellcode</strong>, easy to enter using hexadecimal byte values (see also <a href="http://code.google.com/p/beta3/">BETA3</a>).</LI><br />
  <LI><strong>Target address</strong> and <strong>block size</strong>.</LI><br />
  <LI><strong>heap header size</strong> based on target browsers or manual value.</LI><br />
</UL><br />
The resulting code is smaller than any heap-spray I&#8217;ve seen in the wild:<br />
<UL><br />
  <LI>The heap-spray code itself is <strong>just over 70 bytes</strong>.</LI><br />
  <LI>The shellcode can be encoded using a <strong>custom-build 7-bit encoding</strong>.</LI><br />
</UL><br />
Most exploits contain shellcode encoded as &#8220;\uXXXX&#8221; or even &#8220;%uXXXX&#8221;. The resulting encoded shellcode data contains 3 bytes for every byte in the original shellcode. Because this is very wasteful, it is quite easy to improve on this by creating a custom en-/decoder. The &#8220;7-bit&#8221; encoding I created converts the 16-bit characters in the unicode string that contains the shellcode to a series of 7-bit values, which are encoded into <a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1">latin-1</a> characters. The resulting encoded shellcode data contains only 1.125 bytes for every byte in the shellcode, a saving of almost 63% compared to conventional encodings.<br />
The heap-spray will of course need some additional code to decode the shellcode, so the combined code+data will only be smaller for large enough shellcodes. Because my decoder is also rather small (just under 130 bytes), the break-even point is just under 70 bytes of shellcode. For a a 100 byte shellcode, you save about 50 bytes and for a 200 bytes shellcode, you save about 200 bytes!</p>
<p>You can try out the heap-spray generator <a href="http://skypher.com/SkyLined/heap_spray/small_heap_spray_generator.html">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://skypher.com/index.php/2010/01/18/advances-in-heap-spraying-size/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Memory corruption when loading/unloading Adobe objects through EMBED tag in Firefox</title>
		<link>http://skypher.com/index.php/2009/10/13/memory-corruption-when-loadingunloading-adobe-objects-through-embed-tag-in-firefox/</link>
		<comments>http://skypher.com/index.php/2009/10/13/memory-corruption-when-loadingunloading-adobe-objects-through-embed-tag-in-firefox/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 19:46:52 +0000</pubDate>
		<dc:creator>SkyLined</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Repro]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://skypher.com/?p=262</guid>
		<description><![CDATA[<p>(a.k.a. CVE-2009-2983)</p>
<p>Adobe <a href="http://www.adobe.com/support/security/bulletins/apsb09-15.html">fixed a bug</a> in various COM objects. Loading and unloading these objects in a webpage in Firefox allows memory corruption, which can be exploited to execute arbitrary code...]]></description>
			<content:encoded><![CDATA[<p><em><small>(a.k.a. CVE-2009-2983)</small></em></p>
<p>Adobe <a href="http://www.adobe.com/support/security/bulletins/apsb09-15.html">fixed a bug</a> in various COM objects. Loading and unloading these objects in a webpage in Firefox allows memory corruption, which can be exploited to execute arbitrary code. Here are a number of repro cases for various MIME types:</p>
<p><A target="exploit" href="http://skypher.com/SkyLined/Repro/COM/Object%20instantiation/EMBED%20type%20manual.html?application/pdf">application/pdf</A><br />
<A target="exploit" href="http://skypher.com/SkyLined/Repro/COM/Object%20instantiation/EMBED%20type%20manual.html?application/vnd.adobe.xdp+xml">application/vnd.adobe.xdp+xml</A><br />
<A target="exploit" href="http://skypher.com/SkyLined/Repro/COM/Object%20instantiation/EMBED%20type%20manual.html?application/vnd.adobe.xfd+xml">application/vnd.adobe.xfd+xml</A><br />
<A target="exploit" href="http://skypher.com/SkyLined/Repro/COM/Object%20instantiation/EMBED%20type%20manual.html?application/vnd.adobe.xfdf">application/vnd.adobe.xfdf</A><br />
<A target="exploit" href="http://skypher.com/SkyLined/Repro/COM/Object%20instantiation/EMBED%20type%20manual.html?application/vnd.fdf">application/vnd.fdf</A></p>
<p>PS. Adobe mentions that <EM>&#8220;arbitrary code execution has not been demonstrated&#8221;</EM> without explaining how this is relevant, let me know if you know! <img src='http://skypher.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://skypher.com/index.php/2009/10/13/memory-corruption-when-loadingunloading-adobe-objects-through-embed-tag-in-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross browser parallel asynchronous XMLHttpRequests with timeout.</title>
		<link>http://skypher.com/index.php/2009/09/29/cross-browser-parallel-asynchronous-xmlhttprequests-with-timeout/</link>
		<comments>http://skypher.com/index.php/2009/09/29/cross-browser-parallel-asynchronous-xmlhttprequests-with-timeout/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 20:50:33 +0000</pubDate>
		<dc:creator>SkyLined</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://skypher.com/?p=232</guid>
		<description><![CDATA[<p>AsyncXMLHttpRequest is an extension of XMLHttpRequest with the following improvements:

   Uniform behavior on multiple different browsers (Apple Safari, Google Chrome, Microsoft Internet Explorer, Mozilla Firefox and Opera).
   Event handlers are called with the AsyncXMLHttpRequest object to which they apply as the first argument...]]></description>
			<content:encoded><![CDATA[<p><B>AsyncXMLHttpRequest</B> is an extension of <B>XMLHttpRequest</B> with the following improvements:<br />
<UL><br />
  <LI> Uniform behavior on multiple different browsers (Apple Safari, Google Chrome, Microsoft Internet Explorer, Mozilla Firefox and Opera).</LI><br />
  <LI> Event handlers are called with the <B>AsyncXMLHttpRequest</B> object to which they apply as the first argument. This makes it easy to have multiple parallel requests because there is no need to find out for which object an event has fired.</LI><br />
  <LI> A <B>timeout</B> attribute can be set to a number of milliseconds , the request is aborted if it didn&#8217;t complete within the given number of milliseconds after calling <B>send()</B>.</LI><br />
  <LI> A <B>timedout</B> attribute has been added that is <B>false</B> as long as the request has not been aborted because of a time out and <B>true</B> when it has.</LI><br />
  <LI> Arguments passed to the <B>open()</B> and <B>send()</B> methods are saved in attributes of the object for later reference. These attributes are: <B>method</B>, <B>url</B>, <B>user</B> and <B>password</B> for <B>open()</B> and <B>body</B> for <B>send()</B>.</LI><br />
  <LI> Three additional events have been added: <B>onload</B>, <B>onerror</B> and <B>ontimeout</B>. These are called when the <B>readyState</B> has changed to 4 and the request has, respectively, succeeded (no timeout, <B>status</B> == 2xx), failed (no timeout, <B>status</B> != 2xx) or has timed out.</LI><br />
</UL></p>
<p><BIG><B> Cross Browser Uniform Behavior </B></BIG><br />
To make <B>AsyncXMLHttpRequest</B> work uniformly across different browsers, it catches and handles some exceptions that are throw in some browsers, but not in others. Specifically, Firefox, MSIE and Opera throw exceptions when calling the <B>open()</B> and <B>send()</B> methods for certain invalid or cross-origin urls. If any of these exceptions are caught and handled, the request will fail similar to other browser by having <B>status</B> == 0 after the <B>readyState</B> has changed to 4.</p>
<p><BIG><B> Parallel Requests </B></BIG><br />
To allow any number of parallel requests to take place and still keep track of which request is in what state, all event handlers are passed the <B>AsyncXMLHttpRequest</B> object to which they apply. In other words, when a certain <B>AsyncXMLHttpRequest</B> object is done (<B>readyState</B> == 4), the <B>onreadystatechange</B> event handler is called with the <B>AsyncXMLHttpRequest</B> object to which it applies as the first argument of the call.</p>
<p><BIG><B> Source </B></BIG><br />
Available through <A href="http://code.google.com/p/asyncxmlhttprequest/">Google code</A>.</p>
<p><BIG><B> Example </B></BIG><br />
This example shows that you can create any number of parallel requests (the browser or OS may have a built in limit) without having to keep track of which object an event is firing for because it is passes as an argument to the event handler:</p>
<p><CODE><br />
&lt;HTML&gt;<br />
  &lt;BODY onload=&#8221;go()&#8221;&gt;&lt;/BODY&gt;<br />
  &lt;SCRIPT src=&#8221;AsyncXMLHttpRequest.js&#8221;&gt;&lt;/SCRIPT&gt;<br />
  &lt;SCRIPT&gt;<br />
    function go() {<br />
      for (var i = 0; i &lt; 30; i++) {<br />
        request(location + &#8220;?&#8221; + i);<br />
      }<br />
    }<br />
    function request(url) {<br />
      span = document.createElement(&#8220;DIV&#8221;);<br />
      document.body.appendChild(span);<br />
      span.innerHTML = &#8220;&lt;B&gt;&#8221; + url + &#8220;&lt;/B&gt;&#8221;;<br />
      xmlhttp = new AsyncXMLHttpRequest();<br />
      xmlhttp.span = span;<br />
      xmlhttp.onload = load;<br />
      xmlhttp.onerror = error;<br />
      xmlhttp.ontimeout = timeout;<br />
      xmlhttp.timeout = 1000;<br />
      xmlhttp.onreadystatechange = rs;<br />
      xmlhttp.open(&#8220;GET&#8221;, url);<br />
      xmlhttp.send();<br />
    }<br />
    function rs(xmlhttp) {<br />
      xmlhttp.span.innerHTML += &#8221; rs:&#8221; + xmlhttp.readyState;<br />
    }<br />
    function load(xmlhttp) {<br />
      xmlhttp.span.innerHTML += &#8221; load:&#8221; + xmlhttp.status;<br />
    }<br />
    function error(xmlhttp) {<br />
      xmlhttp.span.innerHTML += &#8221; error:&#8221; + xmlhttp.status;<br />
    }<br />
    function timeout(xmlhttp) {<br />
      xmlhttp.span.innerHTML += &#8221; timeout:&#8221; + xmlhttp.status;<br />
    }<br />
  &lt;/SCRIPT&gt;<br />
&lt;/HTML&gt;<br />
&nbsp;<br />
</CODE></p>
]]></content:encoded>
			<wfw:commentRss>http://skypher.com/index.php/2009/09/29/cross-browser-parallel-asynchronous-xmlhttprequests-with-timeout/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Security contacts</title>
		<link>http://skypher.com/index.php/2008/12/10/security-contacts/</link>
		<comments>http://skypher.com/index.php/2008/12/10/security-contacts/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 17:52:49 +0000</pubDate>
		<dc:creator>SkyLined</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[contact information]]></category>
		<category><![CDATA[security team]]></category>
		<category><![CDATA[software vendors]]></category>

		<guid isPermaLink="false">http://skypher.com/?p=78</guid>
		<description><![CDATA[<p>I&#8217;ve created a table with contact information for security teams for mayor software vendors. I&#8217;m hoping you&#8217;ll find the information useful when you&#8217;re trying to report a vulnerability...]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve created a table with contact information for security teams for mayor software vendors. I&#8217;m hoping you&#8217;ll find the information useful when you&#8217;re trying to report a vulnerability. If you have any more contact information or find an error in the list, <a title="mail me" href="mailto:berendjanwever@gmail.com" target="_blank">let me know</a>.</p>
<p>The list is here:<br />
<span><a href="http://skypher.com/wiki/index.php?title=List_of_security_teams_contact_information">http://skypher.com/wiki/index.php?title=List_of_security_teams_contact_information</a><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://skypher.com/index.php/2008/12/10/security-contacts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript stack trace</title>
		<link>http://skypher.com/index.php/2008/08/26/javascript-stack-trace/</link>
		<comments>http://skypher.com/index.php/2008/08/26/javascript-stack-trace/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 10:07:43 +0000</pubDate>
		<dc:creator>SkyLined</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[stack]]></category>

		<guid isPermaLink="false">http://skypher.com/?p=38</guid>
		<description><![CDATA[<p>I&#8217;ve created an example script that outputs a stack dump in JavaScript. It shows all the functions that have been called, their arguments and the values of these arguments. I find it to be very useful while writing complex JavaScripts &#8211; I use it in asserts and error handlers to find out why things go wrong quickly...]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve created an example script that outputs a stack dump in JavaScript. It shows all the functions that have been called, their arguments and the values of these arguments. I find it to be very useful while writing complex JavaScripts &#8211; I use it in asserts and error handlers to find out why things go wrong quickly. It works in Internet Explorer, FireFox and Safari, but not in Opera.</p>
<p><a title="JavaScript stack dump" href="http://skypher.com/wiki/index.php?title=JS/Stack_dump" target="_self">Available here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://skypher.com/index.php/2008/08/26/javascript-stack-trace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Enhancements</title>
		<link>http://skypher.com/index.php/2008/08/15/google-enhancements/</link>
		<comments>http://skypher.com/index.php/2008/08/15/google-enhancements/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 13:43:48 +0000</pubDate>
		<dc:creator>Cipher</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[hl]]></category>
		<category><![CDATA[iGoogle]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Search]]></category>

		<guid isPermaLink="false">http://skypher.com/?p=36</guid>
		<description><![CDATA[<p>I&#8217;ve updated <a href="http://userscripts.org/users/49212/scripts">my userscripts</a> for Google with Greasemonkey.</p>
<p><a class="title" title="Google Instant Type" href="http://userscripts.org/scripts/show/25596">Google Instant Type</a></p>
<p>I added the Classic homepage to the list where it should add the buttons...]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve updated <a href="http://userscripts.org/users/49212/scripts">my userscripts</a> for Google with Greasemonkey.</p>
<p><strong><a class="title" title="Google Instant Type" href="http://userscripts.org/scripts/show/25596">Google Instant Type</a></strong></p>
<p>I added the Classic homepage to the list where it should add the buttons. I also added a button to search Google News.</p>
<p><strong><a class="title" title="Google Own Language" href="http://userscripts.org/scripts/show/24756">Google Own Language</a></strong></p>
<p>Fixed the layout crash due to Google&#8217;s tiny HTML adjustment. Also added support for Google News and Images.</p>
<p>Please feel free to respond if you have a request!</p>
]]></content:encoded>
			<wfw:commentRss>http://skypher.com/index.php/2008/08/15/google-enhancements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iGoogle enhancement</title>
		<link>http://skypher.com/index.php/2008/04/30/igoogle-enhancement/</link>
		<comments>http://skypher.com/index.php/2008/04/30/igoogle-enhancement/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 07:50:49 +0000</pubDate>
		<dc:creator>Cipher</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[iGoogle]]></category>
		<category><![CDATA[Search]]></category>

		<guid isPermaLink="false">http://skypher.com/?p=7</guid>
		<description><![CDATA[<p>I was talking to Skylined about greasemonkey and my language enhancement of the results of Google, when we came up with another one, dubbed: Instant Search Type.</p>
<p>This new script removes the &#8220;I&#8217;m feeling Lucky&#8221; button and adds an Images and a Maps button...]]></description>
			<content:encoded><![CDATA[<p>I was talking to Skylined about greasemonkey and my language enhancement of the results of Google, when we came up with another one, dubbed: Instant Search Type.</p>
<p>This new script removes the &#8220;I&#8217;m feeling Lucky&#8221; button and adds an Images and a Maps button. Using these buttons, you can instantly search Images or Maps.</p>
<p>More information, installation and a preview is available at <a title="Instant Search Type @ Userscripts" href="http://userscripts.org/scripts/show/25596">userscripts.org</a> (http://userscripts.org/scripts/show/25596)</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://skypher.com/index.php/2008/04/30/igoogle-enhancement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Language Change</title>
		<link>http://skypher.com/index.php/2008/04/09/google-language-change/</link>
		<comments>http://skypher.com/index.php/2008/04/09/google-language-change/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 17:23:25 +0000</pubDate>
		<dc:creator>Cipher</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[Language]]></category>

		<guid isPermaLink="false">http://skypher.com/?p=3</guid>
		<description><![CDATA[<p>Recently I discovered <a href="https://addons.mozilla.org/en-US/firefox/addon/748">greasemonkey</a> throu the <a href="http://lifehacker.com/">lifehacker</a> website.
After it&#8217;s possibilities sank in, I figured out one of my main frustrations: Google. in particular, it&#8217;s language settings...]]></description>
			<content:encoded><![CDATA[<p>Recently I discovered <a href="https://addons.mozilla.org/en-US/firefox/addon/748">greasemonkey</a> throu the <a href="http://lifehacker.com/">lifehacker</a> website.<br />
After it&#8217;s possibilities sank in, I figured out one of my main frustrations: Google. in particular, it&#8217;s language settings. Once you switch to Dutch, it&#8217;s hard to switch back.<br />
Greasemonkey offers the possibility to add custom JavaScript to any website.<br />
So I wrote a small script to add small links to either Dutch or English results.</p>
<p>The current version can make links for <span style="font-style: italic;">x </span> script languages. To change the languages please download the script from <a href="http://userscripts.org/scripts/show/24756">userscripts.org</a> and alter the little array (code comment will guide you). Or install it directly if you think Dutch, English and French are sufficient.</p>
<p>[update 11 April]</p>
<p>I&#8217;ve updated the script. You can now change language tags on the fly, using the Greasemonkey User Script Commands Menu. Throu the same menu, you can change the font size.</p>
]]></content:encoded>
			<wfw:commentRss>http://skypher.com/index.php/2008/04/09/google-language-change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
