<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>Planet BLUG</title>
  <updated>2012-02-07T05:17:10Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>BLUG</name>
    <email>lee.b@kintassa.com</email>
  </author>
  <id>http://planet.belfastlinux.org/atom.xml</id>
  <link href="http://planet.belfastlinux.org/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://planet.belfastlinux.org/" rel="alternate"/>

  <entry xml:lang="en">
    <id>http://www.piglets.org/serendipity/archives/122-guid.html</id>
    <link href="http://www.piglets.org/serendipity/archives/122-Swan-Heated-Tray-repair.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/3.0/" rel="license"/>
    <title>Swan Heated Tray repair</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">We have a nice <a href="http://www.amazon.co.uk/Swan-Professional-Cordless-Warming-SW03SS/dp/B0041MIBEA/ref=pd_sim_sbs_kh_1">Swan Heated Tray</a> courtesy of my Mum. It's useful for lots of things, heating plates for dinner and then placing serving dishes on it, or for keeping a stack of pancakes warm on Sunday. Unfortunately it stopped working recently. The red power LED still lit when power was applied but no heating. Google produced no answers (which is why I'm writing this for anyone following a similar trail). The helpline couldn't help, and theoretically the tray was under warranty, but with no receipt we couldn't follow their advice to return it to the store. So I had to fix it myself.<br/><br/>

<strong>You should obviously think twice before messing around with something (a) electrical and (b) which generates large amounts of heat. Please don't kill yourself or burn your house down, that will make us both feel really bad.</strong><br/><br/>

The tray is fitted with triangular screws which reinforces my comments above, but not having previously purchased some triangular screwdrivers, these were <a href="http://www.amazon.co.uk/gp/product/B004KFHHVQ">next to be acquired.</a> I figured they might come in useful for something else in the future.<br/><br/>

Taking the device apart shows that basically it's quite simple, there are some blocks through which elements do the heating, a lot of glass fibre (so wear gloves) to protect the underneath from the blocks.<br/><br/>

<div class="serendipity_imageComment_right" style="width: 110px;"><div class="serendipity_imageComment_img"><a class="serendipity_image_link" href="http://www.piglets.org/serendipity/uploads/IMGP9965.JPG"><img alt="The inside of the tray" class="serendipity_image_right" height="73" src="http://www.piglets.org/serendipity/uploads/IMGP9965.serendipityThumb.JPG" width="110"/></a></div><div class="serendipity_imageComment_txt">The inside of the tray. You can see the connections on the two right most blocks where I removed the section of cabling that was not working.</div></div>

 There are also a number of polythene covers to hold the corners of the blocks, though it seems a few were missing. There was no obvious fuse much to my surprise and irritation. A bit of testing with a continuity tester showed that a particular loop of cable was no longer doing its job. I pulled it out, and pulled back some insulated sheathing to reveal the culprit fuse. <br/><br/>

<div class="serendipity_imageComment_left" style="width: 110px;"><div class="serendipity_imageComment_img"><a class="serendipity_image_link" href="http://www.piglets.org/serendipity/uploads/IMGP9966.JPG"><img alt="The culprit" class="serendipity_image_left" height="73" src="http://www.piglets.org/serendipity/uploads/IMGP9966.serendipityThumb.JPG" width="110"/></a></div><div class="serendipity_imageComment_txt">The culprit</div></div>Replacement fuses can be <a href="http://uk.rs-online.com/web/p/products/1769328/?searchTerm=176-9328">obtained here</a>. I teased upon the crimps with a precision screw driver and fitted the replacement, crimping it very firmly back in place. Then it was a matter of putting it all back together and testing it was appropriate safety measures in case of problems. All working again.</div>
    </content>
    <updated>2012-02-04T14:40:51Z</updated>
    <category term="hardware"/>
    <category term="heated tray"/>
    <category term="repairs"/>
    <author>
      <name>Colin Turner</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.piglets.org/serendipity/</id>
      <link href="http://www.piglets.org/serendipity/" rel="alternate" type="text/html"/>
      <link href="http://www.piglets.org/serendipity/index.php?/feeds/" rel="self" type="application/rss+xml"/>
      <subtitle>Maths, Software, Hardware, Martial Arts and more</subtitle>
      <title>Proving the Obviously Untrue</title>
      <updated>2012-02-04T16:17:09Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2012:/~noodles/blog//1.266</id>
    <link href="http://www.earth.li/~noodles/blog/2012/01/i-want-you-to-see-my-storage-a.html" rel="alternate" type="text/html"/>
    <title>I want you to see my storage automagically</title>
    <summary>For my day job I build storage systems. A lot of what I do at present involves caring a lot about how different OSes deal with things like new LUNs being presented from a SCSI target, or errors along a subset of the available paths to a device. It will come as no surprise to you to discover that they all suck (for values of all equal to Linux, Solaris, Windows and VMWare). New LUNs are particularly annoying. I'm in the situation that creation and removal of a LUN is exceptionally easy. Hmmm. Maybe I need to back up here a bit first. SCSI has the concept of a target (think, device, eg hard drive). Each target can present multiple logical units. Each of these is assigned a number - a Logical Unit Number. Most devices (a hard drive, or a CDROM drive) will present a single LUN. A storage array will tend to present multiple LUNs; one for each volume that is exported to the host. At the host level each LUN really just looks like a separate device (for Linux /dev/sda and /dev/sdb may well be separate LUNs on the same array, rather than 2 separate arrays/hard drives, for example. At the block device level you don't care about the difference usually). Anyway. For various reasons I end up adding and removing LUNs quite often. And there are ways for the array to indicate that this has happened to the host (the UNIT ATTENTION/REPORT LUNS DATA CHANGED check condition seems to be favoured these days, as a complete Fibre Channel LIP can be disruptive). What I'd like to happen in that case is the host to pick up the check condition and drop and/or add the devices that have changed. Instead everything wants a manual rescan. rescan-scsi-bus tends to be simplest for Linux. Windows wants a manual refresh in Disk Administrator. VMWare a "Rescan HBAs" from vSphere. Solaris a "devfsadm -C" and possibly a "cfgadm -al" first. And all of these can be temperamental about picking up the changes. We've done a lot about hotplug for the desktop user experience, without doing the same level for the server experience. I appreciate that there are situations that you don't want your server to reconfigure things without being told to, but the current situation can be detrimental (for example Linux multipathing will hold a device open even after it's disappeared and is returning an "INVALID LUN" response; it would be much better if it could cleanly close that device and wait for it to return). Storage is capable of being much more than just a single block device these days, and it's a shame that nothing seems to deal fully with that fact. (Yes, yes, I should write and submit patches, but I appreciate that there's not always a simple answer, nor necessarily an answer that works for all situations automatically. Plus, y'know, not enough hours in the day and I hope you all appreciate I've taken a break from watching BSG to write this.)...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>For my day job I build storage systems. A lot of what I do at present
involves caring a lot about how different OSes deal with things like new
LUNs being presented from a SCSI target, or errors along a subset of the
available paths to a device.</p>

<p>It will come as no surprise to you to discover that they all suck (for
values of all equal to Linux, Solaris, Windows and VMWare). New LUNs are
particularly annoying. I'm in the situation that creation and removal of
a LUN is exceptionally easy.</p>

