<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title>Ultraq's Final MooCow</title>
        <link>http://www.ultraq.net.nz/</link>
        <description>Bits and pieces by Emanuel Rabina</description>
        <language>en</language>
        <pubDate>Mon, 15 Apr 2013 22:53:32 +1200</pubDate>
        <lastBuildDate>Mon, 15 Apr 2013 22:53:32 +1200</lastBuildDate>
        <generator>Final MooCow 7.x</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        <ttl>720</ttl>
        <image>
            <url>http://www.ultraq.net.nz/images/Icon_MooCow.png</url>
            <title>Ultraq's Final MooCow</title>
            <link>http://www.ultraq.net.nz/</link>
        </image>
        <atom:link href="http://www.ultraq.net.nz/feed/" rel="self" type="application/rss+xml"/>
        <item>
            <title>Book Club book #6: Cloud Atlas</title>
            <link>http://www.ultraq.net.nz/blog/BookClubBook6_CloudAtlas</link>
            <description><![CDATA[<p>The time finally came around for me to pick a book, and it was around this time that I started hearing about a movie making the rounds in the US called <i>Cloud Atlas</i>.  The trailer had me intrigued, so I thought I'd be one of the people who was trying to cram the book version into their heads before they tried to cram the movie version into their heads.</p>

<p>At the time, the release schedule for <i>Cloud Atlas</i> in New Zealand was for the end of February 2013, so our book club planned to have our first book club movie night, watching <i>Cloud Atlas</i> the movie, just after we had finished reading <i>Cloud Atlas</i> the book.  February came, and <i>Cloud Atlas</i> mysteriously vanished from movie listings.  After another month of waiting, I started ringing-up cinemas to find out what happened.  Nobody had any explanation for what happened, but they repeated what I had started to fear: that the movie had been pulled from being released in New Zealand, possibly due to poor overseas performance at the box office.</p>

<p>If there was anything to learn from <i>Cloud Atlas</i>, both the book and the lack of a movie, is that they were both exercises in setting my expectations, and to be ready when things start to disappoint.</p>

<article class="review">
<header>
  <h2>Cloud Atlas</h2>
  <div class="info">
    <span class="item-details">Book, $11.10 USD on Kindle, written by David Mitchell, <a class="item-link" href="http://www.amazon.com/Cloud-Atlas-ebook/dp/B002VHI8J0/">http://www.amazon.com/Cloud-Atlas-ebook/dp/B002VHI8J0/</a></span>
  </div>
</header>

<figure class="review-image">
  <img src="http://upload.wikimedia.org/wikipedia/en/3/38/Cloud_atlas.jpg" alt="Cloud Atlas cover" height="300px" />
</figure>

<p><i>Cloud Atlas</i> seems to me like a strange little experiment in an alternative story-telling method.  The overall story is about the lives of several people throughout the span of human history: from the age of sail and exploration, to a very distant post-apocalyptic future.  Each of the individual stories told across the ages are connected in some way.</p>

<p>When it comes to telling each separate story, David Mitchell does this by starting the one furthest in the past first, then at the half-way point it cuts-off to start telling the second story.  When the second story reaches about half-way, it stops to then tell the third story, and so on until we get to the sixth story which gets told to completion.  When that one finishes, the fifth story concludes, then the fourth, and so on until we complete the first, and thus all, the stories.</p>

<p>The first story is about a man sailing across the Pacific, the second story is about a young man trying to find his fortune as an assistant to a master composer, the third story is about a woman reporter uncovering some kind of corporate conspiracy, the fourth is of an older man down on his luck as a publisher, the fifth is about a female... synthetic human (???  It's like super AI and cyborg technology), and the last is about a young man on some island in a post-apocalyptic world.</p>

<p>The way I was introduced to the 'everything is connected' idea in the movie trailer, I thought the book was really going to play on how each of those lives had some direct effect on the others.  The reality however, was that the connections weren't pretty few and tame: an artefact from one life was present in another, some of the characters maybe shared the same birth mark... and that was about it.  No life really had any direct effect on the other as each life was more of a passive observer into the life that came before.</p>

<p>It was my greatest expectation that this interconnectedness was critical to the plot, and as I read through each new story I had more and more hopes that something was actually going to happen with it.  But after I passed the mid-way point in the book and each story started unravelling in reverse chronological order, my expectations were shattered again, and again, and again.</p>

<p>By the end of the book, I instead felt that I had just read 6 very separate stories, in some ridiculous order, bundled together under some title that barely featured in the book at all!  Hell, even the last sentences had nothing to do with 'clouds' or 'atlases', and we instead get some metaphor about the ocean?</p>

<p>What.  The.  Fuck.</p>

<p>My expectations for the book had been broken six times over, and I was telling the book club at our next meeting that I seriously hoped that the movie was going to be better.  Of course, that was before I learned that the movie had been pulled from NZ cinemas and had my expectations broken for a seventh time.</p>

<p>Is there anything good I can say about this book?  Plenty: the writing was top-notch (styles varied depending on the era, even going so far as to create a dialect for the far-flung future eras), the characters I could sympathize with, and the individual stories were all enjoyable to read in their own right.  So I was never bored as I made my way through each of the stories.</p>

<p>However, as each story ended, I was never happy either.  The overall package made no sense, and I struggle to think of what the reason is in putting all these stories together.  I didn't come away from the book feeling enlightened, and I didn't really learn anything new.  It all just felt meaningless.</p>

<figure>
  <img src="http://www.ultraq.net.nz/images/blog/BookClubBook6_CloudAtlas_MeaninglessConversation.png" alt="I look forward to having a meaningless conversation with you" width="300px"/>
</figure>

<p>That might just be me though: the movie had me expecting one thing, and when I went to the book for it, it failed to deliver.  If I ever get the chance to watch the movie, I really hope it'll be better.  Then again, given the movie was pulled due to poor overseas performance, maybe I'm just setting myself up for disappointment again.</p>

<p>5.5 out of 10.</p>
</article>
]]></description>
            <category domain="http://www.ultraq.net.nz/blog/">Books</category>
            <category domain="http://www.ultraq.net.nz/blog/">Reviews</category>
            <category domain="http://www.ultraq.net.nz/blog/">Book Club</category>
            <guid>http://www.ultraq.net.nz/blog/BookClubBook6_CloudAtlas</guid>
            <pubDate>Mon, 15 Apr 2013 22:53:32 +1200</pubDate>
            <dc:creator>Emanuel Rabina</dc:creator>
        </item>
        <item>
            <title>My kryptonite</title>
            <link>http://www.ultraq.net.nz/writing/stories/MyKryptonite</link>
            <description><![CDATA[<p>"How can you say it <i>wasn't</i> intentional, when in fact you <i>knew</i> that it was his weakness?" asked the prosecution lawyer in that constant accusatory tone which, by definition of the position appointed to him, was required.</p>
<p>"What weakness did I know about?" replied Mariana from her place in the witness box for the hundredth time, tired of trying to convince this hundredth person and the members of the jury of her innocence; although what she was guilty of, she still wasn't so sure.  "I just sent him a link to a cat video!  We'd been sending links to each other about cat-related things all the time for jokes or a laugh!  It's just a little harmless fun!"</p>
<p>"Fun?  Do I have to remind you that what you considered 'harmless fun', ended Emanuel's life?"</p>
<br/>
<p>It had only been 2 weeks since Mariana had posted, in her own words, a seemingly harmless link to a cat video on Emanuel's Facebook page.  Anybody else would have agreed with her appraisal of the video: it was just another cat video, one of millions on the internet that collectively fill terabytes of disk space in data centers around the world, to be streamed to a connected public in need of a quick laugh.  The pastime of humanity.</p>
<p>Nobody had ever really died of laughter before.  Sure, people had died mid-laugh, but that was often because the laugh was interrupted by a heart attack, or a stroke, or a bullet.  Emanuel was in decent enough shape - the coroner had found no evidence of a bad heart or a blood clot - and he was hundreds of kilometers away from the nearest gun fight that happened to be occurring at that exact time.  Centuries of human history had all but exonerated laughter from possible causes of death, so the coroner and the detectives assigned to Emanuel's mysterious death began looking elsewhere for the cause.</p>
<p>They didn't have to look far.</p>
<br/>
<p>"What I have here," said the prosecution lawyer, (pausing for what those in the public gallery thought of as dramatic effect, while court personnel thought it was to allow the law clerk to keep-up with proceedings, although the truth lay somewhere between those 2 extremes) "is the coroner's report as to the cause of the death.  To summarize for the court:</p>
<p>"The cause of death was found to have been starvation brought about by extreme fatigue.  The fatigue was brought on by an extremely low blood sugar level - Emanuel's doctors were able to provide a history of erratic blood sugar levels, despite not having been diagnosed with any kind of diabetes.  The coroner could only then speculate that Emanuel was either unconscious or in a state of confusion, brought on by his hypoglycemia, and thus unable to look after himself.  The situation was found to be similar to those rare cases of young men spending too long at a computer playing video games, and not taking the time out to rest or eat."</p>
<p>"See, it wasn't me." cried Mariana.  "He just... he just forgot to eat." she then said with hesitation and much less fervour than her cries of innocence from before, for it was in that moment that something came to her - a memory of something that Emanuel had posted in reply to 'the killer cat video'.  <i>Oh no...</i> she thought, as the pieces of the puzzle suddenly started to connect in her mind.</p>
<br/>
<p>In the comments to the killer cat video Mariana had posted on Emanuel's wall, before she learned of the news that he had died, which was only moments before she was then accused of his murder, was a reply from Emanuel, seemingly in jest:</p>
<br/>
<blockquote class="email">
<p>"Watching all these Simon's Cat videos is somehow overriding my desire to eat dinner. Cat videos will be the death of me."</p>
</blockquote>
<br/>
<p>They were some of the last words ever typed by Emanuel, and it was those words, the killer cat video, and the Facebook conversation between himself and Mariana that the detectives found when they woke Emanuel's computer from its sleep, looked through his last open programs, and perused through the open tabs in his browser.</p>
<p>It was the smoking gun that fired a bullet of laughter in the shape of a cat video, with Mariana at the trigger, that managed to kill him.</p>
]]></description>
            <guid>http://www.ultraq.net.nz/writing/stories/MyKryptonite</guid>
            <pubDate>Sat, 30 Mar 2013 12:54:08 +1300</pubDate>
            <dc:creator>Emanuel Rabina</dc:creator>
        </item>
        <item>
            <title>Book Club book #5: The Curious Incident of the Dog in the Night-Time</title>
            <link>http://www.ultraq.net.nz/blog/BookClubBook5_TheCuriousIncidentOfTheDogInTheNightTime</link>
            <description><![CDATA[<p>Continuing on the theme of books with dogs on the covers (it wasn't really a theme, things just ended-up this way), our book club's 5th book was around this book that popped into the head of one of our members, but who kept having to Google the thing because the full title just never stuck in her head.  "The something something about an elephant in the night... or was it a dog?  Bah..." at which point she'd then get out her phone and search for the thing.</p>

<p>Just like most-everything else we'd covered so far, I hadn't heard of this book before, so was absolutely useless when it came to assisting with Google searches for the proper title of the book.  Once we all wrote the title down, it was then easier to look for it afterwards - it's a pretty unique title after all.</p>

<article class="review">
<header>
  <h2>The Curious Incident of the Dog in the Night-Time</h2>
  <div class="info">
    <span class="item-details">Book, $9.66 USD on Kindle, written by Mark Haddon, <a class="item-link" href="http://www.amazon.com/The-Curious-Incident-Dog-Night-Time/dp/1400032717/">http://www.amazon.com/The-Curious-Incident-Dog-Night-Time/dp/1400032717/</a></span>
  </div>
</header>

<figure class="review-image">
  <img src="http://upload.wikimedia.org/wikipedia/en/0/03/Curiousincidentofdoginnighttime.jpg" alt="The Curious Incident of the Dog in the Night-Time cover" height="300px" />
</figure>

<p>This book was 1 of 2 that we picked for our book club that meeting - the other being <i>Cloud Atlas</i>, so now you know one of my future blog posts is going to be about - due to the Christmas / New Year's holiday that was approaching which would put a massive gap between this meeting and the next.  The gap was good for me, because I've found that I've become a very slow reader over the last few years.  It's not because my reading skills have deteriorated, but rather because I find less time to read than I used to.  When I used to live with my family, a 17 minute train ride separated me from my work, giving me plenty of time to get some reading done.  Now... I'll be lucky if I find some time to read before I go to sleep.</p>

<p>Anyway, this book is about 15-year-old Christopher John Francis Boon and the adventure he undertakes as he investigates who killed his neighbour's dog.  The 'twist', as to what makes this story a little bit different, is that Christopher is autistic (although according to Wikipedia, his condition is never actually stated - intentionally by the author), and the furthest Christopher has ever actually gone unsupervised is to the shop at the end of his street.</p>

<p>Throughout the story we learn about the shortcomings Christopher has in trying to fit into society, and how he copes with those and other people during his investigation.  The book we read is supposed to be the diary written by Christopher himself, and it's a very engaging read into the mindset of someone who has a very different perspective on the world around him.</p>

<p>When time came to discuss the book, I told the others straight-out that I found it very hard to sympathize with Christopher.  Not simply because of his condition, but because of what his condition does to his ability to understand the world and how other people work.  Christopher sees the world in very black-and-white terms.  For example, he is very adamant about not lying, and he sees any kind of lie as a bad thing.  This includes metaphors because they are not reflective of reality, and so Christopher's writing is very literal.  His condition makes it very difficult for him to comprehend all the shades of grey that fall between the truth and a lie.</p>

<p>It's his inability to comprehend those greys that makes me frustrated with Christopher because I have my own belief that so many of the solutions to the problems that we face today as a people can be found in the area that falls between the 2 extremes of a situation.</p>

<p>For example, so much of what is reported to us in the news nowadays is very polarizing: we have people shouting at each other from 2 sides of many issues.  Take an issue like abortion.  The way it's reported, it seems like there are only 2 sides: you're either for it or against it, and to hell with anybody in the middle ground.  So many people then choose a side to be on, and then spend the remainder of their days shouting at those who have chosen differently.  Yet I feel that somewhere between these 2 extremes lies the answers we are looking for.  I mean, if we can accommodate the case-by-case circumstances for an abortion, then we can find a solution more worthy of our humanity.</p>

<p>It's the same for a plethora of other social issues facing the modern world.  Too many people are so caught up with picking a side and sticking to it that they fail to then take the steps necessary to wade into those grey areas and start to get an understanding of the other side of an issue.</p>

<p>So when it comes to Christopher, he is completely unable to comprehend other viewpoints or to sympathize with another's actions.  It inadvertently makes him extremely selfish and unable to think through about what the consequences of his actions will mean to the people around him.  It's this inability to understand the situations that the others in his life are going through, including his own father who is with him day in and day out, that made me so frustrated with him.</p>

<figure>
  <a href="http://veederranch.com/2013/03/11/10-painting-tips-from-a-woman-who-always-learns-everything-the-hard-way-and-should-have-never-picked-up-a-paint-brush-in-the-first-place/"><img src="http://www.ultraq.net.nz/images/blog/BookClub5_TheCuriousIncidentOfTheDogInTheNightTime_FrustratedHorse.jpg" alt="Frustrated horse"/></a>
</figure>

<p>Does this make me a terrible person?  I thought about that a bit when we talked about this book at book club, and I hope it doesn't.  If I'm being honest with myself, I know now that I would do a terrible job of looking after someone like Christopher, so would be doing the whole world a favour if I left his care to others.  The irony is that Christopher, of all people, would most likely be the person who would appreciate that honesty the most.</p>

<p>7 out of 10.</p>
</article>
]]></description>
            <category domain="http://www.ultraq.net.nz/blog/">Books</category>
            <category domain="http://www.ultraq.net.nz/blog/">Reviews</category>
            <category domain="http://www.ultraq.net.nz/blog/">Book Club</category>
            <guid>http://www.ultraq.net.nz/blog/BookClubBook5_TheCuriousIncidentOfTheDogInTheNightTime</guid>
            <pubDate>Thu, 21 Mar 2013 22:51:16 +1300</pubDate>
            <dc:creator>Emanuel Rabina</dc:creator>
        </item>
        <item>
            <title>A workplace without Google</title>
            <link>http://www.ultraq.net.nz/blog/AWorkplaceWithoutGoogle</link>
            <description><![CDATA[<p>Maybe it's just me, but I often wonder what life would be like without the major internet services or websites I've come to rely upon - services like everything Google does, Dropbox; and websites like Facebook, Twitter.</p>

<p>The websites I believe I can get by without: Twitter is just me shouting short sentences into the electronic ether, and Facebook is where I go to listen to other people and my favourite bands shouting their words at me.  The shouting I can do less of, and it'll probably be better for my health too, whereas with Facebook I have alternatives such as meeting said friends to get the latest news, or going to the band's website (or, heaven forbid, their MySpace) and finding out what's happening with them there.  I've also accidentally subscribed to the e-mail newsletters of most of those bands (damn you price-of-entry for legitimate free downloads!) so like it or not, I happen to know that their latest tours are coming nowhere near my little country.</p>

<p>The services might be a bit harder to go without.  What I was doing before Dropbox was carrying a USB flash drive with me between work and home to make sure I kept some work/home files in sync.  I could easily go back to doing that (I still carry the USB stick), though it'll be annoying as hell.  I imagine it'll be like going back to dial-up after having used DSL or other broadband options for so long, or, using a recent example my brother had, experiencing the speed of an <a href="http://en.wikipedia.org/wiki/Solid-state_drive">solid-state drive</a>, then having to go back to the lowly speeds of a traditional hard drive.</p>

<p>Once you've tasted the fruit, it's hard to go back.</p>

<figure>
  <img src="http://www.ultraq.net.nz/images/blog/AWorkplaceWithoutGoogle_MixedFruit.jpg" alt="Mixed fruit" width="300px"/>
  <figcaption>Much healthier than dial-up</figcaption>
</figure>

<p>The loss of services like those of Google or Amazon would be much harder to shake.  Many companies around the world have felt the impact of lost productivity <a href="http://www.pcworld.com/article/160153/google.html">when Gmail goes down</a>, even if for just a few hours.  And the more recent Amazon EC2 outages can cause all sorts of trouble, <a href="http://money.cnn.com/2011/04/21/technology/amazon_server_outage/index.htm">taking down seemingly unrelated websites left and right</a> and making you start to think there's something wrong with your own internet connection.</p>

<p>But to lose <i>all</i> of Google's services?  Would the internet even still be working if that happened?  Unfortunately for my workmates and I, our entire building, and maybe even all our NZ offices, are currently experiencing massive Google withdrawal.</p>

<p>Google itself isn't down.  If it was it'd be front-page news and everyone including your mom would know about it.  What I think has happened to us is that the internet proxy that all of our work computers have to go through to get to the internet, for some odd reason, cannot resolve google.com.</p>

<p>We've been 'without Google' for the last 2 days, and I don't expect things to get fixed any time soon.  The internet proxy of our network is very very slow to update, and it's stupid cache is even slower such that it still serves weeks-old CSS files on this website alone.</p>

<p>The biggest problem isn't that <i>I've</i> lost the use of Google's services - I've been begrudingly using <a href="http://www.bing.com/">Bing</a> for the last couple of days, and can still use my phone to access anything else like Gmail or Google Reader - but that other sites I rely on, which in turn rely on the google.com address, are falling over because they just happen to use a file that is on the google.com address.</p>

<p>For example, just this morning I've been trying to download a version of <a href="http://www.eclipse.org/">Eclipse</a> to help troubleshoot a problem some people are getting with the <a href="https://github.com/thymeleaf/thymeleaf-extras-eclipse-plugin">Thymeleaf Eclipse Plugin</a> I released recently.  The Eclipse website uses a Google-powered Search box on their website, which downloads a JavaScript file from a google.com address.  Web developers can already see where this is going: in pretty much every browser, the retrieval of JavaScript files causes the rendering of <i>the entire page</i> to wait on that file.  Because I can't get that file, I can't get the page.  Well, that's not the whole truth: I do get the page, but only up to the search box, which just happens to be near the top, before all the important content that I'm actually after.  This little browser quirk is why you sometimes see advice to have <code>&lt;script&gt;</code> tags (the tags that reference JavaScript files) right at the end of the page - so that the rest of the page has the chance to load, even if that JavaScript file doesn't.</p>

<p>It also doesn't help that I've had to look up Android development pages quite a lot this passed week too as I attempt to fix some Android-related issues at work.  As you'd expect, the Android pages rely heavily on the google.com address.</p>

<p>There's no conclusion to this blog post.  I'm just frustrated as hell, my workmates are too, and it's impacting the amount of stuff any of us can get done.  So why not vent that frustration in a blog post?  I've suddenly got a lot of free time to kill.</p>
]]></description>
            <category domain="http://www.ultraq.net.nz/blog/">Work stories</category>
            <guid>http://www.ultraq.net.nz/blog/AWorkplaceWithoutGoogle</guid>
            <pubDate>Fri, 01 Mar 2013 11:29:54 +1300</pubDate>
            <dc:creator>Emanuel Rabina</dc:creator>
        </item>
        <item>
            <title>HTML in your HTML</title>
            <link>http://www.ultraq.net.nz/blog/HTMLInYourHTML</link>
            <description><![CDATA[<p>First, some programmery updates to get out of the way:</p>

<h3>Thymeleaf Extras Eclipse Plugin</h3>

<p>I've completed the first stable release of my first ever Eclipse plugin, which happens to be a content assist plugin for Thymeleaf.  It started out as just another spare time side-project, then eventually got folded into the Thymeleaf project itself as an 'extras' module.  The plugin adds content assist features to the HTML editor, listing element processors and attribute processors alongside HTML element/attribute suggestions.</p>

<p>Thymeleaf extension (aka: dialect) authors can also take advantage of the plugin to have their dialects show up in the HTML editor.  You can find download links and more details on the project's GitHub page: <a href="https://github.com/thymeleaf/thymeleaf-extras-eclipse-plugin">https://github.com/thymeleaf/thymeleaf-extras-eclipse-plugin</a></p>

<h3>Thymeleaf Layout Dialect</h3>

<p>I've also gone and updated my own Layout dialect for Thymeleaf to show up in said Eclipse plugin.  The updated download or Maven co-ordinates can be found on that project's page: <a href="http://www.ultraq.net.nz/programming/thymeleaf-layout-dialect/">http://www.ultraq.net.nz/programming/thymeleaf-layout-dialect/</a></p>

<p>---<br/>
I mention the name '<a href="http://www.thymeleaf.org/">Thymeleaf</a>' a bunch up there.  It's one of the parts used in the construction of this website, and last month I joined the developer line-up for the Thymeleaf project, so you might see me write a bit more about it in the future.</p>

<p>If you're a programmer and didn't follow any of the links on this blog post before this current sentence, then the short of Thymeleaf is that it's a Java library for writing HTML templates.  For me however, what it really is is the first ever view framework I've come across that doesn't feel like it insults web designers.</p>

<figure>
  <img src="http://www.thymeleaf.org/artwork/thymeleaflogosmall.png" alt="Thymeleaf logo"/>
  <figcaption>Thymeleaf: we actually like web designers</figcaption>
</figure>

<p>The whole 'not insulting web designers' thing is why I made the switch to Thymeleaf last year with the website redesign; I was done with <a href="http://en.wikipedia.org/wiki/JavaServer_Pages">JSPs</a> to make HTML (the code you're writing barely looks like HTML any more, and it requires throwing too much Java code into them to make them do what you want), and I wasn't touching <a href="http://en.wikipedia.org/wiki/JavaServer_Faces">JSF</a> with a 40-foot pole (not after my last work project in which I had to use it and stare in horror as <a href="http://www.ultraq.net.nz/blog/GeneratingHTMLLikeIts1999">it generated HTML code like it was 1999</a>).</p>

<p>After some looking around I settled on Thymeleaf because, aside from the numerous benefits advertised on it's website, the one that stuck out to me was that the code you wrote to generate HTML <i>actually looked like, and used, HTML</i>.</p>

<p>I think for any code generators, that's my number one requirement: that the code being generated is written in and resembles the language of the code being generated.  It makes the learning curve very mild because if you know the language of the code you want to generate, then everything else you need to learn already looks and feels like familiar territory.</p>

<p>It also makes it very inclusive: people who know HTML (like web designers) don't feel like they need to learn another programming language just so they can do their job (designing, which involves messing with HTML files).</p>

<p>Another framework which follows this principle, and that I also picked for the site redesign, is <a href="http://lesscss.org/">LESS</a>, a CSS generator which looks like, and uses, CSS.</p>

<p>I've become quite fond of both Thymeleaf and LESS, so much so that I use both quite a lot in my 9-to-5 paid job for when I need to whip-up a website or mobile app prototype in under an hour to showcase some feature that my team is looking into developing.</p>

<p>The best part is when I get to show the others how I did things, because then I point them to the Thymeleaf or LESS files and they can understand those files right away, even if they didn't know Thymeleaf/LESS, because what they're looking at is HTML/CSS.</p>
]]></description>
            <category domain="http://www.ultraq.net.nz/blog/">Programming</category>
            <guid>http://www.ultraq.net.nz/blog/HTMLInYourHTML</guid>
            <pubDate>Mon, 25 Feb 2013 23:13:56 +1300</pubDate>
            <dc:creator>Emanuel Rabina</dc:creator>
        </item>
        <item>
            <title>My frenemy, the sun</title>
            <link>http://www.ultraq.net.nz/blog/MyFrenemyTheSun</link>
            <description><![CDATA[<p>Can't type, but want to blog.  So I vlog instead.</p>

<figure class="video">
  <div class="video-wrapper aspect-ratio-16-9">
    <div class="aspect-ratio"></div>
      <iframe width="560" height="315" src="http://www.youtube.com/embed/d1c9yFYvCIg" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
  </div>
</figure>
]]></description>
            <category domain="http://www.ultraq.net.nz/blog/">Real life</category>
            <guid>http://www.ultraq.net.nz/blog/MyFrenemyTheSun</guid>
            <pubDate>Sun, 10 Feb 2013 16:34:05 +1300</pubDate>
            <dc:creator>Emanuel Rabina</dc:creator>
        </item>
        <item>
            <title>Book Club book #4: The Art of Racing in the Rain</title>
            <link>http://www.ultraq.net.nz/blog/BookClubBook4_TheArtOfRacingInTheRain</link>
            <description><![CDATA[<p>Putting us back on the track of staying classy, the fourth book suggestion was a New York Times bestseller that I had never heard of (I actually don't know <i>any</i> New York Times bestsellers since I don't follow that list, so that aside was kind of redundant).</p>

<p>I'm forever going to associate this book with the other news that befell our book club on the night it was suggested.  Over dinner, one of our number announced that she was pregnant.  It was good news, made even better on learning it meant that she has reversed a previous decision of hers some months ago to go vegetarian.  For all those people who celebrate doing anything vegetarian or vegan (in lieu of whatever trend or diet is now hip and cool at the time), I for one always celebrate the return of a fellow omnivore :)</p>

<article class="review">
<header>
  <h2>The Art of Racing in the Rain</h2>
  <div class="info">
    <span class="item-details">Book, $0 since I borrowed it, written by Garth Stein, <a class="item-link" href="http://www.amazon.com/The-Art-Racing-Rain-Novel/dp/0061537969/">http://www.amazon.com/The-Art-Racing-Rain-Novel/dp/0061537969/</a></span>
  </div>
</header>

<figure class="review-image">
  <img src="http://upload.wikimedia.org/wikipedia/en/d/d8/TheArtOf_RacingInTheRain.jpg" alt="The Art of Racing in the Rain cover" height="300px" />
</figure>

<p>This book put me back in favour with my baking guinea pig (who, with the last book, <a href="http://www.ultraq.net.nz/blog/BookClub3_DeadUntilDark">used her facial expression to disown me</a>).  When I told her about it, she became very excited, which in turn lifted my expectations for the book.  Although when your expectations are lacking, the only way for them to go is up.  She said she really enjoyed reading that book when it came out, and was good enough to find her copy of it so I could borrow it from her.</p>

<p>When I finally got a copy of the book I dove right into it and... it took me a while to get used to it.  It reminded me of those first 10 or 15 minutes of watching a Shakesperean play when your brain has to spend time getting used to the way the actors are talking because it's English but not as we know it Jim.  I got that same vibe from this book in the first chapters.  It's written in modern day English, so it wasn't a centuries-of-language-evolution problem.  I think it might have been because I'm not used to reading books that aren't some kind of science fiction / fantasy, and many of the books I've read in that genre have this style that I'm just so used to that anything else is slightly jarring.</p>

<p>That's not to say that this book was badly written.  It was very well written, especially since it's all told from the perspective of a dog.</p>

<p><i>The Art of Racing in the Rain</i> is a book about a racing car driver, Denny Swift, and his life journey as he seeks success in his family life, his racing life, and to maintain a balance between the two, which are often at opposition.  All of this is told through the eyes of his dog, Enzo.</p>

<p>It's a first-person (dog?) story, so we only go wherever Enzo goes, except on the occasion when Enzo embellishes which he has to do sometimes since he's not privy to everything that takes place in Denny's life.  He often says when that happens, and when I think back on it I believe Enzo said it was for the sake of keeping things interesting, which is a good trait for a narrator, and even better one for a book, and a remarkably strange one for a dog.</p>

<p>It kept coming up, the 'this is a dog' thing, because Enzo comes across as so remarkably human - quoting metaphors and aphorisms about racing and life - that I kept having to check myself whenever I started imagining Enzo's perspective shifting to human eye level.  That's probably only a problem with me because following a narrator who's sometimes invisible yet always there is reminiscent of the way I dream.  Often I can't tell whether I was a disembodied version of me following myself, or just myself, as the perspective often shifts from first- to third-person perspectives.</p>

<p>If you've ever thought of a dog's actions as silly, then this book will make everything a dog ever did surprisingly justifiable.  By experiencing the story through his eyes, you sympathize with his actions, and I often found myself nodding in total agreement to Enzo peeing all over the floor.  <i>"Yep, I'd do that too in that situation."</i> I would think.  Suddenly, barking at certain things or people, or running around excitedly at a park seem normal to me, and I find myself thinking back on Enzo's motivations whenever I'm walking around and see a dog doing those things.</p>

<p>I've ranted on and on about the dog, because it really is what makes this book great.  The story, without Enzo's perspective, would be like any other fiction story on the shelf of your library, and probably just as forgettable.  Enzo is what really sells this book, and what kept me glued to its pages for the 2 weeks of my free time that it took for me to finish reading it.</p>

<figure class="video">
  <div class="video-wrapper aspect-ratio-16-9">
    <div class="aspect-ratio"></div>
    <iframe width="420" height="315" src="http://www.youtube.com/embed/fDKDC_IUnOA" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
  </div>
  <figcaption>This video has nothing to do with the book - it's just a cute dog video :)</figcaption>
</figure>

<p>I was a bit sad when I reached the last page - sad at it being all over - and hopeful given the way it all turned out.  I returned the book to it's owner and remained a bit quieter for the remainder of the day, not just because the ending had left me solemn, but also because I was emulating what was seen by others in the book as one of Enzo's best traits - his silence.  He was never able to say a word to those around him, yet it got others to open up to him and really primed him for listening.</p>

<p>Funny that it took a dog to remind me of the many more ways to be a human.</p>

<p>8 out of 10</p>
</article>
]]></description>
            <category domain="http://www.ultraq.net.nz/blog/">Books</category>
            <category domain="http://www.ultraq.net.nz/blog/">Reviews</category>
            <category domain="http://www.ultraq.net.nz/blog/">Book Club</category>
            <guid>http://www.ultraq.net.nz/blog/BookClubBook4_TheArtOfRacingInTheRain</guid>
            <pubDate>Sat, 26 Jan 2013 22:58:47 +1300</pubDate>
            <dc:creator>Emanuel Rabina</dc:creator>
        </item>
        <item>
            <title>Back to work tomorrow (and I don't seem to mind)</title>
            <link>http://www.ultraq.net.nz/blog/BackToWorkTomorrow</link>
            <description><![CDATA[<p>It's the last day of my Christmas / New Year's break today.  I used up some of the massive amount of leave I have accumulated over the years to extend the break that most people had, and used it to do... not a helluva lot really.  When looking at the items most recently cleared from my to-do list, I get the following:</p>

<ul>
  <li>put my Red Horizon programming project on GitHub</li>
  <li>pay-off what's left of my student loan</li>
  <li>watch the movie <a href="http://en.wikipedia.org/wiki/Deliverance"><i>Deliverance</i></a> (recommended to me by my older workmates)</li>
  <li>take some of my old electronic junk (2 laptop mice and my first ever mp3 player, all broken) to an electronic recycler</li>
  <li>buy a book, <a href="http://www.amazon.com/The-Your-Life-Book-Club/dp/0307594033"><i>The End of Your Life Book Club</i></a></li>
</ul>

<p>Other things I did that weren't on my to-do list:</p>

<ul>
  <li>get a 2013 calendar (not a huge accomplishment, but in 2011 I just reused my 2010 calendar and had to remember to push the days ahead by 1 whenever I consulted it)</li>
  <li>start watching <a href="http://en.wikipedia.org/wiki/Once_Upon_a_Time_%28TV_series%29"><i>Once Upon a Time</i></a></li>
  <li>develop<a href="https://github.com/ultraq/thymeleaf-eclipse-plugin"> an Eclipse plugin for Thymeleaf</a> (a framework I use quite a lot for web development/design stuff, both here on this site and in my work)</li>
</ul>

<p>(A lot of people are surprised that I have an actual to-do list.  It last came up during the New Year's party.  Shocked expressions appeared on peoples' faces the moment I brought out my phone and consulted a cloud-based list on it.  I've been using <a href="http://www.rememberthemilk.com/">Remember The Milk</a> for many years now to keep 'to do' items organized, and I've been using it even more for trivial things like my grocery shopping the moment I got a smart phone that would keep these lists just a few taps away.)</p>

<p><i>So 3 weeks of break, and that's all I managed to accomplish?</i> I now say as I look back on how my Christmas / New Year's was spent.  It doesn't feel like too much to me, and when I try to figure out what it is that makes it feel like that, I think it comes down to the idea that none of those items above are very long-term goals, or, hell, even medium-term ones.</p>

<p>With the exception of the Eclipse plugin, every item on that list was accomplished within a few hours, so it doesn't feel like I've really grown or gained anything by finishing them.  By contrast, the 2 remaining items on my list - learning to fly, and writing another short story - are both very time consuming; like, months.  Yet, both of those items are the ones that I feel will actually add to who I am as a person - to 'level up' if you will.</p>

<figure>
  <a href="http://igor0899.deviantart.com/art/Scott-Pilgrim-LEVEL-UP-New-168894202"><img src="http://www.ultraq.net.nz/images/blog/BackToWorkTomorrow_ScottPilgrimLevelUp.jpg" alt="Scott Pilgrim - Level Up, by IgoR0899"/></a>
</figure>

<p>It's that sort of long-term direction that I'm actually looking forward to getting back when I return to work.  Particularly the part where I get to be a designer again.  No, not just the drawing of pictures and using PhotoShop to create graphical assets (even though that is really the fun part), but the part where I get to take someone else's vision and develop it through a multi-cycle development process on the order of weeks or months to the point of fruition.</p>

<p>That's the part I'm really looking forward to.</p>

<p>---<br/>
Oh yeah, I just remembered I did manage to do something that isn't trivial by my standards, and that was learning a new piano tune :)  In particular, this one:</p>

<figure class="video">
  <div class="video-wrapper aspect-ratio-16-9">
    <div class="aspect-ratio"></div>
    <iframe width="420" height="315" src="http://www.youtube.com/embed/RThxLTzqvdA" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
  </div>
</figure>

<p>I know some people can pick up and learn a new tune in a matter of hours, but for me, to get to the point where I can sit down and play it comfortably from memory, takes days.</p>
]]></description>
            <category domain="http://www.ultraq.net.nz/blog/">Music</category>
            <category domain="http://www.ultraq.net.nz/blog/">Programming</category>
            <category domain="http://www.ultraq.net.nz/blog/">Real life</category>
            <guid>http://www.ultraq.net.nz/blog/BackToWorkTomorrow</guid>
            <pubDate>Sun, 13 Jan 2013 20:21:47 +1300</pubDate>
            <dc:creator>Emanuel Rabina</dc:creator>
        </item>
        <item>
            <title>2013 starts with... programming?!?</title>
            <link>http://www.ultraq.net.nz/blog/2013StartsWithProgramming</link>
            <description><![CDATA[<p>First blog post of 2013 and I thought it'd be one of those 'look back on the last year' or 'resolutions for the next year' kind of posts which I've been reading from others for the last week 'cause it all just got me in the mood to do the same.  The thing is, I've never really subscribed to writing such posts, although when asked (in real life) about the year just gone or the year now coming, I have plenty to say.</p>

<p>So instead, some programming house-cleaning:</p>

<h3>Thymeleaf Layout Dialect 1.0.5 released</h3>

<p>The latest version of my add-on to the <a href="http://www.thymeleaf.org/">Thymeleaf templating framework</a> was released on the last day of 2012.  Version 1.0.5 adds a feature request to extend the decorator page title with the content page title (rather than just overriding it which it did before), further upholding the DRY principle and insulating web developers from little mistakes in the titles of their web pages.  There's also a fix for those who use IE conditional comments around the <code>&lt;html&gt;</code> element so that such comments are now included in the resulting page.</p>

<p>On uploading the new release, I learned that <a href="https://github.com/blog/1302-goodbye-uploads">GitHub has deprecated the Uploaded Files / Download sections</a> of each repository, requiring everyone to host downloadable bundles elsewhere.  It's made some people unhappy, but given the GitHub mission, the downloads section has always been a nice-to-have that they've been nice enough thus far to have.  I've made all the download links now point to the bundles I host from this website so that archive hoarders (like myself) still have a place to go to satisfy their ZIP file needs :)</p>

<p>You can find out more on the <a href="http://www.ultraq.net.nz/programming/thymeleaf-layout-dialect/">Thymeleaf Layout Dialect web page</a>.</p>

<h3>Red Horizon now on GitHub</h3>

<p>My ongoing and never-finishing game programming project, Red Horizon, <a href="https://github.com/ultraq/redhorizon">is now up on GitHub</a>.  It's not the project's main repository, but I'll keep it updated so that it's never too far behind current progress.  The Red Horizon pages on this website also got a wee update to reflect the way I'm now presenting my programming projects.</p>

<p>I did this so that interested persons (and there have been a few of you) can take a look at what I'm doing and how I'm doing it.  I think the most use of it being up there is that developers can now download or browse the source and commit history without having to get the download bundles I rarely provide.</p>

<p>Having the project up there also adds a psychological element to how I code it.  I've found that with all of the projects I've put up on GitHub, I've started to think about design/code consequences quite a lot more in the hopes of coming up with better code that satisfies requirements without adding that dreaded 'technical debt' word that seems to be making the rounds in the developer blogosphere these last several months.</p>

<p>I think the exposure is enough to make me <i>feel</i> more accountable for the code I write.  If the code can now be viewed by anybody and everybody, then I should write it like it has nothing to hide: no shameful secrets, no facepalm-inducing design decisions, no fodder for <a href="http://thedailywtf.com/Series/CodeSOD.aspx">The DailyWTF CodeSODs</a>.</p>

<figure>
  <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/Paris_Tuileries_Garden_Facepalm_statue.jpg/300px-Paris_Tuileries_Garden_Facepalm_statue.jpg" alt="Facepalm"/>
  <figcaption>Your code... ugh</figcaption>
</figure>

<p>At least, those are what I hope to gain from doing this; design is largely subjective (there are still people out there arguing over things like <a href="https://www.google.co.nz/search?hl=en&amp;q=where+to+put+the+curly+braces">where to put the curly braces</a>), and one man's 'hey that ain't so bad' is another man's WTF, or so the saying goes.</p>
]]></description>
            <category domain="http://www.ultraq.net.nz/blog/">Programming</category>
            <category domain="http://www.ultraq.net.nz/blog/">Real life</category>
            <category domain="http://www.ultraq.net.nz/blog/">Red Horizon</category>
            <guid>http://www.ultraq.net.nz/blog/2013StartsWithProgramming</guid>
            <pubDate>Thu, 03 Jan 2013 10:50:37 +1300</pubDate>
            <dc:creator>Emanuel Rabina</dc:creator>
        </item>
        <item>
            <title>With my permission</title>
            <link>http://www.ultraq.net.nz/blog/WithMyPermission</link>
            <description><![CDATA[<p>The other day, someone asked me over Twitter if they could use some of the code in <a href="https://github.com/ultraq/jaxb-utilities">one of my programming projects</a>.  For a moment I thought that I already bundled the Apache 2.0 license  with my projects (a license that basically allows others to do whatever they will with the source code so long as they attribute the original work to it's owner), but I took another look and it seemed the license information was missing from that one, so I responded with what pretty much amounted to: <i>'sure, go for it.'</i></p>

<p>I went and updated all the projects I share on GitHub with licensing information, just in-case anybody else asks (I meant to do that for all my freely-available programming projects anyway, it just seems I never got around to it), and it reminded me of another request I received earlier this year.  No, it wasn't another programming query, but a request for permission to use my <i>Phaethon's Legacy</i> space pic.</p>

<figure>
  <a href="http://www.ultraq.net.nz/artwork/wallpapers/PhaethonsLegacy"><img src="http://www.ultraq.net.nz/images/blog/SiteRedesignTimeComplete_PhaethonsLegacyPreview.jpg" alt="Phaethon's Legacy"/></a>
  <figcaption>Yep, this old gem</figcaption>
</figure>

<p>No matter how many times it happens, I'm always excited to receive an e-mail from a real person I don't know, making a real request.  I often get ones regarding my programming projects (not everybody has a GitHub account to communicate to me via that site), and this year I got one from someone in Germany, asking if they could use a high-resolution version of the above picture in a school book in Latin about Ovid.</p>

<p>At first I couldn't make the link between that picture and Ovid.  Actually, the first question to come to mind was, <i>"Who's Ovid?"</i>  <a href="http://en.wikipedia.org/wiki/Ovid">The Wikipedia page</a> quickly answered that question, and all the questions I had afterwards.  Just like <a href="http://www.ultraq.net.nz/blog/ZombieFatigue">when I was e-mailed about my critique of the proliferation of zombie literature and learned all about Chaucer and <i>The Canterbury Tales</i></a>, this time I learned a little bit about classical mythology.</p>

<p>From the blurb attached to the <i>Phaethon's Legacy</i> pic:</p>

<blockquote>
<p>The Phaethon of Greek mythology was the son of the sun god, Helios. His friends refused to believe this, so Phaethon travelled to Helios' palace and explained his plight to Helios, who in turn swore to grant Phaethon anything to prove that he was his son. Phaethon asked to ride his father's chariot (the sun) for a day, and although Helios strongly advised against it, Phaethon would not be swayed. When the day came, Phaethon couldn't control the powerful horses drawing the chariot, and so caused destruction wherever they went, burning the Earth in places where they went too low. Zeus was forced to intervene, and so threw a lightning bolt down upon Phaethon, killing him and sending his body into the Eridanus river.</p>
</blockquote>

<p>The guy who wrote the story above?  Ovid.</p>

<p>Turns out Ovid wrote a lot of stories about ancient mythological characters, and many of the stories we associate with those characters were written by him.  I'm surprised I didn't realize that fact sooner, and I'm also ashamed I didn't think to remember the author of so many of the stories we associate with characters of ancient myth today.</p>

<p>Anyway, I was so happy that somebody actually <i>asked</i> about using one of my pictures that I was more than happy to oblige and fulfil their request for a high resolution version of the picture.  I often stumble across stories about people just stealing other peoples stuff because they think, <i>"Hey, it's the internet, everything on it is for free right?"</i>.  Even I used to think that way until I joined the 'content creator' camp and started to get an understanding for what it takes to actually <i>make</i> something.</p>

<p>Whenever I mention this story to real-life people, they always ask if I got any money in return.  It did cross my mind, but being happy enough to have been asked about my picture, and to have it in a school book being written on the other side of the world, I asked only for the standard attribution (my name and the URL of the picture in the appendix) and a copy of the book.</p>

<p>My copy arrived a few weeks ago:</p>

<figure>
  <img src="http://www.ultraq.net.nz/images/blog/WithMyPermission_BookAndLetter.jpg" alt="Book and letter"/>
  <figcaption>The book and a letter saying thanks</figcaption>
</figure>

<figure>
  <img src="http://www.ultraq.net.nz/images/blog/WithMyPermission_PageWithMyPic.jpg" alt="Page with my picture in it"/>
  <figcaption>The page with my picture in it</figcaption>
</figure>

<p>Those of you with a keen eye will have noticed that the book is in German, and if I took a much closer picture you could probably also see that much of the text has a lot of Latin as well!  I can't read either language very well, but I think that adds to the appeal - that my picture, created by little old me in New Zealand, could find its way into a school book all the way in Germany.</p>

<p>This is easily one of the highlights of my year :)</p>
]]></description>
            <category domain="http://www.ultraq.net.nz/blog/">Programming</category>
            <category domain="http://www.ultraq.net.nz/blog/">Real life</category>
            <category domain="http://www.ultraq.net.nz/blog/">Artwork</category>
            <guid>http://www.ultraq.net.nz/blog/WithMyPermission</guid>
            <pubDate>Fri, 21 Dec 2012 13:51:25 +1300</pubDate>
            <dc:creator>Emanuel Rabina</dc:creator>
        </item>
    </channel>
</rss>
