<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>blog.samv</title>
    <link>http://www.vilain.net/</link>
    <description>Recent content on blog.samv</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <copyright>Powered by [Hugo](//gohugo.io). Theme by [PPOffice](http://github.com/ppoffice).</copyright>
    <lastBuildDate>Wed, 15 Nov 2017 19:38:00 -0800</lastBuildDate>
    
	<atom:link href="http://www.vilain.net/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Tubeworms!</title>
      <link>http://www.vilain.net/2017/11/tubeworms/</link>
      <pubDate>Wed, 15 Nov 2017 19:38:00 -0800</pubDate>
      
      <guid>http://www.vilain.net/2017/11/tubeworms/</guid>
      <description>&lt;p&gt;Tubeworms are interesting little creatures.  These ones came as
hitchhikers on my reefer tank.  I&amp;rsquo;m posting this because Facebook
downscaled my gif, which is a bit lame.  &lt;strong&gt;Update: I went back and a higher res version was available.  Ah well.&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&#34;figure&#34;&gt; &lt;img src=&#34;http://www.vilain.net/photos/tubeworms.gif&#34; alt=&#34;A saltwater
fish tank with purple coraline and almost a dozen small creatures
known as &#39;tubeworms&#39;, with their microscopic sails swaying in the
current.&#34; /&gt; &lt;/div&gt;

&lt;p&gt;This little gif shows a few stills of the creatures wafting in the
current; the camera is also moving, so you can get a sense of depth,
like an owl.  Don&amp;rsquo;t look at it too long - you might get seasick.&lt;/p&gt;

&lt;p&gt;See also &lt;a
href=&#34;https://www.whoi.edu/oceanus/v2/article/images.do?id=20266&#34;&gt;tubeworm
anatomy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Back online with Hugo</title>
      <link>http://www.vilain.net/2017/10/back-online-with-hugo/</link>
      <pubDate>Sat, 07 Oct 2017 17:26:40 -0700</pubDate>
      
      <guid>http://www.vilain.net/2017/10/back-online-with-hugo/</guid>
      <description>As some may know, I take a very personal approach to building my blogs. Only artisinal, hand-crafted blog solutions would do. Most recently, I was on &amp;ldquo;Ikiwiki&amp;rdquo; - a Perl answer to the &amp;ldquo;site builder&amp;rdquo; idea popularized by Jekyll and Hyde.
Needless to say, mindshare on a system targeted at Perl programmers was not really strong enough to keep the system up with the ever-changing standards for publishing content online. Reactive layout for small screens, live refresh, very fast reload - it became too much overhead to maintain, with too buggy indexes, and occasional non-termination when publishing.</description>
    </item>
    
    <item>
      <title>Go&#39;s &#39;context&#39; library - more patterns and anti-patterns</title>
      <link>http://www.vilain.net/2016/12/gos-context-library---more-patterns-and-anti-patterns/</link>
      <pubDate>Fri, 02 Dec 2016 00:26:24 -0800</pubDate>
      
      <guid>http://www.vilain.net/2016/12/gos-context-library---more-patterns-and-anti-patterns/</guid>
      <description>There are a number of things you can do wrong with go&amp;rsquo;s context.
Anti-Patterns Passing required arguments a long way Sometimes, you have a function which is very deep into the call stack, and it needs an ID or something which you know is available at a higher level. Resist the temptation to just throw it in the context: this hides what should be an explicit, required parameter.
It&amp;rsquo;s not a bad idea to unit test that your functions work when passed context.</description>
    </item>
    
    <item>
      <title>Using Go&#39;s &#39;context&#39; library in panic handlers</title>
      <link>http://www.vilain.net/2016/12/using-gos-context-library-in-panic-handlers/</link>
      <pubDate>Thu, 01 Dec 2016 23:16:58 -0800</pubDate>
      
      <guid>http://www.vilain.net/2016/12/using-gos-context-library-in-panic-handlers/</guid>
      <description>So far in this series, I&amp;rsquo;ve looked at how to use context for two cross-cutting concerns: logging and performance monitoring. The third is one that somewhat overlaps with the logging, which is dealing with panics.
There are a ludicrous number of services out there which let you capture detailed information about what went wrong when you get a panic. I&amp;rsquo;m going to talk about bugsnag, but there&amp;rsquo;s no particular reason that another one like sentry would be much different.</description>
    </item>
    
    <item>
      <title>Using Go&#39;s &#39;context&#39; library for performance monitoring</title>
      <link>http://www.vilain.net/2016/12/using-gos-context-library-for-performance-monitoring/</link>
      <pubDate>Thu, 01 Dec 2016 20:18:42 -0800</pubDate>
      
      <guid>http://www.vilain.net/2016/12/using-gos-context-library-for-performance-monitoring/</guid>
      <description>Just about any server application with users is an application with impatient users. You need to keep on top of performance of your application. If you have an HTTP handler, you can just go and do some simple timing of start and end of the request and log it. Then you can analyze the logs, and look for slow endpoints.
But to dig deeper, inevitably you need to collect information which lets you triage the performance issue.</description>
    </item>
    
    <item>
      <title>Go&#39;s &#39;context&#39; library</title>
      <link>http://www.vilain.net/2016/12/gos-context-library/</link>
      <pubDate>Thu, 01 Dec 2016 02:06:54 -0800</pubDate>
      
      <guid>http://www.vilain.net/2016/12/gos-context-library/</guid>
      <description>One of the shiny new toys in go 1.7 is the &amp;lsquo;context&amp;rsquo; library. Not shiny as in it is genuinely new (I still tend to import it from golang.org/x/net/context), but given this library has been considered significant enough to make it into the standard library, it must have at least a glimmer in the right light.
In the following posts, I&amp;rsquo;ll show how I&amp;rsquo;ve found it can be used for good effect for several common problems facing any programmer of services:</description>
    </item>
    
    <item>
      <title>The Gopiphany, 1 year later</title>
      <link>http://www.vilain.net/2016/12/the-gopiphany-1-year-later/</link>
      <pubDate>Thu, 01 Dec 2016 01:34:54 -0800</pubDate>
      
      <guid>http://www.vilain.net/2016/12/the-gopiphany-1-year-later/</guid>
      <description>It’s been about a year since my “gopiphany” post where I described how I’d fallen in love with go.
A year later, and the series of blog posts I planned on writing didn’t materialize on the timeline I thought they would then, but I’m still very excited about go.
I did sketch out a lot of posts, and I went to conferences, and it turns out that I’m not the only person to find that there is a significant gap between what the go tutorials cover and what you need to be an effective programmer in go.</description>
    </item>
    
    <item>
      <title>Using Go&#39;s &#39;context&#39; library for logging</title>
      <link>http://www.vilain.net/2016/11/using-gos-context-library-for-logging/</link>
      <pubDate>Mon, 21 Nov 2016 15:54:42 -0800</pubDate>
      
      <guid>http://www.vilain.net/2016/11/using-gos-context-library-for-logging/</guid>
      <description>There&amp;rsquo;s many ways to make sure that a service is operating correctly under the hood. Let&amp;rsquo;s talk about one standard approach - logging - and how context can help you turn your logs into rich sources of insight.
Initially, you might start with the built-in log library, and its Printf inteface:
 package somelibrary import &amp;quot;log&amp;quot; func DoSomethingAwesome(so, param string, wow int) { // ... awesomeness ... log.Printf(&amp;quot;did something %s awesome with %v (%d times)&amp;quot;, so, param, wow) }  This writes to &amp;ldquo;standard error&amp;rdquo;.</description>
    </item>
    
    <item>
      <title>Beyond Basic Testing in Go with testify</title>
      <link>http://www.vilain.net/2016/06/beyond-basic-testing/</link>
      <pubDate>Tue, 14 Jun 2016 14:03:00 -0500</pubDate>
      
      <guid>http://www.vilain.net/2016/06/beyond-basic-testing/</guid>
      <description>One of the first ever open source conferences I attended was YAPC::Eu in Amsterdam, in 2001. One talk that stuck in my mind was about testing, and from around that time I made a point of making sure that my work was adequately covered by unit tests. Perl was actually a very early adopter of unit tests, and not many people know that even Perl 1.0 in 1987 had a unit test suite.</description>
    </item>
    
    <item>
      <title>Vendoring in Go with Git Submodules</title>
      <link>http://www.vilain.net/2016/01/vendoring-in-go-with-git-submodules/</link>
      <pubDate>Mon, 25 Jan 2016 14:54:28 -0800</pubDate>
      
      <guid>http://www.vilain.net/2016/01/vendoring-in-go-with-git-submodules/</guid>
      <description>Go 1.5 and newer includes support for vendoring. Vendoring is a way of managing dependencies where instead of relying on the install or build process to find the dependent libraries (as with building with C or using system installation directories with a dynamic language), or using some kind of &amp;ldquo;virtual installation&amp;rdquo; (eg, python&amp;rsquo;s virtualenv, perlbrew, etc), you can include the modules you are installing under a path in your library&amp;rsquo;s source tree.</description>
    </item>
    
    <item>
      <title>In support of disabling SSH agent forwarding</title>
      <link>http://www.vilain.net/2015/12/ssh-auth-forwarding/</link>
      <pubDate>Tue, 01 Dec 2015 13:02:05 -0500</pubDate>
      
      <guid>http://www.vilain.net/2015/12/ssh-auth-forwarding/</guid>
      <description>The SSH Agent is a little program which typically runs on your desktop which allows the Secure Shell program to use your private secret key for logging into remote servers. The idea with the agent is that it, and it alone, holds onto the secret key. Each time you use ssh(1) to connect to a server, it checks with the agent to see if any of the keys that the agent is holding can be used to login to the server you are trying to log into.</description>
    </item>
    
    <item>
      <title>About the Author</title>
      <link>http://www.vilain.net/about/</link>
      <pubDate>Fri, 27 Nov 2015 19:34:46 -0800</pubDate>
      
      <guid>http://www.vilain.net/about/</guid>
      <description>About the author Sam Vilain is a career programmer who recently learned go, and it changed his life. He&amp;rsquo;s a British Kiwi living in the San Francisco Bay Area.</description>
    </item>
    
    <item>
      <title>Loops in Go - a Cheat Sheet</title>
      <link>http://www.vilain.net/2015/11/golang-cheatsheet-loops/</link>
      <pubDate>Fri, 27 Nov 2015 19:20:02 -0500</pubDate>
      
      <guid>http://www.vilain.net/2015/11/golang-cheatsheet-loops/</guid>
      <description>This is the first in my &amp;ldquo;Cheat Sheet&amp;rdquo; series, which provide a side-by-side view of the idiomatic way to write a piece of code in the languages I know well enough to do so. Each example prints the same output in all of the languages shown.
Iterating over values iterating over a numeric range
for i in xrange(5): print i for my $i (0..4) { say $i; } for i := 0; i   iterating backwards over a numeric range  for i in xrange(5, 0, -1): print i  for (my $i = 4; $i &amp;gt;= 0; $i--) { say $i; }  for i := 5; i &amp;gt;= 0; i-- { prinln(i) }  Iterating over collections  iterating over a slice/array  for x in my_list: print x  for my $v (@array) { say $v; }  for _, v := range myList { println(v) }  This one is easy to get caught out on: the &amp;lsquo;range&amp;rsquo; expression gives you indices, not values when it is passed a list.</description>
    </item>
    
    <item>
      <title>The Gopiphany</title>
      <link>http://www.vilain.net/2015/11/the-gopiphany/</link>
      <pubDate>Wed, 25 Nov 2015 18:31:34 -0500</pubDate>
      
      <guid>http://www.vilain.net/2015/11/the-gopiphany/</guid>
      <description>Recently, I took a job where I get to write go full time as a primary language. How did I get here?
A long time ago, I took a go tutorial at a Linux Conference in Australia. The tutorial lasted about 4 hours, and in that time I remember coming away with a vague idea that go was like a better C, with a stronger notion of types and concurrency and multiprocessing built in.</description>
    </item>
    
    <item>
      <title>Oh, Nick, you&#39;ve done it again</title>
      <link>http://www.vilain.net/2012/12/oh-nick-youve-done-it-again/</link>
      <pubDate>Sun, 23 Dec 2012 12:56:00 -0400</pubDate>
      
      <guid>http://www.vilain.net/2012/12/oh-nick-youve-done-it-again/</guid>
      <description>I do love my husband, Nick. He means so well, and his presence around the world and dedication really does mean a lot to a large number of people.
But you know, lately he&amp;rsquo;s been getting ideas from reading people&amp;rsquo;s christmas lists. They used to be such easy gifts for our troupe of elves to make, and for Santa to deliver. But around 2007, when we were making preparations to move our base of operations in preparation for the massive ice melt that was upon us, there was this one christmas list he read to me&amp;hellip; it said, “All I want for Christmas is a binding agreement on carbon emissions from the world&amp;rsquo;s leading emitters”.</description>
    </item>
    
    <item>
      <title>cut up backup tapes</title>
      <link>http://www.vilain.net/2012/12/cut-up-backup-tapes/</link>
      <pubDate>Tue, 11 Dec 2012 14:42:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2012/12/cut-up-backup-tapes/</guid>
      <description>the cut up words of William S. Burroughs and John McAfee
From symbiosis to parasitism
The odyssey Sam and I have been on
a short step did not begin after the death of Mr Faull
The word is now a virus.
it began on October 15 this year,
an aborted raid by the police of San Pedro and Belize City.
Since that time
Victimless crimes are the lifeline
we have been on and off the run from the RIGHT virus.</description>
    </item>
    
    <item>
      <title>Welcome to ZeTrip</title>
      <link>http://www.vilain.net/2012/12/welcome-to-zetrip/</link>
      <pubDate>Fri, 07 Dec 2012 10:12:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2012/12/welcome-to-zetrip/</guid>
      <description>Geographic consultants: Fox News</description>
    </item>
    
    <item>
      <title>Fact or Fiction—Chinese Medicine&#39;s San Jiao theory?</title>
      <link>http://www.vilain.net/2012/01/fact-or-fictionchinese-medicines-san-jiao-theory/</link>
      <pubDate>Thu, 12 Jan 2012 01:40:27 -0800</pubDate>
      
      <guid>http://www.vilain.net/2012/01/fact-or-fictionchinese-medicines-san-jiao-theory/</guid>
      <description>&amp;ldquo;Theory&amp;rdquo; is certainly not the right word from the perspective of mainstream medical culture. Most times it just refers to a body location. It&amp;rsquo;s mostly terminology.
The Upper Jiao is essentially the Thoracic Cavity, and the Orophalanx (mouth basically). Everything above the diaphragm relating to Digestion and Circulation, and almost all of of the organs of Perspiration. It belongs alongside Thoracic Cavity in a Scientific Occidental Medical Practitioner, as an Organ Group.</description>
    </item>
    
    <item>
      <title>Offsetting my Air Travel (and then some)</title>
      <link>http://www.vilain.net/2011/12/offsetting-my-air-travel-and-then-some/</link>
      <pubDate>Sun, 25 Dec 2011 22:11:40 -0500</pubDate>
      
      <guid>http://www.vilain.net/2011/12/offsetting-my-air-travel-and-then-some/</guid>
      <description>As many people know, I tend to fly around the world a lot. A long time ago, back in about 2006 or 2007 I think, I signed up with Dopplr and put my travel in there. I did this mostly so I could hook up with friends I knew online as I travelled around the world. Well, this only actually resulted in actual meetups with friends once or twice I can remember, notably a few cocktails with Randal Schwartz in Hawai&amp;rsquo;i during our respective travels across the Pacific in opposite directions.</description>
    </item>
    
    <item>
      <title>Wild-Type Outer Membrane Vesicle Vaccines</title>
      <link>http://www.vilain.net/2011/04/wild-type-outer-membrane-vesicle-vaccines/</link>
      <pubDate>Fri, 15 Apr 2011 09:40:21 +1200</pubDate>
      
      <guid>http://www.vilain.net/2011/04/wild-type-outer-membrane-vesicle-vaccines/</guid>
      <description>Vaccines. They&amp;rsquo;re putting hobbled viruses and bacteria into our system so that they can cause an infection, and thereby build an immunity, right? Like Smallpox and Cowpox, right?
Well, sometimes. That is called a Live Attenuated vaccine. They&amp;rsquo;re difficult to manage and relatively high risk.
There are many different types of vaccine, all of which involve hobbling the rogue organism to different degrees.
If they get cooked, nuked (that is, sterilized in an irradiation facility such as the one in Upper Hutt), or perhaps killed with strong salt, acid, base, or some such - then it&amp;rsquo;s called an inactivated vaccine.</description>
    </item>
    
    <item>
      <title>Vaccines and MeNZB</title>
      <link>http://www.vilain.net/2011/04/vaccines-and-menzb/</link>
      <pubDate>Fri, 15 Apr 2011 09:34:02 +1200</pubDate>
      
      <guid>http://www.vilain.net/2011/04/vaccines-and-menzb/</guid>
      <description>There&amp;rsquo;s a big anti-vaccination movement around at the moment, and I think it&amp;rsquo;s ill-advised and extremely unhelpful to society.
I recently had a friend die of Meningococcal disease. Not a very close friend, to a person I know she was like a second daughter, well by analogy she was to me like a second cousin I saw at larger family gatherings.
However as she died at a ridiculously young age and was otherwise in good health, I found it somewhat disturbing and so started to research on this phantom menace disease.</description>
    </item>
    
    <item>
      <title>The GitTorrent Commit Reel</title>
      <link>http://www.vilain.net/2011/03/the-gittorrent-commit-reel/</link>
      <pubDate>Thu, 10 Mar 2011 15:39:14 +1300</pubDate>
      
      <guid>http://www.vilain.net/2011/03/the-gittorrent-commit-reel/</guid>
      <description>The commit reel is defined in section 5 of the GitTorrent RFC.
It is defined as an uncompressed stream of objects, sorted in a particular way. In practice, it is only the commit objects that are sorted, and all of the dependent objects for those commits are placed with the commit which first introduces them.
So, you start with a repository:
  You sort the objects so that they are in reverse date order (tie breaking is still required over git rev-list --date-order, as well as fetching their types and sizes, to produce the commit reel index.</description>
    </item>
    
    <item>
      <title>Improving Google Navigate&#39;s Pronounciation of Māori Words</title>
      <link>http://www.vilain.net/2011/03/improving-google-navigates-pronounciation-of-m%C4%81ori-words/</link>
      <pubDate>Tue, 08 Mar 2011 11:44:26 +1300</pubDate>
      
      <guid>http://www.vilain.net/2011/03/improving-google-navigates-pronounciation-of-m%C4%81ori-words/</guid>
      <description>Google Navigate is pronouncing Māori words poorly, which is a shame because it&amp;rsquo;s a phonetic language with few exceptions.
I&amp;rsquo;d like to contribute some notes for recognising and joining sounds from an English voice syllable bank, to try to make as few errors as possible.
Recognition A Māori word will match the following regular expression (Unicode quirks notwithstanding):
 (([hkmnprtw]|ng|wh)?([aeiou][aeiou]?|[āēīōū])-?)+  The presence of any letters not on this list means it&amp;rsquo;s not a Māori word.</description>
    </item>
    
    <item>
      <title>GitTorrent: a synthesis of past efforts</title>
      <link>http://www.vilain.net/2011/03/gittorrent-a-synthesis-of-past-efforts/</link>
      <pubDate>Mon, 07 Mar 2011 08:18:00 +1300</pubDate>
      
      <guid>http://www.vilain.net/2011/03/gittorrent-a-synthesis-of-past-efforts/</guid>
      <description>If you read this list post (gmane archive), then you will probably see not much new here. I include it as a back-drop for the subsequent articles.
GitTorrent concept: torrent the pack files The idea of applying the straight BitTorrent protocol to the pack files was the starting point for GitTorrent. However, this turns out not to be useful, as the pack files are not determinisitic. It is only under a very strict set of precarious circumstances that any two nodes computing a pack for a git set of git objects will produce the same binary content.</description>
    </item>
    
    <item>
      <title>Letter to the court</title>
      <link>http://www.vilain.net/2011/03/letter-to-the-court/</link>
      <pubDate>Mon, 07 Mar 2011 05:45:00 +1300</pubDate>
      
      <guid>http://www.vilain.net/2011/03/letter-to-the-court/</guid>
      <description>This is my communication with my case manager at the Ministry of Justice:
The correspondance from Referee Smallbone writes:
The claim is dismissed. The applicant did not appear. The respondent did appear. _Reasons_ The Tribunal presented its findings following the hearing on 13th December 2010. There has been no new evidence presented today that would change the decision and find in the applicant&#39;s favour.  The case was adjourned at Vodafone&amp;rsquo;s request.</description>
    </item>
    
    <item>
      <title>Court Ruling</title>
      <link>http://www.vilain.net/2011/03/court-ruling/</link>
      <pubDate>Fri, 04 Mar 2011 16:00:00 +1300</pubDate>
      
      <guid>http://www.vilain.net/2011/03/court-ruling/</guid>
      <description>I got the final ruling from the court in the post today, co-inciding with a concise Consumer Magazine article about my case.
As I didn&amp;rsquo;t appear on time to the court case, Vodafone did not need to explain their communications. The Judge ignored the merits of the case as they stood at the end of the previous half of the hearing, and dismissed the claim. I guess that&amp;rsquo;s how the game works.</description>
    </item>
    
    <item>
      <title>A little note on a geologist&#39;s global warming claim</title>
      <link>http://www.vilain.net/2011/03/a-little-note-on-a-geologists-global-warming-claim/</link>
      <pubDate>Thu, 03 Mar 2011 16:45:00 +1300</pubDate>
      
      <guid>http://www.vilain.net/2011/03/a-little-note-on-a-geologists-global-warming-claim/</guid>
      <description>Ok, so I was taking an astronomy tour with this really nice old guy in Kaotunu, near Whitianga in the Coromandel. He&amp;rsquo;s got a sweet telescope set up for observing the night sky and for a cheap $40 each, me and my girlfriend got a nice tour of various sky features, including nebulae, carbon stars, star-forming clusters and more. It was a really lovely evening and we all had a lovely discussion over tea and cake.</description>
    </item>
    
    <item>
      <title>A couple of recent observations</title>
      <link>http://www.vilain.net/2011/02/a-couple-of-recent-observations/</link>
      <pubDate>Thu, 24 Feb 2011 22:22:36 +1300</pubDate>
      
      <guid>http://www.vilain.net/2011/02/a-couple-of-recent-observations/</guid>
      <description>My previous posts were written right after the court case; now, I have the benefit of some hindsight as well as some interesting interactions with people who work at Vodafone.
The first is that despite Vodafone&amp;rsquo;s claims in court, they have been working towards notifications, now apparently sent out at 5MB and 8MB of usage. In court, the Vodafone rep claimed that &amp;ldquo;customers did not want that&amp;rdquo;. Apparently, this has recently gone to production, in the last 2-3 weeks.</description>
    </item>
    
    <item>
      <title>ikiwiki</title>
      <link>http://www.vilain.net/2011/02/ikiwiki/</link>
      <pubDate>Thu, 24 Feb 2011 17:31:34 +1300</pubDate>
      
      <guid>http://www.vilain.net/2011/02/ikiwiki/</guid>
      <description>This blog software is awesome, I welcome my new cult overload. Here is how I did it;
apt-get install ikiwiki git-core nginx  Then make a new user and path for the wiki owner
useradd ikiwiki mkdir /var/www/blog adduser ikiwiki chown ikiwiki /var/www/blog  Set up the user for SSH login
mkdir ~ikiwiki/.ssh ssh-add -L &amp;gt; ~ikiwiki/.ssh/authorized_keys chown -R ikiwiki ~ikiwiki/.ssh chown -R og-rwX ~ikiwiki/.ssh  Then you can ssh to the ikiwiki user on your server host and run the basic setup.</description>
    </item>
    
    <item>
      <title>Ironic 404 Joke Page</title>
      <link>http://www.vilain.net/404/</link>
      <pubDate>Wed, 23 Feb 2011 00:15:21 +1300</pubDate>
      
      <guid>http://www.vilain.net/404/</guid>
      <description>Ironic 404 Joke Page (Attempt to distract from shonky web site maintenance practice using a humourous play on a common 404 error page message)
(Message to tell the referring page about the problem, not the owner of this site, while leaving insufficient information for any kind of error report because of a belief that random visitors would not contribute enough meaningful information to diagnose the problem, let alone know what they were talking about)</description>
    </item>
    
    <item>
      <title>copyright</title>
      <link>http://www.vilain.net/copyright/</link>
      <pubDate>Tue, 22 Feb 2011 20:46:30 +1300</pubDate>
      
      <guid>http://www.vilain.net/copyright/</guid>
      <description>All Content Copyright &amp;copy; 2009, Sam Vilain. All Rights Reserved. My words are free; you may copy them subject to the terms of the Creative Commons Attribution Share-Alike License.
Below follows the Creative Commons Attribution Share-Alike license. Trolls take particular note of clause 2.7.
Sorry about the formatting, it isn&amp;rsquo;t quite markdown yet.
Licence THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENCE (&amp;ldquo;CCPL&amp;rdquo; OR &amp;ldquo;LICENCE&amp;rdquo;).</description>
    </item>
    
    <item>
      <title>Vilain v Vodafone NZ Ltd : preliminary ruling</title>
      <link>http://www.vilain.net/2010/12/vilain-v-vodafone-nz-ltd--preliminary-ruling/</link>
      <pubDate>Mon, 13 Dec 2010 17:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2010/12/vilain-v-vodafone-nz-ltd--preliminary-ruling/</guid>
      <description>Short summary: I tried to use a &amp;ldquo;bad&amp;rdquo; section of the Fair Trading Act, the judge just didn&amp;rsquo;t buy my argument ($1300 now owing I guess), and adjourned on one point (worth $850) pending explanation from Vodafone.
Though, it wasn&amp;rsquo;t entirely bad; the message telling me that I was using my data bundle is a bit hard to argue against. Irritating thought is that despite Vodafone having had much time to note and prepare a response to that part, the judge allowed that the case be adjourned, perhaps to February, when the Vodafone representative claimed that he hadn&amp;rsquo;t seen that bit before and needed to check up on it.</description>
    </item>
    
    <item>
      <title>Vilain v Vodafone NZ Ltd</title>
      <link>http://www.vilain.net/2010/12/vilain-v-vodafone-nz-ltd/</link>
      <pubDate>Sun, 12 Dec 2010 17:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2010/12/vilain-v-vodafone-nz-ltd/</guid>
      <description>Long delay between updates intentional, for ironic effect.
Tomorrow, I have a court case with Vodafone NZ Ltd, over an extortionate roaming data bill.
Sure, sure, it&amp;rsquo;s not like this is anything new or special, people have known about this for a long time. &amp;ldquo;highway robbery&amp;rdquo; writes one well-known industry commentator, showing that the mark-up is of the order of 100,000%. Yes, one-hundred, thousand percent. &amp;ldquo;Legal Theft&amp;rdquo;, brands another. There are frequently stories in the papers, such as:</description>
    </item>
    
    <item>
      <title>Our visit to the 168°E 47°S confluence</title>
      <link>http://www.vilain.net/2010/03/our-visit-to-the-168e-47s-confluence/</link>
      <pubDate>Wed, 31 Mar 2010 18:15:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2010/03/our-visit-to-the-168e-47s-confluence/</guid>
      <description>Preface This article is about me and a couple of mates and our expedition into one of the three remaining Degree Confluence points on land in New Zealand. These confluence points are where lines of latitude (aka parallels) intersect with lines of longitude. There are 29 points altogether in New Zealand, and the project has been running for some time, so the low-hanging fruit has already been plucked - including all the points in the mainland United States.</description>
    </item>
    
    <item>
      <title>making Perl command-line scripts faster with pperl</title>
      <link>http://www.vilain.net/2010/03/making-perl-command-line-scripts-faster-with-pperl/</link>
      <pubDate>Mon, 01 Mar 2010 15:05:00 +1300</pubDate>
      
      <guid>http://www.vilain.net/2010/03/making-perl-command-line-scripts-faster-with-pperl/</guid>
      <description>So, you have a script which is slow, perhaps because you are using a whole collection of modern perl features, which aren&amp;rsquo;t necessarily terribly fast yet. You can&amp;rsquo;t wait for the runtime to implement the features natively and hence run quickly, but there is another solution.
For instance, the XML::SRS distribution on CPAN makes use of some fairly advanced features of Moose, such as meta-attribute meta-roles. These are a win from a coding and maintenance point of view, as they allow a single attribute declaration to give you a Perl class which has XML marshalling as well as type constraints.</description>
    </item>
    
    <item>
      <title>Ah, remember the days?</title>
      <link>http://www.vilain.net/2009/10/ah-remember-the-days/</link>
      <pubDate>Thu, 15 Oct 2009 13:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2009/10/ah-remember-the-days/</guid>
      <description>Remember the days of squeezing TSRs into high memory?
C:\&amp;gt;mem Memory Type Total Used Free ---------------- -------- -------- -------- Conventional 638K 59K 579K Upper 0K 0K 0K Reserved 386K 386K 0K Extended (XMS) 3,627,654K 30,373K 3,597,281K ---------------- -------- -------- -------- Total memory 3,628,678K 30,818K 3,597,860K Total under 1 MB 638K 59K 579K Largest executable program size 578K (591,856 bytes) FreeDOS is resident in the high memory area. C:\&amp;gt;  If you want to access that 3GB of XMS, you&amp;rsquo;ll have to page it in and out in 64K chunks.</description>
    </item>
    
    <item>
      <title>Reprap update</title>
      <link>http://www.vilain.net/2009/01/reprap-update/</link>
      <pubDate>Fri, 30 Jan 2009 11:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2009/01/reprap-update/</guid>
      <description>Not a huge amount of progress&amp;hellip; it&amp;rsquo;s January and of course New Zealand basically shuts down this time of year. But here&amp;rsquo;s another photo of the RepRap. It&amp;rsquo;s now got a top frame and I&amp;rsquo;ve soldered together some of the boards. This is shaping up to be one of those &amp;ldquo;month of Sundays&amp;rdquo; projects&amp;hellip;</description>
    </item>
    
    <item>
      <title>Reprap - early beginnings</title>
      <link>http://www.vilain.net/2008/11/reprap---early-beginnings/</link>
      <pubDate>Sun, 16 Nov 2008 11:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2008/11/reprap---early-beginnings/</guid>
      <description>Full Sized Image
 I spent today following much of these instructions for building a RepRap - in short, it&amp;rsquo;s a 3D printer printer. It can squirt out little lines of plastic and slowly make shapes, including parts for itself.
 Of course doesn&amp;rsquo;t print absolutely everything it needs - I had to buy a whole lot of steel rod, which I found from suppliers in Petone and Lower Hutt, and today I found various fastenings suppliers in Te Aro for the nuts and bolts.</description>
    </item>
    
    <item>
      <title>You fail at Science</title>
      <link>http://www.vilain.net/2008/10/you-fail-at-science/</link>
      <pubDate>Tue, 28 Oct 2008 11:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2008/10/you-fail-at-science/</guid>
      <description>Comment to Act&amp;rsquo;s Dump the ETS release.
 There is no evidence that CO2 drives climate or that industrialisation is warming the world.
 Incorrect, the case for this has been built up since 1859, and the science has been tested against all of the best available evidence since then. Go look at the history. A statement like this betrays a complete ignorance of the facts.
 When I started out as an environmentalist the fear was global cooling.</description>
    </item>
    
    <item>
      <title>Hi, I&#39;m Sam, and I&#39;m a Global Warming Skeptic</title>
      <link>http://www.vilain.net/2008/07/hi-im-sam-and-im-a-global-warming-skeptic/</link>
      <pubDate>Fri, 18 Jul 2008 21:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2008/07/hi-im-sam-and-im-a-global-warming-skeptic/</guid>
      <description>cue applause
Many that have talked with me about Climate Change, will be familiar with my position as a skeptic. Initially, like everyone else, accepting &amp;ldquo;happily&amp;rdquo; that climate change was real, at some point I got indoctrinated into the field of skeptics. I listened to a lot of arguments to see the holes in the theory.
And I&amp;rsquo;m still skeptical.
However, my skepticism has been narrowed down over the time I&amp;rsquo;ve investigated the topic.</description>
    </item>
    
    <item>
      <title>Wikipedia Climate Science Consensus dissident list investigation (3/3): George Kukla</title>
      <link>http://www.vilain.net/2008/07/george_kukla/</link>
      <pubDate>Thu, 10 Jul 2008 20:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2008/07/george_kukla/</guid>
      <description>Well, the third roll of this die (no doubt my critics will use the fact I&amp;rsquo;m using a 41-sided die in concert with symmetry theory to prove I&amp;rsquo;m a flatlander), I get 17. Looks like I lucked out somewhat - that&amp;rsquo;s landed in the &amp;ldquo;Believe global warming is primarily caused by natural processes&amp;rdquo; section again.
This time, it&amp;rsquo;s actually a climatologist, what luck!
 George Kukla, retired Professor of Climatology at Columbia University and Lamont-Doherty Earth Observatory (LDEO), said in an interview: &amp;ldquo;What I think is this: Man is responsible for a PART of global warming.</description>
    </item>
    
    <item>
      <title>Wikipedia Climate Science Consensus dissident list investigation (2/3): Patrick Michaels</title>
      <link>http://www.vilain.net/2008/07/pat_michaels/</link>
      <pubDate>Thu, 10 Jul 2008 19:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2008/07/pat_michaels/</guid>
      <description>The second roll was 41 - is this die weighted? This time we&amp;rsquo;re in the &amp;ldquo;warming will be beneficial to humanity&amp;rdquo; section of the list.
 Patrick Michaels, part-time research professor of Environmental Sciences at the University of Virginia: &amp;ldquo;scientists know quite precisely how much the planet will warm in the foreseeable future, a modest three-quarters of a degree (Celsius), plus or minus a mere quarter-degree&amp;hellip;a modest warming is a likely benefit.</description>
    </item>
    
    <item>
      <title>Wikipedia Climate Science Consensus dissident list investigation (1/3): Willie Soon</title>
      <link>http://www.vilain.net/2008/07/willie_soon/</link>
      <pubDate>Thu, 10 Jul 2008 18:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2008/07/willie_soon/</guid>
      <description>Over at Hot Topic, I was challenged to:
 Pick three of the “dissidents” from that list at random (roll a dice or summat). Read who they are - is this really an expert on the climate? Then read what they say. Read it carefully and critically, and if they give numbers cross-check them, and then check for rebuttals. If you tackle any of their work with the level of skepticism you’ve shown here you’ll find it illuminating.</description>
    </item>
    
    <item>
      <title>Subversion review</title>
      <link>http://www.vilain.net/2008/04/subversion-review/</link>
      <pubDate>Sun, 06 Apr 2008 20:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2008/04/subversion-review/</guid>
      <description>The design roots of Subversion can be traced back to the first very simplistic attempts at version control, such as SCCS and RCS. The design of it has steamrolled on from the 70&amp;rsquo;s with little consideration of stable internet development methods practiced since at least the mid-eighties.
The claim is made that Subversion &amp;ldquo;just fixes CVS&amp;rdquo;. And while Subversion is generally more robust and versatile than CVS, some still see it as a step backwards.</description>
    </item>
    
    <item>
      <title>Practicality</title>
      <link>http://www.vilain.net/2008/04/practicality/</link>
      <pubDate>Sun, 06 Apr 2008 16:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2008/04/practicality/</guid>
      <description>  </description>
    </item>
    
    <item>
      <title>Public Access Git Repositories</title>
      <link>http://www.vilain.net/2008/03/public-access-git-repositories/</link>
      <pubDate>Sun, 30 Mar 2008 14:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2008/03/public-access-git-repositories/</guid>
      <description>It seems that a lot of sites have cropped up that offer free Git hosting;
 First there was repo by Petr Baudis of cogito fame. A service running from Prague, based on a few simple CGIs, themselves published.
 Then I think gitorious came along, and also GitHub - both Ruby implementations and some adding services
  I have a hunch that people are writing these things as they cotton on to the benefits of distributed version control, and none of the centralised based sites out there (eg, SourceForge, etc) were really coming to the table quickly enough.</description>
    </item>
    
    <item>
      <title>Scathing review of Subversion on OHLOH being &#43;&#43;&#39;d</title>
      <link>http://www.vilain.net/2008/01/scathing-review-of-subversion-on-ohloh-being---d/</link>
      <pubDate>Mon, 07 Jan 2008 14:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2008/01/scathing-review-of-subversion-on-ohloh-being---d/</guid>
      <description>Ok, so I wrote a review (see my other post Why are you still using Subversion) of Subversion which bordered on ranting. I even advertised it on #git, but relatively few people marked it as &amp;ldquo;useful&amp;rdquo;. While it was sitting on &amp;ldquo;3 of 8 found this useful&amp;rdquo;, I was going to delete it, but revisiting it, I found that it&amp;rsquo;s been consistently getting marked as &amp;ldquo;useful&amp;rdquo; by people. It&amp;rsquo;s now sitting on &amp;ldquo;7 of 13&amp;rdquo;.</description>
    </item>
    
    <item>
      <title>My new Perforce Importer is Unstoppable!!&#39;</title>
      <link>http://www.vilain.net/2007/12/my-new-perforce-importer-is-unstoppable/</link>
      <pubDate>Tue, 18 Dec 2007 16:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2007/12/my-new-perforce-importer-is-unstoppable/</guid>
      <description>(with apologies to mnftiu)
Ok, so I&amp;rsquo;ve been working on this program to convert the Perl history from Perforce, with the view to tack it on top of the previous conversion I worked on.
 Today, I had my first successful run that includes converting the integration data. It&amp;rsquo;s a huge milestone for this project - which I initially agreed with Nicholas Clark to undertake way way back in August 2006 over a pint on the banks of the river Thames.</description>
    </item>
    
    <item>
      <title>History is not linear - the case for micro-branching</title>
      <link>http://www.vilain.net/2007/08/history-is-not-linear---the-case-for-micro-branching/</link>
      <pubDate>Fri, 24 Aug 2007 14:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2007/08/history-is-not-linear---the-case-for-micro-branching/</guid>
      <description>During the Perl history conversion, I have found there are very few patches from the p5p archives which I have found I couldn&amp;rsquo;t apply. However, sometimes a pumpking will have integrated a patch which was posted relative to an older version of Perl. How am I representing that?
  The patch &amp;ldquo;Forbid ++ and &amp;ndash; on readonly values&amp;rdquo; was relative to 5.003_08, and would not cleanly apply to any closer version than that.</description>
    </item>
    
    <item>
      <title>What Would Jesus Do?</title>
      <link>http://www.vilain.net/2007/08/what-would-jesus-do/</link>
      <pubDate>Sun, 12 Aug 2007 03:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2007/08/what-would-jesus-do/</guid>
      <description>  </description>
    </item>
    
    <item>
      <title>Beware of technology success stories</title>
      <link>http://www.vilain.net/2007/03/beware-of-technology-success-stories/</link>
      <pubDate>Thu, 15 Mar 2007 16:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2007/03/beware-of-technology-success-stories/</guid>
      <description>People keep saying things like this:
 I&amp;rsquo;ve found Apache/mod_perl to satisfy all of my webdev environment requirements
 But your configuration was fragile, your scripts all ran as the same user code, you couldn&amp;rsquo;t debug it, and you used every little gimmicky feature and now nobody can understand how the damned thing fits together.
 We managed to scale MySQL to run massive sites like LiveJournal
 But you threw away the database and re-wrote the critical parts yourself, instead of using a database that scales by virtue of implementing the important features you need to scale.</description>
    </item>
    
    <item>
      <title>An introduction to git-svn for Subversion/SVK users and deserters</title>
      <link>http://www.vilain.net/2007/02/an-introduction-to-git-svn-for-subversion/svk-users-and-deserters/</link>
      <pubDate>Wed, 28 Feb 2007 18:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2007/02/an-introduction-to-git-svn-for-subversion/svk-users-and-deserters/</guid>
      <description>#main { margin: 1em; color: #000; background-color: #fff; font-family: FreeSerif, serif; font-size: 12pt; } #main tt, #main pre { font-family: Bitstream Vera Sans Mono, Andale Mono, Consolas, monospace; font-size: 11pt; clear: both; } #main h1, h2, h3, h4, h5, h6 { font-family: FreeSans, Helvetica, Arial, sans-serif; } #main .title, .title a { font-weight: bold; font-size: 16pt; color: #777; margin: 0 auto 0 auto; } #main h1 { font-size: 18pt; } #main h2 { font-size: 16pt; border-bottom: 2px solid maroon; } #main h3 { font-size: 14pt; } #main h4, #main h5, #main h6 { font-size: 13pt; font-style: italic; } #main dl { margin-left: 1em; } #main dl dd { padding-top: 0.</description>
    </item>
    
    <item>
      <title>baacamp07: the success story of InternetNZ</title>
      <link>http://www.vilain.net/2007/02/baacamp07-the-success-story-of-internetnz/</link>
      <pubDate>Wed, 14 Feb 2007 16:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2007/02/baacamp07-the-success-story-of-internetnz/</guid>
      <description>Here&amp;rsquo;s a very late baacamp report. Colin Jackson told the story of Internet New Zealand. A group of concerned people got together, formed a co-operative. I&amp;rsquo;m not sure of the exact type of legal entity they used, but it involved a constitution, and their consititution was democratic and non-commercial. They even used its democratic provisions once and got sufficient members to oust a bad president. They used this charitably chartered enterprise to get control over the .</description>
    </item>
    
    <item>
      <title>startups</title>
      <link>http://www.vilain.net/2007/02/startups/</link>
      <pubDate>Sun, 04 Feb 2007 18:00:00 +1300</pubDate>
      
      <guid>http://www.vilain.net/2007/02/startups/</guid>
      <description>One person&#39;s opinion on funding NZ internet industry development So, I went to a session on Internet Peering at foocamp, and I heard John Houlker from NZTE talk about peering and &amp;ldquo;other industry development ideas&amp;rdquo;. And I ended up writing this little piece of reactionary spit:
What really disturbed me was a dude from New Zealand Trade and Enterprise talking about getting around this by subsidising internet start-ups. First of all he dismissed as nonsense the idea that &#34;</description>
    </item>
    
    <item>
      <title>TheyWorkForYou.co.nz - Democracy meets Web 2.0</title>
      <link>http://www.vilain.net/2007/02/theyworkforyou/</link>
      <pubDate>Sat, 03 Feb 2007 18:00:00 +1300</pubDate>
      
      <guid>http://www.vilain.net/2007/02/theyworkforyou/</guid>
      <description>The government presence at baacamp was impressive - two ministers attended, each of whom were not only giving talks, but listening to the feedback they were being given, and - dare I say it - engaging in thoughtful interchange on topics. I was highly impressed to hear Judith Tizard&amp;rsquo;s idea on what official information government should release - speaking happily of opening everything not restricted by the privacy act as raw feeds, even if the departments involved have strong opinions to the contrary.</description>
    </item>
    
    <item>
      <title>kiwi_foo_camp</title>
      <link>http://www.vilain.net/2007/02/kiwi_foo_camp/</link>
      <pubDate>Sat, 03 Feb 2007 12:00:00 +1300</pubDate>
      
      <guid>http://www.vilain.net/2007/02/kiwi_foo_camp/</guid>
      <description>On the registration form where it asked, &amp;ldquo;describe yourself in three words/phrases&amp;rdquo;, I was &amp;ldquo;Lost for words&amp;rdquo;. The other questions were, &amp;ldquo;name three people that you think should have been here, and their e-mail addresses&amp;rdquo; and &amp;ldquo;what would you bring back from the future?&amp;rdquo; For a technical conference, that the sample (of about 2) forms I looked at both said &amp;ldquo;World Peace&amp;rdquo; was a cool little sample of the vibe.</description>
    </item>
    
    <item>
      <title>off_to_kiwifoo</title>
      <link>http://www.vilain.net/2007/02/off_to_kiwifoo/</link>
      <pubDate>Thu, 01 Feb 2007 17:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/2007/02/off_to_kiwifoo/</guid>
      <description>Alright, off to Kiwi Foo Camp (baacamp), which is being held in a &amp;lsquo;secret&amp;rsquo; location north of Bombay.
I am taking three talk topics along - one on Linux Containers, the merging of systems like OpenVZ and Linux-VServer, a second talk on version control systems in part based on a four part series I posted to use.perl (part 1, part 2, part 3, part 4), and discussions with the bazaar developers.</description>
    </item>
    
    <item>
      <title></title>
      <link>http://www.vilain.net/1/01/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/1/01/</guid>
      <description>In general, storing context objects is to be avoided: a context should normally not be referenced once the scope which created it returns. That said, if the context in an abstract sense lives on, it can make sense.</description>
    </item>
    
    <item>
      <title></title>
      <link>http://www.vilain.net/1/01/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/1/01/</guid>
      <description>Mocking objects using testify mock objects Go already has a built-in system for building mock objects: interfaces. Most testing libraries that implement mocking work by temporarily &amp;ldquo;monkey patching&amp;rdquo; functions and passing in dynamic objects which do nothing.
In go, you would typically define an interface that describes the object that your library deals with. Your test script would deliver a simple version that doesn&amp;rsquo;t do anything except perhaps collect information on its interaction with the code being tested.</description>
    </item>
    
    <item>
      <title></title>
      <link>http://www.vilain.net/1/01/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>http://www.vilain.net/1/01/</guid>
      <description>Aiming to have your logs legible by more than just the technical team can focus you on making sure to log things that don&amp;rsquo;t require a deep working knowledge of the innards of the code. This is useful for new people to be able to figure out the context of the panic.
#
Don&amp;rsquo;t be afraid to make a new context for each iteration in a loop if each item you are processing in the loop is a complex business object; one of the most annoying things that can happen with a logged error is that it is something generic like &amp;ldquo;no rows found&amp;rdquo; / It&amp;rsquo;s good to have correlated log events, that is single log events emitted that have as many correlation IDs attached as possible.</description>
    </item>
    
  </channel>
</rss>