<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-7034257</id><updated>2010-02-03T20:47:39.848+10:00</updated><title type='text'>Ben Boyle lives here!</title><subtitle type='html'>Once it was a homepage, now it's a blog.</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://inspire.server101.com/ben/blog.xml'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>183</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7034257.post-3419447752728401</id><published>2010-02-03T20:37:00.004+10:00</published><updated>2010-02-03T20:47:39.860+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>Here at the very end of all things (on this blog)</title><content type='html'>&lt;p&gt;Blogger are disabling FTP publishing. I use FTP publishing, this blog is hosted at the fantastic Server101 and I've no wish to move it. Appears I have not really much wish to publish to it either, reviewing the woeful stats for the last months. I blame &lt;a href="http://twitter.com/bboyle"&gt;Twitter&lt;/a&gt;, &lt;a href="http://www.facebook.com/benjamins.boyle"&gt;Facebook&lt;/a&gt; and Left 4 Dead for taking up my valuable time. And when I say blame, I mean thank. I love &lt;a href="http://www.left4dead.com/"&gt;Left 4 Dead&lt;/a&gt;!&lt;/p&gt;&lt;p&gt;So here I am writing a final post that is not so final, for publishing shall continue, somewhere else. I am &lt;a href="http://wordpress.org/download/"&gt;downloading WordPress&lt;/a&gt; which I have long wished to tinker with. Though tinkering is bad for the spare time too …&lt;/p&gt;&lt;p&gt;My last post about cold bytes leads nicely into this. I have rejoined the Communities web team, though it is much different to when I left it, with over double the staff it had then and impressively named &lt;em&gt;Business Innovation &amp;amp; Web Services&lt;/em&gt; — within which I job share a team lead role for a &lt;em&gt;Strategic Improvement&lt;/em&gt; group. 3 days a week and it is going to be awesome. I still code two days a week for Smart Service Queensland. A good balance.&lt;/p&gt;&lt;p&gt;There is much to celebrate this year. A change in the workplace is refreshing — and even the development team is moving out of the darkness into some natural light — and this year marks the 10th year anniversary of my marriage and moving to Caboolture. A decade! Such were the naughties. Let's leave blogging back there. It’s time I got back into publishing and content/media creation. More creativity, I must have more! We’ll see what the year brings …&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-3419447752728401?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/3419447752728401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/3419447752728401'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2010/02/here-at-very-end-of-all-things-on-this.html' title='Here at the very end of all things (on this blog)'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-1204000495838178837</id><published>2009-11-26T23:21:00.003+10:00</published><updated>2009-11-26T23:32:57.961+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web standards'/><category scheme='http://www.blogger.com/atom/ns#' term='conventions'/><title type='text'>Very cold files!</title><content type='html'>&lt;p&gt;Got a blast from the past today, a colleague forwarded an old email I wrote on 6 June 2006 at 1:28 pm! Wow. I said …&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;…pointed out recently we've been being naughty using KB for kilobytes, when it should be kB. k for kilo is the standard (it's still M for mega, G for giga) and although bits/bytes aren't standardised b (bit) and B (byte) are in common use and thus recommended.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;It came up as the team there were debating whether to use KB or kB (not KiB? nobody loves &lt;a href="http://en.wikipedia.org/wiki/Kibibyte"&gt;kibibytes&lt;/a&gt; it seems). I guess it doesn’t really matter, people tend to understand in either case, and I reckon file sizes should probably be rounded up anyway, so long as they give an approximate guide to downloading. But I can’t help thinking — everytime I see "32 KB" — my, that's a cold, cold file! (K is for &lt;a href="http://en.wikipedia.org/wiki/Kelvin"&gt;Kelvin&lt;/a&gt; in &lt;a href="http://en.wikipedia.org/wiki/International_System_of_Units"&gt;SI units&lt;/a&gt;). KB is also my sister’s initials. But I don’t think she’ll mind too much if you use it on your websites!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-1204000495838178837?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/1204000495838178837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=1204000495838178837' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/1204000495838178837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/1204000495838178837'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2009/11/very-cold-files.html' title='Very cold files!'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-2946939777515937880</id><published>2009-11-25T21:55:00.003+10:00</published><updated>2009-11-25T22:04:17.425+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='forces'/><category scheme='http://www.blogger.com/atom/ns#' term='web standards'/><category scheme='http://www.blogger.com/atom/ns#' term='nice'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Byte sized coding</title><content type='html'>&lt;p&gt;Another nice aspect of test driven development: you can code nice nuggets of usable code. If you have the tests assuring everything is stable, you can — and should — commit often. I find it efficient and effective designing my workload around this, aiming to add just one new piece of useful functionality. Never more than a spot. (Or something may happen, you never know what.)&lt;/p&gt;&lt;p&gt;It keeps the code simple in your head. Complexity kills. Simplicity rules. And keeping it simple means it doesn’t take too long, so it isn’t an imposition on your life. And so it is with &lt;a href="http://code.google.com/p/usetheforces/source/diff?spec=svn175&amp;amp;r=175&amp;amp;format=side&amp;amp;path=/trunk/jquery.forces.forms.core.js"&gt;revision 175 of the forces.forms javscript library&lt;/a&gt;, introducing initial support for custom form validation (based on &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#dom-cva-setcustomvalidity"&gt;setCustomValidity from the HTML 5 spec&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;And truly, that’s enough for a light coding session.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-2946939777515937880?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/2946939777515937880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=2946939777515937880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/2946939777515937880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/2946939777515937880'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2009/11/byte-sized-coding.html' title='Byte sized coding'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-8309907174611180521</id><published>2009-11-25T00:10:00.002+10:00</published><updated>2009-11-25T00:27:15.401+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='government'/><category scheme='http://www.blogger.com/atom/ns#' term='UX'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Go fish!</title><content type='html'>&lt;p&gt;We talk about fishing a bit at work — we did refresh the &lt;a href="https://www.smartservice.qld.gov.au/services/permits/fishing/"&gt;website for purchasing stocked impoundment permits&lt;/a&gt; (SIPS, they are for recreational fishing in Queensland dams) early in the year. Isn't that form pretty!?&lt;/p&gt;&lt;p&gt;In July, I started some wireframes for a new potential website: an online fishing diary. At the moment, recreational fishers can opt in to the diary scheme and keep a logbook of &lt;a href="http://www.dpi.qld.gov.au/28_14675.htm"&gt;species&lt;/a&gt; they catch. These &lt;a href="http://www.dpi.qld.gov.au/28_8609.htm"&gt;volunteers contribute meaningfully to fisheries management&lt;/a&gt;, as I understand it. Nice work citizens! We had hopes this would be an interesting new service. It has some relationship to the SIPS of course, but even more potential as a citizen engagement (or e-engagement, e-government, social networking etc.) For anglers. Smart Service is big into egovernment and engagement, particularly on the &lt;a href="http://www.getinvolved.qld.gov.au/"&gt;GetInvolved&lt;/a&gt; website. Yes the online fishing diary seemed ideal. &lt;/p&gt;&lt;p&gt;Here's some of the mockups, showcasing the initial exploration I began around collecting the diary entries:&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://inspire.server101.com/ben/uploaded_images/Add-trip-711408.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 266px; height: 320px;" src="http://inspire.server101.com/ben/uploaded_images/Add-trip-711406.png" border="0" alt="" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://inspire.server101.com/ben/uploaded_images/Add-fish-784507.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 258px;" src="http://inspire.server101.com/ben/uploaded_images/Add-fish-784505.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://inspire.server101.com/ben/uploaded_images/Add-fish-2-784577.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 218px; height: 320px;" src="http://inspire.server101.com/ben/uploaded_images/Add-fish-2-784575.png" border="0" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;A bit like surveys, but trying to really &lt;em&gt;engage&lt;/em&gt;, you know? Rather than simply recording data, making it a bit more fun and competitive, maybe even educational. Does data have to be dry and dull? Can you see people that love fishing enjoying typing data into websites? Let's take a leaf from gaming — people &lt;em&gt;love&lt;/em&gt; stats and achievements!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Sadly it was canned. Boo hiss! I've been meaning to write this eulogy since then.&lt;/p&gt;&lt;p&gt;Alas ye online fishing diary, put aside before you truly had a chance to shine.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-8309907174611180521?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/8309907174611180521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=8309907174611180521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/8309907174611180521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/8309907174611180521'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2009/11/go-fish.html' title='Go fish!'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-1301093711822269093</id><published>2009-11-23T23:45:00.014+10:00</published><updated>2009-11-25T00:32:09.246+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Saturday afternoon coding</title><content type='html'>&lt;p&gt;It’s high time I talked a little about the coding I do. Since my job transformed into a “User Interface Specialist” I’ve been back to coding — implementing the user interface for web applications. After years of being a backseat developer (i.e. doing &lt;abbr title="quality assurance"&gt;QA&lt;/abbr&gt; for other developers) and choosing to try out the &lt;abbr title="Business Analyst"&gt;BA&lt;/abbr&gt; field instead, this change was thrust upon me. Go figure. Anyway, coding is a lot of fun. Although the pay isn’t quite as good. It is good honest productive work though. Gotta love that!&lt;/p&gt;&lt;p&gt;Those who follow my tweets may often be amused/confused by the references to coding. Our development team has been introducing the &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;agile way&lt;/a&gt; into Queensland Government (I am sure we are not the only team doing this). I sometimes get my hands dirty into the java code (usually acceptance tests with &lt;a href="http://seleniumhq.org/"&gt;Selenium&lt;/a&gt;), or even the &lt;a href="http://struts.apache.org/"&gt;struts2&lt;/a&gt; &lt;a href="http://twitter.com/bboyle/status/5968627228"&gt;setup&lt;/a&gt;, but usually I’m working on good ol’ HTML, CSS and javascript. I’m on my own a lot as I resist working in a closed in meeting room. There’s a good vibe in there, but also a distinct lack of natural lighting. Why get up in the day if you don’t even see the sun? I digress …&lt;/p&gt;&lt;p&gt;So I am on my own, fumbling along my own agile journey. Learning the zen of coding. One of the key pieces I have been working on is javascript form validation, and having worked on it the old way — code stuff and deal with problems when it breaks — I've been trying this &lt;a href="http://en.wikipedia.org/wiki/Red-green-refactor"&gt;red, green, refactor&lt;/a&gt; (aka Test Driven Development) idea. And, I have to say, I am liking it.&lt;/p&gt;&lt;p&gt;I contribute a lot of the code towards that in my own time. I rationalise giving up my time because the code has been made open source, a few of us have “joined forces” on a project named “use the forces”, to collaborate on code and products which we aren’t afforded time to collaborate on at work. We are compelled into meetings to discuss improving productivity, just not encouraged to work together productively. There is paperwork to write after all! Sorry if that sounds a little scathing: I’m a worker, not a talker (outside my blog!), and I have high expectations that leadership have yet to exceed… At any rate, I can make open source contributions as often as I wish, and I can enjoy &lt;a href="http://www.gohomeontimeday.org.au/"&gt;go home on time day&lt;/a&gt; every day at work. It’s sweet and I Like It.&lt;/p&gt;&lt;p&gt;That was a long ramble. For people who wonder how I do what I do, why I do it, what it’s like, here is an insight into a Saturday afternoon coding session. I wrote these notes while coding, for this post. This is what coding is like for me. Distractions, warts and all.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;do an update or checkout, make sure the source is the latest&lt;/p&gt;&lt;p&gt;fire up &lt;a href="http://www.mozilla.com/firefox/"&gt;firefox&lt;/a&gt; with &lt;a href="http://getfirebug.com/"&gt;firebug&lt;/a&gt; (&lt;a href="http://portableapps.com/"&gt;portable apps&lt;/a&gt;), it's 3.5.2&lt;/p&gt;&lt;p&gt;good idea to test with multiple browsers, but one while developing. don't have IE6.&lt;/p&gt;&lt;p&gt;talked myself into runnning IE8. Press F12 to get developer toolbar, toggle to IE7.&lt;/p&gt;&lt;p&gt;using &lt;a href="http://www.e-texteditor.com/"&gt;e-texteditor&lt;/a&gt; (like &lt;a href="http://macromates.com/"&gt;textmate&lt;/a&gt;) on windows&lt;/p&gt;&lt;p&gt;run the tests. forces tests are in &lt;a href="http://code.google.com/p/usetheforces/source/browse/trunk/test/jQuery-1.3.2.html"&gt;test/jquery-1.3.2.html&lt;/a&gt; (this is a wrapper to run all the tests)&lt;/p&gt;&lt;p&gt;find the file and right click and choose open with Firefox (I already had firefox running so it used the portableapps one and not the installed version — it doesn’t have the add-ons I need!)&lt;/p&gt;&lt;p&gt;&lt;img src="http://inspire.server101.com/ben/uploaded_images/downloading-steam-793118.png" style="cursor:pointer; cursor:hand;width: 191px; height: 53px;" border="0" alt="" /&gt;&lt;/p&gt;&lt;p&gt;may be a little slow downloading &lt;a href="http://developer.yahoo.com/yui/3/test/"&gt;YUI to run tests&lt;/a&gt; &lt;i&gt;(especially if &lt;/i&gt;&lt;a href="http://store.steampowered.com/app/9460/"&gt;&lt;i&gt;downloading a game from steam&lt;/i&gt;&lt;/a&gt;&lt;i&gt; in the background over &lt;/i&gt;&lt;a href="http://www.bigpond.com/internet/plans/wireless/plans-and-offers/"&gt;&lt;i&gt;3G broadband&lt;/i&gt;&lt;/a&gt;&lt;i&gt;)&lt;/i&gt;&lt;/p&gt;&lt;p&gt;1 test failing. find it, fix it, save it. run again.&lt;/p&gt;&lt;img src="http://inspire.server101.com/ben/uploaded_images/encoding-video-703323.png" style="cursor:pointer; cursor:hand;width: 200px; height: 26px;" border="0" alt="" /&gt;&lt;p&gt;can run in both Firefox and IE8 in parallel &lt;i&gt;(even if encoding video in the background, if you are an avid multitasker, I recommend a multicore CPU — it’s essential for &lt;/i&gt;&lt;a href="http://www.rockstargames.com/IV/"&gt;&lt;i&gt;GTA IV&lt;/i&gt;&lt;/a&gt;&lt;i&gt; anyway!)&lt;/i&gt;&lt;/p&gt;&lt;p&gt;tests passed, all good, don't forget to check in &lt;i&gt;(even if being distracted by Buffy - the first episode where Spike and Drusilla appear - and the kids playing trains)&lt;/i&gt;&lt;/p&gt;&lt;p&gt;now we're ready to code something new.&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;i&gt;(after we send the kids back to the Wii and outside for a splash in the wading pool)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;there's a bug discovered in the confirm validation whilst playing with the UI, which reminds me that there's a demo form so you can interact with the UI whilst working. whilst coding to tests should be enough, I like the immediate feedback from trying it out (when coding UI), and there's no real point running the test if I know it isn't working anyway.&lt;/p&gt;&lt;p&gt;here's the &lt;a href="http://code.google.com/p/usetheforces/source/browse/trunk/demo/form/acceptance.html"&gt;demo form&lt;/a&gt;. it has email and confirm email, and they are setup to work, like this.&lt;/p&gt;&lt;p&gt;&lt;img src="http://inspire.server101.com/ben/uploaded_images/confirm-demo-790188.png" style="cursor:pointer; cursor:hand;width: 200px; height: 35px;" border="0" alt="" /&gt;&lt;/p&gt;&lt;p&gt;type 'foo@example.com' and 'foo' and tab away (validation runs onblur/onchange) the error appears.&lt;/p&gt;&lt;img src="http://inspire.server101.com/ben/uploaded_images/confirm-demo-valid-790237.png" style="cursor:pointer; cursor:hand;width: 200px; height: 45px;" border="0" alt="" /&gt;&lt;p&gt;correct the error, 'foo' becomes 'foo@example.com' and the confirm validation is happy.&lt;/p&gt;&lt;p&gt;but what if it happened the other way? let's reload the form.&lt;/p&gt;&lt;img src="http://inspire.server101.com/ben/uploaded_images/confirm-demo2-724587.png" style="cursor:pointer; cursor:hand;width: 200px; height: 35px;" border="0" alt="" /&gt;&lt;p&gt;fo@example.com and foo@example.com ... confirm validation correctly highlights the problem.&lt;/p&gt;&lt;img src="http://inspire.server101.com/ben/uploaded_images/confirm-demo-valid2-bug-724606.png" style="cursor:pointer; cursor:hand;width: 200px; height: 32px;" border="0" alt="" /&gt;&lt;p&gt;fix the first field and tab on through ... the validation hasn't kicked in.&lt;/p&gt;&lt;p&gt;This is &lt;a href="http://en.wikipedia.org/wiki/Exploratory_testing"&gt;exploratory testing&lt;/a&gt;. It's also a good old fashioned &lt;a href="http://en.wikipedia.org/wiki/User-centered_design"&gt;user-centred design&lt;/a&gt; technique “put yourself in their shoes”, thinking through how users will interact with the application. Don't just think of one way they may use it, think of all the different ways they may use it. It's not just random typing and clicking.&lt;/p&gt;&lt;p&gt;&lt;i&gt;does Buffy really plan to use that machete on spike? oh. on the salad. ok.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;look away from the tv.&lt;/p&gt;&lt;p&gt;Is this a bug?&lt;/p&gt;&lt;p&gt;You do have to decide if issues found are bugs, or possible features, or just interesting anomalies to note.&lt;/p&gt;&lt;p&gt;This is a bug, forces validation must be intuitive and easy to use and this clearly fails that. That's part of the &lt;a href="http://code.google.com/p/usetheforces/"&gt;design goals&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;now, at this point we could start solving the problem and I already have an idea in my head it's related to the onblur/onchange trigger happening only on the confirm field. I probably need to track the dependency between the two fields and run the validation when either changes.&lt;/p&gt;&lt;p&gt;This line of thought is very dangerous, because it overlooks a more important problem.&lt;/p&gt;&lt;p&gt;ALL THE TESTS PASSED. &lt;/p&gt;&lt;p&gt;if there is a bug, shouldn't that show up? it's passing all the tests, so there is a gap in the test coverage.&lt;/p&gt;&lt;p&gt;before we do anything else, let's capture the problem as a test. our test should set the wrong value for email, the right value for confirm email, and verify the confirm validation message appears. it should then correct the email value, and verify that the error has disappeared. This test should fail, because we haven't fixed the code yet. But, that's important too, that's how we verify the test is coded correctly.&lt;/p&gt;&lt;p&gt;&lt;i&gt;ah Angel playing at Angelus. Cool, but not the same as when Angelus really takes over.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Let's code ...&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;coded a new test. it's in &lt;a href="http://code.google.com/p/usetheforces/source/browse/trunk/test/unit/forms.ui.js"&gt;unit/forms.ui.js&lt;/a&gt; ...&lt;/p&gt;&lt;p&gt;must confess not having a great handle on &lt;a href="http://en.wikipedia.org/wiki/Unit_testing"&gt;unit&lt;/a&gt; vs &lt;a href="http://en.wikipedia.org/wiki/Integration_testing"&gt;integration&lt;/a&gt; vs &lt;a href="http://en.wikipedia.org/wiki/Acceptance_testing"&gt;acceptance&lt;/a&gt; tests. This feels like it might be more than a unit test, but the important thing for now is getting the tests in place. I am going to need to sort it out one day.&lt;/p&gt;&lt;p&gt;The new test fails, as expected.&lt;/p&gt;&lt;p&gt;Unfortunately it's failing in the wrong place, the error message didn't even appear. Debug the test. I insert "this.&lt;a href="http://developer.yahoo.com/yui/3/test/#asynctests"&gt;wait&lt;/a&gt;(null, 10000)" in to pause the test so I can see it.&lt;/p&gt;&lt;p&gt;aha, I forgot the setup step. I have to specify that the field needs confirm validation.&lt;/p&gt;&lt;p&gt;That's done with this: $('#confirm-email').forces_attr('type', 'confirm');&lt;/p&gt;&lt;p&gt;I'm going to place that in the &lt;a href="http://developer.yahoo.com/yui/3/test/#setup-and-teardown"&gt;setUp method of the test case&lt;/a&gt; (see YUI3 for more) because it seems likely I will forget this again. I hope it won't upset any other tests, but there's an easy way to check this — run the tests again!&lt;/p&gt;&lt;p&gt;remembering to remove that 10 second wait will help. the test failed on it. which is useful when debugging. and extra useful in this instance for allowing me to grab a screenshot. and I saw the UI displaying the right thing so I have some confidence.&lt;/p&gt;&lt;p&gt;remove the pause, run the tests again.&lt;/p&gt;&lt;p&gt;everything passed. This is not good. Our test has not caught that bug. Let's put the pause back in and find out why.&lt;/p&gt;&lt;p&gt;The UI is showing the right thing. The value is valid and confirmed, but the alert message is still being displayed. The test is supposed to check it doesn't show that message. Something is wrong with the test.&lt;/p&gt;&lt;p&gt;ah, I was going to fix using a console log. But I've noticed, it is using $('#email-confirm') instead of $('#confirm-email'). D'oh. Mistakes like this are the bane of any coder's life. Especially when they don't throw any syntax errors.&lt;/p&gt;&lt;p&gt;I can see this error in the previous test (that I copied from). A bit disturbing. Search and replace.&lt;/p&gt;&lt;p&gt;success! the test now fails at the expected point. we've now achieved the "Red" from red, green, refactor. We have a working test.&lt;/p&gt;&lt;p&gt;Don't check in at this point. That would mean the next person who updates their copy from the project has this test failing and probably no idea why. They'll try to fix it, we'll be coding ourselves, it could lead to conflicts. It also erodes faith in the build if you update to the latest source and it's broken. Like when we went to start and had to fix that other broken test. Not good.&lt;/p&gt;&lt;p&gt;So hold off checking in!&lt;/p&gt;&lt;p&gt;&lt;i&gt;But it is a good time to take a quick break and &lt;/i&gt;&lt;a href="http://windows.microsoft.com/en-AU/windows-vista/Purble-Place-how-to-play"&gt;&lt;i&gt;help daughter play Purble place&lt;/i&gt;&lt;/a&gt;&lt;i&gt; on Windows7. Now that she's setup and happily occupied ...&lt;/i&gt;&lt;/p&gt;&lt;p&gt;What comes after red? Green. We have to fix the code now so that it passes the test.&lt;/p&gt;&lt;p&gt;I'm going to change the way confim works, as I said before:&lt;/p&gt;&lt;p&gt;It currently uses this: $('#confirm-email').forces_attr('type', 'confirm')&lt;/p&gt;&lt;p&gt;I don't really like this, the "forces_attr" function is a pseudo for attr() and it makes sense to use attr('type', 'email') as &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state"&gt;email is a valid type (HTML5)&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;There's no such thing as the "confirm" type.&lt;/p&gt;&lt;p&gt;How about $('#confirm-email').forces_isConfirmationFor('#email') ? I like the explicit way this associates the two fields together. We'll need to change the tests. It's an easy change. As with any change, run those tests again.&lt;/p&gt;&lt;p&gt;Now it fails on a javascript error - we haven't implemented that function.&lt;/p&gt;&lt;p&gt;Let's solve that.&lt;/p&gt;&lt;p&gt;Coding time! Write a new stub function. It belongs in &lt;a href="http://code.google.com/p/usetheforces/source/browse/trunk/jquery.forces.forms.core.js"&gt;jquery.forces.forms.core.js&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Run the tests.&lt;/p&gt;&lt;p&gt;This has broken the old confirmation validation as well. That's ok. It needed refactoring, you can see it was a bit heavy on processing, running through all form fields to find the previous one. This direct association will be more efficient.&lt;/p&gt;&lt;p&gt;Although I don't like the idea of the confirmation being of a field elsewhere in the form, but that may be personal bias. Hmm... I could make this method isConfirmationOfPreviousField() and hard code that. But maybe another designer will have a good &lt;a href="http://www.lukew.com/ff/entry.asp?941"&gt;reason for separating the fields&lt;/a&gt;. In fact, I read something recently about that. Let's allow it.&lt;/p&gt;&lt;p&gt;Remove the old validation.&lt;/p&gt;&lt;p&gt;&lt;i&gt;*sigh* youngest daughter tipped a whole bunch of paper on the floor. That's a bit distracting. I better pick it up. ok, tidy again.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;let's recode the validation. We know the tests are ok, let's just code until it works. I'm not describing my coding here today.&lt;/p&gt;&lt;p&gt;&lt;i&gt;much excitement over the matchup game. two excited girls. "i won daddy!" that's lovely girls.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;I'm coding. &lt;i&gt;Ok, now they're making me laugh.&lt;/i&gt; ok, discipline. code.&lt;/p&gt;&lt;p&gt;Let's flesh out this forces_isConfirmationFor method.&lt;/p&gt;&lt;p&gt;It occurs to me that now that I am tracking the associated field, I'd like that exposed. The UI code will need to know that, as it knows what label to display (e.g. doesn't match "Email")&lt;/p&gt;&lt;p&gt;let's put a test in for that. That's so simple it really will be a unit test. I'm putting it in &lt;a href="http://code.google.com/p/usetheforces/source/browse/trunk/test/unit/forms.js"&gt;unit/forms.js&lt;/a&gt; because it relates to core (not UI) functionality. new test case to find the confirmation field. note that it uses the same method, but passes no arguments. That seems to make sense to me.&lt;/p&gt;&lt;p&gt;&lt;i&gt;Back from emergency track repairs to the new Thomas train set and with relatives arriving for a BBQ, may not accomplish much more. Oh, BBQ later, this is whipper snipping time. I have the best inlaws.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Let's try to get that test to pass.&lt;/p&gt;&lt;p&gt;First attempt at code, run the tests. Fails, but we get an interesting message.&lt;/p&gt;&lt;p&gt;ok, fixed. I just had to remember we passed "#input1" to the function, not a jquery object, and the function had to turn it into a jquery object. I wonder if it works if we pass a jquery object? That deserves a new test.&lt;/p&gt;&lt;p&gt;It passes. Fantastic. That's jquery working nicely for us.&lt;/p&gt;&lt;p&gt;Note the comma placement in adding that test. If an extra comma slips in, IE becomes very unhappy. It doesn't like a comma after the last item in an object. It &lt;a href="http://twitter.com/bboyle/status/5850003310"&gt;caught me out recently&lt;/a&gt;, so it is fresh in my mind. Let's check the tests in IE8. It's much slower. I am looking forward to the performance improvements IE9 promises.&lt;/p&gt;&lt;p&gt;Good. It returns the same results as FF. Let's recap.&lt;/p&gt;&lt;p&gt;We can now specify a field is a confirmation for another field, and find out what that field is. Those tests pass, we're confident that functionality will continue to work.&lt;/p&gt;&lt;p&gt;Let's work on addressing those other tests, and implement the actual validation. We'll reproduce the functionality we had before. When the confirmation field is updated, it's validated. (That won't solve the original bug).&lt;/p&gt;&lt;p&gt;Doesn't seem like we'll need much code. And now I realise I don't have a good test for this. The tests are based on checking the UI shows the correct value. I just want to test that the field state is correctly flagged as "invalid". If the field is invalid, the UI should work anyway. But because I'm refactoring I need to work on the UI too. I want more test coverage so I can get confidence this bit is working before I code the UI. Really, I should have those tests already in place. Still learning the ropes and anticipating the right tests.&lt;/p&gt;&lt;p&gt;I will comment out the new code and write the tests (to get them "red")&lt;/p&gt;&lt;p&gt;Refactored to combine the two previous tests, and added two new ones to check valid/invalid status.&lt;/p&gt;&lt;p&gt;And conveniently missed out a comma which caused a syntax error. Easily fixed.&lt;/p&gt;&lt;p&gt;Good thing about running these tests frequently is you find these things quickly. I probably should be &lt;a href="http://en.wikipedia.org/wiki/Pair_programming"&gt;pairing&lt;/a&gt; to avoid more of these mistakes in the first place. I've made so many mistakes so far, can you imagine if I hadn't tested anything yet? Sorting through it all later would be a nightmare!!&lt;/p&gt;&lt;p&gt;Some more bugs in the test fixed, and we're at the right state now.&lt;/p&gt;&lt;p&gt;4 tests are failing. That's a lot, I think one at a time is ideal. I don't think red, green refactor is about lots of failing tests! You want a much shorter cycle between red and green. Anyway, 4 tests failing. 2 are the pre-existing UI ones, 2 are to test how the confirmation validation is implemented (not how the UI looks).&lt;/p&gt;&lt;p&gt;Let's see if uncommenting our code fixes that.&lt;/p&gt;&lt;p&gt;Nope, there was a bug. 11 errors showed up.&lt;/p&gt;&lt;p&gt;When that happens, you know something what you just changed has got a (usually simple) flaw. In this case, "isConfirmationFor()" vs "e.isConformationFor()". Simple. But important! One can't call methods without objects (well, you can, but that's a &lt;a href="http://jsninja.com/"&gt;ninja secret&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Fixing that and we return to 4 errors. That's a bit better, but means the implementation did not pass the tests. Why not?&lt;/p&gt;&lt;p&gt;Let's introduce some logging ... hmm, it's not logging anything for those two tests. Is it even validating anything? More logging. Nope, doesn't seem to be. Aha, in that test case I will need to enable validation for the test form.&lt;/p&gt;&lt;p&gt;That was indeed the problem with the tests, they pass now.&lt;/p&gt;&lt;p&gt;So, we know that validation works for the confirm field (but not the source) field. It's not working at the UI level though, let's fix that up.&lt;/p&gt;&lt;p&gt;&lt;i&gt;Wow &lt;a href="http://www.smashbros.com/en_us/gamemode/various/various04.html"&gt;Super Smash Bros Mega HEAVY brawl&lt;/a&gt; is a lot of fun. But it doesn't get the coding done. That was very distracting Daniel. But great fun!&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Quick run through and ... we've restored things to where they were!&lt;/p&gt;&lt;p&gt;&lt;i&gt;Now, I'm cooking. Not "cooking" as in "coding successfully", but "cooking" as in "cooking at the BBQ".&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;When I'm back, we can fix that bug so the confirmation validation occurs when either field is updated! Write some more unit tests first ...!&lt;/i&gt;&lt;/p&gt;&lt;p&gt;* * *&lt;/p&gt;&lt;p&gt;&lt;i&gt;Um, didn't get to any more coding that Saturday. I ate tea, watched Robots, &lt;a href="http://www.youtube.com/watch?v=gF6uuj8KOd4"&gt;played L4D2 scavenge mode&lt;/a&gt;. It was awesome! More coding tomorrow. Maybe.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Ok, 5:51 pm the next day ...&lt;/p&gt;&lt;p&gt;running the tests is even slower now YUI3 needs to download over shaped (64 kbps) broadband. If you can call it broadband.&lt;/p&gt;&lt;p&gt;1 test failed. It's that bug, the confirm alert doesn't go away when the original field is corrected. I'm gonna write another test for this, that's not at the UI layer.&lt;/p&gt;&lt;p&gt;Test works. (It failed at the expected point.) Let's code the validation (not the UI) so it works.&lt;/p&gt;&lt;p&gt;When the confirmation is setup, it now stores the "confirm" field as a "validation dependency" for the original field. When validating, it will check for dependencies and validate them. I'm aware that if this was called twice, things will go a little awry.&lt;/p&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;p&gt;$('#confirm1').forces_isConfirmationFor('#email');&lt;/p&gt;&lt;p&gt;$('#confirm2').forces_isConfirmationFor('#email');&lt;/p&gt;&lt;p&gt;The second call will result in #email having a validation dependency for confirm2, that overwrites the one for confirm1. I don't consider this a bug, because I don't currently need to deal with more than one validation at a time. So I have not coded tests around it. Note that $('#confirm1,#confirm2').forces_isConfirmationFor('#email') should work anyway. But consider that an undocumented feature. It is certainly not a requirement so there are no tests guaranteeing it will work.&lt;/p&gt;&lt;p&gt;Tests run and there are lots more failures. Nothing new should be failing, there must be an error in the code changes I made.&lt;/p&gt;&lt;p&gt;This time, I'm using undo to return the code to the state it was. I don't feel like debugging. Yes, that's reset everything nicely. Sometimes this is the more efficient approach. You learn to judge when. Depends how much code you invested and how wrong things went!&lt;/p&gt;&lt;p&gt;Coding attempt #2.&lt;/p&gt;&lt;p&gt;OK, the validation dependency is now stored and there's a test to verify that part works.&lt;/p&gt;&lt;p&gt;Now to invoke that dependency during the onchange validation. It's not needed onsubmit, because ALL fields within the form are validated anyway.&lt;/p&gt;&lt;p&gt;Wow. Everything just passed with one line of code!&lt;/p&gt;&lt;p&gt;Because jquery runs on an array of objects, it was a snap to add the dependend fields in. Basically the change was control.forces_validate() to control.add(control.data('dependents')).forces_validate().&lt;/p&gt;&lt;p&gt;I love jquery.&lt;/p&gt;&lt;p&gt;The UI has passed as well. I guess it was already setup to work when the valid/invalid events fire.&lt;/p&gt;&lt;p&gt;Still, let's test the demo form and see it in action.&lt;/p&gt;&lt;p&gt;The demo form isn't working. It's still using forces_type('confirm'). Let's update it to the refactored version. &lt;/p&gt;&lt;p&gt;$('#email-confirm').forces_isConfirmationFor($('#email').forces_attr('type', 'email'));&lt;/p&gt;&lt;p&gt;It works!&lt;/p&gt;&lt;p&gt;Important to note that this new validation will not run against empty fields (this is by design). If you *require* confirmation, then you need to make the field required also. Otherwise, it implements optional confirmation, as in it may be omitted, but if present must be valid. I don't have a use case for that, but it is the design pattern I follow for all validation.&lt;/p&gt;&lt;p&gt;This is the code people are likely to want.&lt;/p&gt;&lt;p&gt;$('#email,#email-confirm').forces_attr('required', true);&lt;/p&gt;&lt;p&gt;$('#email').forces_attr('type', 'email');&lt;/p&gt;&lt;p&gt;$('#email-confirm').forces_isConfirmationFor('#email');&lt;/p&gt;&lt;p&gt;There are many ways to rewrite the above, but that is a simple way to show how it works.&lt;/p&gt;&lt;p&gt;Let's do an IE8 check of the tests. All passed.&lt;/p&gt;&lt;p&gt;Ready to check in, preparation steps.&lt;/p&gt;&lt;p&gt;Run &lt;a href="http://code.google.com/p/usetheforces/source/browse/trunk/compile.bat"&gt;compile.bat&lt;/a&gt; to &lt;a href="http://developer.yahoo.com/yui/compressor/"&gt;combine and minify the JS code&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Run the tests against the minified version. I like to do that in &lt;a href="http://www.google.com/chrome"&gt;Chrome&lt;/a&gt;, just for something different.&lt;/p&gt;&lt;p&gt;All passed.&lt;/p&gt;&lt;p&gt;Let's check that code in. Don't forget a handy comment.&lt;/p&gt;&lt;p&gt;We're done! &lt;i&gt;Let's eat tea.&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Believe it or not, that’s how I code. It is far less adhoc than it seems. And when I am less tired, I might even add in all the extra screenshots I captured and this post may even make sense.&lt;/p&gt;&lt;p&gt;It might have been quicker to just &lt;a href="http://code.google.com/p/usetheforces/source/detail?r=171"&gt;read the revision notes&lt;/a&gt; ;)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-1301093711822269093?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/1301093711822269093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=1301093711822269093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/1301093711822269093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/1301093711822269093'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2009/11/saturday-afternoon-coding.html' title='Saturday afternoon coding'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-4130124355883675852</id><published>2009-10-25T16:48:00.005+10:00</published><updated>2009-10-25T17:11:11.692+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tiny rant'/><category scheme='http://www.blogger.com/atom/ns#' term='customer service'/><category scheme='http://www.blogger.com/atom/ns#' term='broadband'/><title type='text'>Big pain in the Pond</title><content type='html'>&lt;p&gt;Today I got bill shock. Well, not bill shock exactly. More like, quota shock. Here's my email to BigPond's contact us form.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I wish to make a number of complaints.&lt;/p&gt;&lt;p&gt;I am a wireless customer. I have just reached the end of 12 months so the price for all plans has doubled. Due to situations explained in this email, I am set to embark on this second year paying $90 for 2.5 GB for this first month. I am extremely unhappy.&lt;/p&gt;&lt;p&gt;Complaint #1: &lt;em&gt;I wish to complain about the high prices.&lt;/em&gt; At half price, the plans were at the high end of broadband pricing. At regular price, now, they are ridiculously high.&lt;/p&gt;&lt;p&gt;I have limited choice in broadband provider. ADSL is unavailable at my residence, due to a technology blocker (pair gain). Telstra have not fixed this in the years I have lived here (since 2000) and BigPond profit as a result by charging a premium for wireless broadband. Complaint #2: &lt;em&gt;pair gain system still limiting my choice in broadband.&lt;/em&gt; Complaint #3: &lt;em&gt;BigPond not offering discounts to customers suffering due to technology limitations with Telstra infrastructure&lt;/em&gt;&lt;/p&gt;&lt;p&gt;So having just entered the second year as a BigPond customer, knowing this would cost more, I switched down to the 5 GB plan. Someone at your end chose this time to link my BigPond and Telstra mobile accounts, with the result two days were shaved from my last month (ended yesterday, 24 October). Complaint #4: &lt;em&gt;don't merge accounts (for simplicity on your end) at the customer's expense&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;Because of this account merge, my usage meter — which I check regularly — was saying the monthly period was September 27 to October 25. I assumed this was inclusive and today (25 October) learned it was not. Thinking today would be my last day before changing to the 5 GB plan, I left Steam to download a new game. This morning I learned that 2.5 GB has already been consumed from my new (5 GB) quota. I hoped it would download the files from the (unmetered) gamearena steam server. Apparently this was not the case. Complaint #5: &lt;em&gt;get the gamearena steam server working so customer's can benefit from unmetered content.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;All of this has made me very disappointed with the service. Can you do anything to help me? Here's a summary of those complaints and the actions I would like to see in response.&lt;/p&gt;&lt;p&gt;Complaint #1: I wish to complain about the high prices.&lt;br /&gt;Action: please offer better prices!&lt;/p&gt;&lt;p&gt;Complaint #2: pair gain system still limited my choice in broadband.&lt;br /&gt;Action: remove the pair gain (or please explain to me why I suffer pair gain, and when — if ever — this situation will be resolved!)&lt;/p&gt;&lt;p&gt;Complaint #3: BigPond not offering discounts to customers suffering due to technology limitations with Telstra infrastructure&lt;br /&gt;Action: offer me a discount! Broadband costs me so much more because of this pair gain :(&lt;/p&gt;&lt;p&gt;Complaint #4: don't merge accounts at the customer's expense.&lt;br /&gt;Action: don't shave days off account/quota, add days on. Make this a win:win situation for customers, not an opportunity to steal a few more bucks.&lt;br /&gt;Action: reset my quota for October-November. I lost 2+ GB because of you ended the last billing period prematurely. Don't make it cost me this month's quota.&lt;/p&gt;&lt;p&gt;Complaint #5: get the gamearena steam server working so customer's can benefit from unmetered content&lt;br /&gt;Action: Unmetered content is used as a major selling point on BigPond, start delivering on the promise! I've read gamearena can't control the steam server. I don't care about excuses. Fix it!&lt;/p&gt;&lt;p&gt;In much anticipation of your reply, by which I will judge whether I can remain a BigPond/Telstra customer. Between my wife and I, we have 2 iPhones, a home phone and Internet. We've taken it all away before and can do so again — it's painful though. Here's a prime opportunity to help a customer and win some loyalty.&lt;/p&gt;&lt;p&gt;Hoping you can offer us a reason to stay.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;With Left 4 Dead 2 (another big download + gaming time) due out 17 November, I hope something good happens to allow me to enjoy the Internet. $90 a month for 5 GB though, it's just too expensive. Is it time to move house? Somewhere with broadband, like say, California?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-4130124355883675852?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/4130124355883675852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=4130124355883675852' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/4130124355883675852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/4130124355883675852'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2009/10/big-pain-in-pond.html' title='Big pain in the Pond'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-5703697451508927339</id><published>2008-12-04T01:09:00.003+10:00</published><updated>2008-12-04T01:19:25.956+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GTA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>GTA IV on PC: first impressions</title><content type='html'>&lt;h2&gt;The good&lt;/h2&gt;&lt;p&gt;&lt;em&gt;Independence FM&lt;/em&gt;. Having your own music just makes the GTA experience that much more what you want it to be. We all have our own favourite driving/party/cranky music, it's nice to finally be able to play it. And commentary that relates to the audio track metadata, nice touch!&lt;/p&gt;&lt;p&gt;&lt;em&gt;Mouse&lt;/em&gt;. Nothing beats the mouse. Nice camera control. Nice easy yes/no buttons. Useful for target and attack in combat. Love the mouse.&lt;/p&gt;&lt;h2&gt;The bad&lt;/h2&gt;&lt;p&gt;&lt;em&gt;Driving with a keyboard&lt;/em&gt; — augh! OK, this one is all my fault for not configuring my gamepad — yet. Keyboard control for driving is awful, truly, terribly awful. In any game, this is not a GTA issue.&lt;/p&gt;&lt;p&gt;Antialiasing. Needs to be turned on! Even 2× &lt;abbr title="anti-aliasing"&gt;AA&lt;/abbr&gt; would be nice. I guess this is related to …&lt;/p&gt;&lt;h2&gt;The ugly&lt;/h2&gt;&lt;p&gt;&lt;em&gt;Graphics performance&lt;/em&gt;. I look forward to a patch or new nvidia driver (or both) that brings the framerate up. FPS is hovering in the 16–22 mark and that’s noticably poor. Strangely, dropping the resolution and graphics settings down as low as they go doesn’t improve the situation. I mean, it is good I don’t need to run it on low quality. It’s bad I can’t get the framerate up. So, bring on a patch. It seems to be a hot topic on the GTA forums. Glad it’s not just me.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-5703697451508927339?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/5703697451508927339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=5703697451508927339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/5703697451508927339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/5703697451508927339'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/12/gta-iv-on-pc-first-impressions.html' title='GTA IV on PC: first impressions'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-7274160252211611463</id><published>2008-11-14T23:34:00.005+10:00</published><updated>2008-11-15T00:03:27.366+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digital TV'/><category scheme='http://www.blogger.com/atom/ns#' term='mythtv'/><category scheme='http://www.blogger.com/atom/ns#' term='observations'/><title type='text'>Television statistics</title><content type='html'>&lt;p&gt;Forget ratings. &lt;a href="http://www.mythtv.org/modules.php?name=MythFeatures"&gt;MythTV&lt;/a&gt; keeps pretty detailed records of EPG data (TV guide), what you record, when you watch it, all that jazz. Ew. I just remembered I watched some of Chicago this week and I didn't like it. Now I can't say all that jazz. Hmmm.&lt;/p&gt;&lt;p&gt;Stats! &lt;a href="http://www.mythtv.org/wiki/index.php/MythWeb#Statistics"&gt;Mythweb has a neato stats page&lt;/a&gt; that shows some interesting TV viewing habits in this house! We've been with digital TV for quite some time now. We used &lt;a href="http://www.digitalnow.com.au/dntvlive/screenshots.html"&gt;DNTV Live!&lt;/a&gt; on Windows XP for a bit, before I bit the bullet and switched to &lt;a href="http://www.mythbuntu.org/"&gt;MythTV on Ubuntu&lt;/a&gt; linux.&lt;/p&gt;&lt;p&gt;And just how long have we had MythTV? &lt;em&gt;2 years 6 days 12 hrs 27 mins&lt;/em&gt;. 13% of that time was spent recording TV. Top of the list was Toasted TV with 598 recordings! &lt;a href="http://www.abc.net.au/tv/goodgame/"&gt;Good Game&lt;/a&gt; just made the top 10 with 62. Neighbours also contributes a lot, which places channel &lt;a href="http://ten.com.au/"&gt;TEN&lt;/a&gt; first with 1199 recordings. &lt;a href="http://www.abc.net.au/tv/abc2/"&gt;ABC2&lt;/a&gt; comes in second — for those &lt;a href="http://www.abc.net.au/abckids/"&gt;great kids shows!&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In total we have recorded &lt;em&gt;3 months 5 days 21 hrs 58 mins&lt;/em&gt; of television viewing. Which explains the 1.5 TB that we need. I'm certain there is absolutely no way we have watched all that, but we do watch more telly now we can watch what we want when we want.&lt;/p&gt;&lt;p&gt;If you haven't switched to digital TV yet, you really should. But it isn't worth making the switch unless you get a &lt;a href="http://en.wikipedia.org/wiki/Digital_video_recorder"&gt;DVR (digital video recorder)&lt;/a&gt;. There are lots of options. Myth is free and pretty darn good. Of course, you need to build yourself a linux box to get it up and running first … If that sounds daunting, there are TiVo and Foxtel IQ and I dunno what else. Just go get it!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-7274160252211611463?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/7274160252211611463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=7274160252211611463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/7274160252211611463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/7274160252211611463'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/11/television-statistics.html' title='Television statistics'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-6916787759183349801</id><published>2008-11-11T20:04:00.008+10:00</published><updated>2008-11-11T21:35:51.330+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web standards'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Easy rounded corners — playing nice with borders in IE6</title><content type='html'>&lt;p&gt;When a graphic designer gives you a mockup full of rounded corners, you just know you’re in for some pain. Why can’t they be satisifed with Comic Sans fonts instead of delving into techniques that haven’t quite penetrated the user-agent landscape yet. Ah… just jokes of course!&lt;/p&gt;&lt;p&gt;&lt;img style="float: right; width: 70px; margin: .5em 0 1em 1em" src="http://inspire.server101.com/bttdb/css/corners/ie6-corners.png" alt="" /&gt;Andrew has published a technique dubbed “&lt;a href="http://irama.org/web/dhtml/cornerise/"&gt;cornerise&lt;/a&gt;” over at irama, that neatly wraps up what we discovered when implementing rounded corners. As noted, border-radius does all the magic in newer builds of gecko and webkit, but that leaves us with a good chunk of Internet Explorer users needing some love—cornerise is such a technique.&lt;/p&gt;&lt;p&gt;It works by using javascript to insert some tactically placed &amp;lt;span&amp;gt; tags into a document. These spans are positioned in the corners, and background images provide the corners. The overall footprint can be kept lean by utilising &lt;a href="http://inspire.server101.com/bttdb/css/corners/corners.html"&gt;css sprites&lt;/a&gt; (&lt;a href="http://inspire.server101.com/bttdb/css/corners/corners.png"&gt;like this one&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;If you happen to be using borders with corners, you have a bit more to do. Firstly, the background images must include a border strip the same size as the border — pixel widths only here. Secondly, the corners need to be positioned on top of the border which means moving them slightly beyond the bounds of the containing box. Thirdly, you will enounter a quirk in IE6 that results in a 1 pixel border on the right or bottom of the box. Try as you might you won’t get rid of it — without compromising the corners in IE7 and IE8 that is! Actually, this quirk presents even without borders.&lt;/p&gt;&lt;p&gt;&lt;img style="float: left; width: 50px; margin: .5em 1em 1em 0" src="http://inspire.server101.com/bttdb/css/corners/ie6-odd-width.png" alt="" /&gt;To solve this quirk, we need to understand it. It is caused by a rounding issue (measurements are rounded to the nearest pixel when a layout is drawn on the screen). It only occurs when the width or height of the box is an odd number of pixels. And it only affects the right or bottom edge, the top and left are always ok. Because this only occurs on an odd number of pixels, you might not even be aware of the issue straightaway. Ah, these are the challenges that web designers live for!&lt;/p&gt;&lt;p&gt;You could specify the dimensions of boxes so that they are always an even number of pixels, but that’s a poor compromise. Here’s a simple solution we discovered that allows you to have any size box, and support resizing on the fly (due to viewport or text size changes). It requires a css expression. Yes, expressions only work when javascript is enabled. Since the cornerise technique itself utilises javascript, this is completely suitable. (And it’s not like corners need to be accessible, this is just sugar.)&lt;/p&gt;&lt;dl&gt;&lt;dt&gt;For corners on the right edge:&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;_margin-right: expression(this.parentNode.offsetWidth%2==0 ? '0' : '-1px');&lt;/code&gt;&lt;/dd&gt;&lt;dt&gt;For corners on the bottom edge:&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;_margin-bottom: expression(this.parentNode.offsetHeight%2==0 ? '0' : '-1px');&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt; &lt;p&gt;What does it mean? Well, this will set the right/bottom margin to either 0 or -1px depending on whether the width/height is an odd number of pixels. That’s what the %2 is for. Yes, another use for &lt;a href="http://en.wikipedia.org/wiki/Modulo_operation"&gt;modulus&lt;/a&gt; arithmatic!&lt;/p&gt;&lt;p&gt;Now, as stated, this problem only occurs in IE6. We don’t want this expression interfering with the nice positioning in IE7 and IE8, so we need to hide it from those browsers. You can do this with conditional comments if you like, but if you don’t want to maintain separate stylesheets for individual versions of IE, you have another option: prefix the property name with an underscore. Yep, it is that simple to hide a rule from IE7 and IE8.&lt;/p&gt;&lt;p&gt;True, it's a bit hacky, but &lt;a href="http://inspire.server101.com/bttdb/css/corners/corners.html"&gt;you can’t argue with the results!&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-6916787759183349801?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/6916787759183349801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=6916787759183349801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/6916787759183349801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/6916787759183349801'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/11/easy-rounded-corners-playing-nice-with.html' title='Easy rounded corners — playing nice with borders in IE6'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-1943975214406897396</id><published>2008-10-14T19:34:00.005+10:00</published><updated>2008-10-14T20:14:03.633+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Conversation breakers from kids</title><content type='html'>&lt;p&gt;How do you stop another person from parrotting everything you say? The tried and true method was to say the person is “a silly duffer.” Of course, they can’t parrot this or they’ll be admitting it. It’s foolproof. Or it was… &lt;/p&gt;&lt;dl class="dialog"&gt;&lt;dt&gt;Me: &lt;/dt&gt;&lt;dd&gt;“Daniel’s a silly duffer!”&lt;/dd&gt;&lt;dt&gt;Daniel: &lt;/dt&gt;&lt;dd&gt;“Daniel’s a silly duffer!” *pause* “Ha ha! I called you Daniel!”&lt;/dd&gt;&lt;/dl&gt;&lt;p&gt;Now what about those neverending yes/no debates. How to diffuse them without the tears? Impossible you say? Emma knows the way.&lt;/p&gt;&lt;dl class="dialog"&gt;&lt;dt&gt;Daniel: &lt;/dt&gt;&lt;dd&gt;“Yes!”&lt;/dd&gt;&lt;dt&gt;Emma: &lt;/dt&gt;&lt;dd&gt;“No!”&lt;/dd&gt;&lt;dt&gt;Daniel: &lt;/dt&gt;&lt;dd&gt;“Yes!”&lt;/dd&gt;&lt;dt&gt;Emma: &lt;/dt&gt;&lt;dd&gt;“No!”&lt;/dd&gt;&lt;dt&gt;Daniel: &lt;/dt&gt;&lt;dd&gt;“You’re lying!”&lt;/dd&gt;&lt;dt&gt;Emma: &lt;/dt&gt;&lt;dd&gt;*pause* “No, I’m Emma.”&lt;/dd&gt;&lt;/dl&gt;&lt;p&gt;Can’t beat that, can you?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-1943975214406897396?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/1943975214406897396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=1943975214406897396' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/1943975214406897396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/1943975214406897396'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/10/conversation-breakers-from-kids.html' title='Conversation breakers from kids'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-673152185158615373</id><published>2008-09-27T12:06:00.003+10:00</published><updated>2008-09-27T12:30:20.404+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='broadband'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Now a Telstra customer</title><content type='html'>&lt;p&gt;Luckily I never got that 3 Internet key for mobile broadband, nor the $20 Telstra phone plan, because Christine and I have opted for something much more fun: &lt;a href="http://www.apple.com/au/iphone/"&gt;iPhones!&lt;/a&gt;&lt;/p&gt;&lt;p&gt;And yes, they are with Telstra, which let's us get Internet access via NextG when &lt;a href="http://www.virginbroadband.com.au/"&gt;VirginBroadband@Home&lt;/a&gt; plays up (due to congestion on Optus 3G according to Whirlpool forums). That makes it our third wireless Internet carrier. Third time lucky?&lt;/p&gt;&lt;p&gt;Proof of identity was still a little troublesome, but a birth certificate, 18+ card and credit card got me through. I avoided the Telstra shop and went to &lt;a href="http://www.nextbyte.com.au/"&gt;NextByte&lt;/a&gt; — the friendly local (next door to work) mac experts!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-673152185158615373?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/673152185158615373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=673152185158615373' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/673152185158615373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/673152185158615373'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/09/now-telstra-customer.html' title='Now a Telstra customer'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-7990138423160637930</id><published>2008-09-09T23:27:00.004+10:00</published><updated>2008-09-10T00:58:49.492+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='customer service'/><category scheme='http://www.blogger.com/atom/ns#' term='observations'/><category scheme='http://www.blogger.com/atom/ns#' term='government'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Rejoice! GST cancelled!</title><content type='html'>&lt;p&gt;Today I received the scoop from the ATO (Australian Taxation Office): &lt;em&gt;Notice of cancellation — goods and services tax (GST)&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;No more GST? You’d think that would be bigger news, but there was nothing on TV. Just this personal letter. Well, not too personal. I was greeted as “Dear Sir/Madam”. But it was addressed to me by name — in fairness, as a sole trader, that may be my “registered business name” which only coincidentally happens to be my real name. Oh wait. I see this cancellation thing only applies to me.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You are not carrying on an enterprise&lt;/li&gt;&lt;li&gt;You cannot be registered for GST&lt;/li&gt;&lt;li&gt;We have cancelled your Australian business number (ABN)&lt;/li&gt;&lt;li&gt;The cancellation is effective as of 11 August 2008&lt;/li&gt;&lt;li&gt;If you are not satisfied … you may request a review. A fee will usually be payable. Your application must be in writing, setting out the reasons for your application and be lodged with the AAT within 28 days of the date of receipt of this notice.&lt;/li&gt;&lt;/ul&gt;Whew. Some of that was in a second letter. Cancelling my ABN. On my birthday. They only issued the noticed on 5 September and I only received it today. &lt;small&gt;(Perhaps it was nice to not receive this on my birthday?)&lt;/small&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Wow. Seems I haven’t worked since June 2006. That’s worked as a sole trader mind you, I’m still happily employed at Smart Service Queensland where I work to make user interfaces — and thus customer experiences — better. Which brings me to Tim Turner’s interesting work on government market segmentation. It describes four different market segments for government organisations. One segment is subject relationships.&lt;/p&gt;&lt;p&gt;The ATO have got this down pat. Australian business and taxation are their jurisdiction. They got the law on their side and they tell you how it is. Even if it is a month after the fact.&lt;/p&gt;&lt;p&gt;If you need to design a “government to subject” user experience, take note:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Apply the rules without informing the subject, as is your right.
&lt;/li&gt;&lt;li&gt;Give the subject a token notification afterwards.&lt;/li&gt;&lt;li&gt;Do not address the subject personally: Dear Sir/Madam is appropriate.&lt;/li&gt;&lt;li&gt;Tell the subject how to appeal the application of rules, but warn them that they must pay for the privelege! To reiterate: do the thing, and then explain appeals. Don’t ask before doing!&lt;/li&gt;&lt;li&gt;Specify a different appeal process per rule applied. All appeals must be in writing, but they can go to different recipients. They are likely to be treated as entirely separate cases.&lt;/li&gt;&lt;li&gt;Remind subjects of other (potential) outstanding obligations. This is a blanket warning. Do not personalise to the subject’s circumstances.&lt;/li&gt;&lt;li&gt;Use “must” and “have to” a lot.&lt;/li&gt;&lt;li&gt;Do not engage in communication with the subject: no email or phone call, use the postal service.&lt;/li&gt;&lt;li&gt;Use a separate letter for each rule that has been applied (even rules that flow on from the application of previous rules).&lt;/li&gt;&lt;li&gt;Do not put your organisation name on the envelope, only a return address. Let your organisation name be known only when the letter is opened.&lt;/li&gt;&lt;li&gt;The letter must be signed (use a photocopied signature) by the highest ranking official within the organisation.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;11 techniques to apply! Does this sound tongue-in-cheek? It isn’t supposed to. It's a list of observations from these letters that I feel effectively reinforced the “government to subject” experience.&lt;/p&gt;&lt;p&gt;Given I haven’t worked in 2 years, I really don’t need that ABN. And now I won’t have to fill out quarterly business activity statements. Nor request new digital certificates every time I rebuild my PC at home. And that is all good news! Woot :)
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-7990138423160637930?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/7990138423160637930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=7990138423160637930' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/7990138423160637930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/7990138423160637930'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/09/rejoice-gst-cancelled.html' title='Rejoice! GST cancelled!'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-4770405943345307961</id><published>2008-09-03T20:46:00.003+10:00</published><updated>2008-09-03T21:02:07.916+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='observations'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Going incognito doesn't affect the behavior of other people …</title><content type='html'>&lt;blockquote&gt;“Going incognito doesn’t affect the behavior of other people, servers, or software. Be wary of … People standing behind you”&lt;/blockquote&gt;&lt;p&gt;&lt;small&gt;— Google Chrome&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Darn tootin’!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-4770405943345307961?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/4770405943345307961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=4770405943345307961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/4770405943345307961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/4770405943345307961'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/09/going-incognito-doesnt-affect-behavior.html' title='Going incognito doesn&apos;t affect the behavior of other people …'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-9193589802873207911</id><published>2008-08-30T10:03:00.006+10:00</published><updated>2008-08-30T11:40:09.351+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='customer service'/><category scheme='http://www.blogger.com/atom/ns#' term='broadband'/><title type='text'>Customer service disasters</title><content type='html'>&lt;p&gt;August has been a busy month for us. Yes, in just one month we have enjoyed all this fun!&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;I ordered &lt;strong&gt;3 mobile broadband&lt;/strong&gt;. I waited at home all day for delivery. Nobody turned up. I rang them and was told I had not supplied enough identification (even though I had filled out their arduous online signup form completely). I could scan and email (or fax) further identification, and then wait at home another whole day for delivery. No thanks.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Our dishwasher played up. We called &lt;strong&gt;Electrolux&lt;/strong&gt; to come and look. They couldn’t make an appointment time any sooner than two weeks later (two weeks washing dishes, ugh). The service guy got sick so they cancelled the appointment and rebooked for a time an additional two weeks later. We tried another company, &lt;strong&gt;Drac Services&lt;/strong&gt;. They didn’t show up and told my wife she hadn’t been home when she rang to query. Turned out they’d gone to the wrong customer. Booked another time. Finally made it to our house a couple of days later. Five minutes to assess the problem ($70): motor burn out. Said it would be an easy fix, like pick it up and return the next day ($370). Didn’t pick it up until after the weekend. Didn’t return it for another two weeks after we rang to complain (twice). Charged more than $370 when additional GST slipped in there, even though we’d been told it was included in quote — which is their legal obligation. Haven’t paid them yet — hey, it has only been one week!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Last week, twice the go card readers have flashed red when I ‘touched off’. I interpret this as not working, so I swipe the card again. Both times this has resulted in an extra $5 charge, followed by a call to &lt;strong&gt;Translink&lt;/strong&gt; to get the money credited back to my go card. Which takes 10 working days. Too bloody slow, Translink. I’m still watching my go card account, where is my credit?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Transferred a mobile phone, still under contract, to my wife. Ticked the boxes to transfer the commitment (new owner continues to pay contract). Billed $112 for “phone payout”. Three phone calls to &lt;strong&gt;Virgin Mobile&lt;/strong&gt; to fix this. Standard answer from call centre staff is “We pass it on to the billing department. Call back in 10 days.” Oh, and of course, “No, you can’t talk to the billing department. We’re not allowed to do that.” On third call, ranted a bit. Threatened TIO and backcharging. Have been told it’s fixed. I am watching activity on my bank account very closely…&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The oyster light was not working in one of our four new ceiling fans. Electrician struggled to install them and recommended using a knife to prise off the glass covers. We couldn’t get the cover off to fix the light ourselves. Went back to &lt;strong&gt;Beacon Lighting&lt;/strong&gt; to complain. Said they’d come check it that week. We called them the following week and they finally came around, and couldn’t remove the light cover without a hammer. Waiting on a replacement oyster light. Have light working with cover removed. Looks ugly.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Decided to give Telstra a go for wireless broadband. After years of resentment that their landline quality is so poor we get substandard dialup and are blocked from ADSL. Worked out the maths and it is cheaper to bundle with a $20/month phone plan than buy BigPond wireless alone. Went into a &lt;strong&gt;Telstra&lt;/strong&gt; shop yesterday to pick up a $20 plan. Seemed so easy until “We don’t accept 18+ cards as primary identification. We need your passport or birth certificate.” Stunned. Tried online signup for a laugh — where I learned they don’t even accept a birth certificate. It is impossible for me to identify myself adequately to Telstra online. However, I did note Telstra do accept a ‘Shooters License’. Tempting…&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Our washing machine was playing up. Still under (extended) warranty. Rang Horizon (&lt;strong&gt;Good Guys&lt;/strong&gt;) and they can’t find our records. Washing machine broke yesterday — it does not turn on. Washing piling up quickly. You try it with a family of 6 (2 adults, 1 teenager, 3 kiddlies). Can’t call them until Monday. This is going to go well…&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-9193589802873207911?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/9193589802873207911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=9193589802873207911' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/9193589802873207911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/9193589802873207911'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/08/customer-service-disasters.html' title='Customer service disasters'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-1442708580247843685</id><published>2008-08-10T13:10:00.004+10:00</published><updated>2008-08-10T13:53:01.424+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><category scheme='http://www.blogger.com/atom/ns#' term='PS3'/><category scheme='http://www.blogger.com/atom/ns#' term='Wii'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>Our consoles days are numbered</title><content type='html'>&lt;p&gt;Big fans of gaming that we are in this house, we have 2 &lt;a href="http://en.wikipedia.org/wiki/Gaming_PC"&gt;PCs for gaming,&lt;/a&gt; a &lt;a href="http://uk.wii.com/"&gt;Wii&lt;/a&gt;, &lt;a href="http://au.playstation.com/ps3/"&gt;PS3&lt;/a&gt; and &lt;a href="http://nintendo.com.au/gamecube/system/"&gt;gamecube&lt;/a&gt;. There are more: N64, SNES and even an Atari, but they’re all packed away. Oh, and a handful of DS Lites and Gameboys are floating about. But I wonder about the consoles …&lt;/p&gt;&lt;p&gt;The PS3 exists here for one purpose only: &lt;a href="http://www.rockstargames.com/IV/"&gt;GTA IV&lt;/a&gt;. With the announcement that &lt;a href="http://www.rockstargames.com/IV/#?page=news&amp;amp;story=story40"&gt;GTA IV will be available for PC in November&lt;/a&gt;, will there be any reason to hang on to it? Sure it’s a blueray player, and a fine one at that, but DVD beats it hands down for price and availability and I’m not convinced the quality difference is noticeable (although I did enjoy &lt;a href="http://www.imdb.com/title/tt0337978/"&gt;Die Hard 4.0&lt;/a&gt; — excellent quality. I’ll need to watch the DVD to compare). The games? Nothing has really struck me as “must have” yet. Other than GTA of course. The &lt;a href="http://en.wikipedia.org/wiki/Dualshock#DualShock_3"&gt;dualshock 3 controllers&lt;/a&gt; are great, and the USB charging is a great idea (that the Wii should borrow asap). They work great on the PC too, and &lt;a href="http://www.xpadder.com/"&gt;xpadder&lt;/a&gt; is awesome at mapping the buttons. It’s a shame their isn’t better native driver support, or they’d be one of the best gamepads available for PC! So I might hang onto my dualshock, but I think the PS3 will be for sale soon. Just as soon as I complete GTA. Have I mentioned how awesome this game is?&lt;/p&gt;&lt;p&gt;What’s wrong with the Wii? Gotta admit I haven’t been playing it much, enjoying &lt;a href="http://www.novalogic.com/games.asp?GameKey=BUNDFBHDPP"&gt;BHD&lt;/a&gt; on the PC more. But we love our Wii and it will stay. Very irritated at the long delay and inflated price of S&lt;a href="http://www.smashbros.com/en_us/"&gt;uper Smash Brothers Brawl&lt;/a&gt; here in Australia (and all PAL regions) and that &lt;a href="http://www.kotaku.com.au/games/2008/06/wii_update_33_kills_feeloader_too-2.html"&gt;Nintendo have used the Wii system update to block the freeloader&lt;/a&gt; that allows NTSC games to be played. Forcing consumers towards the slow and expensive local market for games is very, very disappointing. Of course, faster releases of games at better (internationally comparable) pricing is the real solution to this! For now, we're faced with buying another (local) copy of Brawl, or never updating the Wii system again … Please note I’m talking about purchased games, from overseas stores yes, not pirated copies.&lt;/p&gt;&lt;p&gt;Now when GTA IV is released for PC, in the USA first (followed by Europe), nothing will stop me buying the US version cheap from &lt;a href="http://www.play-asia.com/SOap-23-83-ayzs-71-a-49-en-84-k-40-extended.html"&gt;playasia&lt;/a&gt; the day it becomes available. And it will install and run on my PC without an issue. That’s how gaming should be. Go the mighty PC!&lt;/p&gt;&lt;p&gt;Props to Sony for keeping the PS3 game releases region free though. Learn this lesson Nintendo, and learn it fast. Your future revenue (from this household) depends on it.&lt;/p&gt;&lt;p&gt;Despite all this, I still love my games :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-1442708580247843685?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/1442708580247843685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=1442708580247843685' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/1442708580247843685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/1442708580247843685'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/08/our-consoles-days-are-numbered.html' title='Our consoles days are numbered'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-988678994462409005</id><published>2008-04-30T21:45:00.004+10:00</published><updated>2008-04-30T21:57:43.179+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='GTA'/><category scheme='http://www.blogger.com/atom/ns#' term='Smash Bros'/><category scheme='http://www.blogger.com/atom/ns#' term='Wii'/><category scheme='http://www.blogger.com/atom/ns#' term='Mario Kart'/><title type='text'>Never a better time for gaming …</title><content type='html'>&lt;p&gt;… and never a worse time to watch TV! Big Brother is back. Not only that, but the finale of Biggest Loser has kicked Smallville from TEN HD for the week and the Logies means waiting an extra week for part 2 of the CSI episode shown last Sunday. TV has never been such a bore!&lt;/p&gt;&lt;p&gt;The gaming scene is alive! &lt;a href="http://www.smashbros.com/"&gt;Brawl&lt;/a&gt; is out (well, we have to import NTSC versions, but it is out), &lt;a href="http://www.mariokart.com/wii/"&gt;Mario Kart Wii&lt;/a&gt; is out, &lt;a href="http://www.rockstargames.com/IV/"&gt;GTA IV&lt;/a&gt; is out — I’ll need to buy a playstation 3 for that — and &lt;a href="http://www.nintendo.com/wiifit/en/"&gt;Wii Fit&lt;/a&gt; is out next week. Holy how sweet!&lt;/p&gt;&lt;p&gt;If you’re not gaming — &lt;em&gt;what are you waiting for?&lt;/em&gt; Get into it!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-988678994462409005?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/988678994462409005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=988678994462409005' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/988678994462409005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/988678994462409005'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/04/never-better-time-for-gaming.html' title='Never a better time for gaming …'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-4991998260996584859</id><published>2008-04-21T21:07:00.000+10:00</published><updated>2008-04-21T21:09:08.166+10:00</updated><title type='text'>Job security as long as there's stupid design</title><content type='html'>&lt;p&gt;Hallelujah! See &lt;a href="http://www.useit.com/alertbox/25-years-usability.html"&gt;25 Years in Usability&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-4991998260996584859?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/4991998260996584859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=4991998260996584859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/4991998260996584859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/4991998260996584859'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/04/job-security-as-long-as-theres-stupid.html' title='Job security as long as there&apos;s stupid design'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-4261566698017328796</id><published>2008-04-20T22:16:00.002+10:00</published><updated>2008-04-20T22:26:01.619+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spelling and grammar'/><title type='text'>Pee in store for details</title><content type='html'>&lt;p&gt;The best typo I have encountered to date was in the Sunday Mail TV Guide today, in the small print of a full page advertisement for &lt;a href="http://www.barrys.com.au/"&gt;Barry's&lt;/a&gt; — “Pee in store for details”.&lt;/p&gt;&lt;p&gt;Now you know what to do — hop to it!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-4261566698017328796?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/4261566698017328796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=4261566698017328796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/4261566698017328796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/4261566698017328796'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/04/pee-in-store-for-details.html' title='Pee in store for details'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-3706160449716148254</id><published>2008-03-02T20:25:00.009+10:00</published><updated>2008-03-03T22:35:32.870+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='public transport'/><title type='text'>Public transport dystopia</title><content type='html'>&lt;p&gt;Welcome to 2008. For public transport in southeast Queensland, it is the dawn of the go card. Note that it is virtually impossible to mention “&lt;a href="http://www.translink.com.au/go"&gt;go card&lt;/a&gt;” to people without them hearing “go kart” instead. A go card is apparently a smart card, but you know what they say: &lt;em&gt;Never trust anything that can think for itself if you can't see where it keeps its brain.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;There is a lot of propaganda around the go card. Here’s my experience:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You can order online with the Safari web browser (despite claims you cannot), just type junk into the username/password box when ordering.&lt;/li&gt;&lt;li&gt;If you try to get off a bus and the card reader isn’t working, all kinds of exciting lights and alarms will go off—it is very bracing!&lt;/li&gt;&lt;li&gt;Forgetting to “touch off” will cost you $5 ($10 from July).&lt;/li&gt;&lt;li&gt;It is hard to remember to touch off, especially since hardly anyone else has to.&lt;/li&gt;&lt;li&gt;When more people are using go cards, they’ll touch off and this will help you remember, but there will be more queueing to leave the bus/train station.&lt;/li&gt;&lt;li&gt;The card readers on buses rely on GPS — no bribing the driver to let you off at your house or flagging them down if you’re not quite at the stop, you cannot touch on/off.
&lt;/li&gt;&lt;li&gt;It costs the same for Monday–Friday commuting — 10 journeys, to and from work per day — as a weekly ticket costs.&lt;/li&gt;&lt;li&gt;You won’t pay for trips you don’t make — due to illness, public holidays or flex time.&lt;/li&gt;&lt;li&gt;Travelling 4 days (8 journeys) in a week is cheaper with go card than any alternative because the last 2 journeys will be half price.&lt;/li&gt;&lt;li&gt;Extra journeys throughout the week (more than the typical 10) — which would be covered by a weekly ticket — will cost you extra.&lt;/li&gt;&lt;li&gt;… unless you can squeeze these trips into a 3 hour window of opportunity, but this requires math to work out the most cost-effective way to travel, and math is tiring.&lt;/li&gt;&lt;li&gt;If/when you own a go card, you can still buy other tickets if/when you like — no-one will know or care.&lt;/li&gt;&lt;li&gt;The fare machines at train stations are atrocious! You can only pay cash for large amounts (over $100 in my experience), EFTPOS for smaller amounts using a pokey pin pad. Terrible machines.&lt;/li&gt;&lt;/ul&gt;The dystopia, however, stems from a different source. Once upon a time, ticket conductors on &lt;a href="http://www.qr.com.au/"&gt;Queensland Rail&lt;/a&gt; services — we used to call ’em “trains” like in &lt;cite&gt;Thomas the Tank Engine&lt;/cite&gt;, now they’re “services” — would check for your ticket and sell you one if needed. This was a convenient, customer-friendly service. One was especially appreciative if one had arrived late and had to jump on the train without time to buy a ticket. Perhaps if services were more frequent this would be less of a concern.&lt;p&gt;&lt;/p&gt;&lt;p&gt;In recent years, the revenue protection unit has taken over. They now check your ticket and fine you if you don’t have one. This is not a convenient, customer-friendly service! ;) As it turns out, they’ve mostly been issuing warnings. This year they have new warnings, spoken over the public address system in Central Station in a lifeless female monotone… the gist is customers are now advised that travelling without a valid ticket, or valid reason for not having a ticket, will now be fined. Fines will be enforced. Hearing that message really did drive home that the dystopia of cyberpunk imaginings is now my reality. It is exactly like living in Romdo (if you don’t understand this reference, go watch &lt;cite&gt;Ergo Proxy&lt;/cite&gt;).&lt;/p&gt;&lt;p&gt;And what is a “valid reason” anyway? It sounds like stock options. I’d like to purchase a valid reason for not having a ticket today, please.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-3706160449716148254?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/3706160449716148254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=3706160449716148254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/3706160449716148254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/3706160449716148254'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/03/public-transport-dystopia.html' title='Public transport dystopia'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-6487139513031195523</id><published>2008-03-02T12:44:00.008+10:00</published><updated>2008-11-10T01:38:29.584+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personality'/><category scheme='http://www.blogger.com/atom/ns#' term='eco'/><title type='text'>I’m green, if I were blue I would die</title><content type='html'>&lt;p&gt;Oh no, have I mixed up the misheard lyrics to &lt;cite&gt;Blue (Da Ba Dee)&lt;/cite&gt;? According to a &lt;a href="http://www.truecolors.org/"&gt;true colours&lt;/a&gt; exercise I undertook at work, I am “&lt;a href="http://www.truecolors.org/color_meanings.html"&gt;green&lt;/a&gt;”. According to &lt;a href="http://www.facebook.com/profile.php?id=723571803"&gt;facebook&lt;/a&gt;, I am a mix of Bigbird and Elmo. Who to believe?
&lt;/p&gt;&lt;p&gt;There is a lot of talk about being green, or eco friendly, on the ’net these days. I spend a lot of time online and it's heartening to hear—from the awesome &lt;a href="http://www.ecogeek.org/"&gt;ecogeek&lt;/a&gt; blog—that &lt;a href="http://www.ecogeek.org/content/view/1409/"&gt;online activity saves energy&lt;/a&gt;! We’ve noticed a significant saving by turning PCs off at night, at the back of the box (the IO button) if not at the wall. Only the HTPC is left on, to autoboot at 5 am and start recording. Still better than leaving a VCR on all night I think.&lt;/p&gt;&lt;p&gt;But that’s not what being “green” is all about. It’s about being a scientist. A thinker. Cool. I hope they play &lt;cite&gt;The Scientist&lt;/cite&gt; (by Coldplay) at my funeral. Nothing morbid about it, going to happen one day and should be at least 70 years as I plan to reach 100! Sadly a colleague of mine passed away last week … rest in peace B2.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-6487139513031195523?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/6487139513031195523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=6487139513031195523' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/6487139513031195523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/6487139513031195523'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/03/im-green-if-i-were-blue-i-would-die.html' title='I’m green, if I were blue I would die'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-5877108443754604120</id><published>2008-03-02T12:11:00.003+10:00</published><updated>2008-03-02T12:42:31.629+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Leaving home, life was never good to me</title><content type='html'>&lt;p&gt;It’s nice to see Daniel (5) and Emma (2) playing nicely together. Yes, there are a few tears but on the whole they have worked through them together and I’ve never seen them playing as brother and sister so well. You’d think that would make for a nice weekend—and it is a highlight—but it feels more like one of those grit your teeth and get through it things.
&lt;/p&gt;&lt;p&gt;There’s a bit of a cold around the house and Caitlin (4 months) isn’t sleeping so well. She’ll sleep just fine when held—I sat for an impromptu screening of &lt;a href="http://en.wikipedia.org/wiki/Royal_Space_Force:_The_Wings_of_Honneamise"&gt;Wings of Honneamise&lt;/a&gt; and she slept until 2 am while I did so. Pop her in bed and she wakes to cry in an instant. Yes, there is a bit of a cold and a whole lot of tiredness. Perhaps this is why my wife told me she is waiting for me to “leave”. ’Coz why would anyone put up with this? Her thinking, not mine. I know who, where and why I am.
&lt;/p&gt;&lt;p&gt;The whole week has been a bit like that. I did a lot of ironing today.&lt;/p&gt;&lt;p&gt;&lt;small class="note"&gt;n.b. the title of this post is from a Jebediah song, not an indication of intent!&lt;/small&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-5877108443754604120?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/5877108443754604120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=5877108443754604120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/5877108443754604120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/5877108443754604120'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/03/leaving-home-life-was-never-good-to-me.html' title='Leaving home, life was never good to me'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-3329919471064785579</id><published>2008-02-02T20:52:00.000+10:00</published><updated>2008-02-02T20:57:54.446+10:00</updated><title type='text'>Friday night bowling</title><content type='html'>&lt;p&gt;Yesterday I went bowling, ten pin bowling with real — heavy — balls, rather than a Wiimote. First attempt: gutterball. Second attempt: 1 pin. So overall, I’m happy with a final score of 84! &lt;/p&gt;&lt;p&gt;Hadn’t been bowling in years. Quite fun. It’s much funkier than I remember, what with music videos and UV lighting. Although I feel inclined to mention, if your name is three letters long — like Ben — you’ll get your name up in lights instead of just an initial. Whether that’s cool, or an invasion of privacy, I just don’t know. Like I don’t know if bowling a strike is a bonus, or a cleverly devised way of giving customers one fewer bowls for their money …&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-3329919471064785579?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/3329919471064785579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=3329919471064785579' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/3329919471064785579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/3329919471064785579'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2008/02/friday-night-bowling.html' title='Friday night bowling'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-3655378939772500575</id><published>2007-11-30T23:35:00.000+10:00</published><updated>2007-11-30T23:45:26.489+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><category scheme='http://www.blogger.com/atom/ns#' term='Caitlin'/><category scheme='http://www.blogger.com/atom/ns#' term='baby'/><title type='text'>Twin Caitlins</title><content type='html'>&lt;p&gt;It seems I am very slow in blogging this important news — we have Caitlins!&lt;/p&gt;&lt;p&gt;&lt;img src="http://inspire.server101.com/ben/2007/11/caitlins.jpg" alt="Caitlin (daughter) and Caitlin (niece)" /&gt;&lt;/p&gt;&lt;p&gt;Specifically, our second daughter, born 25 October 2007, and our first niece, born 16 November 2007. Both doing marvellously well, and balancing out the genders in our families. Look out boys! (Oh wait… that's me!)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-3655378939772500575?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/3655378939772500575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=3655378939772500575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/3655378939772500575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/3655378939772500575'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2007/11/twin-caitlins.html' title='Twin Caitlins'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-4777310470962824122</id><published>2007-10-10T23:27:00.000+10:00</published><updated>2007-10-10T23:38:49.937+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smash Bros'/><category scheme='http://www.blogger.com/atom/ns#' term='Wii'/><title type='text'>Sonic, Brawl and Jackets</title><content type='html'>&lt;p&gt;Nintendo have been busy of late! First, an announcement of free &lt;a href="http://wiisystem.nintendo.com.au/wii_remote_jacket"&gt;wii remote jackets&lt;/a&gt; to improve grip and safety. Today, an update for the Wii that allows a USB keyboard to be used with it (why, I don't know!)—but the news, the BIG news, is (on every blog I am sure) …
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.smashbros.com/en_us/characters/sonic.html"&gt;Sonic is joining Smash Bros!&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-4777310470962824122?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/4777310470962824122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=4777310470962824122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/4777310470962824122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/4777310470962824122'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2007/10/sonic-brawl-and-jackets.html' title='Sonic, Brawl and Jackets'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7034257.post-1677547855590043610</id><published>2007-08-29T21:22:00.000+10:00</published><updated>2007-08-29T21:57:27.946+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='broadband'/><title type='text'>broadbandy news</title><content type='html'>&lt;p&gt;This has nothing to do with federal government broadband plans (which I am ignoring for the time being) but my own broadband connection(s) here at home.&lt;/p&gt;&lt;p&gt;I quite like the sound of &lt;a href="http://www.virginbroadband.com.au/"&gt;Virgin Broadband&lt;/a&gt; — you get your home phone and Internet bundled for $60/month. Internet runs off the mobile network: 3.5G (HSDPA), 3G (UMTS) or 2.5G (GPRS). We are apparently in the 3G coverage zone so I decided to take advantage of the 30 day trial.&lt;/p&gt;&lt;p&gt;That was Monday. Apparently my existing net connection got wind of this because it up and died that afternoon (it is still down). With anticipation I plugged in my new Virgin modem and got … GPRS. That's the one they say is “slow” like a modem. They aren’t kidding.&lt;/p&gt;&lt;p&gt;Tonight I was in contact with &lt;a href="http://www.unisky.com.au/"&gt;Unisky&lt;/a&gt;, my wireless broadband provider. They suspect my radio (modem) is dead and will need replacing as they can’t get a ping from it. However, it’s $110 to have a tech guy come out to confirm this and $550 to replace the equipment — $660. Yikes. I have asked them to outline my options including other technicians, buying my own equipment and/or cancelling the contract.&lt;/p&gt;&lt;p&gt;I like to be eccentric. So I decided to see if we could get a better signal putting the Virgin modem outside. It’s currently sitting outside on the air conditioner fan housing and we’ve had a solid 3–3.5G connection for about an hour. It’s great. And fast!! Now if only we can work out a way to do this and keep the modem inside the house where it belongs … wish me luck, I hope there’s light at the end of this tunnel!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7034257-1677547855590043610?l=inspire.server101.com%2Fben%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/1677547855590043610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7034257&amp;postID=1677547855590043610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/1677547855590043610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7034257/posts/default/1677547855590043610'/><link rel='alternate' type='text/html' href='http://inspire.server101.com/ben/2007/08/broadbandy-news.html' title='broadbandy news'/><author><name>Ben</name><uri>http://www.blogger.com/profile/10401563613826134730</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16339563670162695694'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>