<p>Hmmm. Maybe I need to back up here a bit first. SCSI has the concept of
a target (think, device, eg hard drive). Each target can present
multiple logical units. Each of these is assigned a number - a Logical
Unit Number. Most devices (a hard drive, or a CDROM drive) will present
a single LUN. A storage array will tend to present multiple LUNs; one
for each volume that is exported to the host. At the host level each LUN
really just looks like a separate device (for Linux /dev/sda and
/dev/sdb may well be separate LUNs on the same array, rather than 2
separate arrays/hard drives, for example. At the block device level you
don't care about the difference usually).</p>

<p>Anyway. For various reasons I end up adding and removing LUNs quite
often. And there are ways for the array to indicate that this has
happened to the host (the UNIT ATTENTION/REPORT LUNS DATA CHANGED check
condition seems to be favoured these days, as a complete Fibre Channel
LIP can be disruptive). What I'd like to happen in that case is the host
to pick up the check condition and drop and/or add the devices that have
changed. Instead everything wants a manual rescan.
<a href="http://www.garloff.de/kurt/linux/">rescan-scsi-bus</a> tends to be
simplest for Linux. Windows wants a manual refresh in Disk
Administrator. VMWare a "Rescan HBAs" from vSphere. Solaris a "devfsadm
-C" and possibly a "cfgadm -al" first. And all of these can be
temperamental about picking up the changes.</p>

<p>We've done a lot about hotplug for the desktop user experience, without doing the same level for the server experience. I
appreciate that there are situations that you don't want your server to
reconfigure things without being told to, but the current situation can
be detrimental (for example Linux multipathing will hold a device open
even after it's disappeared and is returning an "INVALID LUN" response;
it would be much better if it could cleanly close that device and wait
for it to return). Storage is capable of being much more than just a
single block device these days, and it's a shame that nothing seems to
deal fully with that fact.</p>

<p>(Yes, yes, I should write and submit patches, but I appreciate that
there's not always a simple answer, nor necessarily an answer that works
for all situations automatically. Plus, y'know, not enough hours in the day and I hope you all appreciate I've taken a break from watching BSG to write this.)</p></div>
    </content>
    <updated>2012-01-23T00:01:03Z</updated>
    <published>2012-01-22T23:57:40Z</published>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2012:/~noodles/blog//1.265</id>
    <link href="http://www.earth.li/~noodles/blog/2012/01/totally-divorced.html" rel="alternate" type="text/html"/>
    <title>Totally divorced</title>
    <summary>I got divorced earlier this month; the decree absolute arrived in the post last weekend. I'm hoping this isn't news to anyone who knows me well, and I only really mention it here as an endpoint given that I blogged about the wedding itself....</summary>
    <content xml:lang="en">I got divorced earlier this month; the decree absolute arrived in the post last weekend. I'm hoping this isn't news to anyone who knows me well, and I only really mention it here as an endpoint given that I blogged about the wedding itself.</content>
    <updated>2012-01-22T22:18:51Z</updated>
    <published>2012-01-22T22:12:11Z</published>
    <category scheme="http://www.sixapart.com/ns/types#category" term="Wedding"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.mccartney.ie/wordpress/?p=256</id>
    <link href="http://www.mccartney.ie/wordpress/2011/12/faking-production-database-access/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=faking-production-database-access" rel="alternate" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2011/12/faking-production-database-access/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=faking-production-database-access#comments" rel="replies" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2011/12/faking-production-database-access/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">Faking Production – database access</title>
    <summary xml:lang="en">One of our services has been around for a while, a realy long time.  It used to get developed in production, there is an awful lot of work involved in making the app self-contained, to where it could be brought up in a VM and run without access to production or some kinds of fake [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>One of our services has been around for a while, a realy long time.  It used to get developed in production, there is an awful lot of work involved in making the app self-contained, to where it could be brought up in a VM and run without access to production or some kinds of fake supporting environment.  There’s lots of stuff hard coded in the app (like database server names/ip etc), and indeed, and there’s a lot of code designed to handle inaccessible database servers in some kind of graceful manor.</p>
<p>We’ve been taking bite sized chunks of all of this over the last few years, we’re on the home straight.</p>
<p>One of the handy tricks we used to get this application to be better self-contained was avoid changing all of the database access layer (hint, there isn’t one) and just use iptables to redirect requests to production database servers to either local empty database schema on the VM, or shared database servers with realistic amounts of data.</p>
<p>We manage our database pools (master-dbs.example.com, slave-dbs.example.com, other-dataset.example.com etc) using DNS (PowerDNS with MySQL back end), in production, if you make a DNS request for master-dbs.example.com, you will get 3+ IPs back, one of which will be in your datacentre, the others will be other datacentres, the app has logic for selecting the local DB first, and using an offsite DB if there is some kind of connection issue.  We also mark databases as offline by prepending the relevant record in MySQL with OUTOF, so that a request for master-dbs.example.com will return only 2 IPs, and a DNS request for OUTOFmaster-dbs.example.com will return any DB servers marked out of service.</p>
<p>Why am I telling you all of this?  Well, it’s just not very straight forward for us to update a single config file and have the entire app start using a different database server. <em>Fear not, our production databases aren’t actually accessible from the dev environments.</em></p>
<p>But what we can do is easily identify the IP:PORT combinations that an application server will try and connect to.  And once we know that it’s pretty trivial to generate a set of iptables statements that will quietly divert that traffic elsewhere.</p>
<p>Here’s a little ruby that generates some iptables statements to divert access to remote, production, databases to local ports, where you can either use ssh port-forwarding to forward on to a shared set of development databases, or to several local empty-schema MySQL instances:</p>
<blockquote><p>require “rubygems”<br/>
require ‘socket’</p>
<p># map FQDNs to local ports<br/>
fqdn_port  = Hash.new<br/>
fqdn_port["master-dbs.example.com"] = 3311<br/>
fqdn_port["slave-dbs.example.com"] = 3312<br/>
fqdn_port["other-dataset.example.com"] = 3314</p>
<p>fqdn_port.each do |fqdn, port|<br/>
  puts “#”<br/>
  puts “# #{fqdn}”<br/>
  # addressess for this FQDN<br/>
  fqdn_addr = Array.new</p>
<p>  # get the addresses for the FQDN<br/>
  addr = TCPSocket.gethostbyname(fqdn)<br/>
  addr[3, addr.length].each { |ip| fqdn_addr &lt;&lt; ip }</p>
<p>  addr = TCPSocket.gethostbyname(‘OUTOF’ + fqdn)<br/>
  addr[3, addr.length].each { |ip| fqdn_addr &lt;&lt; ip }</p>
<p>  fqdn_addr.each do |ip|<br/>
    puts “iptables -t nat -A OUTPUT -p tcp -d #{ip} –dport 3306 -j DNAT –to 127.0.0.1:#{fqdn_port[fqdn]}”<br/>
  end<br/>
end</p></blockquote>
<p>And yes, this only generates the statements, just pipe the output into bash if you want the commands actually run.  Want to see what it’s going to do?  Just run it.  Simples.</p></div>
    </content>
    <updated>2011-12-20T12:52:44Z</updated>
    <published>2011-12-20T12:52:44Z</published>
    <category scheme="http://www.mccartney.ie/wordpress" term="*nix"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="Bright Ideas"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="Linux &amp; Laptops"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="Open Source"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="Random Toad"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="Work"/>
    <author>
      <name>simonm</name>
      <uri>http://www.mccartney.ie/blog</uri>
    </author>
    <source>
      <id>http://www.mccartney.ie/wordpress/feed/atom/</id>
      <link href="http://www.mccartney.ie/wordpress" rel="alternate" type="text/html"/>
      <link href="http://www.mccartney.ie/wordpress/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">too boring to have a real blog</subtitle>
      <title xml:lang="en">ze blog of simon</title>
      <updated>2011-12-20T12:52:44Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.264</id>
    <link href="http://www.earth.li/~noodles/blog/2011/11/all-i-need-is-a-large-enough-w.html" rel="alternate" type="text/html"/>
    <title>All I need is a large enough white wall</title>
    <summary>I think I'm currently supposed to be out buying a TV at the moment. Or something else expensive. Instead I'm lying on the sofa listening to Whale and drinking tea. That's much better in my opinion, but it reminded me that I hadn't mentioned that I bought a projector. I had the loan of a projector for a while when I was in Belfast. It was a huge thing that made a lot of noise, but was pretty cool for watching films with. When I moved to the US I decided not to bother with a TV to start with - using my laptop did just fine for most things. Except films. They really benefit from a bigger screen. Especially if you want to watch them with someone else. So I started looking at pico projectors, because I wanted something small and cute that I could throw in a bag with my tiny laptop. At the time the best the pico projectors could do was 840x480, which I felt wasn't really that great. However back in January TI announced their DLP Pico HD chipset, offering a resolution 1280x800. I kept a look out for projectors using this to appear, and eventually, in July, Amazon claimed to have availability of the Vivtek Qumi. So I bought one. And I'm very happy with it. I'm not a heavy user, and there are some niggles, but it's small and does exactly what I want. In low light conditions it'll happily throw an image all the way across the room, which is more than it's rated at. There's a mini-HDMI connector on the back, so it's a doddle to plug it into my laptop using the supplied HDMI to mini-HDMI cable. The laptop auto-detects the device and extends the desktop appropriate, as you'd expect. It'll also do media playback itself - there's a USB host port and a micro SD slot on the back. This works ok, and the included remote means you can easily set the projector somewhere above your head and still be able to easily control it. Unfortunately the built in speakers are fairly useless. There's a 3.5mm socket for external speakers, but having to plug something else in detracts from the convenience factor of the built-in media player. Also my unit had the power switch installed upside down (the little red line indicating the power is on actually shows up when it's off), but that's the only complaint I've got about the build quality. There's a little neoprene case to store the thing in as well. So, er, yeah. I think I can continue to make do without a normal TV for a while longer and avoid the nightmare that I suspect are the shops on Black Friday....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>I think I'm currently supposed to be out buying a TV at the moment. Or something else expensive. Instead I'm lying on the sofa listening to <a href="http://en.wikipedia.org/wiki/Whale_%28band%29">Whale</a> and drinking <a href="http://www.taylorsofharrogate.co.uk/teaitem.asp?itmid=1722">tea</a>. That's much better in my opinion, but it reminded me that I hadn't mentioned that I bought a projector.</p>

<p>I had the loan of a projector for a while when I was in Belfast. It was a huge thing that made a lot of noise, but was pretty cool for watching films with. When I moved to the US I decided not to bother with a TV to start with - using my laptop did just fine for most things. Except films. They really benefit from a bigger screen. Especially if you want to watch them with someone else. So I started looking at pico projectors, because I wanted something small and cute that I could throw in a bag with my <a href="http://www.earth.li/~noodles/blog/2010/11/new-laptop-acer-aspire-timelin.html">tiny laptop</a>. At the time the best the pico projectors could do was 840x480, which I felt wasn't really that great. However back in January TI announced their DLP Pico HD chipset, offering a resolution 1280x800.</p>

<p>I kept a look out for projectors using this to appear, and eventually, in July, <a href="http://www.amazon.com/">Amazon</a> claimed to have availability of the Vivtek <a href="http://www.myqumi.com/">Qumi</a>. So I bought one. And I'm very happy with it. I'm not a heavy user, and there are some niggles, but it's small and does exactly what I want. In low light conditions it'll happily throw an image all the way across the room, which is more than it's rated at. There's a mini-HDMI connector on the back, so it's a doddle to plug it into my laptop using the supplied HDMI to mini-HDMI cable. The laptop auto-detects the device and extends the desktop appropriate, as you'd expect.</p>

<p>It'll also do media playback itself - there's a USB host port and a micro SD slot on the back. This works ok, and the included remote means you can easily set the projector somewhere above your head and still be able to easily control it. Unfortunately the built in speakers are fairly useless. There's a 3.5mm socket for external speakers, but having to plug something else in detracts from the convenience factor of the built-in media player. Also my unit had the power switch installed upside down (the little red line indicating the power is on actually shows up when it's off), but that's the only complaint I've got about the build quality. There's a little neoprene case to store the thing in as well.</p>

<p>So, er, yeah. I think I can continue to make do without a normal TV for a while longer and avoid the nightmare that I suspect are the shops on Black Friday.</p></div>
    </content>
    <updated>2011-11-26T00:32:16Z</updated>
    <published>2011-11-26T00:28:12Z</published>
    <category scheme="http://www.sixapart.com/ns/types#category" term="TV"/>
    <category label="review" scheme="http://www.sixapart.com/ns/types#tag" term="review"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://redbrain.co.uk/?p=648</id>
    <link href="http://redbrain.co.uk/index.php/update/detective-story/" rel="alternate" type="text/html"/>
    <title>Detective Story</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>So the other day, was exciting something i will always remember; becoming a detective. What you say, yes well i will try to keep this mostly anonymous as i think that’s more appropriate due to the circumstances. Well a close friend of mine created a website for buying and selling cars in a foreign country [...]</p></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>So the other day, was exciting something i will always remember; becoming a detective. What you say, yes well i will try to keep this mostly anonymous as i think that’s more appropriate due to the circumstances. Well a close friend of mine created a website for buying and selling cars in a foreign country which his brother lives in. So all going well website is fine bla bla, I just helped my friend system admin for the server maintaining apache, mysql, postfix etc.. the website was fairly busy.</p>
<p>But there was fake accounts created over time posting fake ads selling cars but most of which in-fact all were very obvious scams but one of which ads was created 5 times on this website from 5 different users with 5 different emails but each listing was exactly the same. Long and short of it one person fell for this listing and ended up wiring ~£8000 to this scammer. So the victim contacted the local police which contacted us to try and find as much details as possible on the scammer like emails ip’s etc.</p>
<p>As the scammer was trying to get more money out of the victim the police suggested to play along with the scammer so we can catch him in the act. But my job was to find out as much information as you can. And by god the amount of information you can figure out about someone based of server logs is scary if your clever.</p>
<p>So we cross referenced the times which the scammer signed up to the website each time, to get his ip and his email and checking the post data to be 100% sure we had the right ip. There were 5 instances we had to go through. 3 of which ips would origionate from exactly the same place which was a major city and isp the other 2 were in a more local rural town. And if you take more attention to the dates the first 2 sign-ups by this scammer originated from this city and occurred around June then nothing until October or so where the next 3 sign-ups occurred so this could give rise to the idea that this person moved house. We know its the same scammer each time when the listing is exactly the same each time and the trace on the ip go to the same places each time.</p>
<p>So yes this was an interesting day but very very interesting what you can figure out about people from their IP.</p>
<p> </p></div>
    </content>
    <updated>2011-11-16T17:36:07Z</updated>
    <category term="Update!"/>
    <author>
      <name>redbrain</name>
    </author>
    <source>
      <id>http://redbrain.co.uk</id>
      <link href="http://redbrain.co.uk/index.php/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://redbrain.co.uk" rel="alternate" type="text/html"/>
      <subtitle>Frustrated Software Developer</subtitle>
      <title>RedBrain @ $HOME : ~ $</title>
      <updated>2011-11-16T18:17:06Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.263</id>
    <link href="http://www.earth.li/~noodles/blog/2011/11/the-cost-of-progress.html" rel="alternate" type="text/html"/>
    <title>The cost of progress</title>
    <summary>You should probably ignore this post. I'm just venting. I'll be better after a nice cup of tea. Things that are causing me to fume about the fact Gnome Shell just hit Debian/Testing: Spacefun came back. Even on GDM3. Just fucking die already. I had to reboot to get bluetooth working again. /desktop/gnome/shell/windows/workspaces_only_on_primary set by default? SRSLY? It failed to carry over my previous monitor settings. I'm pretty sure I don't have a latent desire for a machine running OS X, whatever the GNOME devs might think. How many mouse clicks to get to the list of applications? Er, why have you changed my default apps? (Why is clicking a link in a terminal opening Epiphany rather than a new tab in Iceweasel?) I update my testing boxes (work + home laptops) almost every day. It rarely breaks, and certainly when it does I accept that's what I get for doing rolling upgrades. I can't remember the last time I did an upgrade that actually made me angry. Also I suspect this thing is going to have a complete fit on my binary nVidia/hacked up DisplayLink configuration at work (the DisplayLink side refuses to do 3D for starters). Perhaps better not to upgrade there until I have a sufficient block of free time. Maybe it's time to go back to evilwm. I only stopped because I wanted a dock for wifi/bluetooth etc applets on my laptop that didn't get hidden when I fullscreened things. Implementing _NET_WM_STRUT might make that doable... (I'm sure some of this is just dealing with the change but it's a bit bloody difficult to deal with a complete change in user interface that hasn't even managed to carry across settings from the old one.)...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>You should probably ignore this post. I'm just venting. I'll be better after a nice cup of tea.</p>

<p>Things that are causing me to fume about the fact <a href="http://live.gnome.org/GnomeShell">Gnome Shell</a> just hit <a href="http://www.debian.org/">Debian</a>/Testing:</p>

<ul>
<li>Spacefun came back. Even on GDM3. Just fucking die already.</li>
<li>I had to reboot to get bluetooth working again.</li>
<li><code>/desktop/gnome/shell/windows/workspaces_only_on_primary</code> set by default? SRSLY?</li>
<li>It failed to carry over my previous monitor settings.</li>
<li>I'm pretty sure I don't have a latent desire for a machine running OS X, whatever the GNOME devs might think.</li>
<li>How many mouse clicks to get to the list of applications?</li>
<li>Er, why have you changed my default apps? (Why is clicking a link in a terminal opening Epiphany rather than a new tab in Iceweasel?)</li>
</ul>

<p>I update my testing boxes (work + home laptops) almost every day. It rarely breaks, and certainly when it does I accept that's what I get for doing rolling upgrades. I can't remember the last time I did an upgrade that actually made me angry.</p>

<p>Also I suspect this thing is going to have a complete fit on my binary nVidia/hacked up DisplayLink configuration at work (the DisplayLink side refuses to do 3D for starters). Perhaps better not to upgrade there until I have a sufficient block of free time.</p>

<p>Maybe it's time to go back to <a href="http://www.6809.org.uk/evilwm/">evilwm</a>. I only stopped because I wanted a dock for wifi/bluetooth etc applets on my laptop that didn't get hidden when I fullscreened things. Implementing <code>_NET_WM_STRUT</code> might make that doable...</p>

<p>(I'm sure some of this is just dealing with the change but it's a bit bloody difficult to deal with a complete change in user interface that hasn't even managed to carry across settings from the old one.)</p></div>
    </content>
    <updated>2011-11-08T06:13:25Z</updated>
    <published>2011-11-08T05:53:51Z</published>
    <category label="Debian" scheme="http://www.sixapart.com/ns/types#tag" term="debian"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://redbrain.co.uk/?p=644</id>
    <link href="http://redbrain.co.uk/index.php/update/update-1/" rel="alternate" type="text/html"/>
    <title>Update #1</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>So i plan to try and do an update of me every 2 weeks on my blog to get more into routine in my life. For the last few years i realized i was very depressed and frustrated, from university i would go in and do my mathematics side of my degree and go to [...]</p></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>So i plan to try and do an update of me every 2 weeks on my blog to get more into routine in my life. For the last few years i realized i was very depressed and frustrated, from university i would go in and do my mathematics side of my degree and go to my Computer Science classes and hope to learn from these to understand what the updates in my debian system meant like changes to libc for security reasons then once 2nd year hit, it became very obvious that university wasn’t going to teach me the skills i wanted or hoped. So i took things into my own hands and threw my self into ~4 years of solid learning on my own and university kind of took a back step.</p>
<p>I have no regrets in the choices that i made,  doing what i have done has opened so many more doors for me in my life than anything else has in my life, including university. These days so many students go to university especially science related topics and dont get a related job from it in the end. I can say for me i know i am good at programming, i know i love it; i know i want to do this for the rest of my life as a career  not many people at my age can say anything like that about themselves. For me i never wanted to blame university to not get where i wanted to be in life. If it wasn’t for me taking so much time to learn on my own i wouldn’t have become a decent GCC hacker with server access etc. Mentored by Ian Taylor a well know free software hacker. I took my until june this year to break a lot of depression i had in my life and to accept my failing at university i felt like i had let down my whole family so much when i failed a module, it was when i tried the absolute hardest i possibly could at an applied math module at university and it didn’t pay off and there didn’t seem to be anyone to help you or talk to about it. That was in my 2nd year and that was when i really pushed my self into open source and free software.</p>
<p>It feels good to just talk about it and it doesnt make me feel sad anymore, i am back at university this year i should have been finished now but i failed all my modules last year it really took the biscuit if i am honest, i realised even more so that there is no chance students can learn anything useful from university, well at least from my university if you compare what others do. But yeah the long and short of it is i only need to pass 4 modules now this year to finish up my degree and i will be finished. Its hard for me but i will do it there is so much i want to do this year so i am pushing my self into alot of work to keep my mind active and my self in a routine.</p>
<p> </p>
<p>It scares me how much power your mind has over your body, when getting over all my depression i feel so much better in every day life. Its like i can see again but anyways enough of me blabing on i have lots of gccpy updates to post so i will do that over the coming weeks.</p></div>
    </content>
    <updated>2011-11-01T13:44:16Z</updated>
    <category term="Update!"/>
    <author>
      <name>redbrain</name>
    </author>
    <source>
      <id>http://redbrain.co.uk</id>
      <link href="http://redbrain.co.uk/index.php/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://redbrain.co.uk" rel="alternate" type="text/html"/>
      <subtitle>Frustrated Software Developer</subtitle>
      <title>RedBrain @ $HOME : ~ $</title>
      <updated>2011-11-16T18:17:06Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.piglets.org/serendipity/archives/121-guid.html</id>
    <link href="http://www.piglets.org/serendipity/archives/121-Gnome-3,-or-Gnome-Shell-issues.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/3.0/" rel="license"/>
    <title>Gnome 3, or Gnome Shell issues</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I use the <a href="http://www.debian.org">Debian</a> operating system on several computers. My "main" computer (<em>Imladris</em>) runs Debian <em>unstable (Sid)</em> while the others mostly run on <em>testing</em>. I've been anticipating the Gnome 3 upgrade for some time, mainly because of the switch to <a href="http://live.gnome.org/GnomeShell">Gnome Shell</a> which is a completely new way of using the desktop. I had played with Gnome Shell a while ago, and was kind of impressed and worried by it in equal measure, I decided it wasn't ready for prime time so stopped using it. Naturally I assumed it would be much more impressive upon release; especially since Debian is not (by far) the first GNU/Linux distribution to include Shell.<br/><br/>

A while ago a big upgrade came through on imladris, and it was clear it was the Gnome 3 upgrade. I share this computer with three other users, two of which are children for whom I have implemented password less login (locally only). I can only say I think Gnome have significantly mishandled the upgrade. Here are some reasons why.<br/><br/>

<strong>Login is seriously slow</strong><br/><br/>

The display manager can take up to a whole minute to display the list of users (and often doesn't display the icons). There are some bug reports about a possible race condition that causes this, but seriously on a reasonable spec computer this is unacceptably slow. The same problems occurs when switching user.<br/><br/>

<strong>I couldn't login</strong><br/><br/>

My, admittedly old user account simply wouldn't launch a working desktop. I had to (at a command prompt) delete configuration directories to get my account working again.<br/><br/>

<strong>Absolutely zero support for the user in transition</strong><br/><br/>

So the average user does the upgrade and suddenly their entire desktop has changed. But when they first login there will be some guidance about where everything is gone... right? No. Having already used Shell, I knew, but I had to try and show everyone else how to use the machine again. It's not that spectacularly intuitive.<br/><br/>

<strong>Actually, a lot of functions have just gone</strong><br/><br/>

There's a huge removal of existing functionality. All your carefully tweaked panels: gone. All your applets: gone. And bizarrely often with <em>no working alternative</em>.<br/><br/>

<strong>Not friendly for children</strong><br/><br/>

It was possible to set up a Gnome 2 account to make it easy for kids. Low res graphics, and big panels with big select icons. The new paradigm completely ignores all that in favour of a sleek minimalist environment which is probably not that easy for young children to understand.<br/><br/>

<strong>Dictatorial design choices</strong><br/><br/>

It's been decided that we don't need minimise buttons or maximise buttons. It's been decided not to honour old desktop backgrounds. It's been decided not to honour existing resolution settings. It's been decided not to show anything on the Desktop (much to the confusion of many users). It's been decided we can't right click on the desktop.<br/><br/>

Some of this kind of nonsense is exactly why I don't like some other operating systems who believe they know what's best for you with Messianic Zeal (I'm looking at you Apple).<br/><br/>

All in all I find this transition very disappointing. There are lots of basic things no-one seems to have thought of, and years of desktop customisation have been swept away with an extraordinary arrogance. Don't get me wrong, I support the idea of trying a new Desktop paradigm: but, for instance, if people used to have applets on their desktop for the weather, or for system monitoring, it's because they needed it. Rolling out a new desktop that simply ignores these things in favour of how some people thing everyone should use their desktop is exasperating.<br/><br/>

I'm seriously hoping that Gnome Shell improves significantly and fast. I won't hold my breath.</div>
    </content>
    <updated>2011-10-30T19:35:36Z</updated>
    <category term="Free Software"/>
    <category term="review"/>
    <category term="debian"/>
    <category term="free software"/>
    <category term="Gnome"/>
    <category term="linux"/>
    <author>
      <name>Colin Turner</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.piglets.org/serendipity/</id>
      <link href="http://www.piglets.org/serendipity/" rel="alternate" type="text/html"/>
      <link href="http://www.piglets.org/serendipity/index.php?/feeds/" rel="self" type="application/rss+xml"/>
      <subtitle>Maths, Software, Hardware, Martial Arts and more</subtitle>
      <title>Proving the Obviously Untrue</title>
      <updated>2012-02-04T16:17:09Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.mccartney.ie/wordpress/2011/10/17/246/</id>
    <link href="http://www.mccartney.ie/wordpress/2011/10/246/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=246" rel="alternate" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2011/10/246/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=246#comments" rel="replies" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2011/10/246/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">State of the Java Onion</title>
    <summary xml:lang="en">I’m siting on my flight home from my first devopsdays in Goteborg, so firstly, many thanks to the awesome Patrick Debois, Ulf &amp; many many others that put the effort in to organising the conference, and everybody that turned up and made the event so worth while! My primary reason for going was to hear [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>I’m siting on my flight home from my first <a href="http://devopsdays.org/">devopsdays</a> in Goteborg, so firstly, many thanks to the awesome <a href="https://twitter.com/#!/patrickdebois">Patrick Debois</a>, <a href="http://twitter.com/#!/ulfmansson">Ulf</a> &amp; many many others that put the effort in to organising the conference, and everybody that turned up and made the event so worth while! My primary reason for going was to hear other people’s experience with configuration management and general ops deployment experience. (I’m in the process of adding puppet to our large legacy LAMP stack)</p>
<p>I kind of expected to be the fuddy duddy in the room (my group runs 4 SaaS services, our largest is a LAMP+JBoss SIP stack, a Solaris/Tomcat/Oracle/Coherence stack, a Linux/Tomcat/MySQL stack and a Apache/Weblogic/Cognos/Oracle stack, all hosted on our own hardware, how retro), so I was prepared to hear stories of how easy it was to deploy services built on modern interpreted stacks to the cloud, but I was pleasantly surprised to hear that plenty of people are using java application servers of all shapes &amp; sizes in production. I was less pleased to hear, but somewhat comforted, that everybody running java stacks in production is suffering pain somewhere (damn, no silver bullet to take home).</p>
<p> </p>
<h2>Deployment Pain</h2>
<p>Lots of people were good enough to share their success &amp; horror stories about how their current java stacks get into production, some of the recurring topics:</p>
<h3>Orchestration</h3>
<p>I think this deserved a talk or open space on it’s own, but <a href="https://twitter.com/#!/lusis">John E. Vincent</a> covered chunks of this in his great tools talk, and it came up in the “deploying java artifacts” open space.</p>
<p>I’ve got some take away reading to do about tools like Apache <a href="http://whirr.apache.org/">Whirr</a> &amp; <a href="http://www.urbancode.com/">UrbanCode’s</a> deployment &amp; configuration tools, but everybody has similar problems, needing a controlled, reliable method of automating the pre &amp; post deployment steps (traffic bleed off, deploy, service verification, data load, back in service) and managing the service availability during the deployment (or managing the stress on systems affected by the post deployment steps)</p>
<h3>Hot/Cold deployments?</h3>
<p>In general, hot deployments never seem to work as planned reliably, hot deployments are highly desirable for some services due to session requirements, but most people observed that hot deployments are prone to problems, leaking memory on many occasions, leading to hot deployments being something you can only get away with a few times, if at all depending on your memory overhead.<br/>
The guys from <a href="http://www.zeroturnaround.com">zeroturnaround</a> demoed their latest jrebel/liverebel tools. <a href="http://www.zeroturnaround.com/jrebel">JRebel</a> is a developer focused tool that allows a jar to be hot updated in a running JaS, for quicker iterative java development. <a href="http://www.zeroturnaround.com/liverebel">LiveRebel</a> is built on similar technology but aimed at use in production, to do hot updates (I’m not sure how this differs from the hot deployments of war &amp; ear etc, but that’s a gap in my JaS understanding)</p>
<h3>war/ear or exploded webapps directory?</h3>
<p>Currently we do both, and each have their pros &amp; cons, exploded webapp directories have a tendency to build up undocumented cruft essential to the smooth running, and war/ear deploys have a tendency to break your heart with environment issues <em>(what do you mean we need a new build to use a different database server!?)</em></p>
<p>For our next service going into production, we need to be able to vary the number of tomcats running on a physical host, each running on a different port, to support this we’ve extended our existing in_service hook, which in a our simpler environments just lets the load balancer know that this host is now good to take traffic, now it will build out the multiple tomcat CATALINA_HOME trees from scratch, going as far as grabbing the ant &amp; tomcat tarballs required (version numbers pulled from central config db, allowing per host overrides for piloting versions on individual machines), the aim here is 2 fold, have a clearly documented process for building a working CATALINA_HOME and be able to dynamically vary our tomcat count without lots of manual preparation required)</p>
<h3>Environment &amp; Configuration</h3>
<p>Lots of issues &amp; lots of different solutions to this one, best case, war file ships with 3 environments configured, default to production, over ride on the command line for other environments (down side, production passwords are in the artefacts &amp; therefore in source control).</p>
<p>There was some discussion over externalising the config, various methods (XML includes in comtext.xml/server.xml) and providing an standard-ish API to get/set properties (some commercial JaS already do this).</p>
<p>Horror stories included the deploy process having a start to explode the war, stop, remove the war, fix the config, restart. Another involved a post restart data load that took 30-40min before the tomcat was ready for traffic again.</p>
<p>General concencus was that involving dev in more of the ops deployment pain helped hilight areas that needed some improvement.</p>
<h3>Config/Properties APIs</h3>
<p>There was a little bit of discussion around APIs for managing configs in a running AS, some of the commercial AS already have this, but their was little support around the room for single vendor solutions, although most agreed that practically nobody changes AS after initial selection, the desire for a single tool was focused on having a single tool to gain momentum instead of fragmented tooling.</p>
<h3>No Ops in the Java Serverlet Steering committee?</h3>
<p><em>I missed the exact names of the standards &amp; people involved, I’ll update this if you have specifics</em><br/>
One of the participants in the java artifacts open space is on the Java Community Process mailing list, he pointed out that their was practically no one representing ops in the ML, some of the proposed changes for horrified ops people in the room.</p>
<h2>the platform/application split</h2>
<p>Some ardent supporters of deploying nothing but packages, people using FPM and other tools to build RPMs and other packages of the AS and another package for application.</p>
<p>Part of this also comes down to your orchestration tools and how you run your CM, <a href="http://ramon71.hyves.nl">Ramon</a> of Hyves hilighted that they don’t run puppet continuously, they run once a day, due to orchestration requirements and scale (they have 3,000+ application server in production).</p>
<p>Most people agree that the CM goes as far as preparing the AS for an application to be dropped in, although most of these environments ran a single AS per host.</p></div>
    </content>
    <updated>2011-10-16T23:14:37Z</updated>
    <published>2011-10-16T23:11:46Z</published>
    <category scheme="http://www.mccartney.ie/wordpress" term="Random Toad"/>
    <author>
      <name>simonm</name>
      <uri>http://www.mccartney.ie/blog</uri>
    </author>
    <source>
      <id>http://www.mccartney.ie/wordpress/feed/atom/</id>
      <link href="http://www.mccartney.ie/wordpress" rel="alternate" type="text/html"/>
      <link href="http://www.mccartney.ie/wordpress/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">too boring to have a real blog</subtitle>
      <title xml:lang="en">ze blog of simon</title>
      <updated>2011-12-20T12:52:44Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.262</id>
    <link href="http://www.earth.li/~noodles/blog/2011/10/thanks-for-the-offer-but.html" rel="alternate" type="text/html"/>
    <title>Thanks for the offer, but...</title>
    <summary>I was due for another Google interview mail it seems. I have to say I wasn't expecting it, but this week I had a follow up to my polite mail from 6 months ago that said "No thanks, I'm not looking" asking if it was still the case. Normally I welcome this little bit of ego stroking; it's always nice to be wanted. Except that's not really the case, is it? It's an invitation to interview for something, not any indication that you've done more than tick some initial boxes. Google mails inevitably ask me if I'd like to work in SRE. It's always SRE. No one ever emails and asks if I want to work on self-replicating nanobots that will roam Mars searching for the perfect spot to build a beach house. And that's where things fall down. If someone currently has a job, then emailing them out of the blue to ask if they want to come and interview for something vague is hoping that they're either looking, and just haven't come to you yet, or not looking but unhappy enough with their current role that all they needed to start was an email asking them to submit a recent CV. For the former, if you're Google, do you really think that person doesn't know where to find you? For the latter, you're being quite presumptuous, aren't you? The act of updating my CV my be some effort (actually it's usually not, because the stuff that's not on it is the stuff I can't talk about because it's not released yet, or stuff that's specific and thus wouldn't go on a CV for a vague job spec). Even if it's not the act of interviewing is potentially a waste of time for both of us, if the role isn't clear. One argument used is that people will be placed according to the skills they show during the interview process. That's fine from the employers point of view, but if you're actively trying to get some interest from people who are gainfully employed you really need to grab their attention somehow. I can't remember the last time I had an unsolicited email interview offer that actually wowed me, or indeed even showed more than a passing sign of tailoring a spec to my profile. When I was running Black Cat I made a point of always replying to unsolicited CVs. How polite I was depended on how the covering emails were worded (a Word document with nothing else was likely to get short shrift, something well targeted in a Linux friendly format would normally get some comment about how we weren't hiring and were unlikely to be, but if that changed it would be mentioned on the website), but I felt people deserved a reply - I have been disappointed by not receiving responses myself to what I considered well targeted job inquiries. So far I've so far taken the same approach with mails from corporate recruiters (less so with recruiters that are associated with recruitment firms, rather than directly with the companies they are hiring for), but I'm starting to feel like changing that stance. Candidates are told to tailor CVs to the role being applied for, provide a decent cover letter, and in general make companies want to talk to them. Companies who are sending out recruitment emails should be held to the same standard. Even assuming you do a basic phone screen first, I can probably expect to need to take a day off work assuming that goes well. You need to convince me I can justify that before I'm going to feel like engaging at all. (And if I'm honest, based on what I've seen so far, it's unlikely to happen. All of the things I've considered have come from conversations with people I know directly about companies they own or work for, never some random contact via email. I try hard not to think of recruitment mail as spam, but I can how that line of thought follows through.) I should apologize to Google here. They got mentioned as an example, but I don't think they're particularly bad. I did interview with them at one point, and made the decision not to continue that process after deciding a different, more certain, path was better for me. So I've displayed interest. And in response to my reply today of "I know where to find you, so please assume I'll do so if I change my mind." they've said they'll make a note on their records....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>I was due for another Google interview mail it seems. I have to say I wasn't expecting it, but this week I had a follow up to my polite mail from 6 months ago that said "No thanks, I'm not looking" asking if it was still the case.</p>

<p>Normally I welcome this little bit of ego stroking; it's always nice to be wanted. Except that's not really the case, is it? It's an invitation to interview for something, not any indication that you've done more than tick some initial boxes. Google mails inevitably ask me if I'd like to work in SRE. It's always SRE. No one ever emails and asks if I want to work on self-replicating nanobots that will roam Mars searching for the perfect spot to build a beach house.</p>

<p>And that's where things fall down. If someone currently has a job, then emailing them out of the blue to ask if they want to come and interview for something vague is hoping that they're either looking, and just haven't come to you yet, or not looking but unhappy enough with their current role that all they needed to start was an email asking them to submit a recent CV.</p>

<p>For the former, if you're Google, do you really think that person doesn't know where to find you? For the latter, you're being quite presumptuous, aren't you? The act of updating my CV my be some effort (actually it's usually not, because the stuff that's not on it is the stuff I can't talk about because it's not released yet, or stuff that's specific and thus wouldn't go on a CV for a vague job spec). Even if it's not the act of interviewing is potentially a waste of time for both of us, if the role isn't clear.</p>

<p>One argument used is that people will be placed according to the skills they show during the interview process. That's fine from the employers point of view, but if you're actively trying to get some interest from people who are gainfully employed you really need to grab their attention somehow. I can't remember the last time I had an unsolicited email interview offer that actually wowed me, or indeed even showed more than a passing sign of tailoring a spec to my profile.</p>

<p>When I was running Black Cat I made a point of always replying to unsolicited CVs. How polite I was depended on how the covering emails were worded (a Word document with nothing else was likely to get short shrift, something well targeted in a Linux friendly format would normally get some comment about how we weren't hiring and were unlikely to be, but if that changed it would be mentioned on the website), but I felt people deserved a reply - I have been disappointed by not receiving responses myself to what I considered well targeted job inquiries.</p>

<p>So far I've so far taken the same approach with mails from corporate recruiters (less so with recruiters that are associated with recruitment firms, rather than directly with the companies they are hiring for), but I'm starting to feel like changing that stance. Candidates are told to tailor CVs to the role being applied for, provide a decent cover letter, and in general make companies want to talk to them. Companies who are sending out recruitment emails should be held to the same standard. Even assuming you do a basic phone screen first, I can probably expect to need to take a day off work assuming that goes well. You need to convince me I can justify that before I'm going to feel like engaging at all.</p>

<p>(And if I'm honest, based on what I've seen so far, it's unlikely to happen. All of the things I've considered have come from conversations with people I know directly about companies they own or work for, never some random contact via email. I try hard not to think of recruitment mail as spam, but I can how that line of thought follows through.)</p>

<p>I should apologize to Google here. They got mentioned as an example, but I don't think they're particularly bad. I did interview with them at one point, and made the decision not to continue that process after deciding a different, more certain, path was better for me. So I've displayed interest. And in response to my reply today of "I know where to find you, so please assume I'll do so if I change my mind." they've said they'll make a note on their records.</p></div>
    </content>
    <updated>2011-10-05T06:02:36Z</updated>
    <published>2011-10-05T05:55:20Z</published>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.mccartney.ie/wordpress/?p=239</id>
    <link href="http://www.mccartney.ie/wordpress/2011/09/windows-7-essentials/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=windows-7-essentials" rel="alternate" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2011/09/windows-7-essentials/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=windows-7-essentials#comments" rel="replies" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2011/09/windows-7-essentials/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">Windows 7 Essentials</title>
    <summary xml:lang="en">I’ve just rebuilt my laptop (a combination of McAfee Whole Disk Encryption slowing the current build down &amp; a Crucial ReadSSD 128Gb that was too cheap to resist forced me to, honest guv), so it’s time to refresh &amp; re-document the essential software list: Windows 7 Professional 64bit VistaSwitcher (better alt-tab) WindowSpace (snap windows to [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>I’ve just rebuilt my laptop (a combination of McAfee Whole Disk Encryption slowing the current build down &amp; a Crucial ReadSSD 128Gb that was too cheap to resist forced me to, honest guv), so it’s time to refresh &amp; re-document the essential software list:</p>
<ol>
<li>Windows 7 Professional 64bit</li>
<li><a href="http://www.ntwind.com/software/vistaswitcher.html">VistaSwitcher</a> (better alt-tab)</li>
<li><a href="http://www.ntwind.com/software/windowspace/download.html">WindowSpace</a> (snap windows to screen edges &amp; other windows, extended keyboard support for moving/resizing)</li>
<li><a href="http://launchy.net/">Launchy</a></li>
<li><a href="http://www.mozilla.org/en-GB/thunderbird/">Thunderbird</a>6
<ol>
<li><a href="https://addons.mozilla.org/en-US/thunderbird/addon/lightning/">Lightning</a> (required for work calendars)</li>
<li>OBET</li>
<li><a href="https://addons.mozilla.org/en-US/thunderbird/addon/provider-for-google-calendar/">Provider for Google Calendar</a> (so I can see my personal calendar)</li>
<li><a href="https://addons.mozilla.org/en-US/thunderbird/addon/google-contacts/">Google Contacts</a> (sync sync sync)</li>
<li><a href="https://addons.mozilla.org/en-us/thunderbird/addon/mail-redirect/">Mail Redirect</a> (bounce/redirect email to a ticketing system)</li>
<li><a href="https://addons.mozilla.org/en-us/thunderbird/addon/nostalgy/">Nostalgy</a> (move/copy mail to different folders from the keyboard)</li>
<li><a href="https://addons.mozilla.org/en-us/thunderbird/addon/phoenity-shredder/">Phoenity Shredder</a> or <a href="https://addons.mozilla.org/en-us/thunderbird/addon/littlebird-for-thunderbird/">Littlebird</a> (the default theme is a bit slow, these are lighter and quicker)</li>
<li>Hacked <a href="https://addons.mozilla.org/en-US/thunderbird/addon/blunderdelay/">BlunderDelay</a> &amp; mailnews.sendInBackground=true</li>
</ol>
</li>
<li><a href="http://www.google.com/chrome">Chrome</a> + <a href="http://www.xmarks.com/">Xmarks</a></li>
<li><a href="http://www.xmarks.com/">Xmarks for IE</a></li>
<li><a href="http://www.evernote.com/">Evernote</a></li>
<li><a href="http://www.dropbox.com/">Dropbox</a> &amp; <a href="http://wiki.dropbox.com/DropboxAddons/DropboxFolderSync">Dropbox Folder Sync</a></li>
<li><a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">PuTTY</a> (remember to export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions)</li>
<li><a href="http://winscp.net/eng/index.php">WinSCP</a></li>
<li><a href="http://www.pidgin.im/">Pidgin</a> + <a href="http://www.cypherpunks.ca/otr/binaries/windows/pidgin-otr-3.2.0-1.exe">OTR</a></li>
<li><a href="http://www.vim.org/download.php#pc">gVim</a></li>
<li>Cisco AnyConnect (main work VPN)</li>
<li>Cisco VPNClient (backup &amp; OOB VPN)</li>
</ol>
<p>I think that’s it for now.</p></div>
    </content>
    <updated>2011-09-12T12:14:12Z</updated>
    <published>2011-09-12T10:24:37Z</published>
    <category scheme="http://www.mccartney.ie/wordpress" term="Bright Ideas"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="Random Toad"/>
    <author>
      <name>simonm</name>
      <uri>http://www.mccartney.ie/blog</uri>
    </author>
    <source>
      <id>http://www.mccartney.ie/wordpress/feed/atom/</id>
      <link href="http://www.mccartney.ie/wordpress" rel="alternate" type="text/html"/>
      <link href="http://www.mccartney.ie/wordpress/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">too boring to have a real blog</subtitle>
      <title xml:lang="en">ze blog of simon</title>
      <updated>2011-12-20T12:52:44Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:pgregg.com,2011:/blog//2.347</id>
    <link href="http://pgregg.com/blog/2011/08/amusing-true-near-death-experience.html" rel="alternate" type="text/html"/>
    <title>Amusing, True Near Death Experience.</title>
    <summary>Those who know me will know that there have been two important events occurring in my life this week. 1) Tiling my kitchen, and 2) Trying to buy a HP TouchPad.As part of tiling the kitchen, significant other wanted to replace all the standard white wall sockets with Stainless Steel ones to match the rest of the kitchen colour scheme. I was safely over half way through this task, having disconnected the socket mains supply, when a van pulled up bearing HP TouchPad goodness. Thus the next 30 minutes of my life was accounted for.Upon returning to the kitchen tasks...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml">Those who know me will know that there have been two important events occurring in my life this week. 1) Tiling my kitchen, and 2) Trying to buy a HP TouchPad.<br/><br/>As part of tiling the kitchen, significant other wanted to replace all the standard white wall sockets with Stainless Steel ones to match the rest of the kitchen colour scheme. I was safely over half way through this task, having disconnected the socket mains supply, when a van pulled up bearing HP TouchPad goodness. Thus the next 30 minutes of my life was accounted for.<br/><br/>Upon returning to the kitchen tasks I came to the Cooker 40A switch. I disconnected the ring main from the switch and proceeded to move the wires so that I kept the supply and load pairs apart when BUZZZZZZ and 240 Volts of high energy goodness shot through my hand and up my arm.<br/><br/>Yes folks, TouchPad caused me to forget to flip the cooker ring circuit in the fuse box.<br/><br/>Cue me jumping back, dropping tools and collapsing to the floor in a bout of Arrrrgh.<br/><br/>Wife said "Stop it, you'll scare the kids.".<br/><br/>Kids run in asking what happened and wife explains that Daddy electrocuted himself.<br/><br/>Six year old Lauren asked "Could you see his bones?".<br/><br/></div>
    </content>
    <updated>2011-08-25T23:02:50Z</updated>
    <published>2011-08-25T22:49:59Z</published>
    <author>
      <name>Paul Gregg</name>
      <uri>http://pgregg.com</uri>
    </author>
    <source>
      <id>tag:pgregg.com,2009-02-01:/blog//2</id>
      <link href="http://pgregg.com/blog/" rel="alternate" type="text/html"/>
      <link href="http://pgregg.com/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <title>Plop in the Ocean</title>
      <updated>2011-08-25T23:02:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://martian.org/marty/?p=236</id>
    <link href="http://martian.org/marty/2011/03/17/beam-me-up-scotty/" rel="alternate" type="text/html"/>
    <link href="http://martian.org/marty/2011/03/17/beam-me-up-scotty/#comments" rel="replies" type="text/html"/>
    <link href="http://martian.org/marty/2011/03/17/beam-me-up-scotty/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">Beam me up, Scotty.</title>
    <summary xml:lang="en">Based on the messages we have received from family and friends, I’m sure that if Star Trek’s transporter technology worked they would without hesitation beam us out of Tokyo. But despite the best efforts of many so-called “news” media, I don’t feel afraid to be in Tokyo. I’m not unnamed Starfleet crewman #2. With the [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>Based on the messages we have received from family and friends, I’m sure that if Star Trek’s transporter technology worked they would without hesitation beam us out of Tokyo.</p>

<p>But despite the best efforts of many so-called “news” media, I don’t feel afraid to be in Tokyo.  I’m not unnamed Starfleet crewman #2. With the tricorder information I have here I am confident that my continued exploration of Tokyo is much safer than being dematerialized, where I would risk being trapped in a pattern buffer for 70 years, or cloned by inadvertent reflection off the ionosphere.</p>

<p>I’m glad to say that the radiation threatening my life, just like the transporter, does not yet exist.</p></div>
    </content>
    <updated>2011-08-06T13:59:44Z</updated>
    <published>2011-03-17T14:38:41Z</published>
    <category scheme="http://martian.org/marty" term="Uncategorized"/>
    <category scheme="http://martian.org/marty" term="quake"/>
    <author>
      <name>Marty</name>
      <uri>http://martian.org/marty/wp-atom.php</uri>
    </author>
    <source>
      <id>http://martian.org/marty/feed/atom/</id>
      <link href="http://martian.org/marty" rel="alternate" type="text/html"/>
      <link href="http://martian.org/marty/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Marty was here!</subtitle>
      <title xml:lang="en">バカな火星人</title>
      <updated>2012-01-11T13:16:06Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.piglets.org/serendipity/archives/120-guid.html</id>
    <link href="http://www.piglets.org/serendipity/archives/120-Multi-User-Sound-in-GNULinux.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/3.0/" rel="license"/>
    <title>Multi User Sound in GNU/Linux</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">For some years now, basically since Aimee became old enough to use a computer, I have had a need for decent multi-user sound. Specifically I would often have intricate work open in multiple work spaces on my desktop, and Aimee would want to do some artwork.<br/><br/>

I guess Aimee was about two when she started using my computer a fair bit, and I immediately had a separate account for her with lower resolution graphics, easier menus, simple shortcuts and the like. I also had a graphics tablet for her, which she mastered very quickly. Another important reason to have a separate account was that if stuff got really badly messed up I could just nuke the account and start again, and she couldn't really hurt my configuration.<br/><br/>

As you would imagine, lots of the excellent free software for children, like <a href="http://gcompris.net/">GCompris</a>, and <a href="http://tuxpaint.org/">Tuxpaint</a> is very rich in its sound effects, and sometimes the sound is not just desirable, but essential for the activities. So a very annoying persistent problem has been that, once in a while, something in the sound stack in my login would stop Aimee's sound from working.<br/><br/>

Now I share my main PC with two other people, Tamsin and Aimee, and soon Matilda too, so this recurrent problem is more of an issue, it's also very hard to nail down. Despite protests to the contrary the default ALSA setup <a href="http://lists.debian.org/debian-multimedia/2011/01/msg00015.html">still has this problem</a>; <a href="http://www.freedesktop.org/wiki/Software/ConsoleKit">ConsoleKit</a> on its own doesn't seem to get it quite right. I tried <a href="http://www.pulseaudio.org/">PulseAudio</a> for a while, and generally it was an improvement, but the problem did still occur sometimes. I even made sure all the users were members of the right groups including <em>pulse-rt</em>.<br/><br/>

Then I found this entry in the <a href="http://www.pulseaudio.org/wiki/FAQ">PulseAudio FAQ</a>.<br/><br/>

<blockquote>
<strong>Sound doesn't work when switching users</strong><br/><br/>

PulseAudio works with a single user, but when an additional user logs in (fast user switching), sound/audio does not work for the additional user.<br/><br/>

Check that no users are part of the "audio" group.<br/><br/>

In simple setups (e.g. singe user, without PulseAudio), users must be a member of the "audio" group to access the sound devices (/dev/snd/* (which have group "audio" write permissions)). Switching users will not automatically stop programs using those sound devices though, so those sound devices will not be accessible to a new (faster user switched) user's programs.<br/><br/>

By removing all users from the "audio" group (the PulseAudio server still runs in the "audio" group), PulseAudio is able manage access to sound devices (/dev/snd/*) amongst multiple users with the help of ConsoleKit.<br/><br/> 
</blockquote><br/><br/>

It would never have occurred to me to remove the users from the <em>audio</em> group, but doing so seems to have solved the problem. I almost don't want to say that, because every "solution" up to now has been partial, but so far no problems, so maybe this will be the fix.</div>
    </content>
    <updated>2011-08-04T08:42:28Z</updated>
    <category term="Free Software"/>
    <category term="debian"/>
    <category term="free software"/>
    <author>
      <name>Colin Turner</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.piglets.org/serendipity/</id>
      <link href="http://www.piglets.org/serendipity/" rel="alternate" type="text/html"/>
      <link href="http://www.piglets.org/serendipity/index.php?/feeds/" rel="self" type="application/rss+xml"/>
      <subtitle>Maths, Software, Hardware, Martial Arts and more</subtitle>
      <title>Proving the Obviously Untrue</title>
      <updated>2012-02-04T16:17:09Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.piglets.org/serendipity/archives/119-guid.html</id>
    <link href="http://www.piglets.org/serendipity/archives/119-Rooting-and-Upgrading-the-HTC-Desire.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/3.0/" rel="license"/>
    <title>Rooting and Upgrading the HTC Desire</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><strong>I have been asked by a few friends to document how I did this. All the information is derived from elsewhere and its currency may be limited. Trying to root and flash phones is potentially dangerous. You need to take your time and consider what you are doing carefully. If you break your phone, you own the pieces. This worked for me, but I can make no guarantees. You get the idea.</strong><br/><br/>

<strong>Read the whole article before you start please.</strong><br/><br/>

The HTC Desire is a lovely phone, but it has two pretty annoying flaws. First of all the battery life isn't great, but that's not what this article is about, and secondly, the internal memory is very limited. I thought when I got the phone that Froyo would save me because it had apps2sd. Apps2sd allows you to move applications from the internal memory to the SD card, but it has some serious limitations:

<ul>
  <li>apps with widgets and some other bits won't work properly from SD</li>
  <li>many apps only partially move to SD</li>
  <li>some huge apps won't move at all (I'm looking at you Google).</li>
</ul><br/><br/>

The ROM images I was getting, from Google to HTC to O2 were out of date, and they clearly didn't even care about fixing some significant issues (like the broken authentication in the HTC Peep program). This wouldn't matter because you could install a decent twitter client if you had the memory... oh... you get the idea. I was rapidly having to remove apps hand over fist with every upgrade, and my Daughter was complaining about their absence. So I decided to sort it out.<br/><br/>

Some ROM images have the rather different data2sd. This allows you to treat part of your SD card as the internal memory of the phone. This makes a crucial difference, no messing about partially moving to "SD", but allowing a large amount of memory to be treated as internal.<br/><br/>

<strong>Step Zero: You will need</strong><br/><br/>

<ol>
<li>This process will take some time, during which you won't really be able to use your phone. Make sure you have time. If it works you will have to do some work setting some things back up, it will to some extent be like having a new phone; some work can be done to minimise this. See below.</li>
<li>For this to work you will need a half decent SD card. Mine is a class 6, 8G card. The class information is written in the card in a number with a circle on it, and has to do with the speed of the card. Class 2 will apparently be painful. Class 4 is apparently fine. But I already had class 6. Get a decent card.</li>
<li>Some means of mounting the card on your PC, usually an SD to micro SD adapter.</li>
<li>Possibly a blank CD, and some spare Hard Disc space for backups.</li>
</ol>

<strong>Step One: Backup Your Phone.... Really</strong><br/><br/>

Even if this all works it will be like having a new phone to some extent, so expect to do some setup again. If you don't have time, don't start. Backup your phone. I had Backup PRO which I used to backup everything. I did this to the SD card this time, but actually, I should have done it online instead (or as well). I'll explain why later. Backup PRO wasn't free, but it was cheap and has been more than worth it for me. I've used it several times.<br/><br/>

Now backup your SD card. Either mount it as a drive or take it out of the phone and put it in your adapter or whatever. Copy <strong>everything</strong> to your PC as files (in the past I've used dd, but this is not needed).<br/><br/>

<strong>Step Two: Root Your Phone</strong><br/><br/>

At some points in the past this has been very tricky, but this was easy this time. I went to the <a href="http://unrevoked.com/">Unrevoked</a> website, and downloaded the software to flash the phone. Follow the instructions carefully and <strong>read all the guidance</strong>. Click on the Desire, and your OS, and download what's needed (some extra drivers for Windows please note). I was using Debian GNU/Linux at the time.<br/><br/>

Turn on "USB Debugging" (Menu &gt;&gt; Settings &gt;&gt; Applications &gt;&gt; Development) on the phone, and then plug the phone in (leave it as charge only when it prompts you). Run the software, wait, and in a few minutes your phone should reboot with ClockworkMod and root access. Note some people suggest you need to run the program on your PC as root, I did need to do so.<br/><br/>

<strong>Step Three: Check you can access recover mode</strong><br/><br/>

For some reason I couldn't do this with the volume buttons on power on, so I did the following. Power off the phone. Hold the "back" (hardware button) down. Now press power on. You will get to the Bootloader screen. By using the power button you can run the Bootloader. This brings another menu and (after some patience) allows you to move up and down with the volume buttons until you pick "Recovery". Now press the power button again. When the phone reboots it will be into recovery mode. Peruse the options, see that you can navigate with the optical trackball and the back button.<br/><br/>

<strong>Step Four: Possibly install a ROM manager</strong><br/><br/>

Now you can pick an alternative ROM of your choice. But this article following on below is specific to the Supernova ROM.<br/><br/>

I installed ROM Manager (and it's cheap but not free upgrade) to allow me to download ROMs and flash them, and I flashed Cyanogen... but I didn't like it. I did it for old time's sake and much as I tried to bring myself to like it I found I missed the HTC Sense stuff (that surprised me). You can experiment with all of this. I strongly recommend you opt to wipe user data on a major ROM change, the phone will probably hang if you don't when you reboot, and you'll have to get into recovery mode anyway and do it there.<br/><br/>

<strong>Step Five: Get the ROM files</strong><br/><br/>

The ROM I went for was <a href="http://supernova.droidzone.in/">Supernova</a> since essentially it's a good, HTC Sense oriented, Gingerbread based ROM with the data2sd extra. In other words, you get newer Android goodies with much the same user experience, but don't have to worry so much about the memory. You need to sign up to the website and then go to the download links and get the ROM and data2sd installer. Copy them to your hard disc for now.<br/><br/>

<strong>Step Six: Prepare your SD card</strong><br/><br/>

For the data2sd to work, you need to prepare your SD card with a FAT32 partition (for general use) followed by an ext4 partition (for use as internal memory). Don't panic if you're not a Linux user. There is a way to do this for you.<br/><br/>

In Debian, I installed gparted. I then put the SD card in its adapter and in the machine. The machine may mount it automatically... make sure you unmount it before proceeding. Run gparted and follow on below.<br/><br/>

If you are using another OS, get the <a href="http://gparted.sourceforge.net/livecd.php">GParted</a> live CD.<br/><br/>

Follow these <a href="http://supernova.droidzone.in/supernova-rom-home/resources/how-to-partition-for-starburst/">instructions</a> carefully.<br/><br/>

<strong>Make sure the GParted is accessing the correct device in the pull down before you start, make sure the disc space in front of you looks correct. YOU DO NOT WANT TO ACCIDENTALLY REPARTITION YOUR COMPUTER'S HARD DISC. TAKE YOUR TIME.</strong> Personally I went for about 7000 MB on FAT32 and the remainder for my ext4 partition.<br/><br/>

Get out of GParted, back into your regular environment (close GParted, reboot or whatever). Now copy your SD card backup (remember that, right?) back onto the card. Finally copy the two ZIP files from the Supernova website (the ROM and data2sd installer) into the root of the SD card. Dismount the card and put it in your phone.<br/><br/>

<strong>Step Seven: Install the ROM and data2sd bits</strong><br/><br/>

I recommend you read and follow <a href="http://supernova.droidzone.in/category/installation/">the official instructions</a> carefully from here in. Note I didn't bother with the radio code because I was confident it was already very recent. <strong>Follow the instructions very carefully to be sure the data2sd will work correctly... note there are a few very specific things you must do and must not do in between boots.</strong>. Basically you need to use reovey mode to do a factory reset, navigate to the ROM ZIP and install, reboot, change a few settings, back to recovery, navigate to the data2sd ZIP, install, reboot.<br/><br/>

<strong>Step Eight: Restore as needed</strong><br/><br/>

You should now have loads of space in internal memory. Check in Menu &gt;&gt; Settings &gt;&gt; Applications &gt;&gt; Storage.<br/><br/>

I then put in my Google credentials and restored everything after downloading Backup PRO again. Because my backup was on the SD and it was copying to SD, it was slow. I recommend using the online option. Be patient, if you are restoring call logs and SMS messages it will take time, do not navigate away. Wait for it to finish and immediately restart. Think twice about copying "settings", I always worry it will cause the newer ROM to cease. Your mileage may vary.</div>
    </content>
    <updated>2011-07-11T08:23:00Z</updated>
    <category term="hardware"/>
    <category term="android"/>
    <category term="linux"/>
    <author>
      <name>Colin Turner</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.piglets.org/serendipity/</id>
      <link href="http://www.piglets.org/serendipity/" rel="alternate" type="text/html"/>
      <link href="http://www.piglets.org/serendipity/index.php?/feeds/" rel="self" type="application/rss+xml"/>
      <subtitle>Maths, Software, Hardware, Martial Arts and more</subtitle>
      <title>Proving the Obviously Untrue</title>
      <updated>2012-02-04T16:17:09Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.261</id>
    <link href="http://www.earth.li/~noodles/blog/2011/06/chromium.html" rel="alternate" type="text/html"/>
    <title>Chromium</title>
    <summary>The thing that finally made me install Chromium? The refusal of Google+ to work with Firefox 3.5 (from Debian/testing). Well played Google. Well played.Update: Please note I didn't say "switch to Chromium", it was just installing it at all. I've also pulled in FF 5 from experimental which seems to be working nicely - I hope that it can make its way into unstable and thus to testing soon....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml">The thing that finally made me install Chromium? The refusal of Google+ to work with Firefox 3.5 (from Debian/testing). Well played Google. Well played.<br/><br/>Update: Please note I didn't say "switch to Chromium", it was just installing it at all. I've also pulled in FF 5 from experimental which seems to be working nicely - I hope that it can make its way into unstable and thus to testing soon.<br/></div>
    </content>
    <updated>2011-07-02T03:16:06Z</updated>
    <published>2011-07-01T04:27:02Z</published>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.piglets.org/serendipity/archives/118-guid.html</id>
    <link href="http://www.piglets.org/serendipity/archives/118-Tau-versus-Pi.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/3.0/" rel="license"/>
    <title>Tau versus Pi</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Today, two of my friends independently sent me a story about <a href="http://www.bbc.co.uk/news/science-environment-13906169">Tau Day</a> which I had hitherto never heard of. One of them asked for me comment about whether this had any point to it. At first I thought the article was just mathematical trolling, thought about it a bit more, thought there might be a real point to it, thought some more and concluded it seemed rather silly.<br/><br/>

The argument is about whether the mathematical constant pi, would be better being replaced throughout mathematics with an alternative tau, which is just twice pi (in other words, replacing pi everywhere with a half of this tau). It's suggested that formulae with tau will be more simple.<br/><br/>

<strong>Basic Geometry</strong><br/><br/>

So this is all about the fact that pi was defined historically as the ratio of the circumference to the diameter of the circle, a very old classical reference stemming back to Greek geometry (incidentally pi is also known as Archimedes' constant since he attempted to calculate an approximation to it). Once upon a time, the formula used in schools would have been:<br/><br/>

<img alt="C = \pi D" src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=C%20%3D%20%5Cpi%20D" title="C = \pi D"/><br/><br/>

related the circumference <em>C</em> to the diameter <em>D</em>. But generally now, we use the radius <em>r</em> rather than the diameter. And so that gives us (for circumference and area):<br/><br/>

<img alt="C = 2 \pi r \quad ; \quad A = \pi r^2" src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=C%20%3D%202%20%5Cpi%20r%20%5Cquad%20%3B%20%5Cquad%20A%20%3D%20%5Cpi%20r%5E2" title="C = 2 \pi r \quad ; \quad A = \pi r^2"/><br/><br/>

The argument for tau begins by observing the extra 2 in the first formula, and wouldn't be nicer if we just defined tau to be twice pi so that these formula would be so much nicer. Would they?<br/><br/>

<img alt="C = \tau r ; \quad A = \frac{\tau}{2} r^2" src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=C%20%3D%20%5Ctau%20r%20%3B%20%5Cquad%20A%20%3D%20%5Cfrac%7B%5Ctau%7D%7B2%7D%20r%5E2" title="C = \tau r ; \quad A = \frac{\tau}{2} r^2"/><br/><br/>

Set aside for the moment the fact that pi is probably the most recognisable Greek letter in the world that speaks languages based on the Latin alphabet (aside from those that are, or appear to be the same). Set aside the fact that tau is used for other specific purposes in much of modern Mathematics, and in particular in the discipline of Topology. The first formula might be nicer, but the second one is probably worse, and by enough to make the improvement of the first rather parlous. OK. But the article talks about this being the problem behind radians, so maybe that's where we get the big gain. Let's explore that.<br/><br/>

<strong>Radians instead of Degrees</strong><br/><br/>

There's nothing particularly clever about using degrees. It's an arbitrary choice (360 degrees in a circle) that probably owes a lot to do with <a href="http://en.wikipedia.org/wiki/Degree_%28angle%29#History">historical factors</a> in one civilisation. It <em>is</em> true that when you start to do some significant mathematics with degrees, it starts to look quite unwieldy. The classic two formulae to consider are the length of an arc and area of a sector.<br/><br/>

Suppose we have a circle of radius <em>r</em> and we want to work out the length of an <em>arc</em> (a part of the circumference) where the angle subtending this arc is <em>theta</em> degrees (don't panic, no more Greek to come). Then in degrees the formula will be:<br/><br/>

<img alt="s = \frac{\theta}{360} \times 2 \pi r = \frac{2 \pi r \theta}{360}" src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=s%20%3D%20%5Cfrac%7B%5Ctheta%7D%7B360%7D%20%5Ctimes%202%20%5Cpi%20r%20%3D%20%5Cfrac%7B2%20%5Cpi%20r%20%5Ctheta%7D%7B360%7D" title="s = \frac{\theta}{360} \times 2 \pi r = \frac{2 \pi r \theta}{360}"/><br/><br/>

The reason why is that the fraction on the left is the fraction of the relevant angle out of all the angle available, multiplied by the total arc length available (the whole circumference). The formula is not beautiful, and the similar formula for sector area is also a big ugly.<br/><br/>

<img alt="A = \frac{\theta}{360} \times \pi r^2 = \frac{\pi r^2 \theta}{360}" src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=A%20%3D%20%5Cfrac%7B%5Ctheta%7D%7B360%7D%20%5Ctimes%20%5Cpi%20r%5E2%20%3D%20%5Cfrac%7B%5Cpi%20r%5E2%20%5Ctheta%7D%7B360%7D" title="A = \frac{\theta}{360} \times \pi r^2 = \frac{\pi r^2 \theta}{360}"/><br/><br/>

You will note that in both cases there is a 360 on the bottom of the fraction and a 2 pi on the top. This looks like nature's way of trying to tell us something. What would happen if we used an unit of angle so that, instead of having 360 of them in a circle, we had 2 pi of them in a circle (proponents of tau will just say tau of them in a circle)? The formula, derived using the same logic, become much nicer.<br/><br/>

<img alt=" s = \frac{\theta}{2 \pi} \times 2 \pi r = r \theta " src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=%20s%20%3D%20%5Cfrac%7B%5Ctheta%7D%7B2%20%5Cpi%7D%20%5Ctimes%202%20%5Cpi%20r%20%3D%20r%20%5Ctheta%20" title=" s = \frac{\theta}{2 \pi} \times 2 \pi r = r \theta "/><br/>
<img alt=" A = \frac{\theta}{2 \pi} \times \pi r^2 = \frac{1}{2} r^2 \theta" src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=%20A%20%3D%20%5Cfrac%7B%5Ctheta%7D%7B2%20%5Cpi%7D%20%5Ctimes%20%5Cpi%20r%5E2%20%3D%20%5Cfrac%7B1%7D%7B2%7D%20r%5E2%20%5Ctheta" title=" A = \frac{\theta}{2 \pi} \times \pi r^2 = \frac{1}{2} r^2 \theta"/><br/><br/>

So we get<br/><br/>
<img alt=" s = r \theta \quad ; \quad A = \frac{1}{2} r^2 \theta" src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=%20s%20%3D%20r%20%5Ctheta%20%5Cquad%20%3B%20%5Cquad%20A%20%3D%20%5Cfrac%7B1%7D%7B2%7D%20r%5E2%20%5Ctheta" title=" s = r \theta \quad ; \quad A = \frac{1}{2} r^2 \theta"/><br/><br/>


Now these are beautiful, elegant formulae, and the underpinning of why radians (the unit of angle we are talking about here) are used instead of degrees in much of higher mathematics, the formula are much simpler (particularly true when using calculus). Also, look at that first formula, it has all the resonance of <em>F = ma</em>. 1 unit of arc length is found in a circle of radius 1 unit with an angle of 1 radian. So beautiful is this that it used as the definition of the radian in many books. So far, so good. Did we really need tau to produce these? Does it matter that it it tau and not pi that cancels out? I can't see why.<br/><br/>



<strong>Fourier Series</strong><br/><br/>

Another example owes to the <a href="http://en.wikipedia.org/wiki/Fourier_series">work of Fourier</a>, who showed that repeating patterns can be broken into sums of the most basic repeating functions, the ones that are most simple are the sine and cosine functions. These are used to model waves of any sort which are of course ubiquitous in nature. It turns out you can build up more odd shapes like triangular and square waves out of these sinusoidal ones. Being able to do this is important in many aspects of Science and Engineering, and eventually this theory leads to all sorts of cool stuff like the way data is compressed in photos and more.<br/><br/>

<div class="serendipity_imageComment_center" style="width: 388px;"><div class="serendipity_imageComment_img"><img alt="The graphs of Sine and Cosine" class="serendipity_image_center" height="288" src="http://www.piglets.org/serendipity/uploads/sincos2.png" width="388"/></div><div class="serendipity_imageComment_txt">The graphs of Sine and Cosine (sin t and cos t)</div></div><br/><br/>

This graph is labelled in degrees, so you can imagine if we change it to radians as we should then the 360 would become 2 pi. This is where again, proponents of tau will argue that replacing the 360 with a simple tau makes things easier. And it does, if all you want to do is to label that diagram. But the foundation of Fourier theory is building functions up in combinations of these:<br/><br/>

<img alt=" 1, \sin t, \cos t, \sin 2t, \cos 2t, \sin 3t, \cos 3t, \ldots " src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=%201%2C%20%5Csin%20t%2C%20%5Ccos%20t%2C%20%5Csin%202t%2C%20%5Ccos%202t%2C%20%5Csin%203t%2C%20%5Ccos%203t%2C%20%5Cldots%20" title=" 1, \sin t, \cos t, \sin 2t, \cos 2t, \sin 3t, \cos 3t, \ldots "/><br/><br/>

The formulae you need to be able to deal with to do this are (among others):<br/><br/>

<img alt=" a_n = \frac{1}{\pi} \int_{-\pi}^{\pi} f(t) \cos nt dt \quad ; \quad  b_n = \frac{1}{\pi} \int_{-\pi}^{\pi} f(t) \sin nt dt" src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=%20a_n%20%3D%20%5Cfrac%7B1%7D%7B%5Cpi%7D%20%5Cint_%7B-%5Cpi%7D%5E%7B%5Cpi%7D%20f%28t%29%20%5Ccos%20nt%20dt%20%5Cquad%20%3B%20%5Cquad%20%20b_n%20%3D%20%5Cfrac%7B1%7D%7B%5Cpi%7D%20%5Cint_%7B-%5Cpi%7D%5E%7B%5Cpi%7D%20f%28t%29%20%5Csin%20nt%20dt" title=" a_n = \frac{1}{\pi} \int_{-\pi}^{\pi} f(t) \cos nt dt \quad ; \quad  b_n = \frac{1}{\pi} \int_{-\pi}^{\pi} f(t) \sin nt dt"/><br/><br/>

which I grant, strike fear into the hearts of many. But they don't look nicer with tau (and are a little more awkward):<br/><br/>

<img alt=" a_n = \frac{2}{\tau} \int_{-\frac{\tau}{2}}^{\frac{\tau}{2}} f(t) \cos nt dt \quad ; \quad  b_n = \frac{2}{\tau} \int_{-\frac{\tau}{2}}}^{\frac{\tau}{2}} f(t) \sin nt dt" src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=%20a_n%20%3D%20%5Cfrac%7B2%7D%7B%5Ctau%7D%20%5Cint_%7B-%5Cfrac%7B%5Ctau%7D%7B2%7D%7D%5E%7B%5Cfrac%7B%5Ctau%7D%7B2%7D%7D%20f%28t%29%20%5Ccos%20nt%20dt%20%5Cquad%20%3B%20%5Cquad%20%20b_n%20%3D%20%5Cfrac%7B2%7D%7B%5Ctau%7D%20%5Cint_%7B-%5Cfrac%7B%5Ctau%7D%7B2%7D%7D%7D%5E%7B%5Cfrac%7B%5Ctau%7D%7B2%7D%7D%20f%28t%29%20%5Csin%20nt%20dt" title=" a_n = \frac{2}{\tau} \int_{-\frac{\tau}{2}}^{\frac{\tau}{2}} f(t) \cos nt dt \quad ; \quad  b_n = \frac{2}{\tau} \int_{-\frac{\tau}{2}}}^{\frac{\tau}{2}} f(t) \sin nt dt"/><br/><br/>

Remember, the people arguing for tau are claiming it simplifies formulae, not making them look worse.<br/><br/>

<strong>Euler's Identity</strong><br/><br/>

Finally, I cannot leave this without talking about <a href="http://en.wikipedia.org/wiki/Euler%27s_identity">Euler's identity</a> considered by most mathematicians (including myself) to be one of the most beautiful results in Mathematics.<br/><br/>

<img alt="e^{i \pi} + 1 = 0" src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=e%5E%7Bi%20%5Cpi%7D%20%2B%201%20%3D%200" title="e^{i \pi} + 1 = 0"/><br/><br/>

This result can be written in a few ways, but this way is very commonly used. This is because in this form you can see how this identity connects the five most important numbers of Mathematics: 0, 1, pi, <em>i</em> and <em>e</em>. With tau, it just doesn't have the same beauty:<br/><br/>

<img alt="e^{i \frac{\tau}{2}} + 1 = 0" src="http://www.piglets.org/serendipity/plugin/mimetex.php?q=e%5E%7Bi%20%5Cfrac%7B%5Ctau%7D%7B2%7D%7D%20%2B%201%20%3D%200" title="e^{i \frac{\tau}{2}} + 1 = 0"/><br/><br/>

so I will stick with pi. Thanks all the same.</div>
    </content>
    <updated>2011-06-28T14:32:15Z</updated>
    <category term="STEM"/>
    <category term="mathematics"/>
    <category term="stem"/>
    <author>
      <name>Colin Turner</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.piglets.org/serendipity/</id>
      <link href="http://www.piglets.org/serendipity/" rel="alternate" type="text/html"/>
      <link href="http://www.piglets.org/serendipity/index.php?/feeds/" rel="self" type="application/rss+xml"/>
      <subtitle>Maths, Software, Hardware, Martial Arts and more</subtitle>
      <title>Proving the Obviously Untrue</title>
      <updated>2012-02-04T16:17:09Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.260</id>
    <link href="http://www.earth.li/~noodles/blog/2011/06/building-a-freedos-bootable-us.html" rel="alternate" type="text/html"/>
    <title>Building a FreeDOS bootable USB stick under Linux</title>
    <summary>This is for my own reference more than anything else; periodically I find myself needing to boot DOS. Usually because I want to upgrade a BIOS and the upgrade tool only works with Windows or DOS. Yes, I'm aware of flashrom, but the scary messages about toasting laptops means I'm much happier going the DOS route there. So I need a writable medium with a DOS boot image. The easy way to do it is to find a DOS floppy image and write that to a USB stick with dd, but it's basically a one off and means you can't fit a whole lot on the image. I wanted to do a native USB boot. The following did the trick for me. Firstly, this is all on a Debian testing box, in particular with dosfstools (3.0.9-1), mbr (1.1.11-4) and syslinux (2:4.04+dfsg-2). I don't think I'm using anything particularly new from these tools, so I suspect Debian stable will work just fine. In the below my USB stick is on /dev/sdb, I've got a copy of FreeDOS in ~/FreeDOS/ (I extracted the files from a balder10.img floppy image that's easy enough to find, but all you need is kernel.sys and command.com), and I wanted things neatly in their own subdirectories so I could try and keep the key for repeated use and know which bits I wanted to keep and which were transient. I also added a copy of the Debian Installer for convenience; it would need a copy of the netinst ISO dropped into the root to actually be useful, as there's not enough to do a full netboot from the wider Internet using just the HD initrd. # Create a single bootable LBA VFAT partition spanning entire stick. echo 0,,C,* | sfdisk /dev/sdb # Format as VFAT and give it a disk label. mkfs.vfat -n 'DOS BOOT' /dev/sdb1 # Install an MBR install-mbr /dev/sdb # Mount it and create some directories for our files. mount /dev/sdb1 /media/DOS\ BOOT/ cd /media/DOS\ BOOT/ mkdir boot mkdir boot/syslinux/ mkdir FreeDOS # Copy the chain.c32 syslinux tool over. cp /usr/lib/syslinux/chain.c32 boot/syslinux/ # Copy FreeDOS over and move the important bits to / cp ~/FreeDOS/* FreeDOS/ mv FreeDOS/command.com . mv FreeDOS/autoexec.bat . mv FreeDOS/fdconfig.sys . # Add the Debian Installer mkdir boot/d-i/ cd boot/d-i/ wget http://cdn.debian.net/debian/dists/squeeze/main/installer-amd64/current/images/hd-media/initrd.gz wget http://cdn.debian.net/debian/dists/squeeze/main/installer-amd64/current/images/hd-media/vmlinuz # Install syslinux syslinux -d boot /dev/sdb1 I made a boot/syslinux.help file containing: Available boot options are: FreeDOS d-i and a boot/syslinux.cfg with: prompt 1 display syslinux.help default FreeDOS label FreeDOS COM32 /boot/syslinux/chain.c32 APPEND freedos=/FreeDOS/kernel.sys label d-i KERNEL /boot/d-i/vmlinuz INITRD /boot/d-i/initrd.gz Initial testing was done using kvm which was a lot easier than constantly rebooting my laptop. Hopefully this is of help to someone. The only neat bit that I didn't see elsewhere when I was looking was the use of chain.c32 to load kernel.sys rather than having to use a FreeDOS provided boot sector image....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>This is for my own reference more than anything else; periodically I find myself needing to boot DOS. Usually because I want to upgrade a BIOS and the upgrade tool only works with Windows or DOS. Yes, I'm aware of <a href="http://www.flashrom.org/">flashrom</a>, but the scary messages about toasting laptops means I'm much happier going the DOS route there. So I need a writable medium with a DOS boot image. The easy way to do it is to find a DOS floppy image and write that to a USB stick with dd, but it's basically a one off and means you can't fit a whole lot on the image. I wanted to do a native USB boot. The following did the trick for me.</p>

<p>Firstly, this is all on a <a href="http://www.uk.debian.org/">Debian</a> testing box, in particular with dosfstools (3.0.9-1), mbr (1.1.11-4) and syslinux (2:4.04+dfsg-2). I don't think I'm using anything particularly new from these tools, so I suspect Debian stable will work just fine.</p>

<p>In the below my USB stick is on <code>/dev/sdb</code>, I've got a copy of <a href="http://www.freedos.org/">FreeDOS</a> in <code>~/FreeDOS/</code> (I extracted the files from a <code>balder10.img</code> floppy image that's easy enough to find, but all you need is <code>kernel.sys</code> and <code>command.com</code>), and I wanted things neatly in their own subdirectories so I could try and keep the key for repeated use and know which bits I wanted to keep and which were transient. I also added a copy of the Debian Installer for convenience; it would need a copy of the netinst ISO dropped into the root to actually be useful, as there's not enough to do a full netboot from the wider Internet using just the HD initrd.</p>

<pre><code>    # Create a single bootable LBA VFAT partition spanning entire stick.
    echo 0,,C,* | sfdisk /dev/sdb
    # Format as VFAT and give it a disk label.
    mkfs.vfat -n 'DOS BOOT' /dev/sdb1
    # Install an MBR
    install-mbr /dev/sdb
    # Mount it and create some directories for our files.
    mount /dev/sdb1 /media/DOS\ BOOT/
    cd /media/DOS\ BOOT/
    mkdir boot
    mkdir boot/syslinux/
    mkdir FreeDOS
    # Copy the chain.c32 syslinux tool over.
    cp /usr/lib/syslinux/chain.c32 boot/syslinux/
    # Copy FreeDOS over and move the important bits to /
    cp ~/FreeDOS/* FreeDOS/
    mv FreeDOS/command.com .
    mv FreeDOS/autoexec.bat .
    mv FreeDOS/fdconfig.sys .

    # Add the Debian Installer
    mkdir boot/d-i/
    cd boot/d-i/
    wget http://cdn.debian.net/debian/dists/squeeze/main/installer-amd64/current/images/hd-media/initrd.gz
    wget http://cdn.debian.net/debian/dists/squeeze/main/installer-amd64/current/images/hd-media/vmlinuz

    # Install syslinux
    syslinux -d boot /dev/sdb1
</code></pre>

<p>I made a <code>boot/syslinux.help</code> file containing:</p>

<pre><code>    Available boot options are: FreeDOS d-i
</code></pre>

<p>and a <code>boot/syslinux.cfg</code> with:</p>

<pre><code>    prompt 1
    display syslinux.help
    default FreeDOS

    label FreeDOS
        COM32 /boot/syslinux/chain.c32
        APPEND freedos=/FreeDOS/kernel.sys

    label d-i
        KERNEL /boot/d-i/vmlinuz
        INITRD /boot/d-i/initrd.gz
</code></pre>

<p>Initial testing was done using <a href="http://www.linux-kvm.org/">kvm</a> which was a lot easier than constantly rebooting my laptop.</p>

<p>Hopefully this is of help to someone. The only neat bit that I didn't see elsewhere when I was looking was the use of <code>chain.c32</code> to load <code>kernel.sys</code> rather than having to use a FreeDOS provided boot sector image.</p></div>
    </content>
    <updated>2011-06-05T03:59:28Z</updated>
    <published>2011-06-05T03:37:03Z</published>
    <category label="Linux" scheme="http://www.sixapart.com/ns/types#tag" term="linux"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.259</id>
    <link href="http://www.earth.li/~noodles/blog/2011/05/a-minor-keyring-maint-rant.html" rel="alternate" type="text/html"/>
    <title>A minor keyring-maint rant</title>
    <summary>This should probably be an official FAQ, but a) I wanted to rant a bit more than is probably acceptable for something "official" and b) the sort of person this information is directed at never bloody reads keyring.debian.org, which is the logical place for it. Who are keyring-maint? Currently Gunnar Wolf (good cop) and Jonathan McDowell (bad cop). Previous keyring maintainers include Igor Grobman &amp;amp; James Troup. I'd like to be a DM/DD. Do I send you my key? No. You go through the DebianMaintainer or NM processes. Then the DM team or DAM tell us to add your key to the appropriate keyring. I'd like to replace my DM/DD key in the Debian keyring. What should I do? Read the instructions at http://keyring.debian.org/replacing_keys.html I have a new key that isn't signed by anyone else, will you accept it? No. Did you read http://keyring.debian.org/replacing_keys.html ? I've got a single DD signature on my new key. That's enough, right? Not unless your old key has been lost and you're getting a different DD to request the replacement for you (and if they're prepared to ask for a key replacement we'll wonder why they're not prepared to sign the new key too). Did you read http://keyring.debian.org/replacing_keys.html ? I'm still really confused about how I should request a key replacement. Help? Try reading https://rt.debian.org/Ticket/Display.html?id=3141 (which just happens to be a recent decent example). Clear subject line (I'd have added a real name too, but it's still fairly clear), full fingerprint of the old and new keys, inline signed so RT doesn't mangle it. New key signed by old key and 3 other DDs. Request signed by old key. That RT link needs a login. I don't have one. Have you tried reading up on the Debian RT system? There's a generic read only login that'll get you access. That's too hard. Can't you just give me the details? Damnit. It appears the read-only login details are currently disabled due to misuse (one wonders how). Try reading http://wiki.debian.org/rt.debian.org Why are you using RT? Isn't bugs.debian.org more appropriate? We need the ability to for people to contact us is in a private fashion, for example if they need to us to remove a key because it's been lost or compromised. We could only use RT for that purpose and use bugs.d.o for things that can be public, but this way all the information is in one place and we get to make the call about when it becomes a publicly viewable ticket. What's with jetring? Should I send you a jetring changeset? jetring is a tool written by Joey Hess that used to be used to manage the Debian Maintainers keyring. keyring-maint borrowed a number of good ideas from jetring but don't use it at all. We ignore jetring changesets. So you just want key fingerprints, not attached keys? Yes. Of course you have to make sure your key is actually on a public keyserver so we can get it. the.earth.li is a good choice (because Jonathan runs it and thus pays more attention to it), but subkeys.pgp.net or pool.sks-keyservers.net are also commonly used. My key has expired and I want to update the key expiry date. I should email RT asking for this to be done, right? No, you should send the updated key via HKP to keyring.debian.org. You can do this with "gpg --keyserver keyring.debian.org --send-key " Obviously replace with your own key ID. I tried to send an entirely new key via HKP to keyring.debian.org, but I can't see it there. What gives? keyring.debian.org only accepts updates to keys it already knows about. That means you can send updated expiry dates, new uids and new signatures to your existing key, but not an entirely new key. I sent my updated key via HKP to keyring.debian.org and can see it's updated there, but the Debian archive processing tools (eg dak) don't seem to recognize the update. Why not? The updates sent via HKP are folded back into the HKP server automatically every 15 minutes or so. They are folded into the live Debian keyrings on a manual basis, at least once a month. This means if your key has an expiry date then you probably want to update your key at least a month before it expires. Where can I find these live Debian keyrings? They're what's available via rsync from keyring.debian.org::keyrings/keyrings/ This is canonical location for the current Debian Developers and Debian Maintainers keyrings. What about the debian-keyring package? This is a convenience package of the keyrings. It's usually the most out of date. We update it sporadically and try to ensure that the version shipped with a stable Debian release is current at the point of release. It is not used by any of the official Debian infrastructure. Why don't you automatically update my key in the live keyring when I send an update via HKP? We think that automatic updates of keys that allow uploads to Debian are a bad thing and that invoking a human eye at some step of the process is a useful sanity check. Paranoid much? Never enough. How are updates to the keyring tracked? We use bzr to maintain the keyring, with a separate file per key that can then be easily combined into the various keyrings. You can see the repository at: http://bzr.debian.org/scm/loggerhead/keyring/debian-keyring/changes Note that this is only updated when a keyring is pushed to live; the working tree may contain details of compromised keys and thus isn't public. What's with the whole replacement of 1024 bit keys? 2 things. Firstly 1024 bit keys tend to use SHA1 as a hash algorithm, which has been shown to be weaker than expected. While we're not aware of active exploits against this updating all of the keys Debian uses is not a trivial process and it's wiser to get it done /before/ there's a known issue. Secondly computing power has moved on and we feel that upgrading to larger key sizes is prudent. Elliptic curve cryptography (ECC) keys look like the future. Can I use one for Debian? No, not at present. When there are tools that are part of a Debian stable release that support them we'll look into it, after discussion with the major users of the keyring (DSA, ftpmaster, the secretary)....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>This should probably be an official FAQ, but a) I wanted to rant a bit more than is probably acceptable for something "official" and b) the sort of person this information is directed at never bloody reads <a href="http://keyring.debian.org/">keyring.debian.org</a>, which is the logical place for it.</p>

<p><em>Who are keyring-maint?</em></p>

<p>Currently Gunnar Wolf (good cop) and Jonathan McDowell (bad cop). Previous
keyring maintainers include Igor Grobman &amp; James Troup.</p>

<p><em>I'd like to be a DM/DD. Do I send you my key?</em></p>

<p>No. You go through the
<a href="http://wiki.debian.org/DebianMaintainer">DebianMaintainer</a> or
<a href="http://nm.debian.org/">NM</a> processes. Then the DM team or DAM tell us
to add your key to the appropriate keyring.</p>

<p><em>I'd like to replace my DM/DD key in the Debian keyring. What should I do?</em></p>

<p>Read the instructions at 
<a href="http://keyring.debian.org/replacing_keys.html">http://keyring.debian.org/replacing_keys.html</a></p>

<p><em>I have a new key that isn't signed by anyone else, will you accept it?</em></p>

<p>No. Did you read
<a href="http://keyring.debian.org/replacing_keys.html">http://keyring.debian.org/replacing_keys.html</a>
?</p>

<p><em>I've got a single DD signature on my new key. That's enough, right?</em></p>

<p>Not unless your old key has been lost and you're getting a different
DD to request the replacement for you (and if they're prepared to ask
for a key replacement we'll wonder why they're not prepared to sign
the new key too).</p>

<p>Did you read
<a href="http://keyring.debian.org/replacing_keys.html">http://keyring.debian.org/replacing_keys.html</a>
?</p>

<p><em>I'm still really confused about how I should request a key replacement. Help?</em></p>

<p>Try reading
<a href="https://rt.debian.org/Ticket/Display.html?id=3141">https://rt.debian.org/Ticket/Display.html?id=3141</a>
(which just happens to be a recent decent example). Clear subject line
(I'd have added a real name too, but it's still fairly clear), full
fingerprint of the old and new keys, inline signed so RT doesn't mangle
it. New key signed by old key and 3 other DDs. Request signed by old
key.</p>

<p><em>That RT link needs a login. I don't have one.</em></p>

<p>Have you tried reading up on the Debian RT system? There's a generic
read only login that'll get you access.</p>

<p><em>That's too hard. Can't you just give me the details?</em></p>

<p>Damnit. It appears the read-only login details are currently disabled
due to misuse (one wonders how). Try reading
<a href="http://wiki.debian.org/rt.debian.org">http://wiki.debian.org/rt.debian.org</a></p>

<p><em>Why are you using RT? Isn't bugs.debian.org more appropriate?</em></p>

<p>We need the ability to for people to contact us is in a private fashion,
for example if they need to us to remove a key because it's been lost
or compromised. We could only use RT for that purpose and use bugs.d.o
for things that can be public, but this way all the information is in
one place and we get to make the call about when it becomes a publicly
viewable ticket.</p>

<p><em>What's with jetring? Should I send you a jetring changeset?</em></p>

<p>jetring is a tool written by Joey Hess that used to be used to manage
the Debian Maintainers keyring. keyring-maint borrowed a number of
good ideas from jetring but don't use it at all. We ignore jetring
changesets.</p>

<p><em>So you just want key fingerprints, not attached keys?</em></p>

<p>Yes. Of course you have to make sure your key is actually on a
public keyserver so we can get it. the.earth.li is a good choice (because
Jonathan runs it and thus pays more attention to it), but subkeys.pgp.net
or pool.sks-keyservers.net are also commonly used.</p>

<p><em>My key has expired and I want to update the key expiry date. I should email RT asking for this to be done, right?</em></p>

<p>No, you should send the updated key via HKP to keyring.debian.org. You
can do this with</p>

<p>"gpg --keyserver keyring.debian.org --send-key &lt;keyid&gt;"</p>

<p>Obviously replace &lt;keyid&gt; with your own key ID.</p>

<p><em>I tried to send an entirely new key via HKP to keyring.debian.org, but I can't see it there. What gives?</em></p>

<p>keyring.debian.org only accepts updates to keys it already knows
about. That means you can send updated expiry dates, new uids and new
signatures to your existing key, but not an entirely new key.</p>

<p><em>I sent my updated key via HKP to keyring.debian.org and can see it's updated there, but the Debian archive processing tools (eg dak) don't seem to recognize the update. Why not?</em></p>

<p>The updates sent via HKP are folded back into the HKP server
automatically every 15 minutes or so. They are folded into the live
Debian keyrings on a manual basis, at least once a month.</p>

<p>This means if your key has an expiry date then you probably want to
update your key at least a month before it expires.</p>

<p><em>Where can I find these live Debian keyrings?</em></p>

<p>They're what's available via rsync from
keyring.debian.org::keyrings/keyrings/</p>

<p>This is canonical location for the current Debian Developers and
Debian Maintainers keyrings.</p>

<p><em>What about the debian-keyring package?</em></p>

<p>This is a convenience package of the keyrings. It's usually the most
out of date. We update it sporadically and try to ensure that the
version shipped with a stable Debian release is current at the point
of release. It is not used by any of the official Debian
infrastructure.</p>

<p><em>Why don't you automatically update my key in the live keyring when I send an update via HKP?</em></p>

<p>We think that automatic updates of keys that allow uploads to Debian
are a bad thing and that invoking a human eye at some step of the
process is a useful sanity check.</p>

<p><em>Paranoid much?</em></p>

<p>Never enough.</p>

<p><em>How are updates to the keyring tracked?</em></p>

<p>We use bzr to maintain the keyring, with a separate file per key that
can then be easily combined into the various keyrings. You can see
the repository at:</p>

<p><a href="http://bzr.debian.org/scm/loggerhead/keyring/debian-keyring/changes">http://bzr.debian.org/scm/loggerhead/keyring/debian-keyring/changes</a></p>

<p>Note that this is only updated when a keyring is pushed to live; the
working tree may contain details of compromised keys and thus isn't
public.</p>

<p><em>What's with the whole replacement of 1024 bit keys?</em></p>

<p>2 things. Firstly 1024 bit keys tend to use SHA1 as a hash algorithm,
which has been shown to be weaker than expected. While we're not
aware of active exploits against this updating all of the keys Debian
uses is not a trivial process and it's wiser to get it done /before/
there's a known issue. Secondly computing power has moved on and we feel
that upgrading to larger key sizes is prudent.</p>

<p><em>Elliptic curve cryptography (ECC) keys look like the future. Can I use one for Debian?</em></p>

<p>No, not at present. When there are tools that are part of a Debian
stable release that support them we'll look into it, after discussion
with the major users of the keyring (DSA, ftpmaster, the secretary).</p></div>
    </content>
    <updated>2011-05-09T00:56:27Z</updated>
    <published>2011-05-09T00:44:12Z</published>
    <category label="Debian" scheme="http://www.sixapart.com/ns/types#tag" term="debian"/>
    <category label="PGP" scheme="http://www.sixapart.com/ns/types#tag" term="pgp"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.258</id>
    <link href="http://www.earth.li/~noodles/blog/2011/05/not-going-to-debconf11.html" rel="alternate" type="text/html"/>
    <title>Not going to DebConf11</title>
    <summary>I'm sad to report that I won't be attending DebConf11. I'd have loved to go, but unfortunately I couldn't get the time off work due to various schedule conflicts. I'll have to find another excuse to make it to Bosnia at some point....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><img alt="no-debconf11.png" class="mt-image-left" height="150" src="http://www.earth.li/%7Enoodles/blog/images/no-debconf11.png" style="margin: 0pt 20px 20px 0pt; float: left;" width="150"/>I'm sad to report that I won't be attending DebConf11. I'd have loved to go, but unfortunately I couldn't get the time off work due to various schedule conflicts. I'll have to find another excuse to make it to Bosnia at some point.<br/></div>
    </content>
    <updated>2011-05-07T04:43:11Z</updated>
    <published>2011-05-07T04:39:48Z</published>
    <category label="DebConf" scheme="http://www.sixapart.com/ns/types#tag" term="debconf"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://redbrain.co.uk/?p=635</id>
    <link href="http://redbrain.co.uk/index.php/update/gccpy-dynamic-typing/" rel="alternate" type="text/html"/>
    <title>GccPy – Dynamic Typing</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Hey guys time for an overview of Gccpy,:</p>
Gccpy is a Python front-end to gcc from my last years GSOC (2010), I was mentored by Ian Lance Taylor
who continues to be a great inspiration to me with his work on gccgo and his help on gcc-help to the community
of users and developers.
An overview of what the [...]</div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Hey guys time for an overview of <a href="http://gcc.gnu.org/wiki/PythonFrontEnd">Gccpy</a>,:</p>
<div id="_mcePaste" style="">Gccpy is a Python front-end to gcc from my last years GSOC (2010), I was mentored by Ian Lance Taylor</div>
<div id="_mcePaste" style="">who continues to be a great inspiration to me with his work on gccgo and his help on gcc-help to the community</div>
<div id="_mcePaste" style="">of users and developers.</div>
<div id="_mcePaste" style="">An overview of what the project aims to achive is creating an AOT compiled version of Python using GCC as a framework for</div>
<div id="_mcePaste" style="">middle-end, back-end optimization aswell as protable code-generation. Creating AOT languages has</div>
<div id="_mcePaste" style="">been generally aimed for more ‘low-level’ languages such as C/C++/Fortran where the language requires</div>
<div id="_mcePaste" style="">strong typing and other kinds declarative features; which gives rise to much less dynamic</div>
<div id="_mcePaste" style="">features which languages like Python/PHP/Perl take for granted. The reason these more ‘high-level’</div>
<div id="_mcePaste" style="">languages are able to do such things is due to the fact they are generaly implemented as interpreted</div>
<div id="_mcePaste" style="">languages and this allows for much of this dynamic logic to take place at runtime when a program is passed</div>
<div id="_mcePaste" style="">through their respective interpreters. But gccpy tackles this by generating code which allows for and efficient</div>
<div id="_mcePaste" style="">runtime as well as the dynamic features required.</div>
<div id="_mcePaste" style="">Personally I feel this is a very strong and important style of implementing dynamic languages; which needs to be shown</div>
<div id="_mcePaste" style="">and proven to be an effective and strong way of implementing new and up-comming languages and why GCC is the right platform</div>
<div id="_mcePaste" style="">to do so.</div>
<p>Gccpy is a Python front-end to gcc from my last years GSOC (2010), I was mentored by Ian Lance Taylor who continues to be a great inspiration to me with his work on gccgo and his help on gcc-help to the community of users and developers.</p>
<p>An overview of what the project aims to achieve is creating an AOT compiled version of Python using GCC as a framework for middle-end, back-end optimization as well as protable code-generation. Creating AOT languages has been generally aimed for more ‘low-level’ languages such as C/C++/Fortran where the language requires strong typing and other kinds declarative features; which gives rise to much less dynamic features which languages like Python/PHP/Perl take for granted. The reason these more ‘high-level’  languages are able to do such things is due to the fact they are generally implemented as interpreted languages and this allows for much of this dynamic logic to take place at runtime when a program is passed through their respective interpreters. But gccpy tackles this by generating code which allows for and efficient runtime as well as the dynamic features required.</p>
<p>Personally I feel this is a very strong and important style of implementing dynamic languages; which needs to be shown and proven to be an effective and strong way of implementing new and up-coming languages and why GCC is the right platform to do so.</p>
<p>So ok this was the overview of my Gsoc application, but i think its about the best i can word it. But first lets discuss how this actually works over several blog posts i will demonstrate some of the basic ideas which lets us compile python.  From the title of this post i will quickly demonstrate the ideas behind dynamic typing:</p>
<p>Lets look at how we can easily generate code for some C code for example:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> foobar <span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1">  <span class="kw4">int</span> x = <span class="nu0">1</span>, y = <span class="nu0">2</span>;</div>
</li>
<li class="li2">
<div class="de2">  <span class="kw1">return</span> x + y;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">}</span></div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
</ol>
</div>
<p>We could generate an IR of:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> foobar <span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li2">
<div class="de2">  <span class="kw4">int</span> x, y, T<span class="nu0">.1</span>;</div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">  x = <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">  y = <span class="nu0">2</span>;</div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li2">
<div class="de2">  T<span class="nu0">.1</span> = x + y;</div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">  <span class="kw1">return</span> T<span class="nu0">.1</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">}</span></div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
</ol>
</div>
<p>And the i386 code of:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">.<span class="me1">globl</span> foobar</div>
</li>
<li class="li1">
<div class="de1">foobar:</div>
</li>
<li class="li1">
<div class="de1">  subl $<span class="nu0">12</span>, %esp            <span class="co2"># get some stack space</span></div>
</li>
<li class="li2">
<div class="de2">  mov $<span class="nu0">1</span>, %esp             <span class="co2"># x</span></div>
</li>
<li class="li1">
<div class="de1">  mov $<span class="nu0">2</span>, <span class="nu0">4</span><span class="br0">(</span>%esp<span class="br0">)</span>         <span class="co2"># y</span></div>
</li>
<li class="li1">
<div class="de1">  mov <span class="nu0">4</span><span class="br0">(</span>%esp<span class="br0">)</span>, <span class="nu0">8</span><span class="br0">(</span>%esp<span class="br0">)</span> <span class="co2"># setting up a very highlevel/*un-optimized* addition</span></div>
</li>
<li class="li1">
<div class="de1">  addl %esp, <span class="nu0">8</span><span class="br0">(</span>%esp<span class="br0">)</span>     <span class="co2"># T.1</span></div>
</li>
<li class="li1">
<div class="de1">  mov <span class="nu0">8</span><span class="br0">(</span>%esp<span class="br0">)</span>, %eax     <span class="co2"># the return</span></div>
</li>
<li class="li2">
<div class="de2">  addl $<span class="nu0">12</span>, %esp           <span class="co2"># fix the stack</span></div>
</li>
<li class="li1">
<div class="de1">  ret</div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
</ol>
</div>
<p>This is where some interpreters/runtimes start to try and become much more like a ‘virtual machine’ like Java they implement their language by having a runtime which runs code that is in a virtual inscrution set. So when they parse their language with a front-end they generate this virtual instruction set for the given program but then they ‘compile/assemble’ this to bytecode which is a similar akin to C where we assemble the target code to an object code before linking into an executeable format. But really the byte code is nothing more than a binary form of the instruction set to optimize execution of the instruction set.</p>
<p>An example why many people belive generating efficient code for dynamic languages can be difficult is take for example:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">def foo <span class="br0">(</span>x<span class="br0">)</span>:</div>
</li>
<li class="li1">
<div class="de1">  x.<span class="me1">append</span> <span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1">  <span class="kw1">return</span> x + <span class="br0">[</span> <span class="nu0">1</span>, <span class="nu0">2</span>, <span class="nu0">3</span> <span class="br0">]</span></div>
</li>
<li class="li2">
<div class="de2"> </div>
</li>
</ol>
</div>
<p>So what happens here in an abstract point of view you can’t assume anything about this code due to dynamic typing compared to something like</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">def List foo <span class="br0">(</span>List x<span class="br0">)</span>:</div>
</li>
<li class="li1">
<div class="de1">  x.<span class="me1">append</span> <span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1">  <span class="kw1">return</span> x + <span class="br0">[</span> <span class="nu0">1</span>, <span class="nu0">2</span>, <span class="nu0">3</span> <span class="br0">]</span></div>
</li>
<li class="li2">
<div class="de2"> </div>
</li>
</ol>
</div>
<p>Having storage specifiers insantly makes this set of code much more declaritive and gives rise to many more assumptions able to be made; which in turn gives a compiler more ‘hints’ on what it can do to generate code. Of course in the example above this is just a hypothetical language just to demonstrate the idea. So to implement dynamic typing we have to analyse what it actually is.</p>
<p>Lets take a normal/regular python session:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">&gt;&gt;&gt; x = <span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1">&gt;&gt;&gt; x = <span class="st0">"string"</span></div>
</li>
<li class="li1">
<div class="de1">&gt;&gt;&gt; y = x</div>
</li>
<li class="li2">
<div class="de2">&gt;&gt;&gt; x = <span class="nu0">2</span></div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
</ol>
</div>
<p>So what is actually happening now line by line by showing what each identifier is assigned to what data.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">&gt;&gt;&gt; x = <span class="nu0">1</span>                 <span class="co2"># x = 1        | y = NULL</span></div>
</li>
<li class="li1">
<div class="de1">&gt;&gt;&gt; x = <span class="st0">"string"</span>          <span class="co2"># x = "string" | y = NULL</span></div>
</li>
<li class="li1">
<div class="de1">&gt;&gt;&gt; y = x                 <span class="co2"># x = "string" | y = "string"</span></div>
</li>
<li class="li2">
<div class="de2">&gt;&gt;&gt;  x = <span class="nu0">2</span>                 <span class="co2"># x = 2        | y = "string"</span></div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
</ol>
</div>
<p>So why is this actually a problem, traditionly take for example code like:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> x = <span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1">x = <span class="nu0">1.5555</span></div>
</li>
<li class="li1">
<div class="de1">x = <span class="st0">"string"</span></div>
</li>
<li class="li2">
<div class="de2"> </div>
</li>
</ol>
</div>
<p>When a c-compiler would run over that code it would give all manar of warnings about type conversion and invalid types being assigned. But why is this since a compiler will want to generate efficient code it will reserve the space valid for an integer on the stack which on an i386 32bit processor would be 32 bits usualy and would asuse subl $4, %esp to have space on the stack for that integer, but the problem arises if we were to then want to put in data which is greater than the size previously allocated for the given initial data. So you will have overflow and corruption of data. So how can you combat that to make dynamic typing work, the method or approach i have taken for gccpy takes much inspiration in how object orientation works. Every piece of static data give in a program is wraped into a gpy_object_t structure at runtime so in turn every type in gccpy is implemented via a gpy_object_t type, so for example the previous python session could be represented in GIMPLE via something like:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">gpy_object_t * x = fold_integer <span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1">incr_ref_count <span class="br0">(</span>x<span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li2">
<div class="de2">decr_ref_count <span class="br0">(</span>x<span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1">x = fold_string <span class="br0">(</span><span class="st0">"string"</span><span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">gpy_object_t * y = x</div>
</li>
<li class="li1">
<div class="de1">incr_ref_count <span class="br0">(</span>y<span class="br0">)</span></div>
</li>
<li class="li2">
<div class="de2"> </div>
</li>
<li class="li1">
<div class="de1">x = fold_integer <span class="br0">(</span><span class="nu0">2</span><span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1">incr_ref_count <span class="br0">(</span>x<span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
</ol>
</div>
<p>The basic idea how dynamic typing is not what an identifier with a specified storage specifier holds its what an identifier points to. So when `x = fold_integer (1)` we should look at what the gpy_object_t structure looks like currently its in many ways similar to how PY_object works in the cpython implemetation but is a little more specific and streamlined to gccpy’s needs.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">typedef</span> <span class="kw4">struct</span> gpy_object_t <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">enum</span> GPY_OBJECT_T T;</div>
</li>
<li class="li1">
<div class="de1">  <span class="kw4">union</span> <span class="br0">{</span></div>
</li>
<li class="li2">
<div class="de2">    gpy_object_state_t * object_state;</div>
</li>
<li class="li1">
<div class="de1">    <span class="kw4">struct</span> gpy_callable__t * call;</div>
</li>
<li class="li1">
<div class="de1">    gpy_literal_t * literal;</div>
</li>
<li class="li1">
<div class="de1">  <span class="br0">}</span> o ;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">}</span> gpy_object_t ;</div>
</li>
<li class="li2">
<div class="de2"> </div>
</li>
</ol>
</div>
<p>This structure is quite open to be used in many areas of how gccpy works but what we are interested in is the:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">gpy_object_state_t * object_state;</div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
</ol>
</div>
<p>This is the part where it stores the static data defined be it an integer or a class defined in the source code.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">typedef</span> <span class="kw4">struct</span> gpy_rr_object_state_t <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1">  <span class="kw4">char</span> * obj_t_ident;</div>
</li>
<li class="li1">
<div class="de1">  <span class="kw4">signed</span> <span class="kw4">long</span> ref_count;</div>
</li>
<li class="li2">
<div class="de2">  <span class="kw4">void</span> * self;</div>
</li>
<li class="li1">
<div class="de1">  <span class="kw4">struct</span> gpy_typedef_t * definition;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">}</span> gpy_object_state_t ;</div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
</ol>
</div>
<p>This structure is whats used to hold the object_state it holds the object type identifier as a string the reference count for the garbage collector the pointer to a structure in memory which is the actual data for example int or FILE * etc, and also a pointer to the objects definition structure. Each object has its own definition and each definition requires several hooks:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">typedef</span> <span class="kw4">struct</span> gpy_typedef_t <span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1">  <span class="kw4">char</span> * identifier;</div>
</li>
<li class="li1">
<div class="de1">  size_t builtin_type_size;</div>
</li>
<li class="li2">
<div class="de2">  gpy_object_t * <span class="br0">(</span>*init_hook<span class="br0">)</span><span class="br0">(</span><span class="kw4">struct</span> gpy_typedef_t *, gpy_object_t **<span class="br0">)</span>;</div>
</li>
<li class="li1">
<div class="de1">  <span class="kw4">void</span> <span class="br0">(</span>*destroy_hook<span class="br0">)</span><span class="br0">(</span>gpy_object_t *<span class="br0">)</span>;</div>
</li>
<li class="li1">
<div class="de1">  <span class="kw4">void</span> <span class="br0">(</span>*print_hook<span class="br0">)</span><span class="br0">(</span>gpy_object_t * , FILE *, bool<span class="br0">)</span>;</div>
</li>
<li class="li1">
<div class="de1">  <span class="kw4">struct</span> gpy_number_prot_t * binary_protocol;</div>
</li>
<li class="li1">
<div class="de1">  <span class="kw4">struct</span> gpy_builtin_method_def_t * methods;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">}</span> gpy_typedef_t ;</div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
</ol>
</div>
<p>It has the identifier the size of the sturcture of which holds the actual data the initilization hook which returns the object state when you initialize an object the destroy hook for the garbage collector, a print hook for the print keyword to print the data. Now things get more interesting, the binary protocol is whats used to allow for dynamic binary operators so things like:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">x = <span class="nu0">2</span> + <span class="nu0">1.5</span></div>
</li>
<li class="li1">
<div class="de1">concat = <span class="st0">"foo"</span> + <span class="st0">"bar"</span></div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
</ol>
</div>
<p>Can allow for mixed type binary operations, by having hooks for each type of binary operation be it addition subtraction etc. Finaly there is a table of member methods which allows for dot accesors like:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1">list.<span class="me1">append</span> <span class="br0">(</span>…<span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1">list.<span class="me1">index</span> <span class="br0">(</span>…<span class="br0">)</span></div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
</ol>
</div>
<p>As append and index are both member methods to the builtin type List.</p></div>
    </content>
    <updated>2011-05-01T04:25:45Z</updated>
    <category term="Update!"/>
    <author>
      <name>redbrain</name>
    </author>
    <source>
      <id>http://redbrain.co.uk</id>
      <link href="http://redbrain.co.uk/index.php/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://redbrain.co.uk" rel="alternate" type="text/html"/>
      <subtitle>Frustrated Software Developer</subtitle>
      <title>RedBrain @ $HOME : ~ $</title>
      <updated>2011-11-16T18:17:06Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://redbrain.co.uk/?p=633</id>
    <link href="http://redbrain.co.uk/index.php/update/quick-update/" rel="alternate" type="text/html"/>
    <title>Quick Update</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Hey all i am sorry for the last post i have many posts drafted to be posted within the next 2-3 weeks where i am going to discuss my project GccPy as there has been alot happening with it recently, i am working on a paper which shows everything about it so far but i want to [...]</p></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Hey all i am sorry for the last post i have many posts drafted to be posted within the next 2-3 weeks where i am going to discuss my project GccPy as there has been alot happening with it recently, i am working on a paper which shows everything about it so far but i want to have some posts demonstrating the basic principles of compilers and in deed creating an Ahead of Time version of Python on top of GCC and how this actually works. I personally find it a pretty cool topic but first i will am just in a bit of rant mood and its about whats happened since my last blog post:</p>
<p>Well anyway i’m currently in an awkward position i feel i may leave university but i will see because its simply causing me so much problems in my day to day life, I’ve got onto Google summer of code 2011 yet again to work on Gccpy with Ian lance Taylor but i may focus a little more on working on the Gcc middle-end to make some of my work a little easier. But the problem i am having at the moment with university is i actually failed all my modules last semester which may sound awful. Esp the one in compiler development i am writing a complaint about this at the moment due to the fact i actually took my own time to create a compiler specificity for this language they developed which works i cant emphasize this enough it actually works and demonstrates an IR properly designed and works well and doesn’t segv if you put in a syntax/grammar error i didnt even have to do this for the module.</p>
<p>I guess it was my own fault where i answered the exam using x86 code and more normal DAG graphs and IR’s to demonstrate things to answer the questions where they wanted this _FAKE_ code and _WIERD_ ideas to demonstrate Lexical Analysis. I failed my Math one but i kind of expected this one because i just didnt care anymore the lectureer just had a problem with me and wouldnt put any work online as i wasnt able to attend for a week or so and just gave me awkard looks when i went to class and was just sooo condecending the whole time to me i tried hard but it was just awful then the other exam concurrent programming where your forced to learn off all these Java constructs to implement monitors thats all fine 100% in all practicals but exam your just forced to learn off meaning less facts and stuff where it really means nothing and all the practicals are only worth 10% of the module.</p>
<p>So yeah didnt go well but i feel very strongly about my compiler development module so i am going to write a complaint about it and send it in, the problem being is i am just made to feel like one of the students who just goes out and doesnt do work. I am so far away from that statement its insane, i am 100x more dedicated and practical than anyone in my university thats why after Gsoc 2011 i have another interview with Google which will be interesting. I am just so increibly sick of feeling useless, i just feel like giving up at the moment. Its destroyed nearly all my confidence recently, if it wasnt for getting Gsoc 2011 for my own project i dont know what i would do sometimes.</p>
<p>Its not just those exams that annoyed me even a few years ago i remember studying months i mean months for an exam and lost by like 5% i was so gobsmacked. Its just got to this stage where absolutly everything i have done in university has just annoyed me so much i cant concentrate at all, when you consider absolutly everything is soooo niche and acedemic its insane in computer science esp in open-source and linux its such a hands on subject. It scares me that everyone in my university couldnt actually design a project and implement any kind of system level project even though they are meant to have studied it. Take the operating systems module is literately take a book and re-wrtie paragraphs of crap down in an exam the exact same went for networking.</p>
<p>Basically i found this comment on a website <a href="http://ihateuniversity.com/2004/03/why-i-hate-university-life/">http://ihateuniversity.com/2004/03/why-i-hate-university-life/</a>:</p>
<blockquote><p>University seems to suck all the life out of learning. The assignments are meaningless, the lectures are boring and the people are all mindless. I have no time anymore to read a book…a real book, worth reading. I’m too busy with my nose buried in a textbook learning meaningless facts to pass another meaningless test, to earn a meaningless number entitled “grade”.</p></blockquote>
<p>Sorry for the rant but i just have been made to feel very useless at the moment and personally i just feel if i was to just quit university to persue my gccpy project over summer and have this paper finished and apply to jobs based on this project as it demonstrates everything i know and understand and how i designed it all and implemented it. Also GCC hackers are a very scarce resource so i can even taylor alot of middle end trickery to pop up specific things for a project using plugins etc. Which i think could be a usefull thing for a company to have but i have literly no confidence in my self anymore i in the UK university has become this Class system and if you didnt pass your made to feel like a lesser person. But its kind of irritating i’ve tried to get help from my university but because i do Mathematics and Computer Science there are like zero people who do this course esp my set of modules i choose i get like no help or no one to talk to coupled with the fact my advisor of studies just retired and the new guy doesn’t really know.</p>
<p>The thing that has annoyed me the most i feel almost ashamed of myself to talk to my friends on identi.ca i just need to prove myself and i just dont know what to persue but i know right now i am pretty much miserable when i worked full time for SAP i was happy they offered me a PHd positions for goodness sake. I must be good at something when so few get that as well as Gsoc twice in a row on the same project which i started myself. I’ve set my self the goal of at Oggcamp comming up i will have the Linux outlaws testsuite for Gccpy working which it pretty much is and to demonstrate its awesomeness to everyone i care about. <img alt=":)" class="wp-smiley" src="http://redbrain.co.uk/wp-includes/images/smilies/icon_smile.gif"/> </p>
<p>Dont worry i will be posting up from now over the next few weeks much more frequently every time i write a blog post i feel much better about myself. I a lot to offer the world and its time for me to do it.</p>
<p>PS: Sorry for the mountains of spelling errors! xD and i prob wont leave uni its just how i feel i talked some stuff over and feel alot better i just need to stay calm and get though it all xD</p></div>
    </content>
    <updated>2011-05-01T03:00:26Z</updated>
    <category term="Update!"/>
    <author>
      <name>redbrain</name>
    </author>
    <source>
      <id>http://redbrain.co.uk</id>
      <link href="http://redbrain.co.uk/index.php/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://redbrain.co.uk" rel="alternate" type="text/html"/>
      <subtitle>Frustrated Software Developer</subtitle>
      <title>RedBrain @ $HOME : ~ $</title>
      <updated>2011-11-16T18:17:06Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.257</id>
    <link href="http://www.earth.li/~noodles/blog/2011/04/onak-040-released.html" rel="alternate" type="text/html"/>
    <title>onak 0.4.0 released</title>
    <summary>I don't normally mention the PGP keyserver I've been working on for the past 9 years, but there are a few keyserver related comments I've been meaning to make that prompt me to do so this time. onak is the keyserver powering the.earth.li (AKA wwwkeys.uk.pgp.net). Back in February I finally enabled hkps (HKP over SSL) access to it as I promised dkg I would do back at DebConf10. I also turned on IPv6. Most of the active keyservers out there are running SKS. I think there might be a few OpenPKSD instances as well. If you're running SKS please ensure that you have at least one address in your mailsync file, so that you send key updates to the non SKS keyservers out there - it seems that SKS requires the receiving keyserver to send out updates via email, rather than each server sending out any updates it processes to its mailsync peers. Feel free to add pgp-public-keys at earth.li - no need to contact me to do so (but you can drop me a line if you want me to send you mail updates back). Also in the past there was a pgp-keyserver-folk mailing list, originally on flame.org, then on alt.org. Both of these have been dead for a while. I created a local pgp-keyserver-folk some time ago, but never publicised it. I believe the SKS lists are fairly active, but limited to that community, so it would be nice to have somewhere that was keyserver agnostic that admins could talk to each other. Anyway. onak 0.4.0. Largely fixes to keyd, which is a backend daemon that handles talking to the key database. This is particularly useful for large/busy keyservers. Also a couple of fixes that make the db4 backend a lot more reliable (especially with queries that return lots of results). And various other minor cleanups. If you're one of the 3 people running it you probably want to upgrade; updated packages have already been uploaded to Debian unstable....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>I don't normally mention the PGP keyserver I've been working on for the
past 9 years, but there are a few keyserver related comments I've been
meaning to make that prompt me to do so this time.</p>

<p>onak is the keyserver powering <a href="http://the.earth.li/">the.earth.li</a> (AKA <code>wwwkeys.uk.pgp.net</code>).
Back in February I finally enabled hkps (HKP over SSL) access to it as I
promised <a href="http://www.fifthhorseman.net/">dkg</a> I would do back at
DebConf10. I also turned on IPv6.</p>

<p>Most of the active keyservers out there are running
<a href="http://code.google.com/p/sks-keyserver/">SKS</a>. I think there might be a few
<a href="http://www.openpksd.org/">OpenPKSD</a> instances as well. If you're
running SKS <em>please</em> ensure that you have at least one address in your
mailsync file, so that you send key updates to the non SKS keyservers
out there - it seems that SKS requires the receiving keyserver to send
out updates via email, rather than each server sending out any updates
it processes to its mailsync peers. Feel free to add <code>pgp-public-keys</code>
<em>at</em> <code>earth.li</code> - no need to contact me to do so (but you can drop me a
line if you want me to send you mail updates back).</p>

<p>Also in the past there was a <code>pgp-keyserver-folk</code> mailing list, originally
on flame.org, then on alt.org. Both of these have been dead for a while.
I created a local
<a href="http://www.earth.li/mailman/listinfo/pgp-keyserver-folk">pgp-keyserver-folk</a>
some time ago, but never publicised it. I believe the SKS lists are
fairly active, but limited to that community, so it would be nice to
have somewhere that was keyserver agnostic that admins could talk to
each other.</p>

<p>Anyway. onak 0.4.0. Largely fixes to <code>keyd</code>, which is a backend daemon
that handles talking to the key database. This is particularly useful
for large/busy keyservers. Also a couple of fixes that make the db4
backend a lot more reliable (especially with queries that return lots of
results). And various other minor cleanups. If you're one of the 3
people running it you probably want to upgrade; updated packages have
already been uploaded to Debian unstable.</p></div>
    </content>
    <updated>2011-04-24T06:56:30Z</updated>
    <published>2011-04-24T06:52:43Z</published>
    <category label="PGP" scheme="http://www.sixapart.com/ns/types#tag" term="pgp"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.256</id>
    <link href="http://www.earth.li/~noodles/blog/2011/04/why-linux-part-7-support.html" rel="alternate" type="text/html"/>
    <title>Why Linux? (Part 7: Support)</title>
    <summary>(This is part of a series of posts on Why Linux?) This is probably a non-obvious reason to run Linux to most people. One of the complaints I've heard in the past is the lack of support for Linux. It's not really relevant to running it on a work desktop (where support is presumably from some central IT organisation), but I believe it's a red herring. Support in the Free software world can exceed that in the proprietary by an impressive margin. And that can turn out to be useful at work, even if you do suppose the existence of central IT. The support I've received for Linux and applications under it has been, on numerous occasions, excellent in a way I feel I could never expect from the commercial software world. And when it isn't, I have the choice of whomever I want to try and fix my problems, rather than being stuck with no options. I have found that if I am polite, and provide useful information, and patient, I can talk directly to the developers who make the software I use. If I have a patch they will often take it from me, or use it as a basis for the final fix. If they are no longer available, or too busy, then because I have the source I can find someone else to look at the problem, or do so myself. The chances of most large proprietary software companies giving me the time of day is low. I don't understand why small businesses think that Windows is a safer choice due to being able to get support from Microsoft. Again using experience gained at Black Cat, at one point we had a problem with IPv6 routes being updated. Signs pointed to Quagga, Simon collected relevant information and got in contact with the Quagga devs. They investigated, realised it wasn't a problem with their code, and then proceeded to find the issue in the Linux kernel, produce the fix and pass it upstream. Within hours of us reporting the problem. I'll accept that's an exceptional response that can be matched within the proprietary software world, but not without a hefty support contract and I doubt you would have got a response other than "Not our fault, talk to the other supplier", or maybe a workaround at best. More recently, I had a conversation about Linux and discard support, with one of the people who'd worked on it. Very interesting from my PoV, useful to my work (I ended up fixing something in our code base that led to the Linux support Just Working with our product) and I believe was useful to that developer too, in terms of providing some insight to the other side of the problem. I don't get that kind of access to proprietary software developers - while it could be argued that I know a lot of Free software people, I also know a lot of other programmers and they're just not able to be so open about things, so both sides lose out. Or my new laptop's ethernet wasn't supported by the kernel in squeeze. I filed a bug requesting the driver be added (and pointing to the patch). The week I wrote the first draft of this article I saw confirmation that this had been done, and will be part of the final squeeze release. I think that's pretty impressive. (Thanks, Ben.)...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>(This is part of a series of posts on <a href="http://the.earth.li/~noodles/cgi-bin/mt/mt-search.cgi?blog_id=1&amp;tag=whylinux&amp;limit=20&amp;IncludeBlogs=1">Why Linux?</a>)</p>

<p>This is probably a non-obvious reason to run Linux to most people. One
of the complaints I've heard in the past is the lack of support for
Linux. It's not really relevant to running it on a work desktop (where
support is presumably from some central IT organisation), but I believe
it's a red herring. Support in the Free software world can exceed that
in the proprietary by an impressive margin. And that <em>can</em> turn out to
be useful at work, even if you do suppose the existence of central IT.</p>

<p>The support I've received for Linux and applications under it has been,
on numerous occasions, excellent in a way I feel I could never expect
from the commercial software world. And when it isn't, I have the choice
of whomever I want to try and fix my problems, rather than being stuck
with no options.</p>

<p>I have found that if I am polite, and provide useful information, and
patient, I can talk directly to the developers who make the software I
use. If I have a patch they will often take it from me, or use it as a
basis for the final fix. If they are no longer available, or too busy,
then because I have the source I can find someone else to look at the
problem, or do so myself.</p>

<p>The chances of most large proprietary software companies giving me the
time of day is low. I don't understand why small businesses think that
Windows is a safer choice due to being able to get support from
Microsoft.</p>

<p>Again using experience gained at Black Cat, at one point we had a
problem with IPv6 routes being updated. Signs pointed to Quagga, Simon
collected relevant information and got in contact with the Quagga devs.
They investigated, realised it wasn't a problem with their code, and
then proceeded to find the issue in the Linux kernel, produce the fix
and pass it upstream. Within hours of us reporting the problem. I'll
accept that's an exceptional response that can be matched within the
proprietary software world, but not without a hefty support contract and
I doubt you would have got a response other than "Not our fault, talk to
the other supplier", or maybe a workaround at best.</p>

<p>More recently, I had a conversation about Linux and discard support, with one of the people who'd worked on it. Very interesting from my PoV, useful to my work (I ended up fixing something in our code base that led to the Linux support Just Working with our product) and I believe was useful to that developer too, in terms of providing some insight to the other side of the problem. I don't get that kind of access to proprietary software developers - while it could be argued that I know a lot of Free software people, I also know a lot of other programmers and they're just not able to be so open about things, so both sides lose out.</p>

<p>Or my new laptop's ethernet wasn't supported by the kernel in squeeze. I filed a bug requesting the driver be added (and pointing to the patch). The week I wrote the first draft of this article I saw confirmation that this had been done, and will be part of the final squeeze release. I think that's pretty impressive. (Thanks, Ben.)</p></div>
    </content>
    <updated>2011-04-17T06:48:39Z</updated>
    <published>2011-04-17T06:46:17Z</published>
    <category label="whylinux" scheme="http://www.sixapart.com/ns/types#tag" term="whylinux"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:pgregg.com,2010:/blog//2.340</id>
    <link href="http://pgregg.com/blog/2010/04/the-o2-joggler---a-first-hack.html" rel="alternate" type="text/html"/>
    <title>The O2 Joggler - A first hack.</title>
    <summary>If you were not aware - O2 last week reduced the price of the O2 Joggler from £149.99 to £99.99 to £49.99.&amp;nbsp; Nothing remarkable in price reductions, however what is remarkable is what you actually get for your money.The O2 Joggler is a silent 7" touchscreen device with Intel Atom Z520 running at 1.3Ghz, 512Mb ram, 1GB internal flash storage with additional storage available via an external USB port. What makes the device really exciting is that it also has a 1GB ethernet (Realtec 8168) and Wifi.Looking at that - I know you're all thinking "linux box" - but conveniently,...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://pgregg.com/blog/assets_c/2010/04/devicev2-11.html"><img alt="devicev2.JPG" class="mt-image-right" height="149" src="http://pgregg.com/blog/assets_c/2010/04/devicev2-thumb-308x149-11.jpg" style="float: right; margin: 0pt 0pt 20px 20px;" width="308"/></a></span><br/>If you were not aware - O2 last week reduced the price of the O2 Joggler from <strike>£149.99 </strike>to <strike>£99.99</strike> to £49.99.  Nothing remarkable in price reductions, however what is remarkable is what you actually get for your money.<br/><br/>The O2 Joggler is a silent 7" touchscreen device with Intel Atom Z520 running at 1.3Ghz, 512Mb ram, 1GB internal flash storage with additional storage available via an external USB port. What makes the device really exciting is that it also has a 1GB ethernet (Realtec 8168) and Wifi.<br/><br/>Looking at that - I know you're all thinking "linux box" - but conveniently, the default operating system on it is based on Ubuntu 8.04 and busybox, The frontend is a custom flash driven UI developed by OpenPeak (makers of the Jogger which is rebadged by O2).<br/><br/>There are plenty of clever individuals over at <a href="http://hackthejoggler.freeforums.org/">http://hackthejoggler.freeforums.org/</a>and in the #mer channel on freenode who are working to allow the Joggler to run other Operating Systems such as Android, Ubuntu Netbook Edition, MID, even Windows and OSX.<br/><br/>However, the standard OS supplied is also pretty powerful and allows significant customisation.  You can <a href="http://jogglerwiki.info/index.php?title=Installing_Telnet">enable telnet</a> just by turning it on with a custom USB stick plugged in. To do some of the things I'll be describing here you will need to have started with that.<br/><br/>Once you can telnet in, the world opens up and you can do lots of things that you would expect* to be able to do in a linux system. (<i>* except run a web browser.... at this time - we don't have web access 
with the stock OS due to the custom flash GUI interface.</i>)<br/><br/>Lets install some useful utilities, how about perl, terminfo, irc clients, bit torrent, rsync, ssh/scp ?   Yes, I know what you're thinking - overnight silent downloads - no need to leave PC on... nice...<br/><br/>I've built several of these utilities with installation instructions and uploaded them over here:  <br/>  <a href="http://pgregg.com/projects/joggler/">http://pgregg.com/projects/joggler/</a><br/><br/>Feel free to download, examine, install etc.  Read the README on the download page - it explains how to do it. Most of the packs include an install.sh script that will provide an installation safety net - it won't overwrite existing files or libraries.<br/><br/>Usual disclaimers apply - you try these applications at your own risk. I accept no responsibility if you manage to brick, fry or otherwise trash your joggler.<br/><br/>Comments, suggestions for other applications are always welcome.<br/><br/><b>Update</b>: Thanks to NP - seems I was a little too brutal with the library stripping to keep the download sizes small and I missed some required libraries (that I mistakenly thought were in the standard Joggler distro).   I have rebuilt the following packages as they were missing some libs: rtorrent, rsync, sudo,ssh<br/>The screen package has been rebuilt too to add one final tweak (to the installer script) so it can be used by non-root users - the only difference you need to do is run the command: chmod 666 /dev/ptmp /dev/tty<br/><br/></div>
    </content>
    <updated>2011-04-16T16:05:25Z</updated>
    <published>2010-04-14T22:06:47Z</published>
    <category scheme="http://www.sixapart.com/ns/types#category" term="Joggler"/>
    <category scheme="http://www.sixapart.com/ns/types#category" term="Software"/>
    <category label="joggler" scheme="http://www.sixapart.com/ns/types#tag" term="joggler"/>
    <category label="o2 joggler" scheme="http://www.sixapart.com/ns/types#tag" term="o2joggler"/>
    <category label="rtorrent" scheme="http://www.sixapart.com/ns/types#tag" term="rtorrent"/>
    <author>
      <name>Paul Gregg</name>
      <uri>http://pgregg.com</uri>
    </author>
    <source>
      <id>tag:pgregg.com,2009-02-01:/blog//2</id>
      <link href="http://pgregg.com/blog/" rel="alternate" type="text/html"/>
      <link href="http://pgregg.com/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <title>Plop in the Ocean</title>
      <updated>2011-08-25T23:02:50Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:pgregg.com,2011:/blog//2.345</id>
    <link href="http://pgregg.com/blog/2011/04/what-16tb-raw-space-looks-like.html" rel="alternate" type="text/html"/>
    <title>What 16TB raw space looks like at home</title>
    <summary>I've been looking for some home backup solutions over the past couple of months. This has led me down both the do-it-yourself route and buying a ready-made solution.One of my requirements was that I wanted the solution to be more than just storage - otherwise I would have purchased a straight NAS box from the likes of Qnap, Netgear or if feeling rich Drobo. Most of these dedicated NAS boxes can be "rooted" to allow ssh access , however their CPUs are generally underpowered for general purpose use.Other requirements were that I wanted a reasonably small form factor and to...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml">I've been looking for some home backup solutions over the past couple of months. This has led me down both the do-it-yourself route and buying a ready-made solution.<br/><br/>One of my requirements was that I wanted the solution to be more than just storage - otherwise I would have purchased a straight NAS box from the likes of Qnap, Netgear or if feeling rich Drobo. Most of these dedicated NAS boxes can be "rooted" to allow ssh access , however their CPUs are generally underpowered for general purpose use.<br/><br/>Other requirements were that I wanted a reasonably small form factor and to be able to use at least 4 SATA hard drives, preferably with hot swap ability. Hardware raid was not a requirement because I intended on using a Linux distribution with mdadm software raid.<br/><br/>In the end, I ended up building two boxes.<br/>The first, a home build, based on the <a href="http://linitx.com/viewproduct.php?prodid=12789&amp;sr=ts">CFI A7879 chassis</a> <a href="http://pgregg.com/blog/assets_c/2011/04/CFI_A7879_1-15.html"><img alt="CFI_A7879_1.jpg" class="mt-image-right" height="172" src="http://pgregg.com/blog/assets_c/2011/04/CFI_A7879_1-thumb-250x172-15.jpg" style="float: right; margin: 0pt 0pt 20px 20px;" width="250"/></a>with a <a href="http://www.mini-itx.com/store/?c=71#ga-d525tud">Gigabyte GA-D525TUD Dual Core Atom Mini-ITX Board</a>. <br/><a href="http://pgregg.com/blog/assets_c/2011/04/GA-D525TUD-18.html"><img alt="GA-D525TUD.jpg" class="mt-image-none" height="150" src="http://pgregg.com/blog/assets_c/2011/04/GA-D525TUD-thumb-200x150-18.jpg" style="" width="200"/></a><br/><br/><div>The second was a off-the-shelf <a href="http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/15351-15351-4237916-4237918-4237917-4248009.html">HP ProLiant Microserver</a> which, to be brutally honest, was because HP were offering <a href="http://h41112.www4.hp.com/promo/proliantmicroserver/pdf/PA0023-%C2%A350_off_Microserver_Offer_Apr_2011.pdf">£100 cashback</a> deal on it. This made the server much cheaper than you could possibly build yourself from components.<br/><a href="http://pgregg.com/blog/assets_c/2011/04/HP_Microserver-21.html"><img alt="HP_Microserver.jpg" class="mt-image-right" height="207" src="http://pgregg.com/blog/assets_c/2011/04/HP_Microserver-thumb-250x207-21.jpg" style="float: right; margin: 0pt 0pt 20px 20px;" width="250"/></a><br/></div><div>I added 4GB ram to each box (total 5GB in the HP box because it comes with 1GB).<br/><br/>The CFI boot drive is a 8GB (30MB/sec) CompactFlash card mounted as an 
IDE drive. The HP boot drive is a 16GB Sandisk Cruzer USB stick.<br/>
<br/>Finally added 4 x 2TB Samsung F4EG HD204UI drives to each box.<br/><br/>The CFI box has 8TB in RAID5 providing 5.4TB usable. The HP has 8TB in RAID6 providing 3.6TB usable space.<br/><br/>If there is more interest, I'll write up the build process is more detail with pictures.<br/><br/>For now - here are some shots of my utility shelf.<br/><br/><a href="http://pgregg.com/blog/assets_c/2011/04/IMG_20110411_173250-24.html"><img alt="IMG_20110411_173250.jpg" class="mt-image-none" height="320" src="http://pgregg.com/blog/assets_c/2011/04/IMG_20110411_173250-thumb-240x320-24.jpg" style="" width="240"/></a><a href="http://pgregg.com/blog/assets_c/2011/04/IMG_20110411_173740-27.html"><img alt="IMG_20110411_173740.jpg" class="mt-image-none" height="333" src="http://pgregg.com/blog/assets_c/2011/04/IMG_20110411_173740-thumb-250x333-27.jpg" style="" width="250"/></a><br/><br/><br/></div></div>
    </content>
    <updated>2011-04-11T18:44:39Z</updated>
    <published>2011-04-11T16:40:07Z</published>
    <category scheme="http://www.sixapart.com/ns/types#category" term="Systems"/>
    <category label="F4EG" scheme="http://www.sixapart.com/ns/types#tag" term="f4eg"/>
    <category label="HP Microserver" scheme="http://www.sixapart.com/ns/types#tag" term="hpmicroserver"/>
    <category label="Linux" scheme="http://www.sixapart.com/ns/types#tag" term="linux"/>
    <category label="NAS" scheme="http://www.sixapart.com/ns/types#tag" term="nas"/>
    <category label="Network-attached storage" scheme="http://www.sixapart.com/ns/types#tag" term="networkattachedstorage"/>
    <category label="RAID" scheme="http://www.sixapart.com/ns/types#tag" term="raid"/>
    <category label="Sandisk Cruzer" scheme="http://www.sixapart.com/ns/types#tag" term="sandiskcruzer"/>
    <category label="Serial ATA" scheme="http://www.sixapart.com/ns/types#tag" term="serialata"/>
    <category label="TB" scheme="http://www.sixapart.com/ns/types#tag" term="tb"/>
    <author>
      <name>Paul Gregg</name>
      <uri>http://pgregg.com</uri>
    </author>
    <source>
      <id>tag:pgregg.com,2009-02-01:/blog//2</id>
      <link href="http://pgregg.com/blog/" rel="alternate" type="text/html"/>
      <link href="http://pgregg.com/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <title>Plop in the Ocean</title>
      <updated>2011-08-25T23:02:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://martian.org/marty/?p=230</id>
    <link href="http://martian.org/marty/2011/03/12/my-room-after-the-quake/" rel="alternate" type="text/html"/>
    <link href="http://martian.org/marty/2011/03/12/my-room-after-the-quake/#comments" rel="replies" type="text/html"/>
    <link href="http://martian.org/marty/2011/03/12/my-room-after-the-quake/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">My room, after the quake</title>
    <summary xml:lang="en">Thankfully, that is exactly how it looked before the quake. Nothing was damaged.</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://martian.org/marty/wp-content/uploads/2011/03/quake-room-2.jpg"><img alt="my room, after the quake" class="aligncenter wp-image-231" height="375" src="http://martian.org/marty/wp-content/uploads/2011/03/quake-room-2.jpg" title="quake-room-2" width="500"/></a></p>

<p>Thankfully, that is exactly how it looked before the quake.  Nothing was damaged.</p></div>
    </content>
    <updated>2011-03-17T14:41:04Z</updated>
    <published>2011-03-11T16:43:30Z</published>
    <category scheme="http://martian.org/marty" term="Uncategorized"/>
    <category scheme="http://martian.org/marty" term="quake"/>
    <author>
      <name>Marty</name>
      <uri>http://martian.org/marty/wp-atom.php</uri>
    </author>
    <source>
      <id>http://martian.org/marty/feed/atom/</id>
      <link href="http://martian.org/marty" rel="alternate" type="text/html"/>
      <link href="http://martian.org/marty/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Marty was here!</subtitle>
      <title xml:lang="en">バカな火星人</title>
      <updated>2012-01-11T13:16:06Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.255</id>
    <link href="http://www.earth.li/~noodles/blog/2011/03/another-2-wheels.html" rel="alternate" type="text/html"/>
    <title>Another 2 wheels</title>
    <summary>It's my birthday, so a week ago I bought myself a present: The office is 4.5 miles from the BART station, so up until now I've been taking a bus. Unfortunately the timings aren't that frequent (every 45-60 minutes). Plus I haven't been doing any exercise since I moved out here. Now it seems to be getting drier I figured it was time to sort out a bike. I wanted something flexible, and have heard nothing but good things from the Brompton owners I know, so that's what I ended up with. I'm very happy with it; despite my lack of recent exercise it's pretty easy to ride. I've actually found it doesn't take any longer than taking the bus, and is sometimes quicker, because I avoid having all of the waiting around for it. I bought it from Warm Planet Bikes, who were incredibly helpful. They had a selection in store that they let me try (and quite a few other models of folding bikes too) and when I made my decision it turned out they could do the customizations I wanted in shop. So rather than me having to order it and wait a month I was able to cycle away that same evening! Full marks to Matt for staying late to sort me out (plus he's a Brompton owner too)....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>It's my birthday, so a week ago I bought myself a present:</p>

<p><img alt="Red Brompton M3R folded" class="mt-image-center" height="480" src="http://www.earth.li/%7Enoodles/blog/2011/03/12/brompton-folded.jpg" style="text-align: center; display: block; margin: 0 auto 20px;" width="640"/></p>

<p>The office is 4.5 miles from the <a href="http://www.bart.gov/">BART</a> station, so up until now I've been taking a bus. Unfortunately the timings aren't that frequent (every 45-60 minutes). Plus I haven't been doing any exercise since I moved out here. Now it seems to be getting drier I figured it was time to sort out a bike. I wanted something flexible, and have heard nothing but good things from the <a href="http://www.brompton.co.uk/">Brompton</a> owners I know, so that's what I ended up with. I'm very happy with it; despite my lack of recent exercise it's pretty easy to ride. I've actually found it doesn't take any longer than taking the bus, and is sometimes quicker, because I avoid having all of the waiting around for it.</p>

<p>I bought it from <a href="http://www.warmplanetbikes.com/">Warm Planet Bikes</a>, who were incredibly helpful. They had a selection in store that they let me try (and quite a few other models of folding bikes too) and when I made my decision it turned out they could do the customizations I wanted in shop. So rather than me having to order it and wait a month I was able to cycle away that same evening! Full marks to Matt for staying late to sort me out (plus he's a Brompton owner too).</p>

<p><img alt="Red Brompton M3R" class="mt-image-center" height="480" src="http://www.earth.li/~noodles/blog/2011/03/12/brompton.jpg" style="text-align: center; display: block; margin: 0 auto 20px;" width="640"/></p></div>
    </content>
    <updated>2011-03-12T20:45:34Z</updated>
    <published>2011-03-12T20:23:36Z</published>
    <category label="101 things" scheme="http://www.sixapart.com/ns/types#tag" term="101things"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.254</id>
    <link href="http://www.earth.li/~noodles/blog/2011/02/notes-on-moving-to-america.html" rel="alternate" type="text/html"/>
    <title>Notes on moving to America</title>
    <summary>I've been out here for 6 months now. At the point in time I was coming out I was pointed at Andrew Pollock's On bootstrapping oneself in the US. I figure some extra data may be useful for anyone considering the same. I moved from the UK rather than Australia. Banking I sorted out my US banking long before I ever moved here; in fact I kicked the process off shortly after I accepted the move offer. Matthew had recommended the HSBC approach, so I did that. This meant when I arrived I had a credit card, debit card and check book. They also allow me to do really easy online transfers between my US and UK accounts. Mobile phone My mobile phone was something else that was dealt with before the move. I bought a Simple Mobile SIM off eBay. I thought I'd end up moving to a contract once I had a credit record here, but actually the $60/month unlimited tariff seems to be fairly reasonable. Their customer service leaves a lot to be desired, but I've sadly come to expect that from phone companies. I've got a Google Voice account which is the number I've been giving out, so it's easily for me to switch providers (or redirect things to a VOIP setup for when I'm back in the UK, but I've got a writeup to do for that at a later point in time). Finding somewhere to live One of my concerns was that it would be hard to find somewhere to live at short notice without any credit history or SSN. This turned out to be ill founded. Both of the managed apartment complexes I looked at were ok with the fact I'd just moved to the country and seemed used to such a setup. The place I went with is privately leased and was a bit more wary, but after a conversation with my US manager (who'd managed me even when I was in the UK) it was fine. Social Security Number AKA existing as an entity as far as the US is concern. I was told to wait at least 10 working days after entry before even applying for this, or I wouldn't be in the system and it could cause delays. I did so and the card turned up within about a week (I had been told up to 2 weeks). Which was good, because work were having problems figuring out how to pay me without one. You do seem to need the SSN for everything. The only times I can remember needing my National Insurance number in the UK is for new jobs and my E111 application. Driving licence I haven't ended up buying a car here; I pretty much don't need one most of the time and I've signed up to ZipCar for easy short term rentals - they're happy to take a UK licence for sign up. However I figured getting a licence here was a good idea in case I did decide to get a car, and even just for ID (I kept having to point people at the DOB on my UK licence - everywhere here seems to card). Applying for a licence ideally relies an SSN, so I did so a few days after I'd got that. I did the car + motorbike written tests and got my learner's permit. I applied for the car theory test the same day, but the first available slot was about 6 weeks later. During this period I did the CMSP basic RiderCourse, which meant that when I passed the car test I was also fully entitled to ride a motorbike here. Other useful notes As I live in the Bay Area I got myself a ClipperCard - it's like Oyster except without the clever discounts. Works on more agencies though and helps avoid having to sort out change. For broadband I went with Sonic.net - I'm in their ADSL2 coverage area so I'm getting a reasonable 17Mb/s connection. The other options were AT&amp;amp;T ADSL (slower) or Comcast cable (evil). I've had zero problems with Sonic; It Just Works. Also I sort of ended up with a trial run thanks to DebConf10 being in New York. Due to the way timings worked out this took place only a few weeks before my move to SF was scheduled. My banking and phone were already in place by this point, so it allowed me to check both were working ok. They were, and I didn't really expect them not to be, but it was a nice safety net to have for the move proper. Overall the main issue I had was that a lot of things were dependant on other things; get the SSN, get a learner's permit, apply for the practical test, wait for the licence to actually turn up etc. It probably took over 3 months for everything to actually happen and come through in the post. I can tell when I actually started to exist in the system because Capital One being junk mailing me about whether I want a credit card with them......</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>I've been out here for 6 months now. At the point in time I was coming
out I was pointed at Andrew Pollock's
<a href="http://blog.andrew.net.au/2006/01/01#bootstrapping">On bootstrapping oneself in the US</a>.
I figure some extra data may be useful for anyone considering the same.
I moved from the UK rather than Australia.</p>

<p><strong>Banking</strong></p>

<p>I sorted out my US banking long before I ever moved here; in fact I
kicked the process off shortly after I accepted the move offer.
<a href="http://mjg59.livejournal.com/">Matthew</a> had recommended the
<a href="http://www.hsbc.co.uk/">HSBC</a> approach, so I did that. This meant when
I arrived I had a credit card, debit card and check book. They also
allow me to do really easy online transfers between my US and UK
accounts.</p>

<p><strong>Mobile phone</strong></p>

<p>My mobile phone was something else that was dealt with before the move.
I bought a <a href="http://www.mysimplemobile.com/">Simple Mobile</a> SIM off
<a href="http://www.ebay.co.uk/">eBay</a>. I thought I'd end up moving to a
contract once I had a credit record here, but actually the $60/month
unlimited tariff seems to be fairly reasonable. Their customer service
leaves a lot to be desired, but I've sadly come to expect that from
phone companies. I've got a <a href="http://www.google.com/voice/">Google Voice</a>
account which is the number I've been giving out, so it's easily for me
to switch providers (or redirect things to a VOIP setup for when I'm
back in the UK, but I've got a writeup to do for that at a later point
in time).</p>

<p><strong>Finding somewhere to live</strong></p>

<p>One of my concerns was that it would be hard to find somewhere to live
at short notice without any credit history or SSN. This turned out to be
ill founded. Both of the managed apartment complexes I looked at were ok
with the fact I'd just moved to the country and seemed used to such a
setup. The place I went with is privately leased and was a bit more
wary, but after a conversation with my US manager (who'd managed me even
when I was in the UK) it was fine.</p>

<p><strong>Social Security Number</strong></p>

<p>AKA existing as an entity as far as the US is concern. I was told to
wait at least 10 working days after entry before even applying for this,
or I wouldn't be in the system and it could cause delays. I did so and
the card turned up within about a week (I had been told up to 2 weeks).
Which was good, because work were having problems figuring out how to
pay me without one.</p>

<p>You do seem to need the SSN for everything. The only times I can
remember needing my National Insurance number in the UK is for new jobs
and my E111 application.</p>

<p><strong>Driving licence</strong></p>

<p>I haven't ended up buying a car here; I pretty much don't need one most
of the time and I've signed up to <a href="http://www.zipcar.com/">ZipCar</a> for
easy short term rentals - they're happy to take a UK licence for sign
up. However I figured getting a licence here was a good idea in case I
did decide to get a car, and even just for ID (I kept having to point
people at the DOB on my UK licence - everywhere here seems to card).
Applying for a licence ideally relies an SSN, so I did so a few days
after I'd got that. I did the car + motorbike written tests and got my
learner's permit. I applied for the car theory test the same day, but
the first available slot was about 6 weeks later. During this period I
did the <a href="http://www.ca-msp.org/">CMSP</a> basic RiderCourse, which meant
that when I passed the car test I was also fully entitled to ride a
motorbike here.</p>

<p><strong>Other useful notes</strong></p>

<p>As I live in the Bay Area I got myself a
<a href="http://www.clippercard.com/">ClipperCard</a> - it's like
<a href="http://www.tfl.gov.uk/oyster">Oyster</a> except without the clever
discounts. Works on more agencies though and helps avoid having to sort
out change. For broadband I went with <a href="http://www.sonic.net/">Sonic.net</a>
- I'm in their ADSL2 coverage area so I'm getting a reasonable 17Mb/s
connection. The other options were AT&amp;T ADSL (slower) or Comcast cable
(<a href="http://gigaom.com/2010/11/29/forget-net-neutrality-comcast-might-break-the-web/">evil</a>).
I've had zero problems with Sonic; It Just Works.</p>

<p>Also I sort of ended up with a trial run thanks to
<a href="http://debconf10.debconf.org/">DebConf10</a> being in New York. Due to the
way timings worked out this took place only a few weeks before my move
to SF was scheduled. My banking and phone were already in place by this
point, so it allowed me to check both were working ok. They were, and I
didn't really expect them not to be, but it was a nice safety net to
have for the move proper.</p>

<p>Overall the main issue I had was that a lot of things were dependant on
other things; get the SSN, get a learner's permit, apply for the
practical test, wait for the licence to actually turn up etc. It
probably took over 3 months for everything to actually happen and come
through in the post. I can tell when I actually started to exist in the
system because Capital One being junk mailing me about whether I want a
credit card with them...</p></div>
    </content>
    <updated>2011-02-28T06:46:00Z</updated>
    <published>2011-02-28T06:42:01Z</published>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.253</id>
    <link href="http://www.earth.li/~noodles/blog/2011/02/my-squeeze-upgrade-notes.html" rel="alternate" type="text/html"/>
    <title>My Squeeze upgrade notes</title>
    <summary>I did my first upgrade of a lenny box to squeeze today; a test server in work. All went pretty smoothly but I had a handful of things I had to frob manually that I thought I'd write up here: collectd SNMP plugin needs MIBs or it won't start: installed snmp-mibs-downloader from non-free autofs starts before nis (#470573): added ypbind to the Required-Start: line in /etc/init.d/autofs and re-ran insserv NFS automounts now using NFSv4 instead of v3 and user/group mapping setting everything to nobody: Set NEED_IDMAPD=yes in /etc/default/nfs-common and ensure Domain in /etc/idmapd.conf is set to the correct domain name (look in /var/log/daemon.log for lines from rpc.idmapd saying "does not map into domain" to find out what this should be if you don't know). I think that's pretty smooth overall; kudos to all those involved. I've a few more boxes to upgrade, but they're all more likely to have people complaining at me if there are hiccups so they'll have to wait until I have a suitable block of time set aside....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>I did my first upgrade of a lenny box to squeeze today; a test server in work. All went pretty smoothly but I had a handful of things I had to frob manually that I thought I'd write up here:</p>

<ul>
<li>collectd SNMP plugin needs MIBs or it won't start: installed <code>snmp-mibs-downloader</code> from non-free</li>
<li><code>autofs</code> starts before <code>nis</code> (<a href="http://bugs.debian.org/470573">#470573</a>): added <code>ypbind</code> to the Required-Start: line in <code>/etc/init.d/autofs</code> and re-ran <code>insserv</code></li>
<li>NFS automounts now using NFSv4 instead of v3 and user/group mapping setting everything to nobody: Set <code>NEED_IDMAPD=yes</code> in <code>/etc/default/nfs-common</code> and ensure Domain in <code>/etc/idmapd.conf</code> is set to the correct domain name (look in <code>/var/log/daemon.log</code> for lines from rpc.idmapd saying "does not map into domain" to find out what this should be if you don't know).</li>
</ul>

<p>I think that's pretty smooth overall; kudos to all those involved. I've a few more boxes to upgrade, but they're all more likely to have people complaining at me if there are hiccups so they'll have to wait until I have a suitable block of time set aside.</p></div>
    </content>
    <updated>2011-02-08T06:00:45Z</updated>
    <published>2011-02-08T05:55:33Z</published>
    <category label="Debian" scheme="http://www.sixapart.com/ns/types#tag" term="debian"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.252</id>
    <link href="http://www.earth.li/~noodles/blog/2011/02/why-linux-part-6-freedom.html" rel="alternate" type="text/html"/>
    <title>Why Linux? (Part 6: Freedom)</title>
    <summary>(This is part of a series of posts on Why Linux?) I think of myself as reasonably pragmatic in my approach to Free/Open Source software. I don't get worked up over which set of language people want to use. I use devices that require binary firmware to be downloaded to them (because just because I can't see it doesn't mean it doesn't exist). I have non-free in my sources.list. And yet, talking to other Linux users these days, I realize I'm much more of a Freedom nut job than average. I want the source, be it for a driver, a minor widget, or a full app. I don't buy nVidia. I will sacrifice a degree of functionality in order to get Free. And while I think WINE is an excellent piece of software, I think the best end result is that it's no longer necessary, not that it's a perfect implementation of the ABI. How does any of this help justify my use of Linux in the work place? As previously mentioned, I'm a developer. Most developers don't operate in a vacuum; they have to inter-operate with other ecosystems. And usually somewhere along the line there's a failure to document exactly how something is handled, or an ambiguity about what exact choice might be taken. If I have access to the source then I can check that out for myself. If I don't, I have to guess. As an example, a long time ago I was involved in writing a serial console driver for QNX. There came a point where the behaviour wasn't quite as we'd expect. Although the organisation had a license for the source, I wasn't allowed to look at it. Instead I had to come up with a series of suitable questions that someone who could look at the source could answer without violating any NDAs. If I'd been able to look at the source directly we'd have all saved a lot of time. And that's an example where someone could look at the source, rather than having to make a bunch of guesses and instrument tests to see which was right. Access to the Linux source has helped me in other commercial contexts too. At Black Cat we were able to take advantage of patches like grsecurity in order to tighten up shell account boxes. I wrote the IPv6 support for l2tpns, because we had access to the source and could. I've been able to look at the source to understand exactly what SCSI responses are sent in certain circumstances too (or understand exactly what the error that a user land test program was getting back meant). Also I'm a big believe in Linus' Law. I do think that good Free software is much better than proprietary software (there's some really bad Free software out there though, I'm not disputing that). The fact that smart people can look at it and scratch whatever their itch is means that we get a gradual process of improvement that can't be ignored. Equally as long as someone has an interest in the software, end users can't be left high and dry by organisations abandoning still users applications. I think that should be a powerful driver to business to look towards Free software. (Before my more astute readers point it out; yes, I am employed writing non-free software. See the first sentence. One day I'll find a job working on Free software that ticks enough of the other boxes to be viable.)...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>(This is part of a series of posts on <a href="http://the.earth.li/~noodles/cgi-bin/mt/mt-search.cgi?blog_id=1&amp;tag=whylinux&amp;limit=20&amp;IncludeBlogs=1">Why Linux?</a>)</p>

<p>I think of myself as reasonably pragmatic in my approach to Free/Open Source software. I don't get worked up over which set of language people want to use. I use devices that require binary firmware to be downloaded to them (because just because I can't see it doesn't mean it doesn't exist). I have non-free in my <code>sources.list</code>.</p>

<p>And yet, talking to other Linux users these days, I realize I'm much more of a Freedom nut job than average. I want the source, be it for a driver, a minor widget, or a full app. I don't buy nVidia. I <strong>will</strong> sacrifice a degree of functionality in order to get Free. And while I think <a href="http://www.winehq.orq/">WINE</a> is an excellent piece of software, I think the best end result is that it's no longer necessary, not that it's a perfect implementation of the ABI.</p>

<p>How does any of this help justify my use of Linux in the work place? As previously mentioned, I'm a developer. Most developers don't operate in a vacuum; they have to inter-operate with other ecosystems. And usually somewhere along the line there's a failure to document exactly how something is handled, or an ambiguity about what exact choice might be taken. If I have access to the source then I can check that out for myself. If I don't, I have to guess. As an example, a long time ago I was involved in writing a serial console driver for QNX. There came a point where the behaviour wasn't quite as we'd expect. Although the organisation had a license for the source, I wasn't allowed to look at it. Instead I had to come up with a series of suitable questions that someone who <em>could</em> look at the source could answer without violating any NDAs. If I'd been able to look at the source directly we'd have all saved a lot of time. And that's an example where someone  <em>could</em> look at the source, rather than having to make a bunch of guesses and instrument tests to see which was right.</p>

<p>Access to the Linux source has helped me in other commercial contexts too. At Black Cat we were able to take advantage of patches like grsecurity in order to tighten up shell account boxes. I wrote the IPv6 support for l2tpns, because we had access to the source and could. I've been able to look at the source to understand exactly what SCSI responses are sent in certain circumstances too (or understand exactly what the error that a user land test program was getting back meant).</p>

<p>Also I'm a big believe in Linus' Law. I do think that good Free software is much better than proprietary software (there's some really bad Free software out there though, I'm not disputing that). The fact that smart people can look at it and scratch whatever their itch is means that we get a gradual process of improvement that can't be ignored. Equally as long as someone has an interest in the software, end users can't be left high and dry by organisations abandoning still users applications. I think that should be a powerful driver to business to look towards Free software.</p>

<p>(Before my more astute readers point it out; yes, I am employed writing non-free software. See the first sentence. One day I'll find a job working on Free software that ticks enough of the other boxes to be viable.)</p></div>
    </content>
    <updated>2011-02-07T01:50:30Z</updated>
    <published>2011-02-07T01:44:08Z</published>
    <category label="whylinux" scheme="http://www.sixapart.com/ns/types#tag" term="whylinux"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-23T00:01:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2011:/~noodles/blog//1.251</id>
    <link href="http://www.earth.li/~noodles/blog/2011/01/we-fear-undocumented-change.html" rel="alternate" type="text/html"/>
    <title>We fear undocumented change</title>
    <summary>I love revision control. I love the ability to track changes over time, whether that be to see why I changed something in the past, or to see why a particular thing has stopped working, or to see if a particular thing is fixed in a more recent version than the one I'm using. However I have a few opinions about the use of revision control that are obviously not shared by other people. Here are a few of them: One change per changeset. The only argument I can see against this is laziness. Changesets are cheap. Checking in multiple things in a single go makes it hard to work out exactly which piece of code fixes which problem. I'm fine with a big initial drops of code if logically it all needs to go together, but changesets that bundle up half a dozen different fixes piss me off. Descriptive changeset comments. Don't make me guess what you changed. Tell me. Bug numbers are not sufficient (though including them is really helpful). Comments in the changeset, not per file. I've only seen this with BitKeeper; you can have per file comments and then an overall changeset comment. At first I thought this was quite neat, because you can explain each part of a change. Now it just annoys me, because I want the relevant detail in one place rather than having to drill down to a per file level to figure out what's going on. The tree should always compile. There are people I respect who are all for checking in all the time throughout development no matter what the status. I have to disagree, at least for anything that's available to other people. The tree should always compile. This avoids pissing off your coworkers (especially if they're in a different timezone) and means you can do things like git bisect more easily. Plus it shows you've at least done minimal testing. Don't hide your tree. I like centralised locations for master trees. It means I can make an educated guess about where to look first for information about changes. Trees that live in obscure network shares or, worse, someone's home directory aren't helpful. While I may not always agree with the choice of VCS for the centralised service as long as it's actually fit for purpose I think it makes much more sense to use it than go off on a separate path that's less obvious for others to find....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>I love revision control. I love the ability to track changes over time,
whether that be to see why I changed something in the past, or to see
why a particular thing has stopped working, or to see if a particular
thing is fixed in a more recent version than the one I'm using.</p>

<p>However I have a few opinions about the use of revision control that are
obviously not shared by other people. Here are a few of them:</p>

<ul>
<li><p>One change per changeset.</p>

<p>The only argument I can see against this is laziness. Changesets are
cheap. Checking in multiple things in a single go makes it hard to
work out exactly which piece of code fixes which problem. I'm fine
with a big initial drops of code if logically it all needs to go
together, but changesets that bundle up half a dozen different fixes
piss me off.</p></li>
<li><p>Descriptive changeset comments.</p>

<p>Don't make me guess what you changed. Tell me. Bug numbers are not
sufficient (though including them is really helpful).</p></li>
<li><p>Comments in the changeset, not per file.</p>

<p>I've only seen this with BitKeeper; you can have per file comments
and then an overall changeset comment. At first I thought this was
quite neat, because you can explain each part of a change. Now it
just annoys me, because I want the relevant detail in one place
rather than having to drill down to a per file level to figure out
what's going on.</p></li>
<li><p>The tree should always compile.</p>

<p>There are people I respect who are all for checking in all the time
throughout development no matter what the status. I have to disagree,
at least for anything that's available to other people. The tree
should always compile. This avoids pissing off your coworkers
(especially if they're in a different timezone) and means you can do
things like git bisect more easily. Plus it shows you've at least
done <em>minimal</em> testing.</p></li>
<li><p>Don't hide your tree.</p>

<p>I like centralised locations for master trees. It means I can make an
educated guess about where to look first for information about
changes. Trees that live in obscure network shares or, worse,
someone's home directory aren't helpful. While I may not always agree
with the choice of VCS for the centralised service as long as it's
actually fit for purpose I think it makes much more sense to use it
than go off on a separate path that's less obvious for others to
find.</p></li>
</ul></div>
    </content>
    <updated>2011-01-28T05:42:54Z</updated>
    <published>2011-01-28T04:29:08Z</published>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2012-01-22T22:18:51Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:pgregg.com,2011:/blog//2.344</id>
    <link href="http://pgregg.com/blog/2011/01/experts-exchange-google-allfaqorg-dmca.html" rel="alternate" type="text/html"/>
    <title>Experts Exchange, Google, AllFAQ.org and misappropriation of copyright.</title>
    <summary>Opinion PieceI was googling (as a verb) and came across a rather peculiar message at the bottom of Google's search results:In response to a complaint we received under the US Digital Millennium Copyright Act, we have removed 1 result(s) from this page. If you wish, you may read the DMCA complaint that caused the removal(s) at ChillingEffects.org.Interesting - never saw that before!Following the link to Chilling Effects shows a copy of the complaint which has some interesting text in it.Experts-Exchange makes a detailed itemisation of their registered Copyrights, none of which I find objectionable, however, the complaint then goes on...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml">Opinion Piece<br/><br/>I was googling (as a verb) and came across a rather peculiar message at the bottom of Google's search results:<br/><br/><blockquote><span id="xjs" style=""><i>In response to a complaint we received under the <a href="http://www.google.co.uk/intl/en/dmca.html">US Digital Millennium Copyright Act</a>, we have removed 1 result(s) from this page. If you wish, you may <a href="http://www.chillingeffects.org/notice.cgi?sID=30399">read the DMCA complaint</a> that caused the removal(s) at ChillingEffects.org.</i></span><br/><span id="xjs" style=""/></blockquote><span id="xjs" style=""><i><br/></i></span>Interesting - never saw that before!<br/><br/>Following the link to <a href="http://www.chillingeffects.org/notice.cgi?sID=30399">Chilling Effects</a> shows a copy of the complaint which has some interesting text in it.<br/><br/>Experts-Exchange makes a detailed itemisation of their registered Copyrights, none of which I find objectionable, however, the complaint then goes on to list several issues against the Defendant, the first and most egregious of which is:<br/><br/><blockquote><i>a direct "copy and paste job" lifting the content of Plaintiff's question and answer forums and inserting them onto AllFAQ's website. AllFAQ's question and "Solutions" are verbatim to Experts-Exchange's questions and "Accepted Solutions;" </i><br/></blockquote><br/>From this <a href="http://experts-exchange.com/">Experts Exchange</a> is accusing <a href="http://allfaq.org/">allfaq.org</a> of Copyright infringement against Experts Exchange owned Copyright.<br/><br/>At first glance, this might seem fully justified - but look at what they are claiming copyright on.  Experts Exchange are assuming copyright ownership of content that you, and I, and all their users create by asking and answering questions on their web site.<br/><br/>I looked at Experts Exchange's <a href="http://www.experts-exchange.com/termsOfUse.jsp">Terms of Use</a> and could not find any agreement that users were assigning their rights and copyrights to Experts Exchange. The relevant paragraph is:<br/><br/><blockquote>"5. Content License<dl><dd>
         <p>
         EXPERTS EXCHANGE enables Members to post problems or questions, 
         proposed solutions or answers, information, comments and other content 
         ("Your Content") to its Site.  When you post Your Content to the Site, 
         you understand and agree that Your Content can be viewed and used by 
         other Members who visit the Site with or without attribution.
         </p>
         
         <p>
         You represent and warrant that you own or otherwise control all of the 
         rights to Your Content and that use of Your Content by EXPERTS 
         EXCHANGE and its affiliates will not infringe upon or violate the 
         rights of any third party. Before you use EXPERTS EXCHANGE Services to 
         post any information or content that is protected by intellectual 
         property laws, you shall have acquired the legal right to do so from 
         the owner or authorized licensee of such information or content.
         </p>
         
         <p>
         By registering with EXPERTS EXCHANGE and posting Your Content on the 
         Site, you hereby: (i) grant EXPERTS EXCHANGE a non-exclusive,
         perpetual, irrevocable, unrestricted, transferable, fully
         sub-licensable, worldwide, royalty-free license to use, distribute,
         display, reproduce, perform, modify, adapt, publish, translate and
         create derivative works from Your Content in any form, media or
         technology, whether now-known or hereafter developed; (ii) grant
         EXPERTS EXCHANGE and its affiliates and sub-licensees the right to use
         the Member Name that you submit with Your Content for purposes of
         attribution; (iii) authorize EXPERTS EXCHANGE to assert and prosecute
         claims against any third-party making any unauthorized use of Your
         Content, including any use that violates this User Agreement
         ("Third-Party Claims"); and (iv) appoint EXPERTS EXCHANGE as your
         attorney-in-fact for the purpose of asserting and prosecuting
         Third-Party Claims. If you do not wish to have Your Content attributed
         to you, then you must notify EXPERTS EXCHANGE at
            <a href="mailto:customer_service@experts-exchange.com">
            customer_service@experts-exchange.com</a>.
         </p>
      </dd></dl></blockquote><br/>Experts Exchange acknowledges that the copyright belongs to the author as "Your Content" and that by posting you are granting them extensive <b>licenses</b> to use that content. You are not assigning your copyright to Experts Exchange.<br/><br/>Now I am glad that their ToU does not attempt to wrest copyright ownership from its rightful owner, that is right and proper.<br/><br/>allfaq.org is demonstrably guilty of screen-scraping the Experts 
Exchange web site and I do not condone those actions at all. However, looking at what 
they copied - it was the Title, Question and Accepted Solution text - 
the copyright of 100% of that is with the original authors, and not 
Experts Exchange.<br/>
<br/>Thus, in my opinion, this complaint against allfaq.org is without merit and should be dismissed.<br/><br/>It would also appear that Experts Exchange has also abused the provisions of the DMCA in forcing Google to remove the content. Google should restore the links.<br/><br/>And finally, Experts Exchange should implement some technical measures to prevent automated scraping. Find better ways to improve your search ranking, and if your competition beats you don't <a href="http://www.experts-exchange.com/Web_Development/Internet_Marketing/Search_Engine_Optimization_SEO/Q_26271117.html">ask your own members how to do better SEO</a>; be told by them that you have no Copyright Claims on the content; and then proceed to file DMCA take down notices when you know you have no (copy)right.<br/><br/><br/><br/><br/></div>
    </content>
    <updated>2011-01-20T14:50:00Z</updated>
    <published>2011-01-19T21:50:45Z</published>
    <category scheme="http://www.sixapart.com/ns/types#category" term="General"/>
    <category scheme="http://www.sixapart.com/ns/types#category" term="Software"/>
    <category label="allfaq.org" scheme="http://www.sixapart.com/ns/types#tag" term="allfaqorg"/>
    <category label="copyright" scheme="http://www.sixapart.com/ns/types#tag" term="copyright"/>
    <category label="DMCA" scheme="http://www.sixapart.com/ns/types#tag" term="dmca"/>
    <category label="experts-exchange" scheme="http://www.sixapart.com/ns/types#tag" term="expertsexchange"/>
    <category label="google" scheme="http://www.sixapart.com/ns/types#tag" term="google"/>
    <author>
      <name>Paul Gregg</name>
      <uri>http://pgregg.com</uri>
    </author>
    <source>
      <id>tag:pgregg.com,2009-02-01:/blog//2</id>
      <link href="http://pgregg.com/blog/" rel="alternate" type="text/html"/>
      <link href="http://pgregg.com/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <title>Plop in the Ocean</title>
      <updated>2011-08-25T23:02:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.mccartney.ie/wordpress/?p=220</id>
    <link href="http://www.mccartney.ie/wordpress/2011/01/apple-mac-toolbox/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=apple-mac-toolbox" rel="alternate" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2011/01/apple-mac-toolbox/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=apple-mac-toolbox#comments" rel="replies" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2011/01/apple-mac-toolbox/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">Apple Mac Toolbox</title>
    <summary xml:lang="en">Following up on my recent post on the engineers toobox, I’ve just rebuilt my Apple MacBook (newer, bigger hard disk was the perfect opportunity for a fresh Snow Leopard install and to fix some annoying iPhoto index &amp; thumbnail corruption), so here’s my list of essentials for my MacBook, in no particular order: Evernote SpanningSync [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>Following up on my recent post on the <a href="http://www.mccartney.ie/wordpress/2010/06/15/the-new-toolbox/">engineers toobox</a>, I’ve just rebuilt my Apple MacBook (newer, bigger hard disk was the perfect opportunity for a fresh Snow Leopard install and to fix some annoying iPhoto index &amp; thumbnail corruption), so here’s my list of essentials for my MacBook, in no particular order:</p>
<ul>
<li>Evernote</li>
<li>SpanningSync</li>
<li><a href="http://www.dropbox.com">Dropbox</a></li>
<li>Last.fm</li>
<li>Xmarks for Safari</li>
<li>Xmarks for Firefox</li>
<li>Panic Coda</li>
<li>Thunderbird 3.x
<ul>
<li>British Dictionary</li>
<li>Enigmail</li>
<li>Google Contacts</li>
<li><a href="http://mailredirect.mozdev.org/">Mail Redirect</a></li>
<li><a href="https://addons.mozilla.org/af/thunderbird/addon/2487/">Nostalgy</a></li>
<li><a href="https://addons.mozilla.org/ja/thunderbird/addon/2516/">Mnenhy</a> (view a custom set of headers)</li>
<li><a href="http://www.groovypost.com/howto/geek-stuff/allow-thunderbird-3-to-download-and-display-images-automatically/">Display Remote Images automatically</a></li>
<li>Custom Archive folder (<a href="http://kb.mozillazine.org/Thunderbird_3.0_-_New_Features_and_Changes#New_.22Archives.22_Folder">one big bucket please</a>)</li>
</ul>
</li>
<li>Adium</li>
<li>VMWare Fusion</li>
<li>iPhoto</li>
<li>iMovie</li>
<li>QuickSilver</li>
<li>Microsoft Office</li>
<li>Google Chrome</li>
<li>Flickr Uploader</li>
<li>Skype</li>
<li>Google Picasa</li>
<li>Get iPlayer Automator</li>
<li>Cyberduck</li>
<li>MacVim</li>
<li>Spotify</li>
<li>iSquint</li>
<li>AudioHub</li>
<li>VisualHub</li>
<li>SuperSync</li>
<li>TweetDeck</li>
<li><a href="http://clicktoflash.com/">ClickToFlash</a></li>
<li>Growl</li>
</ul></div>
    </content>
    <updated>2011-01-17T13:09:54Z</updated>
    <published>2011-01-17T13:09:54Z</published>
    <category scheme="http://www.mccartney.ie/wordpress" term="Random Toad"/>
    <author>
      <name>simonm</name>
      <uri>http://www.mccartney.ie/blog</uri>
    </author>
    <source>
      <id>http://www.mccartney.ie/wordpress/feed/atom/</id>
      <link href="http://www.mccartney.ie/wordpress" rel="alternate" type="text/html"/>
      <link href="http://www.mccartney.ie/wordpress/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">too boring to have a real blog</subtitle>
      <title xml:lang="en">ze blog of simon</title>
      <updated>2011-12-20T12:52:44Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://redbrain.co.uk/?p=628</id>
    <link href="http://redbrain.co.uk/index.php/update/frustration/" rel="alternate" type="text/html"/>
    <title>Frustration</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Happy new year everyone I hope your all well and having a nice fresh start. I am going through a bit of a rough patch this last few months its been fairly difficult to deal with things, and I’ve found myself going though some depression because of it all. Mainly because of University this is [...]</p></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Happy new year everyone I hope your all well and having a nice fresh start. I am going through a bit of a rough patch this last few months its been fairly difficult to deal with things, and I’ve found myself going though some depression because of it all. Mainly because of University this is my final year i just wanted to finish it so i can go out and work properly again but the sheer frustration i have  with my university is nearly destroying me. Its nothing to do with the cliché of Tuition fee’s or anything like that its with the Lectures the modules and content being taught and how its being taught.</p>
<p>So for example i thought i would go and take the Compiler Module there last  semester, found out the lecturer has absolutely no clue. I mean i now have <a href="mailto:redbrain@gcc.gnu.org">redbrain@gcc.gnu.org</a> i post _loads_ of help to   bison-help gcc-help comp.compilers am a project lead on the python front-end for gcc and am working in my own ideas for front and middle end interaction for gcc. I’d like to think i know how to build   compiler since i have write an  interpreter for a dynamic language I’ve designed i’ve write a compiler from scratch for a basic language called Mod that outputs i386 code has  code ready to handle  optimisations a well formed IR called mod-dot. Then i start this module we get given an absolutely terrible compiler for this Mod language written in Java that outputs some insane weird   instruction set  that cant be assembled or linked… And the laxer and parser code is unbelievably disgusting and is written clearly by someone who doesn’t know how to build a compiler along with the  fact our lecturer thinks you _need_ EBNF to handle this very basic dialect of modular we call mod. So i tough yeah i will write my own from scratch and i did its over at <a href="http://code.redbrain.co.uk/cgit.cgi/qub-mod-c/">code.redbrain.co.uk</a>. Its 10x  clearer cleaner and easier to understand, and remember this is a lecturer trying to teach compiler development not only was the parser code hard and very ugly they never go into anything like DFA or  LR or LALR or decent regular expressions for the lexer. Its this hugely protracted view of how a compiler could work and in the end teaches nothing but scares students. And then the backend to this  compiler was truly awful it has pretty much Zero IR structure in it using nothing but statics to in a hackish way get the job done. We had 3 assignments to extend this compiler i pretty much ignored  them and just worked at my own since it did the job 10x better and more clearly and easier and it output code you could run! Anyone onto my Mathematics module, all i can say is thank flip this is my  last mathematics module i will _ever_ do i my life i mean when i started my Degree in Mathematics and Computer Science i liked Math in high school it was the only subject i was good at i mean i  enjoyed solving the problems. But in University all i have done is work at pretty much utterly random topic after topic with little or no coherence between anything so you literal would learn off module  for the exam forget everything move onto the next one. And i will _never_ use anything have learned from it again, i was hoping with mathematics i would learn decent logic and problem solving skills but i have learnt nothing. all i want to do is erase the name Chebsev the Russian mathematician out of my brain for the utterly random crap of his i have had to learn. I mean i try going to lectures but i usually don’t bother any-more it depresses me so much i don’t sleep at all these days the its bothered me so much to the fact i struggle to get motivated to work on my personal gcc stuff.</p>
<p>I mean what do people want degree’s for. I mean i am not stupid far from it i just want a life and at the moment i don’t have one. I mean i have been contacted by Google and Cisco for interviews for which i didn’t even apply for!!! And all of that has been down to working in open source with Gcc and absolutely _nothing_ to do with my degree i seriously doubt i will _ever_ use anything of my degree ever again.</p>
<p>Then my 3rd module at the moment is concurrent programming it was ok but seriously the lecturers at my uni need to grow up absolutely everything in my uni in the computer science dept is 20% practical at max then 80% theory. So i mean wtf people come out not able to program or know how anything works.</p>
<p>I know people in my computer science classes don’t know what ram is what hard drives look like and how to even build a simple desktop computer… Then even worse everything is windows the word Unix doesn’t get edge way unless its MacOS then programming languages Jezz don’t get me started. Everyone has this knee jerk reaction to the word C and start arguing like a gaggle of geese. I mean C is my fav language its simple it forces people to understand their computer, but in uni is Java or nothing and to be honest Java is absolutly killing university graduates creating drones who have absolutly no idea how a computer works or how to build software.</p>
<p>If universities were to teach C along side a decent i386 assembler to learn an instruction set then into a project each year of university students would get experience and get a portfolio of work and abilities and could do a project in anything that would interest them and if they learn C they are _not_ limited into what they could do since if you learn Java you will find moving to something else a complete struggle for a long time since you learn so many bad habits.</p>
<p>Right now i have exams coming up which is what i hate we do out winter semester then have exams after Christmas it makes you not able to enjoy the holiday what so ever but the thing that kills me the most i know i am better at anyone in my compiler module there only are like 15 of us and not one of them barley handed in their assignment but i know some ass kisser will get like 90% in the module and i will come out with like %50 making me look like an ass since i am redbrain@gcc.gnu.org but the problem is if you look at the exam is nothing but these utterly random questions directly related to this Java compiler they produced that is just a mess. I mean the worst part is those people will be able to focus and revise for it but i cant i have always have to do 90% revision on my math modules and like 1 nights revision for computer science Math has just been so incredibly difficult simply because is incredibly random and pointless. Plus the lecture i had for my math module had his head so far up his ass its been insane he has not even once been remotly helpful to me putting assignments online or anything i have had so many assignments to do this semester i was stuggling to keep my head above water and because i do 2 subjects unlike most people i am the only person in my situation and i get absolutely no help and there is absolutely no standard across the board.</p>
<p>I really don’t understand why people put so much faith in degrees when i graduate i will come out with a plethora of open source experience and actual code people can look at an peruse which many people already do use my work as a reference in the real world.</p>
<p>And thing is i just want to be free of this degree its really killing me karma at the moment i just want to be able to rest properly. I am so on edge and i really don’t mix well with people in my class most really don’t care about a computers more into parting and just revising crap for exams and really have zero understanding of real world applications.</p>
<p>Yeah so that leads me into my concurrent programming module i mean it started off ok but i mean it was sooo java centric it was silly in how you can program monitors etc but i mean still it was so Java centric that to reuse what he was doing outside of it would be difficult to say the least so basically i was crap then the last part of the module which makes up one third of it was to do with some dudes PHD project this super niche idea of modelling concurrent processes which in the end was just finite state machines but just retarded let me find it <a href="http://www.doc.ic.ac.uk/~jnm/book/">http://www.doc.ic.ac.uk/~jnm/book/</a> i mean this book was just a heap of crap academics are ruining software i mean they absolutely have no clue outside of their super niche world absolutely nothing in there is helpful to anyone outside of Java land.</p>
<p>I mean at university you should be learning more general skills and abilities to be able to adapt and not be sand-boxed into these real niches where you cant escape.</p>
<p>I always said to myself i don’t want to blame university for everything that’s why i have done so much of my own work and projects and open source because then i actually have work people already use and can see and judge me based on that i just hope when i get out of here people will judge me based on that not my degree because at this stage i could have got a 1st but my marks are at 2:1 2:2 ish since the maths modules kill me so much since i do half a maths degree and half a computer science degree its not meshed into one thing. Right now all i want is to get a 3rd do min work on my degree to keep my self happy because right now i am just so depressed i cant sleep properly and it keeps making me sick.</p>
<p>I am just happy i have my friends and keeping things into perspective the odd time is nice since i have been out of routine not on identi.ca that much not keeping up with Linux outlaws which i really miss and i really miss my Linux outlaws friends. One of the happiest times of my life was in Liverpool with everyone i hope your all doing well sorry for this super rant i just really needed to get this down on paper to let it all out so i can go for a walk I’m feeling a lot better now.</p>
<p>PS: sorry for grammar and spelling mistakes i just needed to get this all off my chest i have some cool things to show in the next while after this few weeks are over me.</p></div>
    </content>
    <updated>2011-01-03T15:32:43Z</updated>
    <category term="Update!"/>
    <author>
      <name>redbrain</name>
    </author>
    <source>
      <id>http://redbrain.co.uk</id>
      <link href="http://redbrain.co.uk/index.php/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://redbrain.co.uk" rel="alternate" type="text/html"/>
      <subtitle>Frustrated Software Developer</subtitle>
      <title>RedBrain @ $HOME : ~ $</title>
      <updated>2011-11-16T18:17:06Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2010:/~noodles/blog//1.250</id>
    <link href="http://www.earth.li/~noodles/blog/2010/12/why-linux-part-5-flexibility.html" rel="alternate" type="text/html"/>
    <title>Why Linux? (Part 5: Flexibility)</title>
    <summary>(This is part of a series of posts on Why Linux?) I find Linux more flexible. Maybe that's the familiarity showing, maybe it's about the package management, but it's a powerful reason for me to use it. For example, a couple of years ago I wanted to try out some iSCSI stuff against a SAN. Of course I have test boxes available I can do this on, but this was just to try out a few bits and pieces rather than anything more concrete. So I installed open-iscsi on my desktop and was able to merrily do the tests I wanted with very little additional work. Or I wanted to try out some BitKeeper to git conversion work recently. I wasn't sure how much resource it would take on a build server, and didn't want to tie things up there. So I ran it on my desktop overnight, where I could easily setup the appropriate environment and wouldn't impact on anyone else's resources. Problems talking to dodgy hardware? Linux is much better about giving you some idea what's going on, without needing to install extra software. I had a workmate grappling with an old USB music player recently; hooking it up to her Windows laptop wasn't providing a lot of joy so I attached it to my Linux box and was able to see that it did identify ok, but was disconnecting randomly at times too. Want to script querying an AD server for the current employee list and displaying who's joined and who's left since the last time you did so? I found that easy enough with the common Linux LDAP tools. I'm sure it's doable under Windows too, but I'm not sure it would be quite so simple. For bonus points add graphviz into the mix for automatic organisation charts (modulo accuracy of the AD data). This flexibility is something that helps me do my job. Sure, as I mentioned above I do have access to test boxes that I can use for this, but being able to do it on my desktop can be useful - for example if I'm offline, or on a slow network connection, or just geographically distant from my test machines so network latency is higher than I'd like. (Also, it's something that makes a Linux box a really great test box. I'm lucky in that I have a mix of OSes available to me for testing, but the one that I use most often is the Debian box. Much easier to get and install decent diagnosis tools for it that can give me packet level dumps, or do really odd stuff that turns out to be really useful.)...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>(This is part of a series of posts on <a href="http://the.earth.li/~noodles/cgi-bin/mt/mt-search.cgi?blog_id=1&amp;tag=whylinux&amp;limit=20&amp;IncludeBlogs=1">Why Linux?</a>)</p>

<p>I find Linux more flexible. Maybe that's the familiarity showing, maybe
it's about the package management, but it's a powerful reason for me to
use it.</p>

<p>For example, a couple of years ago I wanted to try out some iSCSI stuff
against a SAN. Of course I have test boxes available I can do this on,
but this was just to try out a few bits and pieces rather than anything
more concrete. So I installed <a href="http://www.open-iscsi.org/">open-iscsi</a> on my desktop and was able to merrily do the tests I wanted with very little additional work.</p>

<p>Or I wanted to try out some BitKeeper to git conversion work recently. I
wasn't sure how much resource it would take on a build server, and
didn't want to tie things up there. So I ran it on my desktop overnight,
where I could easily setup the appropriate environment and wouldn't
impact on anyone else's resources.</p>

<p>Problems talking to dodgy hardware? Linux is much better about giving
you some idea what's going on, without needing to install extra
software. I had a workmate grappling with an old USB music player
recently; hooking it up to her Windows laptop wasn't providing a lot of
joy so I attached it to my Linux box and was able to see that it did
identify ok, but was disconnecting randomly at times too.</p>

<p>Want to script querying an AD server for the current employee list and
displaying who's joined and who's left since the last time you did so?
I found that easy enough with the common Linux LDAP tools. I'm sure it's
doable under Windows too, but I'm not sure it would be quite so simple.
For bonus points add graphviz into the mix for automatic organisation
charts (modulo accuracy of the AD data).</p>

<p>This flexibility is something that helps me do my job. Sure, as I
mentioned above I do have access to test boxes that I can use for
this, but being able to do it on my desktop can be useful - for example
if I'm offline, or on a slow network connection, or just geographically
distant from my test machines so network latency is higher than I'd
like.</p>

<p>(Also, it's something that makes a Linux box a really great test box.
I'm lucky in that I have a mix of OSes available to me for testing, but
the one that I use most often is the Debian box. Much easier to get and
install decent diagnosis tools for it that can give me packet level
dumps, or do really odd stuff that turns out to be really useful.)</p></div>
    </content>
    <updated>2010-12-30T11:20:45Z</updated>
    <published>2010-12-30T11:18:15Z</published>
    <category label="whylinux" scheme="http://www.sixapart.com/ns/types#tag" term="whylinux"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2011-11-26T00:32:16Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2010:/~noodles/blog//1.249</id>
    <link href="http://www.earth.li/~noodles/blog/2010/12/why-linux-part-4-package-manag.html" rel="alternate" type="text/html"/>
    <title>Why Linux? (Part 4: Package Management)</title>
    <summary>(This is part of a series of posts on Why Linux?) I've run a number of distros in my time. I ended up on Debian near the end of 1999, and part of the drive for that was the number of packages available in one centralised location. Decent package management is a definite strength of Linux (or FreeBSD) over proprietary operating systems. It derives from the freedom aspect, but means you can end up with one source for all (or most) of your software, that's compiled against the same set of libraries, with one way to track what owns what. This may not seem like a big thing, especially if you're a hobbyist or are coming from a Windows background. Reinstalling is often seen as a necessary regular requirement. Personally I've got better things to do with my time. If I want to try out a piece of software I want to be able to install it safe in the knowledge I know exactly what files it owns and where there are. And I want it to be able to tell me what other common components it needs that I might not already have. Then if I decide it's not for me I can cleanly remove it and anything else it pulled in that I no longer need. Don't underestimate this. This is useful on all of my machines. I can query the version number of everything installed. I can check for updates with one command (no need for every piece of installed software to have its own updater implementation). Software can share libraries correctly rather than stashing their own private copies, meaning I get bug fixes and security updates. (Yes, sometimes authors bundle even in the Linux world. Stop it.) I'm a developer. I tend to interact with a lot of different systems, of different types. It's really handy to have access to a wide range of tools to help me with that, know that there's legally no problem with me installing them, be able to do so with a single command and, should they turn out to be unsuitable, know I can cleanly remove them with another single command. This is a definite win in the work context. Equally I've been a sysadmin for multiple machines at once. Being able to login to each of them and check that everything is up to date is damn handy. Being able to easily install software for customers tends to make you popular too. And being able to rebuild boxes (or build additional boxes to share load) with the same setup is a lot easier with a decent package manager too. And, to pre-empt any responses about how a lot of this is possible under, say, Windows, yes, it is. I've spent some time in the past building packages for commercial deployment using Novadigm's Radia tool. I'm aware that Windows integral package management has also got better over time. I still think dpkg/apt (or rpm/yum) is far more powerful. And, for the end user, mostly easier as well - distros are building pre-prepared packages for you, rather than you having to do it yourself like with Radia....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>(This is part of a series of posts on <a href="http://the.earth.li/~noodles/cgi-bin/mt/mt-search.cgi?blog_id=1&amp;tag=whylinux&amp;limit=20&amp;IncludeBlogs=1">Why Linux?</a>)</p>

<p>I've run a number of distros in my time. I ended up on Debian near the
end of 1999, and part of the drive for that was the number of packages
available in one centralised location. Decent package management is a
definite strength of Linux (or FreeBSD) over proprietary operating
systems. It derives from the freedom aspect, but means you can end up
with one source for all (or most) of your software, that's compiled
against the same set of libraries, with one way to track what owns what.</p>

<p>This may not seem like a big thing, especially if you're a hobbyist or
are coming from a Windows background. Reinstalling is often seen as a
necessary regular requirement. Personally I've got better things to do
with my time. If I want to try out a piece of software I want to be able
to install it safe in the knowledge I know exactly what files it owns
and where there are. And I want it to be able to tell me what other
common components it needs that I might not already have. Then if I
decide it's not for me I can cleanly remove it and anything else it
pulled in that I no longer need.</p>

<p>Don't underestimate this. This is useful on all of my machines. I can
query the version number of everything installed. I can check for
updates with one command (no need for every piece of installed software
to have its own updater implementation). Software can share libraries
correctly rather than stashing their own private copies, meaning I get
bug fixes and security updates. (Yes, sometimes authors bundle even in
the Linux world. Stop it.)</p>

<p>I'm a developer. I tend to interact with a lot of different systems, of
different types. It's really handy to have access to a wide range of
tools to help me with that, know that there's legally no problem with me
installing them, be able to do so with a single command and, should they
turn out to be unsuitable, know I can cleanly remove them with another
single command. This is a definite win in the work context.</p>

<p>Equally I've been a sysadmin for multiple machines at once. Being able
to login to each of them and check that everything is up to date is damn
handy. Being able to easily install software for customers tends to make
you popular too. And being able to rebuild boxes (or build additional
boxes to share load) with the same setup is a lot easier with a decent
package manager too.</p>

<p>And, to pre-empt any responses about how a lot of this is possible
under, say, Windows, yes, it is. I've spent some time in the past
building packages for commercial deployment using Novadigm's Radia tool.
I'm aware that Windows integral package management has also got better
over time. I still think dpkg/apt (or rpm/yum) is far more powerful.
And, for the end user, mostly easier as well - distros are building
pre-prepared packages for you, rather than you having to do it yourself
like with Radia.</p></div>
    </content>
    <updated>2010-12-22T02:20:16Z</updated>
    <published>2010-12-22T02:12:55Z</published>
    <category label="whylinux" scheme="http://www.sixapart.com/ns/types#tag" term="whylinux"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2011-11-08T06:13:25Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2010:/~noodles/blog//1.248</id>
    <link href="http://www.earth.li/~noodles/blog/2010/12/contract-free-phones-are-the-w.html" rel="alternate" type="text/html"/>
    <title>Contract free phones are the way forward</title>
    <summary>Russell complains about locked down phones and horrible telcos, in particular about not getting a discount on your monthly contract if you don't get a phone with it. This hasn't been my experience, either in the UK or since I moved to the US. In the UK I ended up on an O2 Simplicity (month-by-month) plan which provided more minutes, SMSes and data allowance that I needed for £20/month (note that I only use the data for the phone, I didn't tether it to my laptop). Originally I chose this because I wasn't sure about coverage where I lived (that's why I was changing provider), but it turned out to be a pretty good deal, saving me at least £10/month over a contract that I'd have been tied into. When the G1 was launched I wasn't interested in moving to T-Mobile, who I knew had no 3G coverage outside of Belfast, so I ended up with one off eBay (received as a gift) and kept my O2 contract. When I moved to the US I signed up to Simple Mobile mainly because I could get a SIM from eBay before I left the UK, and it was PAYG (so the fact I'd no credit record didn't matter) but still included unlimited voice/SMS/data. Significantly more expensive at $60/month than I was used to paying in the UK, but seemed to be the going rate even for a contract. Then the G2 launched back in October. I resisted for 2 or 3 weeks, then decided it had to be mine. The G1's battery was even worse than it had been (to be fair it had lasted 2 years), and although Cyanogen provided Android 2.2 the hardware isn't really up to it. I decided to go with T-Mobile; Simple Mobile use their network, so I knew the coverage would be fine, and I figured a contract was probably a good way to help get a credit record here. Except, the pricing was a bit weird. $200 for the phone with a 2 year $80/month contract or $500 for the phone with an identical contract but no tie in and $60/month. Er, what? I pay up front and I save $180 and I can walk away whenever I want? Ok. As it turned out this was the smart choice. Firstly $60/month means $60/month plus taxes[0], so I was paying more than I paid Simple Mobile. I figured I could bear that for a few months to get the credit history, plus the free network unlock after 3 months. Except then it became clear that international SMS wasn't included in the unlimited SMS (it is with Simple). Most of my SMS is international. Now, T-Mobile have a $5/month bolt on to cover that, but not if you're on their flexpay scheme because they found themselves unable to verify your SSN. So I cancelled the contract after the first month and moved back to Simple. I didn't even need to unlock the phone due to the fact it's the same network (though I have now in preparation for my trip back to the UK over Christmas). Surprisingly T-Mobile didn't try and keep me by sorting out the international SMS bolt on. I guess US mobile customers are used to being screwed over (certainly the pricing suggests that). Er, sorry, that turned into a bit of a T-Mobile rant. My original point was that all of my recent mobile contracts have been month by month, not involved a subsidised phone, and saved me money over being tied in. And even if they hadn't my experiences with the flexibility offered by not being tied in (worries about coverage, discovering the deal isn't as good as you thought) mean that I'm pretty much convinced that contract-free is the way to go anyway. [0] Dear America, for all your complaints about VAT it's not really a lot different from sales tax and at least the prices in shops/online actually include it. Also it's the same everywhere in the country....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://etbe.coker.com.au/">Russell</a> complains about
<a href="http://etbe.coker.com.au/2010/12/19/locked-down-phones-and-horrible-telcos/">locked down phones and horrible telcos</a>,
in particular about not getting a discount on your monthly contract if
you don't get a phone with it.</p>

<p>This hasn't been my experience, either in the UK or since I moved to the
US. In the UK I ended up on an <a href="http://www.o2.co.uk/">O2</a> Simplicity
(month-by-month) plan which provided more minutes, SMSes and data
allowance that I needed for £20/month (note that I only use the data for
the phone, I didn't tether it to my laptop). Originally I chose this
because I wasn't sure about coverage where I lived (that's why I was
changing provider), but it turned out to be a pretty good deal, saving
me at least £10/month over a contract that I'd have been tied into. When
the G1 was launched I wasn't interested in moving to T-Mobile, who I
knew had no 3G coverage outside of Belfast, so I ended up with one
off eBay (received as a gift) and kept my O2 contract.</p>

<p>When I moved to the US I signed up to
<a href="http://www.mysimplemobile.com/">Simple Mobile</a> mainly because I could
get a SIM from eBay before I left the UK, and it was PAYG (so the
fact I'd no credit record didn't matter) but still included unlimited
voice/SMS/data. Significantly more expensive at $60/month than I was
used to paying in the UK, but seemed to be the going rate even for a
contract.</p>

<p>Then the G2 launched back in October. I resisted for 2 or 3 weeks, then
decided it had to be mine. The G1's battery was even worse than it had
been (to be fair it had lasted 2 years), and although
<a href="http://www.cyanogenmod.com/">Cyanogen</a> provided Android 2.2
the hardware isn't really up to it. I decided to go with T-Mobile;
Simple Mobile use their network, so I knew the coverage would be fine,
and I figured a contract was probably a good way to help get a credit
record here.</p>

<p>Except, the pricing was a bit weird. $200 for the phone with a 2 year
$80/month contract or $500 for the phone with an identical contract but
no tie in and $60/month. Er, what? I pay up front and I save $180 and I
can walk away whenever I want? Ok.</p>

<p>As it turned out this was the smart choice. Firstly $60/month means
$60/month plus taxes[0], so I was paying more than I paid Simple Mobile.
I figured I could bear that for a few months to get the credit history,
plus the free network unlock after 3 months. Except then it became clear
that international SMS wasn't included in the unlimited SMS (it is with
Simple). Most of my SMS is international. Now, T-Mobile have a $5/month
bolt on to cover that, but not if you're on their flexpay scheme because
they found themselves unable to verify your SSN. So I cancelled the
contract after the first month and moved back to Simple. I didn't even
need to unlock the phone due to the fact it's the same network (though I
have now in preparation for my trip back to the UK over Christmas).
Surprisingly T-Mobile didn't try and keep me by sorting out the
international SMS bolt on. I guess US mobile customers are used to being
screwed over (certainly the pricing suggests that).</p>

<p>Er, sorry, that turned into a bit of a T-Mobile rant. My original point
was that all of my recent mobile contracts have been month by month, not
involved a subsidised phone, and saved me money over being tied in. And
even if they hadn't my experiences with the flexibility offered by not
being tied in (worries about coverage, discovering the deal isn't as
good as you thought) mean that I'm pretty much convinced that
contract-free is the way to go anyway.</p>

<p>[0] Dear America, for all your complaints about VAT it's not really a
lot different from sales tax and at least the prices in shops/online
actually include it. Also it's the same everywhere in the country.</p></div>
    </content>
    <updated>2010-12-20T02:09:58Z</updated>
    <published>2010-12-20T02:08:29Z</published>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2011-10-05T06:02:36Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:www.earth.li,2010:/~noodles/blog//1.247</id>
    <link href="http://www.earth.li/~noodles/blog/2010/12/why-linux-part-3-its-cheap.html" rel="alternate" type="text/html"/>
    <title>Why Linux? (Part 3: It's cheap)</title>
    <summary>(This is part of a series of posts on Why Linux?) Linux, to me as an end user, is cheap. Even taking into account the fact most PCs come with a Windows licence included it's still cheaper for me to run Linux. I paid Steve minimal amounts for my first set of Debian install CDs. These days I can burn my own netinst CDs and pull the rest over the internet. I legally have access to a tremendous range of excellent software, for nothing. All the apps I need are available without having to shell out more. How is that not awesome? I get free updates, both for bugs and also for major features. I'm not left with the option of paying lots of money for the latest and greatest, or dealing with an unsupported old release with known bugs. The counter argument from my Windows using friends is often about how they didn't pay for their Windows updates nor their copy of Office. I'm unimpressed with anyone who tells me Windows is a better option, but is unprepared to pay for it. If you have to illegally obtain it in order for it to compete with Linux then you're not really comparing on equal terms, are you? Also don't tell me that Free software takes away jobs from software engineers and then pirate software, eh? Cost isn't just about the money though. I've put many hours into being involved in Debian. I've provided project resources when I was in a position to do so. I've contributed to the Linux kernel. Not quite the same as paying for it, but I think does indicate that I'm trying to give back a little too. I also accept that at an organisational level the basic cost of the software licences is often negligible compared to things like hardware, training and support. I still think cost is a compelling argument for the home user, and for decisions at an organisational level. As mentioned I realise there are issues with training and support, but I don't believe these costs are any higher than for alternative OSes. Linux also makes it remarkably easy to remotely administer machines, and perform common actions across an entire installed estate, without needing extra bolt ons from 3rd parties. Cost doesn't provide sufficient justification for an individual desktop in an organisation that has site licences for an alternative however (and in fact running Linux requires extra work on my part to do the install and maintenance compared to allowing central IT to manage my machine). So that's not a good enough reason....</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>(This is part of a series of posts on <a href="http://the.earth.li/~noodles/cgi-bin/mt/mt-search.cgi?blog_id=1&amp;tag=whylinux&amp;limit=20&amp;IncludeBlogs=1">Why Linux?</a>)</p>

<p>Linux, to me as an end user, is cheap. Even taking into account the fact
most PCs come with a Windows licence included it's still cheaper for me
to run Linux. I paid Steve minimal amounts for my first set of Debian
install CDs. These days I can burn my own netinst CDs and pull the rest
over the internet. I legally have access to a tremendous range of
excellent software, for nothing. All the apps I need are available
without having to shell out more. How is that not awesome? I get free
updates, both for bugs and also for major features. I'm not left with
the option of paying lots of money for the latest and greatest, or
dealing with an unsupported old release with known bugs.</p>

<p>The counter argument from my Windows using friends is often about how
they didn't pay for their Windows updates nor their copy of Office. I'm
unimpressed with anyone who tells me Windows is a better option, but is
unprepared to pay for it. If you have to illegally obtain it in order
for it to compete with Linux then you're not really comparing on equal
terms, are you? Also don't tell me that Free software takes away jobs
from software engineers and then pirate software, eh?</p>

<p>Cost isn't just about the money though. I've put many hours into being
involved in Debian. I've provided project resources when I was in a
position to do so. I've contributed to the Linux kernel. Not quite the
same as paying for it, but I think does indicate that I'm trying to give
back a little too. I also accept that at an organisational level the
basic cost of the software licences is often negligible compared to
things like hardware, training and support.</p>

<p>I still think cost is a compelling argument for the home user, and for
decisions at an organisational level. As mentioned I realise there are
issues with training and support, but I don't believe these costs are
any higher than for alternative OSes. Linux also makes it remarkably
easy to remotely administer machines, and perform common actions across
an entire installed estate, without needing extra bolt ons from 3rd
parties.</p>

<p>Cost doesn't provide sufficient justification for an individual desktop
in an organisation that has site licences for an alternative however
(and in fact running Linux requires extra work on my part to do the
install and maintenance compared to allowing central IT to manage my
machine).  So that's not a good enough reason.</p></div>
    </content>
    <updated>2010-12-18T21:12:32Z</updated>
    <published>2010-12-18T21:11:02Z</published>
    <category label="whylinux" scheme="http://www.sixapart.com/ns/types#tag" term="whylinux"/>
    <author>
      <name>Jonathan McDowell</name>
      <uri>http://www.earth.li/~noodles/blog/</uri>
    </author>
    <source>
      <id>tag:www.earth.li,2008-03-29:/~noodles/blog//1</id>
      <link href="http://www.earth.li/~noodles/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.earth.li/~noodles/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <subtitle>Dude! Sweet!</subtitle>
      <title>Noodles' Emptiness</title>
      <updated>2011-07-02T03:16:06Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.piglets.org/serendipity/archives/117-guid.html</id>
    <link href="http://www.piglets.org/serendipity/archives/117-The-Academic-Descent-to-Me.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/3.0/" rel="license"/>
    <title>The Academic Descent to Me</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">How interesting, today I learned that Derek Burgess, the PhD supervisor of my PhD supervisor (Brian McMaster) was himself supervised by Frank Smithies. With a little help from the <a href="http://genealogy.math.ndsu.nodak.edu/index.php">Mathematical Genealogy Project</a> this has helped me work out my academic "parentage".

<ol>
<li>Colin Turner, Queen's University of Belfast, 1997</li>
<li>Brian McMaster, Queen's University of Belfast, 1972</li>
<li>Derek Burgess, University of Cambridge, 1951</li>
<li><a href="http://www-history.mcs.st-and.ac.uk/Biographies/Smithies.html">Frank Smithies</a>, University of Cambridge, 1937</li>
<li><a href="http://en.wikipedia.org/wiki/G_H_Hardy">G. H. Hardy</a>, University of Cambridge</li>
<li><a href="http://en.wikipedia.org/wiki/E._T._Whittaker">Edmund Whittaker</a>, University of Cambridge, 1895</li>
<li><a href="http://en.wikipedia.org/wiki/Andrew_Forsyth">Andrew Forsyth</a>, University of Cambridge, 1881</li>
<li><a href="http://en.wikipedia.org/wiki/Arthur_cayley">Arthur Cayley</a>, University of Oxford / University College Dublin / Universiteit Leiden, 1864,1865,1875</li>
<li><a href="http://en.wikipedia.org/wiki/William_hopkins">William Hopkins</a>, University of Cambridge, 1830 (Note his many famous students)</li>
<li><a href="http://en.wikipedia.org/wiki/Adam_Sedgwick">Adam Sedgwick</a>, University of Cambridge, 1811</li>
<li><a href="http://en.wikipedia.org/wiki/Thomas_Jones_%28mathematician%29">Thomas Jones</a>, University of Cambridge, 1782</li>
<li><a href="http://en.wikipedia.org/wiki/Thomas_Postlethwaite">Thomas Postlethwaite</a>, University of Cambridge, 1756</li>
<li><a href="http://en.wikipedia.org/wiki/Stephen_Whisson">Stephen Whisson</a>, University of Cambridge, 1742</li>
<li><a href="http://en.wikipedia.org/wiki/Walter_Taylor_%28mathematician%29">Walter Taylor</a>, University of Cambridge, 1723</li>
<li><a href="http://en.wikipedia.org/wiki/Robert_Smith_%28mathematician%29">Robert Smith</a>, University of Cambridge, 1715</li>
<li><a href="http://en.wikipedia.org/wiki/Roger_Cotes">Roger Cotes</a>, University of Cambridge, 1706</li>
<li><a href="http://en.wikipedia.org/wiki/Isaac_Newton">Isaac Newton</a>, University of Cambridge, 1668</li>
<li><a href="http://en.wikipedia.org/wiki/Isaac_barrow">Isaac Barrow</a>, University of Cambridge, 1652</li>
<li><a href="http://en.wikipedia.org/wiki/Vincenzio_Viviani">Vincenzio  Viviani</a></li>
<li><a href="http://en.wikipedia.org/wiki/Galileo_Galilei">Galileo Galilei</a>, University of Pisa</li>
</ol>

I think I'll stop there. I found this absolutely fascinating, many notable figures, and Hopkins supervised many famous figures. It's a shame I could never hope to live up to such a line!</div>
    </content>
    <updated>2010-12-17T16:29:17Z</updated>
    <category term="random musings"/>
    <author>
      <name>Colin Turner</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.piglets.org/serendipity/</id>
      <link href="http://www.piglets.org/serendipity/" rel="alternate" type="text/html"/>
      <link href="http://www.piglets.org/serendipity/index.php?/feeds/" rel="self" type="application/rss+xml"/>
      <subtitle>Maths, Software, Hardware, Martial Arts and more</subtitle>
      <title>Proving the Obviously Untrue</title>
      <updated>2012-02-04T16:17:09Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.piglets.org/serendipity/archives/116-guid.html</id>
    <link href="http://www.piglets.org/serendipity/archives/116-Heaven-gets-an-Audit.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/3.0/" rel="license"/>
    <title>Heaven gets an Audit</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This is a whimsical storyline I knocked out this morning. If you don't know much about HE (Higher Education) or the QAA it may not mean anything to you. Indeed, you might need to know a little bit about the <a href="http://en.wikipedia.org/wiki/Metatron">Metatron</a>. and some other Judeo/Christian <a href="http://answers.yahoo.com/question/index?qid=20080505050646AAPL0w0">theology</a> to follow this. Absolutely no offence is intended to anyone!<br/><br/>

<hr/>


There was a polite knock on the door. The Metatron looked up from his desk and bade the guest to enter. And so Michael, Field Marshal of the Heavenly Host entered the room, a troubled look on his normally serene face.<br/><br/>

“Peter says we have an unusual guest at the gates. He claims to be from something called the … QAA”, he said.<br/>
“The QAA?”<br/>
“Yes, some sort of Quality Assurance Agency.”<br/>
“And why are they here?”<br/>
“Apparently”, and here Michael paused for a moment, “they want to audit just how heavenly Heaven is...”<br/>
“What?”<br/>
“They say that there are some metrics which cast some doubt on the issue apparently.”<br/>
“But Heaven is the definition of perfection. How could anything be found wanting?”<br/><br/>

Michael looked wretched for a moment.<br/><br/>

“He's asking if this is so, how was it that we had... the Incident...?”<br/>
“What?”<br/>
“Well,... he's saying that if everything here is so great and perfect how come we have a … what were the words he used again? Oh yes.... a retention problem.”<br/>
“Retention?”<br/>
“Apparently yes, this is one of the metrics they use. They are apparently concerned that our “First Output” showed an “attrition rate” of a third”.<br/>
“Did you tell him about Free Will? That it's up to sentient creatures to choose their own path?”<br/>
“Yes”<br/>
“And?”<br/>
“He says everyone uses that excuse.”<br/><br/>

The Metatron paused while he considered this.<br/>
“OK, so what next?”<br/>
“Apparently they want to see the figures to see if this is a one time “blip”, they are asking for our “Academic Plan” for the next output.”<br/>
“Oh dear...”<br/>
“Is that a problem?”<br/><br/>

The Metatron thumbed through some documents on his desk.<br/><br/>

“Apparently we only intend to “retain” 144,000 of our second output”.<br/>
“Out of how many?”<br/>
“Well, sort of, um, 100 billion and counting so far”.<br/>
“Isn't that an attrition rate of over 99.999%.”<br/>
“Yes,... do you think that will present a problem?”<br/><br/>

The two angels considered for a moment, after a while, the Metatron cleared his throat again.<br/><br/>

“Do you think we could classify purgatory as an exit award?”<br/></div>
    </content>
    <updated>2010-12-15T11:27:39Z</updated>
    <category term="random musings"/>
    <category term="he"/>
    <category term="story"/>
    <author>
      <name>Colin Turner</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.piglets.org/serendipity/</id>
      <link href="http://www.piglets.org/serendipity/" rel="alternate" type="text/html"/>
      <link href="http://www.piglets.org/serendipity/index.php?/feeds/" rel="self" type="application/rss+xml"/>
      <subtitle>Maths, Software, Hardware, Martial Arts and more</subtitle>
      <title>Proving the Obviously Untrue</title>
      <updated>2012-02-04T16:17:09Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:pgregg.com,2010:/blog//2.343</id>
    <link href="http://pgregg.com/blog/2010/12/stage-2-httpbl-with-apache2-mod-perl.html" rel="alternate" type="text/html"/>
    <title>Stage 2: http:BL with Apache2 mod_perl</title>
    <summary>After my earlier post Referrer and Comment spammers are a PITA I came up with two mod_perl plugins to Apache and an "apache level" firewall.The reason for the apache-level firewall is two-fold.&amp;nbsp; There is no direct way for the Apache user to manipulate an iptables chain (as it doesn't run as root), and second; I was not happy with suid root access or other forms of message passing to a daemon which would manipulate the firewall for me.Architecture is thus, in httpd.conf place the following two lines:PerlPreConnectionHandler PGREGG::httpBLBlockPerlLogHandler PGREGG::httpBLLogThe first tells apache to run the handler in my httpBLBlock.pm module...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml">After my earlier post <a href="http://pgregg.com/blog/2010/11/referrer-and-comment-spammers-are-a-pita.html">Referrer and Comment spammers are a PITA</a> I came up with two mod_perl plugins to Apache and an "apache level" firewall.<br/><br/>The reason for the apache-level firewall is two-fold.  There is no direct way for the Apache user to manipulate an iptables chain (as it doesn't run as root), and second; I was not happy with suid root access or other forms of message passing to a daemon which would manipulate the firewall for me.<br/><br/>Architecture is thus, in httpd.conf place the following two lines:<br/><blockquote>PerlPreConnectionHandler PGREGG::httpBLBlock<br/>PerlLogHandler PGREGG::httpBLLog<br/></blockquote>The first tells apache to run the handler in my httpBLBlock.pm module when a connection is received (before the request has been sent by the client).  In this handler, I am simply looking for a filename matching that IP in a directory that is writable by the apache user.  The contents of the file are a SCORE:httpBL_answer:[LIST].  Based on this, the module checks the mtime of the filename is in the last SCORE days, then the firewall is in effect. If so, we simply tell apache to drop the connection.  If the file has expired, we delete the file.<br/><br/>The second line is more interesting, and what creates the firewall filenames. In order to not impede the general speed of request handling, processing is performed in the Logging section of the Apache process. Our module is called by apache after the response has been sent, but before the access_log entry has been written.  In our module we perform the <a href="http://www.projecthoneypot.org/httpbl_api.php">http:BL</a> API call and compute the above SCORE based upon the Threat* level and Age* of the API response. (* both Threat and Age are octets in the DNS lookup).  We merely discount the Threat down to zero based on the Age (0-255) where an entry 255 days old reduces the SCORE to zero.<br/>If the SCORE is larger than our trigger level (3) then we create the firewall filename, log the entry in our own httpbl.log and return Apache2::Const::FORBIDDEN.  This causes Apache to not log the entry in the normal access_log.  Otherwise, if all is ok, we return Apache2::Const::OK and Apache logs the hit as normal.<br/><br/>I have a bit of code tidy up, restructure the config/firewall directory and pull some common code out to a shared module before I can release to the world.<br/><br/>An interesting side effect to publishing the last story out through <a href="http://www.planet-php.net/">Planet PHP</a> and other news sources <i>along with the Project Honey Pot image</i> is that when browsers viewed those sources, they all asked for the image off my server. In several cases, these were known spammer, Comment spammer, and other abusers. My server then created the firewall entry blocking them before they were able to follow the links back to my server.<br/> <br/>I have been reading up more on <a href="http://perl.apache.org/docs/2.0/api/Apache2/Filter.html">Apache Bucket Brigades</a> in an attempt to allow the firewall filter to be placed immediately after the request has been received and allow a custom response to the browser. This may help an otherwise unsuspecting user if their machine had been trojaned. I don't mind admitting I'm thoroughly confused right now :)<br/><br/></div>
    </content>
    <updated>2010-12-02T12:31:11Z</updated>
    <published>2010-12-02T11:19:45Z</published>
    <category scheme="http://www.sixapart.com/ns/types#category" term="PHP"/>
    <category scheme="http://www.sixapart.com/ns/types#category" term="Perl"/>
    <category label="apache" scheme="http://www.sixapart.com/ns/types#tag" term="apache"/>
    <category label="firewall" scheme="http://www.sixapart.com/ns/types#tag" term="firewall"/>
    <category label="mod_perl" scheme="http://www.sixapart.com/ns/types#tag" term="mod_perl"/>
    <category label="perl" scheme="http://www.sixapart.com/ns/types#tag" term="perl"/>
    <category label="php" scheme="http://www.sixapart.com/ns/types#tag" term="php"/>
    <author>
      <name>Paul Gregg</name>
      <uri>http://pgregg.com</uri>
    </author>
    <source>
      <id>tag:pgregg.com,2009-02-01:/blog//2</id>
      <link href="http://pgregg.com/blog/" rel="alternate" type="text/html"/>
      <link href="http://pgregg.com/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <title>Plop in the Ocean</title>
      <updated>2011-08-25T23:02:50Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:pgregg.com,2010:/blog//2.342</id>
    <link href="http://pgregg.com/blog/2010/11/referrer-and-comment-spammers-are-a-pita.html" rel="alternate" type="text/html"/>
    <title>Referrer and Comment spammers are a PITA.</title>
    <summary>This shouldn't be news to anyone - but Referrer and Comment spammers are a real pain in the a*se.&amp;nbsp; Polluting my web logs and making any meaningful log analysis problematic.So, I now have an itch to scratch and I'm going to do something about it. I would encourage you, the reader, to do something about it too.Firstly, get yourself over to Project Honey Pot and read up on the project.&amp;nbsp; If you can, set up a Honey Pot or two yourself. Also be sure to read about the http:BL - this works along similar lines to the DNS blacklists used...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml">This shouldn't be news to anyone - but Referrer and Comment spammers are a real pain in the a*se.  Polluting my web logs and making any meaningful log analysis problematic.<br/><br/>So, I now have an itch to scratch and I'm going to do something about it. I would encourage you, the reader, to do something about it too.<br/><br/>Firstly, get yourself over to <a href="http://www.projecthoneypot.org/?rf=73568">Project Honey Pot</a> and read up on the project.  If you can, set up a Honey Pot or two yourself. Also be sure to read about the <a href="http://www.projecthoneypot.org/faq.php#g">http:BL</a> - this works along similar lines to the DNS blacklists used for Email spammers.<br/><br/>Next, I'm going to write a general Apache mod_perl module which will provide integration (lookup) to the http:BL and allow the user to "action"* the abusers.  Minimally, it will prevent the normal apache log files from being polluted by diverting the log entries to a httpbl logfile.<br/><br/>* "action" - To provide flexibility, I'm thinking of running an external script with the IP of the abuser.  The script can then perform any action you wish. The one I'm going for is an iptables firewall block.<br/><br/>Comments and suggestions welcome.<br/><br/>Project Honey Pot has implementations for several languages, including <a href="http://www.php.net/">PHP</a> and <a href="http://www.perl.org/">Perl</a> (the languages that mean most to me).  There may be an implementation for your <a href="http://www.projecthoneypot.org/httpbl_implementations.php">Web application </a> so you might not be interested in what I'm doing at all :)<br/><br/><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="projhoneypot_banner.jpg" class="mt-image-none" height="60" src="http://pgregg.com/blog/images/projhoneypot_banner.jpg" style="" width="468"/></span><br/><br/><br/><div><br/></div></div>
    </content>
    <updated>2010-11-28T23:45:53Z</updated>
    <published>2010-11-28T23:18:54Z</published>
    <category scheme="http://www.sixapart.com/ns/types#category" term="PHP"/>
    <category scheme="http://www.sixapart.com/ns/types#category" term="Perl"/>
    <category label="http:BL" scheme="http://www.sixapart.com/ns/types#tag" term="httpbl"/>
    <category label="spam" scheme="http://www.sixapart.com/ns/types#tag" term="spam"/>
    <author>
      <name>Paul Gregg</name>
      <uri>http://pgregg.com</uri>
    </author>
    <source>
      <id>tag:pgregg.com,2009-02-01:/blog//2</id>
      <link href="http://pgregg.com/blog/" rel="alternate" type="text/html"/>
      <link href="http://pgregg.com/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <title>Plop in the Ocean</title>
      <updated>2011-08-25T23:02:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.piglets.org/serendipity/archives/115-guid.html</id>
    <link href="http://www.piglets.org/serendipity/archives/115-HTC-Desire-versus-Apple-iPhone-4.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/3.0/" rel="license"/>
    <title>HTC Desire versus Apple iPhone 4</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I have both these phones. The HTC Desire is my personal phone, and runs Android (in this case Froyo, Android 2.2). I've been using Android for some time now, and regular readers will know I haven't been shy about commenting on its problems in the early releases. I also have, and have had for about the last month, an Apple iPhone 4, running iOS 4, for work. I've been promising some people a comparison.<br/><br/>

Disclosure: I'm not really an Apple fan. From the moment I started to play with some in QUB, I disliked the single button, the cotton wool interface that kept you from "harming yourself", or doing anything deep. But I know that has changed somewhat, the latest Apple computers, while still having that fluffy exterior now have a decent operating system underneath. So I'm going to try to be as fair as I can be.<br/><br/>

First a comment about the build quality. Both phones feel very similar both in the hand and in the pocket, the iPhone feels like it has a better build quality, but then you do expect solid hardware from Apple. Both phones have a button on the top to "wake" the device. Both have volume controls on the side. The iPhone has a nice feature of a slider button that mutes the device at one go; the Desire requires you to put the volume slider to zero (there are other ways, I know). The iPhone has one big button at the bottom, reminiscent of the one button mouse, and this is an area where the Desire wins hands down, with more physical buttons including the search, back button, the menu button, the home button and the optical trackball.<br/><br/>

A note on the intuitiveness of the interface. Apple claims that their interface is so intuitive you don't need any instructions. I must say I find the Android (Desire) interface more intuitive, and when you start that phone for the first time, it walks you through the basics. Very helpful for beginners.<br/><br/>

Anyway, time is short and some people are waiting on this review, so here's a potted comparison.<br/><br/>

<table border="1">
<tbody><tr><th>Feature</th><th>iPhone</th><th>Desire</th></tr>
<tr>
  <th>Basic Interface</th>
  <td>Uncluttered, but uninformative, no widgets, no live wall paper, no active folders. Dull, one size fits all. Switching between tasks and back again is inelegant. Notification of outstanding items is cleaner than standard Android.</td>
  <td>Very rich, combinations of apps on the desktop, widgets and all the things mentioned by their absence for the iPhone. Much more personalised. Task switching, particularly the back button, is much more elegant. HTC Sense is nicer.</td>
</tr>
<tr>
  <th>Phone</th>
  <td>Disastrous. Frequently won't connect calls when my Desire will. There seems to be something else at play here and I've reported it. Both phones are on the same network BTW. It's more awkward to change numbers on the fly and many other things. But it's very pretty.</td>
<td>Much improved in Android over the last few versions, the ease of dialling, changing numbers is much better. Finding contacts to dial is much easier and faster. Oh, did I mention it works?</td>
</tr>
<tr>
  <th>Voicemail</th>
  <td>Fancy. Asks me to set it up every single time I turn on the phone. Recently while travelling, I couldn't pick up a voicemail because of this for about an hour, by which time I was sitting with the caller.</td>
  <td>Not Fancy. Works all the time.</td>
</tr>
<tr>
  <th>Workplace</th>
  <td>The stock mail client is very pretty, and for example, links to appointments easily (but makes it hard to see if you are free). It has limited threading support which is really nice.</td>
  <td>The Android exchange support is, in my opinion, superior. It lacks threading, but does have follow up support, which I take to be vastly more important.
</td></tr>
<tr>
  <th>Apps</th>
  <td>Legendary, but there are relatively few free quality apps. For example, I struggled (still haven't) found a decent calculator (not the built in one) that is free. I find the market app rather clunky. Can't find any decent external exchange apps that work.</td>
  <td>Many problems with the Market were fixed in Froyo, the apps available seem to be broader in nature, and many more are free (my perception). Choice of several exchange apps, more fully featured than iOS.</td>
</tr>
<tr>
  <th>Software Keyboard</th>
  <td>Simple, elegant, but frustratingly difficult to type complex content, having to change layouts all the time.</td>
  <td>More cluttered, but actually as easy to use, better word prediction, less switching between layouts.</td>
</tr>
<tr>
  <th>Battery Life</th>
  <td>Initially winning hands down, but now hogging battery like no tomorrow, can't make it through an average day. I don't know what's causing the problem and so I'm just deleting apps all over the show.</td>
  <td>Vastly improved over other phones, still an issue, but actually appreciating it more after the iPhone</td>
</tr>
<tr>
  <th>Music</th>
  <td>Very pretty. iTunes integration. This is also the problem. A cheap player I bought for my Daughter allows me to just dump music on it and it works. What I had to go through to get Music onto the iPhone because of my unusual setup, well, it wasn't easy. Oh, and by the way. iTunes sucks. I mean really... disastrous, but with no alternative.</td>
  <td>Bulk device, you can just copy the music on and it works. Plays music just as well as the iPhone, in fact better because the former occaisionally and inexplicably stops. Wide variety of music players.</td>
</tr>
<tr>
  <th>Video</th>
  <td/>
  <td>Flash.</td>
</tr>
<tr>
  <th>Web</th>
  <td>Browser is probably prettier than Android's and allows more Tabs, seems to be slower though.</td>
  <td>Native Flash is an advantage here too.</td>
</tr>
<tr>
  <th>Notifications</th>
  <td>Really dreadful, and a well known problem in the Apple community. Poorly handled, and when they pop up, and you go to use the phone the notification is just gone.</td>
  <td>Elegant system that allows multiple notifications each of which take you straight to the issue. Persist, unobtrusively, until dismissed.</td>
</tr>
<tr>
  <th>Calendaring / Time</th>
  <td>Automatically setting the time to the wrong time since the clocks changed. Manually fixing this makes calender entries wrong. Setting it back to automatic makes the time wrong again.</td>
  <td>Google Calendar back end more open than Exchange. Exchange functionality built in too. Minor quibble, cannot change the colour of the Exchange calendar. Date / Time works. Minor quibble, on a non rooted device you can't use ntp for ultra correct times. Can't on the iPhone either as far as I know.</td>
</tr>
<tr>
  <th>Oddities</th>
  <td>My laptop supplies power out of USB while it's off. I use this to charge my Desire if need be. The iPhone requires the whole machine to be on for it to charge the phone.</td>
  <td>The power connector on my Desire seems to be a bit stretched, so if I'm not careful, it's not being charged. The Desire asks, when plugged in, whether it should charge, act as a disk, do internet tethering etc..</td>
</tr>
</tbody></table><br/><br/>

I'm honestly struggling to find an area where the iPhone wins hands down against its competitor. I can't think of one. I imagine if the iPhone is the only smart phone you are used to, it seems miraculous. It probably seemed that way against Android 1.1. But Android has grown up now, and it makes the iPhone look just stupid by comparison. I couldn't recommend an iPhone to anyone. Sorry.<br/><br/>

By the way, I fully accept that perhaps when I get used to the iPhone I might come to love it more, but I'll be surprised.</div>
    </content>
    <updated>2010-11-05T08:29:13Z</updated>
    <category term="hardware"/>
    <category term="review"/>
    <author>
      <name>Colin Turner</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.piglets.org/serendipity/</id>
      <link href="http://www.piglets.org/serendipity/" rel="alternate" type="text/html"/>
      <link href="http://www.piglets.org/serendipity/index.php?/feeds/" rel="self" type="application/rss+xml"/>
      <subtitle>Maths, Software, Hardware, Martial Arts and more</subtitle>
      <title>Proving the Obviously Untrue</title>
      <updated>2012-02-04T16:17:09Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://stuarthacking.com/wordpress/?p=285</id>
    <link href="http://stuarthacking.com/wordpress/?p=285" rel="alternate" type="text/html"/>
    <title>Wii Cheat Code to fix HD TV</title>
    <summary>One of the things I love about the Wii is the Virtual Console. It lets me play a lot of the games I grew up with without the need to sacrifice several power sockets, or swap out all the RF connectors when I want to switch console. So over the weekend I played a bit [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>One of the things I love about the Wii is the Virtual Console. It lets me play a lot of the games I grew up with without the need to sacrifice several power sockets, or swap out all the RF connectors when I want to switch console. So over the weekend I played a bit of Mario World and Zelda: Link to the Past. Awesome!</p>
<p>But then I downloaded Super Castlevania IV and tried to play it… “Mode not supported.”</p>
<p>“Uh, oh!” I guess it doesn’t like my TV, or perhaps the connector – even though I’m already using the Nintendo Composite cable. Surely the console should do the necessary work to send the correct signal?</p>
<p>I looked online and found a fix – but here’s the strange thing: The fix isn’t something like “Try using an old Co-ax cable,” or, “Change the Wii’s ratio to 4:3.” The <em>actual </em>fix is much better:</p>
<blockquote><p>Start the game and wait for the ‘Mode not supported’ message.<br/>
Press the Wii’s home button.<br/>
Open the game’s Operation Manual.<br/>
Press the following keys together: “Z-A-2″<br/>
A chime will sound if you entered it correctly.<br/>
The game will now display on your HDTV.</p></blockquote>
<p>…</p>
<p>Really?… I mean, that’s awesome! It worked, but this felt more like putting in a cheat code than solving a hardware issue. If you decide in the end that you don’t really like ‘being able to see the game’ you can go back in and disable the fix with the combo ‘Z-A-1′.</p></div>
    </content>
    <updated>2010-10-11T09:19:16Z</updated>
    <category term="Self"/>
    <category term="Console"/>
    <category term="fix"/>
    <category term="Gaming"/>
    <category term="HD"/>
    <category term="retro"/>
    <category term="TV"/>
    <category term="wii"/>
    <author>
      <name>smh</name>
    </author>
    <source>
      <id>http://stuarthacking.com/wordpress</id>
      <link href="http://stuarthacking.com/?feed=rss2" rel="self" type="application/atom+xml"/>
      <link href="http://stuarthacking.com/wordpress" rel="alternate" type="text/html"/>
      <title>Stuart Hacking</title>
      <updated>2011-07-04T22:35:33Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://stuarthacking.com/wordpress/?p=276</id>
    <link href="http://stuarthacking.com/wordpress/?p=276" rel="alternate" type="text/html"/>
    <title>Update</title>
    <summary>Today I read some really crufty code. The whole application is a mess of String conversions. This is because every class in the model only contains String members. Regardless of whether the data is a number, a boolean, a currency value or a date. *Everything* is a String. This makes it very hard to visually [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Today I read some really crufty code. The whole application is a mess of String conversions. This is because every class in the model only contains String members. Regardless of whether the data is a number, a boolean, a currency value or a date. *Everything* is a String. This makes it very hard to visually (or programmatically) parse what is happening in a piece of logical code because:</p>
<p>1) A lot of methods take Strings as Arguments.<br/>
2) The compiler can’t do any useful type checking. Everything is a String.<br/>
3) Things like dates and currencies can have multiple representations. Strings provide no abstraction.<br/>
4) Logic is shrouded in conversion and other housekeeping.</p>
<p>I don’t which moron had the bright idea of storing everything as a String. They’ve probably been promoted to principle engineer or technologist now and don’t have to deal with the stink they created a decade ago.</p>
<p>Of course, bad code exists. Sometimes it’s a kludge to get round a language limitation, or maybe it’s a speed hack.</p>
<p>This is just depressingly bad design. There was never a time when Java only supported Strings. I won’t even accept serialisation as an excuse because a) Java has been doing that for years and b) If it’s done manually then it should be done once, not peppered thoughout the business logic.</p>
<p>It feels as though someone read a bunch of Design Pattern books, rushed through an example implementation as quickly as possible, and released it as a polished framework.</p>
<p>And people just accept it like it’s no big deal. Worse, some people seem to consider it flexible design.</p></div>
    </content>
    <updated>2010-09-29T10:45:09Z</updated>
    <category term="Uncategorized"/>
    <category term="Rant"/>
    <category term="Software"/>
    <author>
      <name>smh</name>
    </author>
    <source>
      <id>http://stuarthacking.com/wordpress</id>
      <link href="http://stuarthacking.com/?feed=rss2" rel="self" type="application/atom+xml"/>
      <link href="http://stuarthacking.com/wordpress" rel="alternate" type="text/html"/>
      <title>Stuart Hacking</title>
      <updated>2011-07-04T22:35:33Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://stuarthacking.com/wordpress/?p=280</id>
    <link href="http://stuarthacking.com/wordpress/?p=280" rel="alternate" type="text/html"/>
    <title>Ideal Outlook Features</title>
    <summary>At a certain point on the Bureaucratic scale, you may start using Outlook for more than simply the exchange of messages: Tasks/Todo lists, Appointments/Calendar, Notes. Too bad Outlook isn’t very good at anything it does. Here are a couple of things I’d like to say Outlook provides to make life easier (I use Outlook 2003, [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>At a certain point on the Bureaucratic scale, you may start using Outlook for more than simply the exchange of messages: Tasks/Todo lists, Appointments/Calendar, Notes.</p>
<p>Too bad Outlook isn’t very good at anything it does.</p>
<p>Here are a couple of things I’d like to say Outlook provides to make life easier (I use Outlook 2003, not by choice):</p>
<ul>
<li>I flag messages and categorize them quite often. One would imagine that when a message  is flagged that it becomes a ToDo item and is added to the task list. If a flagged email has a follow up date, shouldn’t it appear in the calendar? I guess integration of different services was never a primary goal.</li>
<li>I’d like folders to be able to tell me the number of flagged emails. Currently they only show total or unread (but not both). I often use folders to store actionable bulk mail. It would be nice to see how many tasks I’ve woken up to.</li>
<li>When you flag email in a personal folder it does not show up un the ‘Follow Up’ search folder. I guess this is just a bug?</li>
</ul></div>
    </content>
    <updated>2010-09-07T10:59:53Z</updated>
    <category term="Self"/>
    <category term="email"/>
    <category term="integration"/>
    <category term="Rant"/>
    <category term="Software"/>
    <author>
      <name>smh</name>
    </author>
    <source>
      <id>http://stuarthacking.com/wordpress</id>
      <link href="http://stuarthacking.com/?feed=rss2" rel="self" type="application/atom+xml"/>
      <link href="http://stuarthacking.com/wordpress" rel="alternate" type="text/html"/>
      <title>Stuart Hacking</title>
      <updated>2011-07-04T22:35:33Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://stuarthacking.com/wordpress/?p=274</id>
    <link href="http://stuarthacking.com/wordpress/?p=274" rel="alternate" type="text/html"/>
    <title>Rest in peace, ClickWheel</title>
    <summary>Apple have unveiled the shiny new iPod Nano range and they are sexy! Half the size of the previous model and sporting the same screen technology as the touch devices. Wonderful! What I find surprising, though, is how many of my technically adept colleagues seem to be disgusted (or at least perturbed) at the disappearance [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p style="text-align: center;">Apple have unveiled the shiny new iPod Nano range and they are sexy! Half the size of the previous model and sporting the same screen technology as the touch devices. Wonderful!</p>
<p><a href="http://www.apple.com/uk/ipodnano/"><img alt="New iPod Nano" height="203" src="http://images.apple.com/euro/ipodnano/images/design_hero20100901.jpg" title="New iPod Nano" width="474"/></a></p>
<p>What I find surprising, though, is how many of my technically adept colleagues seem to be disgusted (or at least perturbed) at the disappearance of the ClickWheel.</p>
<p>Don’t get me wrong: The ClickWheel was a marvellous idea and worked really well… five years ago. It was a solution to the problem of providing a sleek touch based scrolling interface in the days before cheap multi-touch screens. This was also the time when the big iPods needed to fit a mechanical hard disk in the back – so there was this area on the face that needed to be filled with something eye-catching. Yes, the ClickWheel was great- I’ll continue to use one until my 30GB iPod Video decides to die.</p>
<p>But it’s 2010 now. We have solid state drives that can cram tons of information into a really tiny space. We have multi-touch interfaces that are just really beautiful and slick to use. Let’s enjoy the memories we shared with the ClickWheel as we lay it to rest and look forward to new innovations to come. Live in the now.</p></div>
    </content>
    <updated>2010-09-03T14:24:11Z</updated>
    <category term="Self"/>
    <category term="Apple"/>
    <category term="clickwheel"/>
    <category term="ipod"/>
    <category term="music"/>
    <category term="progress"/>
    <category term="screen"/>
    <category term="touch"/>
    <author>
      <name>smh</name>
    </author>
    <source>
      <id>http://stuarthacking.com/wordpress</id>
      <link href="http://stuarthacking.com/?feed=rss2" rel="self" type="application/atom+xml"/>
      <link href="http://stuarthacking.com/wordpress" rel="alternate" type="text/html"/>
      <title>Stuart Hacking</title>
      <updated>2011-07-04T22:35:33Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://stuarthacking.com/wordpress/?p=271</id>
    <link href="http://stuarthacking.com/wordpress/?p=271" rel="alternate" type="text/html"/>
    <title>Outlook not so good.</title>
    <summary>An important person in the company (all praise the company!) has just attempted to send me an updated security certificate by email. Oh, no, no, no, my friend! Surely you know that I’m running Micros~1 Outlook as my office mail client? You see: Outlook knows what’s good for you, and apparently, security certificates are not. [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>An important person in the company (all praise the company!) has just attempted to send me an updated security certificate by email.</p>
<p><em>Oh, no, no, no, my friend! Surely you know that I’m running Micros~1 Outlook as my office mail client?</em></p>
<p>You see: Outlook knows what’s good for you, and apparently, security certificates are not. Indeed, Outlook will not allow me to access this file, or even give me the option of “Don’t worry, I know what I’m doing.”</p>
<p>[Here's a fun fact: The certificate was *sent* *using* *Outlook*. So, Outlook will happily send files that it deems to be unsafe, but the poor sap on the other end won't get to use it.]</p>
<p>Now, I tend to place a degree of value on others’ time. So it pains me to have to reply to someone saying “Hi, Outlook won’t let me open your attachment. Can you jump through hoops X, Y, Z to get it to me?”</p>
<p>Outlook used to simply be a poor email client. Now it has become actively counterproductive.</p></div>
    </content>
    <updated>2010-08-16T12:25:00Z</updated>
    <category term="Self"/>
    <category term="email"/>
    <category term="Rant"/>
    <category term="Software"/>
    <author>
      <name>smh</name>
    </author>
    <source>
      <id>http://stuarthacking.com/wordpress</id>
      <link href="http://stuarthacking.com/?feed=rss2" rel="self" type="application/atom+xml"/>
      <link href="http://stuarthacking.com/wordpress" rel="alternate" type="text/html"/>
      <title>Stuart Hacking</title>
      <updated>2011-07-04T22:35:33Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://redbrain.co.uk/?p=614</id>
    <link href="http://redbrain.co.uk/index.php/update/gccpy-call-for-help/" rel="alternate" type="text/html"/>
    <title>Gccpy – Call for help!</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Hey guys, so its been a while I’ve got a lot of stuff done and many core things working in Gccpy now more links on how to get up and running with it soon.</p>
<p>I am asking for help from you or from your friend.. anyone, all you need is:</p>
<p class="wp-caption-text">all minezz</p>

 5 minutes
text editor
basic knowledge [...]</div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Hey guys, so its been a while I’ve got a lot of stuff done and many core things working in Gccpy now more links on how to get up and running with it soon.</p>
<p>I am asking for help from you or from your friend.. anyone, all you need is:</p>
<div class="wp-caption alignright" style="width: 284px;"><a href="http://icanhascheezburger.files.wordpress.com/2010/08/10f9d781-d2d8-4854-a036-83a0b14fdc88.jpg"><img alt="all minezz" height="205" src="http://icanhascheezburger.files.wordpress.com/2010/08/10f9d781-d2d8-4854-a036-83a0b14fdc88.jpg" title="all minezz" width="274"/></a><p class="wp-caption-text">all minezz</p></div>
<ul>
<li> 5 minutes</li>
<li>text editor</li>
<li>basic knowledge in python</li>
</ul>
<p>I am trying to build up a test suite for this compiler and i would love to have it all built from scratch for this project rather than taking something from <a href="http://www.python.org/">CPython</a> where i think licenses will clash and i want to avoid anything like that. So what does this all mean?</p>
<p>I need people to write up their favourite python snippets, but there are requirements: what you can do is use <span style="text-decoration: underline;">anything EXCEPT any imports</span>. Imports are something which will be handled soon, and isn’t that important  yet for the core language implementation.</p>
<p>So I have set-up this mailing list and i would love it if as many of you would <a href="http://crules.org/cgi-bin/mailman/listinfo/gccpy">join</a>: <a href="http://crules.org/cgi-bin/mailman/listinfo/gccpy">http://crules.org/cgi-bin/mailman/listinfo/gccpy</a></p>
<p>So join the mailing list or simply post a message if you prefer and we will try to remember to cc you with in. One thing i would ask is only submit a small test case if you are ok with this being pretty much un-licensed because GNU projects require copy approval for you to submit code, but we can negate this by going though me just submit this to me under a <a href="http://sam.zoy.org/wtfpl/">http://sam.zoy.org/wtfpl/</a> (Whatever you want to do license) . This just saves any pain of licensing, you will of course still be attributed! Leave your name and an email within the test-case file, since really that’s all we care about as hackers anyway we don’t care about licensing so long as we have some attribution. To give you a flavour of how simple these test cases can be lets look at one i made earlier:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1"># DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#  Version 2, December 2004</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># Copyright (C) 2004 Sam Hocevar</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co1">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># Everyone is permitted to copy and distribute verbatim or modified</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># copies of this license document, and changing it is allowed as long</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># as the name is changed.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co1"># DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># 0. You just DO WHAT THE FUCK YOU WANT TO.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#</span></div>
</li>
<li class="li2">
<div class="de2"> </div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># @Author redbrain – redbrain@gcc.gnu.org</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># @Date 13/8/10</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># @Expected Result: &lt;5&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#   -Tested against Python Version &lt;2.6.5&gt;</span></div>
</li>
<li class="li2">
<div class="de2"> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">def</span> foo <span class="br0">(</span> x , y <span class="br0">)</span>:</div>
</li>
<li class="li1">
<div class="de1">    <span class="kw1">return</span> x+y</div>
</li>
<li class="li1">
<div class="de1"> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span> foo<span class="br0">(</span> <span class="nu0">2</span>,<span class="nu0">3</span> <span class="br0">)</span></div>
</li>
</ol>
</div>
<p>Things for testing the expression syntax handling or calling functions, parameter passing like keywords parameters and positional parameters, class’s anything! Even if it is as small as one expression and a print for the result it is more than enough for a test case! The reason I want as many people involved is so i can see what features/trends matter most important to python users and then I can focus on making them extra awesome. And if it only takes you 5 minutes to write a small piece of python code and send an email while you get your name within the Gcc sources the more the better:).</p>
<p>When you create a test case simply send an email to the mailing list with the subject “Test Case &lt;name&gt;”. You can submit as many as you like the more the better  and the funnier the better…. <strong>* looks at <a href="http://identi.ca/jezra">Jezra</a> <img alt=":)" class="wp-smiley" src="http://redbrain.co.uk/wp-includes/images/smilies/icon_smile.gif"/> </strong>! <a href="http://identi.ca/yamatt">@yamatt </a>i am reusing that python while loop you sent me ages ago to freak out my processor! <img alt=";)" class="wp-smiley" src="http://redbrain.co.uk/wp-includes/images/smilies/icon_wink.gif"/>  Thanks so much every one, watch this space in the next week for links on how to use and see your test case running in Gccpy, so you can compile your python code to an executable!</p>
<p>So remember the mailing list is over <a href="http://crules.org/cgi-bin/mailman/listinfo/gccpy">here</a>. <a href="http://crules.org/cgi-bin/mailman/listinfo/gccpy">http://crules.org/cgi-bin/mailman/listinfo/gccpy</a></p></div>
    </content>
    <updated>2010-08-13T02:38:01Z</updated>
    <category term="Compilers"/>
    <category term="Update!"/>
    <category term="compiler"/>
    <category term="gccpy"/>
    <category term="linux"/>
    <category term="Programming"/>
    <author>
      <name>redbrain</name>
    </author>
    <source>
      <id>http://redbrain.co.uk</id>
      <link href="http://redbrain.co.uk/index.php/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://redbrain.co.uk" rel="alternate" type="text/html"/>
      <subtitle>Frustrated Software Developer</subtitle>
      <title>RedBrain @ $HOME : ~ $</title>
      <updated>2011-11-01T14:17:07Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:pgregg.com,2010:/blog//2.341</id>
    <link href="http://pgregg.com/blog/2010/08/vodafone-uk-htc-desire-android-22-froyo-fail.html" rel="alternate" type="text/html"/>
    <title>Vodafone UK + HTC Desire + Android 2.2 FroYo = Fail.</title>
    <summary>Well, it looks like Vodafone UK royally messed up the timing of the HTC Desire OTA Update yesterday.&amp;nbsp; While most owners were eagerly expecting the announced Android 2.2 (FroYo) update that HTC have been pushing out, Vodafone decided to push out a 2.1-update1 which only provides Vodafone branding, apps, a few bugs, and even a couple of "adult" related bookmarks to everyone - and leaving them on Android 2.1 (Eclair).Needless to say - Users are not happy at all. *Vodafone appears to have moved the thread here. [2010/08/06] Moved again to here (is Vodafone trying to hide the complaints?).In work,...</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml">Well, it looks like Vodafone UK royally messed up the timing of the HTC Desire OTA Update yesterday.  While most owners were eagerly expecting the announced Android 2.2 (FroYo) update that HTC have been pushing out, Vodafone decided to push out a 2.1-update1 which only provides Vodafone branding, apps, a few bugs, and even a couple of "adult" related bookmarks to everyone - and leaving them on Android 2.1 (Eclair).<br/><br/>Needless to say - Users are <strike><a href="http://forum.vodafone.co.uk/topic/70196-htc-desire-new-firmware-update-but-not-22/">not happy</a></strike> at all. *Vodafone appears to have moved the thread <strike><a href="http://forum.vodafone.co.uk/topic/70507-htc-desire-new-firmware-but-not-22/">here</a></strike>. [2010/08/06] Moved again to <a href="http://forum.vodafone.co.uk/topic/70551-htc-desire-new-firmware-but-not-22/">here</a> (is Vodafone trying to hide the complaints?).<br/><br/>In work, we (coworkers and I) now have a total of 8 HTC Desires (out of 16 people) - even two iPhone users have converted! A few have been espousing the wonders of FroYo on their phone (some had rooted, and did it themselves, others had bought unbranded phones and got the stock HTC FroYo upgrade). I was jealous(ish) and wanted it myself.<br/><br/>Given Vodafone's actions yesterday, it was likely that the FroYo update from Vodafone was minimum several weeks away, if not 3 months (as was intimated on the Vodafone forum - end of October) - it was also noted that the Vodafone FroYo update would include the Vodafone 360 branding and software.<br/><br/>Thus, last night it was time to embark on the adventure of flashing my HTC Desire to a stock image direct from HTC. I reasoned that my goal should be to flash HTC's Android 2.1 (Eclair) image to the phone, and once there, the normal software update process should take me to 2.2.<br/><br/>And so it began...<br/><br/>I knew that I needed to create a gold card because the Vodafone image doesn't let you install non-Vodafone images. This I discovered as I tried to simply apply a stock 2.2 download and using boot recovery update.zip - all attempts met with a complaint of a "Fingerprint error".<br/><br/>I ended up at this page:<br/>  <a href="http://forum.xda-developers.com/showthread.php?t=696189">[TUT]Complete upgrading guide(root, unroot, flashing ROM &amp; updates)</a><br/><br/>and followed <a href="http://forum.xda-developers.com/showpost.php?p=6710085&amp;postcount=3">Post #3</a> which details a) How to make a Gold Card* . Ignore the rest of #3<br/>and then <a href="http://forum.xda-developers.com/showpost.php?p=6710092&amp;postcount=4">Post #4</a> - the "unrooting" guide.<br/><br/>You then need to find a download of the correct stock HTC Bravo WWE image ROM - I chose the second WWE ROM from this link (140MB download):<br/>  <a href="http://forum.xda-developers.com/showthread.php?t=695667">[ROM] Official HTC Desire RUU ROMS and OTA Update URLs</a><br/>  RUU_Bravo_HTC_WWE_1.21.405.2_Radio_32.36.00.28U_4.06.00.02_2_release_126984_signed.exe<br/><br/>Proceed through the rest of Post #4 "How to Flash ROM" with the Goldcard inside your Desire, and plugged into your PC.<br/><br/>The phone will take 5-10 minutes to complete upgrading (or downgrading) to HTC Stock 2.1 image. When it reboots you will have to go through all the original setup sequences you did when you first unboxed your phone.<br/><br/>You can then perform a Software Update Check and you should find you have a Android 2.2 FroYo update (90Mb) waiting for you.  Proceed and let it do its thing.<br/><br/>Once done, welcome to FroYo.<br/><br/>All future updates will come direct from HTC - not from Vodafone, and you won't ever have the Vodafone 360 branding rubbish foisted upon you.<br/><br/><br/>* My GoldCard creation had a bit of a hiccup, in that it turns out that the 4GB Samsung card which came with my Desire does not work as a Goldcard despite formatting and following the instructions to the letter.  Trying an old 1GB Sandisk I had resulted in a good goldcard.<br/><br/>Aside from the goldcard hiccup - this all went surprisingly smoothly and painlessly.<br/><br/>Good luck.<br/><br/>Disclaimer: If you try any of the above - it is all your responsibility. I take no responsibility should you brick or damage your phone.<br/><br/><div><br/></div></div>
    </content>
    <updated>2010-08-06T12:40:32Z</updated>
    <published>2010-08-04T17:59:03Z</published>
    <category scheme="http://www.sixapart.com/ns/types#category" term="General"/>
    <category label="android" scheme="http://www.sixapart.com/ns/types#tag" term="android"/>
    <category label="froyo" scheme="http://www.sixapart.com/ns/types#tag" term="froyo"/>
    <category label="htc desire" scheme="http://www.sixapart.com/ns/types#tag" term="htcdesire"/>
    <category label="vodafone" scheme="http://www.sixapart.com/ns/types#tag" term="vodafone"/>
    <author>
      <name>Paul Gregg</name>
      <uri>http://pgregg.com</uri>
    </author>
    <source>
      <id>tag:pgregg.com,2009-02-01:/blog//2</id>
      <link href="http://pgregg.com/blog/" rel="alternate" type="text/html"/>
      <link href="http://pgregg.com/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <title>Plop in the Ocean</title>
      <updated>2011-08-25T23:02:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.piglets.org/serendipity/archives/113-guid.html</id>
    <link href="http://www.piglets.org/serendipity/archives/113-Fudoshin.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/3.0/" rel="license"/>
    <title>Fudoshin</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I wrote this essay almost eight years ago. I'm just republishing it in a web format.<br/><br/>

In many eastern religions, and indeed their occidental counterparts, great emphasis is placed in reaching states of personal enlightenment or self-improvement. In Zen, this is often approached from several angles (See D.T. Suzuki [2]),
but perhaps the most well known is that of zazen meditation. In this practice the mind is encouraged to have no attachments, it may move freely, neither forced to consider thoughts, not forced to leave them.<br/><br/>

This state of mind could be described by the word mushin meaning literally “no mind”. In this state the mind is truly focused on the present moment, not anticipating the future and not pondering on the past. The martial arts of Japan have long been looked upon as an alternative, or perhaps at least parallel, means of progressing to this goal. In Budo this can be thought of as a form of meditation in motion, always acting in the present.<br/><br/>

This prevents fearful anticipation of the future and also misinterpreting such
future events. Although the idea of a budo is that of a way without destination, this goal of mushin should be constantly striven for. Perhaps an intermediary goal is that of fudoshin. This means "immovable mind" although this translation fails to carry the positive implications in this word. For me this means that the mind is immovable by outside influence, or to put it another way the
mind can only be “moved” when one desires it.

<blockquote>

As the beginner knows nothing about either his body posture
       or the positioning of his sword, neither does his mind stop any-
       where within him. If a man striked at him with the sword, he
       simply meets the attack without anything in mind.
           As he studies various things and is taught the diverse ways of
       how to take a stance, the manner of grasping his sword and how
       where to put his mind, his mind stops in many places. Now if he
       wants to strike at an opponent, he is extraordinarily discomforted.
       Later, as days pass and time piles up, in accordance with his
       practice, neither the postures of his body nor the ways of grasping
       the sword are weighed in his mind. His mind simply becomes
       as it was in the beginning when he knew nothing and had yet to
       be taught anything at all.
</blockquote> extract from the Unfettered Mind, Takuan Soho<br/><br/>


So here in "The Mysterious Record of Immovable Wisdom", a letter written by the famous monk
Takuan Soho to the equally famous swordsman Yagyu Munenori, Soho advises that a person with no martial experience
may be better off than those who embark upon such a path. The person
with no such training at least behaves naturally, even if possibly foolishly.
Their mind may be affected by many outside influences, but at least they
themselves do not cause it to "freeze".<br/><br/>

When one begins training in a martial way, one often begins by learning basic skills and body movements and then, of course, waza. When attempting to refine performance of a kata or waza, one’s mind may focus on the future - in the hope of attaining the perfect form - or it may focus on the past, in the recollections of past successes or failures.<br/><br/>

Unfortunately these moments of locked focus, the states of "fushin" or frozen mind, however brief cause the body which is forever locked in the present to be deprived of command. In severe cases then, fushin is manifested by the locking in position of the whole body.<br/><br/>

How then can we move towards this state of fudoshin, and thus ultimately to mushin? At this stage in my journey it seems that the following are true, whether during the execution of a kata, waza or a more free action.

<ul>
<li>One most resist the urge to anticipate the future except by observing
     the present. It follows that ultimately waza should not be "selected"
     but eventually will arise without conscious thought (mushin).</li>
<li>One must avoid lingering in the past. Recollections of past encounters
     and their success or failure are false as the past moment will never truly
     match the present.</li>
<li>One should not let your eyes and mind become locked on the opponents
     eyes, their weapon, fist or any other point. Gaze should take it the
     whole person as well and the mind should observe all things.

<blockquote>
              Some teachers say that you should always stare at the
           enemy’s weapons, or at his eyes, or at his feet. This is not
           a good idea because it fixes your spirit in place and is easily
           read by an experienced fighter.
</blockquote> - extract from the Book of
           Five Rings - Minamoto Musashi<br/><br/></li>

<li>Forced aggression may cause the mind to focus too greatly on the future
     desire for victory and thus ironically deprive the body of the mind in
     the present to help obtain it. One should not delay the cut, or throw,
     but neither should one rush it in too great a desire to bring the future
     more quickly. Indeed it seems from the books "Zen and the art of
     archery" (see [1]) and the "Unfettered mind" (see [4]) that we wish to
     obtain a state in which the cut happens because it is natural or the
     throw happens because nothing else can happen.</li>
<li>Such considerations occur outside the dojo when considering our progress
     along the Way or in other matters. Of course we must always strive to
     improve and progress, but if we are too desperate we risk placing our
     mind in the future and not the here and now. Similarly we must have
     the patience and some tolerance about our state of current imperfection. Focusing too much on the failures of the past denies us the chance
     to observe ourselves in the present to make us better in the future.</li>
</ul><br/><br/>

   These comments are of course, immensely subjective. However these
thoughts map my current way of thinking a short way into a long journey
and at this time it seems the best way for me to continue to refine myself.<br/><br/>
                                  
<strong>References</strong><br/><br/>
[1] Herrigel, Eugen: Zen in the Art of Archery, Arkana 1988.<br/>
[2] Suzuki, D.T.: Zen Buddhism: Selected Writings of D.T. Suzuki, Double-
    day 1996.<br/>
[3] Musashi, Minamoto: The Martial Artist’s Book of Five Rings, (trans.
    Stephen F. Kaufman), Tuttle 1994.<br/>
[4] Soho, Takuan: The Unfettered Mind, (trans. William Scott Wilson) Kodansha 1995.<br/></div>
    </content>
    <updated>2010-07-28T10:22:00Z</updated>
    <category term="martial arts"/>
    <category term="philosophy"/>
    <author>
      <name>Colin Turner</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.piglets.org/serendipity/</id>
      <link href="http://www.piglets.org/serendipity/" rel="alternate" type="text/html"/>
      <link href="http://www.piglets.org/serendipity/index.php?/feeds/" rel="self" type="application/rss+xml"/>
      <subtitle>Maths, Software, Hardware, Martial Arts and more</subtitle>
      <title>Proving the Obviously Untrue</title>
      <updated>2011-10-30T20:17:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.piglets.org/serendipity/archives/114-guid.html</id>
    <link href="http://www.piglets.org/serendipity/archives/114-Cthulhu-and-Cosmic-Terror.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/3.0/" rel="license"/>
    <title>Cthulhu and Cosmic Terror</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">For many years now, I've been aware of the <a href="http://en.wikipedia.org/wiki/Cthulhu_Mythos">Cthulhu Mythos</a>, since it infuses lots of popular culture. Indeed, Dread Cthulhu was recently <a href="http://chainsawsuit.com/2010/06/09/the-truth-behind-the-oil-spill/">blamed for the horizon oil spill</a>, a theory that I rather enjoyed.<br/><br/>

Despite this, I hadn't actually read any of <a href="http://en.wikipedia.org/wiki/H._P._Lovecraft">H.P. Lovecraft's</a> books directly. Last week and this, I decided to try out an ebook reader on my phone, specifically the rather excellent <a href="http://www.aldiko.com/">Aldiko</a> for android. It's a nice application. I downloaded two of Lovecraft's books; "The Call of Cthulhu" and the "At the Mountains of Madness".<br/><br/>

Lovecraft has been, mostly after his death, immensely influential, with references to his work appearing in many modern authors' work (e.g. Stephen King, Neil Gaiman). He is famous for the idea of "Cosmic Horror". The idea that the world is not truly rational, and understandable, but nightmarish, chaotic and hostile or at best indifferent to human nature.<br/><br/>

I found <a href="http://manybooks.net/titles/lovecrafthother06cthulhu.html">"The Call of Cthulhu"</a> rather unpleasant to read in parts, not because of the supposed horror,  but because of the unpleasant racism implicit and explicit within the book. It does need to be remembered that everyone is a product of their times however, and I find the implicit racism difficult to accept in the works of J.R.R. Tolkien too. But the book was interesting.<br/><br/>

The second book, <a href="http://manybooks.net/titles/lovecrafthother06At_the_Mountains_of_Madness.html">"At the Mountains of Madness"</a> was more mature and less objectionable.<br/><br/>

But I couldn't entirely share the horror of the protagonists. Some of their discoveries were genuinely horrifying (usually acts committed by human beings) but much of the rest would be wondrous. They are horrified by the discovery of non-Euclidean geometry in architecture. Non Euclidean geometry does not frighten me, and indeed Lovecraft understood it wasn't the true nature of the universe. But seeing clearly non Euclidean architecture in a "normal" setting is wondrous, terrifying perhaps briefly, but not horrific. Much of the horror just comes from the primitive frame of reference, either scientific, or religious or both, of the protagonists.<br/><br/>

And this is the bit I really can't understand, since Lovecraft was a failed astronomer, so he would have known that the universe is, to the best of our knowledge, indifferent to our existence, and that the laws of physics themselves could see our annihilation in so many ways. Indeed, apart from a (probably literal) <a href="http://en.wikipedia.org/wiki/Deus_ex_machina">Deus Ex Machina</a> solution, every scientist knows that the ultimate future of humanity is doomed... Is that "Cosmic Horror"?<br/><br/>

By the way, since the world is Sherlock Holmes mad at the moment, I recommend <a href="http://www.neilgaiman.com/mediafiles/exclusive/shortstories/emerald.pdf">A Study In Emerald</a> (PDF), a Hugo Award winning short story that is an interesting cross over of the Sherlock Holmes and Cthulhu mythos written by Neil Gaiman.</div>
    </content>
    <updated>2010-07-27T18:36:08Z</updated>
    <category term="review"/>
    <category term="cthulhu"/>
    <category term="lovecraft"/>
    <category term="random musings"/>
    <author>
      <name>Colin Turner</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.piglets.org/serendipity/</id>
      <link href="http://www.piglets.org/serendipity/" rel="alternate" type="text/html"/>
      <link href="http://www.piglets.org/serendipity/index.php?/feeds/" rel="self" type="application/rss+xml"/>
      <subtitle>Maths, Software, Hardware, Martial Arts and more</subtitle>
      <title>Proving the Obviously Untrue</title>
      <updated>2011-08-04T20:17:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://stuarthacking.com/wordpress/?p=267</id>
    <link href="http://stuarthacking.com/wordpress/?p=267" rel="alternate" type="text/html"/>
    <title>SWT “Event model”</title>
    <summary>Have a look at this documentation for a VerifyEvent in SWT: void VerifyListener() {…}.verifyText(VerifyEvent e) Sent when the text is about to be modified. A verify event occurs after the user has done something to modify the text (typically typed a key), but before the text is modified. The doit field in the verify event [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Have a look at this documentation for a VerifyEvent in SWT:</p>
<p><em>void VerifyListener() {…}.verifyText(VerifyEvent e)<br/>
Sent when the text is about to be modified. </em></p>
<p><em>A verify event occurs after the user has done something to modify the text (typically typed a key), but before the text is modified. The doit field in the verify event indicates whether or not to modify the text.</em></p>
<p>Wait, what?</p>
<p>What we basically want is a simple predicate function that returns <em>true </em>if the Contents of a Text Field are still valid after a change. What SWT gives us is this awkward event model where we have to modify the event that has just been generated. (In my opinion, events should be immutable, since they represent a historical occurence.) Next SWT will have a peek in the event to see how to proceed.</p>
<p>SWT is full of weird <a href="http://catb.org/jargon/html/B/bagbiter.html">bagbiters</a> like this.</p></div>
    </content>
    <updated>2010-07-06T08:59:04Z</updated>
    <category term="Programming"/>
    <category term="Rant"/>
    <author>
      <name>smh</name>
    </author>
    <source>
      <id>http://stuarthacking.com/wordpress</id>
      <link href="http://stuarthacking.com/?feed=rss2" rel="self" type="application/atom+xml"/>
      <link href="http://stuarthacking.com/wordpress" rel="alternate" type="text/html"/>
      <title>Stuart Hacking</title>
      <updated>2011-07-04T22:35:33Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://redbrain.co.uk/?p=602</id>
    <link href="http://redbrain.co.uk/index.php/tutorials/compiling-a-compiler-gcc/" rel="alternate" type="text/html"/>
    <title>Compiling a Compiler – GCC</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p/>
<p style="margin-bottom: 0cm;">From all the work i have been doing on compilers recently i have started to realise a lot of people won’t know how to compile up GCC or even how that works. Since how are you meant to compile a compiler written in a language that itself implements. Well the technique is called [...]</p></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p/>
<p style="margin-bottom: 0cm;">From all the work i have been doing on compilers recently i have started to realise a lot of people won’t know how to compile up GCC or even how that works. Since how are you meant to compile a compiler written in a language that itself implements. Well the technique is called <a href="http://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29">bootstrapping</a>. But this is something people try and think its more complicated that it usually is. To understand how it works we have to think how was <a href="http://gcc.gnu.org/">GCC</a> built; well its as simple as it NEED’s a C compiler <img alt=":-)" class="wp-smiley" src="http://redbrain.co.uk/wp-includes/images/smilies/icon_smile.gif"/> . But how did that first c-compiler get there in the first place, well it goes back years of people made the first c compilers in Assembler and then it bootstrapped up!</p>
<p style="margin-bottom: 0cm;">
</p><p style="margin-bottom: 0cm;">Within <a href="http://gcc.gnu.org/">GCC </a>when you start the build we bootstrap 3 times, which means we build it 3 times but why you ask? The generated code for the first compiler run, is by the host compile so the compiler itself cannot be trusted, then the 2<sup>nd</sup> is done with the newly built compiler and the 3<sup>rd</sup> for good measure to guarantee we’ve compiled with the new compiler and <a href="http://gcc.gnu.org/">GCC</a> itself should be running off its own code. Then you can look at something like the <a href="http://www.haskell.org/ghc/">GHC </a>the <a href="http://www.haskell.org/ghc/">Glasgow Haskell compiler</a> which is written in its own language, but the thing they don’t say is that it is written in a some-what simplified dialect of Haskell and bootstraps off a small amount of C code if you don’t already have a Haskell implementation already present. Which is similar to the bootstrapping languages of GCC which use C90 to maintain language portability.</p>
<p style="margin-bottom: 0cm;">
</p><p style="margin-bottom: 0cm;">Then you can look at something like what if someone writes a new operating system how do you port a compiler and libc over to the new system. Well this is done by a mixture of cross complication and complicated kernel work which can take quite some time to get going correctly.</p>
<p style="margin-bottom: 0cm;">
</p><p style="margin-bottom: 0cm;">But I digress as usual now onto a little tutorial how do we compile GCC well yes it uses the ./configure, make, make install build system. But it doesn’t quite work like this so we do it slightly different.</p>
<p style="margin-bottom: 0cm;">First to run experimental I prefer to use git:</p>
<blockquote>
<p style="margin-bottom: 0cm;"># to get my gccpy work use this git repo it merges with gcc master at least weekly into master</p>
<p style="margin-bottom: 0cm;">$ git clone <a>git://crules.org:gcc-dev.git</a></p>
<p style="margin-bottom: 0cm;"># or run the gcc git mirror:</p>
<p style="margin-bottom: 0cm;">$ git clone git://gcc.gnu.org/git/gcc.git</p>
</blockquote>
<p style="margin-bottom: 0cm;">Now compiling time:</p>
<blockquote>
<p style="margin-bottom: 0cm;">$ aptitude install libgmp3-dev libmpfr-dev</p>
<p style="margin-bottom: 0cm;"># GCC now requires libmpc which you may need to compile and install from:</p>
<p style="margin-bottom: 0cm;"># <a href="http://www.multiprecision.org/index.php?prog=mpc">http://www.multiprecision.org/index.php?prog=mpc</a></p>
<p style="margin-bottom: 0cm;">$ cd gcc</p>
<p style="margin-bottom: 0cm;">$ mkdir build</p>
<p style="margin-bottom: 0cm;">$ cd build</p>
</blockquote>
<p style="margin-bottom: 0cm;">Useful configure options</p>
<blockquote>
<p style="margin-bottom: 0cm;">$ ../configure</p>
<p style="margin-bottom: 0cm;">–enable-gold               | use the GOLD linker</p>
<p style="margin-bottom: 0cm;">–disable-bootstrap       | useful for gcc developers not recommended for users or for your first build</p>
<p style="margin-bottom: 0cm;">–enable-languages=c,c++,python,gccgo …</p>
<p style="margin-bottom: 0cm;">….</p>
<p style="margin-bottom: 0cm;">–with-gmp-lib=/usr/local/lib</p>
<p style="margin-bottom: 0cm;">–with-mpfr-lib=/usr/local/include</p>
<p style="margin-bottom: 0cm;">-with-mpc/mpfr …. the same optiosn to point to different library locations.</p>
</blockquote>
<p style="margin-bottom: 0cm;">Now to build:</p>
<blockquote>
<p style="margin-bottom: 0cm;">$ make</p>
<p style="margin-bottom: 0cm;">$ make install</p>
</blockquote>
<p style="margin-bottom: 0cm;">And you should be good to go. We have to do our build in a separate directory due to the size of GCC some components don’t like being built directly.</p></div>
    </content>
    <updated>2010-06-29T20:05:39Z</updated>
    <category term="Compilers"/>
    <category term="Tutorials"/>
    <category term="gcc"/>
    <author>
      <name>redbrain</name>
    </author>
    <source>
      <id>http://redbrain.co.uk</id>
      <link href="http://redbrain.co.uk/index.php/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://redbrain.co.uk" rel="alternate" type="text/html"/>
      <subtitle>Frustrated Software Developer</subtitle>
      <title>RedBrain @ $HOME : ~ $</title>
      <updated>2011-07-04T22:35:22Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.piglets.org/serendipity/archives/112-guid.html</id>
    <link href="http://www.piglets.org/serendipity/archives/112-Email,-should-the-Old-Ways-quietly-die.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/3.0/" rel="license"/>
    <title>Email, should the "Old Ways" quietly die?</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I was having an enjoyable early Summer BBQ chat with <a href="http://www.ho66es.org/wordpress/">Mark Kerr</a> and <a href="http://www.earth.li/~noodles/">Jonathan (Noodles) McDowell</a> a few weeks ago. We know each other from the days of Fidonet's greatest glory. <a href="http://www.fidonet.org/">Fidonet</a> still exists, but back then the internet did not have a presence in normal people's lives, academics I worked with at <a href="http://www.qub.ac.uk">Queen's</a> only selectively had email access, and that through the dark arts of <a href="http://en.wikipedia.org/wiki/Kermit_%28protocol%29">Kermit</a>. Back then a few of us ran Bulletin Board Systems, over plain vanilla modems with all sorts of speeds, 1200 bps transfer rates were common.<br/><br/>

The systems were held together as nodes in Fidonet, and the hundreds or thousands of users on each system could send a form of email to other users in the same system, or even users across the world. Every message was piggy backed on the daily or nightly phone calls from one system to a neighbouring system. Mark and I would call some odd systems, like that of Joaquim Homrighausen and Mats Wallin in Sweden, and we would happily carry any mail going for Sweden or coming back.<br/><br/>

Everyone was sharing a bit of the cost. As such, it was considered the height of poor etiquette to reply to a message tens of lines long, quoting the whole message with a "me too" at the top or the bottom. You were expecting someone else to pay for transmitting the whole original message again, just for your extra words. You were expecting in echomail (the Fidonet equivalent of newsgroups, or mailing lists) that hundreds or thousands or tens of thousands of systems would store all that information on all those hard disks.<br/><br/>

No, it was correct to trim a few salient lines from the original, and put your reply below it. That's enough for everyone to see what is going on. Every mail editor in existence showed the quoted text either with a "&gt;" character to the left, or sometimes a "CT&gt;" to indicate the initials of who wrote it.<br/><br/>

These trimmed, quoted conversations allowed the full flow of the conversation to be followed by anyone without referring back to every word uttered by the original poster, and showed the coherence of the thread in a way that is hard to do in any other way. Google Wave is perhaps a modern attempt at the same idea.<br/><br/>

But than people grew indifferent to bandwidth because there was so much, so they never bothered to trim their replies. You can expect in a modern mailing list to find each reply containing complete copies of all the previous correspondence to that point, which is already stored in the list, shown in a nice threaded view in your editor. Some new email programs (I'm looking at you, Outlook), made it almost impossible for people to do anything other than "top post", because they don't easily show quoted text.<br/><br/>

And here I am, an old dinosaur who still tries to stick to the old ways, because I believe it's easier to read properly quoted replies... but increasingly, you can't have conversations with people with braindead mail software because they just can't do it. And they haven't even seen it before, they can't understand it. They complain when you don't top post your replies. Like the stereotypical cantankerous codger sitting in his porch watching the kids mess on his lawn I want to tell them that no, <strong>they</strong> are the ones doing it in the stupid new fangled way. We were here first. <img alt=":-)" class="emoticon" src="http://www.piglets.org/serendipity/templates/default/img/emoticons/smile.png" style="display: inline; vertical-align: bottom;"/><br/><br/>

So maybe we should just give up... those few of us left, but then I was reminded (by Noodles) that now email is being shipped around mobile devices all the old arguments of bandwidth and storage are increasingly relevant again. So I ask the open question, is there any point in trying to stick to the "old ways"? Thoughts on a postcard please.</div>
    </content>
    <updated>2010-06-29T12:57:02Z</updated>
    <category term="random musings"/>
    <category term="email"/>
    <category term="fidonet"/>
    <author>
      <name>Colin Turner</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.piglets.org/serendipity/</id>
      <link href="http://www.piglets.org/serendipity/" rel="alternate" type="text/html"/>
      <link href="http://www.piglets.org/serendipity/index.php?/feeds/" rel="self" type="application/rss+xml"/>
      <subtitle>Maths, Software, Hardware, Martial Arts and more</subtitle>
      <title>Proving the Obviously Untrue</title>
      <updated>2011-07-15T21:17:13Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.mccartney.ie/wordpress/?p=217</id>
    <link href="http://www.mccartney.ie/wordpress/2010/06/the-new-toolbox/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-new-toolbox" rel="alternate" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2010/06/the-new-toolbox/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-new-toolbox#comments" rel="replies" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2010/06/the-new-toolbox/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">The New Toolbox</title>
    <summary xml:lang="en">In days gone by, any computer guy worth his salt had a collection of boot floppies, 5.25″ &amp; 3.5″, containing a mix of MS-DOS, DR-DOS, Toms Root Boot &amp; Norton tools. These days passed and the next set of essentials was boot cd-r, containing BartPE, RIPLinux, Knoppix etc. People quickly switched to carrying these tools [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>In days gone by, any computer guy worth his salt had a collection of boot floppies, 5.25″ &amp; 3.5″, containing a mix of MS-DOS, DR-DOS, Toms Root Boot &amp; Norton tools.  These days passed and the next set of essentials was boot cd-r, containing BartPE, RIPLinux, Knoppix etc.  People quickly switched to carrying these tools USB sticks, smaller, easier to change, great when the dodgy PC you were trying to breathe life into supported USB booting.</p>
<p>I think there’s a better way, based on the last 3 days of hell spent setting up what should have been identical touchscreen machines (no cd, slow USB interfaces)</p>
<p>Your new toolkit is a cheap laptop, with a big hard disk, running the following:</p>
<ol>
<li>Your favourite Linux distro (I’ve used <a href="http://www.ubuntu.com/">Ubuntu</a> for this laptop)</li>
<li>tftpd, <a href="http://www.isc.org/software/dhcp">dhcpd</a> &amp; <a href="http://www.thekelleys.org.uk/dnsmasq/doc.html">dnsmasq</a> setup for PXE booting other machines from this laptop (FOG uses dhcpd for all it’s automatic DHCP magic, use dnsmasq for simple local DNS, required for Unattended)</li>
<li><a href="http://www.fogproject.org/">FOG Cloning System</a></li>
<li><a href="http://unattended.sourceforge.net/">Unattended</a> Windows 2000/XP/2003 Network Install System</li>
<li><a href="http://clonezilla.org/">CloneZilla</a> PXE Image (for good measure)</li>
<li><a href="http://en.wikipedia.org/wiki/Recovery_Is_Possible">RIPLinux</a> PXE Image</li>
</ol>
<p>Why?  USB booting stills seems troublesome, installing Windows from flash seems very slow.  Nearly everything supports PXE these days, if it has a built in ethernet port, it’s pretty much guaranteed to support PXE booting.  There is nothing like the feeling of being able to image a machine into FOG over a 1Gb crossover cable in a matter of minutes.  Got everything working? image it and walk away, safe in the knowledge that if somebody comes along and breaks things, you can image it back in minutes, instead of having to do another clean install and build all your updates &amp; software back on top.</p>
<p>There’s a little bit of plain in getting all of separate packages to run from the one /tftpboot/pxelinux.cfg/default, but it’s just a matter of careful copy &amp; paste from the canned configs.</p></div>
    </content>
    <updated>2010-06-15T15:05:42Z</updated>
    <published>2010-06-15T15:05:42Z</published>
    <category scheme="http://www.mccartney.ie/wordpress" term="*nix"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="Bright Ideas"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="Linux &amp; Laptops"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="Open Source"/>
    <author>
      <name>simonm</name>
      <uri>http://www.mccartney.ie/blog</uri>
    </author>
    <source>
      <id>http://www.mccartney.ie/wordpress/feed/atom/</id>
      <link href="http://www.mccartney.ie/wordpress" rel="alternate" type="text/html"/>
      <link href="http://www.mccartney.ie/wordpress/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">too boring to have a real blog</subtitle>
      <title xml:lang="en">ze blog of simon</title>
      <updated>2011-12-20T12:52:44Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.mccartney.ie/wordpress/?p=214</id>
    <link href="http://www.mccartney.ie/wordpress/2010/06/mysql-replication-slides-from-barcamp-belfast-2010/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=mysql-replication-slides-from-barcamp-belfast-2010" rel="alternate" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2010/06/mysql-replication-slides-from-barcamp-belfast-2010/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=mysql-replication-slides-from-barcamp-belfast-2010#comments" rel="replies" type="text/html"/>
    <link href="http://www.mccartney.ie/wordpress/2010/06/mysql-replication-slides-from-barcamp-belfast-2010/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">MySQL Replication slides from BarCamp Belfast 2010</title>
    <summary xml:lang="en">just incase anybody was interested, the slides from my BarCamp Belfast talk are here: Google Docs SlideShare (you can download the PPT from there as well)</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>just incase anybody was interested, the slides from my BarCamp Belfast talk are here:</p>
<ul>
<li><a href="http://docs.google.com/present/edit?id=0AYkljUJw32jSZGQ4Z2tyYl82MGcyaGh4cWR4&amp;hl=en_GB">Google Docs</a></li>
<li><a href="http://www.slideshare.net/simonmccartney/scaling-your-app-with-mysql-replication">SlideShare</a> (you can download the PPT from there as well)</li>
</ul></div>
    </content>
    <updated>2010-06-09T21:05:53Z</updated>
    <published>2010-06-09T21:04:04Z</published>
    <category scheme="http://www.mccartney.ie/wordpress" term="*nix"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="Open Source"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="barcamp"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="barcampbelfast"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="mysql"/>
    <category scheme="http://www.mccartney.ie/wordpress" term="replication"/>
    <author>
      <name>simonm</name>
      <uri>http://www.mccartney.ie/blog</uri>
    </author>
    <source>
      <id>http://www.mccartney.ie/wordpress/feed/atom/</id>
      <link href="http://www.mccartney.ie/wordpress" rel="alternate" type="text/html"/>
      <link href="http://www.mccartney.ie/wordpress/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">too boring to have a real blog</subtitle>
      <title xml:lang="en">ze blog of simon</title>
      <updated>2011-12-20T12:52:44Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://stuarthacking.com/wordpress/?p=264</id>
    <link href="http://stuarthacking.com/wordpress/?p=264" rel="alternate" type="text/html"/>
    <title>while true: Compile; Run; Debug</title>
    <summary>The more I go through this cycle the more it amazes me that this is the development paradigm that won out. That back in the golden era people sat down and decided that this was the model of the future. For large applications it’s a major pain – much time spent compiling, starting up the [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>The more I go through this cycle the more it amazes me that this is the development paradigm that won out. That back in the golden era people sat down and decided that this was the model of the future.</p>
<p>For large applications it’s a major pain – much time spent compiling, starting up the program anew and returning it to the state you need in order to test your latest fix. Even for a fairly trivial change or a bit of experimentation, this is a huge timesink.</p>
<p>And yet there is an alternative approach – incremental compilation, à la Lisp. When the Lisp environment hits a bug it pauses. It shows you the location of the bug, it gives you a full stack trace at the time of breakage. You can inspect just about everything. Here’s the clincher: you can fix the code while the debugger is waiting. Then you can load that fixed code right back into the running program and continue on your merry way.</p>
<p>Let me repeat that last bit: You compile only the code that needed fixed and load it into the running program. The running program then continues using the new code. No stopping, compiling, running, getting back to where you were, debugging.</p>
<p>This is special. It’s not even that new. Lot’s of hip, young, dynamic languages are attempting to copy it. Let’s now, in 2010, make an attempt to catch up to the technology of 50 years ago. We owe the founding hackers that much, right?</p></div>
    </content>
    <updated>2010-06-01T21:30:48Z</updated>
    <category term="Self"/>
    <category term="lisp"/>
    <category term="Programming"/>
    <category term="Rant"/>
    <author>
      <name>smh</name>
    </author>
    <source>
      <id>http://stuarthacking.com/wordpress</id>
      <link href="http://stuarthacking.com/?feed=rss2" rel="self" type="application/atom+xml"/>
      <link href="http://stuarthacking.com/wordpress" rel="alternate" type="text/html"/>
      <title>Stuart Hacking</title>
      <updated>2011-07-04T22:35:33Z</updated>
    </source>
  </entry>
</feed>

