Dear Tom

Its funny how the words can find you in the nosiest of moments, as drunk uni-students brush past you like the crisp winter air, with the lights of the city filling the shadows of your footsteps. Each step connects itself in solidarity to every other lonely walk, every twilight city stroll, reviving old memories and feelings lost to all but the mellowest parts of my being.

Goals are, for the most part, eternal. You're never finished with them. You never stop reaching for them. And in the darkness and solitude, your dreams, achievements, and goals lay themselves out across the streets and intersections of the city. Some of those streets you have already tread, illuminated by the moonlight, intimately familiar. Others are marked at the crossroads - their names foreign and the path bumpy - the ones which are yet to be faced at some undetermined time in the future. In this lonely journey, you are faced with crossroads every day, but turning down them remains the hardest choice of your life.

Each crossroad offers a unique challenge, and forms a new characteristic or skill, through which you can find and define yourself. The hobby and curiousity driven ones are the easiest, easily travelled with reading and thought, and you often take these in lieu of the harder paths that lay before you. You have to pick your battles.

But the night sky reveals all, and the roads ignored are as obvious as the nights in which they were discovered. Every time, the night fades a little with the realisation.

This is you, Tom. This is me, every broken self promise and dream and wish almost forgotten about and every time you moved on. Every girl you ever liked where they never knew it, every first-year night rampaging the city with friends, every time you knew what you needed to do to push yourself - just say something, just call someone - but in your mind you had already confined it to a thought almost as soon as it manifested. This is us.

And once in a while, just like every once in a while, something happens. A force from within, a drive, a mighty bulldozer smashes through the walls in your mind and frees you from the containment of self conditioning. You find the space within you to do what you always imagined yourself doing, without a hope for redemption or failure either way. The dark roads light up, the crossroads align. Through this grace, we find the means to break into a new district of our journey.


Moments Pt. 3 - Time

An ecstasy of waves gently lapping the bow of the ship. The sunset casts shadows across the Brisbane cityscape, giving colour to the wind as it spirals across the deck, beckoning passengers closer. We lean away from it's edge, edging towards each other.

The boat docks. Strangers take their seats at the bow. Enter a traveler, run away to Australia to meet the world. Half a world away, she lands sitting next to us. The specifics are a fantastic blur as I snuggle into you.

A euphoria of laughter in the biting wind. Our mysterious traveller, a German, meets two misfits who unceremoniously collided on a casual night in a cold place.

Despite the moment, I couldn't help but savour the feeling.

A rapture of possibility,

us travellers drifting, tumbling,

through a chasm of entropy

yet settling perfectly for the happiness of two young souls.

Pizzawise - Never run out of meat lovers again

How many times have you found yourself in an incredibly large group with the insatiable desire for fresh pizza? But before you can satisfy your watering tastebuds, you must work out the most optimum selection of pizza types so that everyone gets what they want for the lowest price!

A friend of mine came up with the solution - to build a web system that allows all your friends to effortlessly vote for their desired pizza, and display how many of each pizza to order at the end.

While I worked on the backend, two other mates worked on the front end. 10 hours later, PizzaWise was live.

Take a look for yourself here.

Building an IR beacon

Infrared is an incredibly underrated communication medium, used almost exclusively in television remotes these days. Despite its poor range (<10m) it is incredibly useful for short range communication (particularly in robots), and its extremely low component cost, energy usage, and complexity make it a candidate for inclusion in any makers arsenal.

Knowing this, and wanting to develop my circuit board design skills, I resolved to create a circuit that could continuously send out a continuous IR signal, a beacon if you will. This has a number of applications:

  • It can be used as a beacon for robots (or appropriately-tooled humans!) to geolocate or otherwise orient themselves.
  • It can be used to transmit the state of a mechanism (such as a traffic light) for a robot to understand (ie: stop before you get run over, or the door is locked)
  • It can be used for short range communication between a fixed and a mobile peripheral.

Board Layout Board Schematic

I settled on using a PIC microprocessor (a 12F683) as the core of the beacon, due to its extremely low power consumption, low cost and simple pinout. I also used a BC548 general purpose NPN transistor to drive the IR emitter (which was a high power IR LED I picked up from element14), as the IR needed to be driven with several hundred mA when the PIC can only provide 20mA.

I did all my calcuations for max current at 3.3V, and hence choose current-limiting resistors at that value. As such, the board can run at 3-3.5V no problem, though anything over 4V you run the risk of killing the indicator LED or reducing the life of the IR LED. The PIC itself will burn out at 5.5V.

After waiting 4 weeks for the boards to arrive fabricated from china, I put together 5 of them. They work a charm, with ranges of up to 10m or so, and run for about a week on 2 AA batteries. All in all, I'm really happy with this project.

PIC Code PCB Ordering link

A fully assembled IRBeacon

Now to put it to actual use ...

Moments Pt. 2 - Memories

Up the lift, take a left. Cross at the lights, pass the old abandoned house with graffiti on the walls and roof collapsing, duck under the branch from the red-brick-house-that-never-does-their-gardening, and take another left.

Over the hill, the road leans home to a comfy bed and phone charger, winding past a mosaic of memories in the distant city lights.

Sydney Lights

I don't stop walking as memories of freedom, late nights, and flashing lights swirl around me, each step as rhythmic as each night that preceded it. Some memories, almost magical, euphoric, colour the road before me as they do my early adult life. They contrast the calmer nights, a fresh sponge soaking up the nights and heights of the people and places around me. Freedom in sight, never alone.

