I'm currently doing research towards a PhD in the Quantum Optics and Information Laboratory at Griffith University. For a list of recent papers, see the Publications section of my CV.
Below are some older nontrivial projects and literature reviews I've completed during my studies. I try to use open-source software (e.g. pyxplot, ipe, texlive) where I can. I would highly recommend lyx (or, alternatively, straight LaTeX) to anyone writing anything that contains mathematical formulae (and even some things that don't).
My Honours thesis. In it I detail the experiment I performed, supervised Dr. Geoff Pryde and in collaboration with Ben Lanyon (now Dr.) to implement a proof-of-concept optical non-destructive unambiguous state discrimination device in order to explore advanced quantum measurements of photonic qubits. We built and combined a QND device (in the form of a CNOT gate) and an unambiguous state discriminator.
Completed October 2006, you can see the report here (620.8 KiB PDF). It's 86 pages in total, and includes a section introducing the context and what we are attempting to explore, sections detailing the theory and implementation of both components that make up our circuit, and sections demonstrating the operation of the three configurations of the circuit—each of the two components separate, then both combined. This one was fun and interesting and for the most part actually made sense to me, and I have continued in this field for my PhD.
There are lots of different kinds of noise that affect systems that are based on quantum mechanical phenomena. These noises are generally insignificant for larger systems, though as our technology is becoming smaller and employing more fundamental physics of the universe, understanding these noises is important. I wrote this short overview of a number of different kinds of quantum noise, where and why they tend to occur, and ways to mitigate them if possible. Completed 4 June 2006. You can see the report here (196.1 KiB PDF).
This was my major project for the Advanced Stream of the Bachelor of Science. I did it under the supervision of Prof. John Dobson with initial help by Prof. Frank Dehne. The aim of this project was to see if using a wavelet transform on a 2D set of data related to van der Waals forces would produce another data set that would be relatively easier to invert. Van der Waals forces are interaction forces between atoms that are insignificant in most systems, but are significant in graphitic systems.
This was a challenging project, but quite fun and interesting, and I managed to produce some very pretty and colourful graphs and images by the end of it. And I showed that using wavelet transforms were likely to help. Completed 29 October 2004. You can see my report here (1.5 MiB PDF). Sixty-three pages of waveletty goodness. Included is an introduction to the problem, an introduction to wavelets, and my results of trying to combine the two. To keep the filesize down many pictures are encoded lossily, so you may see artifacts in them that are not actually due to the wavelet transform process.
I did this under the guidance of Assoc. Prof. Evan Gray. The aim of this project was to generate a virtual crystal and calculate its Madelung constant, using Fortran 77. (Yes, Fortran 77. I actually managed to accidentally implement a kind of working recursion in Fortran 77; which I think is impressive considering F77 has no stack.) I ended up getting some pretty good results, too, and in theory it should expand to a hypothetical fourth dimension, or even higher. That probably doesn't mean anything to the real world, but I think it's pretty cool to be able to do. Completed 31 October 2003. You can see my report here (183.1 KiB PDF).
While writing a paper, I chose to use the nature.cls LaTeX class by Peter Czoschke. I had two problems, though: The class is a little behind Nature's current standard, and the single-column preprint style it produced was less than comfortable to read. I solved these problems by modifying Peter's work. My version of nature.cls, here (V1.1, 5.2KiB), implements the Methods Summary section, which is missing in the original nature.cls. More significantly, I have created natureprintstyle.cls, here (V1.0.1, 5.2KiB), a branch of nature.cls which emulates the in-print style of Nature. This is a drop-in replacement for nature.cls, for when you'd like to get a feel for how the end result may look, or if you're sick of looking at the preprint style. Note that this is only an emulation of style based on my own observations and measurements—I do not claim that it accurately represents the true style of Nature. At best it could only be used as a rough guide.
If you are preparing a paper for submission to Nature, and you are using LaTeX to do it, it's worth noting this: My experience was that after my paper was accepted for publication, I was asked to convert it to a Word document before proofing began. And the day I spent converting the thing to Word, including all the equations, was most certainly not a fun day. (Word really is painful to use.) Even though Nature claims to accept PDF, it seems that this only applies for the initial stage and peer review. [Insert standard anecdote-versus-data disclaimer here.]
These are little utils and scripts I've written.
These programs, alphatools, are a couple of tools that process images to produce alpha mapped images. If you want more detail on how exactly these programs work, or proof of the math involved, you can try asking, but I might've forgotten by now.
The first, mergealpha, takes two images, one of something in the foreground with a white background, the other with the same thing in the foreground but a black background, and produces an image with a translucent background and proper alpha blending in-between.
The second, mergecloth, extends the idea of mergealpha. Say I want an image of a person or RTS unit to have clothes or coloured insignia that I can manipulate separately so that I can change its colour, without resorting to running the whole image though a dumb colour filter. (See FreePop and you might get a clue what I'm talking about.) The process here involves rendering the image twice, once with blue clothes with a black background, the other with red clothes with a white background. The red and blue lets the program know what parts are the clothing, and the white and black dictates the alpha levels in the background.
Run the two images through mergecloth and it will produce two image files, one containing a white alpha mapped representation of the cloth/insignia overlay, the other containing an alpha mapped background.
Both are console programs, both work on png files, and both need libpng.
I wrote and used this before I discovered svk. Give this program two directory names as args and it'll attempt to copy missing and changed files and directories from one to the other, and vice-versa, ignoring permissions and similar irrelevancies. It also supports simple ignore lists so it won't copy files with certain name patterns. I couldn't find something simple like this so that I could synchronise my working floppy with my hard disk, so I wrote one myself. briefcase needs Haskell. It'll automatically copy missing files, but won't change any existing files that differ without asking first. Makefile's included. Unpack it and run “make” to compile, and “make install” to install to /usr/bin by default.
This is a pair of scripts to archive and restore music CDs, preserving as much of the original CD's layout as possible. Backup files are compressed using flac (for the first session) and gzip (for all other sessions). These can then be put on your favourite backup medium (e.g. burnt to a DVD) and later recovered in the event that the original is scratched, snapped, or eaten by microbes. Get it here.
I wanted a slideshow program that would understand the concept of image sets, not only being able to shuffle individual images, but also to shuffle sets of images around. So I wrote one. It also served as an experience in learning Python, so don't expect it to be especially good Python code. Requires Python, Python Imaging Library, pygame (only because the otherwise great Python Imaging Library stupidly doesn't support interlaced PNGs), and pyopengl. I'm not sure what performance is like on a system without 3D hardware, but it should be okay—slipshow doesn't do anything too complicated through OpenGL. Anyways, the Python script is here.
These are projects that I've worked on. They have their own separate web pages.
Various projects or other things I made that don't really fit in any of the above go here.
I made a set of Wolverine claws for a costume party in 2006 out of silver-painted wood, with no visible supporting structure on the outside. Here's how.
Over the 2006/7 Christams break I had a go at making a personal video recorder (PVR)—a “MythBox”. What started out as an interesting, fun little project to work on turned into a horrible nightmare and a total failure. Read here.
Still recovering from that disaster I managed to walk right into another one. I got a new case and quieter power supply so that I could run my desktop machine full-time and act as my PVR, server, etc. The nightmare continues.