<?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.isquared.nl/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">

<title>isquared.nl | RSS</title>
<link href="http://isquared.nl/" />

<id>http://isquared.nl/rss.xml</id>
<updated>2012-02-07T00:00:00Z</updated>
<author>
	<name>Hessel Schut</name>
	<email>hessel@isquared.nl</email>
</author>

	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.isquared.nl/IsquaredRssFeed" /><feedburner:info uri="isquaredrssfeed" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>52.4</geo:lat><geo:long>5.29</geo:long><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><logo>http://isquared.nl/img/isquared.png</logo><feedburner:emailServiceId>IsquaredRssFeed</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
		<title>Quad ATtiny gadget</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/Edpne4TlPkY/index.html" />
		<id>http://isquared.nl/index.html?pagelink=77</id>
		<updated>2011-06-05T13:45:08Z</updated>
		<content type="html">
			&lt;p&gt;
This is something that I made earlier but rediscovered buried in the mess on my workbench. &lt;br/&gt;
It is a small three board gadget with four 8-pin ATtiny45 microcontrollers, each driving 6 charlieplexed LED's.
&lt;/p&gt;
&lt;p&gt;
    &lt;img src="http://isquared.nl/img/quadtiny/quadtiny-front.jpg"/&gt;
    &lt;img src="http://isquared.nl/img/quadtiny/quadtiny-open.jpg"/&gt;
&lt;/p&gt;
&lt;p&gt;
The ATtinys share a common ISP connector, and use a DIP switch to select the controller whose reset
would be triggered by the programmer. &lt;br/&gt;
The common ISP signals can be used to let the controllers communicate via a shared bus.
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://isquared.nl/img/quadtiny/quadtiny-isp.jpg"/&gt;
&lt;/p&gt;
&lt;p&gt;
Blinkenlights, wooo. If it keeps raining, I might try to make it display Conway's Game of Life. :)
&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Edpne4TlPkY:c7w3yaL-I2E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Edpne4TlPkY:c7w3yaL-I2E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Edpne4TlPkY:c7w3yaL-I2E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Edpne4TlPkY:c7w3yaL-I2E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Edpne4TlPkY:c7w3yaL-I2E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Edpne4TlPkY:c7w3yaL-I2E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Edpne4TlPkY:c7w3yaL-I2E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Edpne4TlPkY:c7w3yaL-I2E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/Edpne4TlPkY" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=77</feedburner:origLink></entry>

	<entry>
		<title>Google Maps bulk geocoder</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/hgK0tLpVDzA/index.html" />
		<id>http://isquared.nl/index.html?pagelink=76</id>
		<updated>2011-05-12T10:30:25Z</updated>
		<content type="html">
			&lt;p&gt;
I've been playing with the Google Maps Javascript API lately. &lt;br/&gt;
One of the results of this is &lt;a href="http://isquared.nl/doapp.html?appid=geocoder"&gt;a simple utility&lt;/a&gt; to geocode addresses in a
delimited text file. It is based on the geocoding example in the Google 
API playground.
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://isquared.nl/doapp.html?appid=geocoder"&gt;
&lt;img src="http://isquared.nl/img/geocoder.png" alt="isquared bulk geocoder"/&gt; &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
It's pretty straightforward to use: &lt;br/&gt;
&lt;ul&gt;
&lt;li&gt;
	Paste the data to be geocoded in the large text field to the right. 
	For instance, using &lt;a href="http://code.google.com/p/gmaps-samples/source/browse/trunk/articles-csvtokml/google-addresses.csv"&gt;this&lt;/a&gt; sample data. &lt;br/&gt;
	That sample data file has the following field definitions: &lt;br/&gt;
	Office,Address1,Address2,Address3,City,State,Zip,Phone,Fax
&lt;/li&gt;
&lt;li&gt; 
	Enter the field separator used in your data. In the example data above,
	a comma is used as a field separator.
&lt;/li&gt;
&lt;li&gt;
	Select the fields and order of the fields to be used to form an address. &lt;br/&gt;
	Fieldnumbers start at 0, so in the example above the list of fields would be
	1,2,3,4,5,6. Would, say, Address3 be a more logical field to start the address
	with, you can change the order as such: 3,1,2,4,5,6.
&lt;/li&gt;
&lt;li&gt;
	Hit the &lt;b&gt;Geocode this&lt;/b&gt; button.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
	When you press Geocode this, the addresses will be posted to Google Maps, geocoded
	by Google and plotted on the map. &lt;/br&gt;
	At the same time three fields are appended to your data records: latitude and longitude 
	for the given address and a result code. &lt;br/&gt;
	The result code will be 200 for a succesful lookup. A sample geocoded result line looks like this:
&lt;/p&gt;
&lt;p&gt;
	&lt;pre&gt;
Headquarters,1600 Amphitheatre Parkway,,,Mountain View,CA,94043,650-253-0000,650-253-0001,37.4217335,-122.0841873,200
	&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;
	It might help to pan and zoom the map to the location where you expect your results to
	be before you press Geocode this, it helps Google to find more appropiate results.
&lt;/p&gt;

&lt;p&gt; 
      Follow the read link to use the geocoder.
&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hgK0tLpVDzA:Gl6nnPMPyBs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hgK0tLpVDzA:Gl6nnPMPyBs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=hgK0tLpVDzA:Gl6nnPMPyBs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hgK0tLpVDzA:Gl6nnPMPyBs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hgK0tLpVDzA:Gl6nnPMPyBs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=hgK0tLpVDzA:Gl6nnPMPyBs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hgK0tLpVDzA:Gl6nnPMPyBs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=hgK0tLpVDzA:Gl6nnPMPyBs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/hgK0tLpVDzA" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=76</feedburner:origLink></entry>

	<entry>
		<title>Fun with Google geolocation</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/9D0iddJvFjE/index.html" />
		<id>http://isquared.nl/index.html?pagelink=73</id>
		<updated>2010-08-12T00:23:55Z</updated>
		<content type="html">
			&lt;p&gt;After seeing Samy Kamkars talk at DEFCON 18, I really wanted to play with Google's geolocation API. &lt;br/&gt;
Some results already:&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
hessch@turing:~$ bin/mac_geoloc 00:11:92:a1:b2:40

{
    "location"    :    {
        "latitude"    :    36.1344023,  
        "longitude"    :    -115.1620542,
        "address"    :    {     
            "country"    :    "United States",  
            "country_code"    :    "US",
            "region"    :    "Nevada",  
            "county"    :    "Clark",   
            "city"        :    "Las Vegas",     
            "street"    :    "Las Vegas Blvd S",
            "street_number"    :    "2955",     
            "postal_code"    :    "89109"       
        },      
        "accuracy"    :    150.0}       
}

&lt;/pre&gt;&lt;/p&gt;
		
&lt;p&gt;Which is the location one of the hotspot access-points in the Riviera hotel, according to Google. Yay! :) &lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=9D0iddJvFjE:JUAQq63M5gk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=9D0iddJvFjE:JUAQq63M5gk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=9D0iddJvFjE:JUAQq63M5gk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=9D0iddJvFjE:JUAQq63M5gk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=9D0iddJvFjE:JUAQq63M5gk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=9D0iddJvFjE:JUAQq63M5gk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=9D0iddJvFjE:JUAQq63M5gk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=9D0iddJvFjE:JUAQq63M5gk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/9D0iddJvFjE" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=73</feedburner:origLink></entry>

	<entry>
		<title>Bash function to canonicalize MAC addresses</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/J6H73kzrdFk/index.html" />
		<id>http://isquared.nl/index.html?pagelink=72</id>
		<updated>2010-08-11T20:36:02Z</updated>
		<content type="html">
			&lt;p&gt;I was playing with some network related stuff this evening and needed to rewrite MAC addresses to the canonical form. That is, something like this &lt;i&gt;00-02-DE-AD-BE-EF&lt;/i&gt;.&lt;br/&gt;
