<?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>blog.world3.net</title>
	<atom:link href="http://blog.world3.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.world3.net</link>
	<description>たとえ溺れても梦はゆめでしかない</description>
	<lastBuildDate>Thu, 02 Feb 2012 15:23:46 +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>XMEGA USART unsets output direction on ports when disabling TX</title>
		<link>http://blog.world3.net/2012/02/xmega-usart-unsets-output-direction-on-ports-when-disabling-tx/</link>
		<comments>http://blog.world3.net/2012/02/xmega-usart-unsets-output-direction-on-ports-when-disabling-tx/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 15:23:46 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[avr]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=452</guid>
		<description><![CDATA[I noticed that if I set the TX pin of a port to output and then enable the USART it works. If I then disable the TXEN bit (necessary because with IR comms the TX line has to be held low during reception, otherwise the transceiver blinds itself) the TX port pin is reset to being an [...]]]></description>
			<content:encoded><![CDATA[<p>I noticed that if I set the TX pin of a port to output and then enable the USART it works. If I then disable the TXEN bit (necessary because with IR comms the TX line has to be held low during reception, otherwise the transceiver blinds itself) the TX port pin is reset to being an input. Unless you set it back to being an output the USART will be unable to send any more data when you re-enabled TXEN.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2012/02/xmega-usart-unsets-output-direction-on-ports-when-disabling-tx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fix Windows 7 not booting due to missing AHCI drivers</title>
		<link>http://blog.world3.net/2012/01/fix-windows-7-not-booting-due-to-missing-ahci-drivers/</link>
		<comments>http://blog.world3.net/2012/01/fix-windows-7-not-booting-due-to-missing-ahci-drivers/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 15:26:49 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=449</guid>
		<description><![CDATA[If you change mobo and chipset Windows might not boot due to loading the wrong AHCI drivers at boot time. To speed up booting it only loads the ones it thinks it needs, and once set is not designed to change. To enable them all again go to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci and change the Start key value to [...]]]></description>
			<content:encoded><![CDATA[<p>If you change mobo and chipset Windows might not boot due to loading the wrong AHCI drivers at boot time. To speed up booting it only loads the ones it thinks it needs, and once set is not designed to change. To enable them all again go to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci and change the Start key value to 0.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2012/01/fix-windows-7-not-booting-due-to-missing-ahci-drivers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fix Firefox image decoding performance regression</title>
		<link>http://blog.world3.net/2012/01/fix-firefox-image-decoding-performance-regression/</link>
		<comments>http://blog.world3.net/2012/01/fix-firefox-image-decoding-performance-regression/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 18:34:35 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[idiots]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=447</guid>
		<description><![CDATA[For some reason Mozilla changed Firefox to decode imagines only when they are visible, meaning that they now slowly appear as you scroll down a page instead of loading quickly in the background first. Seems like a misguided attempt to save some memory. The fix is to set image.mem.decodeondraw to false.]]></description>
			<content:encoded><![CDATA[<p>For some reason Mozilla changed Firefox to decode imagines only when they are visible, meaning that they now slowly appear as you scroll down a page instead of loading quickly in the background first. Seems like a misguided attempt to save some memory. The fix is to set image.mem.decodeondraw to false.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2012/01/fix-firefox-image-decoding-performance-regression/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ebay location script fix</title>
		<link>http://blog.world3.net/2012/01/ebay-location-script-fix/</link>
		<comments>http://blog.world3.net/2012/01/ebay-location-script-fix/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 18:32:33 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=445</guid>
		<description><![CDATA[Ebay broke it, I fixed it&#8230; Greasemonkey as usual. // ==UserScript== // @name           Ebay-Location-Route // @namespace      www.ebay.co.uk // @description    Adds a link for the item location on google maps // @include       http://*ebay.* // ==/UserScript== // Version 0.5 // author: knoe/MoJo //Configuration var home = "Nowhere"; //home var blank = false;                   //open [...]]]></description>
			<content:encoded><![CDATA[<p>Ebay broke it, I fixed it&#8230; Greasemonkey as usual.</p>
<pre>// ==UserScript==
// @name           Ebay-Location-Route
// @namespace      www.ebay.co.uk
// @description    Adds a link for the item location on google maps
// @include       http://*ebay.*
// ==/UserScript==
// Version 0.5
// author: knoe/MoJo

//Configuration
var home = "Nowhere"; //home
var blank = false;                   //open link on a blank page?
//Config end

//it looks like ebay changes a lot :)
//var ebayClass= new Array("titlePurchase", "inf_lab");
var ebayClass= new Array("titlePurchase", "sh-DlvryDtl");

for (var j = 0; j &lt; ebayClass.length; j++)
{
    //check each element of the ebayClass
    for (var i = 0; i&lt;document.getElementsByClassName(ebayClass[j]).length; i++)
    {
        //if the location has been found do the link stuff
        var toCheck = document.getElementsByClassName(ebayClass[j])[i].firstChild.data;
        //if (toCheck == "Artikelstandort:" || toCheck == "Item location:")

        if (toCheck.search("Item location") != -1)
        {
            var place = document.getElementsByClassName(ebayClass[j])[i].childNodes[1].innerHTML;
            //the google map route link
            var linkRef = "http://maps.google.co.uk/maps?saddr="+home+"&amp;daddr="+place;

            //create the link
            var link = document.createElement('a');
            link.href = linkRef;
            if (blank)
                link.target="_blank";
            var linkText = document.createTextNode(place);
            link.appendChild(linkText);

            document.getElementsByClassName(ebayClass[j])[i].firstChild.data="Item location: ";
            document.getElementsByClassName(ebayClass[j])[i].removeChild(document.getElementsByClassName(ebayClass[j])[i].childNodes[1]);
            document.getElementsByClassName(ebayClass[j])[i].appendChild(link);
    
            return;
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2012/01/ebay-location-script-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gigabyte crapware</title>
		<link>http://blog.world3.net/2012/01/gigabyte-crapware/</link>
		<comments>http://blog.world3.net/2012/01/gigabyte-crapware/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 14:12:56 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[idiots]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=441</guid>
		<description><![CDATA[Picked up a cheap ex-display Gigabyte mobo in mint condition. By all accounts it is a good board, but man do Gigabyte love &#8220;value added&#8221; crapware. Some examples: Auto Green &#8211; Sleep or power down your PC from a Bluetooth device. Since Bluetooth has a range of about 25mm it seems like it would be [...]]]></description>
			<content:encoded><![CDATA[<p>Picked up a cheap ex-display Gigabyte mobo in mint condition. By all accounts it is a good board, but man do Gigabyte love &#8220;value added&#8221; crapware. Some examples:</p>
<p><strong>Auto Green</strong> &#8211; Sleep or power down your PC from a Bluetooth device. Since Bluetooth has a range of about 25mm it seems like it would be easier to just walk over to the PC and turn it off, rather than enabling Bluetooth, trying to get in range, pairing, loading the app&#8230;</p>
<p><strong>Cloud OC</strong> &#8211; Tweak and overclock your PC from any internet connected device. What&#8230; The&#8230; Fuck&#8230; So I can remotely crash my PC?</p>
<p><strong>Smart DualBIOS</strong> &#8211; The dual BIOS idea is a good one, but this utility adds a pointless feature where you can now store very small amounts of data in it. Things like passwords and contact details, in case your hard drive dies. Just in case you are tempted to actually use it there is no way to import/export this data from/to other apps, so you have to copy/paste it all manually.</p>
<p><strong>Q-Share</strong> &#8211; Duplicates Windows file sharing functionality, only with a less usable interface and less compatibility. Thanks Gigabyte.</p>
<p>No ATA password support in the BIOS though. Sigh&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2012/01/gigabyte-crapware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Novatech website is shit</title>
		<link>http://blog.world3.net/2012/01/the-novatech-website-is-shit/</link>
		<comments>http://blog.world3.net/2012/01/the-novatech-website-is-shit/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 10:45:07 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[idiots]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=439</guid>
		<description><![CDATA[Just popped on to the Novatech site to check some prices and noticed how shit it is. For example, if you look at SSDs there is no capacity category, you can only filter by price range or manufacturer. That was crappy back in 1998, and 14 years later it is pretty much unforgivable. Novatech isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Just popped on to the <a href="www.novatech.co.uk">Novatech</a> site to check some prices and noticed how shit it is. For example, if you look at SSDs there is no capacity category, you can only filter by price range or manufacturer. That was crappy back in 1998, and 14 years later it is pretty much unforgivable.</p>
<p>Novatech isn&#8217;t particularly cheap either.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2012/01/the-novatech-website-is-shit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RFM12B bit stream sync issue</title>
		<link>http://blog.world3.net/2011/12/rfm12b-bit-stream-sync-issue/</link>
		<comments>http://blog.world3.net/2011/12/rfm12b-bit-stream-sync-issue/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 16:04:00 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[avr]]></category>
		<category><![CDATA[electronics]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=435</guid>
		<description><![CDATA[Been working with cheap RFM12B modules at work and discovered something interesting about them. A couple of things actually, the first of which is that the datasheet for the Si4420 IC it uses is much better. The main issue is that the serial data stream you get when receiving is not always aligned to the [...]]]></description>
			<content:encoded><![CDATA[<p>Been working with cheap RFM12B modules at work and discovered something interesting about them. A couple of things actually, the first of which is that the datasheet for the Si4420 IC it uses is much better. The main issue is that the serial data stream you get when receiving is not always aligned to the bytes you transmitted.</p>
<p>The SPI interface only allows you to read 8 bits at a time from the FIFO, but you can pull nFFS low and then clock bits out individually without the need for a read command. The technique I use is to start reading bits that way when the RFM12B pulls its interrupt line low until I have the complete sync pattern. At that point I know I am properly aligned and can start using the SPI bus again.</p>
<p>The ARSSI signal is useful. To make good measurements trigger the ADC immediately after starting an SPI read command. On the &#8216;scope the level looks flat during receiving, but in reality I have noticed that sometimes I get the first few bytes correctly and then the stream deteriorates into noise. Still investigating that one, there are plenty of parameters to experiment with.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2011/12/rfm12b-bit-stream-sync-issue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compile time asserts in C</title>
		<link>http://blog.world3.net/2011/12/compile-time-asserts-in-c/</link>
		<comments>http://blog.world3.net/2011/12/compile-time-asserts-in-c/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 15:48:34 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[avr]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=432</guid>
		<description><![CDATA[Assert is a useful function that checks a condition and outputs an error if it is not met at run time. Aside from generating some overhead in the code it is also pretty useless on microcontrollers because the messages go to STDERR and, well, there isn’t one. A much better solution is to do the [...]]]></description>
			<content:encoded><![CDATA[<p>Assert is a useful function that checks a condition and outputs an error if it is not met at run time. Aside from generating some overhead in the code it is also pretty useless on microcontrollers because the messages go to STDERR and, well, there isn’t one. A much better solution is to do the check at compile time as then there is no overhead and you can see the error messages.</p>
<p>&nbsp;</p>
<p>Unfortunately the C pre-processor is just a glorified text processor and knows almost nothing about C, so you can’t use things like sizeof(). I found this solution:</p>
<p>&nbsp;</p>
<pre>// compile time static assertions (<a href="http://www.pixelbeat.org/programming/gcc/static_assert.html">http://www.pixelbeat.org/programming/gcc/static_assert.html</a>)</pre>
<pre>#define ASSERT_CONCAT_(a, b) a##b</pre>
<pre>#define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b)</pre>
<pre>#define ct_assert(e) enum { ASSERT_CONCAT(assert_line_, __LINE__) = 1/(!!(e)) }</pre>
<p>&nbsp;</p>
<p>If you then write this:</p>
<p>&nbsp;</p>
<pre>ct_assert(sizeof(EEP_CONFIG_t) == 32);</pre>
<p>If the condition is not true it will cause a divide by zero error on that line. Not ideal but it seems to work. In this case an EEPROM page happens to be 32 bytes and the struct is padded. Thanks to Pixelbeat.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2011/12/compile-time-asserts-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheduling uTorrent on Windows</title>
		<link>http://blog.world3.net/2011/12/scheduling-utorrent-on-windows/</link>
		<comments>http://blog.world3.net/2011/12/scheduling-utorrent-on-windows/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 19:12:15 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=426</guid>
		<description><![CDATA[Sometimes I close uTorrent and forget to open it again before going to bed for overnight downloading. It cannot be scheduled via the Task Scheduler in Vista/Server 2008 and above because scheduled tasks can no longer display a GUI. This is a security feature designed to prevent shatter attacks which are a form of privilege [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes I close uTorrent and forget to open it again before going to bed for overnight downloading. It cannot be scheduled via the Task Scheduler in Vista/Server 2008 and above because scheduled tasks can no longer display a GUI. This is a security feature designed to prevent shatter attacks which are a form of privilege escalation. The only solution is to use a task scheduler that runs as a user mode task rather than as a service, and the best one I have found is <a href="http://www.konradp.com/products/firetask/">Firetask</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2011/12/scheduling-utorrent-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XMEGA TWI (I2C) bus pull-ups</title>
		<link>http://blog.world3.net/2011/11/xmega-twi-i2c-bus-pull-ups/</link>
		<comments>http://blog.world3.net/2011/11/xmega-twi-i2c-bus-pull-ups/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 16:32:47 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[avr]]></category>
		<category><![CDATA[electronics]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=423</guid>
		<description><![CDATA[The XMEGA 128A1 and XPLAINED hardware guide both suggest that TWI should work with the internal port pull-up resistors. Those pull ups are 50K+ and don&#8217;t pull enough for most devices. In short external pull-ups, say 10K, are essential.]]></description>
			<content:encoded><![CDATA[<p>The XMEGA 128A1 and XPLAINED hardware guide both suggest that TWI should work with the internal port pull-up resistors. Those pull ups are 50K+ and don&#8217;t pull enough for most devices. In short external pull-ups, say 10K, are essential.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2011/11/xmega-twi-i2c-bus-pull-ups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

