<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>@madpilot makes
</title>
    <link>/</link>
    <description>Recent content on @madpilot makes
</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Fri, 18 Apr 2025 15:00:00 +1000</lastBuildDate>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Upgrading a Kegerator</title>
      <link>/blog/2025/04/18/upgrading-a-kegerator/</link>
      <pubDate>Fri, 18 Apr 2025 15:00:00 +1000</pubDate>
      <guid>/blog/2025/04/18/upgrading-a-kegerator/</guid>
      <description>&lt;p&gt;A mate of mine gave me a Keg Master Series 3 Kegerator that he was no longer using, which was a stroke of luck. Just before we moved house in 2023, I turned off my old kegerator.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/wp-content/uploads/2025/04/KegMaster-Series-4-Triple-600x315-595733477.jpg&#34; alt=&#34;A Keg Master Series 3 Kegerator&#34;&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;A kegerator is just a fridge with beer taps attached, in which you can store beer kegs.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;That kegerator was a home-build - a bar fridge that I drilled some holes in. One of the holes was quite large and exposed the inner foam of the fridge. The inner foam, it turns out, is a great place for mould to grow, particularly when wet and warm which coincidently happens when you &lt;em&gt;turn off&lt;/em&gt; a fridge.&lt;/p&gt;</description>
    </item>
    <item>
      <title>So my coffee grinder has Bluetooth…</title>
      <link>/blog/2025/01/29/so-my-coffee-grinder-has-bluetooth/</link>
      <pubDate>Wed, 29 Jan 2025 21:47:00 +1100</pubDate>
      <guid>/blog/2025/01/29/so-my-coffee-grinder-has-bluetooth/</guid>
      <description>&lt;p&gt;The previous owner of our house installed LED strips below the kitchen cabinets. Ever since we had moved in, I had planned on replacing the LED drivers with ZigBee ones, so I could connect them up to Home Assistant.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.aliexpress.com/item/1005005214716060.html&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2025/01/25e1ce723a21c150a3ec5f082624b5e6.png&#34; alt=&#34;ZigBee LED Driver&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I got a couple of these. These are adjustable constant current drivers - luckily the LED strips had their Watt/metre value printed on them, so it was easy enough to work out what current to set them to.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running Proxmox backups when the sun is shining</title>
      <link>/blog/2024/02/08/proxmox-backups-when-the-sun-is-shining/</link>
      <pubDate>Thu, 08 Feb 2024 09:30:00 +1100</pubDate>
      <guid>/blog/2024/02/08/proxmox-backups-when-the-sun-is-shining/</guid>
      <description>&lt;p&gt;I have a small home lab that runs &lt;a href=&#34;https://www.proxmox.com&#34;&gt;Proxmox&lt;/a&gt;. It runs my Home Assistant instance, as well as MQTT, dnsmasq and a few other services (including this blog!).&lt;/p&gt;&#xA;&lt;p&gt;While I back up my working data using &lt;a href=&#34;https://kopia.io/&#34;&gt;kopia&lt;/a&gt; and &lt;a href=&#34;https://www.backblaze.com/&#34;&gt;Backblaze&lt;/a&gt;, I wanted to set up &lt;a href=&#34;https://www.proxmox.com/en/proxmox-backup-server/overview&#34;&gt;Proxmox Backup Server&lt;/a&gt; so I could recover from any VM level issues quickly.&lt;/p&gt;&#xA;&lt;p&gt;To do that, I recommissioned an old HP ProLiant Microserver that used to run my lab. It has 4 × 3.5″ HDD drive bays, so can provide plenty of storage, and most importantly - I already had one.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Converting a Makibox into a PCB Mill – The Y-axis has arrived!</title>
      <link>/blog/2019/09/24/converting-a-makibox-into-a-pcb-mill-the-y-axis-has-arrived/</link>
      <pubDate>Tue, 24 Sep 2019 02:13:12 +0000</pubDate>
      <guid>/blog/2019/09/24/converting-a-makibox-into-a-pcb-mill-the-y-axis-has-arrived/</guid>
      <description>&lt;p&gt;After cancelling the order that was clearly never going to arrive, an order from a new supplier has completed the y-axis for my homebuilt CNC mill.&lt;/p&gt;&#xA;&lt;p&gt;I used left over aluminium to create four adapters to hold the base board to the slides. I’m using a 200x180mm extrusion as it gives me a bunch of work piece holding options.&lt;/p&gt;&#xA;&lt;p&gt;Once I assembled everything, I did notice a couple of issues.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Converting a Makibox into a PCB Mill – Reprogramming the control board</title>
      <link>/blog/2018/12/06/converting-a-makibox-into-a-pcb-mill-reprogramming-the-control-board/</link>
      <pubDate>Thu, 06 Dec 2018 09:17:01 +0000</pubDate>
      <guid>/blog/2018/12/06/converting-a-makibox-into-a-pcb-mill-reprogramming-the-control-board/</guid>
      <description>&lt;p&gt;The version of the Makibox that I purchased came with a printrboard, however I fried that years ago. Makibox shipped me a replacement Print5D D8 controller.&lt;/p&gt;&#xA;&lt;p&gt;I knew very little about this board, and I wondered how I was going to adapt it for CNC use.&lt;/p&gt;&#xA;&lt;p&gt;I had some questions:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;How do I send it G-Code? Do I need to use the software that came with the Makibox?&lt;/li&gt;&#xA;&lt;li&gt;Controlling the three axes and endstops was easy, but how would I run the spindle?&lt;/li&gt;&#xA;&lt;li&gt;After more research about milling PCBs, I found out that using a bed levelling algorithm would give the best results – could the board do that?&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;After some googling, I found that a kind user had archived all of the original Makibox forums. A post about the D8 firmware lead me to the &lt;a href=&#34;https://bitbucket.org/makible&#34;&gt;Makible bitbucket account&lt;/a&gt;, which not only housed the &lt;a href=&#34;https://bitbucket.org/makible/5dprint-firmware&#34;&gt;original firmware source&lt;/a&gt;, it also had the &lt;a href=&#34;https://bitbucket.org/makible/5dprint-d8-controller-board&#34;&gt;schematics&lt;/a&gt;!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Converting a Makibox into a PCB Mill – Rebuilding the X-axis</title>
      <link>/blog/2018/11/13/converting-a-makibox-into-a-pcb-mill-rebuilding-the-x-axis/</link>
      <pubDate>Tue, 13 Nov 2018 10:33:01 +0000</pubDate>
      <guid>/blog/2018/11/13/converting-a-makibox-into-a-pcb-mill-rebuilding-the-x-axis/</guid>
      <description>&lt;p&gt;In my previous post, I realised that the 4mm steel rods weren’t going to cut it when milling – they had way too much play, so I promptly ordered two &lt;a href=&#34;https://www.aliexpress.com/item/2018-Real-Limited-Cnc-Router-Parts-Axk-Axk-12mm-Linear-Rail-Sbr12-200mm-And-2-Pcs/32838636867.html?spm=a2g0s.9042311.0.0.27424c4divSg1y&#34;&gt;200mm linear rails&lt;/a&gt; (for the X-axis), &lt;a href=&#34;https://www.aliexpress.com/item/2018-Sale-Axk-Cnc-Router-Parts-Axk-12mm-Linear-Rail-Sbr12-L-400mm-Support-Rails-2/32838628287.html?spm=a2g0s.9042311.0.0.27424c4divSg1y&#34;&gt;two 400mm linear rails&lt;/a&gt; (for the Y-axis) and two &lt;a href=&#34;https://www.aliexpress.com/item/RDBB-12mm-linear-shaft-150mm-Chromed-Hardened-Rod-Linear-Motion-Shaft-cnc-parts-3d-printer/32894031592.html?spm=a2g0s.9042311.0.0.27424c4divSg1y&#34;&gt;150mm 12mm linear rods&lt;/a&gt; and &lt;a href=&#34;https://www.aliexpress.com/item/Hot-Sale-2pc-Lm12uu-Linear-Bushing-12mm-Cnc-Linear-Bearings/32844095002.html?spm=a2g0s.9042311.0.0.27424c4divSg1y&#34;&gt;bearings&lt;/a&gt; (Z-axis).&lt;/p&gt;&#xA;&lt;p&gt;The 200mm slides and the 150mm rods arrived promptly, but there was a delay on the 400mm slides. That, plus me needing a fair chunk of time to measure, drill and tap a bunch of holes meant I parked the project for a couple of weeks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Curing Meats – Making Salami</title>
      <link>/blog/2018/10/30/curing-meats-making-salami/</link>
      <pubDate>Mon, 29 Oct 2018 22:51:04 +0000</pubDate>
      <guid>/blog/2018/10/30/curing-meats-making-salami/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2018/10/DSC_0031.jpg&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2018/10/DSC_0031.jpg&#34; alt=&#34;Salami&#39;s hanging&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;One of my other hobbies is food. I do a lot of cooking, with a particular interest in slow cooking: I regularly fire up my smoker and cook a pork shoulder or brisket, and I’ve started learning the finer points of sous vide cooking. One thing I have been interested in is curing meat.&lt;/p&gt;&#xA;&lt;p&gt;My mates Matt and Lachlan also expressed an interest, so we booked to a course at &lt;a href=&#34;https://artisansbottega.com.au/&#34;&gt;The Artisan’s Bottega&lt;/a&gt;. During the course the instructor explained to us that there was only a couple of weeks of meat curing weather left – they need to be done before it got too hot. None of us wanted to wait a whole year, so we – with help from some other friends: Remo and Dan – decided to do our first ever batch the weekend after.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Converting a Makibox into a PCB Mill – Building the X-axis</title>
      <link>/blog/2018/09/26/converting-a-makibox-into-a-pcb-mill-building-the-x-axis/</link>
      <pubDate>Wed, 26 Sep 2018 12:03:39 +0000</pubDate>
      <guid>/blog/2018/09/26/converting-a-makibox-into-a-pcb-mill-building-the-x-axis/</guid>
      <description>&lt;p&gt;Re-designing the X-axis of my Makibox to PCB mill conversion has been a challenge in constraints. Due to an ordering mishap, and lack of engineering designs for the spindle I have been racking my brain to re-use the parts I have to create a workable X-axis.&lt;/p&gt;&#xA;&lt;p&gt;The three constraints I have to work with:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The spindle can’t be too low – I want at least 70mm of vertical travel&lt;/li&gt;&#xA;&lt;li&gt;The spindle can’t be too high – The further the cutting tool is from the centre of the holder, the more torque it needs to deal with&lt;/li&gt;&#xA;&lt;li&gt;The spindle can’t be too far forward – I’d like the cutting tool to sit as close to the centre of the frame, so it can reach the full range of motion. The shaft of the spindle sits around 40mm from it’s mounting plate, which puts it out nearly 80mm when you include the Z-axis linear driver.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I looked at mounting the stepper motor on top of the vertical extrusion, but it failed constraint 3. It also gave me no where to mount the top steel rod. I toyed around with moving the steel rods but centred either side of the lead screw seems the best place for them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Twilio &#43; AWS Lamba &#43; Rev = Easy call recording!</title>
      <link>/blog/2018/09/19/call-recording-with-twilio-aws-lamba-rev/</link>
      <pubDate>Wed, 19 Sep 2018 05:56:04 +0000</pubDate>
      <guid>/blog/2018/09/19/call-recording-with-twilio-aws-lamba-rev/</guid>
      <description>&lt;p&gt;I have been doing a bunch of user interviews at work. It’s been difficult to get our users in front of a computer, or to get them to install video conferencing software, so I’ve been calling them on the telephone. I find that taking notes while I interview people kills my flow, and I’m really not very good at it, so I needed a way to easily record these phone calls, and then get them transcribed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Converting a Makibox – Building the Y-axis</title>
      <link>/blog/2018/07/16/converting-a-makibox-building-the-y-axis/</link>
      <pubDate>Sun, 15 Jul 2018 23:58:35 +0000</pubDate>
      <guid>/blog/2018/07/16/converting-a-makibox-building-the-y-axis/</guid>
      <description>&lt;p&gt;I’ve now built the aluminium frame and completed the Y-axis. Of course, this was not without it’s problems.&lt;/p&gt;&#xA;&lt;p&gt;Firstly, I misordered – I was one set of uprights short. This may not be a massive problem though, as I hadn’t taken into account the size of the spindle when designing the X-axis, and it wouldn’t have fitted in the configuration I had designed for – That’s what you get for forging ahead with out good engineering drawings.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IKEA hacks: A microwave interface for the Duktig kids kitchen</title>
      <link>/blog/2018/07/13/ikea-hacks-duktig-microwave/</link>
      <pubDate>Fri, 13 Jul 2018 01:46:39 +0000</pubDate>
      <guid>/blog/2018/07/13/ikea-hacks-duktig-microwave/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2018/07/DSC_0012.jpg&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2018/07/DSC_0012.jpg&#34; alt=&#34;The finished product&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Hugo just turned one, and to celebrate we bought him a &lt;a href=&#34;https://www.ikea.com/au/en/catalog/products/40319973/&#34;&gt;Duktig kitchen&lt;/a&gt; from IKEA. Like everyone else we painted and added fake subway tiles, but I wanted to take it a bit further and add a working microwave panel.&lt;/p&gt;&#xA;&lt;p&gt;Hugo is obsessed with pressing buttons and turning knobs – We were staying at an AirBNB recently that had a microwave that you controlled using one big knob and he loved it – so I thought I would model that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Converting a Makibox – Aluminium frame is done</title>
      <link>/blog/2018/06/02/converting-a-makibox-aluminium-frame-is-done/</link>
      <pubDate>Sat, 02 Jun 2018 04:20:36 +0000</pubDate>
      <guid>/blog/2018/06/02/converting-a-makibox-aluminium-frame-is-done/</guid>
      <description>&lt;p&gt;I’m pretty happy with how the aluminium frame has come together. I’ve kept the X-axis pretty simple, though I tried a few iterations before coming to this shape.&lt;/p&gt;&#xA;&lt;p&gt;Originally I had the vertical X-axis supports butted on the top of the horizontal Y axis base, but I was concerned with keeping the vertical… vertical. I could have used right angle brackets, but decided that by putting them in the inside of the base, I can add additional points of contact that would better support them. This configuration also gives a slightly larger base, so should make it slightly more stable. They are now attached in two dimensions which effectively works like a right-angle bracket.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo’s Nightlight: Modelling and Printing the Mold Master</title>
      <link>/blog/2018/05/28/hugos-nightlight-modelling-and-printing-the-mold-master/</link>
      <pubDate>Mon, 28 May 2018 10:54:07 +0000</pubDate>
      <guid>/blog/2018/05/28/hugos-nightlight-modelling-and-printing-the-mold-master/</guid>
      <description>&lt;p&gt;Initially I thought about mounting the electronics in the back of the H, trying to fit everything in the footprint of the mold. But if I could get lights on the back, there would be some cool effects I could achieve. To get a consistent glow, the LEDs would need to be wedged in the middle of the H.&lt;/p&gt;&#xA;&lt;p&gt;This did make mounting the PCB difficult though. I decided that I would mount the H on a small plyth that would house the electronics.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Converting a Makibox – Designing the Y-Axis</title>
      <link>/blog/2018/04/24/designing-the-y-axis/</link>
      <pubDate>Mon, 23 Apr 2018 23:38:32 +0000</pubDate>
      <guid>/blog/2018/04/24/designing-the-y-axis/</guid>
      <description>&lt;p&gt;I’ve been iterating the Y-axis in Fusion 360. A common design I have seen on other moving-bed designs is four linear bearings – one bearing at each corner of the bed. The problem with this design is you lose the distance between the bearings in travel. Since I have only have a maximum of 165mm on this axis, I didn’t want to lose too much to dead play.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2018/04/moving-bed-example.jpg&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2018/04/moving-bed-example.jpg&#34; alt=&#34;Example of a moving bed with 4 bearings&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Turning a Makibox into a PCB Mill</title>
      <link>/blog/2018/04/16/turning-a-makibox-into-a-pcb-mill/</link>
      <pubDate>Mon, 16 Apr 2018 05:55:05 +0000</pubDate>
      <guid>/blog/2018/04/16/turning-a-makibox-into-a-pcb-mill/</guid>
      <description>&lt;p&gt;You might remember the Makibox A6 – it was a sub-$400 3D printer that, like a lot of cheap printers at the time, was crowd-funded. It took forever to deliver, and there were a lot of problems with it.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2018/04/MakiBox_A6_LT.jpg&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2018/04/MakiBox_A6_LT.jpg&#34; alt=&#34;The MakiBox A6LT&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Personally, I managed to print a single cube on my first print. On my second print something went wrong and I blew up the control board. I suspect because of the stalled extruder motor. The extruder needed replacing, as did one of the plastic lead screws (that was my fault – I over tightened it).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo’s Nightlight: Part I</title>
      <link>/blog/2018/04/14/hugos-night-light-part-i/</link>
      <pubDate>Sat, 14 Apr 2018 02:40:53 +0000</pubDate>
      <guid>/blog/2018/04/14/hugos-night-light-part-i/</guid>
      <description>&lt;p&gt;Long before Hugo was born, I had hatched a plan to build him a nightlight. Originally inspired by this, I decided to go for something less fragile – a simple H with some RGB LEDs.&lt;/p&gt;&#xA;&lt;p&gt;Just before Hugo was born, I added a LIFX bulb to our bed side table, and added some Flic buttons that gave us better control on the lights. Using a Node Red flow, I setup the light to go to 5% brightness on a single click, 20% on a double click and a 2 second hold set the light to 100%. This worked really well: if we wanted to check on the baby, we could just single click, and get enough light to see him without waking him.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing IKEA Filur bins into a kitchen cupboard without drilling holes!</title>
      <link>/blog/2018/02/11/installing-ikea-filur-bin/</link>
      <pubDate>Sun, 11 Feb 2018 04:16:59 +0000</pubDate>
      <guid>/blog/2018/02/11/installing-ikea-filur-bin/</guid>
      <description>&lt;p&gt;We have two &lt;a href=&#34;http://www.ikea.com/au/en/catalog/products/80193900/&#34;&gt;IKEA FILUR bins&lt;/a&gt; that we use in our kitchen – one for waste and one for recycling. To stay out of the way, they live in the butler’s pantry. This is a little bit inconvenient though – moving scraps around inevitably means dirty floors.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2018/02/DSC_0214.jpg&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2018/02/DSC_0214-1024x681.jpg&#34; alt=&#34;The IKEA FILUR bins&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;My wife decided to do a spring clean, and managed to free up a cupboard with the intention of installing cupboard bins. Easy enough. We started looking around, and found them quite small – we’d become accustomed to the good size bins that we already had. Not only that, but new units seemed quite expensive. We weren’t going to spend a lot of money and end up with something worse.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A case and POE for the OrangePI</title>
      <link>/blog/2018/01/08/a-case-and-poe-for-the-orangepi/</link>
      <pubDate>Sun, 07 Jan 2018 22:44:54 +0000</pubDate>
      <guid>/blog/2018/01/08/a-case-and-poe-for-the-orangepi/</guid>
      <description>&lt;p&gt;Technically, the OrangePI Zero supports a type of Power of Ethernet, but this makes it compliant.&lt;/p&gt;&#xA;&lt;p&gt;..and uses a cheat – you can buy &lt;a href=&#34;https://www.aliexpress.com/item/1PCS-Micro-USB-Active-POE-Splitter-Power-48V-to-5V-2-4A-for-Raspberry-pi-3/32741378583.html&#34;&gt;POE splitters off Aliexpress&lt;/a&gt; – this hack removes the Ethernet port off the OrangePI, and permanently attaches the splitter. I also 3D printed a case for it, which is the interesting part, as I experiment with post production.&lt;/p&gt;&#xA;&lt;p&gt;I use an OrangePi as a server for my Flic bluetooth buttons. I use POE to power it, so I don’t need to bother with plug packs, however, it all looks a little untidy (why do Pi clone manufacturers always put the power plug on the front!?).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hacking a Cheap Wifi Outlet</title>
      <link>/blog/2017/04/18/hacking-a-cheap-wifi-outlet/</link>
      <pubDate>Tue, 18 Apr 2017 00:02:50 +0000</pubDate>
      <guid>/blog/2017/04/18/hacking-a-cheap-wifi-outlet/</guid>
      <description>&lt;p&gt;&lt;strong&gt;DISCLAIMER: This project plugs in to the mains, which has dangerous voltages and can kill you. Never plug in the device working on this project – you can re-program using an external 5V supply wired up to the same pads that the red and black wires connect to (CONN1).&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;I have a Rancilio Silvia coffee machine, that needs time to warm up correctly in the morning – 30 minutes gets everything up to temperature, allowing me to draw excellent coffee shots.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Modifying the ESP8266 Over-the-Air update code</title>
      <link>/blog/2017/03/30/garage-door-opener-modifying-the-esp8266-over-the-air-update-code/</link>
      <pubDate>Thu, 30 Mar 2017 09:15:16 +0000</pubDate>
      <guid>/blog/2017/03/30/garage-door-opener-modifying-the-esp8266-over-the-air-update-code/</guid>
      <description>&lt;p&gt;Now that I have the proof of concept code running, it’s time to modify the built in Arduino core library that handles OTA updates.&lt;/p&gt;&#xA;&lt;p&gt;The existing OTA library takes a binary object and an optional MD5 hash (to verify the upload), stores it in flash memory, then swaps the old binary out of the new binary and reboots the device.&lt;/p&gt;&#xA;&lt;p&gt;To do verification via digital signatures, we need three additional pieces of information: the developers certificate (used to decrypt the hash), the encrypted hash, and the Certificate Authority certificate used to verify the developers signature.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Signing a binary using axTLS</title>
      <link>/blog/2017/03/12/signing-a-binary-using-axtls/</link>
      <pubDate>Sun, 12 Mar 2017 06:21:33 +0000</pubDate>
      <guid>/blog/2017/03/12/signing-a-binary-using-axtls/</guid>
      <description>&lt;p&gt;Comparing the SHA256 of a file after it has been uploaded allows us to check that it hasn’t changed. This doesn’t tell us if the file has been tampered with though – it would be easy enough for a someone to change the binary, and then change the hash so it matches.&lt;/p&gt;&#xA;&lt;p&gt;To check the file was created by the person who said it was created by, we need to verify a cryptographic signature. The steps are fairly simple:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Signing Over-the-Air updates</title>
      <link>/blog/2017/03/05/signing-over-the-air-updates/</link>
      <pubDate>Sun, 05 Mar 2017 11:59:24 +0000</pubDate>
      <guid>/blog/2017/03/05/signing-over-the-air-updates/</guid>
      <description>&lt;p&gt;The garage door opener has been running pretty well for the past couple of months, but I still have some work to do. I haven’t built out the configuration interface yet, and it turns out that if Home Assistant restarts, it forgets the last open state, so with out opening and closing the door again, I don’t know the state of the door.&lt;/p&gt;&#xA;&lt;p&gt;This means I need to update the firmware.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reverse engineering a Fujitsu Air Conditioner Unit – The protocol from the outdoor unit</title>
      <link>/blog/2017/02/25/the-protocol-from-the-outdoor-unit/</link>
      <pubDate>Sat, 25 Feb 2017 07:28:55 +0000</pubDate>
      <guid>/blog/2017/02/25/the-protocol-from-the-outdoor-unit/</guid>
      <description>&lt;p&gt;So, I think I’ve worked out the meaning of the bitstream coming from the outdoor unit!&lt;/p&gt;&#xA;&lt;p&gt;On my day off, I took the unit of the wall, got me some coffee and setup shop in the hallway, oscilloscope in hand.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2017/03/7545801487998388004.jpg&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2017/03/7545801487998388004.jpg&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I must admit, I’m still getting used to using the oscilloscope and I’m sure there is a far better way to do what I’m trying to do, but I found that if I probe the RX pin on the CPU, with the ‘scope set to single trigger mode and keep hitting the start button, I’d eventually align the waveform at the start of the cycle. After that I used the onscreen rulers to work out the gaps between the pulses. I then wrote them down in to &lt;a href=&#34;https://cdn.hackaday.io/files/19473833132832/sequences.xlsx&#34;&gt;this spreadsheet&lt;/a&gt;. I’d change a setting, take a new set of readings, and repeat until I had covered enough states that I could get a complete picture of what was going on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IR-blaster with CEC – The case saga</title>
      <link>/blog/2017/01/30/the-case-saga/</link>
      <pubDate>Mon, 30 Jan 2017 12:27:27 +0000</pubDate>
      <guid>/blog/2017/01/30/the-case-saga/</guid>
      <description>&lt;p&gt;I hacked together a little node-red script that listens for events from my &lt;a href=&#34;http://homeassistant.io/&#34;&gt;eventsource module that I knocked up&lt;/a&gt;, which is generally working pretty well – occasionally, it selects the wrong input, because I’m relying on my &lt;a href=&#34;https://hackaday.io/project/18911-ir-blaster-with-cec/log/50604-cec-throws-hands-in-the-air&#34;&gt;CEC hack&lt;/a&gt; but I’ll deal with that later.&lt;/p&gt;&#xA;&lt;p&gt;Time to knock up a quick case.&lt;/p&gt;&#xA;&lt;p&gt;I did up a quick design in FreeCAD and printed it out. &lt;a href=&#34;https://cdn.hackaday.io/files/18911809088224/base.stl&#34;&gt;Originally&lt;/a&gt;, I based the design off the Apple TV, as I thought I could have some sort of visual symmetry.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reverse engineering a Fujitsu Air Conditioner Unit – Baseline communication</title>
      <link>/blog/2017/01/16/baseline-communication/</link>
      <pubDate>Mon, 16 Jan 2017 12:03:40 +0000</pubDate>
      <guid>/blog/2017/01/16/baseline-communication/</guid>
      <description>&lt;p&gt;I took the remote unit off the wall again, and this time removed the signal wire fro the remote and attached it to my Oscilloscope.&lt;/p&gt;&#xA;&lt;p&gt;And this is signal that comes from the outdoor unit.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2017/03/5441061484602485925.png&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2017/03/5441061484602485925.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I’m not sure if I stuffed up my reading the last time, but it looks like the pulse width is 2ms.&lt;/p&gt;&#xA;&lt;p&gt;Really, I needed to replay this and see if I could get my test unit to initialise. I thought about using an Ardiuno, so I googled bit banging serial to see the best way to do it. One of the results that caught my eye was another Hackaday article entitled “&lt;a href=&#34;http://hackaday.com/2009/09/22/introduction-to-ftdi-bitbang-mode/&#34;&gt;Introduction to FTDI bitbang mode&lt;/a&gt;“. I had literally just cleaned up my workbench and found a FTDI module. Perfect!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reverse engineering a Fujitsu Air Conditioner Unit – A test unit arrives</title>
      <link>/blog/2017/01/16/a-test-unit-arrives/</link>
      <pubDate>Mon, 16 Jan 2017 11:32:55 +0000</pubDate>
      <guid>/blog/2017/01/16/a-test-unit-arrives/</guid>
      <description>&lt;p&gt;So my test unit arrived!&lt;/p&gt;&#xA;&lt;p&gt;I get it on my bench, and test out my theory – if I’m right, it should boot up and start sending commands when the buttons are pressed.&lt;/p&gt;&#xA;&lt;p&gt;I was wrong.&lt;/p&gt;&#xA;&lt;p&gt;The unit just sits there flashing “9C” for a couple of minutes, then failing over to a “C0 12” error. The Oscilloscope was no use either – I just saw a constant 12V on the signal wire.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reverse engineering an air-conditioner remote – How does this thing work?</title>
      <link>/blog/2017/01/16/reverse-engineering-an-air-conditioner-remote-how-does-this-thing-work/</link>
      <pubDate>Mon, 16 Jan 2017 11:08:46 +0000</pubDate>
      <guid>/blog/2017/01/16/reverse-engineering-an-air-conditioner-remote-how-does-this-thing-work/</guid>
      <description>&lt;p&gt;I’ve never done any reverse engineering before, but spurred on by this recent &lt;a href=&#34;https://hackaday.com/2017/01/06/air-conditioner-speaks-serial-just-like-everything-else/&#34;&gt;Hackaday article&lt;/a&gt;, and this &lt;a href=&#34;http://www.pcbheaven.com/userpages/Reverse_Engineering_Fidji_Air_Condition_IR_Protocol/index.php?topic=worklog&amp;amp;p=0&#34;&gt;article I found&lt;/a&gt; I thought I’d give is a crack.&lt;/p&gt;&#xA;&lt;p&gt;The first issue: I had no idea what the model number was – it’s not written on the unit, nor on the instruction manual. So I just googled for Fujitsu airconditioner remote, hit image results and looked for one that looked the same. Once I found it and clicked through to the source page, I found out that it is a UTB-YUB/GUB/TUB (There are three model numbers depending on where in the world you are).&lt;/p&gt;</description>
    </item>
    <item>
      <title>IR-blaster with CEC – The IR Blaster circuit</title>
      <link>/blog/2016/12/22/the-ir-blaster-circuit/</link>
      <pubDate>Thu, 22 Dec 2016 03:44:09 +0000</pubDate>
      <guid>/blog/2016/12/22/the-ir-blaster-circuit/</guid>
      <description>&lt;p&gt;I am not the first person to build an IR blaster for a RaspberryPI, and I sure won’t be the last. Thanks to the LIRC gpio module, the circuit required is super simple:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2017/03/2587501482369847978.png&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2017/03/2587501482369847978.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;One side is the transmitter – 3 IR LEDs in series, with a 56ohm resistor, driven by a bog-standard BC547 transistor.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://www.jaycar.com.au/5mm-infrared-transmitting-led/p/ZD1945&#34;&gt;LEDs I used&lt;/a&gt; have a 1.2V at 20mA. forward voltage, so the three in series drop 3.6V. R2 needs to drop 1.4V (to add up to 5V). R = V/I, so R2 needs 70 ohm. For some reason, I picked a 56 ohm resistors, so the LEDs will get driven a little harder at 25mA, which is still well with in their spec (They max out at 50mA).&lt;/p&gt;</description>
    </item>
    <item>
      <title>IR-blaster with CEC – CEC *throws hands in the air*</title>
      <link>/blog/2016/12/20/cec-throws-hands-in-the-air/</link>
      <pubDate>Tue, 20 Dec 2016 12:15:11 +0000</pubDate>
      <guid>/blog/2016/12/20/cec-throws-hands-in-the-air/</guid>
      <description>&lt;p&gt;CEC is actually a very simple protocol. Each packet is at least two bytes, the first nibble: an integer between 0 and 16 representing the sender, the second an integer between 0 and 16 representing the receiver, followed by a byte-long opcode. Some opcodes allow additional parameters.&lt;/p&gt;&#xA;&lt;p&gt;All devices talk in “party line” mode, meaning everyone hears every message (there is a maximum of 16 devices, so routing and partitioning is overkill). It also means every device knows what is going on all the time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IR-blaster with CEC – Stripping a Raspberry PI</title>
      <link>/blog/2016/12/13/stripping-a-raspberry-pi/</link>
      <pubDate>Tue, 13 Dec 2016 12:53:00 +0000</pubDate>
      <guid>/blog/2016/12/13/stripping-a-raspberry-pi/</guid>
      <description>&lt;p&gt;I had a couple of the original Raspberry PIs on my desk, and since they were just sitting gathering dust they seemed like the perfect candidate for this project.&lt;/p&gt;&#xA;&lt;p&gt;I don’t know why, by the composite port really irks me. I’m never going to use it, and it really juts out, and realistically this was going to be WiFi only, so I could get rid of the network port. Also, plugging in a Wifi adapter made the board unnecessarily long.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IR-blaster with CEC – Project (log) kick off</title>
      <link>/blog/2016/12/12/project-log-kick-off/</link>
      <pubDate>Mon, 12 Dec 2016 01:55:22 +0000</pubDate>
      <guid>/blog/2016/12/12/project-log-kick-off/</guid>
      <description>&lt;p&gt;Full disclosure: I started this project a while ago – according to the photo app on my phone, almost 12 months ago! I originally wanted to build it so I could control my TV, Yamaha receiver, Foxtel set-top box and Apple TV from my phone and watch. I like to listen to music while I cook, but changing the song, or the volume is a pain – I have to stop, wash and dry my hands, then walk over to find the remote.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Yeah. So it works</title>
      <link>/blog/2016/12/04/yeah-so-it-works/</link>
      <pubDate>Sun, 04 Dec 2016 09:56:00 +0000</pubDate>
      <guid>/blog/2016/12/04/yeah-so-it-works/</guid>
      <description></description>
    </item>
    <item>
      <title>Garage Door Opener – Hardware test</title>
      <link>/blog/2016/11/28/hardware-test/</link>
      <pubDate>Mon, 28 Nov 2016 12:36:38 +0000</pubDate>
      <guid>/blog/2016/11/28/hardware-test/</guid>
      <description>&lt;p&gt;Even though I still have to complete the captivate portal, and over-the-air updates, It seemed like a good time to wire the controller in and see how it all works off the bench.&lt;/p&gt;&#xA;&lt;p&gt;It’s a good thing I did, as I discovered a few issues with the board.&lt;/p&gt;&#xA;&lt;p&gt;Excuse the wiring, it’s just temporary…&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2017/03/9960681480326599690.jpg&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2017/03/9960681480326599690.jpg&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Originally, I had two switches: one of when the door was completely open, and one for completely closed. Based on the last state, I could guess whether the door was opening or closing. I must admit, I realised long after I ordered and built the board that I really only needed one switch that indicated the closed position. Good thing really, because the device got completely confused after I installed it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Storing the configuration II</title>
      <link>/blog/2016/11/27/storing-the-configuration-ii/</link>
      <pubDate>Sun, 27 Nov 2016 12:37:31 +0000</pubDate>
      <guid>/blog/2016/11/27/storing-the-configuration-ii/</guid>
      <description>&lt;p&gt;I wrote about my &lt;a href=&#34;https://hackaday.io/project/12482-garage-door-opener/log/45702-storing-the-configuration&#34;&gt;“generic” config class in a previous build log&lt;/a&gt;, and alluded to how I wasn’t really sure it was the best plan of attack.&lt;/p&gt;&#xA;&lt;p&gt;It wasn’t.&lt;/p&gt;&#xA;&lt;p&gt;All of the casting was painful, the setup was annoying and unnecessary (From both a memory and CPU time POV) – there was little (if any) advantage in using it.&lt;/p&gt;&#xA;&lt;p&gt;In the end, I wrote a concrete class with &lt;a href=&#34;https://en.wikipedia.org/wiki/Mutator_method&#34;&gt;mutators&lt;/a&gt; for each attribute. This meant each attribute is already the correct type, so there was no annoying casting, and I could control and optimise the serialisation and deserialisation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – TFW you realise you need a heatsink</title>
      <link>/blog/2016/11/22/tfw-you-realise-you-need-a-heatsink/</link>
      <pubDate>Tue, 22 Nov 2016 12:48:29 +0000</pubDate>
      <guid>/blog/2016/11/22/tfw-you-realise-you-need-a-heatsink/</guid>
      <description>&lt;p&gt;Up until now I’ve been testing the door opener using a pigtail off the 5V line on the FTDI cable – the board has a LM317T regulator setup to output the 3.3V that the ESP8266 requires. The installation point for this board is a 12V output from the garage door controller. Those of you with a bit more experience with voltage regulators would realise where this is going… I plugged the board in to a 12V supply and noticed that the regulator was getting really hot.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Doubling capacity</title>
      <link>/blog/2016/11/21/doubling-capacity/</link>
      <pubDate>Mon, 21 Nov 2016 11:29:06 +0000</pubDate>
      <guid>/blog/2016/11/21/doubling-capacity/</guid>
      <description>&lt;p&gt;So, it turns out the ESP8266-01 (at least the one I have) supports 1MB of storage. I had been butting up against the 512kB I thought I had, and it turns out I needn’t worry.&lt;/p&gt;&#xA;&lt;p&gt;Running this command:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ESP.getFlashChipSizeByChipId()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Will tell you what your chip supports.&lt;br&gt;&#xA;This means I can probably incorporate Over-the-air updates, which will be handy. I still need to keep the image under 512kB (OTA needs the space to upload the new image).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – An mDNS library</title>
      <link>/blog/2016/09/25/an-mdns-library/</link>
      <pubDate>Sun, 25 Sep 2016 12:37:45 +0000</pubDate>
      <guid>/blog/2016/09/25/an-mdns-library/</guid>
      <description>&lt;p&gt;I’ve mentioned before that I plan on using &lt;a href=&#34;https://en.wikipedia.org/wiki/Multicast_DNS&#34;&gt;mDNS&lt;/a&gt; to resolve the name of my server. While the ESP8266 Arduino library can broadcast a mDNS name, it doesn’t query mDNS when resolving names. I found &lt;a href=&#34;https://github.com/mrdunk/esp8266_mdns&#34;&gt;mrdunk’s mdns on Github&lt;/a&gt; that implements enough of the mDNS protocol, that I should be able to hack mDNS name queries into the project.&lt;/p&gt;&#xA;&lt;p&gt;I spun up a quick proof of concept sketch to see how it all works.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Storing the configuration</title>
      <link>/blog/2016/09/18/storing-the-configuration/</link>
      <pubDate>Sun, 18 Sep 2016 12:29:31 +0000</pubDate>
      <guid>/blog/2016/09/18/storing-the-configuration/</guid>
      <description>&lt;p&gt;Up to this point, all of the settings have just been stored in the source code. This will make changing these setting pretty difficult, so I’ll need some way of setting, reading and storing them.&lt;/p&gt;&#xA;&lt;p&gt;Being a web developer, the first thing I thought of was JSON. There is an &lt;a href=&#34;https://github.com/bblanchon/ArduinoJson&#34;&gt;Arduino JSON&lt;/a&gt; library, and it’s supposedly pretty efficient. Memory is still pretty tight though, and there is some parsing involved, so I started looking at something a little more lo-fi.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Connecting the ESP8266 with TLS</title>
      <link>/blog/2016/09/15/connecting-the-esp8266-with-tls/</link>
      <pubDate>Thu, 15 Sep 2016 12:47:53 +0000</pubDate>
      <guid>/blog/2016/09/15/connecting-the-esp8266-with-tls/</guid>
      <description>&lt;p&gt;While I want to do full CA verification, I’m waiting on some of the bugs to get ironed out of the ESP8266 Arduino library, so I’ll take a shortcut for the moment, and use fingerprinting to verify the server certificate (It should be pretty easy to move to CA verification down the track).&lt;/p&gt;&#xA;&lt;p&gt;To do this, we need three pieces of information:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Client certificate&lt;/li&gt;&#xA;&lt;li&gt;Client secret key&lt;/li&gt;&#xA;&lt;li&gt;Server fingerprint&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;We have already &lt;a href=&#34;https://hackaday.io/project/12482-garage-door-opener/log/43368-adding-tls&#34;&gt;generated the certificate and the secret key&lt;/a&gt;, so let”s generate a fingerprint for the server certificate. We can use OpenSSL to do this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – So, the ESP8266 does support TLSv1.2</title>
      <link>/blog/2016/09/14/so-the-esp8266-does-support-tlsv1-2/</link>
      <pubDate>Wed, 14 Sep 2016 12:17:32 +0000</pubDate>
      <guid>/blog/2016/09/14/so-the-esp8266-does-support-tlsv1-2/</guid>
      <description>&lt;p&gt;I was digging around the &lt;a href=&#34;https://github.com/esp8266/Arduino&#34;&gt;ESP8266 github page&lt;/a&gt;, as there was an announcement that it now supports CA verification (it ALMOST does – there was a regression bug that means it’s still not working), but I noticed that the last release (2.3.0 at time of writing) is actually quite old – it was released in June.&lt;/p&gt;&#xA;&lt;p&gt;I was going through recent commit messages, and noticed there had been quite a bit of work around integrating &lt;a href=&#34;http://axtls.sourceforge.net/&#34;&gt;axTLS&lt;/a&gt;, which is a tiny TLS library specifically designed for computers with small memory footprints (AKA microcontrollers).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Adding TLS</title>
      <link>/blog/2016/08/07/adding-tls/</link>
      <pubDate>Sun, 07 Aug 2016 06:03:19 +0000</pubDate>
      <guid>/blog/2016/08/07/adding-tls/</guid>
      <description>&lt;p&gt;While having a username and password is better than an open MQTT server, the credentials are still being sent in plain text, so anyone with a packet sniffer could intercept them and then gain access to our server.&lt;/p&gt;&#xA;&lt;p&gt;To avoid this, let’s setup &lt;a href=&#34;https://en.wikipedia.org/wiki/Transport_Layer_Security&#34;&gt;TLS&lt;/a&gt; (commonly, but maybe not &lt;a href=&#34;https://luxsci.com/blog/ssl-versus-tls-whats-the-difference.html&#34;&gt;correctly known as SSL&lt;/a&gt;) to encrypt the connection and kept the credentials secret.&lt;/p&gt;&#xA;&lt;h3 id=&#34;tls-101&#34;&gt;TLS 101&lt;/h3&gt;&#xA;&lt;p&gt;TLS provides a chain of trust, allowing two computers that know nothing about each other to trust each other.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Using a username and password for MQTT</title>
      <link>/blog/2016/08/07/using-a-username-and-password-for-mqtt/</link>
      <pubDate>Sun, 07 Aug 2016 05:59:44 +0000</pubDate>
      <guid>/blog/2016/08/07/using-a-username-and-password-for-mqtt/</guid>
      <description>&lt;p&gt;Now we have the ESP8266 talking to the MQTT broker, let’s have a look at adding some authentication. The simplest form of authentication is a username and password, which Mosquitto supports. It uses a password file that has a list of all the usernames allowed to login as well as hashes of their passwords.&lt;/p&gt;&#xA;&lt;p&gt;We will need to create a configuration file to tell mosquitto where to find that file – create an etc directory in the mosquitto directory that is in the root of the docker project:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Let’s connect</title>
      <link>/blog/2016/08/06/lets-connect/</link>
      <pubDate>Sat, 06 Aug 2016 07:07:55 +0000</pubDate>
      <guid>/blog/2016/08/06/lets-connect/</guid>
      <description>&lt;p&gt;So, now we have an MQTT server, lets see if we can get the ESP8266 to connect to it.&lt;/p&gt;&#xA;&lt;p&gt;I’m going to use &lt;a href=&#34;https://github.com/knolleary/pubsubclient&#34;&gt;Nick O’Leary’s pubsubclient&lt;/a&gt; library. It’s pretty easy to install – find &lt;em&gt;Manage Libraries&lt;/em&gt; in the &lt;em&gt;Sketch&lt;/em&gt; Menu, search for &lt;em&gt;pubsubclient&lt;/em&gt; and it should appear. Hit install.&lt;/p&gt;&#xA;&lt;p&gt;After we physically connected to the WIFI (Which we’ll do via via hard coding the SSID and passkey for the moment – we’ll do that properly later), there are two things we need to do:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – How can I make this garage door opener secure?</title>
      <link>/blog/2016/08/03/how-can-i-make-this-garage-door-opener-secure/</link>
      <pubDate>Wed, 03 Aug 2016 12:35:39 +0000</pubDate>
      <guid>/blog/2016/08/03/how-can-i-make-this-garage-door-opener-secure/</guid>
      <description>&lt;p&gt;One of the design goals for this project was a secure system – this device can open my garage, and I don’t really want just any person to be able to do that!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; I’m not a security expert! If you find holes in my logic, please let me know!&lt;/p&gt;&#xA;&lt;p&gt;The most obvious way to interface with the controller was to setup some sort of server that a controller (eg an iPhone app) talks to. The problem with this is that an open network port is an attack vector – if a good guy can connect to a network port, so can a bad guy. While I could set up a username or password, having a port open potentially means buffer overflows, and since I’m not really a C/C++ guy this a big problem for me – I mean a lot of really smart people avoid writing servers in C…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Setting up the Arduino IDE for the ESP8266</title>
      <link>/blog/2016/08/03/setting-up-the-arduino-ide/</link>
      <pubDate>Wed, 03 Aug 2016 11:55:37 +0000</pubDate>
      <guid>/blog/2016/08/03/setting-up-the-arduino-ide/</guid>
      <description>&lt;p&gt;Thankfully, setting up the Arduino IDE to program the ESP8266 this bit was way easier than I thought – the team behind the Arduino library have done a pretty awesome job. I’m not going to duplicate the steps here – &lt;a href=&#34;https://github.com/esp8266/Arduino&#34;&gt;the Github page does a great job of explaining it&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Now you should be able to pick the “Generic ESP8266 Module” from the board list. I had to make a guess at the settings, as I had no idea what type I had – the defaults were fine in my case.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using openssl to encrypt development scripts that have secrets</title>
      <link>/blog/2016/08/03/using-openssl-to-encrypt-development-scripts-that-have-secrets/</link>
      <pubDate>Wed, 03 Aug 2016 03:59:24 +0000</pubDate>
      <guid>/blog/2016/08/03/using-openssl-to-encrypt-development-scripts-that-have-secrets/</guid>
      <description>&lt;p&gt;I like having scripts that can pull production data down to development – the best kind of fake data is real data. Usually that involves taking a database dump and downloading any uploaded files. Unfortunately, that also means remembering long command line arguments, and dealing with credentials for both the database and the file server.&lt;/p&gt;&#xA;&lt;p&gt;Up until now, I’ve kept a secure notepad of command line arguments with secrets in my password manager, but that doesn’t really scale if you want to be able to supply different arguments in different contexts (The number of times I’ve forgotten to change an argument…) – what I really wanted was a script that I could call that abstracted the nasty command line call with long arguments to a slightly less nasty command line call with shorter arguments. Ideally it could also be stored in source control so other could use it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garage Door Opener – Programming the ESP8266</title>
      <link>/blog/2016/07/01/programming-the-esp8266/</link>
      <pubDate>Fri, 01 Jul 2016 08:26:30 +0000</pubDate>
      <guid>/blog/2016/07/01/programming-the-esp8266/</guid>
      <description>&lt;p&gt;I has an ESP8266-01 kicking around my workshop just waiting for a project, so the garage door opener was a perfect choice – it only needed one output, and two inputs.&lt;/p&gt;&#xA;&lt;p&gt;The first problem I had though, was I needed to program it. I read that you can use a 3.3V FTDI cable, which I already had – sort of. It’s will interface at 3.3V, but the VCC is 5V.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up Buildbox when you run your own Git server</title>
      <link>/blog/2014/01/06/setting-up-buildbox-when-you-run-your-own-git-server/</link>
      <pubDate>Mon, 06 Jan 2014 14:34:55 +0000</pubDate>
      <guid>/blog/2014/01/06/setting-up-buildbox-when-you-run-your-own-git-server/</guid>
      <description>&lt;p&gt;I’ve been trying to get a CI server for &lt;a href=&#34;http://www.88miles.net&#34;&gt;88 Miles&lt;/a&gt; sorted out for ages. I tried to cobble something together before, but lost interest trying to keep track of previous builds and Ruby environments and other stuff. Me being me, I run my own Git server, so many of the existing CI servers out there won’t work for me (They assume GitHub), and I don’t really feel comfortable sending out source on a private project to a third party server. I also have a VM in my office that runs various dev machines, so I have the hardware to do it. Well, it turns out that a &lt;a href=&#34;https://twitter.com/keithpitt&#34;&gt;buddy of mine&lt;/a&gt; has been building a CI server that is a perfect fit for my purposes! It’s called &lt;a href=&#34;https://buildbox.io/&#34;&gt;Buildbox&lt;/a&gt;, and it comprises of an agent that you run on your hardware that manages builds for you. This is roughly what I did to get it running.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I, for one, welcome our new screencasting overloads</title>
      <link>/blog/2013/12/02/i-for-one-welcome-our-new-screencasting-overloads/</link>
      <pubDate>Mon, 02 Dec 2013 12:16:28 +0000</pubDate>
      <guid>/blog/2013/12/02/i-for-one-welcome-our-new-screencasting-overloads/</guid>
      <description>&lt;p&gt;Or, how I used robots to make my screencasts.&lt;/p&gt;&#xA;&lt;p&gt;I don’t like screencasts. I don’t like watching them, and I hate making them.&lt;/p&gt;&#xA;&lt;p&gt;However, I know a lot of people do like watching them, especially people that are trying evaluate software. It had been pointed out to me that there was no way to see the internals of &lt;a href=&#34;http://88miles.net&#34;&gt;88 Miles&lt;/a&gt; without signing up (Personally, I would suggest signing up, but whatever). So I thought I’d investigate a way to make a screencast without wanting to stab myself in the face.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tell your non-tech friends and family: Don’t use LinkedIn Intro</title>
      <link>/blog/2013/10/24/tell-your-non-tech-friends-and-family-dont-use-linkedin-intro/</link>
      <pubDate>Thu, 24 Oct 2013 00:09:49 +0000</pubDate>
      <guid>/blog/2013/10/24/tell-your-non-tech-friends-and-family-dont-use-linkedin-intro/</guid>
      <description>&lt;p&gt;If you have friends or family that are using LinkedIn (And there are a lot of them – I’ve got family members that don’t use Facebook, that do have LinkedIn accounts), please take the time to inform them about the importance of password security.&lt;/p&gt;&#xA;&lt;p&gt;Knowing that many of their users aren’t particularly technical, they have added a number of dubious (I’d say dangerous) techniques to bolster users connections (and by effect their userbase). Of these techniques, there are two which ask users to enter their email username and password so they can access the user’s email inbox directly. This is a bad idea. Please send this post (or wholesale copy it and email it to them – I’m putting this post under Creative Commons, so copy away) to your less technical friends and family, and offer to help them fix up the mess if they have already given up their username and password.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What if we treated marketing like we did code?</title>
      <link>/blog/2013/10/15/what-if-we-treated-marketing-like-we-did-code/</link>
      <pubDate>Tue, 15 Oct 2013 15:36:55 +0000</pubDate>
      <guid>/blog/2013/10/15/what-if-we-treated-marketing-like-we-did-code/</guid>
      <description>&lt;p&gt;As someone that started writing code at a young age I, like many others, have learnt my trade via books and google searches and long hours in front of a keyboard. As the Internet engulfed our lives, solutions to problems and access to really smart people has become just one stack overflow or Github repo away. The software world really is one of knowledge sharing. It’s pretty ace.&lt;/p&gt;&#xA;&lt;p&gt;I’ve been doing a lot of research in to marketing and sales lately for &lt;a href=&#34;http://88miles.net&#34;&gt;my startup&lt;/a&gt;, and I’ve found that the same really can’t be said for the marketing world. While there &lt;em&gt;seems&lt;/em&gt; to be a lot of information out there, when you dig a little deeper it seems to be a rehash of a couple of ideas, a lot of link-bait lists and offers to increase my conversions by up to 250%! If I sign up to a newsletter and pay $35 a month and follow 12-simple steps that point me at a $3000 seminar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ensuring background AJAX requests have completed when leaving a page</title>
      <link>/blog/2013/10/11/ensuring-background-ajax-requests-have-completed-when-leaving-a-page/</link>
      <pubDate>Fri, 11 Oct 2013 06:38:26 +0000</pubDate>
      <guid>/blog/2013/10/11/ensuring-background-ajax-requests-have-completed-when-leaving-a-page/</guid>
      <description>&lt;p&gt;To make things feel quicker on 88 Miles, I update the UI straight after an interaction (like punching in or out), even though in reality the AJAX request is still sitting there waiting for confirmation from the server. Generally, the AJAX request will complete correctly (and if it doesn’t a message gets popped up and the UI is restored to a pre-action state), however there is a chance that the user will close their browser or navigate away before everything completes, which may result in a project staying punched in which is less than ideal.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A quick and dirty way to ensure your cron tasks only run on one AWS server</title>
      <link>/blog/2013/09/18/a-quick-and-dirty-way-to-ensure-your-cron-tasks-only-run-on-one-aws-server/</link>
      <pubDate>Tue, 17 Sep 2013 17:21:59 +0000</pubDate>
      <guid>/blog/2013/09/18/a-quick-and-dirty-way-to-ensure-your-cron-tasks-only-run-on-one-aws-server/</guid>
      <description>&lt;p&gt;88 Miles has a cron job that runs every hour that does a number of things, one of which is billing. I currently run two servers (Yay failover!), which makes ensuring the cron job only runs once problematic. The obvious solution is to only run cron on one server, but this is also problematic, as there is no guarantee that the server running cron hasn’t died and another spun up in it’s place. The proper sysops solution is to run heartbeat or some other high-availability software to monitor cron – if the currently running server dies, the secondary will take over.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Delivering fonts from Cloudfront to Firefox</title>
      <link>/blog/2013/09/16/delivering-fonts-from-cloudfront-to-firefox/</link>
      <pubDate>Mon, 16 Sep 2013 06:13:00 +0000</pubDate>
      <guid>/blog/2013/09/16/delivering-fonts-from-cloudfront-to-firefox/</guid>
      <description>&lt;p&gt;I use both non-standard and custom icon fonts on &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple Time Tracking&#34;&gt;88 Miles&lt;/a&gt;, which need to be delivered to the browser in some way. Since all of the other assets are delivered via Amazon’s Content Delivery Network (CDN) Cloudfront, it would make sense to do the same for the fonts.&lt;/p&gt;&#xA;&lt;p&gt;Except that didn’t work for Firefox and some version of Internet Explorer. Turns out they both consider fonts as an attack vector, and will refuse to consume them if they are being delivered via another domain (commonly know as a cross domain policy). On a regular server, this is quite easy to fix: You just set the:&lt;/p&gt;</description>
    </item>
    <item>
      <title>An open letter to the Liberal member for Perth: Darryl Moore.</title>
      <link>/blog/2013/09/05/an-open-letter-to-the-liberal-member-for-perth-darryl-moore/</link>
      <pubDate>Thu, 05 Sep 2013 06:57:25 +0000</pubDate>
      <guid>/blog/2013/09/05/an-open-letter-to-the-liberal-member-for-perth-darryl-moore/</guid>
      <description>&lt;p&gt;Hi Darryl,&lt;/p&gt;&#xA;&lt;p&gt;As a Liberal voter, today’s announcement regarding the cut to ICT spending and the implementation of a mandatory internet filter; as well as the clearly flawed coalition broadband strategy, you have forced me to swing my vote. I write you this email so you can be aware of the issues for at least one of your constituents.&lt;/p&gt;&#xA;&lt;p&gt;It disappoints me that your party has a lack of understanding of technology and the role that it plays in the future of this country. As an IT professional, who runs my own business as well as an internet startup that exports services to the world, the short-sightedness of your strategy is concerning. We are looking backwards to support unsustainable industries like the car industry, while ignoring an industry that Australian can become a world-class player.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Selenium to generate screenshots for support documents</title>
      <link>/blog/2013/09/02/using-selenium-to-generate-screenshots-for-support-documents/</link>
      <pubDate>Mon, 02 Sep 2013 07:59:52 +0000</pubDate>
      <guid>/blog/2013/09/02/using-selenium-to-generate-screenshots-for-support-documents/</guid>
      <description>&lt;p&gt;I’ve just been working on some support documentation for 88 Miles, and I wanted to include some screenshots. Since I’m lazy, and hate having to repeat tasks, I decided to use Selenium and Capybara to generate all the screenshots for me. Using robots means I can re-generate all my screenshots quickly, so I’m more likely to do it if I change the UI. I covered using &lt;a href=&#34;/blog/2013/08/21/testing-ui-with-integration-test-in-rails-with-phantomjs/&#34; title=&#34;Testing UI with Integration tests in Rails with phantomjs&#34;&gt;PhantomJS for generating screenshots&lt;/a&gt; before, but I’m using Selenium for this to make sure a real browser is used, just in case there are any rendering differences (which there usually is).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Track email opens using a pixel tracker from Rails</title>
      <link>/blog/2013/08/25/track-email-opens-using-a-pixel-tracker-from-rails/</link>
      <pubDate>Sun, 25 Aug 2013 14:45:55 +0000</pubDate>
      <guid>/blog/2013/08/25/track-email-opens-using-a-pixel-tracker-from-rails/</guid>
      <description>&lt;p&gt;If you are sending out emails to you customers from your web app, it pretty handy to know if they are opening them. If you have ever sent out an email newsletter from a service like Campaign Monitor, you would have seen email open graphs. Of course, tracking this stuff is super important for a newsletter campaign, but it would also be interesting to see if users are opening, for example, welcome emails or onboarding emails.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Freelancer mentoring</title>
      <link>/blog/2013/08/22/freelancer-mentoring/</link>
      <pubDate>Thu, 22 Aug 2013 02:00:36 +0000</pubDate>
      <guid>/blog/2013/08/22/freelancer-mentoring/</guid>
      <description>&lt;p&gt;I’ve been a freelancer for 85% of my work career. I’ve traversed the giddy-heights and the earth-shaking lows of working for myself for a long time, and I think it’s time to give back. One thing that I have noticed during those 11 years is that it is all to easy to live in your little bubble and not talk to anyone other than clients for weeks on end. So, I’m going to start running freelancer mentoring.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing UI with Integration tests in Rails with phantomjs</title>
      <link>/blog/2013/08/21/testing-ui-with-integration-test-in-rails-with-phantomjs/</link>
      <pubDate>Wed, 21 Aug 2013 15:12:27 +0000</pubDate>
      <guid>/blog/2013/08/21/testing-ui-with-integration-test-in-rails-with-phantomjs/</guid>
      <description>&lt;p&gt;Computers aren’t very good at testing visual changes on websites. Sure you can test the differences between two images, but image changes are really brittle. However, humans are pretty good at it. As a result, the common way to test visuals it to actually click through stuff on a browser. This doesn’t scale. For one, if your UI changes based on different initial states, it can take ages to set this stuff up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>So… It’s been a while.</title>
      <link>/blog/2013/08/21/so-its-been-a-while/</link>
      <pubDate>Wed, 21 Aug 2013 02:59:28 +0000</pubDate>
      <guid>/blog/2013/08/21/so-its-been-a-while/</guid>
      <description>&lt;p&gt;Yeah, so I’ve decided to start blogging again.&lt;/p&gt;&#xA;&lt;p&gt;While twitter is good for short bursts of vitriol, I’m missing the longer form of the game, and I think it is time to get back to it.&lt;/p&gt;&#xA;&lt;p&gt;So what have I been up to for the past year-and-a-half? Besides my consulting and &lt;a href=&#34;http://www.madpilot.com.au&#34;&gt;freelancing work&lt;/a&gt;, &lt;a href=&#34;http://www.birdstudios.com.au&#34;&gt;Adrianne&lt;/a&gt; and I started (and have almost wrapped up) &lt;a href=&#34;http://www.horse-and-cart.com.au&#34;&gt;Horse &amp;amp; Cart&lt;/a&gt;; Me and some other guys built a landing page for a &lt;a href=&#34;http://squidee.co&#34;&gt;product over a weekend&lt;/a&gt; (and got a shit-ton of sign ups); I started working on &lt;a href=&#34;http://beta.88miles.net&#34;&gt;88 Miles&lt;/a&gt; again, with the intention of doing &lt;a href=&#34;http://2hoursadayworkdiary.tumblr.com/&#34;&gt;2 hours a day&lt;/a&gt; on it, which I was doing really well until I bought and subsequently had to move into a house. That stuff is a serious time sink. Who knew. (It’s ok, though – I’m back on 88 Miles again. New version due on 15 September!)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simulating the iOS “slider” checkbox, using just CSS</title>
      <link>/blog/2011/12/06/simulating-the-ios-slider-checkbox-using-just-css/</link>
      <pubDate>Tue, 06 Dec 2011 07:08:26 +0000</pubDate>
      <guid>/blog/2011/12/06/simulating-the-ios-slider-checkbox-using-just-css/</guid>
      <description>&lt;p&gt;… well, some CSS and one image.&lt;/p&gt;&#xA;&lt;p&gt;I’ve been really interested in emulating the iOS UI in HTML, CSS and JS. Not for any useful reason, more out of morbid curiosity. It could come in handy for home screen web applications, but for standard webapps, I’m beginning to think the uncanny valley plays too big a role to give good results. Regardless, it’s something I’m still playing with.&lt;/p&gt;&#xA;&lt;p&gt;One of the elements that is quite different between Mobile Safari and native iOS applications is the rendering of checkboxes. Mobile Safari renders them in a similar way to desktop Safari – as a traditional checkbox, but native iOS application render a slider:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to re-play an AJAX request in jQuery after an authentication error</title>
      <link>/blog/2011/11/30/how-to-re-play-an-ajax-request-in-jquery-after-an-authentication-error/</link>
      <pubDate>Wed, 30 Nov 2011 03:02:36 +0000</pubDate>
      <guid>/blog/2011/11/30/how-to-re-play-an-ajax-request-in-jquery-after-an-authentication-error/</guid>
      <description>&lt;p&gt;I’m building a mobile web app that is basically one HTML file + backbone.js + other JavaScript magic. The app is authenticated, so the user needs to be able to login. Thankfully the server returns a 403 if a request is not authorised to access the requested endpoint. Ideally, if that happened, a login form would pop up, the user would enter their details, and the system would continue on it’s merry way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Time to learn Ruby on Rails!</title>
      <link>/blog/2011/03/24/time-to-learn-ruby-on-rails/</link>
      <pubDate>Thu, 24 Mar 2011 12:46:40 +0000</pubDate>
      <guid>/blog/2011/03/24/time-to-learn-ruby-on-rails/</guid>
      <description>&lt;p&gt;I like Rails. A lot. And you should too – it makes build web stuff fun, and faster. It’s poetry when compared to PHP. Not to mention there is some smart nerds doing work on it, and it has one of the most vibrant and passionate communities around. Unfortunately, the learning curve can be significant, especially if you are learning Ruby at the same time. Me to the rescue!&lt;/p&gt;&#xA;&lt;p&gt;The guys behind &lt;a href=&#34;http://www.sitepoint.com&#34;&gt;Sitepoint&lt;/a&gt; have just launched a new site: &lt;a href=&#34;http://www.learnable.com&#34;&gt;Learnable&lt;/a&gt;, which is an online training centre, where people not only go to learn stuff, but they can teach stuff too! They ask me to create a &lt;a href=&#34;https://learnable.com/courses/learning-rails-3-212&#34;&gt;Ruby on Rails 3 course&lt;/a&gt; for their launch, and it just went live today!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Need a frontend coder?</title>
      <link>/blog/2010/11/22/need-a-frontend-coder/</link>
      <pubDate>Mon, 22 Nov 2010 05:23:22 +0000</pubDate>
      <guid>/blog/2010/11/22/need-a-frontend-coder/</guid>
      <description>&lt;p&gt;While I work on some personal summer projects, I’m looking at getting some front end contract work – you know HTML/CSS/JS sort of stuff.If you know anyone looking to turn pictures into websites, get them in contact with me.Hourly rate negotiable depending on contract length.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making the OSX Terminal.app work properly</title>
      <link>/blog/2010/08/13/making-the-osx-terminalapp-work-properly/</link>
      <pubDate>Thu, 12 Aug 2010 17:03:38 +0000</pubDate>
      <guid>/blog/2010/08/13/making-the-osx-terminalapp-work-properly/</guid>
      <description>&lt;p&gt;I just acquired a 13″ MacBook so I can build some me iPhone and iPad apps, and the allure of Unix on the desktop is a nice added benefit, however it is apparent that the default terminal emulator is kind of balls out of the box. I spend A LOT of time in a terminal, with VIM being my IDE is choice. What many people might not know is that modern terminal emulators support mouse gestures, as does vim (&lt;em&gt;:set mouse=a&lt;/em&gt;).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating a bootable USB stick to install VMware ESXi</title>
      <link>/blog/2010/04/06/creating-a-bootable-usb-stick-to-install-vmware-esxi/</link>
      <pubDate>Tue, 06 Apr 2010 04:10:50 +0000</pubDate>
      <guid>/blog/2010/04/06/creating-a-bootable-usb-stick-to-install-vmware-esxi/</guid>
      <description>&lt;p&gt;I had to install VMware ESXi on a machine that didn’t have a CDROM or DVD player. For extra difficulty, I also didn’t have a Linux box with a USB drive handy – but after a bit of hair pulling, I managed to create a bootable USB stick image in Linux (In my case Gentoo). Hat tip to &lt;a href=&#34;http://communities.vmware.com/thread/75792&#34;&gt;http://communities.vmware.com/thread/75792&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Create a fake filesystem. I created a 1Gb, but 512Mb should be enough&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dd &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/dev/zero of&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/mnt/vmware.img bs&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; count&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1048576&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Associate it with a loopback device&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;losetup /dev/loop0 vmware.img&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;Create a FAT filesystem on the image&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkfs.vfat /dev/loop0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;Mount the VMware CD ISO to a temporary directory&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p /mnt/vmware&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p /mnt/vmware-usb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mount -t iso9660 -o loop /path/to/vmware.iso /mnt/vmware&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mount -t vfat -o loop /mnt/vmware.img /mnt/vmware-usb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;5&#34;&gt;&#xA;&lt;li&gt;Copy the contents across&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp -r /mnt/vmware/* /mnt/vmware-usb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;6&#34;&gt;&#xA;&lt;li&gt;Delete the isolinux.bin and rename isolinux.cfg file on the USB flash disk to syslinux.cfg in /mnt/vmware-usb&lt;/li&gt;&#xA;&lt;li&gt;Add usb to the end of the append line in syslinux.cfg&lt;/li&gt;&#xA;&lt;li&gt;Run syslinux to write a bootloader&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;syslinux -s /dev/loop0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;9&#34;&gt;&#xA;&lt;li&gt;Unmount everything&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /mnt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;unmount /mnt/vmware&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;unmount /mnt/vmware-usb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;losetup -d /dev/loop0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;vmware.img should now be a bootable USB image. You will need to write it to your USB stick now. In linux you can use dd (assuming your USB stick is at sdb):&lt;/p&gt;</description>
    </item>
    <item>
      <title>220s: A marketing odyssey</title>
      <link>/blog/2010/03/23/220s-a-marketing-odyssey/</link>
      <pubDate>Tue, 23 Mar 2010 14:02:59 +0000</pubDate>
      <guid>/blog/2010/03/23/220s-a-marketing-odyssey/</guid>
      <description>&lt;p&gt;For those of you that have been keeping abreast of the goings on of my work life will know that I helped start up a cooperative workspace in Leederville just over a year ago. The idea behind cooperative spaces is pretty simple: You get a bunch of freelancers together to share rent, ADSL and other running costs, which can be prohibitive if you are on your own. A lovely side-effect of throwing a bunch of like-minded people into a couple of rooms together is that you can share work, talk about problems you might have and avoid that oh-so-familiar cabin-fever that is common to people that work from home on their own for long periods of time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rails Training is starting a week later</title>
      <link>/blog/2010/02/25/rails-training-is-starting-a-week-later/</link>
      <pubDate>Thu, 25 Feb 2010 03:17:40 +0000</pubDate>
      <guid>/blog/2010/02/25/rails-training-is-starting-a-week-later/</guid>
      <description>&lt;p&gt;Due to a scheduling clash with us and the State government (There was a public holiday we forgot about), the start of Rails Training 1 has been pushed back a week. It now starts on Monday 8th and Thursday 11th respectively.&lt;/p&gt;&#xA;&lt;p&gt;There are still spots left! &lt;a href=&#34;http://railstraining.in&#34;&gt;Go and register&lt;/a&gt;. I’ll wait.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Soooo… Which one is better? Online or offline marketing?</title>
      <link>/blog/2010/02/23/soooo-which-one-is-better-online-or-offline-marketing/</link>
      <pubDate>Tue, 23 Feb 2010 02:50:42 +0000</pubDate>
      <guid>/blog/2010/02/23/soooo-which-one-is-better-online-or-offline-marketing/</guid>
      <description>&lt;p&gt;Both Alex and I are web nerds. Throw us a technical problem and will be champing at the bit to solve it. This, like many other coders who start their own business, is what we spend all day doing. Unfortunately for us, being totally awesome at what we do is only a small part of running a successful business. Alex’s business, &lt;a href=&#34;http://www.brownbeagle.com.au/&#34;&gt;Brown Beagle Software&lt;/a&gt; has just taken on it’s first employee, and I’m ready to start selling the living daylights out of my &lt;a href=&#34;http://www.schwacms.com/&#34;&gt;CMS&lt;/a&gt; so we need to move beyond adhoc, word-of-mouth “marketing” and get a bit more serious. Of course, neither of us know a great deal about that…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learn Ruby on Rails</title>
      <link>/blog/2010/02/17/learn-ruby-on-rails/</link>
      <pubDate>Wed, 17 Feb 2010 04:21:26 +0000</pubDate>
      <guid>/blog/2010/02/17/learn-ruby-on-rails/</guid>
      <description>&lt;p&gt;Alex Pooley (from &lt;a href=&#34;http://www.brownbeagle.com.au&#34;&gt;Brown Beagle Software&lt;/a&gt;, and fellow &lt;a href=&#34;http://www.twotwenty.com.au&#34;&gt;220er&lt;/a&gt; and Rails guy) are running some Ruby on Rails training sessions in March.&lt;/p&gt;&#xA;&lt;p&gt;It will be an intensive primer designed to get web developers who work in PHP, or .Net up-to-speed in Rails in about four classes. We will cover Ruby, Rails and unit testing as well as deployment.&lt;/p&gt;&#xA;&lt;p&gt;The classes cost $220, with one stream running on Monday 1st-22nd March 2010 and the other Thursday 4th-25th March 2010. So if you have been meaning to look at Rails, but haven’t had the time, then this could be perfect for you!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bad customer support = Unhappy campers</title>
      <link>/blog/2010/01/18/bad-customer-support-unhappy-campers/</link>
      <pubDate>Mon, 18 Jan 2010 03:45:15 +0000</pubDate>
      <guid>/blog/2010/01/18/bad-customer-support-unhappy-campers/</guid>
      <description>&lt;p&gt;I do a lot of front end development, and as a result, I use Adobe Photoshop a lot. I also use Acrobat Professional frequently and Flash and Illustrator enough to warrant purchasing the full Design Premium package. Said Design Premium Package is pretty expensive, so to spread my costs, I’m using the subscription edition. Recently, I had to change my subscription plan, so I cancelled it, and re-subscribed, and so begins my trip down the rabbit hole that is Adobe Support.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How-to tunnel the VMware Intrastructure Web Access control panel</title>
      <link>/blog/2010/01/16/how-to-tunnel-the-vmware-intrastructure-web-access-control-panel/</link>
      <pubDate>Sat, 16 Jan 2010 04:30:48 +0000</pubDate>
      <guid>/blog/2010/01/16/how-to-tunnel-the-vmware-intrastructure-web-access-control-panel/</guid>
      <description>&lt;p&gt;If you have some sort of *nix (Linux, OSX, cygwin), then simply run the following in a shell:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh -L 8222:localhost:8222 -L 902:localhost:902 -L 8333:localhost:8333 your.vmserver.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;replacing your.vmserver.com with your ACTUAL VMware server.&lt;/p&gt;&#xA;&lt;p&gt;Then point your browser at http://localhost:8222 (This is the unencrypted URL – which isn’t a problem, because you are tunneling over SSH)&lt;/p&gt;&#xA;&lt;p&gt;Note, that this trick really only works if you have an SSH server running on your VMware host.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ideas 6: The Edge of the Web Edition</title>
      <link>/blog/2009/10/13/ideas-6-the-edge-of-the-web-edition/</link>
      <pubDate>Tue, 13 Oct 2009 10:26:19 +0000</pubDate>
      <guid>/blog/2009/10/13/ideas-6-the-edge-of-the-web-edition/</guid>
      <description>&lt;p&gt;Perth has had it’s day in the sun, by holding the last five Ideas events, but now it is Brisvegas’ go. The theme: Edge of the Web, because we have two speakers giving you exclusive previews of their Edge of the Web presentations: Ash Donaldson presenting &lt;em&gt;Designing to persuade: Shaping the User Experience&lt;/em&gt; and yours truly blabbing on about &lt;em&gt;Stuff They Never Taught You at Website School&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;We will be at the &lt;a href=&#34;http://www.ploughinn.com.au/&#34;&gt;Plough Inn, Southbank&lt;/a&gt; on October 21st 2009. So if you are in Brisbane, and have been meaning to get to an AWIA event, now is your chance!&lt;/p&gt;</description>
    </item>
    <item>
      <title>…and we still don’t have day-light saving</title>
      <link>/blog/2009/08/31/and-we-still-dont-have-day-light-saving/</link>
      <pubDate>Mon, 31 Aug 2009 07:25:28 +0000</pubDate>
      <guid>/blog/2009/08/31/and-we-still-dont-have-day-light-saving/</guid>
      <description></description>
    </item>
    <item>
      <title>Yep, Software Engineering is dead</title>
      <link>/blog/2009/07/20/yep-software-engineering-is-dead/</link>
      <pubDate>Mon, 20 Jul 2009 15:06:01 +0000</pubDate>
      <guid>/blog/2009/07/20/yep-software-engineering-is-dead/</guid>
      <description>&lt;p&gt;You know that feeling you get when something you’ve been taught to believe in gets discredited and because your belief was tenuous at best, the walls come tumbling down around you and then you have a huge weight lifted off you shoulders?&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://pascalbompard.com/&#34;&gt;Pascal&lt;/a&gt; just &lt;a href=&#34;http://www.codinghorror.com/blog/archives/001288.html&#34;&gt;posted this&lt;/a&gt; on the &lt;a href=&#34;http://www.twotwenty.com.au&#34; title=&#34;Websites and Software&#34;&gt;220&lt;/a&gt; mailing list. Amen. It’s something that I’m pretty sure I’ve been articulating for a long time. Whenever someone has asked me why software is hard, I always use this analogy:&lt;/p&gt;</description>
    </item>
    <item>
      <title>The first SchwaCMS goes live!</title>
      <link>/blog/2009/06/17/the-first-schwacms-goes-live/</link>
      <pubDate>Wed, 17 Jun 2009 06:10:19 +0000</pubDate>
      <guid>/blog/2009/06/17/the-first-schwacms-goes-live/</guid>
      <description>&lt;p&gt;After the last announcement of &lt;a href=&#34;http://www.madpilot.com.au&#34;&gt;MadPilot’s&lt;/a&gt; new &lt;a href=&#34;http://www.schwacms.com&#34; title=&#34;SchwaCMS&#34;&gt;CMS&lt;/a&gt;, I’m proud to follow it up with the announcement of the first site to use Schwa as it’s backend: &lt;a href=&#34;http://www.greenvalemining.com.au&#34;&gt;Greenvale Mining NL&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Greenvale was designed by the ever-so-talented Adrianne from &lt;a href=&#34;http://www.birdstudios.com.au&#34;&gt;bird.STUDIOS&lt;/a&gt;, and was sliced by the latest edition to the &lt;a href=&#34;http://www.twotwenty.com.au&#34;&gt;twotwenty&lt;/a&gt; family: Niaal Holder from &lt;a href=&#34;http://www.speakinteractive.com&#34;&gt;Speak&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;We have a number of sites being launched over the next couple of week so watch this space!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dear clients…</title>
      <link>/blog/2009/05/27/dear-clients/</link>
      <pubDate>Wed, 27 May 2009 08:02:09 +0000</pubDate>
      <guid>/blog/2009/05/27/dear-clients/</guid>
      <description>&lt;p&gt;Please watch:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing meftos.com</title>
      <link>/blog/2009/05/26/introducing-meftoscom/</link>
      <pubDate>Mon, 25 May 2009 16:35:24 +0000</pubDate>
      <guid>/blog/2009/05/26/introducing-meftoscom/</guid>
      <description>&lt;p&gt;I’ve been pretty busy lately, and haven’t had anytime for some good old fashioned hacking. I’ve also been copping some flack for letting my ruby-fu lapse (it seems a lot can happen in three months. Actually a lot happens in three minutes), so I decided to clear a couple of hours last weekend to have a play with &lt;a href=&#34;http://github.com&#34;&gt;GitHub&lt;/a&gt;, &lt;a href=&#34;http://haml.hamptoncatlin.com/&#34;&gt;haml and sass&lt;/a&gt;, and just to generally get friendly with ruby again.&lt;/p&gt;&#xA;&lt;p&gt;I recently read a couple of articles about the doom and gloom around URL shorteners and how if a couple of the big ones collapsed the entire intergoop would fall on it’s face. Whilst that is a little bit of an over exaggeration, there is some food for thought in that statement. I was also reading about the &lt;a href=&#34;http://adactio.com/journal/1552/&#34;&gt;collapse of magnolia&lt;/a&gt; (I know – old news. Sue me). Many an innocent bystander lost many months or years of bookmarking just because one site went down. Whilst I’m a fan of the cloud, I’m also a bit of a control freak, so this was a little scary.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ideas 5: The accessibilty edition</title>
      <link>/blog/2009/04/08/ideas-5-the-accessibilty-edition/</link>
      <pubDate>Wed, 08 Apr 2009 15:41:22 +0000</pubDate>
      <guid>/blog/2009/04/08/ideas-5-the-accessibilty-edition/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;http://www.webindustry.asn.au/&#34;&gt;Australian Web Industry Association&lt;/a&gt;, together with &lt;a href=&#34;http://www.wipa.org.au/&#34;&gt;Web Industry Professionals Association&lt;/a&gt;, present Ideas 5. This year’s Ideas is is focussing on Understanding WCAG 2.0 &amp;amp; Preparing Websites with Improved Accessibility. If you are a web developer, and you aren’t thinking about accessibility then you REALLY need to get your butt down to the Melbourne Hotel in Perth on 22 of April 2009. Tickets are only $40 for AWIA members ($55 if you aren’t. In unrelated news, AWIA memberships are &lt;a href=&#34;http://www.webindustry.asn.au/join&#34;&gt;pretty cheap&lt;/a&gt;)&lt;/p&gt;</description>
    </item>
    <item>
      <title>SchwaCMS goes live</title>
      <link>/blog/2009/03/27/schwacms-goes-live/</link>
      <pubDate>Fri, 27 Mar 2009 03:58:28 +0000</pubDate>
      <guid>/blog/2009/03/27/schwacms-goes-live/</guid>
      <description>&lt;p&gt;For the past couple of months, I’ve been locked in my room, hacking away at a (probably not-so) top secret project – which I have just pulled the big switch on. So ladies and gentleman, let me introduce you to &lt;a href=&#34;http://www.schwacms.com&#34;&gt;&lt;strong&gt;SchwaCMS&lt;/strong&gt;&lt;/a&gt;. It’s a hosted CMS product that has taken ideas from many years of toiling away on other peoples’ CMSs.&lt;/p&gt;&#xA;&lt;p&gt;There is a complete feature list on the website, but some of the geek highlights:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using SSH to run remote commands using PHP. A cheat guide.</title>
      <link>/blog/2009/03/08/using-ssh-to-run-remote-commands-using-php-a-cheat-guide/</link>
      <pubDate>Sun, 08 Mar 2009 12:22:06 +0000</pubDate>
      <guid>/blog/2009/03/08/using-ssh-to-run-remote-commands-using-php-a-cheat-guide/</guid>
      <description>&lt;p&gt;I’m working on a soon-to-be-released project that needed to run commands on a Linux server. Whilst it would be possible to use something like the &lt;em&gt;exec&lt;/em&gt; command to run it, this would mean that the user that Apache was running as would have to have permissions to run the commands, which is less than cool. I could have messed around with &lt;em&gt;sudo&lt;/em&gt;, but even that would open up some gaping holes, as all other websites hosted on the same box could theoretically run the same commands.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debugging JavaScript in Internet Explorer</title>
      <link>/blog/2009/02/03/debugging-javascript-in-internet-explorer/</link>
      <pubDate>Mon, 02 Feb 2009 23:48:07 +0000</pubDate>
      <guid>/blog/2009/02/03/debugging-javascript-in-internet-explorer/</guid>
      <description>&lt;p&gt;As anyone who has ever received the dreaded &lt;em&gt;Object doesn’t support this property or method&lt;/em&gt; error in IE can attest, debugging using everyone favourite browser is a right, royal pain in the heiny. Using Firebug in Firefox really has spoilt us as frontend developers (Hey, what am I talking? These ARE BASIC TOOLS that every other development platform has had since Ada Lovelace was in small britches, but I digress), so what is a cross-platform developer to do?&lt;/p&gt;</description>
    </item>
    <item>
      <title>MythTV &#43; XBMC = HOT SAUCE</title>
      <link>/blog/2009/02/01/mythtv-xbmc-hot-sauce/</link>
      <pubDate>Sun, 01 Feb 2009 11:23:52 +0000</pubDate>
      <guid>/blog/2009/02/01/mythtv-xbmc-hot-sauce/</guid>
      <description>&lt;p&gt;In December, I blogged about my new &lt;a href=&#34;/2008/12/15/mythtv-on-an-intel-atom/&#34;&gt;Atom-based MythTV setup&lt;/a&gt;. Whilst is was OK, I’ve since bought a &lt;a href=&#34;http://www.jetway.com.tw/jw/ipcboard_view.asp?productid=292&amp;amp;proname=J9F2-Extreme&#34;&gt;Jetway J9F2&lt;/a&gt; coupled with a Core2 T5500 (1.6Ghz) CPU. Let me state this now: it is the best MiniITX based media centre setup there is. It has HDMI and DVI outputs, two gigabit network ports and digital audio, and has enough power to happily decode free-to-air HDTV. The layout suits my &lt;a href=&#34;http://www.travla.com/product_d.php?id=0000000014&#34;&gt;case&lt;/a&gt; better than both previous boards, as there seems to be more airflow – with two caveats:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Eway Rebill and Managed Payments for ActiveMerchant</title>
      <link>/blog/2009/01/05/eway-rebill-and-managed-payments-for-activemerchant/</link>
      <pubDate>Mon, 05 Jan 2009 03:37:58 +0000</pubDate>
      <guid>/blog/2009/01/05/eway-rebill-and-managed-payments-for-activemerchant/</guid>
      <description>&lt;p&gt;If you are an Australian Rails developer and have had to deal with online payments, chances are you’ve dealt with &lt;a href=&#34;http://www.eway.com.au&#34;&gt;Eway&lt;/a&gt;. &lt;a href=&#34;http://github.com/Shopify/active_merchant/tree/master&#34;&gt;ActiveMerchant&lt;/a&gt; has supported Eway for single transactions for a while, but if you have had to deal with rebilling, you may have been at a loss.&lt;/p&gt;&#xA;&lt;p&gt;I’ve just forked ActiveMerchant and added support for the new Eway &lt;a href=&#34;http://www.eway.com.au/Products/CreditCardPayments/RecurringPayments.aspx&#34;&gt;Rebill&lt;/a&gt; and &lt;a href=&#34;http://www.eway.com.au/Products/CreditCardPayments/ManagedCustomers.aspx&#34;&gt;Managed Payments&lt;/a&gt; SOAP API (Obviously, you’ll need soap4r). &lt;a href=&#34;http://github.com/madpilot/active_merchant/tree/master&#34;&gt;It’s on github&lt;/a&gt;. Very &lt;a href=&#34;http://github.com/madpilot/active_merchant/wikis&#34;&gt;sparse instructions are here&lt;/a&gt;. The Rebill API might still need some work, as I ended up concentrating on the Managed Payments API, as that is actually more flexible.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Global search and replace using the command line</title>
      <link>/blog/2008/12/23/global-search-and-replace-using-the-command-line/</link>
      <pubDate>Tue, 23 Dec 2008 08:00:47 +0000</pubDate>
      <guid>/blog/2008/12/23/global-search-and-replace-using-the-command-line/</guid>
      <description>&lt;p&gt;If you have ever used Dreamweaver, you are probably familiar with the &lt;em&gt;Global Search and Replace&lt;/em&gt; feature, which allows you to search and replace amongst all files with in a site, which can be very handy if you are doing a static site. If you are too hard core for Dreamweaver though, and you spend your whole day buried in a terminal window, how can you achieve the same thing? By this piece of bash-trickery, that’s how:&lt;/p&gt;</description>
    </item>
    <item>
      <title>MythTV on an Intel Atom</title>
      <link>/blog/2008/12/15/mythtv-on-an-intel-atom/</link>
      <pubDate>Mon, 15 Dec 2008 13:06:28 +0000</pubDate>
      <guid>/blog/2008/12/15/mythtv-on-an-intel-atom/</guid>
      <description>&lt;p&gt;I’ve been using &lt;a href=&#34;http://mythtv.org&#34;&gt;MythTV&lt;/a&gt; for about 4 or 5 years now, first as just a DVD player, video and music player and more recently as an actual television replacement.&lt;/p&gt;&#xA;&lt;p&gt;Unsuprisingly, my old &lt;a href=&#34;http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=81&#34;&gt;VIA M10000&lt;/a&gt; was starting to get a bit long in the tooth (it IS a 4 year old motherboard that was underpowered when it was new), so when the &lt;a href=&#34;http://www.intel.com/Products/Desktop/Motherboards/D945GCLF/D945GCLF-overview.htm&#34;&gt;D945GCLF&lt;/a&gt; was released by and Intel a few months ago, I decided to give it a go.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Now do I make a bad pun about Christmas or summer BBQs…</title>
      <link>/blog/2008/12/01/now-do-i-make-a-bad-pun-about-christmas-or-summer-bbqs/</link>
      <pubDate>Mon, 01 Dec 2008 13:41:23 +0000</pubDate>
      <guid>/blog/2008/12/01/now-do-i-make-a-bad-pun-about-christmas-or-summer-bbqs/</guid>
      <description>&lt;p&gt;You know what, I’ll save you the pain.&lt;/p&gt;&#xA;&lt;p&gt;The reason I’m being tempted by such high-brow literary devices, is the &lt;a href=&#34;http://mixedgrill.webindustry.asn.au&#34;&gt;AWIA Web Mixed Grill&lt;/a&gt; – 24 short web articles from now up until Christmas – a web advent calendar if you will. Today saw Miles Burke givng hints and tips about being a successful freelancer, and tomorrow I’m blabbering on about HTTP request codes or something, and I hear from a small avian creature that there is a number of other hawt-sauce articles coming up, so it’s well worth the RSS subscription.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get the skinny on the Mario Brothers in Javascript</title>
      <link>/blog/2008/11/21/get-the-skinny-on-the-mario-brothers-in-javascript/</link>
      <pubDate>Fri, 21 Nov 2008 01:02:58 +0000</pubDate>
      <guid>/blog/2008/11/21/get-the-skinny-on-the-mario-brothers-in-javascript/</guid>
      <description>&lt;p&gt;Since I’m trying to milk the &lt;a href=&#34;/2008/04/09/swing-your-hands-from-side-to-side-how-to-abuse-javascript/&#34;&gt;Mario&lt;/a&gt; &lt;a href=&#34;/2008/09/14/abusing-javascript-for-fun-and-profit-redux/&#34;&gt;Brothers&lt;/a&gt; in &lt;a href=&#34;/2008/10/05/wa-web-awards-finalist/&#34;&gt;JavaScript&lt;/a&gt; thing for all it’s worth, I’d like to announce part two of my &lt;a href=&#34;http://www.sitepoint.com/article/javascript-fun-profit-part-2/&#34;&gt;SitePoint article&lt;/a&gt;, which gets into the juicy bits – collision engines and physics as well as side scrolling screens. Go forth, read and learn.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The need for speed</title>
      <link>/blog/2008/10/28/the-need-for-speed/</link>
      <pubDate>Tue, 28 Oct 2008 07:39:51 +0000</pubDate>
      <guid>/blog/2008/10/28/the-need-for-speed/</guid>
      <description>&lt;p&gt;If you are a DBA, and your reading this – look away now, because I’m pretty sure they covered this in Database Optimisation 101 and you WILL laugh at me having this revelation. 88 Miles hasn’t been the snappiest web application around lately thanks mainly to an influx of users (NOT that I’m complaining :P). I’d successfully added &lt;a href=&#34;/2008/09/13/a-room-with-a-view/&#34;&gt;some views&lt;/a&gt; to speed up some of the reporting recently, and I went through today and optimised a lot of code, but it still wasn’t as quick as I would have liked it (A page load in the main index page was taking on average 1.5 seconds – down from the 4 seconds pre-optimisations).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running Passenger on Joyent</title>
      <link>/blog/2008/10/25/running-passenger-on-joyent/</link>
      <pubDate>Sat, 25 Oct 2008 04:13:13 +0000</pubDate>
      <guid>/blog/2008/10/25/running-passenger-on-joyent/</guid>
      <description>&lt;p&gt;I’ve never been particularly happy with proxying Mongrel processes behind Apache – for one if makes it really hard to scale without using something like God (which adds yet ANOTHER process your website is dependent on) and having separate services means multiple points of failure.&lt;/p&gt;&#xA;&lt;p&gt;PHP has had mod_php which makes PHP a first class citizen in Apache land, and with the release of Passenger (aka mod_rails) a couple of months ago Rails can now get the same privileges. As most of my production Rails apps (both for me and my clients) run on Joyent, here is a quick recipe for setting up passenger on the newer pkg-src accelerators. You need to be root to do a lot of this, so it might be easiest to&lt;/p&gt;</description>
    </item>
    <item>
      <title>Interview: Marc Lehmann from Saasu.com</title>
      <link>/blog/2008/10/15/interview-marc-lehmann-from-saasu-com/</link>
      <pubDate>Wed, 15 Oct 2008 08:33:59 +0000</pubDate>
      <guid>/blog/2008/10/15/interview-marc-lehmann-from-saasu-com/</guid>
      <description>&lt;p&gt;You may or may not have heard about a &lt;a href=&#34;http://www.edgeoftheweb.org.au&#34; title=&#34;Edge of the Web - Perth 2008&#34;&gt;little conference&lt;/a&gt; we are putting on in a couple of weeks. We are particularly excited by the speakers that we have coming over. I was luckily enough to catch up with one of them: Marc Lehmann from Saasu.com for a quick chat about SaaS.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;&lt;strong&gt;ME:&lt;/strong&gt; Briefly explain what it is that your company does.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;ML:&lt;/strong&gt; Saasu provides secure and reliable online accounting software via the web so businesses can concentrate on financial success. In a practical sense you can create invoices, manage inventory, do the payroll and pay bills using a web browser in a synchronised way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why freelancers should go to conferences</title>
      <link>/blog/2008/10/09/why-freelancers-should-go-to-conferences/</link>
      <pubDate>Thu, 09 Oct 2008 03:17:00 +0000</pubDate>
      <guid>/blog/2008/10/09/why-freelancers-should-go-to-conferences/</guid>
      <description>&lt;p&gt;Let me take my Event coordinator hat off for just one moment, and replace it with my “Hey, I’m a freelancer – why should I fork our hundreds of dollars to go to a conference” hat (I have a lot of very specific hats). &lt;a href=&#34;http://www.milesburke.com.au&#34;&gt;Miles Burke&lt;/a&gt; recently wrote about why you &lt;a href=&#34;http://www.sitepoint.com/blogs/2008/09/23/why-you-should-attend-two-conferences-a-year/&#34;&gt;should attend two conferences every year&lt;/a&gt;, but what about you, my fellow freelancers, who have to watch the pennies? I personally think freelancers have the most to gain from attending conferences – think about it:&lt;/p&gt;</description>
    </item>
    <item>
      <title>WA Web Awards Finalist!</title>
      <link>/blog/2008/10/05/wa-web-awards-finalist/</link>
      <pubDate>Sun, 05 Oct 2008 11:43:32 +0000</pubDate>
      <guid>/blog/2008/10/05/wa-web-awards-finalist/</guid>
      <description>&lt;p&gt;Well, the finalists for 2008 &lt;a href=&#34;http://www.wawebawards.com.au&#34; title=&#34;WA Web Awards&#34;&gt;WA Web Awards&lt;/a&gt; have been announced and my silly little &lt;a href=&#34;/experiments/platform/&#34;&gt;Super Mario Brothers JavaScript experiment&lt;/a&gt; is in the running in the &lt;a href=&#34;http://www.wawebawards.com.au/judging/wa-web-awards-2008/&#34;&gt;Web Innovation category&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If you think that Mario Brothers is the awse, go and &lt;a href=&#34;https://app.wawebawards.com.au/peoples_choice/&#34;&gt;vote for it&lt;/a&gt; in the people’s choice award (You need OpenID). Apparently this blog got a highly commended too, which is kind of cool.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;http://www.edgeoftheweb.org.au&#34;&gt;Edge on the Web&lt;/a&gt; and the &lt;a href=&#34;http://www.wawebawards.com.au&#34;&gt;WA Web Awards&lt;/a&gt; are only one month away, which is rather exciting – you are going aren’t you?&lt;/p&gt;</description>
    </item>
    <item>
      <title>What I learnt at Web Directions South 08</title>
      <link>/blog/2008/09/29/what-i-learnt-at-web-directions-south-08/</link>
      <pubDate>Mon, 29 Sep 2008 03:17:20 +0000</pubDate>
      <guid>/blog/2008/09/29/what-i-learnt-at-web-directions-south-08/</guid>
      <description>&lt;p&gt;First off, thank to WA government for having the foresight for ignoring the actual birthday of the Queen and making today a public holiday – my couch has been-a callin’. So what has been happening over the past couple of days?&lt;/p&gt;&#xA;&lt;h3 id=&#34;day-0&#34;&gt;Day 0&lt;/h3&gt;&#xA;&lt;p&gt;After getting in early morning on the Wednesday, I toddled along to Stories for one of their famous egg and bacon rolls with &lt;a href=&#34;http://www.diversionary.net/daily/&#34;&gt;Simon&lt;/a&gt;, &lt;a href=&#34;http://log.lachstock.com.au&#34;&gt;Lachlan&lt;/a&gt; and &lt;a href=&#34;http://nickcowie.com&#34;&gt;Nick&lt;/a&gt;.  Oh how I’ve waited for that. I could have gone home at this point a happy man, but then there was work to do! Spending the day tweaking my presentation, next it was up to the Kirk for memories of last year (Yes, they still only have five pint glasses) and then on to &lt;a href=&#34;http://forums.port80.asn.au&#34;&gt;Port80&lt;/a&gt; Sydney: Wednesday edition. We had a fantastic turnout, with over 80 people – most of which were new faces. Big ups to &lt;a href=&#34;http://www.cleverstarfish.com.au&#34;&gt;Clever starfish&lt;/a&gt;, &lt;a href=&#34;http://www.radharc.com&#34;&gt;radharc&lt;/a&gt; and &lt;a href=&#34;http://www.saasu.com&#34;&gt;Saasu.com&lt;/a&gt; for throwing dollars on the bar. I’m seeing a definate pattern here in regards to free beer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Have a happy and safe conference season</title>
      <link>/blog/2008/09/20/have-a-happy-and-safe-conference-season/</link>
      <pubDate>Sat, 20 Sep 2008 02:44:10 +0000</pubDate>
      <guid>/blog/2008/09/20/have-a-happy-and-safe-conference-season/</guid>
      <description>&lt;p&gt;We are about to head into my favourite times of the year – Australian web conference season! Ausralia’s biggest web conference – &lt;a href=&#34;http://south08.webdirections.org/&#34;&gt;Web Directions South&lt;/a&gt; – is due to kick off on Thursday, and as usual the Perth Posse (sans &lt;a href=&#34;http://www.millstream.com.au&#34;&gt;Adrian and Rose&lt;/a&gt;) and heading over. There is even a few n00bs who have joined the clan, making for this years &lt;a href=&#34;http://forums.port80.asn.au/showthread.php?p=96793#post96793&#34;&gt;Port80 Sydney&lt;/a&gt; even bigger! As previously mentioned, I’m lucky enough to be speaking on OpenID, OAuth and Webservices on Friday. Not to mention always amazing &lt;a href=&#34;http://www.webjam.com.au&#34;&gt;WebJam 8&lt;/a&gt; on Thursday night (Unfortunately a lack of rips in the time-space continuum has stopped me from presenting in that this year – I petition for a 30 hour day – whos with me?) and the always crazy post-conference drinks on the Friday. Let the games begin.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Abusing JavaScript for fun and profit: Redux</title>
      <link>/blog/2008/09/14/abusing-javascript-for-fun-and-profit-redux/</link>
      <pubDate>Sun, 14 Sep 2008 01:46:55 +0000</pubDate>
      <guid>/blog/2008/09/14/abusing-javascript-for-fun-and-profit-redux/</guid>
      <description>&lt;p&gt;The fine lads at &lt;a href=&#34;http://www.sitepoint.com&#34;&gt;Sitepoint&lt;/a&gt; have just just notified me that part I of my article outlining my &lt;a href=&#34;/experiments/platform/&#34;&gt;JavaScript Mario Brothers&lt;/a&gt; game is up on the &lt;a href=&#34;http://www.sitepoint.com/article/javascript-fun-profit-part-1/&#34;&gt;front page&lt;/a&gt;. This part goes through the JavaScript and CSS techniques I used – it’s a bit theoretical, but if you are a frontend developer and want to get a better understanding of how to use JavaScript classes, go and check it out.&lt;/p&gt;&#xA;&lt;p&gt;The next part will get into some game&lt;/p&gt;</description>
    </item>
    <item>
      <title>A room with a view</title>
      <link>/blog/2008/09/13/a-room-with-a-view/</link>
      <pubDate>Sat, 13 Sep 2008 14:12:04 +0000</pubDate>
      <guid>/blog/2008/09/13/a-room-with-a-view/</guid>
      <description>&lt;p&gt;Whilst not being one to make gross generalisations (heh!) I like to think there are two schools thoughts on databases – those that use “extended” features such as triggers, views and temporary tables, and those that don’t. I, for one fall firmly in the latter – usually.&lt;/p&gt;&#xA;&lt;p&gt;However over the past few days a major project that I’ve been working on brought forth a requirement for some hardcore reporting. Due to the database structure that was required (there was a lot of dynamic fields and association tables) doing it in ActiveRecord was near impossible – in fact, doing it in native SQL was equally painful.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubiquity: Three types of awesome</title>
      <link>/blog/2008/08/30/ubiquity-three-types-of-awesome/</link>
      <pubDate>Sat, 30 Aug 2008 02:35:22 +0000</pubDate>
      <guid>/blog/2008/08/30/ubiquity-three-types-of-awesome/</guid>
      <description>&lt;p&gt;A couple of days ago, Mozilla labs released &lt;a href=&#34;http://labs.mozilla.com/2008/08/introducing-ubiquity/&#34;&gt;Ubiquity 0.1&lt;/a&gt;, which is a browser-based natural language command helper. Sounds geeky – and it is, but oh-so hot. Basically it’s a Firefox plugin that allows you to perform actions and pull information from services without leaving the screen you are in. If a picture tells a thousand words, a video tells a thousand pictures (That’s 1000000 words according to the ubiquity &lt;em&gt;calc&lt;/em&gt; command).&lt;/p&gt;</description>
    </item>
    <item>
      <title>The new office</title>
      <link>/blog/2008/08/21/the-new-office/</link>
      <pubDate>Thu, 21 Aug 2008 00:54:02 +0000</pubDate>
      <guid>/blog/2008/08/21/the-new-office/</guid>
      <description>&lt;p&gt;When the Beachhouse closed a couple of months ago, I was back to working from home – which was fine. For a while. As much as our cat was keeping me company, it wasn’t really that good at pair programming, as it’s pads kept getting stuck on the keys, so I got off my arse and did what any other self respecting wog would do – asked my uncles (who are real estate agents) if they had any offices available – and they did – in the same building they were in! So just when you though one Eftos was enough, there is now three (sometimes four depending if my Dedo is in).&lt;/p&gt;</description>
    </item>
    <item>
      <title>I took the A List Apart Survey</title>
      <link>/blog/2008/07/30/i-took-the-a-list-apart-survey/</link>
      <pubDate>Wed, 30 Jul 2008 14:55:50 +0000</pubDate>
      <guid>/blog/2008/07/30/i-took-the-a-list-apart-survey/</guid>
      <description>&lt;p&gt;As is now becoming a tradition (can twice be a tradition?) I took the &lt;a href=&#34;http://alistapart.com/articles/survey2008&#34;&gt;A List Apart survey for people who make websites&lt;/a&gt;. I see &lt;a href=&#34;http://twitter.com/meyerweb&#34;&gt;Eric Meyer&lt;/a&gt; tweeted that 11,000 people had filled it in just as I was filling it in. Not a bad effort for a couple of days :)&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/2008/07/30/i-took-the-a-list-apart-survey/i-took-the-survey/&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2008/07/i-took-the-2008-survey.gif&#34; alt=&#34;I took the Survey&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Speaker Program and Workshops are now available</title>
      <link>/blog/2008/07/30/speaker-program-and-workshops-are-now-available/</link>
      <pubDate>Wed, 30 Jul 2008 05:26:45 +0000</pubDate>
      <guid>/blog/2008/07/30/speaker-program-and-workshops-are-now-available/</guid>
      <description>&lt;p&gt;We are now three months out from Perth’s first ever &lt;a href=&#34;http://www.edgeoftheweb.org.au&#34;&gt;Edge of the Web Conference&lt;/a&gt;, so what better time is there is announce the speaker program and workshops! There is come awesome topics there, and I’m really excited about the whole thing! &lt;a href=&#34;http://www.edgeoftheweb.org.au/program&#34;&gt;Get the skinny here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;There is also now only a week and a half before entries for the &lt;a href=&#34;http://www.wawebawards.com.au&#34;&gt;WA Web Awards&lt;/a&gt; close, so if you are thinking of entering, hurry the hell up!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Edge of the Web and WA Web Awards tickets are onsale now!</title>
      <link>/blog/2008/07/18/edge-of-the-web-and-wa-web-awards-tickets-are-onsale-now/</link>
      <pubDate>Fri, 18 Jul 2008 04:55:55 +0000</pubDate>
      <guid>/blog/2008/07/18/edge-of-the-web-and-wa-web-awards-tickets-are-onsale-now/</guid>
      <description>&lt;p&gt;Just a quick public service announcment – if you have been waiting to purchase your tickets to the &lt;a href=&#34;http://www.edgeoftheweb.org.au&#34;&gt;Edge of the Web&lt;/a&gt; and &lt;a href=&#34;http://www.wawebawards.com.au&#34;&gt;WA Web Awards&lt;/a&gt; (November 6-7 at University Club in Crawley) then wait no longer! You can now head over and &lt;a href=&#34;https://app.edgeoftheweb.org.au&#34;&gt;register online&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ticket prices are a reasonable:&lt;/p&gt;&#xA;&lt;p&gt;Non Member: $495 (Early bird before Sept 1: $450)&lt;/p&gt;&#xA;&lt;p&gt;Member: $450 (Early bird before Sept 1: $395)&lt;/p&gt;&#xA;&lt;p&gt;Student: $299&lt;/p&gt;&#xA;&lt;p&gt;Workshops (to be announced soon):&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Original Social Network…</title>
      <link>/blog/2008/07/17/the-original-social-network/</link>
      <pubDate>Wed, 16 Jul 2008 16:06:13 +0000</pubDate>
      <guid>/blog/2008/07/17/the-original-social-network/</guid>
      <description>&lt;p&gt;I just gave this presentation to the &lt;a href=&#34;http://www.pria.com.au/state/cid/46/parent/0/t/state&#34;&gt;PRIA Young Guns&lt;/a&gt; –  a group for younf marketing and PR people, along with &lt;a href=&#34;http://justindavies.com.au/&#34;&gt;Justin Davies&lt;/a&gt; and Ronnie Duncan (from Meerkats – sorry, haven’t got a link).&lt;/p&gt;&#xA;&lt;p&gt;As you all well know, I’m very much from the technical side of the web, and have been known to be a little critical of some of the more, let’s say, marketing focused people, so the focus of my talk was to show that social networking isn’t all about selling, it’s about interaction. At the end of the day, online social networks should be an extension (not a replacement) for &lt;a href=&#34;http://http://www.theoriginalsocialnetwork.com/&#34;&gt;real-life networks&lt;/a&gt; and should be treated as such. In real life, if you only call on friends when you want a favour, you aren’t going to have any friends left – and the same applied to online social networks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JoikuSpot premium edition released</title>
      <link>/blog/2008/07/09/joikuspot-premium-edition-released/</link>
      <pubDate>Wed, 09 Jul 2008 14:34:38 +0000</pubDate>
      <guid>/blog/2008/07/09/joikuspot-premium-edition-released/</guid>
      <description>&lt;p&gt;A couple of days ago, &lt;a href=&#34;http://www.joiku.com/&#34;&gt;Joiku&lt;/a&gt; released the premium edition of their WiFi access software for Sybian phones: &lt;a href=&#34;http://www.joiku.com/shop/index.php?action=products&amp;amp;mode=productDetails&amp;amp;product_id=33&#34;&gt;JoikuSpot&lt;/a&gt;. I’ve &lt;a href=&#34;/2008/04/10/getting-joikuspot-to-play-nice-with-the-eeepc/&#34;&gt;blogged about JoikuSpot before&lt;/a&gt;, and now for 15€ you can get the premium edition, which NATs mail, Skype, SSH, HTTPS and number of other protocols. They also seemed to have fixed the issue which stopped the EeePC using DHCP. This is really awesome – I can finally leave that USB cable at home. Let’s see your beloved iPhone do that!&lt;/p&gt;</description>
    </item>
    <item>
      <title>A recipe for server migration</title>
      <link>/blog/2008/07/09/a-recipe-for-server-migration/</link>
      <pubDate>Wed, 09 Jul 2008 06:59:43 +0000</pubDate>
      <guid>/blog/2008/07/09/a-recipe-for-server-migration/</guid>
      <description>&lt;p&gt;As any website grows, we often find ourselves having to move servers to deal with capacity, or better prices or whatever. This can be a right pain to do, but with a little planning and a few tricks, you can make the process somewhat smoother. In this quick howto, I’ll cover how to move a typical web setup: Web server, DNS, Mail and database. Of course there are more than one way to skin a cat, but this method works quite well if you have a couple of days up your sleeve and has the advantage of only costing you a few minutes in downtime. In this example, we will pretend to move &lt;a href=&#34;http://www.mycoolwebapp.com&#34;&gt;http://www.mycoolwebapp.com&lt;/a&gt; from the IP address 192.168.0.1 to the new IP address of 10.0.0.1 (Fake web host, and fake, local IP addresses – substitute with real values).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Proposal: An open inter-conversation microblogging protocol</title>
      <link>/blog/2008/07/06/proposal-an-open-inter-conversation-microblogging-protocol/</link>
      <pubDate>Sun, 06 Jul 2008 07:58:43 +0000</pubDate>
      <guid>/blog/2008/07/06/proposal-an-open-inter-conversation-microblogging-protocol/</guid>
      <description>&lt;p&gt;Spurred on by &lt;a href=&#34;http://manwithnoblog.com/2008/07/05/social-networking-via-shotgun/&#34;&gt;Gary’s discussion on the number of micro-blogging sites&lt;/a&gt; around, the “Is it Distributed?” question made we wonder if we are going about this wrong. Cameron Adams was right when he said &lt;a href=&#34;http://www.themaninblue.com/writing/perspective/2007/09/03/&#34;&gt;there is only one social network&lt;/a&gt;, so why are we flicking between a large number of them? Why aren’t we running out own?&lt;/p&gt;&#xA;&lt;p&gt;Beyond a number of small superficial differences they all do the same thing – you add friends, post what your doing (usually in an arbitrary 140 characters or less) and read what others are doing. There really is no reason why this can’t be truly distributed, i.e. I can run my own micro-blogging site, and all my friends can run their own micro-blogging sites – all that is needed is some glue (a communication protocol) to bring it all together. The great thing about this, is we already have systems to make this happen – get your buzz-word bingo cards out people…&lt;/p&gt;</description>
    </item>
    <item>
      <title>One lost laptop: Returned</title>
      <link>/blog/2008/07/03/one-lost-laptop-returned/</link>
      <pubDate>Thu, 03 Jul 2008 00:12:11 +0000</pubDate>
      <guid>/blog/2008/07/03/one-lost-laptop-returned/</guid>
      <description>&lt;p&gt;Yesterday, whilst being distracted by a phone call as I got in to me car, I did what we all dread doing – I left my EeePC on the top of my car as I drove away. I noticed that something was a miss a few streets away from me house, and promptly (after having that sinking feeling) re-traced my tracks to see if I could see it. But I couldn’t. After all of the stages of grief: Denial (Surely, I couldn’t be so stupid), Anger (Godammit!), Bargining (Maybe if I drive around again…), Depression (Why me!!!) and Acceptance (Well, maybe I can justify that 9″ version now) I got a phone call from Justin Gill at Perth college. One of the students there had founded on the side of the road and handed it in.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use CSS to speed your unobtrusive JavaScript</title>
      <link>/blog/2008/07/01/use-css-to-speed-your-unobtrusive-javascript/</link>
      <pubDate>Tue, 01 Jul 2008 11:59:36 +0000</pubDate>
      <guid>/blog/2008/07/01/use-css-to-speed-your-unobtrusive-javascript/</guid>
      <description>&lt;p&gt;Unobtrusive JavaScript does for JavaScript what CSS did for HTML design. Separating the design and business logic client side means better re-use and compatibility.&lt;/p&gt;&#xA;&lt;p&gt;To make a truly unobtrusive site, you should start with a base, non-JavaScript version of the site, and then add functionality dynamically. One of the issues with this is quite often you are left with elements that are required for HTML-only functions, but not for the JS version. Obviously, it’s easy to traverse the DOM tree and hide elements that not required like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>88 Miles in the Business Review Weekly’s top 100 Australian Web 2.0 Applications</title>
      <link>/blog/2008/06/19/88-miles-in-the-business-review-weeklys-top-100-australian-web-20-applications/</link>
      <pubDate>Thu, 19 Jun 2008 10:31:03 +0000</pubDate>
      <guid>/blog/2008/06/19/88-miles-in-the-business-review-weeklys-top-100-australian-web-20-applications/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.brw.com.au&#34;&gt;Business Review Weekly&lt;/a&gt; released it’s list of top 100 Australian web 2.0 lists today and &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple time tracking&#34;&gt;88 Miles&lt;/a&gt; came in at number 58!&lt;/p&gt;&#xA;&lt;p&gt;There are some pretty cool apps on the list, including big players like &lt;a href=&#34;http://www.atlassian&#34;&gt;Atlassian&lt;/a&gt; and of course our good friends &lt;a href=&#34;http://www.saasu.com&#34;&gt;Saasu.com&lt;/a&gt;, &lt;a href=&#34;http://www.scouta.com&#34;&gt;Scouta&lt;/a&gt; and &lt;a href=&#34;http://www.norg.com.au&#34;&gt;Norg Media&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Rounding up the Perth list we have &lt;a href=&#34;http://www.thebroth.com&#34;&gt;The broth&lt;/a&gt;, &lt;a href=&#34;http://www.minti.com&#34;&gt;Minit&lt;/a&gt;, &lt;a href=&#34;http://www.buzka.com&#34;&gt;Buzka&lt;/a&gt;, &lt;a href=&#34;http://www.gooruze.com&#34;&gt;Gooruze&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Congratulations to everyone who made the list!&lt;/p&gt;&#xA;&lt;p&gt;An online version of the list can be seen &lt;a href=&#34;http://rossdawsonblog.com/weblog/archives/2008/06/official_launch.html&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordle Meme – Crazy text clouds</title>
      <link>/blog/2008/06/16/wordle-meme-crazy-text-clouds/</link>
      <pubDate>Mon, 16 Jun 2008 14:37:27 +0000</pubDate>
      <guid>/blog/2008/06/16/wordle-meme-crazy-text-clouds/</guid>
      <description>&lt;p&gt;To draw you all away from the fact that I’ve been lax in posting this month, here is some graphical distractions. The Wordle meme is simple: Cut and paste the copy from you blog or website, go to &lt;a href=&#34;http://wordle.net/&#34;&gt;Wordle&lt;/a&gt; and it generates a crazy text cloud. Don’t let the Java Applet get you down to much. Mine is here:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://wordle.net/gallery/Bloggy_Hell&#34; title=&#34;Wordle: Bloggy Hell&#34;&gt;&lt;!-- raw HTML omitted --&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>MadPilot’s new(ish) phone number</title>
      <link>/blog/2008/06/07/madpilots-newish-phone-number/</link>
      <pubDate>Fri, 06 Jun 2008 16:31:40 +0000</pubDate>
      <guid>/blog/2008/06/07/madpilots-newish-phone-number/</guid>
      <description>&lt;p&gt;Now that I’ve relocated back into my home office, I’ve decided to revert back to my old VoIP number: &lt;strong&gt;+61-8-6424-8234&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Although &lt;a href=&#34;http://www.skype.com&#34;&gt;Skype&lt;/a&gt; was doing a perfectly good job at taking and making phone calls, the NetGear &lt;a href=&#34;http://www.amazon.com/Netgear-SPH101-Skype-Wi-Fi-Phone/dp/B000F76W78&#34;&gt;SPH101 Skype phone&lt;/a&gt; wasn’t really up to the task (the battery life isn’t that great and the call quality can leave a little to be desired) and I’ve got a perfectly good VoIP phone sitting here, which has much better voice clarity. (Oh, it it means my business cards will be correct now too!)&lt;/p&gt;</description>
    </item>
    <item>
      <title>For the safety of the swimmers…</title>
      <link>/blog/2008/05/29/for-the-safety-of-the-swimmers/</link>
      <pubDate>Thu, 29 May 2008 09:46:03 +0000</pubDate>
      <guid>/blog/2008/05/29/for-the-safety-of-the-swimmers/</guid>
      <description>&lt;p&gt;For the past twelve months, I’ve been a house mate at the Silicon Beach House – the collaborative, shared office space in the Perth CBD. Having seen a number of arrivals and departures over the past year, it will see it final set of departures, as it closes and gets turned into a resort (Ok, some other company is taking over the lease, but I started this metaphor, and I’m going to finish with it god damn it).&lt;/p&gt;</description>
    </item>
    <item>
      <title>See me speak at Web Directions South ‘08!</title>
      <link>/blog/2008/05/28/see-me-speak-at-web-directions-south-08/</link>
      <pubDate>Wed, 28 May 2008 15:14:34 +0000</pubDate>
      <guid>/blog/2008/05/28/see-me-speak-at-web-directions-south-08/</guid>
      <description>&lt;p&gt;I got asked to talk at &lt;a href=&#34;http://south08.webdirections.org&#34;&gt;Web Directions South 08&lt;/a&gt; a couple of months ago, but it was one of those “I won’t believe it until I see it in HTML” kind of moments. Well, John and Maxine just announced the &lt;a href=&#34;http://south08.webdirections.org/?page_id=7&#34;&gt;speaker list&lt;/a&gt; for this year, and guess what – I’m on it!&lt;/p&gt;&#xA;&lt;p&gt;I’ll be speaking about web service APIs, OpenID and OAuth in a presentation imaginately entitled “Web APIs, Oauth and OpenID: A developer’s guide”.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A stark realisation</title>
      <link>/blog/2008/05/27/a-stark-realisation/</link>
      <pubDate>Mon, 26 May 2008 16:47:13 +0000</pubDate>
      <guid>/blog/2008/05/27/a-stark-realisation/</guid>
      <description>&lt;p&gt;There comes a moment in every career where you realise that there is a whole world outside of what you do. Sure, you don’t have to have three PhDs to figure out the world of macrame is significantly different to Ruby on Rails hacking, but when was the last time you thought about process in, say banking software development? Or had a look at what is going on in the world of Operating System code? To an outsider, these are related industries – they both involve sitting in front a grey box for hours on end banging gibberish on to keys with embossed letters that are out of order, but to us, they are worlds apart.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A multi-touch pad of my very own</title>
      <link>/blog/2008/05/22/a-multi-touch-pad-of-my-very-own/</link>
      <pubDate>Thu, 22 May 2008 14:36:27 +0000</pubDate>
      <guid>/blog/2008/05/22/a-multi-touch-pad-of-my-very-own/</guid>
      <description>&lt;p&gt;I simply had to have one. As I previously posted, the ever so clever guy from &lt;a href=&#34;http://ssandler.wordpress.com/MTmini/&#34;&gt;http://ssandler.wordpress.com/MTmini/&lt;/a&gt; posted instructions for making your own multi-touch (think Microsoft Surface or iPod Touch) pad. So what can any self-respecting geek do, other than to build one? Here is what I did.&lt;/p&gt;&#xA;&lt;p&gt;Being the impatient kind of guy that I am, I didn’t want to have to buy anything to complete the build (I had to wait unit after work, and the shops were closed), so I did a little substitution with stuff you might find around your house. The ingredients:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multi-touch screen for under $50</title>
      <link>/blog/2008/05/22/multi-touch-screen-for-under-50/</link>
      <pubDate>Thu, 22 May 2008 02:14:10 +0000</pubDate>
      <guid>/blog/2008/05/22/multi-touch-screen-for-under-50/</guid>
      <description>&lt;p&gt;This is why I love the intarwebs. I have found a project for this weekend. (Go to &lt;a href=&#34;http://ssandler.wordpress.com/MTmini/&#34;&gt;http://ssandler.wordpress.com/MTmini/&lt;/a&gt; to get the skinny.)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Working with branches in Subversion</title>
      <link>/blog/2008/05/21/working-with-branches-in-subversion/</link>
      <pubDate>Wed, 21 May 2008 12:08:47 +0000</pubDate>
      <guid>/blog/2008/05/21/working-with-branches-in-subversion/</guid>
      <description>&lt;p&gt;I know that &lt;a href=&#34;http://git.or.cz/&#34;&gt;Git&lt;/a&gt; is the flavour of the month in regards to version control at the moment, but I still use &lt;a href=&#34;http://subversion.tigris.org/&#34;&gt;Subversion&lt;/a&gt; (SVN) for my day-to-day version control needs. And since it is still very popular, I think this quick tutorial still has it’s place. Today, I was asked by a client to show them how to branch a SVN repository so they could start making some major changes to their application with out running the risk of breaking the release version.&lt;/p&gt;</description>
    </item>
    <item>
      <title>BarCamp Perth 2.0 – We came, we saw, we caught bird flu</title>
      <link>/blog/2008/05/12/barcamp-perth-20-we-came-we-saw-we-caught-bird-flu/</link>
      <pubDate>Mon, 12 May 2008 14:32:27 +0000</pubDate>
      <guid>/blog/2008/05/12/barcamp-perth-20-we-came-we-saw-we-caught-bird-flu/</guid>
      <description>&lt;p&gt;Put 80-odd  geeks in a room and magic happens, which is what happened on Saturday at &lt;a href=&#34;http://barcamp.port80.asn.au&#34;&gt;BarCamp 2.0, Perth&lt;/a&gt;. It was a fantastic turn out – we even got a couple of east coasters (Thanks &lt;a href=&#34;http://saasu.com&#34; title=&#34;The Web finance engine&#34;&gt;@marclehmann&lt;/a&gt; and &lt;a href=&#34;http://liako.biz/&#34;&gt;@liako&lt;/a&gt;) to enjoy the frivolities. Although, due to me running around like a blowfly with it’s head cut off, I still manged to get a couple of great presentations, which could lead to some seriously cool ideas which is all you can ask from a BarCamp.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Silicon Breach – who says Web 2.0 is a game…</title>
      <link>/blog/2008/05/08/silicon-breach-who-says-web-20-is-a-game/</link>
      <pubDate>Thu, 08 May 2008 06:51:44 +0000</pubDate>
      <guid>/blog/2008/05/08/silicon-breach-who-says-web-20-is-a-game/</guid>
      <description>&lt;p&gt;BarCamp Perth is but two days away, and we have nearly 90 participants, it is going to be huge. There is also something a little special that is going to make it even bigger, courtesy of Giant Dice, everyone’s favourite local pervasive gaming studio.&lt;/p&gt;&#xA;&lt;p&gt;Introducing &lt;a href=&#34;http://www.siliconbreach.com/&#34;&gt;Silicon Breach&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;In Silicon Breach, three Web 2.0 startups compete for venture capital by circulating ideas. When an idea is shared within a company, it’s good. :) When an idea is stolen by another company, it’s bad. :(&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ask Myles-i the web guy…</title>
      <link>/blog/2008/04/24/ask-myles-i-the-web-guy/</link>
      <pubDate>Thu, 24 Apr 2008 13:58:21 +0000</pubDate>
      <guid>/blog/2008/04/24/ask-myles-i-the-web-guy/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;/2008/04/14/barcamp-perth-ii/&#34;&gt;As previously mentioned&lt;/a&gt;, Perth is having it’s second BarCamp, and in true unconference style, I’m not going to organise a talk – you are going to do it for me.&lt;/p&gt;&#xA;&lt;p&gt;I’m running a Q&amp;amp;A, on all things web, so if you have a burning question about PHP, Rails, JavaScript, CSS, Apache, whatever – save then up for Saturday the 10th of May, and see if you can stump me :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bash history – a geek meme</title>
      <link>/blog/2008/04/18/bash-history-a-geek-meme/</link>
      <pubDate>Fri, 18 Apr 2008 13:49:08 +0000</pubDate>
      <guid>/blog/2008/04/18/bash-history-a-geek-meme/</guid>
      <description>&lt;p&gt;I was browsing through some ruby blogs and came across this crazy &lt;a href=&#34;http://diveintomark.org/archives/2008/04/15/history-meme&#34;&gt;meme&lt;/a&gt; – &lt;a href=&#34;http://www.postal-code.com/binarycode/2008/04/16/history-meme/&#34;&gt;shell&lt;/a&gt; &lt;a href=&#34;http://textism.com/2008/04/16/no.one.tagged.me&#34;&gt;command&lt;/a&gt; &lt;a href=&#34;http://perlbuzz.com/mechanix/2008/04/what-commands-do-you-run.html&#34;&gt;history&lt;/a&gt; &lt;a href=&#34;http://www.benmabey.com/2008/04/17/sure-why-not-my-bash-history/&#34;&gt;distributions&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;By running the following command in bash (zsh needs a -n 1000 after history apparently)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;history|awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{a[$2]++} END{for(i in a){printf &amp;#34;%5d\t%s \n&amp;#34;,a[i],i}}&amp;#39;&lt;/span&gt;|sort -rn|head&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and you’ll get the top ten most used shell commands. Mine are:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;259&lt;/span&gt; ENV&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;test  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;45&lt;/span&gt; cd  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;36&lt;/span&gt; vi  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;36&lt;/span&gt; ls  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;34&lt;/span&gt; svn  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; script/spec  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt; rake  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt; fg  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt; cap  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; script/generate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I’ve obviously been doing a lot of testing on a project I’m working on (Alas, it’s PHP). Most of the other calls are pretty rails centric though :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>BarCamp Perth II</title>
      <link>/blog/2008/04/14/barcamp-perth-ii/</link>
      <pubDate>Mon, 14 Apr 2008 15:10:57 +0000</pubDate>
      <guid>/blog/2008/04/14/barcamp-perth-ii/</guid>
      <description>&lt;p&gt;That’s right folks is time for some unconference goodness in the West – pencil (nay, ink) in 10 May 2008 for the second Perth BarCamp!&lt;/p&gt;&#xA;&lt;p&gt;Go an check out the &lt;a href=&#34;http://barcamp.port80.asn.au/Main/BarCamp2&#34;&gt;wiki for all the details&lt;/a&gt;, sign up to the newsletter and buy a t-shirt.&lt;/p&gt;&#xA;&lt;p&gt;Oh, and if you think you might be interested in sponsoring this year’s BarCamp, send an email to &lt;a href=&#34;mailto:events@webindustry.asn.au&#34;&gt;events@webindustry.asn.au &lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>The next generation of web professionals</title>
      <link>/blog/2008/04/13/the-next-generation-of-web-professionals/</link>
      <pubDate>Sun, 13 Apr 2008 14:11:54 +0000</pubDate>
      <guid>/blog/2008/04/13/the-next-generation-of-web-professionals/</guid>
      <description>&lt;p&gt;Being an active member of the local web community, I’m often speaking to students at Port80 meetups, about the best way of getting work, and it isn’t an easy question to answer – and it seems that I’m not the only one – both &lt;a href=&#34;http://alexandragraham.com/2008/04/apprenticeship-or-degree/&#34;&gt;Alex&lt;/a&gt; and &lt;a href=&#34;http://manwithnoblog.com/2008/04/13/internship-apprenticeship/&#34;&gt;Gary&lt;/a&gt; have recently blogged about apprenticeships, graduate programmes and internships.&lt;/p&gt;&#xA;&lt;p&gt;The problem we seem to have at the moment, in Perth anyway, is the number of companies large enough to be able to take on interns and run graduate programmes is pretty small. I’ve seen this in the software industry – I remember vividly the last 6 weeks of final year, where every soon-to-be graduate was sending resumes to the big three software companies that ran graduate programmes – the numbers didn’t add up as there was many more applications, than positions. Of course, there is more than three software companies here – however many of them looked for people with some industry experience.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby on Rails Meetup Perth Reloaded</title>
      <link>/blog/2008/04/11/ruby-on-rails-meetup-perth-reloaded/</link>
      <pubDate>Fri, 11 Apr 2008 07:27:27 +0000</pubDate>
      <guid>/blog/2008/04/11/ruby-on-rails-meetup-perth-reloaded/</guid>
      <description>&lt;p&gt;Time for the second installment of Ruby on Rails Oceania – Perth Edition.&lt;/p&gt;&#xA;&lt;p&gt;It’s once again at the Silicon Beach House:&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;I think we should have some presentations this month, so bring you laptop and your speaking shoes. Oh, and if someone wants to put their hand up to buy a carton, that would be much appreciated.&lt;/p&gt;&#xA;&lt;p&gt;See you then.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting JoikuSpot to play nice with the EeePC</title>
      <link>/blog/2008/04/10/getting-joikuspot-to-play-nice-with-the-eeepc/</link>
      <pubDate>Thu, 10 Apr 2008 15:17:46 +0000</pubDate>
      <guid>/blog/2008/04/10/getting-joikuspot-to-play-nice-with-the-eeepc/</guid>
      <description>&lt;p&gt;The EeePC is such a sweet little laptop, and it’s really handy when you are on the road, in a meeting or on the train – however being sans network can be pretty limiting. Now, I’ve got a Nokia N95 8Gb on Three, so I have a delicious 1Gb of traffic to burn each month. If only I could connect one to another…&lt;/p&gt;&#xA;&lt;p&gt;I first tried with Bluetooth, but no dice – besides the obvious issue of the EeePC not having bluetooth, even with a dongle I couldn’t get a network connection. They chatted, but they couldn’t connect on that meta level that can push 1’s and 0’s around.  Besides, bluetooth is slow, I could probably only get 50% of my mobile broadband speed. FAIL.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Swing your hands from side to side – how to abuse JavaScript</title>
      <link>/blog/2008/04/09/swing-your-hands-from-side-to-side-how-to-abuse-javascript/</link>
      <pubDate>Wed, 09 Apr 2008 06:55:48 +0000</pubDate>
      <guid>/blog/2008/04/09/swing-your-hands-from-side-to-side-how-to-abuse-javascript/</guid>
      <description>&lt;p&gt;What is a developer to do with all of that spare time between 1am and 3am? Write a JavaScript platform game of course!  I’ve been sitting on this for the last couple of months, waiting for a good time to release it, but as this guy just released his (freaking awesome) &lt;a href=&#34;http://blog.nihilogic.dk/2008/04/super-mario-in-14kb-javascript.html&#34;&gt;canvas element version&lt;/a&gt;, I didn’t want to be out done. So as a proof of concept of how far you can push semantic HTML, CSS and JavaScript, I present to you: &lt;a href=&#34;/test/platform/&#34;&gt;JavaScript Mario Brothers&lt;/a&gt;!&lt;/p&gt;</description>
    </item>
    <item>
      <title>It’s a one fine day to be nude…</title>
      <link>/blog/2008/04/08/its-a-one-fine-day-to-be-nude/</link>
      <pubDate>Tue, 08 Apr 2008 14:54:46 +0000</pubDate>
      <guid>/blog/2008/04/08/its-a-one-fine-day-to-be-nude/</guid>
      <description>&lt;p&gt;Hey Myles! Your site’s broken! Au contraire my good friend! Today is &lt;a href=&#34;http://naked.dustindiaz.com&#34; title=&#34;Web Standards Naked Day Host Website&#34;&gt;CSS naked day&lt;/a&gt; – a day to celebrate standards based web. Best practice says that a site should still be usable without all of the eye-candy, so today is the day to put you money where your mouth is (I hope you know where it’s been) and show your site in all of it’s nekkid glory.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A bit SUYS</title>
      <link>/blog/2008/04/02/a-bit-suys/</link>
      <pubDate>Wed, 02 Apr 2008 15:06:25 +0000</pubDate>
      <guid>/blog/2008/04/02/a-bit-suys/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;http://forums.port80.asn.au&#34;&gt;Port80&lt;/a&gt; mini-talks have been really successful – there are lots of people that get very upset when we don’t have them. Unfortunately, it has been a bit difficult to find two speakers each month, so we are introducing a new component: Show us your Stuff (SUYS).&lt;/p&gt;&#xA;&lt;p&gt;It is an opportunity to get up and show us something cool – maybe a new discovery or a new website for live feedback. You don’t need slides, or even any preparation – it’s basically a geek open-mic. We’ll try to keep it capped at 10 minutes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>You can’t do that on Twitter</title>
      <link>/blog/2008/04/02/you-cant-do-that-on-twitter/</link>
      <pubDate>Tue, 01 Apr 2008 16:21:24 +0000</pubDate>
      <guid>/blog/2008/04/02/you-cant-do-that-on-twitter/</guid>
      <description>&lt;p&gt;Ok, I &lt;strong&gt;REALLY&lt;/strong&gt; have to stop coming up with hare-brained ideas, and then listening to others when they convince me to implement them.&lt;/p&gt;&#xA;&lt;p&gt;Spurred on my &lt;a href=&#34;http://twitter.com/cybner&#34;&gt;@cybner&lt;/a&gt;‘s new &lt;a href=&#34;http://www.ycdtotv.com/&#34;&gt;avatar&lt;/a&gt;, I thought it would be cool if you could slime people in Twitter if the say “I don’t know”.&lt;/p&gt;&#xA;&lt;p&gt;So after a couple of hours of ruby hacking, I came up with: &lt;a href=&#34;/test/you_cant_do_that_on_twitter/madpilot/with_friends&#34;&gt;You can’t do that on twitter&lt;/a&gt;. Eveytime someone says the magic words, you should see their avatar get slimed! You can even try the &lt;a href=&#34;/test/you_cant_do_that_on_twitter/public_timeline&#34;&gt;public timeline&lt;/a&gt; or your own timeline (&lt;a href=&#34;/test/you_cant_do_that_on_twitter/madpilot/with_friends&#34;&gt;Click here&lt;/a&gt; and and change madpilot in the url to your username). Note though, that because this isn’t authenticated, your timeline will need to be public for it to work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Does your business have a godparent?</title>
      <link>/blog/2008/03/31/does-your-business-have-a-godparent/</link>
      <pubDate>Mon, 31 Mar 2008 15:45:28 +0000</pubDate>
      <guid>/blog/2008/03/31/does-your-business-have-a-godparent/</guid>
      <description>&lt;p&gt;I’m not sure how well this metaphor is going to extend outside of people from Christan or Jewish backgrounds, but I can’t think of a decent non-denominational analogue, so bear with me.&lt;/p&gt;&#xA;&lt;p&gt;As has been the tradition for many, many years, when a child is baptised, the parents select &lt;a href=&#34;http://en.wikipedia.org/wiki/Godparent&#34;&gt;Godparents&lt;/a&gt;. Now originally, it was the Godparents responsibility to ensure the childs religious well-being – however, I (perhaps under some childish misconception) always thought of them as the next in line for guardianship if my folks died or disowned me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Silicon Beach House: We need more housemates!!!</title>
      <link>/blog/2008/03/29/silicon-beach-house-we-need-more-housemates/</link>
      <pubDate>Sat, 29 Mar 2008 03:52:02 +0000</pubDate>
      <guid>/blog/2008/03/29/silicon-beach-house-we-need-more-housemates/</guid>
      <description>&lt;p&gt;&lt;strong&gt;WANTED:&lt;/strong&gt; Freelancers, startups, consultants or small businesses who need some office space.&lt;/p&gt;&#xA;&lt;p&gt;If you are a small business, freelancer, consultant or a startup and you have out grown your back room but can’t quite afford a swish office of your own, the &lt;a href=&#34;http://www.siliconbeachhouse.com/map&#34;&gt;Silicon Beach house&lt;/a&gt; could be just what you need! Even though we seem to have attracted a number of developers and graphic designers, we are open to any body who is desk-bound by day.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why do open source web apps suck?</title>
      <link>/blog/2008/03/20/why-do-open-source-web-apps-suck/</link>
      <pubDate>Thu, 20 Mar 2008 10:54:13 +0000</pubDate>
      <guid>/blog/2008/03/20/why-do-open-source-web-apps-suck/</guid>
      <description>&lt;p&gt;I’m a professional web developer, so it goes without saying that I’ve seen my fair share of off-the-shelf open source web applications. I’ve also seen my fair share of web design companies take these applications and modify them up the wazoo to fit with clients requirements… Well, sort of. It is probably more likely that the sales staff have managed to convince the client that their requirements should fit in with what the open source project does. On behalf of all the web application developers out there who get lumped cleaning up the mess: STOP IT.&lt;/p&gt;</description>
    </item>
    <item>
      <title>And the results are in…</title>
      <link>/blog/2008/03/17/and-the-results-are-in/</link>
      <pubDate>Mon, 17 Mar 2008 08:42:24 +0000</pubDate>
      <guid>/blog/2008/03/17/and-the-results-are-in/</guid>
      <description>&lt;p&gt;On Saturday I posted that &lt;a href=&#34;http://www.88miles.net/&#34; title=&#34;Simple Time Tracking&#34;&gt;88 Miles&lt;/a&gt; was profiled on the &lt;a href=&#34;http://startups.sharmavishal.com/&#34;&gt;Startups Carnival&lt;/a&gt; run by VS Consulting. Well, the results are out now, and 88 Miles came a extremely respectable 4th from 28 entries!&lt;/p&gt;&#xA;&lt;p&gt;A big congratulations to Richard at &lt;a href=&#34;http://www.scouta.com/&#34;&gt;Scouta&lt;/a&gt; for taking out the first prize and to &lt;a href=&#34;http://goodbarry.com/home&#34;&gt;GoodBarry&lt;/a&gt; and &lt;a href=&#34;http://www.suburbview.com/&#34;&gt;Suburb View&lt;/a&gt; for rounding out the top three.&lt;/p&gt;&#xA;&lt;p&gt;Also hats off to &lt;a href=&#34;http://www.ourwishingwell.com/&#34;&gt;OurWishingWel&lt;/a&gt;l, who shared fourth place with 88 Miles.&lt;/p&gt;</description>
    </item>
    <item>
      <title>88 Miles in the startup carnival</title>
      <link>/blog/2008/03/15/88-miles-in-the-startup-carnival/</link>
      <pubDate>Sat, 15 Mar 2008 03:27:59 +0000</pubDate>
      <guid>/blog/2008/03/15/88-miles-in-the-startup-carnival/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.sharmavishal.com/&#34;&gt;VS Consulting Group&lt;/a&gt; has been running an &lt;a href=&#34;http://www.sharmavishal.com/&#34;&gt;online startups carnival&lt;/a&gt; over the past two-weeks, profiling 28 up and coming Australian startups.&lt;/p&gt;&#xA;&lt;p&gt;Today, &lt;a href=&#34;http://www.88miles.net/&#34; title=&#34;Simple Time Tracking&#34;&gt;88 Miles&lt;/a&gt; is &lt;a href=&#34;http://startups.sharmavishal.com/2008/03/88-miles.html&#34;&gt;profiled&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;It is well worth checking out some of the other entrants, including fellow West Australian &lt;a href=&#34;http://startups.sharmavishal.com/2008/03/scouta.html&#34;&gt;Scouta&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;A big thanks to Vishal for putting on such an “event” — it really goes to show that the SaaS-o-sphere is alive and well over here in Australia!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spidermonkey and Ruby on Gentoo</title>
      <link>/blog/2008/03/10/spidermonkey-and-ruby-on-gentoo/</link>
      <pubDate>Mon, 10 Mar 2008 11:06:32 +0000</pubDate>
      <guid>/blog/2008/03/10/spidermonkey-and-ruby-on-gentoo/</guid>
      <description>&lt;p&gt;Have you ever had had an inkling to interpret JavaScript with in your Ruby code? Well, I have, so I did some investigating and found &lt;a href=&#34;http://www.mozilla.org/js/spidermonkey/&#34;&gt;Spidermonkey&lt;/a&gt; – the API that drives Firefox and Thunderbird’s JavaScript Engine. Being a C-library, it would be (relatively) trivial to write a Ruby interface – and thanks to the wonderful wold of the internets, &lt;a href=&#34;http://code.google.com/p/ruby-spidermonkey/&#34;&gt;someone has done just that&lt;/a&gt;. Unfortunately, the author is Japanese, and the documentation is sparse. Also, the code hasn’t really been updated since 2006 – but it still works, and thankfully &lt;a href=&#34;http://github.com/matthewd/ruby-mozjs/tree/master&#34;&gt;someone else&lt;/a&gt; has decided to do a little work on it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RESTful Rails. Part II. Now with more Sitepoint article goodness</title>
      <link>/blog/2008/02/29/restful-rails-part-ii-now-with-more-sitepoint-article-goodness/</link>
      <pubDate>Fri, 29 Feb 2008 05:53:20 +0000</pubDate>
      <guid>/blog/2008/02/29/restful-rails-part-ii-now-with-more-sitepoint-article-goodness/</guid>
      <description>&lt;p&gt;My follow up RESTful Rails blog post-cum-article &lt;a href=&#34;http://www.sitepoint.com/article/rapid-restful-rails-apps&#34;&gt;has been released into the wild&lt;/a&gt;. If you have been looking at RESTful Rails, and wondering what the hell is going on, go and have a read. If you don’t know what REST is, go and check out the &lt;a href=&#34;http://www.sitepoint.com/blogs/2008/02/04/restful-rails-part-i/&#34;&gt;earlier blog post&lt;/a&gt; to get up to speed.&lt;/p&gt;&#xA;&lt;p&gt;Personal promotion over.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Freelancer Friday February</title>
      <link>/blog/2008/02/26/freelancer-friday-february/</link>
      <pubDate>Tue, 26 Feb 2008 08:43:13 +0000</pubDate>
      <guid>/blog/2008/02/26/freelancer-friday-february/</guid>
      <description>&lt;p&gt;Oh how I love alliteration. Especially on a leap year. This Friday, the 29th is the next installment of everyone’s favourite open house co-working day, Freelancer Friday. At this point I would make some smart-alec remark about how Freelance Fridays would only fall on a leap every x-number of years, however, I can’t be bothered working it out (I’m sure someone out there who will) so instead I’ll point you &lt;a href=&#34;http://wiki.workatjelly.com/JellyInPerth%20-%20Freelancer%20Friday&#34;&gt;at the wik&lt;/a&gt;i, where you can put your name down. Hurry, time is limited.&lt;/p&gt;</description>
    </item>
    <item>
      <title>88 Miles now supports OAuth</title>
      <link>/blog/2008/02/22/88-miles-now-supports-oauth/</link>
      <pubDate>Fri, 22 Feb 2008 03:36:31 +0000</pubDate>
      <guid>/blog/2008/02/22/88-miles-now-supports-oauth/</guid>
      <description>&lt;p&gt;Now that the &lt;a href=&#34;http://oauth.net&#34;&gt;OAuth standard&lt;/a&gt; has been finalised and the Rails plugin (as well as libraries for a &lt;a href=&#34;http://oauth.net/code&#34;&gt;number of other languages&lt;/a&gt;) has stablised, I thought it time to become an early adopter and add it to &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple Time Tracking&#34;&gt;88 Miles&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;OAuth works like this:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;A developer create a third-party application (a consumer). They login to the the provider website and add their application. The website will then given them a secret key and three URLs: one to get a request token, one to get an access token and one that users can use to authorize an application.&lt;/li&gt;&#xA;&lt;li&gt;When another user decides to use the third-party application, they first need to authorize it’s use. So the application will request a &lt;em&gt;Request Token&lt;/em&gt; by posting some data to the request token URL.&lt;/li&gt;&#xA;&lt;li&gt;Once this returns, the application should redirect, or at least point to the authorization URL. On this page, the user is asked whether they really want to give access to the third party application.&lt;/li&gt;&#xA;&lt;li&gt;If the user says yes, the provider will redirect the user back to the consumer website, or at least notify the user that the consumer has authorization (It’s a bit hard to redirect to a desktop application for example).&lt;/li&gt;&#xA;&lt;li&gt;Once the consumer is notified that it has been given access, it will then swap it’s &lt;em&gt;Request Token&lt;/em&gt; for an &lt;em&gt;Access Token&lt;/em&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Now the consumer can freely access resources from the provider by using this &lt;em&gt;Access Token&lt;/em&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Obviously, if a given instance of an application has a valid Access Token, it can skip steps 1-5, and just continue using the Access Token.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EEE-PC. So cool!</title>
      <link>/blog/2008/02/18/eee-pc-so-cool/</link>
      <pubDate>Mon, 18 Feb 2008 09:28:43 +0000</pubDate>
      <guid>/blog/2008/02/18/eee-pc-so-cool/</guid>
      <description>&lt;p&gt;I’m writing this blog post using my brand-spanking &lt;a href=&#34;http://eeepc.asus.com/&#34;&gt;Eee PC&lt;/a&gt; – the 7″ mini-laptop brought out by Asus. This thing is small, I’ve taken a picture of it sitting on my regular 15″ widescreen laptop, and you can see the difference:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://farm3.static.flickr.com/2242/2274126270_7f4f8172e2_b_d.jpg&#34;&gt;&lt;img src=&#34;http://farm3.static.flickr.com/2242/2274126270_7f4f8172e2_d.jpg&#34; alt=&#34;Asus Eee Pc compared to a Toshiba M30&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;They have managed to squeeze a pretty decent machine in there – it is a 900Mhz Celeron (under clocked to 630Mhz) with 512Mb of RAM and 4Gb of SDD drive space, not bad considering the size and the fact it weighs less than a kilo! Even with the specs, it is suprisingly zippy – I suppose because there isn’t really anything running on it. Boot up time is less than a minute, and shutdown is even quicker.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perth Ruby on Rails user group. Edition 1</title>
      <link>/blog/2008/02/14/perth-ruby-on-rails-user-group-edition-1/</link>
      <pubDate>Thu, 14 Feb 2008 12:45:58 +0000</pubDate>
      <guid>/blog/2008/02/14/perth-ruby-on-rails-user-group-edition-1/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://matt.didcoe.id.au&#34;&gt;Matt Didcoe&lt;/a&gt; has finally gotten the ball rolling on a Perth Ruby on Rails user group with the inaugural meetup happening at the &lt;a href=&#34;http://www.siliconbeachhouse.com/map&#34;&gt;Silicon Beach House&lt;/a&gt; on Wednesday 20 February 2008 from 5:30pm. The first one will be pretty informal – no talks (although, I’m sure there will be plenty of taking).&lt;/p&gt;&#xA;&lt;p&gt;So if you you use Rails, have tried Rails, are thinking about learning Rails or have only just heard of Rails, come along and watch me and Matt try to out geek each other :P&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wanted: Dead or Alive. Some PHP developers</title>
      <link>/blog/2008/02/13/wanted-dead-or-alive-some-php-developers/</link>
      <pubDate>Wed, 13 Feb 2008 04:05:52 +0000</pubDate>
      <guid>/blog/2008/02/13/wanted-dead-or-alive-some-php-developers/</guid>
      <description>&lt;p&gt;I’m in a bit of a predicament at the moment. As many of you know, I’m back doing the web consultancy thing full time again after a 18 month hiatus. I made a couple of rules that I’m trying hard not to break:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;I’m not supporting PHP4&lt;/li&gt;&#xA;&lt;li&gt;I’m not supporting or modifying badly written OpenSource projects  (basically crossing out WordPress, osCommerce or phpBB jobs)&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Which (maybe un-)suprisingly I get asked for a lot. As a result, I’m looking for some PHP developers that haven’t become totally jaded by years of PHP4 abuse that I can sub-contract out to. I’d say I’m looking for mid-level developers, I’ll be there to help out find out WHAT needs to be done, and HOW it should be done – I just need someone to actually do the work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I didn’t get the meme-o</title>
      <link>/blog/2008/02/06/i-didnt-get-the-meme-o/</link>
      <pubDate>Wed, 06 Feb 2008 15:07:38 +0000</pubDate>
      <guid>/blog/2008/02/06/i-didnt-get-the-meme-o/</guid>
      <description>&lt;p&gt;Finally, some &lt;a href=&#34;http://nickcowie.com/2008/8-things-you-probably-didn%e2%80%99t-know-about-me/&#34;&gt;kind&lt;/a&gt; &lt;a href=&#34;http://www.milesburke.com.au/blog/2008/02/06/8-things-you-didn%e2%80%99t-know-about-me/&#34;&gt;souls&lt;/a&gt; have cared enough to tag me with the blog equivalent of a chain letter (or maybe that is the web equivalent of Amway) – the “8 things you didn’t know about me” meme. Rules are, you tell eight things about yourself that the web doesn’t know, then make eight others do the same. So….&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;I have dual passports, one Australian and one Greek, even though my paternal grandparents are Macedonian and my father and I were born in Australia. I’m not sure how this could happen, although I’m sure goats changed hands. There was also a possibility that if I ever went to Greece (nope, never been) that I would get thrown in the Army to do national service, although I think my Dedo (grandad) paid me out of it. Viva la corruption.&lt;/li&gt;&#xA;&lt;li&gt;I started &lt;a href=&#34;http://www.madpilot.com.au&#34;&gt;MadPilot Productions&lt;/a&gt; when I was 18 with my two best mates (and ex-housemates) Andrew and David. The Mad bit refers to our initials and I can’t remember where the Pilot bit came from. Andrew went on to become a lawyer and is now in his final year of musical theatre at WAAPA, and David is a reporter for the ABC, after graduating from WAAPA. I once went to WAAPA to watch someone give a recital.&lt;/li&gt;&#xA;&lt;li&gt;Myself, Andrew and David once won the Hammarskjold trophy – which is a mock UN Security Council debate for high school students. Our school had been trying to win it for ages – and the other teams we had entered had been together for two or three years, and had been training for months. The three of us were recruited the week before, stayed up until 3am the morning of as our preparation, and still to this day have absolutely no idea what we did or how we did it. I think this is completely representative of the real UN security council.&lt;/li&gt;&#xA;&lt;li&gt;MadPilot once did work for 96FM (a local radio station), on a promotion hilariously called Cunning Stunts. It was at this point I got to live out my childhood dream of riding in a Black Thunder drinking an Icy cold can of Coke, whilst listening to Triple J.&lt;/li&gt;&#xA;&lt;li&gt;I have an unnatural facination with late 80s sitcoms. I have many theme songs in my MP3 collection and own two seasons of the Golden Girls on DVD. My favourite 80s trival fact is that Estelle Geddy holds the record for playing the same character (Sophia Petrillo) in the most amount of shows (5: Golden Girls, Golden Palace, Empty Nest, Nurses and Blossom).&lt;/li&gt;&#xA;&lt;li&gt;I once did a fifteen hour stint at Little Creature Brewery in Fremantle. The only rules were weren’t allowed to leave the premises. We got there at 9am, had the first beer at 10am (It would have been 9am, but we didn’t realise that served beer that early) and had out last drink at midnight. we only got one free beer, despite spending over $600 between the three of us.&lt;/li&gt;&#xA;&lt;li&gt;I’ve never climbed a tree.&lt;/li&gt;&#xA;&lt;li&gt;My mum would never let me watch The Simpsons as a child. As a result, I own series 1-8 on DVD. Despite this child abuse, I picked up many Simpsons quotes from those more fortunate than I at school and have recently realised that pretty much everything I’ve ever said that is mildly witty was some sort of Simpsons quote.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Ok. Now to pass this thing on (I don’t want any fairies dying)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ideas 4 – We pulled it off!</title>
      <link>/blog/2008/02/05/ideas-4-we-pulled-it-off/</link>
      <pubDate>Mon, 04 Feb 2008 22:57:22 +0000</pubDate>
      <guid>/blog/2008/02/05/ideas-4-we-pulled-it-off/</guid>
      <description>&lt;p&gt;… and it rocked.&lt;/p&gt;&#xA;&lt;p&gt;Just to test our sanity, &lt;a href=&#34;http://www.webindustry.asn.au&#34;&gt;AWIA&lt;/a&gt; decided to pull together Ideas4 in two weeks, (minus a couple of days because of public holidays) and not only did we do it, we managed to hit our attendance target and managed to have the show run smoothly!&lt;/p&gt;&#xA;&lt;p&gt;We had 84 attendees (one all the way from &lt;a href=&#34;http://www.molly.com&#34;&gt;America&lt;/a&gt;!), and two lovely presenters who did a terrific job.&lt;/p&gt;&#xA;&lt;p&gt;A big, huge thanks to &lt;a href=&#34;http://www.minti.com&#34;&gt;Rachel Cook&lt;/a&gt;, who despite being 8 months pregnant, told us about her time in Silicon Valley as an Angel Investor, and to &lt;a href=&#34;http://www.scenariogirl.com&#34;&gt;Lisa Herrod&lt;/a&gt; who flew all the way from Sydney (on her birthday no less) to remind us that standards-based code and semantic markup aren’t enough to make a site accessible.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New version of 88 Miles goes live!</title>
      <link>/blog/2008/01/25/new/</link>
      <pubDate>Fri, 25 Jan 2008 01:38:20 +0000</pubDate>
      <guid>/blog/2008/01/25/new/</guid>
      <description>&lt;p&gt;For the past couple of months, I’ve been slaving away prepping the next version of &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple Time Tracking&#34;&gt;88 Miles&lt;/a&gt;, my simple time tracking application and now, I can happily announce it is alive! There are heaps of new features, and bug fixes, including a migration to Rails 2, a migration to a new server as well some dabbling in the wonderful world of Rails plugins. Some of the features are below:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Browser version switching – quick fix?</title>
      <link>/blog/2008/01/23/browser-version-switching-quick-fix/</link>
      <pubDate>Tue, 22 Jan 2008 16:26:29 +0000</pubDate>
      <guid>/blog/2008/01/23/browser-version-switching-quick-fix/</guid>
      <description>&lt;p&gt;I have just finished reading the two A List Apart articles (by &lt;a href=&#34;http://alistapart.com/articles/beyondDOCTYPE&#34;&gt;Aaron Gustafsen&lt;/a&gt; and &lt;a href=&#34;http://www.alistapart.com/articles/fromswitchestotargets&#34;&gt;Eric Meye&lt;/a&gt;r) on the concept of using browser meta tags to specifically target browsers. Go and read the articles to get the full story, but the basic premise it to devise a meta tag that stipulates which browser version the site is targeted at, eg:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;meta&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;http-equiv&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;X-UA-Compatible&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;content&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;IE=8&amp;#34;&lt;/span&gt; /&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It’s an interesting concept to say the least, and I’m quite torn – the standards-nazi in me wants to yell from the roof tops how stupid an idea it is. The time-poor developer in me is jumping for joy, because I could target a specific set of browsers and KNOW that is would forever more work in said browsers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AWIA Event: Ideas4</title>
      <link>/blog/2008/01/17/awia-event-ideas4/</link>
      <pubDate>Thu, 17 Jan 2008 02:44:18 +0000</pubDate>
      <guid>/blog/2008/01/17/awia-event-ideas4/</guid>
      <description>&lt;p&gt;For those of you who don’t remember, &lt;a href=&#34;http://www.webindustry.asn.au&#34;&gt;AWIA&lt;/a&gt; (and back in the day: &lt;a href=&#34;http://www.port80.asn.au&#34;&gt;Port80&lt;/a&gt;) has been running a series of talks, deemed “the Ideas series”, and I’m proud to announce the next one in the franchise: &lt;a href=&#34;http://www.webindustry.asn.au/ideas4&#34;&gt;Ideas4&lt;/a&gt;!&lt;/p&gt;&#xA;&lt;p&gt;We are lucky enough to have &lt;a href=&#34;http://scenarioseven.com.au/&#34;&gt;Lisa Herrod&lt;/a&gt;, a User Experience expert (and all-round nice gal) flying over from Sydney and local girl, &lt;a href=&#34;http://www.vibecapital.com/&#34;&gt;Rachel Cook&lt;/a&gt; talking on startups. We might even have a special international guest, if everything falls into place ;)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Freelancer Friday – 2008 Edition</title>
      <link>/blog/2008/01/16/freelancer-friday-2008-edition/</link>
      <pubDate>Tue, 15 Jan 2008 16:05:29 +0000</pubDate>
      <guid>/blog/2008/01/16/freelancer-friday-2008-edition/</guid>
      <description>&lt;p&gt;I can’t believe we are almost 0.083333% of the way through the year. By now everyone should be back at work – those of us at the &lt;a href=&#34;http://www.siliconbeachhouse.com/map&#34;&gt;Silicon Beach House&lt;/a&gt; are. Well as a result, Freelancer Fridays are back! Keeping with the “Last friday of the month” timeline, the next Freelancer Friday is on 25 January at the Silicon Beach House – Level 2, 90 King St, Perth WA. Turn up anytime between 9am and 5pm.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enterprise Rails</title>
      <link>/blog/2008/01/13/enterprise-rails/</link>
      <pubDate>Sun, 13 Jan 2008 01:34:51 +0000</pubDate>
      <guid>/blog/2008/01/13/enterprise-rails/</guid>
      <description>&lt;p&gt;Anyone in the Rails community would have read &lt;a href=&#34;http://www.zedshaw.com/rants/rails_is_a_ghetto.html?part2&#34;&gt;Zed Shaw’s rant&lt;/a&gt; about Rails. For those of you who don’t know Zed, he wrote Mongrel, which is the default web server library used in Rails. It has blown up and been discussed on just about every list, including Rails Oceania. I’m not going to discuss what he said, or his tone, as it has been done to death, and he seems like the type of guy that you need to know to understand where he is coming from.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hot or Not</title>
      <link>/blog/2008/01/09/hot-or-not/</link>
      <pubDate>Wed, 09 Jan 2008 00:30:26 +0000</pubDate>
      <guid>/blog/2008/01/09/hot-or-not/</guid>
      <description>&lt;p&gt;Call it lazy blogging, but the beginning of a new year is a perfect opportunity to write a list post. I’m not going to call the list below predictions for 2008 as there is absolutely no scientific basis for any of this, so I’m calling it &lt;em&gt;Hot or Not&lt;/em&gt; – stuff that I think/want to be hot in 2008 and stuff that I would love to see head to the big TCP/IP stack in the sky.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What the hell has happened to the Internet</title>
      <link>/blog/2007/12/12/what-the-hell-has-happened-to-the-internet/</link>
      <pubDate>Wed, 12 Dec 2007 13:17:27 +0000</pubDate>
      <guid>/blog/2007/12/12/what-the-hell-has-happened-to-the-internet/</guid>
      <description>&lt;p&gt;I love the Internet – I live and breathe it everyday. It is arguably the biggest triumph of this century – never before has so much information been so readily available, no to mention the ability to contact and converse with people from all over the world with in just a few mouse clicks.&lt;/p&gt;&#xA;&lt;p&gt;So why is this current “social networking” trend pissing me off so much?&lt;/p&gt;&#xA;&lt;p&gt;I realise that when you spend so much time on the ‘net, your life is basically out there for all to see – google my name and there is a shit load of stuff out there. THIS DOESN’T MEAN YOU CAN USE IT FOR OWN DEVIOUS PURPOSES. Today, someone added my to their “trust” network on a site called Spock. From what I can gather (and I’m not sure – the details of the site are pretty thin) it scrapes the Internet for information about you and tries to build a profile of who you are associated with, what you do and how many porn sites you visit. What the fuck? If I wanted to all of my information on one site I would create some sort of webpage- Oh hang on, I ALREADY HAVE ONE. And guess what? The information on my website (let’s call it a blog) is the information that I WANT TO RELEASE. I mean seriously. So some muppet on a website makes a comment about you at some point and all of a sudden it is on an aggregation site for all of your other (probably legitimate) friends to see.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wishing you all a good break</title>
      <link>/blog/2007/12/12/wishing-you-all-a-good-break/</link>
      <pubDate>Wed, 12 Dec 2007 04:05:41 +0000</pubDate>
      <guid>/blog/2007/12/12/wishing-you-all-a-good-break/</guid>
      <description>&lt;p&gt;If &lt;a href=&#34;http://manwithnoblog.com/2007/12/11/10-signs-your-are-working-too-much/&#34;&gt;Gary’s latest blog post&lt;/a&gt; is anything to go by (and I’m living it, so I know he is right), we are all still cranking along at an insane rate of knots, even with the silly season looming. Well, I lucky enough to be heading over to Sydney for a couple of weeks of R &amp;amp; R – sure I’ve managed to setup a couple of business meeting to ensure the trip is a tax write-off, but beyond that I will be trying with all my might to revive my exhausted mind.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I can haz meraki?</title>
      <link>/blog/2007/11/22/i-can-haz-meraki/</link>
      <pubDate>Thu, 22 Nov 2007 00:59:44 +0000</pubDate>
      <guid>/blog/2007/11/22/i-can-haz-meraki/</guid>
      <description>&lt;p&gt;You see this is what happens you take up challenges from Twitter. It was suggested by &lt;a href=&#34;http://twitter.com/SilkCharm&#34;&gt;Laural&lt;/a&gt; and &lt;a href=&#34;http://twitter.com/Tuna&#34;&gt;Gary&lt;/a&gt; that it would be handy to have a map of all the Australian Meraki nodes – of course being a stickler for a challenge, I duly accepted. Unbeknownst to me, the challenge was also being accepted on the other side of the Nullabor, but &lt;a href=&#34;http://twitter.com/funkycoda&#34;&gt;Ajay&lt;/a&gt;. Although an interstate game of “Who can build a Google Map mash-up in the fastest time” sounded like fun, we decided to combine our powers for good and not evil.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get all this summer’s cricket action – via twitter!</title>
      <link>/blog/2007/11/20/get-all-this-summers-cricket-action-via-twitter/</link>
      <pubDate>Tue, 20 Nov 2007 13:57:04 +0000</pubDate>
      <guid>/blog/2007/11/20/get-all-this-summers-cricket-action-via-twitter/</guid>
      <description>&lt;p&gt;Are you a Australian? Are you a cricket fan? Are you on &lt;a href=&#34;http://twitter.com&#34;&gt;twitter&lt;/a&gt;? If you answered yes to all of these questions, you might be interested in the Twitter bot that I just coded up. Using the fantastic &lt;a href=&#34;http://www.cricinfo.com/&#34;&gt;cricinfo.com&lt;/a&gt; website, some &lt;a href=&#34;http://code.whytheluckystiff.net/hpricot/&#34;&gt;Hpricot&lt;/a&gt; trickery, the &lt;a href=&#34;http://twitter.rubyforge.org/&#34;&gt;Twitter gem&lt;/a&gt; and some &lt;a href=&#34;http://www.ruby-lang.org&#34;&gt;Ruby&lt;/a&gt; jiggery pokery you can get a ball-by-ball commentary of the Aussies beating everyone in there path.&lt;/p&gt;&#xA;&lt;p&gt;So head over to &lt;a href=&#34;http://twitter.com/baggygreen&#34;&gt;http://twitter.com/baggygreen&lt;/a&gt; and get your summer cricket fix!&lt;/p&gt;</description>
    </item>
    <item>
      <title>ByteMe!, PerthMassive and Freelancer Friday – take me where the web goes.</title>
      <link>/blog/2007/11/15/byteme-perthmassive-and-freelancer-friday-take-me-where-the-web-goes/</link>
      <pubDate>Thu, 15 Nov 2007 01:04:31 +0000</pubDate>
      <guid>/blog/2007/11/15/byteme-perthmassive-and-freelancer-friday-take-me-where-the-web-goes/</guid>
      <description>&lt;p&gt;We are hurtling into the wacky end of the year – before you know it, we’ll all be drinking egg-nog and having seedy older men/women hitting on us at office Christmas parties (or vise-versa if you are said seedy man/woman). Well to celebrate, the Perth digital content community is throwing some awesome events over the next couple of weeks: Namely ByteMe! and PerthMassive,&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.byteme.net.au&#34; title=&#34;ByteMe! Festival&#34;&gt;ByteMe!&lt;/a&gt; is the brainchild of Kat “I must be taking something because it is impossible for one person to do the amount of stuff I do within a 28-hour day, let alone with in the bounds of current time” Black – it is a free week-long festival that will be show casing the best 1’s and 0’s of the Perth digital community. Not only that, there are some pretty god-damn kick-arse speakers (&lt;a href=&#34;http://www.byteme.net.au/spea.html&#34;&gt;See for yourself&lt;/a&gt;). It it December 2-9 and did I mention free? Oh and AWIA will be running a BarCampNano on the Sunday from 1-4pm – so if you have anything you want to show the world in 20 minutes or less, rock up between those hours to the Perth Town Hall.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I prefer begin called a geek, but what the hey…</title>
      <link>/blog/2007/11/12/i-prefer-begin-called-a-geek-but-what-the-hey/</link>
      <pubDate>Mon, 12 Nov 2007 00:56:39 +0000</pubDate>
      <guid>/blog/2007/11/12/i-prefer-begin-called-a-geek-but-what-the-hey/</guid>
      <description>&lt;p&gt;Anyone that has to interact with geeks/nerds/sith masters – &lt;a href=&#34;http://www.randsinrepose.com/archives/2007/11/11/the_nerd_handbook.html&#34;&gt;PLEASE READ THIS FIRST&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Absolute gold. Scarily true.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Facebook, OpenSocial – meh. Why aren’t widget useful?</title>
      <link>/blog/2007/11/08/facebook-opensocial-meh-why-arent-widget-useful/</link>
      <pubDate>Thu, 08 Nov 2007 11:43:33 +0000</pubDate>
      <guid>/blog/2007/11/08/facebook-opensocial-meh-why-arent-widget-useful/</guid>
      <description>&lt;p&gt;Widgets are a hot topic in the world of social networks and blogs, but at the end of the day they really don’t make our lives better. I mean honestly, if all of those widgets out there stopped would we miss them? Hell, some of them are down right annoying. The IDEA of a widget is not as dumb as some of these apps, but for some reason they haven’t been embraced by those developers that are helping us to get things done.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New version of Twitteresce available</title>
      <link>/blog/2007/11/07/new-version-of-twitteresce-available/</link>
      <pubDate>Wed, 07 Nov 2007 03:20:29 +0000</pubDate>
      <guid>/blog/2007/11/07/new-version-of-twitteresce-available/</guid>
      <description>&lt;p&gt;After a long hiatus from development (I’ve been busy ok!) I’ve just released a new version of &lt;a href=&#34;http://www.madpilot.com.au/twitteresce&#34; title=&#34;Twitteresce - Mobile Twitter&#34;&gt;Twitteresce&lt;/a&gt; – a mobile client for Twitter. New features include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The ability to delete your tweets and direct messages&lt;/li&gt;&#xA;&lt;li&gt;A correct “sent from” string on the web site version&lt;/li&gt;&#xA;&lt;li&gt;Other small bug fixes&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;So point you mobile browser at &lt;a href=&#34;http://www.madpilot.com.au/twitteresce&#34; title=&#34;Twitteresce - Mobile Twitter&#34;&gt;http://www.madpilot.com.au/twitteresce&lt;/a&gt; and download version 0.9.&lt;/p&gt;</description>
    </item>
    <item>
      <title>String theory explained in two minutes</title>
      <link>/blog/2007/10/26/string-theory-explained-in-two-minutes/</link>
      <pubDate>Fri, 26 Oct 2007 11:23:45 +0000</pubDate>
      <guid>/blog/2007/10/26/string-theory-explained-in-two-minutes/</guid>
      <description>&lt;p&gt;Well I’m convinced&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;</description>
    </item>
    <item>
      <title>AWIA’s very own OpenID server</title>
      <link>/blog/2007/10/21/awias-very-own-openid-server/</link>
      <pubDate>Sun, 21 Oct 2007 05:35:34 +0000</pubDate>
      <guid>/blog/2007/10/21/awias-very-own-openid-server/</guid>
      <description>&lt;p&gt;I just deploying a new version of the AWIA website, which adds an OpenID service provider – so now AWIA members can use their member username and password to login to any OpenID-enabled website.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.openid.net&#34;&gt;OpenID&lt;/a&gt; is a de-centralized authentication standard that allows you to use one username and password across any site that supports the standard. It can also send common information such as email address and username. The number of sites that support OpenID are steadily rising, which is why I added these functions to the site.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Podcamp racetrack’s in 10 days’ on</title>
      <link>/blog/2007/10/19/podcamp-racetracks-in-10-days-on/</link>
      <pubDate>Fri, 19 Oct 2007 04:00:00 +0000</pubDate>
      <guid>/blog/2007/10/19/podcamp-racetracks-in-10-days-on/</guid>
      <description>&lt;p&gt;(Mental note: Work on better blog post titles)&lt;/p&gt;&#xA;&lt;p&gt;Annnyway, as many of you know, Podcamp is coming to Perth on the 28th and 29 of October. A little birdie and my scouta on the ground tell me that we are getting some big names from over east to participate in this Australian first.&lt;/p&gt;&#xA;&lt;p&gt;Now, there has been a bit of confusion over what can be presented at Podcamp – it isn’t just about Podcasting. Anything that fits in the realm of new media (I know – I hate that term too, but I haven’t got anything better at the moment) would be a worthy topic.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blogging for Sitepoint</title>
      <link>/blog/2007/10/18/blogging-for-sitepoint/</link>
      <pubDate>Thu, 18 Oct 2007 04:00:41 +0000</pubDate>
      <guid>/blog/2007/10/18/blogging-for-sitepoint/</guid>
      <description>&lt;p&gt;Is blogging about yourself blogging like Googling yourself? Whilst you ponder that thought, I should point out that there are a number of Perth web-types blogging for &lt;a href=&#34;http://www.sitepoint.com&#34;&gt;Sitepoint&lt;/a&gt; – &lt;a href=&#34;http://kay.smoljak.com&#34;&gt;Kay Smoljak&lt;/a&gt; is making &lt;a href=&#34;http://www.sitepoint.com/blogs/2007/10/15/coldfusion-myth-busting/&#34;&gt;Coldfusion cool again&lt;/a&gt;, &lt;a href=&#34;http://miles.burke.id.au/blog&#34;&gt;Miles Burke&lt;/a&gt; is blogging about something (still waiting for your opening post Miles…), oh and some [hack][5] is writing about [Ruby on Rails][6]…&lt;/p&gt;&#xA;&lt;p&gt;If you have any suggestions drop one of us a line!&lt;/p&gt;&#xA;&lt;p&gt;[5]:  &amp;ldquo;It&amp;rsquo;s me fool!&amp;rdquo;&#xA;[6]: &lt;a href=&#34;http://www.sitepoint.com/blogs/2007/10/15/ruby-on-rails-the-art-of-simplicity/&#34;&gt;http://www.sitepoint.com/blogs/2007/10/15/ruby-on-rails-the-art-of-simplicity/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>And all that Meraki…</title>
      <link>/blog/2007/10/17/and-all-that-meraki/</link>
      <pubDate>Wed, 17 Oct 2007 13:55:44 +0000</pubDate>
      <guid>/blog/2007/10/17/and-all-that-meraki/</guid>
      <description>&lt;p&gt;These &lt;a href=&#34;http://www.meraki.com&#34;&gt;little networking&lt;/a&gt; devices have created quite a stir amongst the twitterati over the past couple of days, even enough to make &lt;a href=&#34;http://log.lachstock.com.au/&#34;&gt;Lachlan Hardy&lt;/a&gt; revive his blog! :P&lt;/p&gt;&#xA;&lt;p&gt;Anyway, as he mentions I’m taking some orders for any Perth peeps that would like a couple. The more people we get, the cheaper the shipping is (the shipping on one unit costs $US50 – 13 units, it come down to $US10 a unit – mob rules!).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Freelancer Friday – come and hang out with us!</title>
      <link>/blog/2007/10/13/freelancer-friday-come-and-hang-out-with-us/</link>
      <pubDate>Sat, 13 Oct 2007 05:09:44 +0000</pubDate>
      <guid>/blog/2007/10/13/freelancer-friday-come-and-hang-out-with-us/</guid>
      <description>&lt;p&gt;Anyone who has ever freelanced knows that being your own boss is great, but it can also be lonely. Being able to work in your pyjamas is convenient but not being able to bounce ideas off other people can be frustrating. As many of you know, I work in at the &lt;a href=&#34;http://siliconbeachhouse.com/blog/&#34;&gt;Silicon beach house&lt;/a&gt; which is a shared office space and we have a board room table and some couches that are less than utilised, which kinda made me think – we should have a freelancer day! And so you, kind people of the intarwebs, I present &lt;strong&gt;Freelancer Friday&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Be a good netizen: Use the correct HTTP response code</title>
      <link>/blog/2007/10/07/be-a-good-netizen-use-the-correct-http-response-code/</link>
      <pubDate>Sun, 07 Oct 2007 15:24:54 +0000</pubDate>
      <guid>/blog/2007/10/07/be-a-good-netizen-use-the-correct-http-response-code/</guid>
      <description>&lt;p&gt;Remember the good ol’ days back before dymanic websites where pages had .html extensions and when you tried to access a page that didn’t exist you got an ugly, yet reassuring &lt;em&gt;404 Not found&lt;/em&gt; page? The significance of this page is actually pretty important – not only does it tell the user that the page is not found but it returns a special HTTP status that tells web spiders the same thing. As web developers, sometimes we forget that humans aren’t the only ones accessing our pages, and as a result don’t use the correct HTTP response codes to denote what is going on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web Directions over for another year</title>
      <link>/blog/2007/10/01/web-directions-over-for-another-year/</link>
      <pubDate>Mon, 01 Oct 2007 10:16:48 +0000</pubDate>
      <guid>/blog/2007/10/01/web-directions-over-for-another-year/</guid>
      <description>&lt;p&gt;What a crazy week we have all had, a week of much drinking, socialising and occasionally learning stuff. Highlights from the second day were &lt;a href=&#34;http://www.stuffandnonsense.co.uk/&#34;&gt;Andy Clarke&lt;/a&gt;, talking about layout techniques that can be stolen from comic books. Andy has such a effortless presentation technique and always presents beautiful slides and this year was no exception. Coming from a developer background, well presented design talks really interest me, as it is something I know little about, although there was quite a bit of overlap with some traditional user interface theories, which is what I did my honours thesis on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>See you facebook. Thanks for the spam</title>
      <link>/blog/2007/09/28/see-you-facebook-thanks-for-the-spam/</link>
      <pubDate>Fri, 28 Sep 2007 07:00:53 +0000</pubDate>
      <guid>/blog/2007/09/28/see-you-facebook-thanks-for-the-spam/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2007/09/anti-facebook.png&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2007/09/anti-facebook.thumbnail.png&#34; alt=&#34;Goodbye facbook&#34;&gt;&lt;/a&gt;I have given facebook a chance – longer than most web apps. Hell, so many of my peers use it, surely I just haven’t had that gotcha moment that will make me become addicted it. Nope. Sorry. I still don’t see the point – oh, other than allowing people to spam their friends with pointless “applications”.&lt;/p&gt;&#xA;&lt;p&gt;So it is today that I bid you adieu. It’s been a gas.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Facebook suicide pact</title>
      <link>/blog/2007/09/27/facebook-suicide-pact/</link>
      <pubDate>Thu, 27 Sep 2007 09:38:38 +0000</pubDate>
      <guid>/blog/2007/09/27/facebook-suicide-pact/</guid>
      <description>&lt;p&gt;Ok, for all those who are sick to the teeth of getting spammed by your friends by “applications” on Facebook, I propose a mass Facebook Hari-kari tomorrow.&lt;/p&gt;&#xA;&lt;p&gt;When: 28/09/2007 at 5pm Australian Eastern Standard Time (+10GMT).&lt;/p&gt;&#xA;&lt;p&gt;The steps are simple.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Login to your soon to be defunked Facebook account&lt;/li&gt;&#xA;&lt;li&gt;Click “accounts”&lt;/li&gt;&#xA;&lt;li&gt;Click “de-activate account”&lt;/li&gt;&#xA;&lt;li&gt;Revel in the fact that you are making the web a better place to be.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Pass this on to friends.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sleepless in Sydney – Web Directions begins…</title>
      <link>/blog/2007/09/27/sleepless-in-sydney-web-directions-begins/</link>
      <pubDate>Thu, 27 Sep 2007 04:20:32 +0000</pubDate>
      <guid>/blog/2007/09/27/sleepless-in-sydney-web-directions-begins/</guid>
      <description>&lt;p&gt;Here we are again at &lt;a href=&#34;http://www.webdirections.org&#34;&gt;Web Directions&lt;/a&gt; and the drinking, erm, learning has begun.  Last night, we had &lt;a href=&#34;http://forums.port80.asn.au&#34;&gt;Port80&lt;/a&gt; Sydney at the Quarryman Hotel which was conveniently across the road from our hotel. The usual Perth suspects where there (as was expected, most of them are staying at the same hotel across the road) but we also had a number Port80 noobs who can along, probably for the free beer. Unknown to us, the Quarryman has a quiz night on a Wednesday night, so we entered two Port80 teams, one of which can second!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gentlepersons, start your engines</title>
      <link>/blog/2007/09/25/gentlepersons-start-your-engines/</link>
      <pubDate>Tue, 25 Sep 2007 03:23:15 +0000</pubDate>
      <guid>/blog/2007/09/25/gentlepersons-start-your-engines/</guid>
      <description>&lt;p&gt;I have just arrived at the Kirk on Harris in Sydney which has become the Perth head quarters for those who are attending Web Directions South 2007. Whilst Gary, Drew and Nick are at workshops today and whilst I wait for the rest of the Perthians to show, I’m going to go hang out with Tim and try to get a sneek preview of the version 2.0 of the Web Directions social networking tool – connections.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web 2.0 Application Develpment – A presentation</title>
      <link>/blog/2007/09/22/web-20-application-develpment-a-presentation/</link>
      <pubDate>Sat, 22 Sep 2007 00:38:10 +0000</pubDate>
      <guid>/blog/2007/09/22/web-20-application-develpment-a-presentation/</guid>
      <description>&lt;p&gt;On October 12 and 13, the WA Department of Industry and Resources and a number of prominent ICT professional organsiations will be holding a conference: ICT WA 2007. You can all the details of the conference at their website: &lt;a href=&#34;http://www.ictwa.org.au&#34;&gt;http://www.ictwa.org.au&lt;/a&gt;. There will be a wide range of topics covered from Broadband to gaming, so go and check it out. On top of the usual presentations that are usually associated with such conferences, there will be a number of three-hour workshops – one of which will be presented by &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;88 Miles - Simple time tracking&#34;&gt;myself&lt;/a&gt;, &lt;a href=&#34;http://perth.norg.com.au&#34; title=&#34;Norg Media&#34;&gt;Bronwen Clune&lt;/a&gt; and &lt;a href=&#34;http://www.scouta.com&#34; title=&#34;Scouta&#34;&gt;Richard Giles&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Port80 Sydney</title>
      <link>/blog/2007/09/13/port80-sydney/</link>
      <pubDate>Thu, 13 Sep 2007 10:53:56 +0000</pubDate>
      <guid>/blog/2007/09/13/port80-sydney/</guid>
      <description>&lt;p&gt;It is just under two weeks until Australia’s biggest web conference, &lt;a href=&#34;http://www.webdirections.org&#34;&gt;Web Directions&lt;/a&gt; is on in Sydney and as happened last year a whole bunch of Perthites will be making the trip across the nullabor. As a result, the AWIA committee has decided it is time to try another Port80 Sydney, so if you are interested in seeing what the whole Port80 thing is about it would be a great time to come and drink some beer, chat with with other web geeks and generally have a bit of fun. It’s really informal, and you can just turn up – you don’t even need to RSVP!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rails were rumbled. Voting starts tomorrow</title>
      <link>/blog/2007/09/12/rails-were-rumbled-voting-starts-tomorrow/</link>
      <pubDate>Wed, 12 Sep 2007 15:35:46 +0000</pubDate>
      <guid>/blog/2007/09/12/rails-were-rumbled-voting-starts-tomorrow/</guid>
      <description>&lt;p&gt;There is something obtusely magnificent about locking away geeks for long periods of time, giving them a laptop and a kick-arse framework and leaving them up to their own devices – which is what &lt;a href=&#34;http://www.jordanbrock.com&#34;&gt;Jordan Brock&lt;/a&gt;, &lt;a href=&#34;http://www.didcoe.id.au/&#34;&gt;Matt Didcoe&lt;/a&gt; and myself did last weekend for &lt;a href=&#34;http://www.railsrumble.com&#34;&gt;Rails Rumble ’07&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The idea is simple – You have 48 hours to create an entire website in the ever so beautiful &lt;a href=&#34;http://www.rubyonrails.org&#34;&gt;Ruby on Rails&lt;/a&gt; framework. Because the competition was run out of the US and because we have real jobs/school to go to, we only ended up with 36 hours, but we didn’t let that deter us. The result? &lt;a href=&#34;http://sandwich.railsrumble.com&#34;&gt;Sandwich&lt;/a&gt; – a recipe sharing site. During that time, we managed to product a site with friending, tagging, bookmarking and recipe parsing which is no mean feat – I dare anyone to do it in another language in that time frame.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Are you ready to RUMBLE!</title>
      <link>/blog/2007/09/04/are-you-ready-to-rumble/</link>
      <pubDate>Tue, 04 Sep 2007 12:54:59 +0000</pubDate>
      <guid>/blog/2007/09/04/are-you-ready-to-rumble/</guid>
      <description>&lt;p&gt;This weekend &lt;a href=&#34;http://jordanbrock.com/&#34;&gt;Jordan&lt;/a&gt;, &lt;a href=&#34;http://www.didcoe.id.au/&#34;&gt;Matt&lt;/a&gt; and myself will be participating in w&lt;a href=&#34;http://railsrumble.com&#34;&gt;&lt;/a&gt;. Rails Rumble is an international geekfest where you have 48 hours to develop a Ruby on Rails application. We are at a bit of a disadvantage because of the timezone issues mean that we really only have 36 hours (We have to do some real work on Monday you know!).&lt;/p&gt;&#xA;&lt;p&gt;We will be building a top secret social network, so watch this space as we post updates of our progress!&lt;/p&gt;</description>
    </item>
    <item>
      <title>This is me, I work on the Web</title>
      <link>/blog/2007/09/03/this-is-me-i-work-on-the-web/</link>
      <pubDate>Mon, 03 Sep 2007 01:09:22 +0000</pubDate>
      <guid>/blog/2007/09/03/this-is-me-i-work-on-the-web/</guid>
      <description>&lt;p&gt;Whilst we are on the topic of memes, I’ve just posted my &lt;a href=&#34;http://www.flickr.com/photos/madpilot/1306872689/&#34;&gt;“This is me, I work on the Web” meme post on Flickr&lt;/a&gt;. If you work on the web, I would do the same – just remember to tag it with &lt;a href=&#34;http://www.flickr.com/photos/tags/iworkontheweb/&#34;&gt;I work on the web&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://farm2.static.flickr.com/1256/1306872689_878c8e5338_d.jpg&#34; alt=&#34;This is me, I work on the Web&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>I was at Web Directions, honest</title>
      <link>/blog/2007/08/30/i-was-at-web-directions-honest/</link>
      <pubDate>Thu, 30 Aug 2007 15:06:05 +0000</pubDate>
      <guid>/blog/2007/08/30/i-was-at-web-directions-honest/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://miles.burke.id.au/blog/2007/08/27/the-web-directions-photo-meme/&#34;&gt;Miles Burke&lt;/a&gt; decided that we all need to prove that we were at &lt;a href=&#34;http://webdirections.org&#34;&gt;Web Directions&lt;/a&gt; last year by finding photos of us on Flickr. Mo problem! Here are pictures of me looking rather disheveled.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/kaysmoljak/257196259/in/set-72157594298933774/&#34;&gt;&lt;img src=&#34;http://farm1.static.flickr.com/116/257196259_6319e41b2b_t_d.jpg&#34; alt=&#34;Webtard!&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/kaysmoljak/262898463/in/set-72157594298933774/&#34;&gt;&lt;!-- raw HTML omitted --&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/webdirections/254794632/&#34;&gt;&lt;img src=&#34;http://farm1.static.flickr.com/106/254794632_4dde5d0528_t_d.jpg&#34; alt=&#34;Me in my natural habitat&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/nickobec/264673748/&#34;&gt;&lt;img src=&#34;http://farm1.static.flickr.com/118/264673748_f115776511_t_d.jpg&#34; alt=&#34;Me working at the after party&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/cannedtuna/262819866/&#34;&gt;&lt;img src=&#34;http://farm1.static.flickr.com/100/262819866_a542654531_t_d.jpg&#34; alt=&#34;Me still working at the after party&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ok, to pass on the meme: I wanna see photos from &lt;a href=&#34;http://www.toolmantim.com&#34;&gt;Tim Lucas&lt;/a&gt; and &lt;a href=&#34;http://log.lachstock.com.au/&#34;&gt;Lachlan Hardy&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Watch my WebJam presentation!</title>
      <link>/blog/2007/08/22/watch-my-webjam-presentation/</link>
      <pubDate>Wed, 22 Aug 2007 09:33:12 +0000</pubDate>
      <guid>/blog/2007/08/22/watch-my-webjam-presentation/</guid>
      <description>&lt;p&gt;Thanks to &lt;a href=&#34;http://stewartgreenhill.com/blog/&#34;&gt;greenguy&lt;/a&gt; you too can watch me make a fool of myself in front of a live studio audience! Slides and demo are &lt;a href=&#34;/presentations/canvas_text_replacement/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Podcamping across the Universe…</title>
      <link>/blog/2007/08/19/podcamping-across-the-universe/</link>
      <pubDate>Sun, 19 Aug 2007 06:21:34 +0000</pubDate>
      <guid>/blog/2007/08/19/podcamping-across-the-universe/</guid>
      <description>&lt;p&gt;Well more correctly, across the Nullibor Plane – We just received confirmation for the PodCamp Australia guys that Perth has won the right to host the first PodCamp! Not only did we win, we won pretty convincingly, with 152 votes. Syndey came second place with only got 82!&lt;/p&gt;&#xA;&lt;p&gt;The event in October should feed all of the locals’ hunger for local events. Check out &lt;a href=&#34;http://www.podcamp.info&#34;&gt;http://www.podcamp.info&lt;/a&gt; for more details as they come to hand.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oh, what a night</title>
      <link>/blog/2007/08/19/oh-what-a-night/</link>
      <pubDate>Sun, 19 Aug 2007 06:06:24 +0000</pubDate>
      <guid>/blog/2007/08/19/oh-what-a-night/</guid>
      <description>&lt;p&gt;After over 8 months of organsing and meetings, the WA Web Awards for 2007 have been and gone – and once again, the WA web industry hasn’t disappointed. 154 entries, whittled down to 36 finalists over 12 categories – 182 attendees at a black tie event, and as I’m sure you can imagine, the wine and food flowed through out the night. As did the crazy dancing at the Amplifier afterwards. As such, I’m sure there was more than a few sore heads on Saturday!&lt;/p&gt;</description>
    </item>
    <item>
      <title>We be jammin’</title>
      <link>/blog/2007/08/16/we-be-jammin/</link>
      <pubDate>Thu, 16 Aug 2007 14:59:47 +0000</pubDate>
      <guid>/blog/2007/08/16/we-be-jammin/</guid>
      <description>&lt;p&gt;I’m still a little blurry-eyed from last night (as are most of the beachhouse) – but I can safely say, that WebJam Perth cranked. Estimates of the number of attendees are varied, but there was definitely between 80 and 100 people there was awesome. There was also 15 presenters, and the quality was top-notch!&lt;/p&gt;&#xA;&lt;p&gt;After picking up the WebJam crew from the airport, and hanging out with them for the day, we prepped the Velvet Lounge and the crowd started flowing in. There was a lot of new faces there too, which is an indicator of how crazy the industry is going at the moment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Podcamp. I want it now daddy!</title>
      <link>/blog/2007/08/14/podcamp-i-want-it-now-daddy/</link>
      <pubDate>Tue, 14 Aug 2007 05:21:30 +0000</pubDate>
      <guid>/blog/2007/08/14/podcamp-i-want-it-now-daddy/</guid>
      <description>&lt;p&gt;As the more attentive of you out there knows, &lt;a href=&#34;http://www.podcamp.info&#34;&gt;podcamp.info&lt;/a&gt; have been running a competition-turned-slinging match between the states of this fair country to see who should get the rights to host the first Australian PodCamp. Perhaps when they thought of this marketing plan, they were betting on Sydney and Melbourne (as usual) providing the bulk of the votes. Well unfortunately for them, they didn’t count of Perth’s very own BarCamp being but days before.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WA Web Awards and WebJam less than two weeks away!</title>
      <link>/blog/2007/08/06/wa-web-awards-and-webjam-less-than-two-weeks-away/</link>
      <pubDate>Mon, 06 Aug 2007 03:15:51 +0000</pubDate>
      <guid>/blog/2007/08/06/wa-web-awards-and-webjam-less-than-two-weeks-away/</guid>
      <description>&lt;p&gt;Is it August already? Our crazy, self-proclaimed WA Web Week starts next week, which means there isn’t much time to sort our your &lt;a href=&#34;http://www.webjam.com.au&#34;&gt;WebJam&lt;/a&gt; presentation and to get your frocks ready for the &lt;a href=&#34;http://www.wawebawards.com.au&#34;&gt;WA Web Awards&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Even though you can just turn up to &lt;a href=&#34;http://www.webjam.com.au&#34;&gt;WebJam&lt;/a&gt;, which will be at the Velvet Lounge in Mt Lawley on Wednesday 15 August we would love to get an estimate of how many people we will see on the night. Head over to the WebJam website and register. Want to do a presentation? They are only 3 minutes, so it won’t take much prepare for it – you just need to tell us what you are up to and why it is cool.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Freelancing 101 – Seven tips for managing your accounts</title>
      <link>/blog/2007/08/04/freelancing-101-seven-tips-for-managing-your-accounts/</link>
      <pubDate>Sat, 04 Aug 2007 04:06:01 +0000</pubDate>
      <guid>/blog/2007/08/04/freelancing-101-seven-tips-for-managing-your-accounts/</guid>
      <description>&lt;p&gt;I’ve been freelancing under the moniker of &lt;a href=&#34;http://www.madpilot.com.au&#34; title=&#34;Created to be different&#34;&gt;MadPilot Productions&lt;/a&gt; on and off for nigh-on 7 years now and I’m the first to admit that making the books balance wasn’t always at the fore front of my mind. I’m a web developer – I need to develop! Unfortunately, running your own business means at some point you will have to deal with accounts and invoicing and the tax department. After all those years of battling my way through and making (expensive) mistakes, I have compiled a number of simple hints and tips that can help take the pain out of the financial side of things.&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/presentations/</link>
      <pubDate>Wed, 01 Aug 2007 07:12:23 +0000</pubDate>
      <guid>/presentations/</guid>
      <description>&lt;p&gt;Below are a list of some of the presentations that I have given.&lt;/p&gt;&#xA;&lt;h2 id=&#34;out-of-the-way-json&#34;&gt;Out of the way JSON!&lt;/h2&gt;&#xA;&lt;h3 id=&#34;if-css-can-be-un-obtrusive-so-can-javascript&#34;&gt;If CSS can be un-obtrusive, so can JavaScript&lt;/h3&gt;&#xA;&lt;p&gt;I made this presentation at the Port80 Mini-talks. It is a quick overview of how to use un-obtrusive JavaScript (AKA Hijax) to cleanup your HTML markup, and make your JavaScript more re-usable. Presented 07 February 2007.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://myles.eftos.id.au/presentations/out_of_the_way_json/&#34;&gt;View the S5 slides&lt;/a&gt; and &lt;a href=&#34;http://app.webindustry.asn.au/downloads/podcasts/myles_eftos_20070207.mp3&#34;&gt;listen to the podcast&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Managing the menagerie of marvelous, erm events</title>
      <link>/blog/2007/07/30/managing-the-menagerie-of-marvelous-erm-events/</link>
      <pubDate>Mon, 30 Jul 2007 15:15:56 +0000</pubDate>
      <guid>/blog/2007/07/30/managing-the-menagerie-of-marvelous-erm-events/</guid>
      <description>&lt;p&gt;First of all, let me apologise for the hideous attempt at alliteration. For those of you who have been following this blog, you would have noticed a large number of events that have been hitting the shores of the west coast of Australia. This isn’t the half of it – there are many other similar groups such as &lt;a href=&#34;http://www.perth.siggraph.org.au/&#34;&gt;SIGGRAPH&lt;/a&gt;, &lt;a href=&#34;http://www.byteme.net.au&#34;&gt;Byte Me!&lt;/a&gt;, Plug and Play, &lt;a href=&#34;http://www.myspace.com/wanimate&#34;&gt;WAnimate&lt;/a&gt;, &lt;a href=&#34;http://www.pigmi.org&#34;&gt;PIGMI&lt;/a&gt; and &lt;a href=&#34;http://www.perthmassive.net/&#34;&gt;Perth Massive&lt;/a&gt; who put on regular events.&lt;/p&gt;&#xA;&lt;p&gt;Let me state this now – it is &lt;strong&gt;AWESOME&lt;/strong&gt;. Being the most isolated city in the world we (on many occasions) have missed out on big events/concerts/sporting events and so we are often forced to put on our own events. This does create a slight problem though – quite often there are event clashes as there isn’t really much communication between all the different organisations. For example, on the 15th of August Perth is hosting &lt;a href=&#34;http://www.webjam.com.au&#34;&gt;WebJam&lt;/a&gt;, which has meant that the &lt;a href=&#34;http://blog.meetup.com/14/&#34;&gt;Perth Bloggers meetup&lt;/a&gt; is probably going to be rescheduled (because of the audience overlap) whilst still clashing with “Digital Content Industry Audit” that is being put on by &lt;a href=&#34;http://www.screenwest.com.au/&#34;&gt;ScreenWest&lt;/a&gt; and &lt;a href=&#34;http://www.doir.wa.gov.au/&#34;&gt;DoIR&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Australian Web Industry Association – Annual General Meeting</title>
      <link>/blog/2007/07/30/australian-web-industry-association-annual-general-meeting/</link>
      <pubDate>Mon, 30 Jul 2007 01:54:09 +0000</pubDate>
      <guid>/blog/2007/07/30/australian-web-industry-association-annual-general-meeting/</guid>
      <description>&lt;p&gt;This is a quick reminder that the Australian Web Industry Association &lt;a href=&#34;http://www.webindustry.asn.au/agm/2007&#34;&gt;Annual General Meeting&lt;/a&gt; is on Wednesday 1st August at 6pm at the Velvet Lounge in Mt Lawley.&lt;/p&gt;&#xA;&lt;p&gt;If you are an AWIA financial member, please come along so you can hear our reports for the last 12 months, as well as vote for the new committee member positions. Their are 5 vacant positions, and the nominees are:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://adrian.lynch.id.au&#34;&gt;Adrian Lynch&lt;/a&gt; *&lt;/li&gt;&#xA;&lt;li&gt;Ben May&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.perthnorg.com.au&#34;&gt;Bronwen Clune&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.manwithnoblog.com&#34;&gt;Gary Barber&lt;/a&gt; *&lt;/li&gt;&#xA;&lt;li&gt;Harriet Wakelam&lt;/li&gt;&#xA;&lt;li&gt;Jamie Lyford&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.spintech.com.au&#34;&gt;Jordan Brock&lt;/a&gt; *&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://kay.smoljak.com&#34;&gt;Kay Smoljak&lt;/a&gt; *&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.envisageblue.com.au&#34;&gt;Piotr Dancewicz&lt;/a&gt; *&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Indicate a current committee member.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If you want to play an active role in the AWIA, you must come along and cast your vote. If you can’t make it, you can download the proxy voting form from the &lt;a href=&#34;http://www.webindustry.asn.au&#34;&gt;AWIA website&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WebJam is coming to Perth</title>
      <link>/blog/2007/07/23/webjam-is-coming-to-perth/</link>
      <pubDate>Mon, 23 Jul 2007 01:38:51 +0000</pubDate>
      <guid>/blog/2007/07/23/webjam-is-coming-to-perth/</guid>
      <description>&lt;p&gt;I have been wearing my &lt;a href=&#34;http://www.webindustry.asn.au&#34;&gt;Australian Web Industry Association&lt;/a&gt; event manager hat recently and have been in secret talks with some friendly people over in Sydney. Those people just so happen to be &lt;a href=&#34;http://log.lachstock.com.au/&#34;&gt;Lachlan Hardy&lt;/a&gt;, &lt;a href=&#34;http://www.scenarioseven.com.au/&#34;&gt;Lisa Herrod&lt;/a&gt;, &lt;a href=&#34;http://www.toolmantim.com&#34;&gt;Tim Lucas&lt;/a&gt; and &lt;a href=&#34;http://phasetwo.org/&#34;&gt;Anson Parker&lt;/a&gt;, AKA &lt;a href=&#34;http://www.webjam.com.au&#34;&gt;The WebJam Team&lt;/a&gt;!&lt;/p&gt;&#xA;&lt;p&gt;So with out further ado, I am proud to announce WebJam Perth!&lt;/p&gt;&#xA;&lt;p&gt;Where: The Velvet Lounge, Mt Lawley (Where we have the Port80 meetups)&lt;/p&gt;&#xA;&lt;p&gt;When: 15 August 2007 at 6pm&lt;/p&gt;</description>
    </item>
    <item>
      <title>BarCamp Perth videos are available</title>
      <link>/blog/2007/07/18/barcamp-perth-videos-are-available/</link>
      <pubDate>Wed, 18 Jul 2007 04:32:03 +0000</pubDate>
      <guid>/blog/2007/07/18/barcamp-perth-videos-are-available/</guid>
      <description>&lt;p&gt;Many thanks to Stuart Greenhill for uploading the videos that he took of the day to &lt;a href=&#34;http://www.vidler.com&#34;&gt;Vidler&lt;/a&gt;. They are all available from the &lt;a href=&#34;http://barcamp.port80.asn.au&#34;&gt;Port80 BarCamp Wiki&lt;/a&gt;. For those of you interested in the talk that &lt;a href=&#34;http://matt.didcoe.id.au&#34;&gt;Matt Didcoe&lt;/a&gt; and I did on Ruby on rails, you can watch it for &lt;a href=&#34;http://www.viddler.com/explore/sgreenhill/videos/7/?secreturl=102751637&#34;&gt;yourself here&lt;/a&gt;. I can’t believe I was still coherent after the number of Red Bulls I had had (Both before and during the talk!)&lt;/p&gt;</description>
    </item>
    <item>
      <title>WAWA finalists announced – Yours truly gets a gong</title>
      <link>/blog/2007/07/17/wawa-finalists-announced-yours-truly-gets-a-gong/</link>
      <pubDate>Tue, 17 Jul 2007 02:20:19 +0000</pubDate>
      <guid>/blog/2007/07/17/wawa-finalists-announced-yours-truly-gets-a-gong/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;/wp-content/uploads/2007/07/button1x2-white-3.gif&#34; alt=&#34;button1x2-white-3.gif&#34;&gt;The WA Web Awards finalists for 2007 have just been announced and both 88 Miles and Bloggy Hell made the grade! &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;88 Miles - Simple Time Tracking&#34;&gt;88 Miles&lt;/a&gt; is nominated for the “Best online application” category and [Bloggy Hell][2] is nominated for “Best personal or blog site”. The quality of the sites this year was awesome, so it is a great privilege to included in the group of finalists.&lt;/p&gt;&#xA;&lt;p&gt;Go and [check out the list][3] for all of the finalists.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PHP 4 being put out to pasture</title>
      <link>/blog/2007/07/16/php-4-being-put-out-to-pasture/</link>
      <pubDate>Mon, 16 Jul 2007 06:32:35 +0000</pubDate>
      <guid>/blog/2007/07/16/php-4-being-put-out-to-pasture/</guid>
      <description>&lt;p&gt;Ok, I might be a bit of a &lt;a href=&#34;http://www.rubyonrails.com&#34;&gt;Rails&lt;/a&gt; zealot now, but I still have a sweet spot for PHP. For many years it was my language of choice, and even today, server hosting or legacy applications still means that I have to throw around the &amp;lt; ?php ?&amp;gt; tag.&lt;/p&gt;&#xA;&lt;p&gt;I just read on the &lt;a href=&#34;http://www.php.net/index.php&#34;&gt;official PHP website&lt;/a&gt;, that as of the end of this year, PHP 4 will no longer be updated, bar crucial security patches. This is a big thing, as many web hosting companies still only support PHP 4 as it isn’t possible to run PHP 5 on the same apache server with out resorting to CGI or proxy work-arounds. This basically means that you have 5 months to make sure that your webiste runs on PHP 5.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prezz E Place goes live</title>
      <link>/blog/2007/07/16/prezz-e-place-goes-live/</link>
      <pubDate>Mon, 16 Jul 2007 01:58:48 +0000</pubDate>
      <guid>/blog/2007/07/16/prezz-e-place-goes-live/</guid>
      <description>&lt;p&gt;Even though I left &lt;a href=&#34;http://www.bam.com.au&#34; title=&#34;Bam Creative - They do websites&#34;&gt;Bam&lt;/a&gt; two weeks ago, we have been covertly finishing off one final client project together – &lt;a href=&#34;http://www.prezzeplace.com.au&#34; title=&#34;Prezz E Place - Unique gift choices and fun experiences!&#34;&gt;Prezz E Place&lt;/a&gt;. Prezz E Place is an online gift shop for those people how are too busy or phsyically can’t get to a shop to buy that special gift. It features a “dreamboard” where users can place products they would like to receive as well as a built in anniversary reminder system.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Twitteresce is in the top 12!</title>
      <link>/blog/2007/07/10/twitteresce-is-in-the-top-12/</link>
      <pubDate>Tue, 10 Jul 2007 06:40:44 +0000</pubDate>
      <guid>/blog/2007/07/10/twitteresce-is-in-the-top-12/</guid>
      <description>&lt;p&gt;… well according to &lt;a href=&#34;http://mashable.com&#34;&gt;Mashable&lt;/a&gt; it is. It made the &lt;a href=&#34;http://mashable.com/2007/07/09/twitter-mobile-2/&#34;&gt;Top 12 twitter apps for your mobile phone&lt;/a&gt;. I suppose that means I should do some more work on it soon ;)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Happy Birthday, Moose!</title>
      <link>/blog/2007/07/10/happy-birthday-moose/</link>
      <pubDate>Tue, 10 Jul 2007 03:07:00 +0000</pubDate>
      <guid>/blog/2007/07/10/happy-birthday-moose/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://www.shopmoose.com.au/attachments/display_image/831?width=320&#34; alt=&#34;Shopmoose is turning 1!&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;One of my good friends, Matt Brown has managed to keep his boutique online gift store, &lt;a href=&#34;http://www.shopmoose.com.au&#34; title=&#34;Moose: Art for living&#34;&gt;Moose&lt;/a&gt; running for a year, which is no mean feat considering who his [dodgy web developer is][2] ;)&lt;/p&gt;&#xA;&lt;p&gt;Seriously though, Moose has some really amazing pieces of artwork that would make the perfect gift for that friend or family member who has an art-bent  – not only that, but he supports local artists.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What a week!</title>
      <link>/blog/2007/07/06/what_a_week/</link>
      <pubDate>Fri, 06 Jul 2007 09:51:19 +0000</pubDate>
      <guid>/blog/2007/07/06/what_a_week/</guid>
      <description>&lt;p&gt;The past few weeks can safely be described as insane – even when compared to a regular working week for Perth-based web developer.&lt;/p&gt;&#xA;&lt;p&gt;As hinted in my previous half-arsed blog post, &lt;a href=&#34;http://barcamp.port80.asn.au&#34; title=&#34;BarCamp Perth&#34;&gt;BarCamp Perth&lt;/a&gt; has come and gone. The event was amazing. I don’t think anyone could have predicted how smoothly and inspiring the day was. To all the people that put there hand up to help out thank you – I would not have been able to mask my usual lack of organisation with out you. Thanks to &lt;a href=&#34;http://www.enjoyperth.net&#34;&gt;Simone&lt;/a&gt; and Pascal for sorting out the food, thanks to &lt;a href=&#34;http://www.spintech.com.au&#34;&gt;Jordon&lt;/a&gt; for keeping everyone caffeinated, thanks to &lt;a href=&#34;http://www.manwithnoblog.com&#34;&gt;Gary&lt;/a&gt; for all the artwork and the t-shirts and thanks to the helpers that turned up early and setup. The day would have run a lot less smoothly if it wasn’t for you all.&lt;/p&gt;</description>
    </item>
    <item>
      <title>BarCamp Perth – an awesome day</title>
      <link>/blog/2007/06/30/barcamp-perth-an-awesome-day/</link>
      <pubDate>Sat, 30 Jun 2007 14:49:29 +0000</pubDate>
      <guid>/blog/2007/06/30/barcamp-perth-an-awesome-day/</guid>
      <description>&lt;p&gt;I seriously could not have asked for a better day. I’ll write up a better synopsis later, but now I am just too tired.&lt;/p&gt;&#xA;&lt;p&gt;Big thanks to all the sponsors, and an even bigger thanks to everyone that came along – with out you guys it wouldn’t have been the great day that it was.&lt;/p&gt;&#xA;&lt;p&gt;I need some sleep now.&lt;/p&gt;</description>
    </item>
    <item>
      <title>BarCamp Perth is tomorrow</title>
      <link>/blog/2007/06/29/barcamp-perth-is-tomorrow/</link>
      <pubDate>Fri, 29 Jun 2007 15:40:55 +0000</pubDate>
      <guid>/blog/2007/06/29/barcamp-perth-is-tomorrow/</guid>
      <description>&lt;p&gt;‘Twas the night be for BarCamp&lt;/p&gt;&#xA;&lt;p&gt;and all through the house&lt;/p&gt;&#xA;&lt;p&gt;not a creature was stirring&lt;/p&gt;&#xA;&lt;p&gt;not even my scroll-wheel mouse&lt;/p&gt;&#xA;&lt;p&gt;See all of you Perth geeks tomorrow&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Apologies to Clement Clarke Moore&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Get us WAWA sponsors, we give you cash!</title>
      <link>/blog/2007/06/08/get-us-wawa-sponsors-we-give-you-cash/</link>
      <pubDate>Fri, 08 Jun 2007 02:17:28 +0000</pubDate>
      <guid>/blog/2007/06/08/get-us-wawa-sponsors-we-give-you-cash/</guid>
      <description>&lt;p&gt;Do you know someone that would want to sponsor the WA Web Awards? We still have all one gold level, of the silver sponsorship levels available as well as six category sponsorships that we would like to see filled.&lt;/p&gt;&#xA;&lt;p&gt;The WAWA sub-committee has had some success in securing a number of sponsors but we have exhausted our networks trying to fill the final positions, so now it is your turn.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Selling t-shirts on the web! Some statistics.</title>
      <link>/blog/2007/06/08/selling-t-shirts-on-the-web-some-statistics/</link>
      <pubDate>Thu, 07 Jun 2007 23:56:02 +0000</pubDate>
      <guid>/blog/2007/06/08/selling-t-shirts-on-the-web-some-statistics/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://farm1.static.flickr.com/212/503128786_9e32782500_m_d.jpg&#34; alt=&#34;Picture of the famous shirt :)&#34;&gt;Well, it seems that the controversy over &lt;a href=&#34;http://blog.digg.com/?p=74&#34;&gt;that code&lt;/a&gt; has settled down somewhat since early May, and little ol’ entrepreneurial me has successfully sold a number of t-shirts that rode the wave of hub-bub. It has been amazing seeing some trends in the statistics which I thought I would share with the world.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Some background for those of you who don’t know what I’m talking about&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Australia’s top 60 Web 2.0 applications</title>
      <link>/blog/2007/05/31/australias-top-60-web-20-applications/</link>
      <pubDate>Thu, 31 May 2007 13:32:39 +0000</pubDate>
      <guid>/blog/2007/05/31/australias-top-60-web-20-applications/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.rossdawsonblog.com/&#34;&gt;Ross Dawson&lt;/a&gt;, who is holding a Web 2.0 conference next month has compiled a list of the top &lt;a href=&#34;http://www.readwriteweb.com/archives/the_top_60_web_applications_in_australia.php&#34;&gt;60 Australian web 2.0&lt;/a&gt; companies, and us developers over in here in the west haven’t done to badly!&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;It cool to see that there ARE 60 Australian Web 2.0 companies, I feel a Oz based revolution starting soon – I’m going to make an effort to see what some of the others do over the coming weeks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WA Web Awards entries are open – tickets are on sale</title>
      <link>/blog/2007/05/17/wa-web-awards-entries-are-open-tickets-are-on-sale/</link>
      <pubDate>Thu, 17 May 2007 08:52:51 +0000</pubDate>
      <guid>/blog/2007/05/17/wa-web-awards-entries-are-open-tickets-are-on-sale/</guid>
      <description>&lt;p&gt;Just when you thought the announcement of the Perth BarCamp was too much to handle, the WA Web Awards sub-committee has just announced that entries are now open and tickets are now on sale!&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://wawebawards.com.au/presentation-ceremony/&#34; title=&#34;WA Web Awards&#34;&gt;Tickets can be purchased&lt;/a&gt; from the Website for $80 (Student AWIA members), $110 (AWIA members) or $130 (non AWIA members) – the last two have been great, and this one is promising to be even better.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perth Bar Camp #1 is on!</title>
      <link>/blog/2007/05/16/perth-bar-camp-1-is-on/</link>
      <pubDate>Wed, 16 May 2007 11:14:44 +0000</pubDate>
      <guid>/blog/2007/05/16/perth-bar-camp-1-is-on/</guid>
      <description>&lt;p&gt;Just a quick announcement that Perth BarCamp #1 is finally on!&lt;/p&gt;&#xA;&lt;p&gt;Where: Central TAFE, 140 Royal St, East Perth WA 6004&lt;/p&gt;&#xA;&lt;p&gt;When: Saturday 30th June 2007 9am-5pm&lt;/p&gt;&#xA;&lt;p&gt;Cost: TBA (Probably around $10)&lt;/p&gt;&#xA;&lt;p&gt;So get your thinking caps on, your laptop batteries charged and &lt;a href=&#34;http://www.barcamp.org&#34; title=&#34;Perth BarCamp!&#34;&gt;read up on what it is all about&lt;/a&gt;!&lt;/p&gt;&#xA;&lt;p&gt;After that, go and &lt;a href=&#34;http://www.webindustry.asn.au/events/2007/05/perth-barcamp-1/&#34;&gt;register&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Access your Pandora account outside of the US</title>
      <link>/blog/2007/05/06/access-your-pandora-account-outside-of-the-us/</link>
      <pubDate>Sun, 06 May 2007 14:44:23 +0000</pubDate>
      <guid>/blog/2007/05/06/access-your-pandora-account-outside-of-the-us/</guid>
      <description>&lt;p&gt;I must admit, I’m not actually a Pandora user, but many of my friends have been complaining about the recent close of service to the rest of the world. Well you can get around it quite easily is you have a US hosting account with SSH access, a program that can SSL tunnel (Putty on Windows, OSX/Linux has one built in) and one small change to your host file.&lt;/p&gt;&#xA;&lt;p&gt;If you don’t have a US server and you don’t mind paying a small amount, there are plenty of cheap hosting plans over in the US just Google then and find one – bandwidth is so cheap over there you can probably get an account for a couple of bucks a month.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hex colour tees on sale now!</title>
      <link>/blog/2007/05/04/hex-colour-tees-on-sale-now/</link>
      <pubDate>Fri, 04 May 2007 02:43:24 +0000</pubDate>
      <guid>/blog/2007/05/04/hex-colour-tees-on-sale-now/</guid>
      <description>&lt;p&gt;The wait is over folks, the &lt;a href=&#34;/2007/05/03/get-your-very-own-09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-62-56-88-c0-hex-colour-t-shirt/&#34;&gt;hex colour t-shirt shop&lt;/a&gt; is ready and rumbling! Price is $30 + postage and handling.&lt;/p&gt;&#xA;&lt;p&gt;Go on. &lt;a href=&#34;http://www.hd-dvd-tee.com&#34;&gt;What are you waiting for?&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get your very own 09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63-56-88-c0 hex colour t-shirt!</title>
      <link>/blog/2007/05/03/get-your-very-own-09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-62-56-88-c0-hex-colour-t-shirt/</link>
      <pubDate>Wed, 02 May 2007 16:52:54 +0000</pubDate>
      <guid>/blog/2007/05/03/get-your-very-own-09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-62-56-88-c0-hex-colour-t-shirt/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;http://www.hd-dvd-tee.com/images/t-shirt.png&#34; alt=&#34;The new swanky HD-DVD T-shirt!&#34;&gt;After the huge &lt;a href=&#34;http://www.digg.com&#34;&gt;Digg&lt;/a&gt; &lt;a href=&#34;http://blog.digg.com/?p=74&#34;&gt;fiasco today&lt;/a&gt;, the &lt;a href=&#34;http://www.twitter.com/madpilot&#34; title=&#34;My twitter crew&#34;&gt;twitterati&lt;/a&gt;, after seeing my hex colour representation of the HD-DVD crack code, thought it to be a good idea for shirts to be made up. Well, I though it was a pretty good idea too!&lt;/p&gt;&#xA;&lt;p&gt;I’ve &lt;a href=&#34;http://www.hd-dvd-tee.com&#34; title=&#34;Get your very own 09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-62-56-88-c0 hex colour t-shirt!&#34;&gt;created a site where you can pre-order your t-shirt&lt;/a&gt;. Once the price is finalised (probably around $AU35 + p/h) I’ll email you a discount code (probably a $5 discount) and you can get your hands on one of these pieces of history!&lt;/p&gt;</description>
    </item>
    <item>
      <title>The times, they are a-changing… Part II</title>
      <link>/blog/2007/04/30/the-times-they-are-a-changing-part-ii/</link>
      <pubDate>Mon, 30 Apr 2007 10:59:18 +0000</pubDate>
      <guid>/blog/2007/04/30/the-times-they-are-a-changing-part-ii/</guid>
      <description>&lt;p&gt;It is with a mixture of jubilation and sadness that I announce I am moving on from my current position at &lt;a href=&#34;http://www.bam.com.au&#34;&gt;Bam Creative&lt;/a&gt; to take up a contract position at with &lt;a href=&#34;http://www.perthnorg.com.au&#34;&gt;Norg Media&lt;/a&gt;. Jubilation because of the opportunity to work on an exciting Web 2.0 startup over here in Perth, whilst still being able to pursue &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple time tracking&#34;&gt;my own projects&lt;/a&gt; – sadness because I will be leaving a great bunch of workmates over at Bam.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Twitteresce 0.7 released</title>
      <link>/blog/2007/04/29/twitteresce-07-released/</link>
      <pubDate>Sun, 29 Apr 2007 10:13:46 +0000</pubDate>
      <guid>/blog/2007/04/29/twitteresce-07-released/</guid>
      <description>&lt;p&gt;I just released version 0.7 of &lt;a href=&#34;http://www.madpilot.com.au/twitteresce&#34; title=&#34;Twitteresce - Twitter on your mobile!&#34;&gt;twitteresce&lt;/a&gt;. This release fixes a couple of bugs with the automatic updating system, displays how long ago tweets and direct messages were posted and it now remembers what tweet you were looking at when flicking between the tweet view and read tweet view – trust me this makes catching up out the twitterverse much easier!&lt;/p&gt;&#xA;&lt;p&gt;As always, get it from the &lt;a href=&#34;http://www.madpilot.com.au/twitteresce&#34;&gt;MadPilot&lt;/a&gt; website.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AWIA/Port80/WA Web Awards news for this month</title>
      <link>/blog/2007/04/25/awiaport80wa-web-awards-news-for-this-month/</link>
      <pubDate>Wed, 25 Apr 2007 15:17:12 +0000</pubDate>
      <guid>/blog/2007/04/25/awiaport80wa-web-awards-news-for-this-month/</guid>
      <description>&lt;p&gt;Thankfully the goings on of the &lt;a href=&#34;http://www.webindustry.com.au&#34; title=&#34;The Asutralian Web Industry Index&#34;&gt;WA Web Industry Association&lt;/a&gt; and the WA Web Awards is a little more exciting than this blog post title.&lt;/p&gt;&#xA;&lt;p&gt;The April &lt;a href=&#34;http://www.webindustry.asn.au&#34;&gt;mini-talk podcasts&lt;/a&gt; and slides are up – unfortunately, the podcast gods decided to send Nick’s recording to the Bahamas on a junket, leaving Bronwen’s talk to fend for it’s self. Thankfully, he supplied his talk notes, which should give you a fair idea of what is going on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go on, take the survey. I dare you.</title>
      <link>/blog/2007/04/24/go-on-take-the-survey-i-dare-you/</link>
      <pubDate>Tue, 24 Apr 2007 12:33:19 +0000</pubDate>
      <guid>/blog/2007/04/24/go-on-take-the-survey-i-dare-you/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.alistapart.com&#34;&gt;A list apart&lt;/a&gt; is conducting an &lt;a href=&#34;http://alistapart.com/articles/webdesignsurvey&#34;&gt;online survey&lt;/a&gt; of the web industry. If you are in the industry I would recommend you take 10 minutes out of your day – the more responses, the better the data.&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://alistapart.com/articles/webdesignsurvey&#34;&gt;Have you done it yet?&lt;/a&gt; It’s ok, I’ll wait.&lt;/p&gt;</description>
    </item>
    <item>
      <title>In ur mobilz sending ur tweetz</title>
      <link>/blog/2007/04/22/in-ur-mobilz-sending-ur-tweetz/</link>
      <pubDate>Sun, 22 Apr 2007 05:04:15 +0000</pubDate>
      <guid>/blog/2007/04/22/in-ur-mobilz-sending-ur-tweetz/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.madpilot.com.au/twitteresce&#34;&gt;Twitteresce&lt;/a&gt; 0.5 has been released! This update includes:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;direct messaging support: you can now read you direct messages&lt;/li&gt;&#xA;&lt;li&gt;the ability to “Close” Twitteresce rather than exiting – this means you can leave Twitteresce in the background. It will then popup and alert if you are running in automatic mode and you have a new tweet.&lt;/li&gt;&#xA;&lt;li&gt;a fix for the annoying bug where the the post screen would disappear if new tweets arrived.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;You can &lt;a href=&#34;http://www.madpilot.com.au/twitteresce&#34;&gt;download here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Twitteresce: Twitter on your mobile</title>
      <link>/blog/2007/04/20/twitteresce-twitter-on-your-mobile/</link>
      <pubDate>Thu, 19 Apr 2007 16:29:41 +0000</pubDate>
      <guid>/blog/2007/04/20/twitteresce-twitter-on-your-mobile/</guid>
      <description>&lt;p&gt;I’ve got the &lt;a href=&#34;http://www.twitter.com&#34;&gt;Twitter&lt;/a&gt;-bug bad. Real bad. So much so that I’ve spend a large chunk of my leave this week learning J2ME (Java for mobile phones) by writing &lt;a href=&#34;http://www.madpilot.com.au/twitteresce&#34; title=&#34;Twitter for mobile phones&#34;&gt;Twitteresce&lt;/a&gt;. Twitteresce is a small app that runs on you Java-enabled mobile phone – currently it allows you to download both public and private tweets and post updates.&lt;/p&gt;&#xA;&lt;p&gt;I think it is so much more convenient than trying to use the twitter web page on your phone, or receiving SMSs because you can receive your tweets when you want (The API also seems more stable than the SMS alert system).&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to lose friends and infuriate people.</title>
      <link>/blog/2007/04/10/how-to-lose-friends-and-infuriate-people/</link>
      <pubDate>Tue, 10 Apr 2007 15:57:11 +0000</pubDate>
      <guid>/blog/2007/04/10/how-to-lose-friends-and-infuriate-people/</guid>
      <description>&lt;p&gt;Warning: The following post is an usability rant aimed squarely at the incompetent software developers contracted to Citibank. Please enjoy the ride.&lt;/p&gt;&#xA;&lt;p&gt;When I went to the UK about 4 years ago, I opened a Citibank UK bank account so that I could get paid whilst I was working. The actual account is really great – much better than any account you can get over here in Australia. There are no fees at all – none, nada, zip. At they time they also provided some great overdraft facilities. As I still occasionally do work for UK clients, and as it costs me nothing, it remains opened.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress Hack: Changing your permalink structure without upsetting Google</title>
      <link>/blog/2007/04/06/wordpress-hack-changing-your-permalink-structure-without-upsetting-google/</link>
      <pubDate>Fri, 06 Apr 2007 01:43:48 +0000</pubDate>
      <guid>/blog/2007/04/06/wordpress-hack-changing-your-permalink-structure-without-upsetting-google/</guid>
      <description>&lt;p&gt;WordPress has the ability to generate permalinks, which is great for Search Engine Optimisation. But what can you do if you need to change between them? Changing them in WordPress isn’t a problem – you go to the “Options” tab, click permalinks, and select a new one. However! If others bloggers have linked to your posts, or a search engine has already indexed your blog, their links will break.&lt;/p&gt;&#xA;&lt;p&gt;With a little bit of .htaccess trickery you easily* change between the different options without breaking your old links!&lt;/p&gt;</description>
    </item>
    <item>
      <title>The clothes are back on</title>
      <link>/blog/2007/04/06/the-clothes-are-back-on/</link>
      <pubDate>Fri, 06 Apr 2007 00:30:25 +0000</pubDate>
      <guid>/blog/2007/04/06/the-clothes-are-back-on/</guid>
      <description>&lt;p&gt;Was it &lt;a href=&#34;/2007/04/05/naked-for-a-good-cause/&#34;&gt;good for you&lt;/a&gt;?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Naked for a good cause</title>
      <link>/blog/2007/04/05/naked-for-a-good-cause/</link>
      <pubDate>Thu, 05 Apr 2007 02:05:03 +0000</pubDate>
      <guid>/blog/2007/04/05/naked-for-a-good-cause/</guid>
      <description>&lt;p&gt;“Hey Myles!” I hear you ask, “What’s with the bland website? It was so colourful before”.&lt;/p&gt;&#xA;&lt;p&gt;Well my fine feathered friends, today is &lt;a href=&#34;http://naked.dustindiaz.com/&#34;&gt;CSS Naked Day&lt;/a&gt; an exhibit of what what happens when you correctly separate content from presentation. YOu SHOULD still be able to make sense of what a website is trying to say without relying on CSS to pretty things up. How do I rate?&lt;/p&gt;&#xA;&lt;p&gt;If it has freaked you out to much, it’ll be back to normal tomorrow.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mobile Web and getting copy right</title>
      <link>/blog/2007/04/03/mobile-web-and-getting-copy-right/</link>
      <pubDate>Tue, 03 Apr 2007 10:08:36 +0000</pubDate>
      <guid>/blog/2007/04/03/mobile-web-and-getting-copy-right/</guid>
      <description>&lt;p&gt;Hear ye! Hear ye! Tomorrow is the monthly Port80 meeting, and we have episode III of the Port80 mini-talk franchise. This month, we have &lt;a href=&#34;http://www.nickcowie.com&#34;&gt;Nick Cowie&lt;/a&gt; talking about “The mobile web: why you should care” and &lt;a href=&#34;http://www.perthnorg.com.au&#34;&gt;Bronwen Clune&lt;/a&gt; with “Getting copy right”.&lt;/p&gt;&#xA;&lt;p&gt;I’m looking forward to hearing from both these guys, and you should too! So if you would like to come along, just turn up to the &lt;a href=&#34;http://maps.google.com/?q=Beaufort+St,+Mt+Lawley,+WA+6050,+Australia&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=27.008217,82.265625&amp;amp;ie=UTF8&amp;amp;om=1&amp;amp;z=16&amp;amp;ll=-31.935174,115.871644&amp;amp;spn=0.007047,0.027122&amp;amp;t=h&amp;amp;iwloc=addr&#34;&gt;Velvet Lounge&lt;/a&gt; in Mt Lawley at about 6pm. There is even free food – what more reason do you need? None. I’ll see you then.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Westcoast bloggers website revamp</title>
      <link>/blog/2007/03/20/westcoast-bloggers-website-revamp/</link>
      <pubDate>Tue, 20 Mar 2007 12:00:08 +0000</pubDate>
      <guid>/blog/2007/03/20/westcoast-bloggers-website-revamp/</guid>
      <description>&lt;p&gt;Some of you may have noticed the &lt;a href=&#34;http://www.westcoastbloggers.com&#34;&gt;West Coast Bloggers&lt;/a&gt; button on the sidebar of my blog. Well after some design magic from &lt;a href=&#34;http://www.diversionary.net/daily/&#34;&gt;Si&lt;/a&gt; and CSS mastery from &lt;a href=&#34;http://nickcowie.com/&#34;&gt;Nick&lt;/a&gt;, we are happy to announce the new &lt;a href=&#34;http://www.westcoastbloggers.com&#34;&gt;website&lt;/a&gt;!&lt;/p&gt;&#xA;&lt;p&gt;Oh, and you might notice the new &lt;a href=&#34;http://www.twitter.com&#34;&gt;twitter&lt;/a&gt; widget in thee sidebar too. &lt;a href=&#34;http://www.twitter.com/madpilot&#34;&gt;I’ve succumbed&lt;/a&gt;. We’ll see how long it lasts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WGET: The poor man’s SVN – Using Capistrano on a host with out subversion</title>
      <link>/blog/2007/03/17/wget-poormans-svn-using-capistrano-on-a-host-with-out-svn/</link>
      <pubDate>Sat, 17 Mar 2007 06:40:32 +0000</pubDate>
      <guid>/blog/2007/03/17/wget-poormans-svn-using-capistrano-on-a-host-with-out-svn/</guid>
      <description>&lt;p&gt;I have a client for whom I created a CakePHP-based website for over a year ago. He has since come back to me and asked for a number of changes. I thought I would take the opportunity to use &lt;a href=&#34;http://manuals.rubyonrails.com/read/book/17&#34;&gt;capistrano&lt;/a&gt;, because there are a number of steps I always had to perform when updating his site and I hate having to do them manually.&lt;/p&gt;&#xA;&lt;p&gt;I went about checking all the necessary requirements on his host:&lt;/p&gt;</description>
    </item>
    <item>
      <title>When too much web is never enough…</title>
      <link>/blog/2007/03/14/when-too-much-web-is-never-enough/</link>
      <pubDate>Wed, 14 Mar 2007 13:58:29 +0000</pubDate>
      <guid>/blog/2007/03/14/when-too-much-web-is-never-enough/</guid>
      <description>&lt;p&gt;What a week in web (well for me anyway). &lt;a href=&#34;http://goatlady.wordpress.com&#34;&gt;Kay&lt;/a&gt;, &lt;a href=&#34;http://miles.burke.id.au/blog&#34;&gt;Miles&lt;/a&gt; and myself were invited to a Tuesday morning breakfast put on by the &lt;a href=&#34;http://www.pcb.com.au&#34;&gt;Perth Conference Bureau&lt;/a&gt;. The reason? The PCB gives out grants to help start; and to help bid for conferences which is of great interest to us as AWIA committee members. Anyway – the exciting part: There was a $2000 door prize, which can be used by the winner to attend any conference in Australia. Guess who won? That right! Me! So it looks like &lt;a href=&#34;http://www.webdirections.org/&#34;&gt;Web Directions 07&lt;/a&gt; is now on the cards! So thank you &lt;a href=&#34;http://www.redhorizonevents.com.au/&#34;&gt;Rebecca&lt;/a&gt; for inviting us! There will be no doubt much shenanigans to be had.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One computers, one PocketPC and some funky software</title>
      <link>/blog/2007/03/09/one-computers-one-pocketpc-and-some-funky-software/</link>
      <pubDate>Fri, 09 Mar 2007 10:44:56 +0000</pubDate>
      <guid>/blog/2007/03/09/one-computers-one-pocketpc-and-some-funky-software/</guid>
      <description>&lt;p&gt;I &lt;a href=&#34;/archives/86&#34;&gt;recently wrote&lt;/a&gt; about &lt;a href=&#34;http://www.maxivista.com&#34;&gt;MaxiVista&lt;/a&gt; – some software which allows you to turn an old laptop into a  second monitor. I still use it at work everyday to get three screens of happiness. However , what to do at home? I’ve only got two screens  at home and frankly it makes me sad. As far as I’m concerned three monitors is the holy grail of productivity.&lt;/p&gt;&#xA;&lt;p&gt;My old Compaq iPAQ was sitting next to my laptop looking at me all forlorn – I haven’t used it much lately, now my phone does everything it used to do, so it was just sitting there using electricity. I thought to my self&lt;/p&gt;</description>
    </item>
    <item>
      <title>Calling future speakers!</title>
      <link>/blog/2007/02/27/calling-future-speakers/</link>
      <pubDate>Tue, 27 Feb 2007 13:30:29 +0000</pubDate>
      <guid>/blog/2007/02/27/calling-future-speakers/</guid>
      <description>&lt;p&gt;There has been a lot of &lt;a href=&#34;http://westciv.typepad.com/dog_or_higher/2007/02/diversity_redux.html&#34;&gt;debate&lt;/a&gt; &lt;a href=&#34;http://www.kottke.org/07/02/gender-diversity-at-web-conferences&#34;&gt;recently&lt;/a&gt; about &lt;a href=&#34;http://feeds.feedburner.com/~r/carsonified/~3/96355324/women-at-web-conferences&#34;&gt;diversity&lt;/a&gt; in Web &lt;a href=&#34;http://meyerweb.com/eric/thoughts/2007/02/23/diverse-it-gets/&#34;&gt;conferences&lt;/a&gt;. It is a topic that seems to rear it’s head on a semi-regular basis. As some of the players in the conference circuit have pointed out, maybe we as potential speakers can make the conference organisers’ &lt;a href=&#34;http://tantek.com/log/2007/02.html#d23t0724&#34;&gt;lives a bit easier&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;It is hard to encourage diversity when the pickings are thin – this isn’t to say that the talent from all realms isn’t out there, maybe the people who put on the conferences just haven’t heard about them?&lt;/p&gt;</description>
    </item>
    <item>
      <title>The new AWIA (formally known as Port80) Website is live!</title>
      <link>/blog/2007/02/20/the-new-awia-formally-known-as-port80-website-is-live/</link>
      <pubDate>Tue, 20 Feb 2007 15:06:59 +0000</pubDate>
      <guid>/blog/2007/02/20/the-new-awia-formally-known-as-port80-website-is-live/</guid>
      <description>&lt;p&gt;After a number of late nights and long hours, the volunteers on the AWIA committee have flick the big red switch on the brand-spanking new &lt;a href=&#34;http://www.webindustry.asn.au&#34; title=&#34;Australian Web Industry Association&#34;&gt;AWIA website&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2007/02/awia_screenshot.png&#34; title=&#34;The new AWIA Website&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2007/02/awia_screenshot.thumbnail.png&#34; alt=&#34;The new AWIA Website&#34;&gt;&lt;/a&gt;{.imagelink}Thanks to &lt;a href=&#34;http://www.adrianlynch.id.au&#34; title=&#34;Adrian Lynch&#34;&gt;Adrian Lynch&lt;/a&gt; for the design and &lt;a href=&#34;http://www.cadmium.com.au&#34; title=&#34;Cadmiun Design&#34;&gt;Alex Graham&lt;/a&gt; for the HTML/CSS trickery – the site looks great!&lt;/p&gt;&#xA;&lt;p&gt;My contribution was the &lt;a href=&#34;http://www.rubyonrails.org&#34;&gt;Ruby on Rails&lt;/a&gt; powered &lt;a href=&#34;http://app.webindustry.asn.au/members&#34;&gt;membership system&lt;/a&gt; and &lt;a href=&#34;http://app.webindustry.asn.au/podcasts&#34;&gt;podcast section&lt;/a&gt; (As a added benefit, you get to hear my dulcet tones on the first set of Port80 Mini-talk podcasts). The membership system now allows members greater control of their accounts and uses a secure credit card facility, rather than a third party payment site. If you are an existing member, you should have received a email with your password.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaScript is OK!</title>
      <link>/blog/2007/02/09/javascript-is-ok/</link>
      <pubDate>Thu, 08 Feb 2007 23:10:56 +0000</pubDate>
      <guid>/blog/2007/02/09/javascript-is-ok/</guid>
      <description>&lt;p&gt;A couple of days ago, the regular ol’ &lt;a href=&#34;http://www.port80.asn.au&#34;&gt;Port80 meet up&lt;/a&gt; was on. However, this one was a little different. Firstly, we tried out our new venue – the Velvet Lounge in Mt Lawley. We booked a room so we didn’t have weather and other punters to contend with. It just so happens that the room has a stage. And it was on this stage that the first set of Port80 mini talks took place.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting Things Done tip #342: Scheduling with spreadsheets</title>
      <link>/blog/2007/02/02/getting-things-done-tip-342-scheduling-with-spreadsheets/</link>
      <pubDate>Fri, 02 Feb 2007 11:51:39 +0000</pubDate>
      <guid>/blog/2007/02/02/getting-things-done-tip-342-scheduling-with-spreadsheets/</guid>
      <description>&lt;p&gt;Online GTD (Getting Things Done) services are so hot right now – Hey, I’ve &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple Time Tracking&#34;&gt;released one&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;But I would put money on the fact that most of them originated by the author abusing a spreadsheet at some point and for good reason. Creative use of a spreadsheet can allow you to experiment with different systems until you find one that fits.. Here is my tip for easy and effective job scheduling using nothing more than Excel or &lt;a href=&#34;http://docs.google.com&#34;&gt;Google Spreadsheets&lt;/a&gt; (or what ever spreadsheet software you may choose).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Two computers, three monitors and some funky software</title>
      <link>/blog/2007/01/15/two-computers-three-monitors-and-some-funky-software/</link>
      <pubDate>Mon, 15 Jan 2007 09:25:54 +0000</pubDate>
      <guid>/blog/2007/01/15/two-computers-three-monitors-and-some-funky-software/</guid>
      <description>&lt;p&gt;At &lt;a href=&#34;http://www.bam.com.au&#34;&gt;Bam&lt;/a&gt;, I’ve had a second 19″ Dell LCD sitting idle on my desk for a while. Why has it been idle? Because the video card on my desktop doesn’t support multiple monitors. This was quite depressing as I love dual monitors, but I didn’t have time to find a card that would work for me (My box is half height, and only supports PCI express severely limiting my card choices).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Transparent PNGs in IE6 using nothing more than a conditional statement and stylesheet</title>
      <link>/blog/2007/01/14/transparent-pngs-in-ie6-using-nothing-more-than-a-conditional-statement-and-stylesheet/</link>
      <pubDate>Sun, 14 Jan 2007 15:22:21 +0000</pubDate>
      <guid>/blog/2007/01/14/transparent-pngs-in-ie6-using-nothing-more-than-a-conditional-statement-and-stylesheet/</guid>
      <description>&lt;p&gt;First of all, I know that IE 7 supports transparent PNGs out of the box, but it would seem the uptake isn’t as grand as everyone was hoping – out of readers of Bloggy Hell this month, 23% viewed with IE 6 and 2% viewed with IE 7 and the 88 Miles statistics show something pretty similar, so IE 6 support is still a requirement for most web developers.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Background:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sorry, the servers down – please proceed to login</title>
      <link>/blog/2007/01/11/sorry-the-servers-down-please-proceed-to-login/</link>
      <pubDate>Thu, 11 Jan 2007 13:13:59 +0000</pubDate>
      <guid>/blog/2007/01/11/sorry-the-servers-down-please-proceed-to-login/</guid>
      <description>&lt;p&gt;I was just logging into my online banking system and was confronted with with error message – besides the typo (possbile?) I find it interesting that there is a button inviting you to login in to a system that is un-available… and yes you can proceed to the login window, and it isn’t until you enter your details again before you get a definitive error message. A good example of what NOT to do.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stuff to do this year</title>
      <link>/blog/2007/01/07/stuff-to-do-this-year/</link>
      <pubDate>Sun, 07 Jan 2007 03:44:57 +0000</pubDate>
      <guid>/blog/2007/01/07/stuff-to-do-this-year/</guid>
      <description>&lt;p&gt;I hope that the first week of 2007 has been fruitful – unfortunately I got hit with a stomach bug late in the week which put the brakes on to my running leap into the year. Oh well, there is always next week :)&lt;/p&gt;&#xA;&lt;p&gt;I thought I might list some of the things I’m going to do this year – I refuse to call them resolutions, but I guess that is what they are. 2006 was a busy year with me leaving freelancing and starting work at &lt;a href=&#34;http://www.bam.com.au&#34;&gt;Bam&lt;/a&gt;, starting work on &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple time tracking&#34;&gt;88 Miles&lt;/a&gt; and becoming chairperson of the &lt;a href=&#34;http://www.wawebawards.com.au&#34;&gt;WA Web Awards&lt;/a&gt;, but I can feel an even busier year coming up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Merry Christmas, Happy new year and all that jazz</title>
      <link>/blog/2006/12/22/merry-christmas-happy-new-year-and-all-that-jazz/</link>
      <pubDate>Fri, 22 Dec 2006 03:31:07 +0000</pubDate>
      <guid>/blog/2006/12/22/merry-christmas-happy-new-year-and-all-that-jazz/</guid>
      <description>&lt;p&gt;As is customary on the last working day for Christmas, the tunes are playing and the drinks are flowing, so it is a good time to say Merry Christmas and have a safe holiday.&lt;/p&gt;&#xA;&lt;p&gt;Stay tuned for next year, when hopefully I’ll have a new project to announce ;)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Password Generating Bookmarklet</title>
      <link>/blog/2006/12/06/password-generating-bookmarklet/</link>
      <pubDate>Wed, 06 Dec 2006 15:24:31 +0000</pubDate>
      <guid>/blog/2006/12/06/password-generating-bookmarklet/</guid>
      <description>&lt;p&gt;Some how I managed to get lumped with the un-enviable task of creating email accounts for clients at &lt;a href=&#34;http://www.bam.com.au&#34;&gt;Bam Creative&lt;/a&gt; – we currently have to use an archaic web interface and it takes forever. One of the many things that annoyed me about the system, is it can’t generate passwords for you, so I whipped up this little bookmarklet that will generate an eight character password made up of upper and lowercase letters and numbers. It adds a small div to the very top of the page you are viewing. Clicking the password makes it disappear again.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Latest 88 Miles release…</title>
      <link>/blog/2006/12/05/latest-88-miles-release/</link>
      <pubDate>Tue, 05 Dec 2006 15:25:01 +0000</pubDate>
      <guid>/blog/2006/12/05/latest-88-miles-release/</guid>
      <description>&lt;p&gt;In between my &lt;a href=&#34;http://www.bam.com.au&#34;&gt;day-to-day job&lt;/a&gt; and being sick (Damn you tonsils), I’ve managed to get some more work done on 88 Miles. This release was mainly an internal update, however there are a couple of important, if not major external changes.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Business accounts are now out of beta – there are a variety of plans which should suit most people and you can easily swap betwen plans at your whim. There is even a discount for paying yearly! Check out the &lt;a href=&#34;http://www.88miles.net/pages/pricing&#34;&gt;pricing page&lt;/a&gt; for more details.&lt;/li&gt;&#xA;&lt;li&gt;The trial account has now become a free account! There is now no account expiry date, and you can do all the things that regular accounts can do, including adding unlimited staff members. The only catch is that you can’t clock in more than 40 hours per month. All of the expired trial accounts have been re-enabled, so if you have signed up before but ran out of time, &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple time tracking&#34;&gt;login again&lt;/a&gt; and see what has changed.&lt;/li&gt;&#xA;&lt;li&gt;The reporting system has improved – you can now view graphs in the project summary view&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;I would really love some feedback on the system, so if you haven’t had a play with it in a while, or if you have never had a play with it, go and login and show yourself around :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Welcome to the 21st century</title>
      <link>/blog/2006/12/03/welcome-to-the-21st-cenury/</link>
      <pubDate>Sun, 03 Dec 2006 01:27:40 +0000</pubDate>
      <guid>/blog/2006/12/03/welcome-to-the-21st-cenury/</guid>
      <description>&lt;p&gt;This morning at 2am, Western Australia joined most of the rest of Australia and rolled their clocks forward to begin a three year trial of daylight savings – and about bloody time too!&lt;/p&gt;&#xA;&lt;p&gt;So far, so good – All of my computers at my house have updated, as have the two work servers, and after a quick patch, &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple time tracking&#34;&gt;88 Miles&lt;/a&gt; also made the transition into the new timezone.&lt;/p&gt;&#xA;&lt;p&gt;For those of you that weren’t quite so on the ball with your updating, you can download the &lt;a href=&#34;http://www.microsoft.com/downloads/details.aspx?familyid=c6a2c8fe-abda-4051-a24f-3ec933089747&amp;amp;DisplayLang=en&#34;&gt;Windows update here&lt;/a&gt;, and the &lt;a href=&#34;/downloads/Perth&#34;&gt;Unix/BSD update here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Three development tools you simply must have… Part II</title>
      <link>/blog/2006/12/01/three-development-tools-you-simply-must-have-part-ii/</link>
      <pubDate>Fri, 01 Dec 2006 11:17:47 +0000</pubDate>
      <guid>/blog/2006/12/01/three-development-tools-you-simply-must-have-part-ii/</guid>
      <description>&lt;p&gt;The second development tool in the “simple must have” category would be &lt;a href=&#34;http://manuals.rubyonrails.com/read/book/17&#34;&gt;Capistrano&lt;/a&gt;. Capistrano is a deployment system that was written in ruby and is (not suprisingly) integrates quite nicely with Ruby on Rails. However! you can quite happily use it for any system, because at it’s heart, it is just a remote scripting tool.&lt;/p&gt;&#xA;&lt;p&gt;When you run capistrano, you call a recipe, which is executed on the remote server or servers via SSH and it works really well.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oo-Ahh, it’s all about line and length</title>
      <link>/blog/2006/11/25/oo-ahh-its-all-about-line-and-length/</link>
      <pubDate>Sat, 25 Nov 2006 04:59:31 +0000</pubDate>
      <guid>/blog/2006/11/25/oo-ahh-its-all-about-line-and-length/</guid>
      <description>&lt;p&gt;I’m sitting here watching the Poms getting destroyed by the Australians in the first test of the 2006/07 Ashes and just witnessed an interview with the man of the moment — Glenn McGrath. He just pulled a six wicket haul to knock off the fledgling English batting line-up in less that a day.&lt;/p&gt;&#xA;&lt;p&gt;Anyway, during this interview he said the following when asked about what he thinks about when he is bowling:&lt;/p&gt;</description>
    </item>
    <item>
      <title>WAWAs onVoiceOver</title>
      <link>/blog/2006/11/15/wawas-onvoiceover/</link>
      <pubDate>Wed, 15 Nov 2006 09:38:55 +0000</pubDate>
      <guid>/blog/2006/11/15/wawas-onvoiceover/</guid>
      <description>&lt;p&gt;Ok, ok, I know I should be publishing part II of my fantastic “Three development tools you simply must have…” series, but I just got news of the following article about the WAWAs: &lt;a href=&#34;http://www.onvoiceover.com/articles/wawa/&#34;&gt;http://www.onvoiceover.com/articles/wawa/&lt;/a&gt;. Not a bad write up if I do say so my self :)&lt;/p&gt;&#xA;&lt;p&gt;A big thanks to John Lampard for the article.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Three development tools you simply must have… Part I</title>
      <link>/blog/2006/11/13/three-development-tools-you-simple-must-have-part-i/</link>
      <pubDate>Mon, 13 Nov 2006 15:52:30 +0000</pubDate>
      <guid>/blog/2006/11/13/three-development-tools-you-simple-must-have-part-i/</guid>
      <description>&lt;p&gt;As a web developer, there are a number of tools in my toolbox that I find it hard to live with out. These tools for the basis of my development and deployment procedures and have not only made my life easier on many occasions, but saved my arse on more times than I care to admit.&lt;/p&gt;&#xA;&lt;p&gt;Although these tools excel when used by a team of developers and designers, I still use then when I’m developing my own projects, such as &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple time tracking&#34;&gt;88 Miles&lt;/a&gt;. I’ve split this mini tutorial up into three parts, so that I can be a little bit more descriptive about the actual process.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New JavaScript framework – Tennaxia</title>
      <link>/blog/2006/11/01/new-javascript-framework-tennaxia/</link>
      <pubDate>Wed, 01 Nov 2006 15:42:58 +0000</pubDate>
      <guid>/blog/2006/11/01/new-javascript-framework-tennaxia/</guid>
      <description>&lt;p&gt;I just received an email a couple of days ago from one of the developers of a new JavaScript framework called Tennaxia. The point of the email was to ask permission to use my &lt;a href=&#34;/archives/39&#34;&gt;JavaScript colour picker&lt;/a&gt; as part of the library which is pretty cool. They also included the &lt;a href=&#34;http://tetlaw.id.au/view/blog/fabtabulous-simple-tabs-using-prototype/&#34;&gt;fabtabulous&lt;/a&gt; library from my mate over in Queensland, &lt;a href=&#34;http://tetlaw.id.au&#34;&gt;Andrew Tetlaw&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The library is a group of JavaScripts based on Prototype which provide widgets to use on web pages. Andrew’s widget, for example converts divs into panel tabs. There are a number of &lt;a href=&#34;https://www.tennaxia.net/ujf/examples/&#34;&gt;demos on the Tennaxia page&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up a Rails app on a Media temple grid server</title>
      <link>/blog/2006/10/27/setting-up-a-rails-app-on-a-media-temple-grid-server/</link>
      <pubDate>Thu, 26 Oct 2006 23:53:14 +0000</pubDate>
      <guid>/blog/2006/10/27/setting-up-a-rails-app-on-a-media-temple-grid-server/</guid>
      <description>&lt;p&gt;Now that I’m back from Sydney, I have had a bit more of a change to play with my shiny new MediaTemple grid server account. It looks like I will be pushing &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple time tracking&#34;&gt;88 Miles&lt;/a&gt; over to it over the weekend – everything is setup and ready to go, and just have to do the migrating. I though I would share with you a few thinks I found out along the way…&lt;/p&gt;</description>
    </item>
    <item>
      <title>MediaTemple’s new grid server services</title>
      <link>/blog/2006/10/18/mediatemples-new-grid-server-services/</link>
      <pubDate>Tue, 17 Oct 2006 16:10:10 +0000</pubDate>
      <guid>/blog/2006/10/18/mediatemples-new-grid-server-services/</guid>
      <description>&lt;p&gt;What can you get for $20 per month these days? A &lt;a href=&#34;http://www.basecamphq.com&#34; title=&#34;Basecamp by 37 Signals&#34;&gt;Basecamp&lt;/a&gt; account? 4 &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;88 Miles - Simple time tracking&#34;&gt;88 Miles&lt;/a&gt; accounts? An account of a Grid server with 100Gb of disk space, 100Tb of traffic with support for upto 100 sites? Yeah. Media Temple has just released an insamely priced grid server setup that offers all of that FOR $20 PER MONTH. They even support Ruby on Rails using containers and mongrel. Needless to say, I signed up for account. hopefully it will come through before I leave for Sydney tomorrow afternoon, otherwise I’ll have to wait a week to play.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Eftos web tradition lives on…</title>
      <link>/blog/2006/10/16/the-eftos-web-tradition-lives-on/</link>
      <pubDate>Mon, 16 Oct 2006 10:46:05 +0000</pubDate>
      <guid>/blog/2006/10/16/the-eftos-web-tradition-lives-on/</guid>
      <description>&lt;p&gt;And what a rich, long living and all-encompassing tradition it is. Ok, there is actually only two of us, and I’m the one that has been in the web biz for the longest, but I’m sure that there may or may not be more to follow in our footsteps. And no, I haven’t gone nuts and started speaking in the third person again – the additional body that makes up the other half of “our” is my little brother, &lt;a href=&#34;http://cyrus.eftos.id.au&#34; title=&#34;Cyrus Eftos&#34;&gt;Cyrus&lt;/a&gt;, who just released his new and improved &lt;a href=&#34;http://cyrus.eftos.id.au&#34;&gt;portfolio&lt;/a&gt; and &lt;a href=&#34;http://cyrus.eftos.id.au/blog&#34;&gt;blog&lt;/a&gt; site.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Who could have thought an umlet could be so funny…</title>
      <link>/blog/2006/10/07/who-could-have-though-an-umlet-could-be-so-funny/</link>
      <pubDate>Sat, 07 Oct 2006 01:50:04 +0000</pubDate>
      <guid>/blog/2006/10/07/who-could-have-though-an-umlet-could-be-so-funny/</guid>
      <description>&lt;p&gt;I was just catching up on the tawdry adventures of workmate &lt;a href=&#34;http://www.hilarity100.com/&#34;&gt;Simon’s trip around Europe&lt;/a&gt;. Possibly one of the funniest travel blogs I’ve read (Also probably the ONLY travel blog I’ve read, but if I’d read more, I reckon it would still be up there) and I got a flash back to a couple of weeks ago when he popped up on MSN.&lt;/p&gt;&#xA;&lt;p&gt;He was in the middle of Sweden and we were basking in the light of umlets and agraves (As we do – Simon is a typography enthusist and I just love the sound of the word umlut). Of course funky inflections on characters is almost exclusively an Ikea thing over here in Australia, our alphabet isn’t blessed with anything more interesting than an X. So, anytime I see a swedish word, I immediately think flat-pack furniture, and so our &lt;a href=&#34;http://www.hilarity100.com/blog/2006/10/the_stereotypes_live_on.html&#34;&gt;new swedish car game was borne&lt;/a&gt;…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Happy birthday Bloggy Hell!</title>
      <link>/blog/2006/10/06/happy-birthday-bloggy-hell/</link>
      <pubDate>Thu, 05 Oct 2006 16:00:05 +0000</pubDate>
      <guid>/blog/2006/10/06/happy-birthday-bloggy-hell/</guid>
      <description>&lt;p&gt;Wow. I’ve been blogging for 12 months today. Crazy. So as a birthday present to my blog, I decided to give it a nice coat of (pixilated) paint. Still needs a little work, but it definately an improvement :)&lt;/p&gt;&#xA;&lt;p&gt;Thankyou to those that still read this thing. I’ll send you all a virtual hug.&lt;/p&gt;</description>
    </item>
    <item>
      <title>And that’s a wrap…</title>
      <link>/blog/2006/10/02/and-thats-a-wrap/</link>
      <pubDate>Mon, 02 Oct 2006 03:45:18 +0000</pubDate>
      <guid>/blog/2006/10/02/and-thats-a-wrap/</guid>
      <description>&lt;p&gt;I can’t believe web directions is over already. Two days of talks, meetings, greetings, server admin (more on this later) and drinking. Here is a quick over view of what happened for those of you playing at home:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Thursday&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;John Allsopp talks about Microformats. All this talk of contact databases and vcards gives me an idea…&lt;/li&gt;&#xA;&lt;li&gt;Derek Featherstone rounds up the day with is (from what I have heard) always enteratining talks. This was no different. However, I’m mildly distracted, as I start hacking a new Ruby on Rails site whilst listening to the talk (See talk given by John Allsopp). Yes, if any of you remember seeing a guy testing a website during the talks that was me.&lt;/li&gt;&#xA;&lt;li&gt;And the drinking begins… The Port80 committee is a little late after having an impromptue Port80 committee meeting. However we soon catch up. I have a good long chat with the campaign monitor guys – they are top guys. It’s almost sickening :)&lt;/li&gt;&#xA;&lt;li&gt;Onwards to the Landsdowne for cheap food. Miles is talking up the $5 meals. I soon realise why they are $5 meals. Never the less, the beers are heaping my headache. At this point many of our crew (we have acquired a few Melbanians, some Adelaidenese and a Brisbanite) part, touting tomorrow nights drinking and Andy Clarke’s early morning talk as reasons for an early night. Not so much this entrpid reporter!&lt;/li&gt;&#xA;&lt;li&gt;Myself, Grant and Sarah head over the The County Claire hotel. This has been where the cool kids have been hanging out – many of the speakers and helpers were already there getting tired and emotional about web standards. Drink some more. Meet numerous people. Alas, all too soon, last drinks was announced, and this is where I should have listened to the little voice in my head.&lt;/li&gt;&#xA;&lt;li&gt;A group of four decided that the Landsdowne would once again be an appropriate venue to discuss the finer points of modern dance. A pearl of wisdom if I may. If someone challenges you to an arm wrestle, say no. Although I wasn’t defeated, I still can’t really use my arm properly. Another pearl: If you need to be at a conference session at 9am, don’t get up at 9:30. Yes. I missed Andy Clarke. Everyone has consistently re-iterated how this may have been the talk of the conference, and I missed it. Yeah. That’ll learn me.&lt;/li&gt;&#xA;&lt;li&gt;Next I sat in on Laurel Papworth talking about viral marketing and user-generated content. Pretty interesting. I was listening to the talk, while continuting to hack my new application.&lt;/li&gt;&#xA;&lt;li&gt;The man in blue, Cameron Adams and Kevin yank from sitepoint gave a pretty kick-arse talk on using APIs and mashups, and at this point I actually caome across a term I hadn’t heard of – JSON-P! I use JSON all the time, but this P bit is new and foreign. I will read up shortly. (Still hacking new app)&lt;/li&gt;&#xA;&lt;li&gt;After lunch Jeremey Keith talks about degradable Ajax in a presentation entitled hijax. At this point I start to write the Ajax handlers on the new mystery app, then realise that I really should stop cutting corners and should right it degradably. Thanks Jeremy – you just added a good hour or two on too my app development time. Grrr! To makes matters worse, my battery runs out, so no more app dev for me – my dreams of having it finished before the end of the conference are ruined! :)&lt;/li&gt;&#xA;&lt;li&gt;Next is Derek with a thought provoking and almost forums like presentation on accessibility. He went in to the nitty gritty of how screen readers work. But I think the most important part was that no matter how much tech you throw at the accessibility problem, there is no substitute for sitting down with a user and watching how they work.&lt;/li&gt;&#xA;&lt;li&gt;Now the final keynote address is where the interesting stuff started. Not from a conference point of view (Everything was interesting but from a work point of view). At Bam we went live with three sites a couple of days before I went away (Dumb idea, but they couldn’t wait). Miles gets a message that there was a problem with one of them, no worries – I’ll logged in to MSN and had chat with those left in the office and realised that I’d have to login to fix it. No biggie, except my laptop was out of batteries, as was Miles’. So we borrowed the laptop of one good samaritan, Adrian and we were on our way. Unfortutately, we were in bigger trouble than I thought. We have a rather large client that was been hammering our server the past couple of days, and it was really proving a problem.&lt;/li&gt;&#xA;&lt;li&gt;After the keynote was over we headed back to the port80 hotel (AKA The Vulcan) and I continued to look into the server issue. The server was running at a load of about which means it was running SLOWELY. After a number of phone calls back to Perth, more work on another borrowed laptop at the after party (Thanks Adam), we finally got the server laod to stabilise. If you were wondering, I was the guy sitting cross legged outside the dance room with the black Macbook Pro working :(&lt;/li&gt;&#xA;&lt;li&gt;Finally I could go party (Things weren’t 100%, but they would do). John Allsopp took us to possibily the dogdy-est pub in Sydney – the Star Hotel. This place looked like a mini casino – Coming from Perth where pokies are illegal evey where except the casino, it is weird seeing one-armed bandits all over the place. And I love anywhere which shows harness racing and greyhounds on one of many plasma screens. All class. After that, we took a walk along a street that was littered by asian restaurants. After making fun of the fact that these places usually have gross looking birds hanging in the window, presumably as a sponge for salmonella, we settled on the Superbowl restaurant &lt;a href=&#34;http://www.flickr.com/photos/madpilot/255641122/&#34; title=&#34;Grant in front of pretend gross chickens&#34;&gt;WHICH HAS A PICTURE OF GROSS LOOKING BIRDS HANGING IN THE WINDOW&lt;/a&gt;. You couldn’t make this stuff up.&lt;/li&gt;&#xA;&lt;li&gt;Onward, we continued travelling see weird signs for shops, one of my particular favourites was: &lt;a href=&#34;http://www.flickr.com/photos/madpilot/255677854/&#34;&gt;Doctor Friend Chinese Medicine Acupunture Massage Skincare center&lt;/a&gt;. I’m so tempted to register &lt;a href=&#34;http://www.doctorfriendchinesemedicineacupunturemassageskincarecenter.com&#34;&gt;http://www.doctorfriendchinesemedicineacupunturemassageskincarecenter.com&lt;/a&gt;…&lt;/li&gt;&#xA;&lt;li&gt;It is decided that we should go and meet the cool kids (See County Clare) at Purple sneakers. So We drop myself and Grant walk Miles home (trying to convince him to come out with us – he’s so soft) and we start our journey the 50m up the road we need to go. Or so we though. How would have though that Sydnesy has more than one main road!? We got lost. In a 50m square radius. Then Grant fell over and nearly busted his ankle. It was funny. I guess now in hindsight it would of sucked if he couldn’t walk, but it was still funny :) After offering him a shopping trolley, and his refusal, we finally get to Purple Sneakers.&lt;/li&gt;&#xA;&lt;li&gt;Not only is Purple Sneakers a name of a You Am I song, it is the name of a cool, grungy little Amplifier-esce club in Ultimo. Was much dancing to be had with such classics as “Wave of Mulitlation” by the pixies and Parklife by Blur. Other notable mentions included the Strokes, Regurgitator and much, much more. We left there about 4am.&lt;/li&gt;&#xA;&lt;li&gt;The final parts of the night (now early morning) was to sit up and drink beer with Leon on his balcony that over looks the city and watch a magnificant sunrise.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;So all in all a fun-filled couple of days, with both ups and downs, but we worth it. Roll on WD07!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web directions update #3: Campaign monitor</title>
      <link>/blog/2006/09/28/web-directions-update-3-campaign-monitor/</link>
      <pubDate>Thu, 28 Sep 2006 04:56:50 +0000</pubDate>
      <guid>/blog/2006/09/28/web-directions-update-3-campaign-monitor/</guid>
      <description>&lt;p&gt;I just attended the talk given by Dave Greiner &amp;amp; Ben Richardson who created &lt;a href=&#34;http://www.campaignmonitor.com&#34;&gt;Campaign Monitor&lt;/a&gt; and it was the first talk of today that really hit home. Don’t get me wrong, the other talks have been excellent, but this one, for me anyway was about something that REALLY interested me. That is, creating and marketing a online application that solves a specific problem, all while working somewhere else full time. For those of you plpaying at home, I’m doing exactly that with &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple time tracking&#34;&gt;88 Miles&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cleaning up this town</title>
      <link>/blog/2006/09/28/cleaning-up-this-town/</link>
      <pubDate>Thu, 28 Sep 2006 01:05:18 +0000</pubDate>
      <guid>/blog/2006/09/28/cleaning-up-this-town/</guid>
      <description>&lt;p&gt;Kelly Goto has just finished her talk – very interesting. Maybe not in terms of real concepts, but definately has supplied food for though.&lt;/p&gt;&#xA;&lt;p&gt;Now listening to Jeremy Keith about AJAX. Been eXcellent so far :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>I’m in the foyer of Web Directions</title>
      <link>/blog/2006/09/28/im-in-the-foyer-of-web-directions/</link>
      <pubDate>Wed, 27 Sep 2006 22:46:36 +0000</pubDate>
      <guid>/blog/2006/09/28/im-in-the-foyer-of-web-directions/</guid>
      <description>&lt;p&gt;That’s right kiddies, I have arrived in Sydney and I’m waiting for the first talks to start.&lt;/p&gt;&#xA;&lt;p&gt;I’ve set up a Flickr feed (You can see the results down the bottom of the sidebar, to your right. Please mind the gap.&lt;/p&gt;&#xA;&lt;p&gt;I’ve set up &lt;a href=&#34;http://www.shozu.com&#34;&gt;Shozu&lt;/a&gt; to send any photos I take from my picture phone straight to Flickr in (almost) real time, so enjoy the love. Assuming that I remember to take some photos :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>One week to go…</title>
      <link>/blog/2006/09/21/one-week-to-go/</link>
      <pubDate>Thu, 21 Sep 2006 14:30:54 +0000</pubDate>
      <guid>/blog/2006/09/21/one-week-to-go/</guid>
      <description>&lt;p&gt;…until &lt;a href=&#34;http://www.webdirections.org&#34;&gt;webdirections 06&lt;/a&gt;. I’m starting to get rather excited about it all now. Even though I don’t actually have accomodation yet :)&lt;/p&gt;&#xA;&lt;p&gt;I’ve quite looking forward to meeting the international and national speakers – it will be really cool to meet the big thinkers in the web industry, like &lt;a href=&#34;http://www.molly.com/&#34;&gt;Molly Holzschlag&lt;/a&gt;, &lt;a href=&#34;http://boxofchocolates.ca/&#34;&gt;Derek Featherstone&lt;/a&gt; and &lt;a href=&#34;http://www.stuffandnonsense.co.uk/&#34;&gt;Andy Clarke&lt;/a&gt; (not to mention the &lt;a href=&#34;http://www.webdirections.org/whos-speaking/&#34;&gt;others&lt;/a&gt;!). Hopefully it will leave me motivated and full of beans. Not that I’m not motivated at the moment, but you can never have to much.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Another month flies by…</title>
      <link>/blog/2006/08/31/another-month-flies-by/</link>
      <pubDate>Thu, 31 Aug 2006 14:38:59 +0000</pubDate>
      <guid>/blog/2006/08/31/another-month-flies-by/</guid>
      <description>&lt;p&gt;I’m sorry, I don’t remember authorising anyone to make it the end of August already. The last 30 days have been CRAZY. In no particular order:&lt;/p&gt;&#xA;&lt;p&gt;The business and mobile phone versions of &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple Time Tracking&#34;&gt;88 Miles&lt;/a&gt; was released, so not you can track your time when you are out of the office. The business version allows one person to manage the time of many other people, which makes running a small office much easier.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Make scheduling jobs easier – use web services!</title>
      <link>/blog/2006/08/03/make-scheduling-jobs-easier-use-web-services/</link>
      <pubDate>Thu, 03 Aug 2006 15:16:12 +0000</pubDate>
      <guid>/blog/2006/08/03/make-scheduling-jobs-easier-use-web-services/</guid>
      <description>&lt;p&gt;Web developers deal with scheduled jobs a lot. Any online application that deals with paid subscriptions needs to remind users when they need to pay up. Other apps may require data mining services to be run on a nightly basis.&lt;/p&gt;&#xA;&lt;p&gt;This is pretty easy to do – run a cronjob under *nix or a scheduled task under windows. However, where things get tricky is when you have spent an in ordinate amount of time coding business logic into you application. Duplicating this logic for an external script to be run by cron is pretty silly, not to mention bug-prone. However there is a quick and simple solutions: Web services!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fixing ZeroCfgSvn.exe crashes</title>
      <link>/blog/2006/07/30/fixing-zerocfgsvnexe-crashes/</link>
      <pubDate>Sun, 30 Jul 2006 04:32:11 +0000</pubDate>
      <guid>/blog/2006/07/30/fixing-zerocfgsvnexe-crashes/</guid>
      <description>&lt;p&gt;I use a Toshiba Satellite M70 which has an Intel ProSet Wireless 2200BG Wireless network card.&lt;/p&gt;&#xA;&lt;p&gt;I have had a couple of problems with the wireless card though:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;When I boot, the wireless connects for about a minute, then the connection drops and it reconnects – this plays havoc on my IM programs not to mention slows my boot time considerably&lt;/li&gt;&#xA;&lt;li&gt;After I installed VMWare, the Zero Configurations Service kept crashing. This was annoying to say the least.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;After a little Googling, it became apparent that the issue is the driver. Easy – go and get the latest driver from Toshiba, right? Wrong – I updated to the lastest version and still no fix.&lt;/p&gt;</description>
    </item>
    <item>
      <title>More people to play with</title>
      <link>/blog/2006/07/21/more-people-to-play-with/</link>
      <pubDate>Fri, 21 Jul 2006 02:00:39 +0000</pubDate>
      <guid>/blog/2006/07/21/more-people-to-play-with/</guid>
      <description>&lt;p&gt;Exciting news just to hand! The perth web industry has been going to through a bit of a shake up of late – perpetual freelancers taking full time jobs (That’s me), stalwalts of the industry going out on there own, mergers and aquisitions.&lt;/p&gt;&#xA;&lt;p&gt;“Mergers and aquisitions”, you say?&lt;/p&gt;&#xA;&lt;p&gt;“I’ve heard but nothing!”&lt;/p&gt;&#xA;&lt;p&gt;Yes, dear reader, this little secret has been very well kept (rare for the industry over here) – two major players in the boutique web arena have joined forces in a super-mega-power play of gigantic small business proportions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Repairing the Windows registry using Knoppix</title>
      <link>/blog/2006/07/16/repairing-the-windows-registry-using-knoppix/</link>
      <pubDate>Sun, 16 Jul 2006 13:04:40 +0000</pubDate>
      <guid>/blog/2006/07/16/repairing-the-windows-registry-using-knoppix/</guid>
      <description>&lt;p&gt;Oh, what a fun Sunday morning I had. I wake up, chill out and go make myself some breakfast. At around 11, I decide to go and check my email. Turn on the laptop – Blue screen of death. Huh? Something about Windows not being able to load the SOFTWARE hive because it doesn’t exist or is corrupt. Oh crap.&lt;/p&gt;&#xA;&lt;p&gt;OK. No need to panic. I try booting in Safe Mode. No sugar – same BSOD. Not good.Â  After a quick google, I find &lt;a href=&#34;http://www.kellys-korner-xp.com/xp_sys32.htm&#34;&gt;http://www.kellys-korner-xp.com/xp_sys32.htm&lt;/a&gt; which tells me that I can restore my SYSTEM and SOFTWARE hive to a clean state by booting into the recovery console. For those playing at home, there are a number of files located in the system32/config directory of your windows install that hold some fairly critical tid-bits of information, such as application settings and such. Without them, your computer doesn’t know what is installed, or how they should run.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Beer Economy</title>
      <link>/blog/2006/07/10/beer-economy/</link>
      <pubDate>Sun, 09 Jul 2006 21:50:16 +0000</pubDate>
      <guid>/blog/2006/07/10/beer-economy/</guid>
      <description>&lt;p&gt;As an active member of the Port80 community, I am more often than not in attendence at the &lt;a href=&#34;http://www.port80.asn.au&#34;&gt;Port 80&lt;/a&gt; monthly meetups at the pub. It is amazing what crazy ideas are hatched at these informal meetups (It’s a great system – a group of like-minded people meetup and and talk shop over a couple of beers).&lt;/p&gt;&#xA;&lt;p&gt;I was chatting about &lt;a href=&#34;http://www.88miles.net&#34; title=&#34;Simple Time Tracking&#34;&gt;88 Miles&lt;/a&gt; and SEO and &lt;a href=&#34;http://kay.zombiecoder.com/&#34;&gt;Kay&lt;/a&gt; piped up and said that if I could get people to link to it using the term &lt;a href=&#34;http://www.88miles.net&#34;&gt;Simple time tracking&lt;/a&gt;, it would help my rankings for that particular term. My response (and I don’t know if this says something about me) was:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update: Improved validation in CakePHP for version 1.x</title>
      <link>/blog/2006/07/08/update-improved-validation-in-cakephp-for-version-1x/</link>
      <pubDate>Sat, 08 Jul 2006 08:10:06 +0000</pubDate>
      <guid>/blog/2006/07/08/update-improved-validation-in-cakephp-for-version-1x/</guid>
      <description>&lt;p&gt;I recently started a new project in CakePHP and thought it time to use version 1. But it seems the way that the validator code works has changed, so here is the updated code:&lt;/p&gt;&#xA;&lt;p&gt;The following goes in app_model.php&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;[empty&amp;lt;/span&amp;gt;](http://www.php.net/empty)&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$data&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$data&amp;lt;/span&amp;gt; = &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$this&amp;lt;/span&amp;gt;-&amp;gt;&amp;lt;span class=&amp;quot;me1&amp;quot;&amp;gt;data&amp;lt;/span&amp;gt;;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;!&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$this&amp;lt;/span&amp;gt;-&amp;gt;&amp;lt;span class=&amp;quot;me1&amp;quot;&amp;gt;beforeValidate&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;kw2&amp;quot;&amp;gt;false&amp;lt;/span&amp;gt;;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;![isset&amp;lt;/span&amp;gt;](http://www.php.net/isset)&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$this&amp;lt;/span&amp;gt;-&amp;gt;&amp;lt;span class=&amp;quot;me1&amp;quot;&amp;gt;validate&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;kw2&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;![empty&amp;lt;/span&amp;gt;](http://www.php.net/empty)&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$data&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$data&amp;lt;/span&amp;gt; = &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$data&amp;lt;/span&amp;gt;;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;elseif&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;[isset&amp;lt;/span&amp;gt;](http://www.php.net/isset)&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$this&amp;lt;/span&amp;gt;-&amp;gt;&amp;lt;span class=&amp;quot;me1&amp;quot;&amp;gt;data&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$data&amp;lt;/span&amp;gt; = &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$this&amp;lt;/span&amp;gt;-&amp;gt;&amp;lt;span class=&amp;quot;me1&amp;quot;&amp;gt;data&amp;lt;/span&amp;gt;;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;[isset&amp;lt;/span&amp;gt;](http://www.php.net/isset)&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$data&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$this&amp;lt;/span&amp;gt;-&amp;gt;&amp;lt;span class=&amp;quot;me1&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$data&amp;lt;/span&amp;gt; = &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$data&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$this&amp;lt;/span&amp;gt;-&amp;gt;&amp;lt;span class=&amp;quot;me1&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$errors&amp;lt;/span&amp;gt; = [array&amp;lt;/span&amp;gt;](http://www.php.net/array)&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;foreach&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$this&amp;lt;/span&amp;gt;-&amp;gt;&amp;lt;span class=&amp;quot;me1&amp;quot;&amp;gt;validate&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;as&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$field_name&amp;lt;/span&amp;gt; =&amp;gt; &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$validators&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;foreach&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$validators&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;as&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$validator&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;[preg_match&amp;lt;/span&amp;gt;](http://www.php.net/isset)&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$validator&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;st0&amp;quot;&amp;gt;&amp;amp;#8216;expression&amp;amp;#8217;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$data&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$field_name&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;)&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$errors&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$field_name&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; = &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$validator&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;st0&amp;quot;&amp;gt;&amp;amp;#8216;message&amp;amp;#8217;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$this&amp;lt;/span&amp;gt;-&amp;gt;&amp;lt;span class=&amp;quot;me1&amp;quot;&amp;gt;validationErrors&amp;lt;/span&amp;gt; = &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$errors&amp;lt;/span&amp;gt;;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;kw1&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;re0&amp;quot;&amp;gt;$errors&amp;lt;/span&amp;gt;;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&#xA;&amp;lt;li class=&amp;quot;li1&amp;quot;&amp;gt;&#xA;  &amp;lt;div class=&amp;quot;de1&amp;quot;&amp;gt;&#xA;    &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;ins class=&amp;quot;in&amp;quot;&amp;gt; &amp;lt;/ins&amp;gt; &amp;lt;span class=&amp;quot;br0&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&#xA;  &amp;lt;/div&amp;gt;&#xA;&amp;lt;/li&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;The validation helper method (See my &lt;a href=&#34;/archives/31&#34;&gt;previous post&lt;/a&gt;) looks like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>A really cool idea for a web site: Screeniac</title>
      <link>/blog/2006/07/02/a-really-cool-idea-for-a-web-site-screeniac/</link>
      <pubDate>Sun, 02 Jul 2006 15:08:31 +0000</pubDate>
      <guid>/blog/2006/07/02/a-really-cool-idea-for-a-web-site-screeniac/</guid>
      <description>&lt;p&gt;I was going through my referrer logs for &lt;a href=&#34;http://www.88miles.net&#34;&gt;88 Miles&lt;/a&gt;, and I can across the url &lt;a href=&#34;http://screeniac.com/&#34;&gt;http://screeniac.com/&lt;/a&gt; – I followed it (as if I wouldn’t) and found this really cool site.&lt;/p&gt;&#xA;&lt;p&gt;Bascially, they create “screencasts” of websites in the form of a review. Basically, each review is a short video demonstrating the use of an online application with narration. The &lt;a href=&#34;http://screeniac.com/2006/06/20/88-milesnet/&#34;&gt;link to the 88 Miles review is here.&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This would save so much time if you see a site and want to know if it worth the effort signing up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Busy, busy, busy</title>
      <link>/blog/2006/06/29/busy-busy-busy/</link>
      <pubDate>Wed, 28 Jun 2006 23:10:21 +0000</pubDate>
      <guid>/blog/2006/06/29/busy-busy-busy/</guid>
      <description>&lt;p&gt;Phew! What a week.&lt;/p&gt;&#xA;&lt;p&gt;I’ve started at &lt;a href=&#34;http://www.bam.com.au&#34;&gt;Bam&lt;/a&gt;, and I’m trying to get all of my outstanding contracts completed and trying to organise the WA Web Awards (I’m the sub-committee chairperson).&lt;/p&gt;&#xA;&lt;p&gt;A few quick announcments:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;WA Web Awards entries are open. It’s $25 for Port80 members, $10 for Student Members, and $35 for non-members.&lt;/li&gt;&#xA;&lt;li&gt;88 Miles is but days away from having a full web-service API released. It’s all working, I’m just finishing up the unit tests.&lt;/li&gt;&#xA;&lt;li&gt;Port80 Melbourne is starting up next week. It is piggy-backing on a Ruby on Rails user group meeting. Go and see &lt;a href=&#34;http://miles.burke.id.au/blog&#34;&gt;Miles’ blog&lt;/a&gt; for details.&lt;/li&gt;&#xA;&lt;li&gt;There has been some interest in starting a Ruby on Rails special interest group on the back of Port80 over here, so I’m seriously looking in to that. Miles’ suggestion for a name was caboose. I like it&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;End&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating web services in Ruby on Rails</title>
      <link>/blog/2006/06/25/creating-web-services-in-ruby-on-rails/</link>
      <pubDate>Sun, 25 Jun 2006 15:02:41 +0000</pubDate>
      <guid>/blog/2006/06/25/creating-web-services-in-ruby-on-rails/</guid>
      <description>&lt;p&gt;I’ve been working on setting up web services in Ruby on Rails for &lt;a href=&#34;http://www.88miles.net&#34;&gt;88 Miles&lt;/a&gt; and have discovered somethings that may be useful to other users. It may save someone some time, as the documentation for this particular area is a little sparse.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Putting a colon(:) in front of a return type indicates a primative – i.e an integer or string. If you want to return a complex type, leave off the colon&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;This will return the “Shift” Object. You can return Arrays by using two square brackets:&lt;/p&gt;</description>
    </item>
    <item>
      <title>The times, they are a-changing…</title>
      <link>/blog/2006/06/15/the-times-they-are-a-changing/</link>
      <pubDate>Thu, 15 Jun 2006 06:24:21 +0000</pubDate>
      <guid>/blog/2006/06/15/the-times-they-are-a-changing/</guid>
      <description>&lt;p&gt;Well, &lt;a href=&#34;http://miles.burke.id.au/blog&#34;&gt;Miles&lt;/a&gt; has finally managed to do it – today I signed on as the “Development Team Leader” at &lt;a href=&#34;http://www.bam.com.au&#34;&gt;Bam Creative&lt;/a&gt;. Bam Creative is one of the coolest and most respected boutique web companies in Perth and it is an honour to become part of the team.&lt;/p&gt;&#xA;&lt;p&gt;I’ve done quite a bit of contract work for them in the past and I think we will be a good match. There is of course that whole issue of having two Miles/Myles’ in the office. I don’t think there are too many companies that can boast that combination!&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I work</title>
      <link>/blog/2006/05/17/how-i-work/</link>
      <pubDate>Wed, 17 May 2006 05:01:54 +0000</pubDate>
      <guid>/blog/2006/05/17/how-i-work/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.lifehacker.com&#34;&gt;Lifehacker&lt;/a&gt; have been running a “&lt;a href=&#34;http://www.lifehacker.com/software/how-i-work/&#34;&gt;How I work series&lt;/a&gt;” which has given an interesting look into how their editiors work on a day-to-day basis.&lt;/p&gt;&#xA;&lt;p&gt;Well time for me to blatently rip off the idea :)&lt;/p&gt;&#xA;&lt;p&gt;I challenge all of the &lt;a href=&#34;http://www.westcoastbloggers.com/&#34;&gt;Westcoastbloggers&lt;/a&gt; to answer the same questions on their blogs.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;What desktop software do you use every day?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;I’m still an Outlook user. Originally I used it because it sync’d with my PocketPC nicely, now it is just because I like it. I occasionally use Thunderbird on Linux.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Podcasts and Transcripts from Ideas3 available</title>
      <link>/blog/2006/05/09/podcasts-and-transcripts-from-ideas3-available/</link>
      <pubDate>Tue, 09 May 2006 01:33:11 +0000</pubDate>
      <guid>/blog/2006/05/09/podcasts-and-transcripts-from-ideas3-available/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.port80.asn.au/events/ideas3/&#34;&gt;Ideas3&lt;/a&gt; was the third speaking event organised by &lt;a href=&#34;http://www.port80.asn.au&#34;&gt;Port80 – the Australian Web Industry Organisation&lt;/a&gt; (of which I’m a committee member). The night was a great success with over 90 people showing up to the Melbourne hotel in Perth city.&lt;/p&gt;&#xA;&lt;p&gt;For those of you who missed it for what ever reason, Port80 has made the podcasts and transcripts of the great talks by &lt;a href=&#34;http://blogs.westciv.com/dog_or_higher&#34;&gt;John Allsopp&lt;/a&gt; (Sydney) and &lt;a href=&#34;http://www.markboulton.co.uk/&#34;&gt;Mark Boulton&lt;/a&gt; (UK) available at the &lt;a href=&#34;http://www.port80.asn.au/events/ideas3/&#34;&gt;Ideas3 website&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>88 Miles has a blog</title>
      <link>/blog/2006/05/09/88-miles-has-a-blog/</link>
      <pubDate>Mon, 08 May 2006 16:36:01 +0000</pubDate>
      <guid>/blog/2006/05/09/88-miles-has-a-blog/</guid>
      <description>&lt;p&gt;If you are interested in 88 Miles updates, bug fixes and announcements, you can go to &lt;a href=&#34;http://blog.88miles.net&#34;&gt;blog.88miles.net&lt;/a&gt; and get your fix. Please leave a comment – I really appreciate the feedback.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Time tracking for freelancers and small firms made REAL easy.</title>
      <link>/blog/2006/04/27/time-tracking-for-freelancers-and-small-firms-made-real-easy/</link>
      <pubDate>Thu, 27 Apr 2006 08:10:43 +0000</pubDate>
      <guid>/blog/2006/04/27/time-tracking-for-freelancers-and-small-firms-made-real-easy/</guid>
      <description>&lt;p&gt;I have just launched a new web site called &lt;a href=&#34;http://www.88miles.net&#34;&gt;88 Miles&lt;/a&gt;. I was sick and tired of trying to juggle excel spreadsheets to maintain my client timesheets – I ended up having to double input (Because it was too much of a pain to enter the time directly, so I would write them down first) and would usually leave the task until the end of the week. Not suprisingly this part of my week wasn’t my favourite.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Javascript colour picker based on Prototype</title>
      <link>/blog/2006/04/13/javascript-colour-picker-based-on-prototype/</link>
      <pubDate>Thu, 13 Apr 2006 05:26:54 +0000</pubDate>
      <guid>/blog/2006/04/13/javascript-colour-picker-based-on-prototype/</guid>
      <description>&lt;p&gt;I have written a small colour picker using the Prototype javascript library, which I thought I would share with the world.&lt;/p&gt;&#xA;&lt;p&gt;It is very simple, but does the job suprisingly well. I may very well add extra features to it later on, so watch this space.&lt;/p&gt;&#xA;&lt;p&gt;You can &lt;a href=&#34;/downloads/colourPicker.js&#34;&gt;download the source file here.&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Instructions for use&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Include prototype.js and colourPicker.js in you html&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Create a “target” element and a “trigger” element. The target element is the input tag that will store the colour hex code, so a text box or hidden input will work nicely. The trigger element is the element the user will click to popup the colour picker&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spammers trying to fool your scanner – What the hell did they say?!</title>
      <link>/blog/2006/04/13/spammers-trying-to-fool-your-scanner-what-the-hell-did-they-say/</link>
      <pubDate>Wed, 12 Apr 2006 17:10:35 +0000</pubDate>
      <guid>/blog/2006/04/13/spammers-trying-to-fool-your-scanner-what-the-hell-did-they-say/</guid>
      <description>&lt;p&gt;I find some of the spam I receive quite amusing. I use spam assassin on my server so I end up with quite a number of mails in my spam folder. Sometimes it fun to go through them and see what the spammers are trying to get past my filters. The following techniques often make me chuckle, and sometimes stare at my screen bewildered. Keep in mind that the idea of spam is to try and sell you something.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Image verification for comments in WordPress 2.0</title>
      <link>/blog/2006/04/01/image-verification-for-comments-in-wordpress-20/</link>
      <pubDate>Sat, 01 Apr 2006 02:38:20 +0000</pubDate>
      <guid>/blog/2006/04/01/image-verification-for-comments-in-wordpress-20/</guid>
      <description>&lt;p&gt;I’m sick of blog spam. It is such a pain to have to mark it all as spam (And what exactly does that function do? I’ve seen the same spam come through many times, so it doesn’t seem to learn…)&lt;/p&gt;&#xA;&lt;p&gt;Anyways, here is my quick and dirty hack to add a image verification box on the comments page (Warning WordPress hack ahead – I’ll bother to learn the plugin system one day…)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Things to think about when sending email</title>
      <link>/blog/2006/03/26/things-to-think-about-when-sending-email/</link>
      <pubDate>Sun, 26 Mar 2006 04:20:44 +0000</pubDate>
      <guid>/blog/2006/03/26/things-to-think-about-when-sending-email/</guid>
      <description>&lt;p&gt;I, like most other people in the world receive a lot of spam. I do have a spam filter, but it isn’t perfect, and errs on the side of caution – and for good reason. It is my business account and I don’t want to miss any potential leads. This does mean that I still receive a number of spam emails a day. Now most of these are obvoious spam mails, but a couple have come through that were legitimate. The only reason I opened them is because something about the name or subject triggered a response. Unfortunately, this isn’t always the case.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Indenting highlighted source code with WordPress 2.0</title>
      <link>/blog/2006/03/25/indenting-highlighted-source-code-with-wordpress-20/</link>
      <pubDate>Sat, 25 Mar 2006 10:57:26 +0000</pubDate>
      <guid>/blog/2006/03/25/indenting-highlighted-source-code-with-wordpress-20/</guid>
      <description>&lt;p&gt;Ok, after going away and thinking about the problem, I came up with a quick and dirty (But seemingly effective and compliant) way of doing the indenting. It does require a small modification to the GeSHi code. I’m going to use an empty inline tag (ins tag – which stands for insert – how appropriate…)&lt;/p&gt;&#xA;&lt;p&gt;Open the geshi.php file (See my previous post about code highlighting in WordPress 2.0 if you have no idea what I’m talking about) and find the indent function. Search for all the nbsp elements and replace with:&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress 2.0 mod: Insert highlighted code.</title>
      <link>/blog/2006/03/25/wordpress-20-mod-insert-highlighted-code/</link>
      <pubDate>Sat, 25 Mar 2006 05:07:17 +0000</pubDate>
      <guid>/blog/2006/03/25/wordpress-20-mod-insert-highlighted-code/</guid>
      <description>&lt;p&gt;I have complained before about not being able to insert source code into WordPress when using the TinyMCE Rich Text Editor. Sure, I could switch to plain text mode, but frankly I would prefer an RTE as it makes entering posts much quicker. There is a TinyMCE plugin called &lt;a href=&#34;http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1409990&amp;amp;group_id=103281&amp;amp;atid=738747&#34;&gt;insertcode&lt;/a&gt; written by by Maxime Lardenois which does exactly what I wanted. In fact, it even uses the &lt;a href=&#34;http://qbnz.com/highlighter&#34;&gt;GeSHI&lt;/a&gt; cde highlighter class (written in PHP) to do code highlighting. There is something like 50 different languages which are supported – Very cool.&lt;/p&gt;</description>
    </item>
    <item>
      <title>3rd Degree e-news site publishes it’s first edition</title>
      <link>/blog/2006/03/24/3rd-degree-e-news-site-publishes-its-first-edition/</link>
      <pubDate>Fri, 24 Mar 2006 03:38:47 +0000</pubDate>
      <guid>/blog/2006/03/24/3rd-degree-e-news-site-publishes-its-first-edition/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;http://www.ecu.edu.au&#34;&gt;Edith Cowan University&lt;/a&gt; journalism students have launched the first edition of &lt;a href=&#34;http://3degree.cci.ecu.edu.au&#34;&gt;3rd Degree&lt;/a&gt; – an online e-news site. The site was designed by &lt;a href=&#34;http://www.paulbui.com/&#34;&gt;Paul Bui&lt;/a&gt; and was developed by me in CakePHP.&lt;/p&gt;&#xA;&lt;p&gt;The site allows the 3rd year students to understand the pressure of publishing a weekly news publication, with different teams controlling different parts of the process. If you would like to receive the weekly newsletter, you can &lt;a href=&#34;http://3degree.cci.ecu.edu.au/newsletters/subscribe&#34;&gt;register here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;3rd Degree is the brainchild of Kayt Davies, who is the lecturer in the unit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New port80 event announced.</title>
      <link>/blog/2006/03/16/new-port80-event-announced/</link>
      <pubDate>Thu, 16 Mar 2006 03:52:53 +0000</pubDate>
      <guid>/blog/2006/03/16/new-port80-event-announced/</guid>
      <description>&lt;p&gt;Port80 – the Australian Web Industry, of which I’m the membership officer has announced the next event – &lt;a href=&#34;http://www.port80.asn.au/events/view/ideas3/&#34;&gt;Ideas3&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The event features &lt;a href=&#34;http://blogs.westciv.com/dog_or_higher&#34;&gt;John Allsop&lt;/a&gt; from Sydney, who is a directory of Westciv, creators of &lt;a href=&#34;http://www.westciv.com/style_master/index.html&#34;&gt;Stylemaster&lt;/a&gt;; and &lt;a href=&#34;http://www.markboulton.co.uk/&#34;&gt;Mark Boulton&lt;/a&gt; from the UK who is a noted typographer and designer who is currently working at the BBC.&lt;/p&gt;&#xA;&lt;p&gt;For those of you who aren’t in Perth for the event on April 11, we will be posting the podcasts and photos after the event.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding automatic JavaScipt validators to CakePHP</title>
      <link>/blog/2006/02/13/adding-automatic-javascipt-validators-to-cakephp/</link>
      <pubDate>Mon, 13 Feb 2006 10:44:11 +0000</pubDate>
      <guid>/blog/2006/02/13/adding-automatic-javascipt-validators-to-cakephp/</guid>
      <description>&lt;p&gt;I’m reposting the &lt;a href=&#34;/downloads/validators.php.update.txt&#34;&gt;validators.php&lt;/a&gt; file that I uploaded in my &lt;a href=&#34;/archives/30&#34;&gt;previous post&lt;/a&gt;, but this time adding a function that will automatically generate a javascript function called validate() that returns an array of error strings. This is made possible because CakePHP’s validation model uses regular expressions.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; This function has been written using my modified validator class. Please read my previous post to see what it is all about.&lt;/p&gt;&#xA;&lt;p&gt;The strings and expressions are identical to the ones you get by callling $this-&amp;gt;modelName-&amp;gt;validates() in a controller, so you can avoid a round trip to the server in many cases.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Improved validation using CakePHP</title>
      <link>/blog/2006/02/04/improved-validation-using-cakephp/</link>
      <pubDate>Sat, 04 Feb 2006 08:39:12 +0000</pubDate>
      <guid>/blog/2006/02/04/improved-validation-using-cakephp/</guid>
      <description>&lt;p&gt;I quite like CakePHP – in fact, I find it rather difficult to do site without it now. It makes everything so much easier, especially the ActiveModel classes. However, I have found the validation model a little lacking. The way it is currently implemented only allows one validation expression for each database column, and you need to re-write the validation message on each page the model is used on. This is quite restrictive and error prone – if you need to add a field to the database, you have to update more than one page.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Review: Siemans SpeedStream 6520 ADSL2&#43; Modem Router</title>
      <link>/blog/2006/01/30/review-siemans-speedstream-6520-adsl2-modem-router/</link>
      <pubDate>Mon, 30 Jan 2006 03:57:29 +0000</pubDate>
      <guid>/blog/2006/01/30/review-siemans-speedstream-6520-adsl2-modem-router/</guid>
      <description>&lt;p&gt;With my move to my new house/office, and with Amnet offering static IPs on their ADSL 2 plans it has become time to retire my trusty Alcatel ADSL modem and WRT54G modem/router combination. I went through this process about a year ago when I blew the power supply on my WRT54G and was not impressed with the quality of many of the routers out there. Instead, I modified another power supply and got a UPS (I learnt my lesson)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Australia Day</title>
      <link>/blog/2006/01/28/australia-day/</link>
      <pubDate>Sat, 28 Jan 2006 01:19:41 +0000</pubDate>
      <guid>/blog/2006/01/28/australia-day/</guid>
      <description>&lt;p&gt;Australia Day is my favourite holiday of the year. What has happened in previous years is we would all assemble at Trashy Central for the world famous potato salad contest. It is amazing how, when you say you are having a potato salad contest, ever persons response follows the lines of “I make the best potato salad EVER!” Judged by the party host, the winner gets taken to the restaurant of their choice.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using fcgid instead of fastcgi with Ruby on Rails</title>
      <link>/blog/2006/01/24/using-fcgid-instead-of-fastcgi-with-ruby-on-rails/</link>
      <pubDate>Tue, 24 Jan 2006 03:59:02 +0000</pubDate>
      <guid>/blog/2006/01/24/using-fcgid-instead-of-fastcgi-with-ruby-on-rails/</guid>
      <description>&lt;p&gt;I have fallen victim to the fastcgi zombie process issue. It would seem that there is a problem with FastCGI running under apache2, where many zombie processes can not be killed, which eventually fills up the process table, slowing down the server. My guess is that is using up all of the sockets, thus stopping any other processes from taking connections (THis is speculation as I haven’t really investigated fully)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tagging in Ruby on Rails – easy as you like!</title>
      <link>/blog/2006/01/12/tagging-in-ruby-on-rails-easy-as-you-like/</link>
      <pubDate>Thu, 12 Jan 2006 01:42:03 +0000</pubDate>
      <guid>/blog/2006/01/12/tagging-in-ruby-on-rails-easy-as-you-like/</guid>
      <description>&lt;p&gt;One of my projects required tagging, and I was about to write my own engine, when I can across &lt;a href=&#34;http://dema.ruby.com.br/articles/2005/09/03/tagging-on-steroids-with-rails&#34;&gt;this article&lt;/a&gt;. This library from the article turned adding tags into a five minute job.&lt;/p&gt;&#xA;&lt;p&gt;Kudos to Dema, the developer of it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby on Rails validator plugin for password fields</title>
      <link>/blog/2006/01/11/ruby-on-rails-validator-plugin-for-password-fields/</link>
      <pubDate>Wed, 11 Jan 2006 05:46:05 +0000</pubDate>
      <guid>/blog/2006/01/11/ruby-on-rails-validator-plugin-for-password-fields/</guid>
      <description>&lt;p&gt;I’m working on a site that allows users to create password protected accounts (Pretty much like every other website around) and I needed a way to check that the password field and confirm password field were the same.&lt;/p&gt;&#xA;&lt;p&gt;I saw this as an opportunity to play with plug ins :)&lt;/p&gt;&#xA;&lt;p&gt;You can download the &lt;a href=&#34;/downloads/validates_equality_of.tar.gz&#34;&gt;validates_equality_of plug here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Instructions for use:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Untar the file into the plugins directory of your rails application&lt;/li&gt;&#xA;&lt;li&gt;You now have access to the validates_equality_of method&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Easy!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flogging a dead horse – technologies that don’t belong on the web</title>
      <link>/blog/2005/12/29/flogging-a-dead-horse-technologies-that-dont-belong-on-the-web/</link>
      <pubDate>Thu, 29 Dec 2005 07:43:58 +0000</pubDate>
      <guid>/blog/2005/12/29/flogging-a-dead-horse-technologies-that-dont-belong-on-the-web/</guid>
      <description>&lt;p&gt;The web has come a long way since it’s inception. No longer is it a mismash of ugly looking static pages, posted by scientists. Ecommerce has gone nuts, allowing people to perform online banking and shopping. The advent of blogging has allowed anyone with a net connection to become an author and post their opinions on stuff. Web 2.0 social websites have brought the net back to the people – all in all a pretty exciting time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Network issues yesterday</title>
      <link>/blog/2005/12/20/network-issues-yesterday/</link>
      <pubDate>Tue, 20 Dec 2005 00:57:46 +0000</pubDate>
      <guid>/blog/2005/12/20/network-issues-yesterday/</guid>
      <description>&lt;p&gt;Apologies for those wanting to read my blog yesterday – my service provider managed to kill most of their users connection for about 12 hours :(&lt;/p&gt;&#xA;&lt;p&gt;But I’m back online now which is the main thing…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby, FastCGI and Virtualhosts</title>
      <link>/blog/2005/12/18/ruby-fastcgi-and-virtualhosts/</link>
      <pubDate>Sun, 18 Dec 2005 10:22:04 +0000</pubDate>
      <guid>/blog/2005/12/18/ruby-fastcgi-and-virtualhosts/</guid>
      <description>&lt;p&gt;Now that that &lt;a href=&#34;http://www.madpilot.com.au&#34;&gt;MadPilot Productions&lt;/a&gt; site is live, I wanted to run FastCGI. Even though the site is relatively low traffic, I was intrigued to see whether the speedup would be noticable. It is. Unfortunately, the literature I have seen hasn’t really made it clear how to set this up on a server that runs virtualhosts, so here is how it works.&lt;/p&gt;&#xA;&lt;p&gt;To make a ruby on rails site run in production mode you need to add the following line to the apache.conf file:&lt;/p&gt;</description>
    </item>
    <item>
      <title>MadPilot is on Rails</title>
      <link>/blog/2005/12/17/madpilot-is-on-rails/</link>
      <pubDate>Sat, 17 Dec 2005 09:25:07 +0000</pubDate>
      <guid>/blog/2005/12/17/madpilot-is-on-rails/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;http://www.madpilot.com.au&#34;&gt;MadPilot Productions&lt;/a&gt; website now has a new look and a new scripting engine driving it – Ruby on Rails!&lt;/p&gt;&#xA;&lt;p&gt;Leave your comments and tell me what you think :)Â &lt;/p&gt;</description>
    </item>
    <item>
      <title>Web 2.0 frameworks – fundamental or fluff?</title>
      <link>/blog/2005/12/10/web-20-frameworks-fundamental-or-fluff/</link>
      <pubDate>Sat, 10 Dec 2005 06:53:32 +0000</pubDate>
      <guid>/blog/2005/12/10/web-20-frameworks-fundamental-or-fluff/</guid>
      <description>&lt;p&gt;Over at &lt;a href=&#34;http://www.port80.asn.au&#34;&gt;Port 80&lt;/a&gt;, we recently added a &lt;a href=&#34;http://www.rubyonrails.org&#34;&gt;Ruby on Rails&lt;/a&gt; forum. This was met with both excitement and doubt from forum members. There were those that were excited about a new framework that promises to reduce development time by taking the tedium out of development. There were those who were doubtful about a system that has had a lot of hype, but hasn’t had the market infiltration to match it. Many people think that anyting that rises so quickly will only fall just as quickly. Will this happen to rails? No idea – only time can give us the answer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hmmm, CakePHP</title>
      <link>/blog/2005/12/07/hmmm-cakephp/</link>
      <pubDate>Wed, 07 Dec 2005 02:59:35 +0000</pubDate>
      <guid>/blog/2005/12/07/hmmm-cakephp/</guid>
      <description>&lt;p&gt;As many of you would know, I’m playing with Ruby on Rails at the moment. I am really liking the MVC model that is presents, however, my biggest gripe about it, is that there is very little support hosting wise. &lt;a href=&#34;http://www.pixelbox.net.au&#34;&gt;Pixelbox&lt;/a&gt; over here in Perth is hosting it, but that doesn’t really help me for those clients that don’t want to migrate. I also feel a little loathed to move clients sites to a new technology as the support is not there yet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why web apps can get away with being in beta for a long time</title>
      <link>/blog/2005/11/29/why-web-apps-can-get-away-with-being-in-beta-for-a-long-time/</link>
      <pubDate>Tue, 29 Nov 2005 06:21:08 +0000</pubDate>
      <guid>/blog/2005/11/29/why-web-apps-can-get-away-with-being-in-beta-for-a-long-time/</guid>
      <description>&lt;p&gt;An article was recently posted on the Wall Street Journal website entitled “&lt;a href=&#34;http://online.wsj.com/article_email/SB113268410649404315-lMyQjAxMDE1MzIyOTYyODk0Wj.html&#34;&gt;WSJ.com – For Some Technology Companies, ‘Beta’ Becomes a Long-Term Label&lt;/a&gt;” which asked the question how can companies get away with leaving software in a “beta” state for so long. Google is notorious for doing it – Gmail has been around for at least two years and is still tagged as beta. In fact, many people are using Gmail as their primary email address. There are many real-world analogies as to why you wouldn’t do this in the article, so I won’t bother repeating them here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cookie-less sessions in PHP</title>
      <link>/blog/2005/11/26/cookie-less-sessions-in-php/</link>
      <pubDate>Sat, 26 Nov 2005 01:23:30 +0000</pubDate>
      <guid>/blog/2005/11/26/cookie-less-sessions-in-php/</guid>
      <description>&lt;p&gt;There is a fairly good chance that all but the most trivial dynamic sites will use sessions to emulate a stateful environment. Before the creation of sessions, the developer would have to manually pass all of the variables the next page needed via hidden input fields or cookies. As you can imagine, this is a bit of a security risk. Not to mention that cookies are limited to 4k each – if you have a large number of variables, this can quickly run out.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby on Rails highlighting in Dreamweaver</title>
      <link>/blog/2005/11/19/ruby-on-rails-higlighting-in-dreamweaver/</link>
      <pubDate>Sat, 19 Nov 2005 07:23:05 +0000</pubDate>
      <guid>/blog/2005/11/19/ruby-on-rails-higlighting-in-dreamweaver/</guid>
      <description>&lt;p&gt;I found &lt;a href=&#34;http://www.bdcsoftware.com/dev_rubyonrails_dreamweaver_codehints.php&#34;&gt;this site&lt;/a&gt; that outlines how to setup code highlighting and hinting in Dreamweaver MX.&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;&#xA;&lt;p&gt;In short – the instructions for code highlighting is &lt;a href=&#34;http://rubygarden.org/ruby/ruby?action=browse&amp;amp;diff=1&amp;amp;id=DreamweaverMX&#34;&gt;here&lt;/a&gt; and the xml for code completion is &lt;a href=&#34;http://www.bdcsoftware.com/development/rubyonrails/rubyonrails_api_for_dreamweaver.txt&#34;&gt;here&lt;/a&gt;. (I would duplicate it here, but my version of wordpress doesn’t allow xml :( )&lt;/p&gt;&#xA;&lt;p&gt;The only thing I did different was to create a file called Ruby.xml in the CodeColoring directory with and cut and paste the code colouring xml inbetween codeColouring tags (Have a look at one of the other XML files to get what I mean).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sub-directories on rails</title>
      <link>/blog/2005/11/15/sub-directories-on-rails/</link>
      <pubDate>Tue, 15 Nov 2005 07:18:40 +0000</pubDate>
      <guid>/blog/2005/11/15/sub-directories-on-rails/</guid>
      <description>&lt;p&gt;I haven’t been able to find this anywhere in literature (I’m sure it is somewhere, I just haven’t figured a good enough google search string to find it), but I wanted to be able to use sub directories to partition different areas in Ruby on Rails.&lt;/p&gt;&#xA;&lt;p&gt;e.g /admin /admin/articles etc&lt;/p&gt;&#xA;&lt;p&gt;Ruby on rails uses the following mappings between the URL and the controller:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.url.com/application/controller/action/id&#34;&gt;http://www.url.com/application/controller/action/id&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;which maps to a AcitonController class called controller which has a method called action&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developing for Accessibility</title>
      <link>/blog/2005/11/10/developing-for-accessibility/</link>
      <pubDate>Thu, 10 Nov 2005 04:50:22 +0000</pubDate>
      <guid>/blog/2005/11/10/developing-for-accessibility/</guid>
      <description>&lt;p&gt;Accessibility, as the name suggests is about making websites accessible to as many users as possible. Unfortunately, not everyone on the planet has 20/20 vision, or full use of their hands, which can make using traditional web sites difficult – why should they be disadvantaged by not being able to harness the plethora of information out in cyberspace? Even beyond that, there are many able-body web users that are using non-standard browsers and software to access websites. PDAs, mobile phones and hand held game machines (such as the Sony PSP) are examples of systems that have restricted screen sizes and memory footprints which makes packing a full blown web browser impossible. Another benefit of an accessible website is it makes the search engine robots’ job much easier.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Final Exam Draft – Accessability</title>
      <link>/blog/2005/11/10/final-exam-draft-accessability/</link>
      <pubDate>Thu, 10 Nov 2005 03:07:46 +0000</pubDate>
      <guid>/blog/2005/11/10/final-exam-draft-accessability/</guid>
      <description>&lt;p&gt;I’m about to sit the final exam of my university degree this afternoon. It is for a unit called Internet Technologies, and I have to write two essays – “Pretend you are writing two articles for a technical magazine. You cannot select the topic you covered in your talk or project”. The list of topics are:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;C#&lt;/li&gt;&#xA;&lt;li&gt;ASP.NET&lt;/li&gt;&#xA;&lt;li&gt;Advanced ASP.NET: UserControls&lt;/li&gt;&#xA;&lt;li&gt;SQL Server 2005 &amp;amp; ADO.NET&lt;/li&gt;&#xA;&lt;li&gt;Handling session information in a ASP.NET application&lt;/li&gt;&#xA;&lt;li&gt;Security. Authorization and authentication in ASP.NET, .NET Framework and C#&lt;/li&gt;&#xA;&lt;li&gt;Design Patterns&lt;/li&gt;&#xA;&lt;li&gt;Intro to source code control &amp;amp; Use of CVS&lt;/li&gt;&#xA;&lt;li&gt;Intro to issue and bug tracking. Use of Issue/Bug Tracking software&lt;/li&gt;&#xA;&lt;li&gt;Open Source: The impact on corporate development practices&lt;/li&gt;&#xA;&lt;li&gt;Introduction to SOAP &amp;amp; Web Services&lt;/li&gt;&#xA;&lt;li&gt;XHTML and CSS2&lt;/li&gt;&#xA;&lt;li&gt;XML and XSLT&lt;/li&gt;&#xA;&lt;li&gt;LDAP and DirectoryServices in .NET&lt;/li&gt;&#xA;&lt;li&gt;Refactoring&lt;/li&gt;&#xA;&lt;li&gt;Agile processes &amp;amp; Extreme Programming&lt;/li&gt;&#xA;&lt;li&gt;Advanced C#: New features&lt;/li&gt;&#xA;&lt;li&gt;Team Foundation Server: Collaborative Development Environments&lt;/li&gt;&#xA;&lt;li&gt;.NET Compact Framework: Developing for PDAs and Phones&lt;/li&gt;&#xA;&lt;li&gt;C# and MS.NET vs Java J2EE: Pros and Cons&lt;/li&gt;&#xA;&lt;li&gt;Developing for Accessibility&lt;/li&gt;&#xA;&lt;li&gt;HCI Issues in web applications&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Since my talk was on Design Patterns and my project was on Web Services, I have selected &lt;strong&gt;Developing for Accessibility&lt;/strong&gt; and &lt;strong&gt;XML and XSLT&lt;/strong&gt;. Since I have a pretty bad case of the flu, I thought I might draft them here first to try and coerce my brain into a thinking mode again. Wish me luck :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Insipration</title>
      <link>/blog/2005/11/02/insipration/</link>
      <pubDate>Wed, 02 Nov 2005 13:52:04 +0000</pubDate>
      <guid>/blog/2005/11/02/insipration/</guid>
      <description>&lt;p&gt;…is drinks with your peers and talking about what matters to you most.&lt;/p&gt;&#xA;&lt;p&gt;…is like minded people throwing ideas around, making you think about things you haven’t thought about before&lt;/p&gt;&#xA;&lt;p&gt;…is realising that your opinions do matter, and there is always someone that is interested.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deployment Systems</title>
      <link>/blog/2005/10/31/deployment-systems/</link>
      <pubDate>Mon, 31 Oct 2005 03:24:34 +0000</pubDate>
      <guid>/blog/2005/10/31/deployment-systems/</guid>
      <description>&lt;p&gt;I recently read about the &lt;a href=&#34;http://blogs.warwick.ac.uk/chrismay/entry/deploy_every_30/&#34;&gt;deployment model that Flickr uses&lt;/a&gt;. After picking my self up from the floor, it made me think about my own deployment methods, and I have started implementing a new system, which I though I would share.&lt;/p&gt;&#xA;&lt;p&gt;First off all, let me describe the types of projects that I have to deploy:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Internal MadPilot or Personal projects – i.e. stuff hosted on the server at my house (which also doubles as my development server)&lt;/li&gt;&#xA;&lt;li&gt;External projects that I can take a local copy of to work on&lt;/li&gt;&#xA;&lt;li&gt;External projects that I am forced to work on “off-site” i.e on the clients server.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The deployment system I will describe here covers project type 1 and 2. Not much I can really do with 3, as I have no control over other people’s servers…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oh happy days!</title>
      <link>/blog/2005/10/24/oh-happy-days/</link>
      <pubDate>Mon, 24 Oct 2005 09:30:40 +0000</pubDate>
      <guid>/blog/2005/10/24/oh-happy-days/</guid>
      <description>&lt;p&gt;Just did my honours thesis seminar. Was pretty under-prepared, but I think I swung it. Now, I just need to hand in my poster (It’s at the printers) and all that is left of my university career is one exam. Woot!&lt;/p&gt;&#xA;&lt;p&gt;Six years of toil has culminated to one anti-climatic week. Still a relief though – psychologically, it has been a huge weight lifted, although things that I’ve said I would do “after my thesis” have just moved up a notch on my todo list.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PHP 5 and MVC</title>
      <link>/blog/2005/10/24/php-5-and-mvc/</link>
      <pubDate>Mon, 24 Oct 2005 00:50:53 +0000</pubDate>
      <guid>/blog/2005/10/24/php-5-and-mvc/</guid>
      <description>&lt;p&gt;I quick entry today, as I really should be working.&lt;/p&gt;&#xA;&lt;p&gt;I came across a PHP MVC (Model/View/Controller) framework for PHP 5 – You can think of it as the Rails bit of Ruby on Rails. It is this sort of stuff that will continue to push PHP into the spotlight and allow it to compete with the big boys…&lt;/p&gt;&#xA;&lt;p&gt;It is called &lt;a href=&#34;http://agavi.org/&#34;&gt;Agavi PHP MVC Framework&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web 2.0 – The Ultimate Collaborative Development Environment?</title>
      <link>/blog/2005/10/11/web-20-the-ultimate-collaborative-development-environment/</link>
      <pubDate>Tue, 11 Oct 2005 09:04:45 +0000</pubDate>
      <guid>/blog/2005/10/11/web-20-the-ultimate-collaborative-development-environment/</guid>
      <description>&lt;p&gt;Web 2.0 is about data exchange and classification. Taking a high-level look at software design process one of areas that is good in theory, that fails in practice is data exchange and classification.&lt;/p&gt;&#xA;&lt;p&gt;Think about the last software project you worked on – would a new programmer be able to pick up the documentation and work out what is going on? Could they be able to find the documentation? Was there documentation at all?&lt;/p&gt;</description>
    </item>
    <item>
      <title>The important things…</title>
      <link>/blog/2005/10/10/the-important-things/</link>
      <pubDate>Mon, 10 Oct 2005 14:59:50 +0000</pubDate>
      <guid>/blog/2005/10/10/the-important-things/</guid>
      <description>&lt;p&gt;It is important to step back sometimes, and to look at what is going on. It is all too easy to become completely immersed in things in what is going on in your own life, that you forget how lucky you really are.&lt;/p&gt;&#xA;&lt;p&gt;Today, I went to the launch of the &lt;a href=&#34;http://www.breastsurgerygallery.org&#34; title=&#34;Breast Surgey Gallery&#34;&gt;Breast Surgery Gallery&lt;/a&gt; – a system that was developed by a uni mate of mine, Patrick MacQuillan as his honours project a couple of years ago. My honours supervisor (David Glance) was Patrick’s supervisor, and he asked me to do a quick re-design for their website before the launch today, which is why I was invited.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Design Patterns in PHP</title>
      <link>/blog/2005/10/08/design-patterns-in-php/</link>
      <pubDate>Sat, 08 Oct 2005 04:43:12 +0000</pubDate>
      <guid>/blog/2005/10/08/design-patterns-in-php/</guid>
      <description>&lt;p&gt;I was going thorugh the posts from my old, now-defunct blog, seeing if there was anything I could bring over here — it is amazing how much can change in a year. There was an article I wrote about over use of cool techniques. In that article, I made mention to some new fangled technique called “Design Patterns”. At that point, I had no idea what they were and frankly couldn’t care.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dead-man walking… bar the 11th hour reprieve.</title>
      <link>/blog/2005/10/06/php-ruby-aspnet-perl-hosting/</link>
      <pubDate>Thu, 06 Oct 2005 13:06:56 +0000</pubDate>
      <guid>/blog/2005/10/06/php-ruby-aspnet-perl-hosting/</guid>
      <description>&lt;p&gt;It would be pretty safe to say that PHP is the language of choice for freelance developers and boutique designers. I suppose that this stems from the fact that is freely available, easy to set up and and easy to administer, which results in almost every web host (in Australia at least) running it. In fact, most hosts over here &lt;strong&gt;ONLY&lt;/strong&gt; run PHP.&lt;/p&gt;&#xA;&lt;p&gt;It would be interesting to see why ASP.NET hasn’t got more market penetration than it has – as much as I hate to say it, I’m putting my money on the fact it costs money.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blog number 1 Part II</title>
      <link>/blog/2005/10/06/blog-number-1-part-ii/</link>
      <pubDate>Wed, 05 Oct 2005 19:00:25 +0000</pubDate>
      <guid>/blog/2005/10/06/blog-number-1-part-ii/</guid>
      <description>&lt;p&gt;Talking to the folk at Port80 tonight, I have been re-inspired to start blogging again. This may have something to do with all of the excitement around web essentials 05 (Which I missed – Phooey!). You see all of those lucky enough from Perth to go, have gotten me even more excited about the web industry, and I want to contribute back. So in a way you have &lt;a href=&#34;http://www.burke.id.au/miles2/&#34;&gt;Miles&lt;/a&gt;, &lt;a href=&#34;http://kay.zombiecoder.com/&#34;&gt;Kay&lt;/a&gt; and &lt;a href=&#34;http://adrian.haymarket.com.au&#34;&gt;Adrian&lt;/a&gt; to thank for this… he he he.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About Me</title>
      <link>/about/</link>
      <pubDate>Wed, 05 Oct 2005 18:27:58 +0000</pubDate>
      <guid>/about/</guid>
      <description>&lt;p&gt;Hi! I&amp;rsquo;m Myles. I&amp;rsquo;m a Melbourne-based software engineer and product designer.&lt;/p&gt;&#xA;&lt;p&gt;I have a background in both frontend and backend development and I have a keen interest in product, design and business.&lt;/p&gt;&#xA;&lt;p&gt;I hold a strong belief that everything an engineer builds interacts with a person in some way - I want to understand that interaction and make it better.&lt;/p&gt;&#xA;&lt;p&gt;I believe developers are worth more velocity points on a card wall. They should be included in the whole design process. I want to work in iterative multi-disciplinary teams.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