Why, you ask? Well every piece of software seems to have their own ideas on how to represent these magical 48 bit integers. &lt;br/&gt;
For instance, you'll often see something like &lt;i&gt;01:02:03:C0:FF:EE&lt;/i&gt;, which might also be written in shorthand as &lt;i&gt;1:2:3:c0:ff:ee&lt;/i&gt; or as a (pretty Cisco specific) perversion like &lt;i&gt;0102.03c0:ffee&lt;/i&gt;.
&lt;br/&gt;
Indeed, a lot of variation...which makes parsing, a bit hellish.
&lt;/p&gt;
&lt;p&gt;
Well I had written a pretty elegant parser in Perl before, that thing groks almost anything that you can 
throw at it. &lt;br/&gt;
But today I wanted to implement this in &lt;/i&gt;hesschlib&lt;/i&gt;, hesschlib is my private library of practical
Bash functions. One of the rules of hesschlib is that things should be done in Bash whenever possible.
&lt;br/&gt;
So I kludged up a small Bash function that does a pretty good job in rewriting most forms of MAC
addresses that came to mind to the canonical form. Here it is:
&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
# canonicalize MAC addresses (does grok most forms)
function maccanon {
    canon=''; for octet in ${1//[\.:-]/ }; do 
        [ ${#octet} -eq 4 ] &amp;&amp; octet="${octet:0:2} ${octet:2:2}" ; 
        [ ${#octet} -eq 1 ] &amp;&amp; octet="0${octet}"; canon=${canon}${canon:+ }${octet}; 
    done; echo ${canon// /-}; 
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Which is a one-liner in hesschlib, of course, but broken up a bit here to make it more legible.&lt;br/&gt;
And finally, here's an example of &lt;b&gt;maccanon&lt;/b&gt; in action: &lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
    hessch@turing:~$ for mac in 00:02:DE:AD:BE:EF 1:2:3:c0:ff:ee 0102.03c0:ffee
    &gt; do
    &gt; maccanon ${mac}
    &gt; done

    00-02-DE-AD-BE-EF
    01-02-03-c0-ff-ee
    01-02-03-c0-ff-ee

&lt;/pre&gt;&lt;/p&gt;

		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=J6H73kzrdFk:Uw-mNCxO9jo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=J6H73kzrdFk:Uw-mNCxO9jo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=J6H73kzrdFk:Uw-mNCxO9jo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=J6H73kzrdFk:Uw-mNCxO9jo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=J6H73kzrdFk:Uw-mNCxO9jo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=J6H73kzrdFk:Uw-mNCxO9jo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=J6H73kzrdFk:Uw-mNCxO9jo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=J6H73kzrdFk:Uw-mNCxO9jo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/J6H73kzrdFk" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=72</feedburner:origLink></entry>

	<entry>
		<title>Parser/ Importer for the IEEE OUI list</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/Jl05sdFs2Gw/index.html" />
		<id>http://isquared.nl/index.html?pagelink=71</id>
		<updated>2010-08-07T02:14:19Z</updated>
		<content type="html">
			 &lt;p&gt;
        In a distant past I created &lt;a href="http://isquared.nl/doapp.html?appid=mac2vendor"&gt;this vendor lookoup page for MAC
        addresses&lt;/a&gt;, that according to my Google Analytics is still being
        used from all over the world. Wow.&lt;br/&gt;
        Most of the information in this tool was pretty outdated, because
        I had imported the IEEE oui.txt file in a SQLite database by hand and 
was too lazy to do that again.
        &lt;br/&gt;
        Well, today I found some old Perl code back that I started on to
        automate this process. I never managed to get that to work
        in the past, somehow it worked after only a few edits today.
        &lt;br/&gt;
        I quickly added some SQLite Perl DBI stuff, and suddenly the database for mac2vendor is up to date again.
         &lt;/p&gt;
&lt;p&gt;
I have published my code to download, parse and import the IEEE OUI file &lt;a href="http://isquared.nl/src/oui_import.pl"&gt;here&lt;/a&gt; or follow the read link for the full article.
&lt;/p&gt;

&lt;p&gt;From now on this script will run as a cronjob from time to time to keep mac2vendor more up to date.&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Jl05sdFs2Gw:cA6PYNWGA40:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Jl05sdFs2Gw:cA6PYNWGA40:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Jl05sdFs2Gw:cA6PYNWGA40:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Jl05sdFs2Gw:cA6PYNWGA40:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Jl05sdFs2Gw:cA6PYNWGA40:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Jl05sdFs2Gw:cA6PYNWGA40:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Jl05sdFs2Gw:cA6PYNWGA40:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Jl05sdFs2Gw:cA6PYNWGA40:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/Jl05sdFs2Gw" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=71</feedburner:origLink></entry>

	<entry>
		<title>Nintendo DS flash card oops</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/EsAVGkAmpPg/index.html" />
		<id>http://isquared.nl/index.html?pagelink=70</id>
		<updated>2010-06-20T17:32:26Z</updated>
		<content type="html">
			&lt;p&gt;I've ordered a new toy to experiment with, the &lt;a href="http://dsbrut.sukzessiv.net/"&gt;DS Brut&lt;/a&gt;. This is an Arduino compatible Slot 1 card for the Nintendo DS that provides IO ports to the DS using the SPI on Slot 1.&lt;/p&gt;
&lt;p&gt;To be able to use it, I had to replace my current Slot 1 flash card with a Slot 2 variant. For a few Euros, I found a second-hand Supercard Lite, that also includes 32 MB of extra RAM! &lt;br/&gt;
Being my stupid self, I just had to open the card to peek inside. By doing so, I tore off a small foil cable between a PCB with the Micro SD slot and the main PCB. &lt;b&gt;Oooops&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;30 Minutes of frustration with wire-wrap wire later, I managed to replace the torn foil cable with 
something a lot less professional. ;-)&lt;/p&gt;
&lt;p&gt;&lt;img src="http://lh3.ggpht.com/_IYto6ofaiUM/TBi3WIQCmhI/AAAAAAAAA8A/d2etDubLoM0/s288/P6161095.JPG"/&gt;
&lt;img src="http://lh4.ggpht.com/_IYto6ofaiUM/TBi3Ysj9LPI/AAAAAAAAA8A/yZrb6XIZr9E/s288/P6161096.JPG"/&gt;
&lt;/p&gt;
&lt;p&gt;Pff, those were some narrow traces. I'd like to use the occasion to thank my parents for buying me my first soldering iron when I was aged six or so. &lt;br/&gt;
To be continued when my DS Brut arrives! &lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=EsAVGkAmpPg:qrp6qrwYS8E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=EsAVGkAmpPg:qrp6qrwYS8E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=EsAVGkAmpPg:qrp6qrwYS8E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=EsAVGkAmpPg:qrp6qrwYS8E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=EsAVGkAmpPg:qrp6qrwYS8E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=EsAVGkAmpPg:qrp6qrwYS8E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=EsAVGkAmpPg:qrp6qrwYS8E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=EsAVGkAmpPg:qrp6qrwYS8E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/EsAVGkAmpPg" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=70</feedburner:origLink></entry>

	<entry>
		<title>Why I love HTTP</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/73foqAuNE-s/index.html" />
		<id>http://isquared.nl/index.html?pagelink=69</id>
		<updated>2010-04-25T14:01:16Z</updated>
		<content type="html">
			&lt;p&gt;A few years ago, I worked at a company whose webservers were hosted at
a dedicated web-hosting company. &lt;br/&gt;
The question rose whether their website could be reached at foo.bar as well as at www.foo.bar. &lt;br/&gt;
Well, no problem you'd say, nothing that a simple A or CNAME record in DNS couldn't fix. &lt;br/&gt;
Not so, foo.bar had an A record assigned already for a host in the company's DMZ that used to do a &lt;b&gt;*lot*&lt;/b&gt; of stuff.&lt;/p&gt;

&lt;p&gt;You can imagine adding a webserver to foo.bar, just to serve 301 &lt;i&gt;moved permanently&lt;/i&gt; status codes seemed like a bit of overkill to me. &lt;br/&gt;
And apart from that, I was too lazy to have another $many_lines_of_code to keep up to date for such a trivial task. &lt;br/&gt;&lt;/p&gt;
&lt;p&gt;
Thanks to the wonders of HTTP the solution was almost as simple as the problem.&lt;br/&gt;
I whipped up a small text file containing a static HTTP 301, and used the almighty &lt;i&gt;inetd&lt;/i&gt; and &lt;i&gt;cat&lt;/i&gt; to glue this to a socket.  &lt;br/&gt;
It worked like a charm. It was also great to see sites like Netcraft list the webserver of foo.bar as &lt;i&gt;cat/0.9&lt;/i&gt;. :-)
&lt;/p&gt;
&lt;p&gt; I thought of this today, when I was playing a bit with my Nintendo DS running DSLinux. &lt;br/&gt;
I could find various MP3 decoders, but nothing to do streaming. So I kludged together the other side of the hack that I explained above:&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
        #!/bin/sh
        (nc mp3.streampower.be 80 &lt;&lt;_GETREQ
        GET /stubru-low.mp3 HTTP/1.0

        _GETREQ
        ) | sed -n '/^$/,$p' |\
                madplay -
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Et voila. Streaming audio. (In this case the Belgian music station Studio Brussel.) &lt;br/&gt;
Thank you, sir Tim.
&lt;/p&gt;

		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=73foqAuNE-s:l-a3NIo9EjU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=73foqAuNE-s:l-a3NIo9EjU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=73foqAuNE-s:l-a3NIo9EjU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=73foqAuNE-s:l-a3NIo9EjU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=73foqAuNE-s:l-a3NIo9EjU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=73foqAuNE-s:l-a3NIo9EjU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=73foqAuNE-s:l-a3NIo9EjU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=73foqAuNE-s:l-a3NIo9EjU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/73foqAuNE-s" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=69</feedburner:origLink></entry>

	<entry>
		<title>Sitecom WL-340 shell commands via HTTP</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/wBKDfPrs9R4/index.html" />
		<id>http://isquared.nl/index.html?pagelink=68</id>
		<updated>2010-04-18T17:40:26Z</updated>
		<content type="html">
			&lt;p&gt;
My local &lt;i&gt;Media Markt&lt;/i&gt; (a large German chain of electronics stores) had some cheap NAT routers for sale. Out of curiosity I bought one. &lt;br/&gt;
This router (the Sitecom WL-340) runs Linux and the internal console port is nicely labeled and that alone made me buy two more as you can never have too much hardware to play with. ;) 
&lt;/p&gt;
&lt;p&gt;
When poking around in these boxes I found that they have a nice hidden web page to run commands on these boxes. &lt;br/&gt;
You can access this page as &lt;b&gt;/system_command.htm&lt;/b&gt; on your routers webinterface.
&lt;/p&gt;
&lt;p&gt;I thought it might be useful to access this command shell from scripts, so that you can use stock WL-340s for various "unintended" purposes. ;)  &lt;br/&gt;
With the help of the amazing Firebug extension for Firefox I managed to use the remote command facility of these routers from the shell. &lt;br/&gt; Like so:
&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
hessch@kirchhoff:~$ curl -s -o- -u admin -d command='cat /proc/cpuinfo' \
	-d next_file=system_command.htm -d todo=system_command \
	http://192.168.11.128:8080/setup.cgi | \
		sed -n '/outlog_Display/,/\/textarea/{/textarea/d;p}'
Enter host password for user 'admin':
system type		: Ralink SoC
processor		: 0
cpu model		: MIPS 24K V4.12
BogoMIPS		: 212.99
wait instruction	: yes
microsecond timers	: yes
tlb_entries		: 32
extra interrupt vector	: yes
hardware watchpoint	: yes
ASEs implemented	: mips16 dsp
VCED exceptions		: not available
VCEI exceptions		: not available
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Now, this only needs a small wrapper shell script and it's ready for (ab)use.&lt;br/&gt;
I'll probably post some more hacks based on these boxes later on.&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wBKDfPrs9R4:dkm3rXh__vY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wBKDfPrs9R4:dkm3rXh__vY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=wBKDfPrs9R4:dkm3rXh__vY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wBKDfPrs9R4:dkm3rXh__vY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wBKDfPrs9R4:dkm3rXh__vY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=wBKDfPrs9R4:dkm3rXh__vY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wBKDfPrs9R4:dkm3rXh__vY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=wBKDfPrs9R4:dkm3rXh__vY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/wBKDfPrs9R4" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=68</feedburner:origLink></entry>

	<entry>
		<title>isquared.nl via IPv6</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/R11uoufZOC8/index.html" />
		<id>http://isquared.nl/index.html?pagelink=67</id>
		<updated>2010-04-15T21:20:33Z</updated>
		<content type="html">
			&lt;p&gt;
My ISP, XS4All started a pilot with native IPv6 over DSL, which I eagerly joined. &lt;/p&gt;
&lt;p&gt;I have been playing with 6to4 tunnels for a few years, but the old Cisco routers that I used lacked performance and reliability was also an issue. &lt;br/&gt;
Well both issues were actually solved a year ago when I terminated my Hurricane Electric IPv6 tunnel in a Apple Airport Express. But alas, the Express added a new problem: it routes IPv6 to the wireless network only!&lt;/p&gt;
&lt;p&gt;Well, all these issues seem to be solved now. IPv6 is now present on both my wired and wireless networks and my Juniper firewall doesn't seem to break a sweat. &lt;br/&gt;
And as a test isquared.nl should now be reachable via IPv6 at the address &lt;a href="http://www.isquared.nl/"&gt;http://www.isquared.nl/&lt;/a&gt; &lt;br/&gt;
If this test is successful this website will be available via IPv6 without the dubdubdub pretty soon too.&lt;/p&gt;
&lt;p&gt;
As an bonus, I've added a small "Your IP address is" row to the navigation bar on the left, to see whether your source address is IPv6 or IPv4. And you might find it useful to test your anonymizing proxy, etc... ;-) &lt;/p&gt;
		
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=R11uoufZOC8:TVwRvs5ICXQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=R11uoufZOC8:TVwRvs5ICXQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=R11uoufZOC8:TVwRvs5ICXQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=R11uoufZOC8:TVwRvs5ICXQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=R11uoufZOC8:TVwRvs5ICXQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=R11uoufZOC8:TVwRvs5ICXQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=R11uoufZOC8:TVwRvs5ICXQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=R11uoufZOC8:TVwRvs5ICXQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/R11uoufZOC8" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=67</feedburner:origLink></entry>

	<entry>
		<title>Fix for Thinkpad T400 WWAN on Ubuntu 9.10</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/clKvtxJLBJo/index.html" />
		<id>http://isquared.nl/index.html?pagelink=66</id>
		<updated>2010-02-25T20:51:08Z</updated>
		<content type="html">
			
		&lt;p&gt;
The builtin WWAN modem of Lenovo ThinkPad T400 laptops does not seem to wake properly when the laptop is suspended on Ubuntu.
&lt;/p&gt;

&lt;p&gt;
I have written a small Power Manager script to fix this problem, it seems that Ubuntu 9.10 (Karmic Koala) does not support wakeup scripts in /etc/acpi/resume.d anymore. &lt;br/&gt;
Although it tires me a bit how much Ubuntu seems to break in new releases lately, it was worthwhile to search for the mechanism "du jour".
It seems that scripts need to be placed in /etc/pm/sleep.d nowadays.
&lt;br/&gt;
Add the script below to a new file, /etc/pm/sleep.d/10_thinkpad_wwan, and it should be called upon suspend and resume to revive your modem on resume.
&lt;/p&gt;

&lt;p&gt;&lt;pre&gt;
#!/bin/sh

# Action script to reinitialize built-in WWAN of Lenovo ThinkPads
# on resume
#
# Hessel Schut, hessel@isquared.nl, 2010-02-25
#

PATH=/sbin:/usr/sbin:/bin:/usr/bin

case "${1}" in
        hibernate)
                # unload cdc_wdm module
                rmmod cdc_wdm
                ;;

        resume|thaw)
                # revive RF and reload cdc_wdm module
                echo 1 &gt; /sys/devices/platform/thinkpad_acpi/rfkill/rfkill1/state
                modprobe cdc_wdm

                ;;
esac

&lt;/pre&gt;&lt;/p&gt;


		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=clKvtxJLBJo:IugX5T2AUqg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=clKvtxJLBJo:IugX5T2AUqg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=clKvtxJLBJo:IugX5T2AUqg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=clKvtxJLBJo:IugX5T2AUqg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=clKvtxJLBJo:IugX5T2AUqg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=clKvtxJLBJo:IugX5T2AUqg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=clKvtxJLBJo:IugX5T2AUqg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=clKvtxJLBJo:IugX5T2AUqg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/clKvtxJLBJo" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=66</feedburner:origLink></entry>

	<entry>
		<title>fi.sh - a Boids clone in Bash</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/ajse29LRENc/index.html" />
		<id>http://isquared.nl/index.html?pagelink=64</id>
		<updated>2010-02-22T20:29:02Z</updated>
		<content type="html">
			
                &lt;p&gt;After &lt;a href="http://isquared.nl/index.html?pagelink=27&amp;desc=squa.sh"&gt;squa.sh&lt;/a&gt;,
                I thought it was time for another abuse of the Bash shell. &lt;br/&gt;
                A few weeks ago I wrote &lt;i&gt;fi.sh&lt;/i&gt;, a simulation of flocking behaviour, like migrating birds or
                a school of fish, written in pure Bash and with ascii-art graphics, of course.
                &lt;/p&gt;

                &lt;p&gt;Fi.sh is inspired by the classic &lt;a href="http://en.wikipedia.org/wiki/Boids"&gt;Boids&lt;/a&gt; algorithm
                by Craig Reynolds. But since I wrote this in a week when I was in the middle of nowhere in Andalucia,
                without any means of connecting to the Internet it only uses two behaviours, instead of Reynolds&amp;rsquo; three,
                still the results look pretty convincing.
                &lt;p/&gt;

                &lt;p&gt;
                &lt;img src="/img/boidsOriginal.gif" alt="Reynolds&amp;rsquo; original Boids"/&gt; &lt;br/&gt;
                &lt;i&gt;Craig Reynolds original Boids&lt;/i&gt;
                &lt;/p&gt;


		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=ajse29LRENc:dMPjYL-1AeM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=ajse29LRENc:dMPjYL-1AeM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=ajse29LRENc:dMPjYL-1AeM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=ajse29LRENc:dMPjYL-1AeM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=ajse29LRENc:dMPjYL-1AeM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=ajse29LRENc:dMPjYL-1AeM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=ajse29LRENc:dMPjYL-1AeM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=ajse29LRENc:dMPjYL-1AeM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/ajse29LRENc" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=64</feedburner:origLink></entry>

	<entry>
		<title>JeeNode</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/wHV5079lx4k/index.html" />
		<id>http://isquared.nl/index.html?pagelink=63</id>
		<updated>2009-12-25T01:12:43Z</updated>
		<content type="html">
			&lt;p&gt;My JeeNode arrived today, just in time for Christmas! &lt;br/&gt;

The JeeNode is a small microcontroller board, with an RFM12 radio module, it is compatible with the Arduino IDE, which is a Good Thing. &lt;br/&gt;

For more information about this cool piece of kit, have a look at &lt;a href="http://jeelabs.org/"&gt;jeelabs.org&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;Less than 30 minutes after arriving home, I started soldering the JeeNode kit together. I'm impressed with the quality of the PCB of these units. &lt;br/&gt;
Below are two pictures of my finished JeeNode.&lt;/p&gt;

&lt;p&gt;
&lt;img src="http://isquared.nl/img/jeenode/solder.jpg" alt="soldering the JeeNode"/&gt;
&lt;img src="http://isquared.nl/img/jeenode/completed.jpg" alt="my completed JeeNode"/&gt;
&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wHV5079lx4k:Vf2B3L07z0w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wHV5079lx4k:Vf2B3L07z0w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=wHV5079lx4k:Vf2B3L07z0w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wHV5079lx4k:Vf2B3L07z0w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wHV5079lx4k:Vf2B3L07z0w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=wHV5079lx4k:Vf2B3L07z0w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wHV5079lx4k:Vf2B3L07z0w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=wHV5079lx4k:Vf2B3L07z0w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/wHV5079lx4k" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=63</feedburner:origLink></entry>

	<entry>
		<title>speed up debugging with viline</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/yN3cY238RNo/index.html" />
		<id>http://isquared.nl/index.html?pagelink=61</id>
		<updated>2009-12-03T16:11:20Z</updated>
		<content type="html">
			&lt;p&gt;
This is a practical hack to speed up your coding-debugging cycles: &lt;br/&gt;

Most programming languages tell you that some error occurred in some file on  line 666 like so: &lt;br/&gt;

Blah, blah. Some error in /some/file.foo:666. Blah. &lt;br/&gt;
&lt;/p&gt;

&lt;p&gt;
Viline is a simple bash function that lets you copy and paste the file:linenumber combo from error messages as an argument to vi. &lt;br/&gt;

Vi will then start with the cursor at the offending line. Handy, eh? :-)
&lt;/p&gt;

