Strict Standards: Redefining already defined constructor for class Object in /home/tonymilne/ on line 63

Strict Standards: Non-static method Configure::getInstance() should not be called statically in /home/tonymilne/ on line 47
Tony Milne

RHoK Melbourne: VicAlerts and VicSafe

An overview of our Random Hacks of Kindness Melbourne project.

on 7/6/11

On the weekend I worked amongst a small but dedicated team of developers to set in motion a disruptive change that Victoria so desperately wants and needs.

The event was RHoK Melbourne, a weekend hack-a-thon held at Swinburne University in their new ATC (Advanced Technologies Centre) building.

read more →

My blog, as if written in Node.js - part 1.


An introduction to web development using Node.js and express.js.

on 22/11/10

Node.js is a server side JavaScript platform built on top of Google's V8 JavaScript engine. It is centered around a single-threaded, event based I/O, making it suitable for building scalable network programs. As such, building a blog does not really take advantage of Node's true strengths, but it does provide a familiar topic as the basis for our learning.

When getting started with Node, the choice of which Node modules to use is a little overwhelming. I had a quick look through a lot of them and tried to map out a stack for my application - I settled with: express.js web framework (which is built on Connect), EJS Embedded JavaScript templates and a Node Mysql module by Felix G. whom I know produces great quality work from all of his CakePHP contributions.

read more →

Clear cached Facebook share content.


A quick how-to expire cached Facebook share content, on demand.

on 14/11/10

I recently updated some description text on a page that contained Facebook share functionality, but Facebook wasn't displaying the text I had just updated. Why? Caching.

As you can imagine, a website the size of Facebook needs to have some scaling qualities and caching is definitely one of them. Once the link was shared for the first time, Facebook fetched the page, parsed it and cached the content that it found. Here's a few tips and tricks to beating the Facebook share cache, so you can update your Facebook share content and have it take effect immediately.

read more →

Multi-file drag and drop AJAX uploads.


GMail like AJAX file uploads using Andrew Valums ajax-upload plugin.

on 4/11/10

I have been using a neat plugin for file uploads recently called ajax-upload plugin. The plugin is written by a web developer named Andrew Valums.

I started out searching for a file upload solution that would fit the following key goals:

  • Support multiple files.
  • Support drag and drop events similar to GMail (where browser capability permits).
  • Degrade nicely when JavaScript is disabled or the browser doesn't support certain features.
  • Be jQuery based, because jQuery is awesome.

Anyways, I searched around for ages and couldn't find anything that came close to what I was after. I was just about to start cutting my own solution when came across Andrew's plugin.

read more →

Blog housekeeping: 3rd August 2010.


A domain, Twitter OAuth, Akismet spam detection and related posts.

on 2/8/10

This is a quick housekeeping post to describe some of the updates I've made to this website recently.

read more →

MIGS payments in Joomla VirtueMart.

A VirtueMart payment method plugin to support MIGS 2-party payments.

on 30/5/10

This is a follow-up post in response to Mike Soden's comment on my post Integrate MIGS 2-party payments in PHP - in which Mike asked for some help getting MIGS 2-party payments working in VirtueMart.

I took a quick look at some of the other attempts at MIGS integration into VirtueMart, but I wasn't convinced about their quality; they looked incomplete and sloppy. So, I decided to gut an existing one and roll my own.

I wrote this one using VirtueMart 1.1.4 stable running on Joomla 1.5.17. It will likely work for other versions of VirtueMart and/or Joomla, but I make no promises.

read more →

Integrate MIGS 2-party payments in PHP.


A MasterCard Internet Gateway Service solution using cURL and PHP.

on 9/5/10

We needed a solution to handle 2-party payments to a Bendigo bank merchant account for one of our websites. Although I've only implemented 2-party payments, the following notes and code should provide a good foundation for adding additional functionality.

In 2-party payments the application connects directly to the Virtual Payment Client (VPC) using a form POST operation that directly returns a response. This is in contrast to 3-party payments where the payment server manages the payment pages (and collection of the cardholder's card details) from their website.

Like many other banks in Australia, Bendigo bank are using MIGS to facilitate card not present transactions, via their virtual payment client API. MIGS allows payments from other card providers (not just MasterCard), including: Amex, Bankcard, Diners Club and Visa.

At a high level:

  • we capture the user's card details via a form on our own website.
  • we package up the payment data according to MIGS documentation.
  • we send the request to the MIGS payment gateway using cURL.
  • we get a response from MIGS containing a response code and message.
  • we check the response code and handle successful/invalid requests accordingly.

read more →

A Gateway class for Amfphp remoting.


Featuring usage instructions, source code and Chuck Norris!

on 29/3/10

I thought I'd share a bit about the ActionScript Gateway class we've been using in our Flex/Amfphp projects at work.

The Gateway class follows the Singleton Pattern and takes inspiration from the common jQuery practice of using anonymous functions for event handlers. E.g:

$("a.example").click(function() {
	// Link clicked. :D

I will explain the usage and benefits using code snippets from a sample application that you can demo and download below. If something doesn't quite make sense, try looking at the full source code or post a question in the comments.

read more →

Hi, I'm Tony. This is my blog.


Introducing my new blog, you know - a hello world kinda post.

on 11/3/10

As a web/software developer with an IT degree and years of knowledge and professional experience, it's a little startling that I don't have my own website. Well, here it is: a blog to share my thoughts about the web!

The content on this site will be primarily technical focused, including code I have written and technical solutions to problems I have faced. I intend to write about the following topics: Html, Css, JavaScript, jQuery, Php, CakePHP, Joomla, Flex, ActionScript, Amfphp, Sphinx and iPhone Development (amongst other things) as these are the frameworks and technologies I have been working with most recently.

read more →

who am I?

I live in Melbourne. I work at Inlight Media. I'm passionate about web and software development. I like jQuery, CakePHP, Flex. I can code. I can't draw. I play basketball with the Spiderpigs and the Generals. I love snowboarding in the winter and wakeboarding in the summer. I play computer games too often.