<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>David R. MacIver &#187; life</title>
	<atom:link href="http://www.drmaciver.com/category/life/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.drmaciver.com</link>
	<description></description>
	<lastBuildDate>Tue, 07 Feb 2012 11:12:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>I don&#8217;t write Scala</title>
		<link>http://www.drmaciver.com/2012/01/i-dont-write-scala/</link>
		<comments>http://www.drmaciver.com/2012/01/i-dont-write-scala/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 22:55:48 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.drmaciver.com/?p=4233</guid>
		<description><![CDATA[A lot of people follow me on Twitter. I don&#8217;t mean Stephen Fry level a lot, but it&#8217;s about 8 or 9 times as many people as I follow back. Based on a (purely visual) random sampling of this, a significant proportion of these are people interested in Scala. That&#8217;s fine. I know many such [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of people follow me on Twitter. I don&#8217;t mean Stephen Fry level a lot, but it&#8217;s about 8 or 9 times as many people as I follow back. </p>
<p>Based on a (purely visual) random sampling of this, a significant proportion of these are people interested in Scala. That&#8217;s fine. I know many such people. I could also be misrepresenting them and they&#8217;re just people interested in programming and following me because I&#8217;m a programmer (and occasionally even tweet programming related things). I&#8217;m not sure, and can&#8217;t really be sure without doing a lot more research that I&#8217;m actually interested in doing. </p>
<p>So I&#8217;m going to assume it&#8217;s a Scala thing, because this fits into a general perception issue I&#8217;ve noticed people have about me.</p>
<p>You see, I don&#8217;t write Scala. I haven&#8217;t since late 2009. I didn&#8217;t make a big deal about it, because that would have been childish, I just informed a few people in the Scala community I thought should know that I was leaving, along with a few of my reasons why, and then quietly did so. Most of them took it very graciously.</p>
<p>Weirdly, two and some years on, most people seem not to have noticed the complete absence of Scala related content from me. I suspect it&#8217;s because I&#8217;ve mostly dropped off their radar for one reason or another, so there&#8217;s just a vague general impression of me as a Scala person. Hopefully this post should help remove some of that.</p>
<p>To be clear: This is not a normative statement. Just because I don&#8217;t write Scala, doesn&#8217;t mean you shouldn&#8217;t. Scala is pretty neat. I have my reasons to not use it, but don&#8217;t wish to explain as I would find the resulting language flamewar extremely tedious. I would greatly appreciate it if you don&#8217;t use this post to start one anyway. </p>
<p>This is also not a statement that I hate Scala and will never use it again. I&#8217;ve no immediate plans to, but never is a long time. I expect Scala will do quite well, and if it does I expect I will at some point find myself using it again. </p>
<p>To forestall the inevitable question: I am currently mostly writing Ruby at work, and a whole smattering of unrelated things at home (recents include Haskell, Java, Clay, C, a little C++, some Lua&#8230;) as the whim takes me. This list is not intended to be prescriptive, and I&#8217;m not really interested in the inevitable suggestions for what languages to try next.</p>
<p>TLDR: I write a bunch of languages, mostly Ruby for reasons of circumstance rather than design, but Scala is not numbered amongst them.  This is a statement of fact, not a piece of advice. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.drmaciver.com/2012/01/i-dont-write-scala/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>And now for something completely different</title>
		<link>http://www.drmaciver.com/2011/12/and-now-for-something-completely-different/</link>
		<comments>http://www.drmaciver.com/2011/12/and-now-for-something-completely-different/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 11:59:26 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.drmaciver.com/?p=4209</guid>
		<description><![CDATA[I write about a lot of things here. Maths, Programming, Voting Theory, Cooking, Fiction and anything else that amuses me. This post however is about something I&#8217;ve never written about before (and will probably never write about again). Shaving. I really hate shaving. I hate shaving with a passion I normally reserve for homeopaths, inconsiderate [...]]]></description>
			<content:encoded><![CDATA[<p>I write about a lot of things here. Maths, Programming, Voting Theory, Cooking, Fiction and anything else that amuses me. This post however is about something I&#8217;ve never written about before (and will probably never write about again). Shaving.</p>
<p>I really hate shaving. I hate shaving with a passion I normally reserve for homeopaths, inconsiderate pedestrians and J2EE. </p>
<p>Unfortunately I also hate having a beard. </p>
<p>By way of compromise I tend to shave only every 4 or 5 days. After a week I&#8217;m verging on beard territory, so that&#8217;s really too long. But this only accommodates my hatred of shaving, it doesn&#8217;t reduce it.</p>
<p>Part of why I hate shaving is how ridiculously gimmicky it is. The shaving companies will go to increasingly elaborate lengths to get you to buy increasingly expensive products. &#8220;This razor has five blades! And they&#8217;re really small! And it has a built in vibrator, which will totally make your skin happier really!&#8221; (Perhaps there needs to be a realrazororparodyrazor site. I sure can&#8217;t be bothered to build it though, it would just depress me). </p>
<p>It&#8217;s insulting and it&#8217;s expensive and, what&#8217;s worse, it gives you a <em>really shitty shave</em>. </p>
<p>But there is a way out of this. A secret that Big Shaving has kept from you. </p>
<p>What if I were to tell you that there was a better way? That it is in fact possible to shave without a vibrator. Perhaps even with only one blade? A way to spend 25p instead of £2.25 every time you have to replace one of those damn razor blades. And that you would even get a better shave out of it. (Spoiler: I&#8217;m about to tell you that).</p>
<p>There is! Behold the safety razor:</p>
<p><a href="http://www.flickr.com/photos/mn_francis/215833365/" title="Low budget take on the safety razor by cackhanded, on Flickr"><img class="centered" src="http://farm1.staticflickr.com/90/215833365_95e4aba99e.jpg" width="500" height="375" alt="Low budget take on the safety razor"></a></p>
<p>It&#8217;s a classic design, one step up from the cutthroat: Most of the quality of shaving, none of the slicing your throat open and sending you to the emergency room. The cheap ones (I use Boots own brand, which I think is the one in the picture above) are typically as good as the expensive ones (because really all it is is a small semi-disposable blade for running across your face. It&#8217;s not rocket science: You make it out of decent metal and you make it sharp. That&#8217;s it). It gives you a really close shave for a really low price, the blades clean easily and last well, and it probably won&#8217;t insult your intelligence when you&#8217;re using it (though Gillette do one, so I can&#8217;t guarantee it). </p>
<p>It&#8217;s not better in every way of course. <a href="http://en.wikipedia.org/wiki/There_ain't_no_such_thing_as_a_free_lunch">TANSTAAFL</a> applies, and anyone who tells you otherwise is trying to sell you something (like the idea that you should give them 10x as much money per razor blade). The cost is that you have to be more careful whilst shaving or you&#8217;ll get shaving cuts. Not huge gaping wounds, just normal shaving cuts, and they&#8217;re completely avoidable once you&#8217;ve got the hang of it, but even then shaving is going to be a more methodical process (though not necessarily slower &#8211; I find that with a modern razor I have to make more passes in order to get a viable shave). </p>
<p>I wouldn&#8217;t go as far as to say to switch to a safety razor has made me not hate shaving, but it&#8217;s definitely gone a long way towards it. </p>
<h3>Postscripts</h3>
<ul>
<li>I also strongly prefer shaving oil to shaving foam or gel. However I think this is less an unambiguous win and more of a personal choice, so my advocacy for it isn&#8217;t as strong.</li>
<li>It&#8217;s worth looking up some guides on shaving (though I can&#8217;t recommend any good ones as I did this a while ago and don&#8217;t remember what I used). Chances are you&#8217;re doing it wrong</li>
<li>Sorry, I have no idea whether this is good advice for shaving legs or other parts of your body. It might be. It works well for armpits. Try it and see if you want, but apologies if it turns out to be awful.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.drmaciver.com/2011/12/and-now-for-something-completely-different/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Personal Code Writing Month (PeCoWriMo)</title>
		<link>http://www.drmaciver.com/2011/11/personal-code-writing-month-pecowrimo/</link>
		<comments>http://www.drmaciver.com/2011/11/personal-code-writing-month-pecowrimo/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 09:00:58 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.drmaciver.com/?p=4166</guid>
		<description><![CDATA[I was thinking about doing NaNoWriMo this year. Had a story plotted out and everything. I never quite got around to it though &#8211; I started writing, but didn&#8217;t really feel motivated to continue. But what occurred to me is that what I&#8217;m currently actually much more bothered about is not novel writing, it&#8217;s code [...]]]></description>
			<content:encoded><![CDATA[<p>I was thinking about doing <a href="http://www.nanowrimo.org/">NaNoWriMo</a> this year. Had a story plotted out and everything. I never quite got around to it though &#8211; I started writing, but didn&#8217;t really feel motivated to continue.</p>
<p>But what occurred to me is that what I&#8217;m currently actually much more bothered about is not <em>novel</em> writing, it&#8217;s code writing. As you&#8217;ve probably noticed from the change in and absence of subject matter on this blog I haven&#8217;t really been writing much code on my own time recently. Further, work is currently full of large piles of integration and way more ruby than I&#8217;d ever care to see again.</p>
<p>So I&#8217;ve decided to declare November to be my personal code writing month. I&#8217;m going to do something completely different. It might not be useful to me (although I actually did start from a practical problem when deciding to do this), but it&#8217;s going to be interesting and computer sciencey and at least possibly useful to <em>someone</em>.</p>
<p>Here&#8217;s the goal. I&#8217;m writing <a href="https://github.com/DRMacIver/haskell-nearest-neighbour">a library for neighbour searching</a> (both &#8220;nearest&#8221; and &#8220;within epsilon&#8221;) in Haskell. The objective is that by the end of November it will be in a state that I am prepared to bless as a release. These are the requirements:</p>
<ol>
<li>It has to have an API I&#8217;m reasonably happy with blessing as &#8220;good&#8221;</li>
<li>It has to be well enough tested that I can say with a reasonable degree of confidence that it has no obvious bugs</li>
<li>It has to have at least a basic benchmark suite</li>
<li>It has to perform well enough to be able to be used on lowish (say <= 10) dimensional data sets of a few hundred thousand points (I'd like it to do a lot better than that of course)</li>
<li>It has to have a package up on <a href="http://hackage.haskell.org/packages/hackage.html">Hackage</a> (I might change my mind on this one and relax it to &#8220;it has to be ready to upload to hackage&#8221;)</li>
</ol>
<p>i.e. it has to be in a state where if someone goes &#8220;I want to do nearest neighbour search in Haskell!&#8221; (for some reason) I wouldn&#8217;t feel embarrassed to point them to this library. </p>
<p>How&#8217;s it doing so far? Well, the API is ok. Needs a bit of work, but it&#8217;d probably do for a first release if it had to. </p>
<p>The testing is actually pretty good. It needs to be improved to cover more interesting classes of metric spaces, but that&#8217;s a fairly simple matter which will take me all of half an hour to do when I get around to it (and then however long it takes to fix any bugs that uncovers).</p>
<p>The performance? Ha ha. It is to laugh. I started with the hyper optimised data structure of &#8220;keep every point in the index in a linked list&#8221; and using scanning and sorting respectively to do epsilon and nearest neighbour queries. I&#8217;m fully aware of how stupid this is of course, but the idea was that by first writing the API and tests I would then have the freedom to tinker.</p>
<p>I have now tinkered a little bit, and the result is an awesome system which has the properties of being both slow to build an index and slow to query the index. That&#8217;s fine. I knew it would be when I was writing it. It&#8217;s just to flush out a few of the details. </p>
<p>Anyway, the next step is to build the benchmark suite, and then I can start doing Computer Science to it. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.drmaciver.com/2011/11/personal-code-writing-month-pecowrimo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>On the value of helpful error messages</title>
		<link>http://www.drmaciver.com/2011/05/on-the-value-of-helpful-error-messages/</link>
		<comments>http://www.drmaciver.com/2011/05/on-the-value-of-helpful-error-messages/#comments</comments>
		<pubDate>Sat, 07 May 2011 16:18:59 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.drmaciver.com/?p=4058</guid>
		<description><![CDATA[So I bought a Withings Bodyscale recently. It&#8217;s a good scale (does body fat as well as weight), but obviously its killer feature is that it records your weight on the Withings site. Why? Well, because while I&#8217;m far from obese I could definitely stand to shed a few kilos (or at least convert a [...]]]></description>
			<content:encoded><![CDATA[<p>So I bought a <a href="http://www.withings.com/en/bodyscale">Withings Bodyscale</a> recently. It&#8217;s a good scale (does body fat as well as weight), but obviously its killer feature is that it records your weight on the Withings site. </p>
<p>Why? Well, because while I&#8217;m far from obese I could definitely stand to shed a few kilos (or at least convert a few kilos from fat to muscle), and my new mantra of &#8220;Strategies, not promises&#8221; tells me that I should pay attention to my past failure to actually keep up with exercise programs and do things to modify my behaviour rather than promising to do better. Additionally, I&#8217;m a firm believer that you can&#8217;t change what you can&#8217;t track, and this seems like a good way to track it.</p>
<p>Anyway, sales pitch over. That&#8217;s not the point of this post.</p>
<p>The point of this post is that I bought the weighing scale and it didn&#8217;t work. Initially I thought it didn&#8217;t work at <em>all</em>, but on further investigation it worked fine as long as it wasn&#8217;t hooked up to a computer via USB.</p>
<p>The USB thing is just for the initial calibration &#8211; it&#8217;s totally unimportant once you&#8217;ve set up what wifi network it should use &#8211; but unfortunately initial calibration is vital. This meant that the device in question was completely useless for what I actually bought it for, which was sad. </p>
<p>The symptoms were pretty dire too: It didn&#8217;t show up as a device at all under windows. Under my main linux system it gave a slew of unhelpful warnings in dmesg. If you tried to boot a windows machine while it was plugged in the entire system would scream in panic and send you into recovery and repair mode.</p>
<p>I was about to send a really shirty email to Withings (I&#8217;d already made them aware of the problem and hadn&#8217;t exactly received a lot of help back) when I thought I&#8217;d just try it on the teeny tiny ubuntu computer I use to drive my TV.</p>
<p>Behaviour was identical to on my laptop, no surprise there. Except when I looked at the dmesg output it said &#8220;Maybe bad USB cable?&#8221;</p>
<p>&#8220;Huh&#8221;, I thought. &#8220;You know, I haven&#8217;t tried that&#8230;&#8221;</p>
<p>So I went out and bought a new mini-usb cable (I have plenty of micro, but no mini. Seriously guys: Why in the name of bob are there 6 different connectors for an ostensibly universal standard?), and sure enough: The mini-USB cable they sent with the system was the culprit. System works fine when I use a different one.</p>
<p>So this turned out to be a really easy fix once I knew what to try, but I undoubtedly would have completely failed to suspect the cable, and would have created a great deal of hassle for both myself and Withings in the course of replacing the &#8220;broken&#8221; scale, if it weren&#8217;t for that teeny little piece of advice dmesg helpfully provided me with.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.drmaciver.com/2011/05/on-the-value-of-helpful-error-messages/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>An open letter to thames clippers</title>
		<link>http://www.drmaciver.com/2011/04/an-open-letter-to-thames-clippers/</link>
		<comments>http://www.drmaciver.com/2011/04/an-open-letter-to-thames-clippers/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 18:04:20 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[commuting]]></category>
		<category><![CDATA[outrage]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://www.drmaciver.com/?p=3988</guid>
		<description><![CDATA[The following is a copy of an email I&#8217;ve just sent to Thames Clippers Tour Guides on a Commute Hi, Imagine, if you will, taking the tube. Imagine that as you travelled on the tube, every stop came with a little story. &#8220;This is Baker&#8217;s street, known for the fictional character of Sherlock holmes, and [...]]]></description>
			<content:encoded><![CDATA[<p>The following is a copy of an email I&#8217;ve just sent to <a href="http://www.thamesclippers.com/">Thames Clippers</a></p>
<h4>Tour Guides on a Commute</h4>
<p>Hi,</p>
<p>Imagine, if you will, taking the tube. Imagine that as you travelled on the tube, every stop came with a little story. &#8220;This is Baker&#8217;s street, known for the fictional character of Sherlock holmes, and then you will shortly be arriving at blah di blah station particularly notable for the quality of the melons found in the nearby markets. A funny story about melons&#8230;&#8221;</p>
<p>Curiously, I&#8217;ve just found myself in a remarkably analagous situation. </p>
<p>What situation is this, I hear you ask? Well, it seems someone at Thames Clippers has decided that it would be a really good idea to permit or partner with a company connected to the Olympic games who will delight and entertain us as we travel along the river with a constant narrative full of fascinatingly trivial and banal information about the places we pass.</p>
<p>The curious thing about tourist tracks is that they&#8217;re only even slightly tolerable if you are, in fact, a tourist. If you are a Londoner, and indeed someone who takes that boat as a regular part of their commute, they are extremely painful. Given that this is the situation that I and (as near as I could estimate) more than half of the other people on the boat with me at the time found ourselves in, I was not best pleased. Judging by the exasperated looks around me and<br />
the desperate but futile attempt to raise the volume of conversation above the sound of the announcement system it seems vanishingly unlikely that I was alone in this.</p>
<p>Unfortunately when you&#8217;re on a boat with a PA system bombarding you with this narrative there is absolutely no escape from it. This has the consequence of taking what was previously by far the most pleasant way of commuting in the city and making it utterly unbearable. If this happens on any sort of regular basis I&#8217;m going to be forced to commute via an alternative method. Given that I&#8217;ve paid a rather large amount of money up front for a season ticket, and that besides I would much rather be taking the Thames Clipper, this possibility fails to delight.</p>
<p>Hoping this can be resolved.</p>
<p>Regards,<br />
David R. MacIver</p>
]]></content:encoded>
			<wfw:commentRss>http://www.drmaciver.com/2011/04/an-open-letter-to-thames-clippers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