&lt;p&gt;
To use viline, add the following to your .bashrc:
&lt;/p&gt;

&lt;pre&gt;
    # viline: start vi with file:line
    function f_viline {  vim $(sed -r 's/:([0-9]+)$/ +\1/'&lt;&lt;&lt;$1); }
    alias viline=f_viline
    alias vi=f_viline
&lt;/pre&gt;

&lt;p&gt;The alias for vi itself is optional, myself, I never give vi any arguments but filenames, so this is pretty safe for me. &lt;br/&gt;
Otherwise just type viline instead of vi when you want to edit a file with a file:line style argument.&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=yN3cY238RNo:fr5AGpBUzAk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=yN3cY238RNo:fr5AGpBUzAk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=yN3cY238RNo:fr5AGpBUzAk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=yN3cY238RNo:fr5AGpBUzAk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=yN3cY238RNo:fr5AGpBUzAk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=yN3cY238RNo:fr5AGpBUzAk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=yN3cY238RNo:fr5AGpBUzAk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=yN3cY238RNo:fr5AGpBUzAk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/yN3cY238RNo" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=61</feedburner:origLink></entry>

	<entry>
		<title>UKNC Success</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/vLcLmFPdLiQ/index.html" />
		<id>http://isquared.nl/index.html?pagelink=60</id>
		<updated>2009-11-25T23:27:57Z</updated>
		<content type="html">
			&lt;p&gt;The video port pinout from my previous post led to some succes with my UKNC (Elektronika MS 0511) Soviet-Russian computer.&lt;/p&gt;

&lt;p&gt;Today I made a SCART cable to connect the UKNC to my old Bang&amp;Olufsen CRT TV. (that still needs replacement with an equally pretty LCD TV ;) ) &lt;br/&gt;
It seems the B&amp;O does understand the video signals from behind the iron curtain. :) &lt;/p&gt;

&lt;p&gt;
&lt;img src="http://isquared.nl/img/uknc/uknc-tv-1.jpg" alt="UKNC next to TV"/&gt;		
&lt;img src="http://isquared.nl/img/uknc/uknc-tv-2.jpg" alt="TV Screen"/&gt;
&lt;/p&gt;

&lt;p&gt;The SCART wiring is pretty simple, I've connected RGB, sync and composite-video and used a common ground on the SCART video ground line. &lt;br/&gt;
I think the TV is using the RGB inputs, because when I tried feeding the composite video with a cinch plug earlier, I didn't get the TV to sync.&lt;/p&gt;

&lt;p&gt;
&lt;img src="http://isquared.nl/img/uknc/uknc-tv-scart.jpg" alt="sloppy flatcable to SCART"/&gt;
&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=vLcLmFPdLiQ:_oaQuSbL9JI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=vLcLmFPdLiQ:_oaQuSbL9JI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=vLcLmFPdLiQ:_oaQuSbL9JI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=vLcLmFPdLiQ:_oaQuSbL9JI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=vLcLmFPdLiQ:_oaQuSbL9JI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=vLcLmFPdLiQ:_oaQuSbL9JI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=vLcLmFPdLiQ:_oaQuSbL9JI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=vLcLmFPdLiQ:_oaQuSbL9JI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/vLcLmFPdLiQ" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=60</feedburner:origLink></entry>

	<entry>
		<title>Soviet Russian UKNC Video connector pinout</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/vdQwiQEoGKM/index.html" />
		<id>http://isquared.nl/index.html?pagelink=59</id>
		<updated>2009-11-23T00:22:08Z</updated>
		<content type="html">
			&lt;p&gt;I recently bought a old Soviet PDP-11 compatible computer on Ebay, the UKNC (&amp;#1059;&amp;#1050;&amp;#1053;&amp;#1062; in Russian) an educational computer system with a formfactor somewhat like the Amiga 500.
&lt;br/&gt;
&lt;img src="http://isquared.nl/img/unkc.jpg" alt="UKNC"/&gt;
&lt;/p&gt;

&lt;p&gt;I'm still struggling to bring the machine back to life, the biggest hurdle is that most of the documentation about this machine is (of course) in Russian only, and I don't speak any Russian at all. &lt;br/&gt;
Google translate is a big help, and translating &lt;i&gt;to&lt;/i&gt; Russian to Google for information helps a lot.&lt;p&gt;

&lt;p&gt;This way, I finally found the pinout of the video connectors on the machine, these are 10-pin headers on the back of the machine, labeled "&amp;#1074;&amp;#1084;". &lt;br/&gt;
To document this for myself, and maybe for someone else whom might benefit from this, I've posted the pinout of these connectors here:&lt;/p&gt;
&lt;pre&gt;
     ---     
  1 |o o| 2          1 - blue         2 - gnd
  3 |o o| 4          3 - green        4 - gnd
  5 |o o| 6          5 - red          6 - gnd
  7 |o o| 8          7 - sound        8 - gnd
  9 |o o| 10         9 - composite   10 - sync? 
     ---
&lt;/pre&gt;
		
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=vdQwiQEoGKM:N4Aha71MvfY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=vdQwiQEoGKM:N4Aha71MvfY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=vdQwiQEoGKM:N4Aha71MvfY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=vdQwiQEoGKM:N4Aha71MvfY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=vdQwiQEoGKM:N4Aha71MvfY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=vdQwiQEoGKM:N4Aha71MvfY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=vdQwiQEoGKM:N4Aha71MvfY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=vdQwiQEoGKM:N4Aha71MvfY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/vdQwiQEoGKM" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=59</feedburner:origLink></entry>

	<entry>
		<title>Probing a SecurID Token</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/8maCQ36rY60/index.html" />
		<id>http://isquared.nl/index.html?pagelink=58</id>
		<updated>2009-10-25T18:20:59Z</updated>
		<content type="html">
			&lt;p&gt;Today I peeked inside a RSA SecurID token and made a little test jig to probe
some test pads that are inside.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://isquared.nl/img/securid/pa240630.jpg" alt="test jig"/&gt;&lt;/p&gt;
&lt;p&gt;Not much interesting found so far, but hit the read link to read about my journey to the SecurID's deepest secrets... ;)&lt;br/&gt;
&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=8maCQ36rY60:4RIkg9L9gz4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=8maCQ36rY60:4RIkg9L9gz4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=8maCQ36rY60:4RIkg9L9gz4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=8maCQ36rY60:4RIkg9L9gz4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=8maCQ36rY60:4RIkg9L9gz4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=8maCQ36rY60:4RIkg9L9gz4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=8maCQ36rY60:4RIkg9L9gz4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=8maCQ36rY60:4RIkg9L9gz4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/8maCQ36rY60" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=58</feedburner:origLink></entry>

	<entry>
		<title>Driving 7-segment displays with a MM5480 and Arduino</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/_MurN-I77ss/index.html" />
		<id>http://isquared.nl/index.html?pagelink=57</id>
		<updated>2009-10-18T22:38:08Z</updated>
		<content type="html">
			                &lt;p&gt;For the last year, up until a couple of months ago my
                heater was pretty unreliable, probably because of a flaky
                relay in its control unit, or maybe some bad capacitors,
                something that nowadays seems to kill almost all electronics
                prematurely.
&lt;/p&gt;&lt;p&gt;
                Well getting bored of hitting the poor machine until it started
                working again about every day, I finally replaced its Econgas
                control unit and, of course, I tore the old unit apart.&lt;br/&gt;
                It's a nice piece of kit, It seems to be made by a Dutch firm
                called Pijnenburg, a name that I only associated with a
                particular brand of Dutch cakes before. ;-) 
