<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:jerith</id>
  <title>Jerith online</title>
  <subtitle>Occasional ramblings of someone incredibly awesome</subtitle>
  <author>
    <name>jerith</name>
  </author>
  <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom"/>
  <updated>2009-01-31T16:09:25Z</updated>
  <lj:journal userid="5506391" username="jerith" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://jerith.livejournal.com/data/atom" title="Jerith online"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:47463</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/47463.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=47463"/>
    <title>Ubuntu, Erlang and Launchpad</title>
    <published>2009-01-31T16:09:25Z</published>
    <updated>2009-01-31T16:09:25Z</updated>
    <category term="ubuntu"/>
    <category term="linux"/>
    <category term="code"/>
    <category term="erlang"/>
    <content type="html">&lt;a href="http://www.ubuntu.com/" rel="nofollow"&gt;Ubuntu&lt;/a&gt; Hardy has an old version of &lt;a href="http://erlang.org" rel="nofollow"&gt;Erlang&lt;/a&gt;. Ordinarily this wouldn't be a problem, but it turns out that R12B (the current release) added a few libraries that I use in my &lt;a href="http://projecteuler.net" rel="nofollow"&gt;Project Euler&lt;/a&gt; solutions. Upgrading to Intrepid isn't really something I want to do at the moment (for reasons that I'll happily discuss over a beer) and language interpreters don't get backported.&lt;br /&gt;&lt;br /&gt;This left me with two options: Rewrite my code to not use the new regular expression library and the not-quite-an-array data structure that Hardy's version of Ubuntu lacks or build and install a modern Erlang from source. Fortunately, a little investigation turned up a third: &lt;a href="http://launchpad.net" rel="nofollow"&gt;Launchpad&lt;/a&gt;'s &lt;a href="http://help.launchpad.net/Packaging/PPA" rel="nofollow"&gt;Personal Package Archives&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I was surprised at easy it is to rebuild a deb source package and get it into Launchpad's build system. Since I didn't have to make any changes, it was merely a matter of downloading the source files from Intrepid's Launchpad page, adding a changelog entry to get my own version number and email address (for pgp signing) in there and running a couple of commands to build and upload the new source package.&lt;br /&gt;&lt;br /&gt;There are a couple of caveats to adding packages to a PPA, though. It's generally a good idea to at least build and test the binaries locally before uploading. Not only is this polite (in that you're less likely to tie up shared build resources with broken code), it also saves time waiting around for builds to be scheduled only to discover that they're broken. In addition, there's a bit of a lag between Launchpad claiming that a build is complete and the binaries actually being available. In particular, it took quite a while for launchpad to make my i386 packages (which includes all the architecture-independent stuff) available despite announcing a successful build in the web interface.&lt;br /&gt;&lt;br /&gt;All in all, I'm very impressed with PPAs. In half an afternoon, I have managed to add custom (sort of) versions of several packages to &lt;a href="https://launchpad.net/~jerith/+archive/ppa" rel="nofollow"&gt;my PPA&lt;/a&gt; and install them on my local machine. Not only that, but they're available for anyone who wants to use them with no extra effort on my part.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:47111</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/47111.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=47111"/>
    <title>A month later</title>
    <published>2008-12-15T14:01:31Z</published>
    <updated>2008-12-15T14:01:31Z</updated>
    <category term="add"/>
    <category term="personal"/>
    <content type="html">The last month has been interesting, mostly in a good way.&lt;br /&gt;&lt;br /&gt;The ups and downs have been mostly ups and the downs haven't been nearly as bad as I had feared. Life's better than it has been for a while. I've kicked a few bad habits and picked up a few good ones. I've lost weight. I've become a morning person, which intrigues me. I still don't enjoy domestic tasks, but now I do them instead of worrying about not doing them. I'm also consuming a lot less caffeine, despite not having had any desire to cut down.&lt;br /&gt;&lt;br /&gt;I shall now return you to your regularly scheduled internet.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:47067</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/47067.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=47067"/>
    <title>GeekDinner: Karmic Kava</title>
    <published>2008-11-28T10:28:03Z</published>
    <updated>2008-11-28T10:28:03Z</updated>
    <category term="geekdinner"/>
    <category term="people"/>
    <content type="html">Last night I attended the most recent &lt;a href="http://wiki.geekdinner.org.za/wiki/Main_Page" rel="nofollow"&gt;Cape Town GeekDinner&lt;/a&gt;, Karmic Kava. The venue was &lt;a href="http://www.dining-out.co.za/member_details-MemberID-1636.html" rel="nofollow"&gt;Adesso&lt;/a&gt;, who really went all out to make it a fantastic evening. The food was great, even though none of the choices on the menu were really to my taste.&lt;br /&gt;&lt;br /&gt;I was the slideshow karaoke &lt;strike&gt;victim&lt;/strike&gt; presenter this time around, and &lt;a href="http://vhata.net" rel="nofollow"&gt;Vhata&lt;/a&gt; provided me with a presentation he &lt;strike&gt;stole from&lt;/strike&gt; found on the internet. While it wasn't ideal karaoke material in that there was way too much verbiage, I knew the subject matter well enough to pick up a couple of keywords and wing it. The subject in question was &lt;a href="http://en.wikipedia.org/wiki/Reiki" rel="nofollow"&gt;Reiki&lt;/a&gt;, and my treatment of it would certainly have offended any true believers in the audience, but I'd had just enough &lt;a href="http://www.perdeberg.co.za/" rel="nofollow"&gt;sponsored wine&lt;/a&gt; by that point that I really didn't care. Most people seemed to enjoy it, though. I even mentioned &lt;a href="http://scienceblogs.com/insolence/2007/10/your_friday_dose_of_woo_its_not_just_rei.php" rel="nofollow"&gt;Laser Reiki&lt;/a&gt; amongst the more grandiose claims.&lt;br /&gt;&lt;br /&gt;After that, I spent the rest of the evening circulating and ended up in a corner discussing programming languages, editors and distributed systems with a guy whose name I either didn't catch or don't remember. Before I knew it, it was after midnight and time to head home and get some sleep. All in all, my best GeekDinner experience yet.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:46670</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/46670.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=46670"/>
    <title>Broken brains and me</title>
    <published>2008-11-15T08:39:58Z</published>
    <updated>2008-11-15T08:39:58Z</updated>
    <category term="saga"/>
    <category term="add"/>
    <category term="personal"/>
    <content type="html">Some of you good people may have noticed that I haven't been quite myself these last two weeks. This post serves as an explanation.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;WARNING&lt;/strong&gt;: Some of what follows is pretty personal. If I wasn't OK with it being public it wouldn't be here, but if you're uncomfortable with that kind of thing (or perhaps just don't know me well enough to care) you may want to skip this post.&lt;br /&gt;&lt;br /&gt;At the end of October, certain things about me were brought to my attention in a way I could not ignore. These were things that I kind-of knew all along, but not really. The biggest was that I'm not really very good at getting things done or following through on my grand ideas. I also have an abysmal short-term memory.&lt;br /&gt;&lt;br /&gt;This impetus finally got me to do something I should have done years ago: see a psychiatrist and figure out if there's a medical problem that can be dealt with or if I'm just lazy and inattentive. I think, given the title of the post, that you can figure out which it was.&lt;br /&gt;&lt;br /&gt;I have been diagnosed with &lt;a href="http://en.wikipedia.org/wiki/Attention-deficit_hyperactivity_disorder" rel="nofollow"&gt;Attention Deficit Disorder&lt;/a&gt;, which is both medically and psychologically treatable. There is, however, a lot of controversy and misinformation about ADD. I won't attempt to clear all of that up here (there are better resources for that than this blog), but I will describe my particular flavour and how it differs from the popular image.&lt;br /&gt;&lt;br /&gt;Hyperactivity is very common, especially in children with ADD. So much so, in fact, that the symptom is right there in the new name, ADHD. Since my version lacks this entirely, I'm sticking to the term ADD.&lt;br /&gt;&lt;br /&gt;So, on to what I do have. I am very distractible. In fact, while writing this post, I have spent at least half the amount of time since I started wikidiving (while getting the link above), replacing my mouse pad (because the mouse was a little bit jerky), repeatedly checking my IRC client (no activity) and choosing music (settling on Bach). This is what causes me the most trouble.&lt;br /&gt;&lt;br /&gt;Combined with this, I have a frustratingly poor short-term memory. I can literally forget, while spending two seconds switching to another workspace to see if I have email, what I was working on. Combine this with the above, and you start to get a picture of my life.&lt;br /&gt;&lt;br /&gt;The flip side is that ADD comes with the ability to "hyperfocus" on occasion. I sometimes (rarely) get stuck into something so completely that an entire day can go by without me noticing. The last time I did this, I was updating the code for my website. (It has yet to be deployed and it doesn't change much on the outside. It's much cleaner and more functional behind the scenes, though.) It's what lets me pick up a new programming language in a day or two, when it happens. Sadly, it doesn't happen as often as I'd like.&lt;br /&gt;&lt;br /&gt;Over time, I have developed some tools to deal with a lot of this. I incessantly check that my pockets have the right things in them, which stops me forgetting my wallet, phone or keys. I set alarms and reminders on my phone and tend to leave for things early so that I'm not late.&lt;br /&gt;&lt;br /&gt;I mentioned before that ADD is treatable. I'm just starting the process of figuring out the right medication, but I'm already seeing results. I'm currently on Concerta, which is basically 12-hour slow release Ritalin. It makes a huge difference, in that I'm able to concentrate on something for more than a minute or two at a time.&lt;br /&gt;&lt;br /&gt;Methylphenidate hydrochloride, which is the active ingredient, has two major side effects that are hitting me. I knew both of these (and some of the other that I'm not seeing) going in.&lt;br /&gt;&lt;br /&gt;The first isn't so much a side effect as a primary effect. Since the drug is a central nervous system stimulant, it affects sleep. I've had a little more than my usual trouble falling asleep since I started, but I've also been awake and alert before 06h00 every morning. While three data points isn't really conclusive, it's enough of a difference from my usual routine that I think it's significant. It's nice to be up and functional early, but it means I'm sleeping less. It hasn't been long enough to tell if this is a problem, but I'm cautious.&lt;br /&gt;&lt;br /&gt;The other is appetite suppression. While this strikes me as something of a bonus, since I really could stand to lose a few kilos, it does mean I have to be better about eating a proper breakfast than I usually am. A morning meal is even more important when you're not going to be hungry for most of the rest of the day.&lt;br /&gt;&lt;br /&gt;Aside from the drugs, there are a bunch of psychological treatments. These basically consists of structure and external tools to help keep track of things that most most people do automatically. Calendars and reminders are a big one, and &lt;a href="http://google.com/calendar" rel="nofollow"&gt;Google&lt;/a&gt; is very helpful in this regard.&lt;br /&gt;&lt;br /&gt;Probably the most successful tool I'm using at the moment is the humble daily todo list. Having tried various computer-based things in the past, I've settled (for work stuff, anyway) on a notepad and a pen. Part of the reason is that it sits on my desk between my keyboard and my tea, so is always visible. The other part is that the physical act of drawing a line through a task I have completed produces a surprisingly strong endorphin release.&lt;br /&gt;&lt;br /&gt;An important thing to realise (and I like to think I'm less guilty of this than many) is that a reason is not the same as an excuse. I now know why I'm so horrible at getting things done, but it doesn't absolve me of the responsibility to actually get things done. It does, however, give me the understanding necessary to build the support structures that will help me deal with it more effectively.&lt;br /&gt;&lt;br /&gt;That's about all I have brainspace for at the moment, and this post is certainly long enough already. It hasn't been an easy couple of weeks, but it has been necessary and long overdue. The future is looking better than it has in quite some time, but the short term adjustment period is likely to be fairly rocky.&lt;br /&gt;&lt;br /&gt;I shall leave you with an amusing analogy I keep attributing to &lt;a href="http://chalain.livejournal.com/" rel="nofollow"&gt;the wrong person&lt;/a&gt; (it was about him, not by him): &lt;a href="http://blogs.msdn.com/audiofool/archive/2007/07/27/the-add-stove.aspx" rel="nofollow"&gt;The ADD Stove&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:46582</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/46582.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=46582"/>
    <title>NaNoWriMo and me</title>
    <published>2008-10-15T08:12:20Z</published>
    <updated>2008-10-15T08:12:20Z</updated>
    <category term="writing"/>
    <content type="html">I have long watched that &lt;a href="http://www.nanowrimo.org/" rel="nofollow"&gt;National Novel Writing Month&lt;/a&gt; (affectionately dubbed NaNoWriMo) with interest. Every year I have a mild urge to participate, mostly out of the knowledge that I don't write nearly enough. This year I shall be participating, although not in the traditional way.&lt;br /&gt;&lt;br /&gt;I don't have a novel in me at the moment. I also don't think I have the time to write an average of two thousand words a day. I &lt;em&gt;do&lt;/em&gt; have several short stories trying to escape my head and I think five thousand words a week is doable. Thus, NaSTWriMo is born. I shall write one story per week in November and actually let people read them (which is a slightly terrifying thought). I won't make them publicly available (because that may be an issue if I ever decide to try to publish one of them) but if you're interested in proofing, editing or criticising, drop me an email (or comment on this entry) and I'll make sure you get whatever I have written at some yet-to-be-determined time.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:46185</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/46185.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=46185"/>
    <title>A reply from Audible about DRM</title>
    <published>2008-09-22T14:55:13Z</published>
    <updated>2008-09-22T15:12:07Z</updated>
    <category term="email"/>
    <category term="internet"/>
    <category term="books"/>
    <content type="html">As mentioned in my post entitled &lt;a href="http://jerith.livejournal.com/45677.html" rel="nofollow"&gt;A note to Audible about DRM&lt;/a&gt;, I wrote to Audible about the DRM in their audiobooks. I have since received a reply:&lt;br /&gt;&lt;pre&gt;Dear Jeremy,

Thank you for contacting Audible.com. On its behalf, I would like to apologize
for any inconvenience and I am most committed to satisfying and resolving your
inquiry to the fullest of my abilities.

As per your email, I can understand how the DRM can cause such an inconvenience
to customers, and that others have found a way to work around the DRM which
seems to be listed online. However to further elaborate on the DRM, it is
important on our end to support it because majority of publishers would prefer
their content to be protected. You see without the DRM we would not be able to
distribute the majority of our 50,000 titles.

Now as for Amazon, I personally have not heard anything about us dropping the
DRM, due to a high volume of complaints. So I do apologize, but since I haven't
heard of anything, I would not honestly be able to comment on this rumor. Again
thank you for contacting us here at Audible and have a great day!!

Here at Audible, we truly value and appreciate your business; if you need
further assistance, please respond to this email or if you wish, please provide
me with a contact number and the best available time to reach you.

For additional questions, how to contact us and hours of operation, please
visit us at: www.audible.com/contactus

Sincerely,
Reggie M.
Audible Customer Support&lt;/pre&gt;&lt;br /&gt;It seems that, as expected, nothing is going to be done about the situation. This is sad, since I would probably spend quite a lot of money there if I were allowed to.&lt;br /&gt;&lt;br /&gt;Ah well, there are still wonderful places like &lt;a href="http://escapepod.org" rel="nofollow"&gt;Escape Pod&lt;/a&gt;, &lt;a href="http://pseudopod.org" rel="nofollow"&gt;Pseudopod&lt;/a&gt;, &lt;a href="http://podcastle.org" rel="nofollow"&gt;Podcastle&lt;/a&gt;, &lt;a href="http://www.variantfrequencies.com/" rel="nofollow"&gt;Variant Frequencies&lt;/a&gt; and &lt;a href="http://podiobooks.com" rel="nofollow"&gt;Podiobooks&lt;/a&gt; where I can get high quality audio stories.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:45855</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/45855.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=45855"/>
    <title>The political compass</title>
    <published>2008-09-19T13:17:26Z</published>
    <updated>2008-09-21T18:54:27Z</updated>
    <category term="internet"/>
    <category term="politics"/>
    <content type="html">Recently, there has been a spate of people taking the &lt;a href="http://www.politicalcompass.org/" rel="nofollow"&gt;Political Compass&lt;/a&gt; test. Much of this has been spawned by the &lt;a href="http://michael.gorven.za.net/blog/2008/09/15/clug-political-compass-graph" rel="nofollow"&gt;Political Compass graph&lt;/a&gt; generated by Michael Gorven.&lt;br /&gt;&lt;br /&gt;More recently, &lt;a href="http://vhata.net" rel="nofollow"&gt;Jonathan&lt;/a&gt; mentioned that while the scores are interesting (note particularly the leftist libertarian clustering of most of &lt;a href="http://clug.org.za" rel="nofollow"&gt;CLUG&lt;/a&gt;) it would be far more interesting to have people display their answers along with their reasoning. Since I had a bit of time on my hands (in short bursts) I have done this.&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;Page 1: Just a few propositions to start with, concerning - no less - how you see the country and the world.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;If economic globalisation is inevitable, it should primarily serve humanity rather than the interests of trans-national corporations.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Humanity as a whole beats the subset of it that is corporate culture. Large corporations aren't necessarily bad, but they aren't the only part of humanity that matters.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;I'd always support my country, whether it was right or wrong.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly disagree&lt;/strong&gt;&lt;br /&gt;  Morality trumps loyalty to whoever happens to be top dog at the time.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;No one chooses his or her country of birth, so it's foolish to be proud of it.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Pride is emotional rather than rational. I don't choose my family, but I am proud of their successes.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Our race has many superior qualities, compared with other races.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  The only reason this isn't a &amp;quot;strongly disagree&amp;quot; is because there are measurable physiological differences between &amp;quot;races&amp;quot;. Some are advantageous (or &amp;quot;superior&amp;quot;) in some areas and disavantageous (or &amp;quot;inferior&amp;quot;) in others. This is meaningless when considering social issues, but makes a difference when deciding how much sunscreen or warm clothing to pack.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;The enemy of my enemy is my friend.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Very simplistic. The enemy of my enemy is sometimes also my enemy. I'd still rather be friends than enemies, though.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Military action that defies international law is sometimes justified.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Not very often, though.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;There is now a worrying fusion of information and entertainment.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  When it becomes difficult to tell truth from fiction, there's a problem. On the other hand, we should always be thinking critically about news sources.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Page 2: Now, the economy. We're talking attitudes here, not the FTSE index.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;People are ultimately divided more by class than by nationality.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Cultural differences tend to break up more along national lines (although the causality works more in the other direction) than class lines.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Controlling inflation is more important than controlling unemployment.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  The two are somewhat linked. A strong economy tends to create jobs as a byproduct, though, while make-work paid out of the public purse tends to break the economy.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Because corporations cannot be trusted to voluntarily protect the environment, they require regulation.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  But always look out for over-regulation. &amp;quot;Don't dump toxic stuff in rivers&amp;quot; is good. &amp;quot;We need to spend three years evaluating this site for a factory&amp;quot; generally isn't.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;&amp;quot;from each according to his ability, to each according to his need&amp;quot; is a fundamentally good idea.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly disagree&lt;/strong&gt;&lt;br /&gt;  It's a very easy system to game and it disincentivises work.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;It's a sad reflection on our society that something as basic as drinking water is now a bottled, branded consumer product.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  If people want to buy it, why should other people not provide it? Luxuries are important.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Land shouldn't be a commodity to be bought and sold.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly disagree&lt;/strong&gt;&lt;br /&gt;  I don't really see a major difference between land and other assets. There are probably reasons to have public assets of various kinds, but no real reason to single out land.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;It is regrettable that many personal fortunes are made by people who simply manipulate money and contribute nothing to their society.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Regrettable, but probably necessary. They're not creating anything worthwhile, but they're usually not hurting anyone either.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Protectionism is sometimes necessary in trade.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Success should be based on merit rather than cronyism.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;The only social responsibility of a company should be to deliver a profit to its shareholders.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  This path leads to strip-mining. On the other hand, without profit they cannot succeed. At the very least, they should minimise harm.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;The rich are too highly taxed.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  This depends on where you live, obviously. While I object to much higher taxation of the rich as a disincentive to work hard enough to get to that point, I object far more to much lower taxation of the rich.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Those with the ability to pay should have the right to higher standards of medical care .&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly agree&lt;/strong&gt;&lt;br /&gt;  Top-notch medical care is a scarce resource and thus an expensive one. By its very nature, it cannot be given to everyone and thus the only way to avoid making medicine a swamp of uniform mediocrity is to allow some people to have better care than others. I'm not saying that poor people should get substandard care, just that a spectacularly brilliant neurosurgeon (for example) has a right to market his skills accordingly.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Governments should penalise businesses that mislead the public.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Perhaps not government. Someone should, though, and the government really is in the best position for it.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;A genuine free market requires restrictions on the ability of predator multinationals to create monopolies.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  I was torn on this one. In the end, &amp;quot;strong monopolies control the market&amp;quot; won over &amp;quot;regulation usually creates more problems than it solves&amp;quot;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;The freer the market, the freer the people.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  See above. &amp;quot;Regulation usually creates more problems than it solves.&amp;quot;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Page 3: Now a look at some of your personal social values ...;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Abortion, when the woman's life is not threatened, should always be illegal.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly disagree&lt;/strong&gt;&lt;br /&gt;  See the scientific literature on this. Suffice to say that I have no religious hangups on the matter and there's a massive difference between a small bundle of undifferentiated cells and a baby.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;All authority should be questioned.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  There are some cases where authority is important and desirable. This is not always the case, but it's important enough that I didn't agree.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;An eye for an eye and a tooth for a tooth.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Do you want to live in a world of blind soup-eaters? My ideas on crime and punishment are too big to fit in here, however.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Taxpayers should not be expected to prop up any theatres or museums that cannot survive on a commercial basis.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Culture is important and should (within reason) be supported by everyone.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Schools should not make classroom attendance compulsory.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Rather make qualifications mandatory for certain activities (like a driver's license) and let people acquire the skills as they like. School is a good way, but it doesn't work for everyone.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;All people have their rights, but it is better for all of us that different sorts of people should keep to their own kind.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Diversity is critical for survival.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Good parents sometimes have to spank their children.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Another difficult one. Pain is a very strong motivator and judicious use of minor violence can work very well as a behaviour modifier. There is a fuzzy line between spanking and abuse, however, and abuse is decidedly bad.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;It's natural for children to keep some secrets from their parents.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Did you tell your mother about your masturbation habits, for example?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Possessing marijuana for personal use should not be a criminal offence.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Same as alcohol, the important thing is not to endanger others by performing dangerous activities with impaired judgement.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;The prime function of schooling should be to equip the future generation to find jobs.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  The prime function of schooling should be to equip the future generation with the knowledge and skills to make the world a better place. Finding jobs is just a subset of that.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;People with serious inheritable disabilities should not be allowed to reproduce.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly disagree&lt;/strong&gt;&lt;br /&gt;  Eugenics doesn't work.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;The most important thing for children to learn is to accept discipline.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  There are many important things a child must learn. Self-discipline works far better than externally imposed discipline.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;There are no savage and civilised peoples; there are only different cultures.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Some cultures are self-destructive and oppressive.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Those who are able to work, and refuse the opportunity, should not expect society's support.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree *&lt;/strong&gt;&lt;br /&gt;  Why should I work to support freeloaders? It's different if they are not able to work.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;When you are troubled, it's better not to think about it, but to keep busy with more cheerful things.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Burying your head in the sand is seldom a good way to solve problems.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;First-generation immigrants can never be fully integrated within their new country.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  That depends far more on the cultural differences and the individuals involved than anything else.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;What's good for the most successful corporations is always, ultimately, good for all of us.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  There are some evil corporations out there.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;No broadcasting institution, however independent its content, should receive public funding.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  As long as there are controls in place to prevent abuse, I see no reason to prohibit this. See comments above about regulation.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Page 4: ... and how you see the wider society.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Our civil liberties are being excessively curbed in the name of counter-terrorism.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Not in this country, but certainly in some other places. Terrorism is being used as an excuse to extend governmental power, and this power is open to massive abuse even if the government has the best of intentions.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;A significant advantage of a one-party state is that it avoids all the arguments that delay progress in a democratic political system.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  This is offset by the significant disadvantage that it's rather difficult to change government or disagree with the rulers. I won't quote Winston Churchill here.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Although the electronic age makes official surveillance easier, only wrongdoers need to be worried.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  &amp;quot;If you give me six lines written by the hand of the most honest of men, I will find something in them which will hang him.&amp;quot; -- Cardinal Richelieu&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;The death penalty should be an option for the most serious crimes.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Mostly as a means of permanently removing a demonstrably unrehabilitatable criminal from society so that he cannot harm anyone else.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;In a civilised society, one must always have people above to be obeyed and people below to be commanded.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  This is phrased in a manner that is just too authoritarian for me to agree with.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Abstract art that doesn't represent anything shouldn't be considered art at all.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Sometimes things are just pretty to look at. Or listen to.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;In criminal justice, punishment should be more important than rehabilitation.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Rehabilitation takes a negative contribution and turns it into a positive contribution. Punishment may be part of the process. What is important is that bad guys are not free to harm others.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;It is a waste of time to try to rehabilitate some criminals.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Emphasis on &amp;quot;some&amp;quot;. When it becomes obvious that rehabilitation attempts are futile, other things need to be resorted to.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;The businessperson and the manufacturer are more important than the writer and the artist.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  The former allow us to survive. The latter allow us to live.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Mothers may have careers, but their first duty is to be homemakers.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  As long as the children are cared for, it doesn't really matter which parent does it or how.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Multinational companies are unethically exploiting the plant genetic resources of developing countries.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  Those resources are available and renewable. Exploitation results in a win for everyone, eventually.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Making peace with the establishment is an important aspect of maturity.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Fighting futilely against something that isn't really doing you any harm is silly. This assumes that the establishment isn't actually repressive.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Page 5: If you got through that okay, you'll find these propositions on religion a breeze.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Astrology accurately explains many things.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly disagree&lt;/strong&gt;&lt;br /&gt;  I don't think I really need to explain this.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;You cannot be moral without being religious.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly disagree&lt;/strong&gt;&lt;br /&gt;  There is a lot of literature out there that deals with the basis of morality. Personally, I try to live by the rule &amp;quot;don't hurt others&amp;quot; but this is not the place for a long discussion.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Charity is better than social security as a means of helping the genuinely disadvantaged.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Agree&lt;/strong&gt;&lt;br /&gt;  Social security disincentivises people helping themselves.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Some people are naturally unlucky.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  &amp;quot;Luck&amp;quot; is a function of way too many variables for such a simplistic view.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;It is important that my child's school instills religious values.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  I have no objection to a school that teaches religion, as long as it does not interfere with other classes (specifically science) and doesn't try to disguise the religion as something else.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Page 6: Finally, a look at sex.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Sex outside marriage is usually immoral.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly disagree&lt;/strong&gt;&lt;br /&gt;  I'm assuming it means &amp;quot;between the unmarried&amp;quot; rather than &amp;quot;between people who are married, but not to each other&amp;quot;. The latter *is* usually immoral since marriage implies a social contract that adultery breaks.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;A same sex couple in a stable, loving relationship, should not be excluded from the possibility of child adoption.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly agree&lt;/strong&gt;&lt;br /&gt;  I know several same-sex couples in stable, loving relationships who would make far better parents than I would.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Pornography, depicting consenting adults, should be legal for the adult population.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly agree&lt;/strong&gt;&lt;br /&gt;  This is a question of censorship.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;What goes on in a private bedroom between consenting adults is no business of the state.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Strongly agree&lt;/strong&gt;&lt;br /&gt;  Unless they're trading state secrets or something, of course.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;No one can feel naturally homosexual.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  I don't really know what this question is asking, but agreement would seem homophobic.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;These days openness about sex has gone too far.&lt;/em&gt;&lt;br /&gt;  &lt;strong&gt;Disagree&lt;/strong&gt;&lt;br /&gt;  It's not appropriate to engage in fellatio in public, but there's certainly no need for sexual matters to be taboo.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;* I had misread the question and originally flipped my answer. Thanks to &lt;a href="http://syllogism.co.za" rel="nofollow"&gt;Colin&lt;/a&gt; for pointing it out.&lt;a name='cutid1-end'&gt;&lt;/a&gt;&lt;br /&gt;And now the result:&lt;br /&gt;Economic Left/Right: 0.12&lt;br /&gt;Social Libertarian/Authoritarian: -3.38&lt;br /&gt;&lt;br /&gt;Over the last year and a half or so, I have wandered around the graph about a third of the way down the Libertarian axis and partly into the Right. This is the most Liberal I have ever been, though. I blame those hippies I associate with every Tuesday night and often in between. Seriously, I suspect a lot of it depends on my mood at the time and I'm vacillating between normal and strong responses on a couple of issues, mostly around regulation.&lt;br /&gt;&lt;br /&gt;Feel free to comment on my answers. I'd also like to see other people do the same thing, so drop me a note if you do.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:45677</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/45677.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=45677"/>
    <title>A note to Audible about DRM</title>
    <published>2008-09-17T08:37:51Z</published>
    <updated>2008-09-22T14:56:46Z</updated>
    <category term="email"/>
    <category term="internet"/>
    <category term="books"/>
    <content type="html">A while ago, I signed up for a subscription with &lt;a href="http://www.audible.com/" rel="nofollow"&gt;Audible&lt;/a&gt;, the internet's leading retailer of audio fiction. Due to DRM issues and my inability to actually listen to their books except under very limited circumstances, I canceled my subscription shortly thereafter. Since then, they have periodically sent me emails with special offers in them to tempt me back. Here is my response to the most recent:&lt;br /&gt;&lt;pre&gt;Good day,

I keep receiving special offers from Audible which appear to be designed to
regain me as a customer. I signed up several months ago in response to an
advert in some podcasts I listen to[1] and was very pleased with the audio
quality and production values of the books I purchased.

However, the DRM restrictions placed on the books required me to change
operating systems and listen to the books on my computer rather than my mobile
mp3 player. Since I primarily listen to audiobooks in the car and at gym, this
is a deal-breaker for me and the reason I canceled my subscription.

The fact that DRM doesn't really work is common knowledge. A brief Google
search yields a number of ways to strip Audible DRM protections from
audiobooks, but all of them require more time and effort than I am willing to
expend. This means that the DRM isn't stopping the pirates (since they are
prepared to put in the effort) but it is stopping legitimate customers, such as
myself.

I believe an Amazon spokesperson has said that if enough people complain,
Audible will consider removing the DRM on their audiobooks.[2] I would very
much like this to be the case. In their current form, Audible books just aren't
very useful to me.

I intend to post the contents of this email on my blog[3], and would like to
post any response I receive as well, although I will obviously respect your
wishes should you ask me not to.

Thank you,
Jeremy Thurgood

[1] Escape Pod (http://escapepod.org), Pesudopod (http://pseudopod.org)
    and Podcastle (http://podcastle.org)

[2] Via Cory Doctorow on BoingBoing:
    http://www.boingboing.net/2008/01/31/amazon-buys-audible.html

[3] http://jerith.livejournal.com/&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I don't really expect a useful response, but hopefully something will be done. As mentioned in the letter, I shall post any response I receive unless they ask me not to.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; I have &lt;a href="http://jerith.livejournal.com/46185.html" rel="nofollow"&gt;received a reply from Audible&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:45508</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/45508.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=45508"/>
    <title>A very disturbing newspaper article</title>
    <published>2008-09-11T08:48:33Z</published>
    <updated>2008-09-11T12:59:31Z</updated>
    <category term="web"/>
    <category term="rant"/>
    <content type="html">... but not necessarily for the reason you think.&lt;br /&gt;&lt;br /&gt;Go read &lt;a href="http://www.iol.co.za/index.php?set_id=1&amp;amp;click_id=3&amp;amp;art_id=nw20080911094052586C108680" rel="nofollow"&gt;this article on IOL entitled "Big Bang experiment marred by suicide"&lt;/a&gt; and consider what the most obvious worrying thing in it is.&lt;br /&gt;&lt;br /&gt;Done? Good. To me, the following quote did it: "Large Hadron Collider (LH&lt;strong&gt;V&lt;/strong&gt;)" (emphasis mine). Sure, the factual errors and minor dissemination of FUD in the article are a problem. The media fixation on a non-existent doomsday threat is a problem, but the girl mentioned almost certainly had far bigger problems that could have been triggered by anything.&lt;br /&gt;&lt;br /&gt;The fact that a major news agency cannot be bothered to properly proofread an article that they're placing before millions of eyes makes me question their competence in everything else they do. I wouldn't care so much if this were a once-off, but it seems to be happening a lot recently.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Looks like they fixed it. See my comment below.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:45192</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/45192.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=45192"/>
    <title>Better late than never</title>
    <published>2008-09-03T09:16:15Z</published>
    <updated>2008-09-03T09:20:29Z</updated>
    <category term="web"/>
    <category term="email"/>
    <category term="variety"/>
    <category term="house"/>
    <category term="rant"/>
    <content type="html">It has come to my attention that it has been far too long since I last wrote in here. Sorry guys, been far too busy living life to write about it.&lt;br /&gt;&lt;br /&gt;I hate those all-in-one-post blog entries that just contain point-form activities, so I'll do mine in paragraphs in random order. (Which is only slightly better.)&lt;br /&gt;&lt;br /&gt;The jazz band has started up again (first real rehearsal tonight) for a gig on the 12th at Kirstenbosch. I don't have any further details, but it's going to be a good one. I only realised during last week's trombone section rehearsal how much I missed Wednesday night jazz. The Dukes band is fun, but the music isn't as challenging (some of it is downright boring, actually, but we need to do it) and we usually have big gaps where we're missing instruments.&lt;br /&gt;&lt;br /&gt;I have been domesticated. I now own a pot and a pan and am actually cooking myself breakfast most mornings. Usually eggs on toast and such, but today I experimented with fried onion as well. I need to tune the herbs I add (basil and thyme were handy, but not that great) and reduce the quantity (a whole onion is too much) but it's an overall win. One of these days I might be able to actually cook some proper food. (Mom, if you're reading this, this paragraph is a lie. I eat muesli and yoghurt for breakfast and cook marvelous and healthy suppers every night.)&lt;br /&gt;&lt;br /&gt;In the last month or so, I have watched most of Doctor Who (the new version) and Torchwood. Definitely near the top of my list of things I really want there to be more of.&lt;br /&gt;&lt;br /&gt;I have received two emails about my Erlang stuff. One was a wonderful ego-boosting thank-you and the other seemed to be a question in a language my browser refuses to display except as hex-runes.&lt;br /&gt;&lt;br /&gt;On browsers: I finally updated to Firefox 3 on my primary machine. Two things had been delaying this. Two extensions I really struggle without (Chromatabs and Tab Mix Plus) didn't have fx3 versions. They both now have beta versions (although in the case of the former it's actually a new extension). Fx3 really struggles with malformed certificates and won't let you add an exception to visit the site anyway. I think this is still the case, but the one site I relied on with a broken cert has finally fixed it. I quite like the new UI. The biggest win has to be that auth windows and plugin loads no longer lock the whole browser, something that had &lt;em&gt;really&lt;/em&gt; irritated me in fx2.&lt;br /&gt;&lt;br /&gt;Tomorrow morning shall see me giving my flat a much-overdue clean in preparation for the arrival of a houseguest. I should probably finish putting up my last blind, too. (&lt;span  class="ljuser  i-ljuser     "  lj:user="pkeike"&gt;&lt;a href="http://pkeike.livejournal.com/profile" &gt;&lt;img width="16" height="16"  class="i-ljuser-userhead"  src="http://l-stat.livejournal.com/img/userinfo.gif?v=104.1" /&gt;&lt;/a&gt;&lt;a href="http://pkeike.livejournal.com/" class="i-ljuser-username"   &gt;&lt;b&gt;pkeike&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;, if you're reading this, ignore this paragraph. My flat is always spotless and I did nothing special to prepare for your arrival.)&lt;br /&gt;&lt;br /&gt;And now, a rant:&lt;br /&gt;Dear Google, please give me a version of &lt;a href="http://www.google.com/chrome" rel="nofollow"&gt;Chrome&lt;/a&gt; I can actually use. I realise that most of your userbase is quite happy with a Windows-only version, but some of us prefer an OS that isn't actively hostile. At the very least, can we have one that works in &lt;a href="http://www.winehq.org/" rel="nofollow"&gt;wine&lt;/a&gt; By alienating a large class of free-software developers you're not buying any favours. Yours, $linux_lad.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:44914</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/44914.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=44914"/>
    <title>Ruby again, part two.</title>
    <published>2008-07-17T06:12:06Z</published>
    <updated>2008-07-17T06:12:06Z</updated>
    <category term="programming"/>
    <category term="ruby"/>
    <content type="html">This is a continuation of my &lt;a href="http://jerith.livejournal.com/44750.html" rel="nofollow"&gt;previous post&lt;/a&gt;, based on new information.&lt;br /&gt;&lt;br /&gt;I shall quote &lt;span  class="ljuser  i-ljuser     "  lj:user="chalain"&gt;&lt;a href="http://chalain.livejournal.com/profile" &gt;&lt;img width="16" height="16"  class="i-ljuser-userhead"  src="http://l-stat.livejournal.com/img/userinfo.gif?v=104.1" /&gt;&lt;/a&gt;&lt;a href="http://chalain.livejournal.com/" class="i-ljuser-username"   &gt;&lt;b&gt;chalain&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; directly:&lt;br /&gt;&lt;br /&gt;&amp;lt;Chalain&amp;gt; It's a combination of two things.&lt;br /&gt;&amp;lt;Chalain&amp;gt; 1. Ruby allows you to drop the semicolon if a statement parses to a complete expression. So the 3+2 gets parsed as an expression.&lt;br /&gt;&amp;lt;Chalain&amp;gt; 2. "Everything returns" in Ruby. Like most languages, you can accumulate return values on the stack, and they get ignored.&lt;br /&gt;&amp;lt;Chalain&amp;gt; So&lt;br /&gt;&amp;lt;Chalain&amp;gt; (3+2; +4) is a legal expression. It returns 4.&lt;br /&gt;&amp;lt;Chalain&amp;gt; A legitimate use of this would be, for example, (puts "It broke!"; logger.error 'It broke") if x&amp;gt;0&lt;br /&gt;&lt;br /&gt;So, it's deliberate behaviour rather than a parser snafu. I am still of the opinion that it is broken, I have just changed where I'm pointing. I don't think parentheses should be used in this way. There is a perfectly good multi-expression conditional syntax, and it puts the &lt;tt&gt;if&lt;/tt&gt; at the beginning rather than the end. Parentheses should enclose a single expression only rather than trying to be braces or begin/end as well.&lt;br /&gt;&lt;br /&gt;Ruby is full of little things like this, where small wins and "it would be nice" features litter the language with booby traps.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:44750</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/44750.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=44750"/>
    <title>Ruby again. This time the parser.</title>
    <published>2008-07-16T15:44:44Z</published>
    <updated>2008-07-17T06:14:10Z</updated>
    <category term="programming"/>
    <category term="ruby"/>
    <category term="rant"/>
    <content type="html">Disclaimer: The following was written while I was furious and frustrated. Please bear this in mind if anything offends you.&lt;br /&gt;&lt;br /&gt;Until I came to my senses, I had actually fired up an editor to update my CV so I could find a job that wouldn't require me to fight with the festering pile of yuckiness that is Ruby. Consider the following irb session:&lt;br /&gt;&lt;pre&gt;&amp;gt;&amp;gt; (1 + 2 +
?&amp;gt;     4)
=&amp;gt; 7
&amp;gt;&amp;gt; (1 + 2
&amp;gt;&amp;gt;   + 4)
=&amp;gt; 4&lt;/pre&gt;&lt;br /&gt;As far as I can tell, if the linebreak results in two valid expressions, the first is thrown away and the second is used. Why this is the case, I have no idea. All I can surmise is that whoever wrote that bit of the parser was smoking crack. The fact that this hasn't been picked up and fixed just demonstrates that the Ruby community completely fails to care about quality. I can't even find reference to it on the internet.&lt;br /&gt;&lt;br /&gt;Ruby has long been way down on my list of languages to use. It has just dropped into the same class as PHP and Visual Basic. Congratulations, Ruby. I didn't think you could get worse. You did.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Edit:&lt;/strong&gt; &lt;em&gt;This saga continues in &lt;a href="http://jerith.livejournal.com/44914.html" rel="nofollow"&gt;a new post&lt;/a&gt;.&lt;/em&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:44116</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/44116.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=44116"/>
    <title>Zimbabwe sanctions... or not</title>
    <published>2008-07-12T08:15:02Z</published>
    <updated>2008-07-12T08:15:02Z</updated>
    <category term="politics"/>
    <content type="html">Have a look at the following BBC news article:&lt;br /&gt;&lt;br /&gt;&lt;a href='http://news.bbc.co.uk/2/hi/africa/7503135.stm' rel='nofollow'&gt;http://news.bbc.co.uk/2/hi/africa/7503135.stm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now consider this. South Africa had sanctions imposed (and rightly so) because a legally elected government was oppressing part of its population. Zimbabwe &lt;em&gt;doesn't&lt;/em&gt; have sanctions imposed because an illegal government is oppressing all of its population?&lt;br /&gt;&lt;br /&gt;This whole thing makes me sick and is a reminder of why I should stay as far from politics as I possibly can.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:43784</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/43784.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=43784"/>
    <title>Don't bring thin skin to the internet</title>
    <published>2008-07-02T18:31:59Z</published>
    <updated>2008-07-02T18:38:50Z</updated>
    <category term="programming"/>
    <category term="internet"/>
    <content type="html">I had an all-too-frequent argument this evening. This resulted (as it occasionally does) with the other person storming off in a huff, all offended. The conversations usually goes something like this:&lt;br /&gt;&lt;br /&gt;Him: I like $broken_technology.&lt;br /&gt;Me: $broken_technology is very seldom a good idea. Why do you like it?&lt;br /&gt;Him: Because $common_misconception.&lt;br /&gt;Me: Actually, that's a common misconception. $correction.&lt;br /&gt;Him: But are there any $not_broken_technology things that do $common_misconception_thing.&lt;br /&gt;Me: Yes, plenty. For example, $thing.&lt;br /&gt;Him: Um, but $other_misconception.&lt;br /&gt;Me: Actually, $other_correction.&lt;br /&gt;Him: You people are a pack of technobigots! *storms off in a huff*.&lt;br /&gt;&lt;br /&gt;Part of the problem is that I suffer from &lt;a href="http://xkcd.com/386/" rel="nofollow"&gt;SIWOTI Syndrome&lt;/a&gt;. I find it incredibly difficult to just let people sabotage themselves because they believe something that is not true. Part of the problem is that I want to teach people to think rationally about their behaviours and motivations, because it's the only way to avoid muddling around in a fug of lies and excuses. Part of the problem is that I get too emotionally invested in trying to better the lives of strangers when I can see exactly where they are making their mistakes and have the data to back it up.&lt;br /&gt;&lt;br /&gt;Also, to be perfectly honest, I like to be right. I like to dispense wisdom. I enjoy being the expert people come to when they have a programming problem. Being the authority is nice. It makes me all warm and fuzzy when people do something better because of advice I gave them.&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;real&lt;/strong&gt; problem is that people don't like to be wrong. Thinking is hard. The misconceptions are comfortable old friends. The work they have done under those misconceptions represents effort that they may need to throw away. This makes people defend their misconceptions. It also makes them see an attack on a misconception as an attack on them personally.&lt;br /&gt;&lt;br /&gt;This is where the subject comes in. As soon as you take anything on the internet personally, you're opening yourself up to pain. It hurts me when my laboriously collected wisdom is written off as bigotry. It hurts you a lot more when you take a request for data backing up your assertions as "getting ganged by zealots".&lt;br /&gt;&lt;br /&gt;I don't really have a good answer. I could probably be a bit more diplomatic, but it's difficult to say "you're not making sense" in a way that doesn't offend those with delicate sensibilities. I could just ignore people being wrong, but occasionally I do enlighten some poor soul who has merely been led astray by the propaganda machines and is capable of becoming a useful and productive member of the community. (That's not to say the others aren't, just that they need to shed some ego first.)&lt;br /&gt;&lt;br /&gt;Another side effect of my SIWOTI is that I often come across as arrogant. Sometimes this is me misjudging the level at which to pitch my explanations and coming across as patronising (if I pitch too low) or elitist (if I pitch too high). Then if I ask a few questions to judge background, I'm interrogating instead of helping. Sometimes it's because I tell people they're wrong. If I kept quiet or only answered the questions asked, even when they pointed to deeper misunderstandings or flaws, I could avoid these issues. But then people would keep being wrong. And we can't have that.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:43768</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/43768.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=43768"/>
    <title>Idiocy on residential roads</title>
    <published>2008-05-18T09:04:29Z</published>
    <updated>2008-05-18T09:04:29Z</updated>
    <category term="random"/>
    <category term="idiots"/>
    <category term="rant"/>
    <content type="html">Dear white minibus, registration CA 688-820,&lt;br /&gt;&lt;br /&gt;Stopping on the side of the road (even the wrong side of the road) while the driver goes into a house on a residential road is fine. Doing so next to the only other parked vehicle on the other side of the road, leaving a space too narrow for anyone to drive through is, however, antisocial to the highest degree. Doing this when there is no alternative route that does not require getting back onto a busy main road is positively psychotic.&lt;br /&gt;&lt;br /&gt;No love,&lt;br /&gt;Me.&lt;br /&gt;&lt;br /&gt;Further to the above, a note to the pedestrian who stopped on the corner, looked at my car with its indicator on, and then proceeded to cross the road I was turning into just as I turned into it: The only reason I stopped is that I don't want to have to deal with police on a Sunday. Next time, you &lt;em&gt;will&lt;/em&gt; be run over.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:43333</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/43333.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=43333"/>
    <title>This one isn't really Ruby's fault</title>
    <published>2008-05-15T17:35:27Z</published>
    <updated>2008-05-15T17:35:27Z</updated>
    <category term="programming"/>
    <category term="ruby"/>
    <content type="html">Consider the following regular expression, designed to validate a tab-separated string and extract data from it:&lt;br /&gt;&lt;pre&gt;&amp;gt;&amp;gt; t = "a\tx\tb"
=&amp;gt; "a\tx\tb"
&amp;gt;&amp;gt; re = Regexp.new("a\t\S\tb")
=&amp;gt; a    S       b
&amp;gt;&amp;gt; re.match(t)
=&amp;gt; nil
&amp;gt;&amp;gt; re = Regexp.new("a\t[^\t]\tb")
=&amp;gt; a    [       ]       b
&amp;gt;&amp;gt; re.match(t)
=&amp;gt; #&amp;lt;MatchData:0xb7e57c90&amp;gt;&lt;/pre&gt;&lt;br /&gt;This, at first, had me glaring at the docs for Ruby's regular expressions to make sure &lt;tt&gt;\S&lt;/tt&gt; was implemented as I expected. The second version was &lt;em&gt;more&lt;/em&gt; restrictive, yet it matched where the first version failed. After a few minutes' fuming, I got the inklings of an idea and tried the following:&lt;br /&gt;&lt;pre&gt;&amp;gt;&amp;gt; re = Regexp.new('a\t\S\tb')
=&amp;gt; atStb
&amp;gt;&amp;gt; re.match(t)
=&amp;gt; #&amp;lt;MatchData:0xb7b411dc&amp;gt;
&amp;gt;&amp;gt; re = /a\t\S\tb/
=&amp;gt; atStb
&amp;gt;&amp;gt; re.match(t)
=&amp;gt; #&amp;lt;MatchData:0xb7ae8c1c&amp;gt;&lt;/pre&gt;&lt;br /&gt;Then it hit me. See, Ruby double-quoted strings interpret escape chars. The reason &lt;tt&gt;\t&lt;/tt&gt; worked above was pure coincidence -- it evaluates to a tab literal, which is treated the same as &lt;tt&gt;\t&lt;/tt&gt; in a regex. Thus, in my original case (turning a bunch of strings into regexen) I could use single-quoted strings if I didn't have to interpolate values into them. Unfortunately I do. For reasons unrelated to this post, I can't use regex literal syntax which allows interpolation but does not evaluate escape characters.&lt;br /&gt;&lt;br /&gt;Once again, Ruby foils me. This time, however, it managed to foil a righteously indignant rant about regex escape sequence handling. Go figure.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:43112</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/43112.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=43112"/>
    <title>Another open letter</title>
    <published>2008-05-01T19:33:19Z</published>
    <updated>2008-05-02T06:07:39Z</updated>
    <category term="open letter"/>
    <category term="frustration"/>
    <content type="html">Dear people at Landis+Gyr,&lt;br /&gt;&lt;br /&gt;Thank you very much for selling my landlord one of your remarkable prepaid electricity meters. Since it is a remarkable meter, I shall remark upon it. Hence this open letter. The particular unit upon which I shall remark is a CASHPOWER CIU 3.&lt;br /&gt;&lt;br /&gt;This unit has a marvelous feature whereby it will helpfully beep at you loudly when it thinks you need to buy more electricity. What is not quite so marvelous, however, is the time period during which it decides to do this. I have let my electricity supply run low enough to trigger the warning twice. The first time, I was awoken at about 03h30 and the second 01h45. Now, while the fact that I have a mere two days' credit left may be dire enough to warn me, doing so at a time when I am entirely unable to go out and purchase more seems somewhat counterproductive.&lt;br /&gt;&lt;br /&gt;In an effort to figure out just what triggers this warning, I sought documentation, as any rational member of this technological age would, on the internet. I came up with absolutely nothing of any use to me. I suspect some kind of internal counter is being checked, since my usage was different both times and the offending credit remaining was approximately 32kWh.&lt;br /&gt;&lt;br /&gt;While I am on the topic, it would be much appreciated if future versions of this device would include a backlit display so that when one is dragged from bed by the insistent call of the electricity meter, one does not have to fumble for a light source before investigating.&lt;br /&gt;&lt;br /&gt;Also, the cheery little tune played when new credit is entered does not make up for the interrupted sleep.&lt;br /&gt;&lt;br /&gt;Yours,&lt;br /&gt;jerith</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:42925</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/42925.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=42925"/>
    <title>The Great Train Jol</title>
    <published>2008-04-28T17:26:52Z</published>
    <updated>2008-04-28T17:30:55Z</updated>
    <category term="saga"/>
    <category term="train"/>
    <category term="cape town"/>
    <content type="html">A week or so ago, a certain &lt;a href="http://www.arbitraryuser.com/blog/2008/04/21/train-party-2008/" rel="nofollow"&gt;Jonathan&lt;/a&gt; decided it would be a good idea to take the train down the peninsula and have a day of fun and relaxation on the public holiday. Since I live about 150m from the Diep River station, I was the last person to hop on the train as it headed south and the jol&lt;sup&gt;&lt;a href="#foot1" name="ref1" rel="nofollow"&gt;1&lt;/a&gt;&lt;/sup&gt; was already in full swing. We enjoyed the relaxing trip down to Kalk Bay, although there was the occasional mild panic to figure out which station we were at to make sure we didn't overshoot.&lt;br /&gt;&lt;br /&gt;We got to Kalk Bay at around 10 and went wandering down to the pier to look at the fishermen and watch the seals playing. When we got tired of that, we found a coffee shop/restaurant/eatery that purportedly sold sushi (although we were too early for that) and breakfast (although we were almost too late for that) and beer (which was warm). I held out and had a coffee first time around, but snagged a spare Windhoek with the second round when the waitress brought too many of those and not enough Heinekens. After some juggling of varying-denomination paper money, we had the bill paid and train fares sorted out. (Jonathan had bought a stack of tickets, we needed to repay him and he needed to dish out some change.)&lt;br /&gt;&lt;br /&gt;After that, some of us headed down to the bookshops and antique dealers and browsed a bit while the rest went and did their own thing. We were starting to get peckish, so we arrived at the &lt;a href="http://www.brassbell.co.za/" rel="nofollow"&gt;Brass Bell&lt;/a&gt; about 45 minutes early for our lunch reservation. Our table was ready anyway, so we had more beer and waited for the other half of the party to catch up before we did the food thing. There is an unwritten rule that when you go to Kalk Bay by train, lunch is fish and chips. &lt;a href="http://graham.poulter.googlepages.com/" rel="nofollow"&gt;Graham&lt;/a&gt; missed this somewhere, and had to send his burger back to be reheated.&lt;br /&gt;&lt;br /&gt;After lunch, we got back on the train and went to Simonstown. We wandered around a bit and ended up at a place where they do awesome ice cream. I don't know about the ice cream, but they do really yummy pancakes. After chilling there for a while, we marched back up to the station and caught the train back home. My jol ended a bit prematurely when I got off before anyone else, but it was an awesome day nonetheless. We really should do this more often.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="#ref1" name="foot1" rel="nofollow"&gt;1&lt;/a&gt;. For readers abroad: The word jol, like the word kief, is a generic South African word. It refers to having a good time and is used in any context. "I am going on a jol (party)." "I am having a jol (good time)." "That spectacular wipeout at Super Tubes was a jol (rush)." -- &lt;a href="http://www.wavescape.co.za/bot_bar/surfrikan/slang.html#j" rel="nofollow"&gt;Surfrikan Slang&lt;/a&gt;&lt;/small&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:42745</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/42745.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=42745"/>
    <title>On Ruby</title>
    <published>2008-04-22T08:49:47Z</published>
    <updated>2008-04-22T09:17:49Z</updated>
    <category term="programming"/>
    <category term="ruby"/>
    <content type="html">A programmer I admire greatly twittered the following today:&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;Dear Ruby haters: I used to be afraid of the table saw until I learned how to use it safely. This did not involve nerfing the table saw.&lt;/em&gt;&lt;/blockquote&gt;I have great respect for this man, but we have a fundamental disagreement about a language he uses by choice and I use by necessity. I have a bunch of disagreements with the language, but my real problem is with the community. To continue with the power tool analogy, Ruby is a table saw with all sorts of dangerous fittings on it. It is powerful, and in skilled hands it can be exceedingly useful. However, part of the power is that it is easy to replace bits of the drive train or add extra blades as requires. Now, this is a non-issue in skilled hands. The problem is that many of the extra fittings and modifications are not built by skilled hands, including the manufacturer-supplied brand-stamped officially-approved ones. These dodgy fittings usually work fine, but can occasionally unleash a maelstrom of whirling metallic doom.&lt;br /&gt;&lt;br /&gt;Back to reality from the analogy. The Ruby culture seems to value "clever" code and metaprogramming even when there are better alternatives. Individual programmers or competent teams can overcome this bias, but eventually they are going to want to use third-party code or some of the darker corners of the standard library. This is where the pain really starts.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:42256</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/42256.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=42256"/>
    <title>SMS spam insanity</title>
    <published>2008-04-10T15:49:54Z</published>
    <updated>2008-04-11T15:04:03Z</updated>
    <category term="phone"/>
    <category term="spam"/>
    <category term="rant"/>
    <content type="html">I received the following SMS today:&lt;br /&gt;&lt;tt&gt;Need airtime?Buy it with your Visa or Visa Electron card at most supermarkets. No need to draw cash- U get 1 eXactcredit-To stop msgs,sms STOP SMS to 32227(R1)&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;Firstly, this is pure spam. Secondly, they want to charge me to use a premium service to remove myself from their list. This is, to me, completely unacceptable.&lt;br /&gt;&lt;br /&gt;I did some research. It turns out that there is an organisation called &lt;a href="http://www.waspa.org.za/index.shtml" rel="nofollow"&gt;WASPA&lt;/a&gt; that deals with Wireless Application Providers. Their &lt;a href="http://www.waspa.org.za/members/index.php" rel="nofollow"&gt;list of members&lt;/a&gt; includes eXactmobile, which seems to fit the message ("eXactcredit"). They also have a &lt;a href="http://www.waspa.org.za/code/codeconduct.shtml" rel="nofollow"&gt;code of conduct&lt;/a&gt;, from which I have copied the (abridged) relevant part:&lt;br /&gt;&lt;blockquote&gt;5. Commercial communications&lt;br /&gt;&lt;br /&gt;5.1. Sending of commercial communications&lt;br /&gt;&lt;br /&gt;5.1.1. All commercial messages must contain a valid originating number and/or the name or identifier of the message originator.&lt;br /&gt;&lt;br /&gt;5.1.2. Any message originator must have a facility to allow the recipient to remove his or herself from the message originator’s database, so as not to receive any further messages from that message originator.&lt;br /&gt;&lt;br /&gt;5.1.3. Any mechanism for allowing a recipient to remove him or herself from a database must not cost more than one rand.&lt;br /&gt;&lt;br /&gt;5.1.7. Upon request of the recipient, the message originator must, within a reasonable period of time, identify the source from which the recipient’s personal information was obtained.&lt;br /&gt;&lt;br /&gt;5.2.1. Any commercial message is considered unsolicited (and hence spam) unless:&lt;br /&gt;&lt;br /&gt;   1. the recipient has requested the message;&lt;br /&gt;   2. the message recipient has a direct and recent prior commercial relationship with the message originator and would reasonably expect to receive marketing communications from the originator; or&lt;br /&gt;   3. the organisation supplying the originator with the recipient’s contact information has the recipient’s explicit consent to do so.&lt;br /&gt;&lt;br /&gt;5.3.1. Members will not send or promote the sending of spam and will take reasonable measures to ensure that their facilities are not used by others for this purpose.&lt;br /&gt;&lt;br /&gt;5.3.2. Members will provide a mechanism for dealing expeditiously with complaints about spam originating from their networks.&lt;/blockquote&gt;&lt;br /&gt;This message is definitely spam and, although the opt-out message meets the WASPA requirements, I see a paid unsubscribe mechanism as extortion.&lt;br /&gt;&lt;br /&gt;I have contacted both eXactmobile and WASPA (the latter because I am not entirely certain that eXactmobile is the culprit). Updates when I hear from them.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; eXactmobile phoned me, and have removed my number from their db. It turns out that I was in there because I signed up for something five years ago and didn't uncheck the "you're allowed to send me crap" button. Go figure. Bonus points to WASPA for sorting it out quickly.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:42141</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/42141.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=42141"/>
    <title>An open letter to developers of autoupdating apps.</title>
    <published>2008-04-09T14:49:04Z</published>
    <updated>2008-04-09T14:49:04Z</updated>
    <category term="computers"/>
    <category term="rant"/>
    <content type="html">Dear person who writes software with an autoupdater,&lt;br /&gt;&lt;br /&gt;I live in a country where the internet is very slow and very expensive. I really like your application, and I would &lt;em&gt;love&lt;/em&gt; to be running the latest, greatest version of it, but please let me decide when to update. You have no idea whether I am on free wireless at a coffee shop, the office's ADSL connection or my cellphone's GPRS.&lt;br /&gt;&lt;br /&gt;Appropriate behaviour is to tell me that an update is available and then make a discreet "yes, I would like to update now" button available. This notification should not block what I am doing. This notification should not require immediate attention. There are two unforgivable sins in the autoupdate world:&lt;br /&gt;&lt;br /&gt;1. Downloading tens or hundreds of megabytes without permission.&lt;br /&gt;&lt;br /&gt;2. Requiring an unconditional restart.&lt;br /&gt;&lt;br /&gt;The first is obvious once you consider that not everyone using your software lives in a first-world country with unlimited cheap bandwidth. The second should be obvious everywhere. If you must restart to complete the update, let us know ahead of time. Let &lt;em&gt;us&lt;/em&gt; decide when to restart. Don't tell us the restart will happen in thirty seconds unless we say no.&lt;br /&gt;&lt;br /&gt;Yours sincerely,&lt;br /&gt;The guy who lost data and incurred nontrivial bandwidth charges.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:41750</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/41750.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=41750"/>
    <title>More Ruby sadness</title>
    <published>2008-04-08T12:25:14Z</published>
    <updated>2008-04-08T12:26:07Z</updated>
    <category term="programming"/>
    <category term="ruby"/>
    <content type="html">Some more hard-to-debug behaviour in Ruby, this time coming from a simple tyop. Consider the following function, noting the misspelling of &lt;tt&gt;elsif&lt;/tt&gt;:&lt;br /&gt;&lt;pre&gt;&amp;gt;&amp;gt; def testfoo(foo)
&amp;gt;&amp;gt;     if foo.nil?
&amp;gt;&amp;gt;       puts "foo is nil"
&amp;gt;&amp;gt;     elseif foo.empty?
&amp;gt;&amp;gt;       puts "foo is empty"
&amp;gt;&amp;gt;     else
&amp;gt;&amp;gt;       puts "foo is #{foo}"
&amp;gt;&amp;gt;     end
&amp;gt;&amp;gt;   end
=&amp;gt; nil&lt;/pre&gt;&lt;br /&gt;Now, consider calling this function:&lt;br /&gt;&lt;pre&gt;&amp;gt;&amp;gt; testfoo("foo")
foo is foo
=&amp;gt; nil&lt;/pre&gt;In this case, all is good.&lt;br /&gt;&lt;pre&gt;&amp;gt;&amp;gt; testfoo("")
foo is 
=&amp;gt; nil&lt;/pre&gt;In this case, we get no error but the wrong thing happens.&lt;br /&gt;&lt;pre&gt;&amp;gt;&amp;gt; testfoo(nil)
foo is nil
NoMethodError: undefined method `empty?' for nil:NilClass
        from (irb):4:in `testfoo'
        from (irb):14
        from :0
&amp;gt;&amp;gt; &lt;/pre&gt;Only in this case do we see a problem, and it's not a problem that makes sense, because we're testing for &lt;tt&gt;nil&lt;/tt&gt; above.&lt;br /&gt;&lt;br /&gt;The issue here is that Ruby fails to check whether the functions you're calling actually exist. Of course, in the world of &lt;tt&gt;method_missing&lt;/tt&gt;, this is impossible. It could, however, at least check if &lt;tt&gt;method_missing&lt;/tt&gt; is defined. The really dangerous thing is that &lt;tt&gt;nil&lt;/tt&gt; might be an edge case and thus almost never occur, which just goes to show that proper unit test coverage is critical.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:41505</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/41505.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=41505"/>
    <title>New term: user-coddlement</title>
    <published>2008-04-01T13:51:06Z</published>
    <updated>2008-04-01T13:58:30Z</updated>
    <category term="programming"/>
    <category term="random"/>
    <content type="html">I came up with this on the spur of the moment and it seems that nobody else has used it within the reach of &lt;a href="http://www.google.com" rel="nofollow"&gt;your favourite search engine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;User-coddlement (n):&lt;br /&gt;  An annoying modification made to a piece of software specifically to assist users who really should know better.&lt;br /&gt;&lt;br /&gt;Examples:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"Are you sure?" confirmations on non-destructive operations.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Randomly chosen defaults to "protect" people from having to make decisions.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Adding verbosity to everything in case the user hasn't looked at the documentation.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:41316</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/41316.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=41316"/>
    <title>Birthdays, wine and randomness</title>
    <published>2008-04-01T08:49:26Z</published>
    <updated>2008-04-01T08:49:26Z</updated>
    <category term="interesting"/>
    <category term="random"/>
    <category term="geekdinner"/>
    <category term="hivemind"/>
    <content type="html">Last night was the &lt;a href="http://wiki.geekdinner.org.za" rel="nofollow"&gt;Garrulous Grape GeekDinner&lt;/a&gt;, seventh in the series. A bunch of interesting people (mostly techies, but we had at least one &lt;a href="http://greenman.co.za/" rel="nofollow"&gt;hippie&lt;/a&gt;) met at Greens in Plattekloof for an evening of conversation, heckling, food, &lt;a href="http://www.clink-to-win.co.za/" rel="nofollow"&gt;wine&lt;/a&gt; and generally being around like-minded people.&lt;br /&gt;&lt;br /&gt;The food was marvelous, even better than I have come to expect from Greens. The wine was also really good (at least, the cab sav was -- I had half a bottle of that and didn't get to any of the others) and was, as is the case at all the geekdinners, free. This time, it was sponsored by &lt;a href="http://www.perdeberg.co.za/" rel="nofollow"&gt;Perdeberg&lt;/a&gt; who I had previously never heard of, but are now on my list of places to buy from.&lt;br /&gt;&lt;br /&gt;Also noteworthy, today is the tenth birthday of &lt;a href="http://www.leonjacobs.com/?p=38" rel="nofollow"&gt;the best mailing list on the tubes&lt;/a&gt;. I had heard of the Hivemind long before I joined, but didn't fully grok the depth of its usefulness and entertainment value until I caved in and joined. Since then I have mercilessly attacked the current copyright system, vehemently defended rationality and science against superstition and learned a lot about politics, economics and how to prod the &lt;a href="http://ivo.co.za/" rel="nofollow"&gt;Ivobot&lt;/a&gt; &lt;em&gt;just&lt;/em&gt; so.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:jerith:41205</id>
    <link rel="alternate" type="text/html" href="http://jerith.livejournal.com/41205.html"/>
    <link rel="self" type="text/xml" href="http://jerith.livejournal.com/data/atom/?itemid=41205"/>
    <title>Ruby and Documentation: a rant</title>
    <published>2008-03-31T08:03:48Z</published>
    <updated>2008-03-31T08:03:48Z</updated>
    <category term="programming"/>
    <category term="ruby"/>
    <category term="rant"/>
    <content type="html">Why is it that people seem to think that &lt;a href="http://dev.ctor.org/doc/soap4r/" rel="nofollow"&gt;autogenerated "API references"&lt;/a&gt; count as documentation?&lt;br /&gt;&lt;br /&gt;If I am looking at a new library, I want a tutorial and an overview of the major features. I'm happy to dive into code and API references once I know more or less what I need to look at but &lt;em&gt;please&lt;/em&gt;, for the sake of all the little children and their puppies, give me somewhere to bloody start!&lt;br /&gt;&lt;br /&gt;Now that I have that out of my system, it's time to dive into this mess and see if I can figure out what I need.</content>
  </entry>
</feed>