So every evening on the way home, I walk down memory lane- filled with the scenery of summer nights. Without fail, I cannot help but to smile, remembering the memory of what those lights mean to me.

Moments Pt. 1 - Place

A never-ending wave of water crashing - the music of the deep ocean embracing the ships bow. The vessel barely rocks at all, the tenderness of its movements made up of the same steel which composes the hull. In the distance, the navy blue colour of the water fades to black, broken only by the reflection of the bright, full moon.


The lights on the deck are dim now, casting warm shadows upon pool spaces and lonely eating places. Noise has departed - young children and shoulder-to-shoulder sunbathers replaced with quiet old couples drifting in the sounds of the sea. Below my feet, a thousand smiles line the dining rooms and cinema aisles, jokes are passed and friends laugh to one another, long lost lovers fall in love again for the first time.

And just for an instant, the moment lingers - bright eyes caught and reflected back by the sea around me, beaming, fading. But like wind it passes on, destined to float a lifetime lost, hoping to be rescued - even just for a fleeting moment - by a ponder soul, searching through their sea of memories.

Making the ESP8266 sane

When it first came out, the ESP8266 chip was a game changer. For $5, any electronics hobbyist could get a functional WiFi chip to integrate into their next internet-of-things project. There were only a few problems. Well, a fair few problems.

  • All the documentation is in Chinese. Translated by the community! Yay!
  • All logic is 3.3V, whilst the arduino and other popular platforms use 5V.
  • Peak current consumption at 240mA, far greater than the capacity of most built-in regulators on an arduino or similar board.
  • CH_PD pin needs to be pulled high for the device to function (It took me forever to work this out - most of the tutorials I read seemed to omit this detail)
  • Firmware bugs - occasionally the chip stops responding completely and needs a power cycle.

So I set out to build a circuit that would solve some of these issues - particularly the ones that plagued me. I built a circuit that would translate the voltage level on the receive side, would regulate the current, and provide a jumper for the CH_PD pin.

After a fair few hours fiddling with KiCad, I think I've done it.


The circuit uses only cheap components. A AMS1117 (you can get a pack of 10 for $1 on ebay) is used as the regulator, and it supports up to 1A of current so no worries there. The resistors used in the voltage divider are 0805 SMDs, so no worries there. The LED is once again an 0805 and can be omitted if you don't like color.


I eventually figured out how to add text to the silkscreen, at which point I promptly went overboard and labelled everything relevant, even the direction the ESP8266-01 should be inserted.


Yay! Now to wait a few weeks for the boards to ship from DirtyPCBs so I can assemble and test them. Very suspense, especially since this is only the second ever PCB I have designed (hopefully it works).

If your interested, you can order your own set at dirtyPCBs.

Design files are available here.

The red pill

Its like standing at the edge of a chasm, looking down at the void which waits below. You know what you want to do - what you need to do - but you are afraid to upset the balance of the status quo; to step outside of your comfort zone. Somehow, you take the first step across the fragile bridge, aware that every and any misplaced step would be your last. It has begun; and now only moving forward is an option - fearful that the mere action of turning back would misbalance you and throw you into the void, lost forever.

You have taken The Step into the unknown, leaving your past self, its moments, and its infinity of possibilities to live on only in your memories. All that remains is the hope of a brighter infinity shining out your eyes.

“We cross our bridges when we come to them and burn them behind us, with nothing to show for our progress except a memory of the smell of smoke, and a presumption that once our eyes watered."

-- Tom Motherfucking Stoppard

Cheatsheet for self-run private git repos

This is a personal cheatsheet I made for getting started with git using a private remote repository. I use this to host my respositories on linux machines on the internet (such as VPSes, or other linux boxes with sshd).

Further reading: Here

To setup git on a machine for the first time:
  1. Download git somehow. apt-get install git on ubuntu, and googling for binaries on windows.
  2. Run 'git config --global "emailaddress"
  3. Run 'git config --global "name"
Setting up a new repo (both server and locally):

Can be done on any machine with git and a shell prompt.

The next few steps is to setup a new repo. This only needs to be done once at the beginning.

  1. Appended dev private keys to ~/.ssh/authorized_keys on the server(IF you want key auth)
  2. created new folder in home directory called projectname.git on the server
  3. cd projectname.git on the server
  4. git --bare init on the server
  5. Create local repo with: 'git init' (inside project folder, run on your local machine)
  6. do: git add somefile (run on your local machine)
  7. git commit -m 'initial commit'" (run on your local machine)
  8. setup remote push for that repo: git remote add origin username@hostname:~/projectname.git (run on your local machine)
  9. do git push origin master to push the new repo. May be prompted for password. (run on your local machine)
Committing versions to the repository

There are three logical steps to making a change of your files reflect on your git repository: These are all done locally.

  1. Staging (marking for commit) git add -a - adds all untracked files to staging git add somepath - adds a specific file to staging (you can also do (git add -A_ which addes all changes/files to staging)
  2. Commit (adding them to local repository) git commit -m "Commit message goes here" - commits all changes which were staged earlier
  3. Push (sending to remote repository) git push origin master - to do if git push doesnt work'
Cloning / Downloading a copy

Downloading the repo can be done with: 'git clone username@hostname:~/projectname.git