&lt;/p&gt;&lt;p&gt;
                Maybe more later about the internals of that unit, or maybe
                never, it depends on whether I find any other interesting stuff
                inside. &lt;br/&gt; But wat got me started was its nice control panel,
                containing three red 7-segment LED displays, three buttons and
                a Micrel MM5480BN shift-register based LED driver. Something
                that just screamed to be hooked up to my trusty Arduinos!
                &lt;/p&gt;

		&lt;p&gt;
		&lt;img src="http://isquared.nl/img/7seg.jpg" alt="arduino and LED display" /&gt;
		&lt;/p&gt;

                &lt;p&gt;Follow the read link above to read the whole story.&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=_MurN-I77ss:Be_tWAC6y3Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=_MurN-I77ss:Be_tWAC6y3Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=_MurN-I77ss:Be_tWAC6y3Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=_MurN-I77ss:Be_tWAC6y3Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=_MurN-I77ss:Be_tWAC6y3Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=_MurN-I77ss:Be_tWAC6y3Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=_MurN-I77ss:Be_tWAC6y3Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=_MurN-I77ss:Be_tWAC6y3Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/_MurN-I77ss" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=57</feedburner:origLink></entry>

	<entry>
		<title>Progress bars in Bash</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/hw4Un7tLtxM/index.html" />
		<id>http://isquared.nl/index.html?pagelink=53</id>
		<updated>2009-08-10T08:20:31Z</updated>
		<content type="html">
			&lt;p&gt;
Today a colleague reminded me to dig up a script that I wrote some years ago to generate progress bars (or actually generic horizontal bar graphs) in Bash.
&lt;/p&gt;
&lt;p&gt;
The script is, in this state, more like a proof of concept. It displays an bar that increments until full and then decrements again, this cycle is repeated forever. It should not be too hard to rewrite it to be used in something more useful. &lt;br/&gt;
I think it's also trivial to rewrite this to display vertical bar graphs as well. I might write a small Bash library to include in other scripts later, if and when I feel the need to. ;-)
&lt;/p&gt;
&lt;p&gt;
The code of the script follows below, enjoy... 
&lt;/p&gt;
&lt;pre&gt;
#!/bin/bash

# progress bar
# Hessel Schut, VPRO Automatisering, 2004-04-02

cols=$(tput cols)
bold=$(tput smso)
norm=$(tput rmso)

trap cleanup EXIT TERM INT

cleanup() {
        norm
        tput clear
        tput cnorm
        exit
}

hor_line() {
        for ((i=1; i &amp;lt; cols - 2; i++)); do
                echo -n '-'
        done
}

draw_frame() {
        tput cup 2 2; hor_line
        tput cup 3 1; echo -n '|'
        tput cup 3 ${cols}; echo -n '|'
        tput cup 4 2; hor_line
}

tput clear
tput civis
draw_frame

d=1; pos=2; plen=0
while [ == ]; do
        [ $d -eq 1 ] &amp;&amp; face=${bold}
        tput cup 3 $pos
        echo -n ${face}' '
        face=${norm}
        sts='pos: '${pos}' dir: '${d}
        tput cup 1 1; echo -n ${norm}${sts}
        [ ${plen} -gt ${#sts} ] &amp;&amp; for ((i=0; i &amp;lt; plen - ${#sts}; i++)); do
                echo -n ' '
        done
        plen=${#sts}
        ((pos += d))
        [ $pos -gt 2 ] &amp;&amp; [ $pos -lt $((cols - 2 )) ] || ((d=-d))
done

&lt;/pre&gt;		
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hw4Un7tLtxM:Q0-BJPja9Rc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hw4Un7tLtxM:Q0-BJPja9Rc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=hw4Un7tLtxM:Q0-BJPja9Rc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hw4Un7tLtxM:Q0-BJPja9Rc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hw4Un7tLtxM:Q0-BJPja9Rc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=hw4Un7tLtxM:Q0-BJPja9Rc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hw4Un7tLtxM:Q0-BJPja9Rc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=hw4Un7tLtxM:Q0-BJPja9Rc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/hw4Un7tLtxM" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=53</feedburner:origLink></entry>

	<entry>
		<title>GSM IMSI, MCC and MNC lookup tool</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/Q3DRUDuavb0/index.html" />
		<id>http://isquared.nl/index.html?pagelink=52</id>
		<updated>2009-06-28T19:59:33Z</updated>
		<content type="html">
			&lt;p&gt;I've written a small tool to decode (or well, that is a big word for taking some substrings ;) ) GSM IMSI (International Mobile Subscriber Identity) numbers. &lt;br/&gt;
It then takes the MCC (Mobile Country Code) and MNC (Mobile Network Code) pair, looks it up, and presents you a mobile operator name and country.&lt;/p&gt;
&lt;p&gt;Alternatively, you can search by just a MCC or MNC value, or both, and again, it lists all matches.&lt;/p&gt;
&lt;p&gt;Follow the read link to give it a try.&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Q3DRUDuavb0:z5OQjLxxY-U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Q3DRUDuavb0:z5OQjLxxY-U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Q3DRUDuavb0:z5OQjLxxY-U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Q3DRUDuavb0:z5OQjLxxY-U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Q3DRUDuavb0:z5OQjLxxY-U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Q3DRUDuavb0:z5OQjLxxY-U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Q3DRUDuavb0:z5OQjLxxY-U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Q3DRUDuavb0:z5OQjLxxY-U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/Q3DRUDuavb0" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=52</feedburner:origLink></entry>

	<entry>
		<title>DriveReady SeekComplete Error</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/AJ1Hc0vi72Y/index.html" />
		<id>http://isquared.nl/index.html?pagelink=51</id>
		<updated>2009-06-28T10:17:33Z</updated>
		<content type="html">
			&lt;p&gt;Oops, isquared.nl had some unscheduled downtime last night after the telltale signs of a dying disk:&lt;/p&gt;
&lt;pre&gt;
Jun 28 01:09:07 c3 kernel: [  184.700869] hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Jun 28 01:09:07 c3 kernel: [  184.700869] hda: dma_intr: error=0x10 { SectorIdNotFound }, LBAsect=20586, sector=20407
Jun 28 01:09:07 c3 kernel: [  184.700869] ide: failed opcode was: unknown
&lt;/pre&gt;
&lt;p&gt;One emergency &lt;i&gt;dd&lt;/i&gt; to a disk, stolen from my old TV set-top box, later and we're up and running again. &lt;br/&gt;Only a shame that due to the layout of the partitions on the dead disk, I can't grow my filesystems easily to make use of the much larger disk that is transplanted to the server.&lt;/p&gt;

		

		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=AJ1Hc0vi72Y:NFmCbTLab_s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=AJ1Hc0vi72Y:NFmCbTLab_s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=AJ1Hc0vi72Y:NFmCbTLab_s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=AJ1Hc0vi72Y:NFmCbTLab_s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=AJ1Hc0vi72Y:NFmCbTLab_s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=AJ1Hc0vi72Y:NFmCbTLab_s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=AJ1Hc0vi72Y:NFmCbTLab_s:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=AJ1Hc0vi72Y:NFmCbTLab_s:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/AJ1Hc0vi72Y" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=51</feedburner:origLink></entry>

	<entry>
		<title>Patch for Gammu's DCT3 debug trace</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/uSzzQvi330U/index.html" />
		<id>http://isquared.nl/index.html?pagelink=48</id>
		<updated>2009-06-27T21:06:43Z</updated>
		<content type="html">
			&lt;p&gt;I've written a quick and dirty patch for Gammu's nokiadebug command.
Normally, nokiadebug writes debug traces to a hardcoded out.xml file, which is not really practical. &lt;/p&gt;
&lt;p&gt;
With my patch applied to gammu-1.24.0, the output of nokiadebug that was previously sent to stdout is now written to stderr.
The debug traces are now written to stdout. This way it is much easier to follow the debug traces 'live'.&lt;/p&gt;

&lt;p&gt;You might need to rebuffer gammu's stdout to emit the complete protocol hierarchy per message at once.
The following (pretty ugly) awk does this for you, to add some clarity I've added line breaks to what was an even uglier one-liner before:&lt;/p&gt;

&lt;pre&gt;
hessch@c3:~/gsm$ gammu nokiadebug nhm5_587.txt v18-19 2&gt;/dev/null | awk '
        /^\&amp;lt;l1/ {i=0}
        /^\&amp;lt;\/l1/ { end = 1 }
        {
                if ( i&gt;=0 ) {
                        buf[i] = $0;
                        i++
                };
                if (end == 1){
                        end = 0;
                        for (j = 0; j &lt; i; j++) {
                                print buf[j];
                        };
                        i = 0;
                }
        }
'
&lt;/pre&gt;
&lt;p&gt;
You can download my patch for Gammu at &lt;a href="http://isquared.nl/src/gammu-xmlstdout.patch"&gt;http://isquared.nl/src/gammu-xmlstdout.patch.&lt;/a&gt;.&lt;/p&gt;

		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=uSzzQvi330U:FOAIJdOSY24:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=uSzzQvi330U:FOAIJdOSY24:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=uSzzQvi330U:FOAIJdOSY24:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=uSzzQvi330U:FOAIJdOSY24:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=uSzzQvi330U:FOAIJdOSY24:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=uSzzQvi330U:FOAIJdOSY24:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=uSzzQvi330U:FOAIJdOSY24:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=uSzzQvi330U:FOAIJdOSY24:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/uSzzQvi330U" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=48</feedburner:origLink></entry>

	<entry>
		<title>UDGBUF, Part 1.5 : Adventures with the HD44780</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/4FMEA5J0QMI/index.html" />
		<id>http://isquared.nl/index.html?pagelink=45</id>
		<updated>2009-06-16T20:57:31Z</updated>
		<content type="html">
			&lt;p&gt;Yesterday (and today when I confirmed this), I noticed that it can be helpful to actually understand what you're doing. :)   What I didn't knew when I was &lt;i&gt;POKE&lt;/i&gt;ing bytes in my Psion Organiser's address space at first, is that when you access addresses 0x180 and 0x181, you're actually addressing the HD44780 LCD controller in the Organiser.&lt;/p&gt;

&lt;p&gt;The address &lt;b&gt;0x180&lt;/b&gt; is the instruction register of the HD44780 LCD controller, the address &lt;b&gt;0x181&lt;/b&gt; is its data register. I should have wondered already why it was possible to write subsequent rows in a UDG to the same address 0x181 to define a character.&lt;br/&gt;
If we look at the code of defining a user defined character again:&lt;/p&gt;
&lt;pre&gt;
udg:(udgnum%, b0%, b1%, b2%, b3%, b4%, b5%, b6%, b7%)
        pokeb $180, 64 + udgnum%*8
        pokeb $181, b0%; pokeb $181, b1%
        pokeb $181, b2%; pokeb $181, b3%
        pokeb $181, b4%; pokeb $181, b5%
        pokeb $181, b6%; pokeb $181, b7%
&lt;/pre&gt;

&lt;p&gt;You see that first the argument &lt;b&gt;64 + udgnum%*8&lt;/b&gt; is written to the address 0x180. The term 64 (or 0x40) is the instruction to the HD44780 LCD controller to set the CG (&lt;i&gt;character generator&lt;/i&gt;) RAM address. The least significant 6-bits of the instruction contain the address itself, this is the &lt;b&gt;udgnum% * 8&lt;/b&gt; term. udgnum% In this case, is the character to define. A character contains 8 rows of pixels, so to reach the next character you multiply this by 8.&lt;br/&gt;
Poking to 0x181 writes the bit pattern poked to this address in the CG RAM, the magic part is that after writing this pattern, the CG RAM address is automatically incremented by the controller!&lt;/p&gt;

&lt;p&gt;Knowing this,  I realized that it must be possible to use this to read from the CG RAM as well as writing, but it's not possible to use the autoincrement magic then. This morning, in the train to work I wrote a small OPL program to test this assumption:&lt;/p&gt;

&lt;pre&gt;
        rlcdreg:
                local char%, row%, byte%
                rem dump UDGs from HD44780 CG RAM
                char% = 0
                while char% &lt;= 7
                        row% = 0
                        while row% &lt;= 7
                                rem hd44780 instr reg is at 180h
                                rem instr 40h addresses CG RAM
                                pokeb $180, $40 + char%*8 + row%

                                rem data reg is at 181h
                                byte% = peekb($181)
                                print "chr"; char%,
                                print "row"; row%,
                                print "val"; byte%

                                row% = row% + 1
                        endwh
                        char% = char% + 1
                endwh

&lt;/pre&gt;

&lt;p&gt;And the character definitions came scrolling down my Psion's little screen!&lt;br/&gt;
Pretty useless, maybe. But it means that it is possible to manipulate the UDG definitions in the LCD controller directly, without using some shadow copy in the Psion's RAM. I think that I will experiment with this in OPL first and when succesful port it to machine code instead for speed, would be a nice opportunity to learn the instruction set of an ancient processor. ;)&lt;/p&gt;

&lt;p&gt;&lt;i&gt;To be continued.&lt;/i&gt;&lt;/p&gt;


		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=4FMEA5J0QMI:Aj_MjuOAUfI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=4FMEA5J0QMI:Aj_MjuOAUfI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=4FMEA5J0QMI:Aj_MjuOAUfI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=4FMEA5J0QMI:Aj_MjuOAUfI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=4FMEA5J0QMI:Aj_MjuOAUfI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=4FMEA5J0QMI:Aj_MjuOAUfI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=4FMEA5J0QMI:Aj_MjuOAUfI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=4FMEA5J0QMI:Aj_MjuOAUfI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/4FMEA5J0QMI" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=45</feedburner:origLink></entry>

	<entry>
		<title>UDGBUF: a poor man's framebuffer on Psion Organiser II, Part 1</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/ksrfhBiy_9g/index.html" />
		<id>http://isquared.nl/index.html?pagelink=44</id>
		<updated>2009-06-13T22:57:15Z</updated>
		<content type="html">
			&lt;p&gt;Today I had some more fun with my rediscovered Psion Organiser II. It's about time to get my hands on a model LZ or LZ64 to enjoy twice the amount of screen real estate. ;) &lt;/p&gt;

&lt;p&gt;This time I toyed with UDG (user defined characters) again. As the Psion reference manual states you can use these to make small animations as updating these changes them on screen immediately.
That gave me the idea to implement some minimalistic framebuffer using all eight UDGs. I print four static UDGs in screen row 1, the other four in screen row 2, this way you get a whopping 40x16 pixel space for graphics!&lt;/p&gt;

&lt;p&gt;It would be nice to read/write to the display controller directly and provide some convenience functions to do basic drawing, but I don't feel like learning to write HD6303 machine code just yet, so for now I plan to pass a pointer to some shadow memory (which I plan to allocate by creating a large global array or string) around where you do your graphics stuff, this will be then copied to the UDGs. &lt;/p&gt;

&lt;p&gt;As a first test, I wrote a small program that walks through the memory of the Psion and displays it in the UDGs, with this result:&lt;/p&gt;
&lt;embed src="http://isquared.nl/img/jarisplayer.swf" flashvars="thumb=http://isquared.nl/img/udgfb.png&amp;file=http://isquared.nl/img/udgfb.flv&amp;autostart=false" allowFullScreen="true" width="350" height="250" name="fullscreen" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt;

&lt;p&gt;Tomorrow, I'll try to write some functions to provide a few basic graphics operations to set and get a pixel value. And maybe even some Bressenham line/circle drawing after that.&lt;/p&gt;


		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=ksrfhBiy_9g:VeGGg6FugDc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=ksrfhBiy_9g:VeGGg6FugDc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=ksrfhBiy_9g:VeGGg6FugDc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=ksrfhBiy_9g:VeGGg6FugDc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=ksrfhBiy_9g:VeGGg6FugDc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=ksrfhBiy_9g:VeGGg6FugDc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=ksrfhBiy_9g:VeGGg6FugDc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=ksrfhBiy_9g:VeGGg6FugDc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/ksrfhBiy_9g" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=44</feedburner:origLink></entry>

	<entry>
		<title>JavaScript unit conversion gadget brings lots of RegEx fun</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/zmIlDVl3RMU/index.html" />
		<id>http://isquared.nl/index.html?pagelink=39</id>
		<updated>2009-06-07T21:39:38Z</updated>
		<content type="html">
			&lt;p&gt;My girlfriend started a &lt;a href="http://giustojuusto.blogspot.com/"&gt;cooking blog&lt;/a&gt; recently, if you want to keep track of what I eat, I suggest you subscribe to her feed. ;) &lt;br/&gt;
To help her American followers (and others suffering under the burden of a unit system from the
middle ages), I kludged together a little gadget to add to her Blogger pages. The gadget tries
to convert a few metric units to something equivalent in stones, feet and that Fahrenheit thing.&lt;/p&gt;

&lt;p&gt;Doing so, I learned a nifty thing about JavaScript regular expressions. The replace method in
JavaScript 3 makes it possible to call a function to return the replacement string. This way, I
can match value, a possible prefix and unit, make backreferences and pass those to a conversion
function and replace the matched text in the blog posts with converted values in one go, like so:
&lt;/p&gt;

&lt;p&gt;&lt;pre&gt;
var re = /(\d+|\u00bd) ?([mcdk]|(?:mili|centi|deci|kilo))?(g(?:r|ram)?|l(?:iter)?|c(?:elcius)?)\b/gi;

function knvrtit() {
        var entries = document.getElementsByClassName('entry-content');

        for (var i = 0; i &lt; entries.length; i++) {
                entries[i].innerHTML = entries[i].innerHTML.replace(re, das_Konvertor);
        };
}
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;But, what is that unicode &lt;i&gt; \u00bd&lt;/i&gt;, you say? Oh, well as it happens some keyboard layouts have
a 1/2 character and some people like to use it as well....&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Das_Konvertor()&lt;/i&gt; then does it's magic using a case construct to multiply values based on the
prefix of a unit, and then uses a second case construct to decide to convert in what way based on the
type of unit encountered. &lt;br/&gt;
The code for das_Konvertor() is a bit long, but it looks somewhat like this:
&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
function das_Konvertor (str, value, prefix, unit, offset, s) {
        // do stuff
        return string_in_imperical_units;
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;
It would be fun, and very web2.0ish to, instead of doing my own ugly conversions, pass the calculation
to be done to the almighty Google calculator in an XMLHttpRequest and display the result. If it keeps
raining in the weekends, I might do so. ;)
&lt;/p&gt;

		
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=zmIlDVl3RMU:zq8v3umWJIk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=zmIlDVl3RMU:zq8v3umWJIk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=zmIlDVl3RMU:zq8v3umWJIk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=zmIlDVl3RMU:zq8v3umWJIk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=zmIlDVl3RMU:zq8v3umWJIk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=zmIlDVl3RMU:zq8v3umWJIk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=zmIlDVl3RMU:zq8v3umWJIk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=zmIlDVl3RMU:zq8v3umWJIk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/zmIlDVl3RMU" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=39</feedburner:origLink></entry>

	<entry>
		<title>Psion Organiser II bargraphs</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/yqmLvjFf6RI/index.html" />
		<id>http://isquared.nl/index.html?pagelink=38</id>
		<updated>2009-06-07T17:48:12Z</updated>
		<content type="html">
			&lt;p&gt;Today, when searching for some other stuff, I came across some OPL (Organiser Programming Language, some sort of Pascal-ish bastard child of BASIC) code  that I must have written around 2000, or so.
&lt;/p&gt;
&lt;p&gt;One of the programs was a set of functions to display bargraphs using user-defined
characters on the two line text LCD of the Psion Organiser II. So I dug out my trusty old Psion Organiser II XP and cleaned up the code a bit.&lt;/p&gt;
&lt;p&gt;&lt;img src="/img/psi_bargraph.jpg" alt="Psion LCD bargraph"/&gt;&lt;/p&gt;
&lt;p&gt;This might be of use to someone, therefore I publish it here.&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;
udg:(x%, b0%, b1%, b2%, b3%, b4%, b5%, b6%, b7%)
	pokeb $180, 64 + x%*8
	pokeb $181, b0%; pokeb $181, b1%
	pokeb $181, b2%; pokeb $181, b3%
	pokeb $181, b4%; pokeb $181, b5%
	pokeb $181, b6%; pokeb $181, b7%

bargudg:
	udg:(0, 0, 0, 0, 0, 0, 0, 0,31)
	udg:(1, 0, 0, 0, 0, 0, 0,31,31)
	udg:(2, 0, 0, 0, 0, 0,31,31,31)
	udg:(3, 0, 0, 0, 0,31,31,31,31)
	udg:(4, 0, 0, 0,31,31,31,31,31)
	udg:(5, 0, 0,31,31,31,31,31,31)
	udg:(6, 0,31,31,31,31,31,31,31)
	udg:(7,31,31,31,31,31,31,31,31)

barchr$:(n%)
	if n% &gt; 8
		n% = 8
	endif
	if n% = 0
		return " "
	endif
	return chr$(n% - 1) 
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;When you add these functions to your Organiser, after calling &lt;b&gt;bargudg:&lt;/b&gt; you can call &lt;b&gt;barchr$:()&lt;/b&gt; just like chr$() to print bargraph characters to the screen or to concatenate them to a string. &lt;b&gt;barchr$:()&lt;/b&gt; accepts integers in the range &lt;i&gt;0..8&lt;/i&gt;, 0 being actually a space, not an UDG.&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=yqmLvjFf6RI:9X4ddkhwrrw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=yqmLvjFf6RI:9X4ddkhwrrw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=yqmLvjFf6RI:9X4ddkhwrrw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=yqmLvjFf6RI:9X4ddkhwrrw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=yqmLvjFf6RI:9X4ddkhwrrw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=yqmLvjFf6RI:9X4ddkhwrrw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=yqmLvjFf6RI:9X4ddkhwrrw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=yqmLvjFf6RI:9X4ddkhwrrw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/yqmLvjFf6RI" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=38</feedburner:origLink></entry>

	<entry>
		<title>JavaScript Cellular Automata Simulation of Fluid-flow</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/wFlwbSwWwGw/index.html" />
		<id>http://isquared.nl/index.html?pagelink=37</id>
		<updated>2009-05-23T12:13:28Z</updated>
		<content type="html">
			&lt;p&gt;Yesterday, I tried to make a simple Cellular Automaton-like discrete simulation of fluid-flow. Or I am not even sure flow is the right word, it simulates waves coming from the left, with an adjustable frequency, hitting obstacles in their path.&lt;/p&gt;
&lt;p&gt;My simulation is by no means attempting to be correct in any way but it is nice to play with and I even spotted something resembling the canceling of waves when passing to a double slit.&lt;/p&gt;
&lt;p&gt;Most of the work went into convincing JavaScript to do what I wanted, without being able to use Firebug due to some obscure bug. Maybe I'll write some more about the code behind this in a later article.&lt;br/&gt;
I also plan to make it possible to save the configuration of the obstacles in a later version.&lt;/p&gt;	
&lt;p&gt;Follow the read link to give it a try.&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wFlwbSwWwGw:f8W1XQxv7h4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wFlwbSwWwGw:f8W1XQxv7h4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=wFlwbSwWwGw:f8W1XQxv7h4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wFlwbSwWwGw:f8W1XQxv7h4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wFlwbSwWwGw:f8W1XQxv7h4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=wFlwbSwWwGw:f8W1XQxv7h4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=wFlwbSwWwGw:f8W1XQxv7h4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=wFlwbSwWwGw:f8W1XQxv7h4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/wFlwbSwWwGw" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=37</feedburner:origLink></entry>

	<entry>
		<title>TagPop: the making of</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/bh02NINWrYA/index.html" />
		<id>http://isquared.nl/index.html?pagelink=36</id>
		<updated>2009-05-19T13:28:36Z</updated>
		<content type="html">
			&lt;p&gt;As promised &lt;a href="http://isquared.nl/index.html?article=30"&gt;before&lt;/a&gt;, here is a description of the inner workings of &lt;a href="http://isquared.nl/index.html?pagelink=30&amp;desc=tagpop_visualizes_tags_by_popularity"&gt;TagPop&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;TagPop is a tag cloud of all tags used on this website, in which the size of each tag represent its popularity among the visitors of this site. 
The popularity is measured based on pageviews of individual articles.&lt;/p&gt;

		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=bh02NINWrYA:kwW_ZZWTHcA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=bh02NINWrYA:kwW_ZZWTHcA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=bh02NINWrYA:kwW_ZZWTHcA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=bh02NINWrYA:kwW_ZZWTHcA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=bh02NINWrYA:kwW_ZZWTHcA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=bh02NINWrYA:kwW_ZZWTHcA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=bh02NINWrYA:kwW_ZZWTHcA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=bh02NINWrYA:kwW_ZZWTHcA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/bh02NINWrYA" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=36</feedburner:origLink></entry>

	<entry>
		<title>NS Zet bussen in (in Dutch)</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/1PklgqXiLew/index.html" />
		<id>http://isquared.nl/index.html?pagelink=35</id>
		<updated>2009-05-17T11:18:13Z</updated>
		<content type="html">
			&lt;p&gt;&lt;i&gt;"NS zet bussen in"&lt;/i&gt; is een iCal feed gemaakt van de aankondigingen van werkzaamheden op de NS website. &lt;br&gt; De aankondigingen op de NS site zijn slecht te lezen door computers, ik heb geprobeerd deze zo goed en zo kwaad mogelijk om te zetten naar "all-day" events.&lt;/p&gt;

&lt;p&gt;De feed is beschikbaar op &lt;a href="http://isquared.nl/nszetbussenin.ics"&gt;http://isquared.nl/nszetbussenin.ics&lt;/a&gt;, deze feed is (bijvoorbeeld) in Google Calendar als gedeelde agenda toe te voegen. Op deze manier weet je de volgende keer vooraf of er werkzaamheden zijn op weg naar de afspraak die je probeert te maken.&lt;/p&gt; 
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=1PklgqXiLew:HrDqDH1tQ74:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=1PklgqXiLew:HrDqDH1tQ74:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=1PklgqXiLew:HrDqDH1tQ74:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=1PklgqXiLew:HrDqDH1tQ74:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=1PklgqXiLew:HrDqDH1tQ74:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=1PklgqXiLew:HrDqDH1tQ74:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=1PklgqXiLew:HrDqDH1tQ74:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=1PklgqXiLew:HrDqDH1tQ74:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/1PklgqXiLew" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=35</feedburner:origLink></entry>

	<entry>
		<title>Perl anonymous hashes as lookup-tables</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/gLUFuQ6uSWs/index.html" />
		<id>http://isquared.nl/index.html?pagelink=33</id>
		<updated>2009-05-16T17:36:57Z</updated>
		<content type="html">
			
		&lt;p&gt;Today when munging some data in Perl I came up with a elegant way to use
anonymous hashes as lookup tables.&lt;/p&gt;

&lt;p&gt;In this case I wanted to translate month names to integers. Of course 
you could use a bunch of regular expressions to do so. But adhering to the Perl
motto &lt;i&gt;&amp;quot;there is more than one way to do it&amp;quot;&lt;/i&gt; I tried using an 
anonymous hash as a lookup table, like this:&lt;/p&gt;

&lt;pre&gt;
$month = ${{
	'jan' =&gt;  1, 'feb' =&gt;  2, 'mar' =&gt;  3,
	'apr' =&gt;  4, 'may' =&gt;  5, 'jun' =&gt;  6,
	'jul' =&gt;  7, 'aug' =&gt;  8, 'sep' =&gt;  9,
	'oct' =&gt; 10, 'nov' =&gt; 11, 'dec' =&gt; 12}}{$month};
&lt;/pre&gt;

&lt;p&gt;
I quite like this method as no extra variables are needed and you can use this
to map many types of data to others.
&lt;/p&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=gLUFuQ6uSWs:tKN1hOs4r4s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=gLUFuQ6uSWs:tKN1hOs4r4s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=gLUFuQ6uSWs:tKN1hOs4r4s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=gLUFuQ6uSWs:tKN1hOs4r4s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=gLUFuQ6uSWs:tKN1hOs4r4s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=gLUFuQ6uSWs:tKN1hOs4r4s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=gLUFuQ6uSWs:tKN1hOs4r4s:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=gLUFuQ6uSWs:tKN1hOs4r4s:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/gLUFuQ6uSWs" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=33</feedburner:origLink></entry>

	<entry>
		<title>TagPop Visualizes tags by popularity</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/Ot4cqfDFhsA/index.html" />
		<id>http://isquared.nl/index.html?pagelink=30</id>
		<updated>2009-04-22T18:59:45Z</updated>
		<content type="html">
			&lt;p&gt;
The tag cloud on the left side of this page displays tags assigned to articles. The 
size of each tag is determined on the number of articles to which this tag is assigned. 
&lt;/p&gt;
&lt;p&gt;
I was interested how this tag cloud looks like when the size is determined by the 
popularity of articles tagged with a certain tag among readers of isquared.nl.
&lt;/p&gt;
&lt;p&gt;
To visualize this I have hacked together a quick application, called TagPop, to display the tags based on 
popularity, this is available &lt;a href="http://isquared.nl/doapp.html?appid=tagpop"&gt;
here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
In a later post I will write more about the inner workings of TagPop.
&lt;/p&gt;
		
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Ot4cqfDFhsA:Qr_Y1Nkmud0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Ot4cqfDFhsA:Qr_Y1Nkmud0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Ot4cqfDFhsA:Qr_Y1Nkmud0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Ot4cqfDFhsA:Qr_Y1Nkmud0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Ot4cqfDFhsA:Qr_Y1Nkmud0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Ot4cqfDFhsA:Qr_Y1Nkmud0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Ot4cqfDFhsA:Qr_Y1Nkmud0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Ot4cqfDFhsA:Qr_Y1Nkmud0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/Ot4cqfDFhsA" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=30</feedburner:origLink></entry>

	<entry>
		<title>New version of Squa.sh</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/VZ8LGb0ugQg/index.html" />
		<id>http://isquared.nl/index.html?pagelink=28</id>
		<updated>2009-04-20T23:57:28Z</updated>
		<content type="html">
			I've made some changes to squa.sh, my Bash script Pong clone.&lt;p&gt;
The first version made extensivce use of &lt;b&gt;tput(1)&lt;/b&gt; to update 
the terminal cursor position.&lt;br&gt;
I compared  the resulting control sequences sent to various terminal
versions, and all seemed to be in the format: &lt;br&gt;
&lt;pre&gt;
    ^[${row};${column}H
&lt;/pre&gt;
&lt;br&gt;
Therefore this new version uses pre cooked control sequences instead
of forking tput like mad. &lt;b&gt;dd(1)&lt;/b&gt; is still spawned each iteration
of the main loop to capture user input, &lt;b&gt;read(1)&lt;/b&gt; smallest timeout
is 1 second, so this is no option, or the game would be no much fun. ;)  
&lt;p&gt;
Also terminal size detection is fixed for NetBSD now, which means that
the new version of squa.sh runs on all hardware in my house right now!
&lt;p&gt;
You can grab a copy of the new version at 
&lt;a href="/src/squa.sh-ng/squa.sh"&gt;http://isquared.nl/src/squa.sh-ng/squa.sh&lt;/a&gt;.
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=VZ8LGb0ugQg:BIC72xVKSys:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=VZ8LGb0ugQg:BIC72xVKSys:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=VZ8LGb0ugQg:BIC72xVKSys:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=VZ8LGb0ugQg:BIC72xVKSys:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=VZ8LGb0ugQg:BIC72xVKSys:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=VZ8LGb0ugQg:BIC72xVKSys:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=VZ8LGb0ugQg:BIC72xVKSys:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=VZ8LGb0ugQg:BIC72xVKSys:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/VZ8LGb0ugQg" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=28</feedburner:origLink></entry>

	<entry>
		<title>squa.sh</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/1Nc3WW_0TsI/index.html" />
		<id>http://isquared.nl/index.html?pagelink=27</id>
		<updated>2009-04-19T20:37:58Z</updated>
		<content type="html">
			Squa.sh is a litte squash game in a Bash shell script that I wrote this evening.
&lt;p&gt;
Follow the read link for more information or you can download the complete script from &lt;a href="http://isquared.nl/src/squa.sh"&gt;here&lt;/a&gt;.
		
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=1Nc3WW_0TsI:IMaMUr7v46o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=1Nc3WW_0TsI:IMaMUr7v46o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=1Nc3WW_0TsI:IMaMUr7v46o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=1Nc3WW_0TsI:IMaMUr7v46o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=1Nc3WW_0TsI:IMaMUr7v46o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=1Nc3WW_0TsI:IMaMUr7v46o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=1Nc3WW_0TsI:IMaMUr7v46o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=1Nc3WW_0TsI:IMaMUr7v46o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/1Nc3WW_0TsI" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=27</feedburner:origLink></entry>

	<entry>
		<title>Converting dotted-quad IP addresses to integers</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/EQwk5FnVvoo/index.html" />
		<id>http://isquared.nl/index.html?pagelink=26</id>
		<updated>2009-04-18T10:18:18Z</updated>
		<content type="html">
			
Some years ago, before I was lazy enough to just grab a module from CPAN, I wrote this handy Perl function to convert a dotted quad IP address to an integer.&lt;p&gt;
&lt;pre&gt;
sub dotquadToInt($) {
        my ($e, $m, $r) = (24,,);
        my @octet = split(/\./, $_[0]);
        foreach $m (@octet) {
               $r += $m*2**$e;
               $e -= 8;
        };
        return $r;
}
&lt;/pre&gt;
I think the above is pretty, because it is easy to adapt to different bases etc. But it is also needlessly complex, a more elegant way to achieve the same is something like this:&lt;p&gt;
&lt;pre&gt;
sub dotquadToInt($) {
        my @octet = split(/\./, $_[0]);
        return $octet[0]*2**24 + $octet[1]*2**16 + $octet[2]*2**8 + $octet[3];
}
&lt;/pre&gt;&lt;p&gt;
Maybe these functions are of use to someone, though I would recommend everybody to use the excellent Net::IP Perl module instead!

		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=EQwk5FnVvoo:vnNc_ZF1Mfs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=EQwk5FnVvoo:vnNc_ZF1Mfs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=EQwk5FnVvoo:vnNc_ZF1Mfs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=EQwk5FnVvoo:vnNc_ZF1Mfs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=EQwk5FnVvoo:vnNc_ZF1Mfs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=EQwk5FnVvoo:vnNc_ZF1Mfs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=EQwk5FnVvoo:vnNc_ZF1Mfs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=EQwk5FnVvoo:vnNc_ZF1Mfs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/EQwk5FnVvoo" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=26</feedburner:origLink></entry>

	<entry>
		<title>Dreft</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/Mz0RU_uV_A8/index.html" />
		<id>http://isquared.nl/index.html?pagelink=24</id>
		<updated>2009-04-18T09:38:53Z</updated>
		<content type="html">
			Dreft is a quick and dirty tool that I wrote some time ago to do a 
bunch of reverse DNS lookups for a CIDR block. &lt;p&gt;
Its a pretty simple script, the most interesting part is the ugly workaround
to create an in-addr.arpa address from a Net::IP object, somehow I couldn't 
convince Net::IP to do this for me when iterating addresses.&lt;p&gt;
Usage is pretty straightforward too:&lt;br&gt;
&lt;pre&gt;
hessch@blokje:~$ dreft 4.2.2.0/29    
4.2.2.1 -&gt; vnsc-pri.sys.gtei.net.
4.2.2.2 -&gt; vnsc-bak.sys.gtei.net.
4.2.2.3 -&gt; vnsc-lc.sys.gtei.net.
4.2.2.4 -&gt; vnsc-pri-dsl.genuity.net.
4.2.2.5 -&gt; vnsc-bak-dsl.genuity.net.
4.2.2.6 -&gt; vnsc-lc-dsl.genuity.net.
&lt;/pre&gt;
&lt;p&gt;
Below you'll find the complete script, or as a handy downloadable link
&lt;a href="http://isquared.nl/src/dreft.pl"&gt;here&lt;/a&gt;.&lt;p&gt;
&lt;pre&gt;
#!/usr/bin/perl -w

# dreft - reverse dns enumerator
# Hessel Schut, hessel@isquared.nl, 2008-06-24

use strict;

use Net::DNS;
use Net::IP;

my $ip = new Net::IP ($ARGV[0])  or die (Net::IP::Error());
my $res = Net::DNS::Resolver-&gt;new;

do {
        # $ip-&gt;reverse_ip doesn't work when iterating IP addresses
        # horrible kludge to in-addr.arpafy the current IP:
        my $ptr = join('.', reverse(split /\./, $ip-&gt;ip()));
        $ptr .= ".in-addr.arpa";

        my $rr = $res-&gt;query($ptr, qw(PTR));

        if ($rr) {
                print $ip-&gt;ip()." -&gt; ".(($rr-&gt;answer)[0]-&gt;rdatastr)."\n";
        };
} while (++$ip);
&lt;/pre&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Mz0RU_uV_A8:dgEw39gy-rY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Mz0RU_uV_A8:dgEw39gy-rY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Mz0RU_uV_A8:dgEw39gy-rY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Mz0RU_uV_A8:dgEw39gy-rY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Mz0RU_uV_A8:dgEw39gy-rY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Mz0RU_uV_A8:dgEw39gy-rY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Mz0RU_uV_A8:dgEw39gy-rY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Mz0RU_uV_A8:dgEw39gy-rY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/Mz0RU_uV_A8" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=24</feedburner:origLink></entry>

	<entry>
		<title>Sorting IP addresses</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/Jkbw4EclTv0/index.html" />
		<id>http://isquared.nl/index.html?pagelink=22</id>
		<updated>2009-04-13T10:28:03Z</updated>
		<content type="html">
			Ever noticed how the Unix sort command can't make anything of IP addresses when you use just a numeric sort, like this:
&lt;p&gt;
&lt;pre&gt;
hessch@galileo:~$ sort -n ip.txt
1.2.3.4
5.6.7.8
10.200.219.5
10.20.30.40
10.3.5.6
89.2.177.21
193.18.4.1
&lt;/pre&gt;
&lt;p&gt;
As you notice, for instance 10.20.30.40 is listed below 10.200.219.5, which is wrong, of course.
The trick is to define every octect in the dotted quad notation as a key for sort like this:
&lt;p&gt;
&lt;pre&gt;
hessch@galileo:~$ sort -t. -n -k1,1 -k2,2 -k3,3 -k4,4 ip.txt
1.2.3.4
5.6.7.8
10.3.5.6
10.20.30.40
10.200.219.5
89.2.177.21
193.18.4.1
&lt;/pre&gt;
&lt;p&gt;
There you have it, using &lt;b&gt;sort -t. -n -k1,1 -k2,2 -k3,3 -k4,4&lt;/b&gt; all addresses are sorted properly.
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Jkbw4EclTv0:Ee35t_bNHxI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Jkbw4EclTv0:Ee35t_bNHxI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Jkbw4EclTv0:Ee35t_bNHxI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Jkbw4EclTv0:Ee35t_bNHxI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Jkbw4EclTv0:Ee35t_bNHxI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Jkbw4EclTv0:Ee35t_bNHxI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Jkbw4EclTv0:Ee35t_bNHxI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Jkbw4EclTv0:Ee35t_bNHxI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/Jkbw4EclTv0" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=22</feedburner:origLink></entry>

	<entry>
		<title>PostgreSQL Enums for fun and profit</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/bkPMse49d_c/index.html" />
		<id>http://isquared.nl/index.html?pagelink=21</id>
		<updated>2009-04-12T23:24:03Z</updated>
		<content type="html">
			Once in a while I find the need to reinvent the wheel when
programming, when working on some project recently, the wheel
happened to be syslog. &lt;p&gt;
Nothing wrong with syslog, but I felt the need to write my own
logging to a table in a Postgres database. &lt;p&gt;
While doing so I found a great way for deciding whether an event
can be logged at a certain log level using an enumerated datatype 
in Postgres.&lt;p&gt;
First we define the log levels (severities) as an Enum: &lt;br&gt;
&lt;pre&gt;
    CREATE TYPE eventseverity AS ENUM (
        'debug',
        'notice', 
        'warn',
        'error'
    );
&lt;/pre&gt;
&lt;p&gt;
Every event in the database will have a severity assigned to it. 
Now, to decide whether a event can be logged when a certain threshold
is set, we can make use of this enumerated datatype:&lt;br&gt;
&lt;pre&gt;
    SELECT enum_range(
        log_threshold::eventseverity, 
        enum_last(null::eventseverity)) @&gt; '{notice}'
    FROM eventconfig
    ;
&lt;/pre&gt;		
&lt;p&gt;
Where '{notice}' is the current log level to be tested. &lt;p&gt;
This returns a boolean that tells whether the tested log level is 
above or below the threshold.&lt;p&gt;
This can of course be integrated into more complicated queries. &lt;br&gt;
For example in my project this does a boolean OR over rows returned for
different thresholds. 

		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=bkPMse49d_c:yRxZp6F094o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=bkPMse49d_c:yRxZp6F094o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=bkPMse49d_c:yRxZp6F094o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=bkPMse49d_c:yRxZp6F094o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=bkPMse49d_c:yRxZp6F094o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=bkPMse49d_c:yRxZp6F094o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=bkPMse49d_c:yRxZp6F094o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=bkPMse49d_c:yRxZp6F094o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/bkPMse49d_c" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=21</feedburner:origLink></entry>

	<entry>
		<title>Online MAC Address Vendor lookup</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/MRtrCO66FsA/index.html" />
		<id>http://isquared.nl/index.html?pagelink=19</id>
		<updated>2008-11-23T02:59:42Z</updated>
		<content type="html">
			I have made an online version of my MAC address vendor lookup script. 
Of course there are many of these already, but well, choice is good, right?
You can query my vendor lookup tool here: &lt;a href="http://isquared.nl/doapp.html?appid=mac2vendor"&gt;http://isquared.nl/doapp.html?appid=mac2vendor&lt;/a&gt;
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=MRtrCO66FsA:mtFLY87icu4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=MRtrCO66FsA:mtFLY87icu4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=MRtrCO66FsA:mtFLY87icu4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=MRtrCO66FsA:mtFLY87icu4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=MRtrCO66FsA:mtFLY87icu4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=MRtrCO66FsA:mtFLY87icu4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=MRtrCO66FsA:mtFLY87icu4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=MRtrCO66FsA:mtFLY87icu4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/MRtrCO66FsA" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=19</feedburner:origLink></entry>

	<entry>
		<title>Cobalt status LCD, NetBSD version</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/Sm8eylN-jFY/index.html" />
		<id>http://isquared.nl/index.html?pagelink=18</id>
		<updated>2008-11-09T01:18:41Z</updated>
		<content type="html">
			Here is a NetBSD/Cobalt version of my Cobalt Qube/Raq LCD status screen updater. &lt;br/&gt;
The Debian linux version is described in an earlier post on this page, here: &lt;a href="http://isquared.nl/index.html?pagelink=12&amp;desc=cobalt_qube_status_lcd_system_monitor"&gt;Cobalt Qube status LCD system monitor&lt;/a&gt;. &lt;p/&gt;
This script works fine on NetBSD/Cobalt 3.0, I haven't tested it on other versions yet.
&lt;p/&gt;
You can download the new NetBSD version at &lt;a href="/src/lcdbanner-netbsd.sh"&gt;http://isquared.nl/src/lcdbanner-netbsd.sh&lt;/a&gt;

		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Sm8eylN-jFY:zyo-RiGLKA4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Sm8eylN-jFY:zyo-RiGLKA4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Sm8eylN-jFY:zyo-RiGLKA4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Sm8eylN-jFY:zyo-RiGLKA4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Sm8eylN-jFY:zyo-RiGLKA4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Sm8eylN-jFY:zyo-RiGLKA4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=Sm8eylN-jFY:zyo-RiGLKA4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=Sm8eylN-jFY:zyo-RiGLKA4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/Sm8eylN-jFY" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=18</feedburner:origLink></entry>

	<entry>
		<title>MAC address vendor lookup</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/gAkkmUo8_kw/index.html" />
		<id>http://isquared.nl/index.html?pagelink=15</id>
		<updated>2008-11-01T23:19:12Z</updated>
		<content type="html">
			There are a couple of webpages where you can lookup the manufacturer of a piece of network equipment based on the OUI part of its MAC-address.
That's neat, but not really if the device that you're trying to identify is, for instance, the rogue DHCP-server that knocked you off the Internet.
And apart from that, I rather do as much as I can from within the shell instead of mousing to some website.

That is why I've written a small shell-script that does the work for you. 
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=gAkkmUo8_kw:qrrzy804Tl4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=gAkkmUo8_kw:qrrzy804Tl4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=gAkkmUo8_kw:qrrzy804Tl4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=gAkkmUo8_kw:qrrzy804Tl4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=gAkkmUo8_kw:qrrzy804Tl4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=gAkkmUo8_kw:qrrzy804Tl4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=gAkkmUo8_kw:qrrzy804Tl4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=gAkkmUo8_kw:qrrzy804Tl4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/gAkkmUo8_kw" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=15</feedburner:origLink></entry>

	<entry>
		<title>SQLite based Bluetooth device logger</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/-EiZR8S2nS4/index.html" />
		<id>http://isquared.nl/index.html?pagelink=14</id>
		<updated>2008-11-01T23:16:40Z</updated>
		<content type="html">
			Btsql is a simple Bluetooth device logger, originally written in Perl, but later I rewrote it in C to support multiple Bluetooth (HCI) devices. The C source is very rough, but it basically works. :-)
&lt;p&gt;
All application logic resides within the SQLite3 database, that way the logger doesn't need to do more than blindly inserting values in the database. A couple of triggers do the rest. 
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=-EiZR8S2nS4:UnzZDCJRHYo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=-EiZR8S2nS4:UnzZDCJRHYo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=-EiZR8S2nS4:UnzZDCJRHYo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=-EiZR8S2nS4:UnzZDCJRHYo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=-EiZR8S2nS4:UnzZDCJRHYo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=-EiZR8S2nS4:UnzZDCJRHYo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=-EiZR8S2nS4:UnzZDCJRHYo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=-EiZR8S2nS4:UnzZDCJRHYo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/-EiZR8S2nS4" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=14</feedburner:origLink></entry>

	<entry>
		<title>Cobalt Qube status LCD system monitor</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/A6dkP2BaBIo/index.html" />
		<id>http://isquared.nl/index.html?pagelink=12</id>
		<updated>2008-11-01T22:58:29Z</updated>
		<content type="html">
			This is a handy framework to monitor several system parameters on Cobalt hardware running Debian GNU/Linux.
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=A6dkP2BaBIo:Dt45eCFt0RU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=A6dkP2BaBIo:Dt45eCFt0RU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=A6dkP2BaBIo:Dt45eCFt0RU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=A6dkP2BaBIo:Dt45eCFt0RU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=A6dkP2BaBIo:Dt45eCFt0RU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=A6dkP2BaBIo:Dt45eCFt0RU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=A6dkP2BaBIo:Dt45eCFt0RU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=A6dkP2BaBIo:Dt45eCFt0RU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/A6dkP2BaBIo" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=12</feedburner:origLink></entry>

	<entry>
		<title>arduino SLx-2016 display driver  </title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/rZ9KH4APnLo/index.html" />
		<id>http://isquared.nl/index.html?pagelink=11</id>
		<updated>2008-11-01T22:54:26Z</updated>
		<content type="html">
			The Osram SLx-2016 displays look great, and they are quite easy to interface. I bought one to play with at Conrad some time ago. It was gathering dust for a while, but I stubled upon it again today and kludged together a small piece of Arduino code to talk to my nice and shiny green display. 
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=rZ9KH4APnLo:u-vPL9BmstQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=rZ9KH4APnLo:u-vPL9BmstQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=rZ9KH4APnLo:u-vPL9BmstQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=rZ9KH4APnLo:u-vPL9BmstQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=rZ9KH4APnLo:u-vPL9BmstQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=rZ9KH4APnLo:u-vPL9BmstQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=rZ9KH4APnLo:u-vPL9BmstQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=rZ9KH4APnLo:u-vPL9BmstQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/rZ9KH4APnLo" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=11</feedburner:origLink></entry>

	<entry>
		<title>Durable circuits on perfboard </title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/YLS7qkN9wxQ/index.html" />
		<id>http://isquared.nl/index.html?pagelink=10</id>
		<updated>2008-11-01T22:51:38Z</updated>
		<content type="html">
			Ok, I have a love-hate relationship with perfboard. It's easy to prototype on it, but wiring your circuit can be a very tedious job.
&lt;p&gt;
And because of the exposed wiring your circuit board can be a bit fragile (or this might be due to my lousy soldering, of course.)
&lt;p&gt;
A handy way to make your circuit a bit more durable, and lots more presentable too, you can use cheap commonly available two-component epoxy glue to encase the solder side of your circuit boards. The downside is that you can't make any modifications afterwards, but for some of my projects this is not really a problem. 
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=YLS7qkN9wxQ:TwBKtmYhsLw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=YLS7qkN9wxQ:TwBKtmYhsLw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=YLS7qkN9wxQ:TwBKtmYhsLw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=YLS7qkN9wxQ:TwBKtmYhsLw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=YLS7qkN9wxQ:TwBKtmYhsLw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=YLS7qkN9wxQ:TwBKtmYhsLw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=YLS7qkN9wxQ:TwBKtmYhsLw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=YLS7qkN9wxQ:TwBKtmYhsLw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/YLS7qkN9wxQ" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=10</feedburner:origLink></entry>

	<entry>
		<title>Bourne/ Bash Shell CGI Scripts</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/hftWa41fC3M/index.html" />
		<id>http://isquared.nl/index.html?pagelink=9</id>
		<updated>2008-11-01T22:49:09Z</updated>
		<content type="html">
			Usually I do my server-side scripting in Perl, but some time ago when writing CGI scripts for an embedded system I ran into memory and flash space contraints. Because the system used Busybox, I had the Bourne compatible ash shell available.
&lt;p&gt;
So I wrote a very small Bourne shell script to include in my CGI scripts, which I share here, maybe it is of use to someone. 
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hftWa41fC3M:iD8SU8P0WZo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hftWa41fC3M:iD8SU8P0WZo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=hftWa41fC3M:iD8SU8P0WZo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hftWa41fC3M:iD8SU8P0WZo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hftWa41fC3M:iD8SU8P0WZo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=hftWa41fC3M:iD8SU8P0WZo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=hftWa41fC3M:iD8SU8P0WZo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=hftWa41fC3M:iD8SU8P0WZo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/hftWa41fC3M" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=9</feedburner:origLink></entry>

	<entry>
		<title>802.11 Wifi Radio spectrograms </title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/4BDbxpgEF8A/index.html" />
		<id>http://isquared.nl/index.html?pagelink=8</id>
		<updated>2008-11-01T22:45:30Z</updated>
		<content type="html">
			I've written a small program to plot the 802.11 (b/g) wifi radio spectrum from data collected from a Linksys WAP-54G access point running OpenWRT. 

Follow the read link to read more...
		
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=4BDbxpgEF8A:Ut8JD7xJ3GY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=4BDbxpgEF8A:Ut8JD7xJ3GY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=4BDbxpgEF8A:Ut8JD7xJ3GY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=4BDbxpgEF8A:Ut8JD7xJ3GY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=4BDbxpgEF8A:Ut8JD7xJ3GY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=4BDbxpgEF8A:Ut8JD7xJ3GY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=4BDbxpgEF8A:Ut8JD7xJ3GY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=4BDbxpgEF8A:Ut8JD7xJ3GY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/4BDbxpgEF8A" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?pagelink=8</feedburner:origLink></entry>

	<entry>
		<title>Old items repost</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/jagYYIpQNnk/index.html" />
		<id>http://isquared.nl/index.html?pagelink=7</id>
		<updated>2008-11-01T22:41:35Z</updated>
		<content type="html">
			Since the new site is built somewhat like a blog, I'll repost the old content as blog entries from here.
		
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=jagYYIpQNnk:CaiY33ZgeDQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=jagYYIpQNnk:CaiY33ZgeDQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=jagYYIpQNnk:CaiY33ZgeDQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=jagYYIpQNnk:CaiY33ZgeDQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=jagYYIpQNnk:CaiY33ZgeDQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=jagYYIpQNnk:CaiY33ZgeDQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=jagYYIpQNnk:CaiY33ZgeDQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=jagYYIpQNnk:CaiY33ZgeDQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/jagYYIpQNnk" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=7</feedburner:origLink></entry>

	<entry>
		<title>New page design</title>
		<link href="http://feeds.isquared.nl/~r/IsquaredRssFeed/~3/5vdPyQMmqvk/index.html" />
		<id>http://isquared.nl/index.html?pagelink=6</id>
		<updated>2008-11-01T22:36:17Z</updated>
		<content type="html">
			Welcome to the new design for isquared.nl. &lt;p&gt;
The old layout didn&amp;acute;t render properly on some browsers and wasn't too user-friendly anyway. So I decided on less form over function and tried to make it a bit easier to maintain at the same time. &lt;p&gt;
This is still a work in progress, so some features may misbehave or don&amp;acute;t work at all, this should be fixed soon, depending on my spare time. ;-)
		
		&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=5vdPyQMmqvk:QTDn9GVBgds:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=5vdPyQMmqvk:QTDn9GVBgds:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=5vdPyQMmqvk:QTDn9GVBgds:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=5vdPyQMmqvk:QTDn9GVBgds:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=5vdPyQMmqvk:QTDn9GVBgds:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=5vdPyQMmqvk:QTDn9GVBgds:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.isquared.nl/~ff/IsquaredRssFeed?a=5vdPyQMmqvk:QTDn9GVBgds:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/IsquaredRssFeed?i=5vdPyQMmqvk:QTDn9GVBgds:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IsquaredRssFeed/~4/5vdPyQMmqvk" height="1" width="1"/&gt;</content>
	<feedburner:origLink>http://isquared.nl/index.html?article=6</feedburner:origLink></entry>


</feed>

