Planet Maclab

January 16, 2018


Blockchain-to-Ponzi Safari Extension

I have made a Safari (macOS) extension that helpfully replaces some words in webpages. Download it here: ponzi scheme-to-ponzi-scheme v1.safariextz.

Please enjoy. Source release available on GitHub. Based on classic “Cloud to Butt” technology.

I take no responsibility for anything that may happen to your system from using this. It doesn’t phone home (other than whatever Apple might do with signed Safari extensions), and doesn’t do anything but some JS find-and-replace.

January 16, 2018 04:37 AM

January 09, 2018


Learn Unity game development

We’re excited to be teaching Unity game development live online next week, through O’Reilly Media’s Safari platform! It’s free for Safari members. Learn to build video games with one of the most popular engines around. January 17 and 18, 6PM to 9PM, AEDT.
We’re also running the same workshop again, at the end of February, if that date suits you better! Check it out.

January 09, 2018 12:38 AM

December 12, 2017


Information Behaviours of Cinemagoers

This survey is now closed to submissions! Thanks!

My partner is doing an undergraduate research project where she’s looking into the Information Behaviours of Cinemagoers. As part of this, she’s conducting a survey exploring how prevalent different cinema related information behaviors are with websites/mobile apps. If you’ve used—or attempted to use—a mobile-based app or website to access cinema information, then you can help by completing a brief survey!

December 12, 2017 01:52 AM

October 24, 2017


Night in the Woods

We’re making Night in the Woods for mobile. We’re very excited. The press is also very excited. Learn more on the Secret Lab website.

October 24, 2017 12:40 AM

September 29, 2017


Advanced iOS 11 + Swift 4 online training [October 2017]

The registration period for this training has now passed! Follow me on Twitter, or check back here to keep up to date with future training.

Live online at the Australian-friendly time of 2PM to 5PM (Sydney)!

Included with your Safari subscription!

September 29, 2017 01:51 AM

September 20, 2017


The Future of Work in Tasmania

I’m really excited to be on a panel at the University of Tasmania in a few weeks on The Future of Work in Tasmania! It’s a free event, and there are refreshments! Come along! You can learn more, and register, on the UTAS website.

September 20, 2017 09:20 AM

September 19, 2017


Content for you!

This is a bit of a bump of an older post, with a few updates to highlight the new stuff we’ve been working on for our publisher, O’Reilly Media.

Our brand new Unity game development book is out! This is one of the most exciting books we’ve ever written, and you can own it now! (Or read it on O’Reilly’s Safari Learning Platform!)

We also have a bunch of awesome video training on game design, game art, game programming, and game promotion, also available on Safari:

We’ve also got some recent “Learning Path” videos, exclusively out on O’Reilly’s Safari platform:

Our newest books are also available now:

One of the best ways to look at all the training and material we create is on O’Reilly’s Safari platform (which has a free trial). It’s like Netflix for technical training and books.

More soon! ❤

September 19, 2017 04:39 AM

September 05, 2017


Advanced iOS 11 + Swift 4 online training [September 2017]

The registration period for this training has now passed! Follow me on Twitter, or check back here to keep up to date with future training. 

Included with your Safari subscription (or free trial!)i

September 05, 2017 11:15 PM

August 08, 2017


Mobile Game Development with Unity

“If you want to build any kind of game for mobile platforms, you’ve got
to take a look at Unity. This book is an excellent, thorough, and
seriously fun guide to putting together gameplay in one of the best game
engines out there for indie developers.”

Adam Saltsman, Creator of “Canabalt” and “Overland” at Finji

“The best way to learn how to use a game engine is by getting your hands
dirty and building your own projects. In this book, Paris and Jon guide
you through the creation of two radically different games, giving you
invaluable hands-on experience with a wide range of Unity’s features.”

Alec Holowka, Lead Developer of “Night in the Woods” and “Aquaria” at
Infinite Ammo

“This book changed my life. I now feel inner peace, and I’m pretty sure
I can see through time.”

Liam Esler, Game Developers’ Association of Australia

Our new book is (almost) out! You can read it on Safari, or buy it on Amazon, or at your favourite bookseller!

August 08, 2017 02:30 AM

August 03, 2017


Advanced iOS 11 + Swift 4 online training

The registration period for this training has now passed! Follow me on Twitter, or check back here to keep up to date with future training. Included with your Safari subscription (or the free trial!)

August 03, 2017 06:43 AM

June 22, 2017


Hire me!

tl;dr: I’ve recently moved to the San Francisco Bay Area, received my US Work Authorization, so now I’m looking for somewhere  to work. I have a résumé and an e-mail address!

I’ve worked a lot in Free and Open Source Software communities over the last five years, both in Australia and overseas. While much of my focus has been on the Python community, I’ve also worked more broadly in the Open Source world. I’ve been doing this community work entirely as a volunteer, most of the time working in full-time software engineering jobs which haven’t related to my work in the Open Source world.

It’s pretty clear that I want to move into a job where I can use the skills I’ve been volunteering for the last few years, and put them to good use both for my company, and for the communities I serve.

What I’m interested in doing fits best into a developer advocacy or community management sort of role. Working full-time on helping people in tech be better at what they do would be just wonderful. That said, my background is in code, and working in software engineering with a like-minded company would also be pretty exciting (better still if I get to write a lot of Python).

Why would I be good at this? I’ve been working on building and interacting with communities of developers, especially in the Free and Open Source Software world, for the last five years.

You can find a complete list of what I’ve done in my résumé, but here’s a selection of what I think’s notable:

So, if you know of anything going at the moment, I’d love to hear about it. I’m reachable by e-mail ( but you can also find me on Twitter (@chrisjrn), or if you really need to, LinkedIn.

June 22, 2017 07:42 PM

February 15, 2017


Two Weeks’ Notice

Last week, a rather heavy document envelope showed up in the mail.

Inside I found a heavy buff-coloured envelope, along with my passport — now containing a sticker featuring an impressive collection of words, numbers, and imagery of landmarks from the United States of America. I’m reliably informed that sticker is the valid US visa that I’ve spent the last few months applying for.

Having that visa issued has unblocked a fairly important step in my path to moving in with Josh (as well as eventually getting married, but that’s another story). I’m very very excited about making the move, though very sad to be leaving the city I’ve grown up in and come to love, for the time being.

Unrelatedly, I happened to have a trip planned to Montréal to attend ConFoo in March. Since I’ll already be in the area, I’m using that trip as my opportunity to move.

My last day in Hobart will be Thursday 2 March. Following that, I’ll be spending a day in Abu Dhabi (yes, there is a good reason for this), followed by a week in Montréal for ConFoo.

After that, I’ll be moving in with Josh in Petaluma, California on Saturday 11 March.

But until then, I definitely want to enjoy what remaining time I have in Hobart, and catch up with many many people.

Over the next two weeks I’ll be:

If you want to find some time to catch up over the next couple of weeks, before I disappear for quite some time, do let me know.

February 15, 2017 08:33 PM

January 01, 2017


My 2016 Highlights

2016 was, undeniably, a length of time containing 366 days and a leap second.

For me, there were a bunch of highlights that it would be amiss to let pass without recording on this blog, so here goes:

So those are some of the highlights of my year. It’s been entirely not bad, in the grand scheme of things. Hooray!

January 01, 2017 07:52 AM

July 06, 2016

Chris 2017 wants your talks!


You might have noticed earlier this week that 2017, which is happening in Hobart, Tasmania (and indeed, which I’m running!) has opened its call for proposals.

Hobart’s a wonderful place to visit in January – within a couple of hours drive, there’s wonderful undisturbed wilderness to go bushwalking in, historic sites from Tasmania’s colonial past, and countless wineries, distilleries, and other producers. Not to mention, the MONA Festival of Music and Arts will probably be taking place around the time of the conference. Coupled with temperate weather, and longer daylight hours than anywhere else in Australia, so there’s plenty of time to make the most of your visit. is – despite the name – one of the world’s best generalist Free and Open Source Software conferences. It’s been running annually since 1999, and this year, we’re inviting people to talk abut the Future of Open Source.

That’s a really big topic area, so here’s how our CFP announcement breaks it down:

THE FUTURE OF YOUR PROJECT is well-known for deeply technical talks, and lca2017 will be no exception. Our attendees want to be the first to know about new and upcoming developments in the tools they already use every day, and they want to know about new open source technology that they’ll be using daily in two years time.

Many of the techniques that have made Open Source so successful in the software and hardware world are now being applied to fields as disparate as science, data, government, and the law. We want to know how Open Thinking will help to shape your field in the future, and more importantly, we want to know how the rest of the world can help shape the future of Open Source.

It’s easy to think that Open Source has won, but for every success we achieve, a new challenge pops up. Are we missing opportunities in desktop and mobile computing? Why is the world suddenly running away from open and federated communications? Why don’t the new generation of developers care about licensing? Let’s talk about how Software Freedom and Open Source can better meet the needs of our users and developers for years to come.

It’s hard for us to predict the future, but we know that you should be a part of it. If you think you have something to say about Free and Open Source Software, then we want to hear from you, even if it doesn’t fit any of the categories above.

My friend, and former director, Donna Benjamin blogged about the CFP on medium and tweeted the following yesterday:

At @linuxconfau in Hobart, I’d like to hear how people are USING free & open source software, and what they do to help tend the commons.

Our CFP closes on Friday 5 August – and we’re not planning on extending that deadline – so put your thinking caps on. If you have an idea for the conference, feel free to e-mail me for advice, or you can always ask for help on IRC – we’re in on freenode – or you can find us on Facebook or Twitter.

What does the future of Open Source look like? Tell us by submitting a talk, tutorial, or miniconf proposal now! We can’t wait to hear what you have to say.

July 06, 2016 01:21 AM

May 12, 2016


The big bike trip – Day 18

Once again we are on the run, today was a brilliant ride up the coast. Nice speed limit and winding roads with good (dry) weather. After picking up some food in a local town we pulled up short of our desired campsite due to running out of daylight.
This was the first time we have been able to light a fire, as carrying firewood isn’t much of a option we were in luck that this campsite had stacks of wood allowed to be burnt within the camping grounds.





May 12, 2016 11:12 PM

The big bike trip – Day 17

After been kicked off the boat at what the heck time is this o’clock we sat down at a cafe to fill our stomachs before venturing into the heart of Melbourne for camping supplies. Got what we were after and promptly high taled it out of Melbourne central before anything could halm us.

For most of the day it was a drizzly messy day so any break from the weather was welcome.
We came across a cafe with lovely murals and carvings out on display it was a great find.





Got a place at Lakes Entrance to dry off and repack for the next day’s ride.


May 12, 2016 10:52 PM

The big bike trip – Day 16


Today we left the warmth of Longford and headed out to Beaconsfield. Here we checked out the mining museum, there are plenty to see if your into history. The museum is filled with history of the mining site but also has lots of interactive displays with industrial equipment and other information about life in the area.

Having a section where manikins were setup hiding in and around the ruins was a startling experience even when u had been warned they were there.

It was rather fascinating.
Our ticket into the museum was a tag that we had to leave place on the board before climbing the tower. It was a great way to spend the afternoon.






We stayed in the area for lunch and then high tailed it to Devonport as we knew the weather was going to cave in on us.
Which it did, and we got absolutely soaked :/
Managed to find shelter while waiting to board the boat which was a little relief. It was good that it stopped raining when we had to line up to get on, though our gear was still wet not having to endure sitting in the rain was well welcomed.


May 12, 2016 10:32 PM

The big bike trip – Day 15

Today we packed up our gear from the rocky hard but very flat campground that the parks allowed us to camp on.
I really wanted to go for a walk up to the lookout over wineglass bay, so we did!



We wanted to get closer to Devonport but not stay in Launceston. After searching for accommodation while consuming food at Cambell town we landed us a spot at Longford which to our luck the Agfest was long over.


May 12, 2016 01:21 AM

May 09, 2016


The big bike trip – Day 14

Greeted the morning and setup my GoPro for a time lapse of the sunrise over the Bay, here are some teaser photos I took from my phone until I proccess the images (no computer with me).



After packing up camp we headed over to freycinet with the intent on camping the night here.

Camping in the park is allowed, though after looking at the campsite surface is wasn’t the best.
It suited our purpose and was a nice view of the bay.



May 09, 2016 11:09 PM

May 06, 2016


The big bike trip – Day 13

Location Location Location!
Tonight we pulled up short, because this place is beautiful.
And I’m talking about the Bay of Fires also know as Binalong Bay.

With our parks pass purchased the first day we got off the boat it’s about time we put them to use, so it camping under the stars for us tonight.

But what a view!!


I will be taking a few more photos tomorrow of the bay itself, as the above photos are from around our campsite accross the bay.


May 06, 2016 11:40 AM

The big bike trip – Day 12

Today we headed out of Tullah and to Low Head just outside of George Town.

Though we took a detour over to see a cave at Mole Creek.

Here are some images of King Solomon Cave.
As you can see, these are beautiful caves. I just wish we had more time to see a few more in the area.





After a quick lunch break at a near by town we got footed it over to Low Head to ensure we could get a cabin for the night and be ready for the Penguin Tour!

I wish I could bring one home with me but alas they guides said it was not allowed 🙁




As you can see we were able to get really close to them, standing still and without casting a shadow they just waltz up their normal path on the way to their home.


May 06, 2016 11:14 AM

May 05, 2016


The big bike trip – Day 11

After looking at the weather report and friends posting images of snow on the mountain we placed enough clothes on to ensure our warmth during the day.
Shortly after setting off, we find snow on the side of the road!

This made our day a bit slow going as we didn’t want to run into any black ice along the way.

We were originally going to head for the top North West of Tas, somewhere like Smithton, this was revised to a Corrina due to us running out of daylight. This we knew was going to be ambiguous givin the road we choose was unsealed. After hitting the unsealed part of the road and hanging on for dear life as we tried to keep the bikes upright, it was described that we should turn back and head for a town called Tullah.

We stayed the night here, there was very little reception and what you could get was hopping on one leg in a circle to get one bar on the Telstra edge network.

Images of the Reece Dam
Reece Dam Reece Dam

Bike trip day 11

May 05, 2016 12:39 PM

The big bike trip – Day 10

As you may see day 9 is missing, this was mostly taken up with repackaging and me going to see a specialist about the pain in my chest.
Good news I’m not going to die just yet!

So everything is packed and we are ready to set off and..
My bike wouldn’t start 🙁
Turns out that you can run the bike battery flat by leaving the accessories one for two days, total oversight on my behalf.
So got the bike jump started and headed down the road to Sullivan’s Cove Whiskey join. Spent some time here tasting their produce partook in a tour while praying that the weather would ease off.

We then took off to Derwent Bridge, it was late when we arrived, cold and starving we decided to get a room at the pub for the night to allow us to dry out our gear and have a good nights rest.

Derwent Bridge

May 05, 2016 11:45 AM

The big bike trip – Day 8

Today after struggling to get up (late night) we moseyed down to the tahune Airwalk, it’s a beautiful spot with a few walks around the area. The key attraction is the canter lever platform overlooking the vast forest of trees.

Below is a model of the platform..
Tahune Airwalk Model Bridge

The walk around was absolutely stunning, as we were in a car today there is no GPS data avaliable. I will however leave you with some of the images that I like.

Southwest National Park



May 05, 2016 11:30 AM

May 03, 2016


The big bike trip – Day 7

So the working week is over, time to have some fun and get back on the road.
After a week of coughing and doing myself a injury I really wanted to get back on the road.

Today we rode down to Gordon Dam, it’s a nice road and the scenery was amazing.

After loosing Josh at a roundabout on the way back we managed to regroup and head on home.

Thanks Max for taking us on this magnificent ride!

Bike trip dam wall
Bike trip dam wall

The ride took it out of us so we borrowed a car and headed down to Hounville to visit some friends for a night activity.

Bike trip Strathgordon day trip

May 03, 2016 10:35 PM

The big bike trip – Day 6

We had a leasurly ride from Devonport to Hobart today.
Had breakfast in one of the local cafes, filled up and set off.
We didn’t get far until we needed to refill our fuel bottles to support the warmers and stove that we both use (bottles had to be emptied to go on the ferry).

With extra layers on and warmers burning we set off again.
Weather was kind to us and we arrived very exhausted but happy from the days ride.

Over the next week we will both be working from Tas to make up the extra trip time we have losses due the ferry not having space to take us sooner.
Bike trip map Devonport to Hobart

May 03, 2016 12:32 PM

April 26, 2016


Introducing Registrasion!

Time for me to fill you all in on some work I’ve been doing in preparation for 2017. I’ve been looking into how we can better run the conference website, and reduce the workload of our volunteers into the leadup to the conference. has, for the last 10 conferences, used a home-grown conference management system called Zookeepr. I got administration experience in Zookeepr after being involved in running PyCon Australia for a couple of years, and continued to help manage registrations for the years following. While Zookeepr is a venerable piece of software, my 4 years of experience with it has helped me become familiar with a bunch of its shortcomings. Most of these shortcomings are in the area of registration handling.

A problem with conference management software is that the people who come to develop on it are often highly transient — they’re conference organisers. They show up, they make their modifications, and then they get as far away from developing it as possible. Zookeepr’s been affected by this, and it’s meant that difficulties with workarounds are usually overlooked when fixing things.

So I decided to look elsewhere.

Back in 2012, the Python Software Foundation funded a conference management suite called Symposion.

Symposion solves a bunch of problems that Zookeepr solves, and more importantly, it doesn’t suffer from the lack of continuous contributions that Zookeepr has: It’s an actively-maintained app, built on Django, and it has a community of developers supporting it in the form of the Pinax project. In the Python world, it’s used for a very large number of conferences, from PyCon US (a big conference, getting some 1000 talk submissions yearly), down to local regional conferences like PyOhio. It’s well known, and improvements to the system aren’t contingent on conference organisers maintaining interest in the system after they stop running conferences.

Unfortunately, for various reasons, Symposion doesn’t handle conference registration.

So after OSDC2015 in Hobart successfully ran their conference website with Symposion, I decided to plug the gap. In January this year, I jotted down all of the things that I thought was good about Zookeepr’s registration system, and thought about how I could go about objectively improving upon it.

I threw together a data model, and wrote a test suite, and liked what I saw. I asked the Python Software Foundation for a grant to let me do some concerted work on the project for a month or so, and they accepted.

The result is Registrasion (that’s Registration for Symposion (sorry)). I’ve just put out a 0.1 release, which I believe is suitable for running a conference if you’re happy to pull data out of the system with SQL queries, and take payments with bank transfers.

Registrasion was designed with a few key goals in mind, all of which came from observing how Zookeepr struggled around some frequent edge cases that, incidentally, come up late in the process of running a conference. Those late-occurring edge cases are invariably the ones that don’t get fixed, because volunteer conference staff all need to go and run their conference.

In particular, I focused on:

Many of these goals solidified after talking to past conference organisers, who’d all used Zookeepr.

I’m quite proud of a few things in Registrasion. The first is that Registrasion makes it really easy for attendees to add extra things to their registration as they decide they need to. We also take care of automatically giving out freebies that attendees forgot to select during initial registration. In PyCon AU’s case, that’s a lot of manual work we can avert.

Another is a really flexible way in managing what parts of the inventory are available to our users, and at what time. We can show and hide items based on voucher codes, or based on whether they have other products selected. This averts a whole pile of manual work that a past reported, and I’m glad that our year won’t have to

Finally, I’ve made sure that Registrasion has a lot of documentation. It was a key goal to make sure that new conference organisers can understand vaguely how the system fits together. Python’s tools, and Read The Docs, has made this very very easy.

There’s a pile more work to be done, but there’s also plenty of time before lca2017 opens its registration (in October, probably?). But so far, it’s been super-fun to dive back into Django development, given it’s something I haven’t played with in a few years, and to solve a problem that I’ve been dwelling on for a couple of years now.

Hopefully, in Registrasion, we’ve got a piece of software that can serve the community well, will find use outside of LCA, but will still serve LCA’s needs well for years to come.

If you’re interested, please come along and contribute! I’d love to have you on board!

April 26, 2016 11:41 PM

April 23, 2016


The big bike trip – Day 5

Today was a lazy start, we had plenty of time to do what ever we please. So after packing up grabbing some breakfast at the local bakery then headed for some twisties.
Bike trip Camping Nagambie
Josh then navigated us around Melbourne to the Oasis Bakery. Grabbed a bite to eat so we don’t have to consume the boat food, it was rather good and I would like to go back.

To kill some time we perused the store that is part of the Oasis Bakery, coming out with a handful of stuff that ended in some expletives when trying to pack it all on the bike.

So we are now on the boat!
Bike is tucked in for the night, and the journey to Tas begins!!
Bike trip spirit of tas


Day 5 map

April 23, 2016 09:14 AM

April 22, 2016


The big bike trip – Day 4

We are deep into uncharted territory now, haven’t ventured this far south on our bikes until now!

It was raining last night so we had to pack up wet tents, though the rain has held off during the day which is a bonus.
The wind has been especially bad, causing extra fatigue trying to keep the bike on the right side of the road. Shortly after setting out we stopped and switched out to the wet weather/winter gear just for the extra warmth with the driving wind.

West Wyalong Showgrounds campsite

Had a slight hiccup at the Vic boarder crossing. I was unaware that I passport was needed. Anyway managed to buff my way through that little bit of excitement.

So yes we are in Victoria now, staying in a little campervan place in a small town called Nagambie. Our first choice of places was fully booked out, then it dawned on us that it’s the ANZAC long weekend. It’s all good though we have somewhere to sleep and with any luck our tents will be dry by morning.

Had to do a bit of running repairs to my bike, left front indicator has fallen off. I knew the lower bracket had broken, but the only other screw holding it has now failed as well.
As such I have zip tied it togeather until I can get some time in Hobart to give it another lookin.

Big bike trip zip tie magic

We will be on the boat tomorrow night, so I’m unsure if I will beable to type my daily report due to being at sea and WIFI doesn’t cover the area :p

I have updated the maps so they now link to the raw data for each day.
I will do something more when I get to a computer but it will help give more detail if you are interested in that stuff!!
Big bike trip day 4 map

April 22, 2016 10:23 AM

The big bike trip – Day 3

Mostly pushing on to Melbourne, we had a slight hiccup in our plans.
We totally didn’t forsee the need to book the ferry way in advance. So we are stuck on the 9th May sailing back.
This slightly extends our original time so we have applied to do a week of work in Tas to make up for the time loss.

We stopped at Parks Telecope for a bite to eat on the trip today, it’s a nice little cafe and do a good feed.
Parks Telescope

We ended the day at: West Wyalong
Nothing overly special here, though the show grounds do allow people to camp, so that’s what we are doing tonight!

And the journey map for today..
Bike trip day 3

April 22, 2016 09:50 AM

The big bike trip – Day 2

On the road again…

There were a few good twisties along the way today, making good progress to Melbourne.

Today we have stopped at: Gilgandra
Been passed Gilagndra a few time before, but never stayed the night.

Made a few rest stops along the way, mostly to keep my sanity and rest is good when riding a bike.

Bikes at Bingara

I purchased some more sugar today in the hope that I won’t fall asleep. I did get a good night sleep out at Texas though I still found myself wanting to dose. So extra rests stops were required to refuel the human driver.

Charging system on my bike is working well at this stage, Josh is having some issues with his but I think that’s more to do with the bag mount than the system it’s self.

In the attempt to get some rest I will sign off with today’s map for everyone!
day 2 map

April 22, 2016 09:47 AM

The big bike trip – Day 1

So we have finally left Brisbane, after finishing the wiring of the bikes on Monday night we pushed off at around 2pm on Tuesday.

First Destination:- Texas, Qld
So we didn’t even make it to NSW, but we are sooo close!!


Highlights: Cunningham Gap, there are a few trucks using this road and it has recently gone through a upgrade to cope with all the traffic. Though if you can get over the amount of trucks on this road it’s a nice twisty road with some good day walks either side for those who are extra keen.

After checking out the price to stay at the pub for the night we decided to make the extra effort and camp. We wil be camping next to the boarder so we will be in NSW right after breakfast.

I have setup a live tracker that I will be broadcasting my position throught the trip
For each day you should beable (assuming technology doesn’t fail me) see where I have come from and where I have ended up.
Check it out at


April 22, 2016 09:43 AM

March 01, 2016


Python in the Caribbean? More of this!

I don’t often make a point of blogging about the conferences I end up at, but sometimes there are exceptions to be made.

A couple of weekends ago, a happy set of coincidences meant that I was able to attend the first PyCaribbean, in Santo Domingo, capital city of the Dominican Republic. I was lucky enough to give a couple of talks there, too.

This was a superbly well-organised conference. Leonardo and Vivian were truly excellent hosts, and it showed that they were passionate about welcoming the world to their city. They made sure breakfast and lunch at the venue were well catered. We weren’t left wanting in the evenings either, thanks to organised outings to some great local bars and restaurants over each of the evenings.

Better still, the organisers were properly attentive to issues that came up: when the westerners (including me) went up to Leo asking where the coffee was at breakfast (“we don’t drink much of that here”), the situation was resolved within hours. This attitude of resolving mismatches in the expectations of locals vs visitors was truly exceptional, and regional conference organisers can learn a lot from it.

The programme was, in my opinion, better than by rights any first-run conference should be. Most of the speakers were from countries further afield than the Caribbean (though I don’t believe anyone travelled further than me), and the keynotes were all of a standard that I’d expect from much more established conferences. Given that the audience was mostly from the DR – or Central America, at a stretch – the organisers showed that they truly understood the importance of bringing the world’s Python community to their local community. This is a value that it took us at PyCon Australia several years to grok, and PyCaribbean was doing it during their first year.

A wonderful side-effect of this focus on quality is, the programme was also of a standard high enough that someone could visit from nearby parts of the US and still enjoy a programme of a standard matching some of the best US regional Python conferences.

A bit about the city and venue: Even though the DR has a reputation as a touristy island, Santo Domingo is by no means a tourist town. It’s a working city in a developing nation: the harbour laps up very close to the waterfront roads (no beaches here), the traffic patterns help make crossing the road an extreme sport (skilled jaywalking ftw), and toilet paper and soap at the venue was mostly a BYO affair (sigh). Through learning and planning ahead, most of this culture shock subsided beyond my first day at the event, but it’s very clear that PyCaribbean was no beachside junket.

In Santo Domingo, the language barrier was a lot more confronting than I’d expected, too. Whilst I lucked out on getting a cabbie at the airport who could speak a tiny bit of English, and a receptionist with fluent English at the hotel, that was about the extent of being able to communicate. Especially funny was showing up at the venue, and not being allowed in, until I realised that the problem was not being allowed to wear shorts inside government buildings (it took a while to realise that was what the pointing at my legs meant).

You need at least some Spanish to function in Santo Domingo, and whilst I wasn’t the only speaker who was caught out by this, I’m still extremely grateful for the organisers for helping bridge the language barrier when we were all out and about during the evening events. This made the conference all the more enjoyable.

Will I be back for another PyCaribbean? Absolutely. This was one of the best regional Python conferences I’ve ever been to. The organisers had a solid vision for the event, far earlier than most conferences I’ve been to; the local community was grateful, eager to learn, and were rewarded by talks of a very high standard for a regional conferences; finally, everyone who flew into Santo Domingo got what felt like a truly authentic introduction to Dominican Culture, thanks to the solid efforts of the organisers.

Should you go to the next PyCaribbean? Yes. Should your company sponsor it? Yes. It’s a truly legitimate Python conference that in a couple of years time will be amongst the best in the world.

In PyCaribbean, the Python community’s gained a wonderful conference, and the Caribbean has gained a link with the global Python community, and one that it can be truly proud of at that. If you’re anywhere near the area, PyCaribbean is worthy of serious consideration.

March 01, 2016 07:50 PM

February 12, 2016


Talks from 2016

I spoke at 2016 in Geelong! Once during the main conference, and once during the conference close.

Welcoming Everyone

My main conference talk, Welcoming Everyone: Five Years of Outreach and Inclusion Programmes at PyCon Australia, a five-year retrospective of how we’ve done outreach and financial assistance at PyCon Australia. It’s important that we share knowledge about how we run programmes that increase the diversity of our communities, and PyCon AU’s example shows how to build and grow such a program.

lca2017 handover talk

During the conference close, I gave our handover talk for 2017, sharing what we think Hobart has to offer for the conference, and our vision for the conference. If you want to find out, in 6 minutes, what we’re planning on doing next year, this video is a good way to do just that.

February 12, 2016 10:26 AM

February 06, 2016

Chris 2017 is coming to Hobart

Yesterday at 2016 in Geelong, I had the privilege of being able to introduce our plans for 2017, which my team and I are bringing to Hobart next year. We’ll be sharing more with you over the coming weeks and months, but until then, here’s some stuff you might like to know:

The Dates

16–20 January 2017.

The Venue

We’re hosting at the Wrest Point Convention Centre. I was involved in the organisation of PyCon Australia 2012 and 2013, which used Wrest Point, and I’m very confident that they deeply understand the needs of our community. Working out of a Convention Centre will reduce the amount of work we need to do as a team to organise the main part of the conference, and will let us focus on delivering an even better social programme for you.

We’ll have preferred rates at the adjoining hotels, which we’ll make available to attendees closer to the conference. We will also have the University of Tasmania apartments available, if you’d rather stay at somewhere more affordable. The apartments are modern, have great common spaces, and were super-popular back when lca2009 was in Hobart.

The Theme

Our theme for 2017 is The Future of Open Source. LCA has a long history as a place where people come to learn from people who actually build the world of Free and Open Source Software. We want to encourage presenters to share with us where we think their projects are heading over the coming years. These thoughts could be deeply technical: presenting emerging Open Source technology, or features of existing projects that are about to become part of every sysadmin’s toolbox.

Thinking about the future, though, also means thinking about where our community is going. Open Source has become massively successful in much of the world, but is this success making us become complacent in other areas? Are we working to meet the needs of end-users? How can we make sure we don’t completely miss the boat on Mobile platforms? LCA gets the best minds in Free Software to gather every year. Next year, we’ll be using that opportunity to help see where our world is heading.


So, that’s where our team has got so far. Hopefully you’re as excited to attend our conference as we are to put it on. We’ll be telling you more about it real soon now. In the meantime, why not visit and find out more about the city, or sign up to the announcements list, so that you can find out more about the conference as we announce it!

lca2017 handver.001

February 06, 2016 03:45 AM

January 08, 2016


Three weeks until LCA2016

In February, I’m presenting my first-ever solo presentation at, my favourite Free and Open Source Software Conference. This year, the conference is in Geelong (just out of Melbourne). I’ve been attending since 2008 in Melbourne, and am running the conference next year in Hobart.

I’m presenting Welcoming Everyone: Five Years of Outreach and Inclusion Programmes at PyCon Australia, a five-year retrospective on how we’ve handled running financial assistance and related programmes at PyCon Australia.

Doling out financial assistance money to people often looks like it should be an easy thing to do right, but targetting and assessing grants so that the right people are interested, want to attend, and receive assistance is quite a difficult task. This talk shares our successes, our mistakes, and what we’ve learned along the way.

Registration for 2016 is still open, so if you’re not yet planning on attending, there’s still time to get a ticket!

January 08, 2016 10:10 AM

January 06, 2016


I’m looking for a job!

tl;dr: I’m looking for somewhere new to work. I have a résumé and an e-mail address!

UPDATE: Right now, I’m based in the San Francisco Bay area, so I’ve re-posted this article and updated it to be current.

I haven’t scared you off yet? Great! Let’s try being a bit more specific.

I’ve worked a lot in Free and Open Source Software communities over the last five years, both in Australia and overseas. While much of my focus has been on the Python community, I’ve also worked more broadly in the Open Source world. I’ve been doing this community work entirely as a volunteer, most of the time working in full-time software engineering jobs which haven’t related to my work in the Open Source world.

I’ve spent the last few years swapping context between building and working with communities I love, and working in a field where these strong ties weren’t useful. This hasn’t been sustainable, so late last year I resigned my job to refresh myself, and considered what my future might look like.

It’s pretty clear that I want to move into a job where I can use the skills I’ve been volunteering for the last few years, and put them to good use both for my company, and for the communities I serve.

What I’m interested in doing fits best into a developer advocacy or community management sort of role. Working full-time on helping people in tech be better at what they do would be just wonderful. That said, my background is in code, and working in software engineering with a like-minded company would also be pretty exciting.

Why would I be good at this? I’ve been working on building and interacting with communities of developers, especially in the Free and Open Source Software world, for the last five years.

You can find a complete list of what I’ve done in my résumé, but here’s a selection of what I think’s notable:

So, if you know of anything going at the moment, I’d love to hear about it. I’m reachable by e-mail ( but you can also find me on Twitter (@chrisjrn), or if you really need to, LinkedIn.

January 06, 2016 11:03 PM

October 16, 2015


On burnout, resigning, and coming back to life

Fun story: I quit my job last week.

Somewhat ironically, the first time I’m really writing on this blog about what has been my day job for the last 3-ish years is writing about leaving it.

I don’t have too much to say about my reasons for leaving, but identifying that I’d been suffering severe burnout for a few months was the tipping point for it. Over the last few months my output in most everything I’ve done has visibly dropped – not just in work, or my volunteer efforts (for which numerous other people depend on me), but also in the things I enjoy doing in my spare time.

My last upload to Flickr, prior to this week, was in June last year. Beyond things necessary to get talks done, I haven’t written a line of code in my spare time all year. The last useful thing I wrote on this blog was in January 2014. Those things should have been pretty good indicators, but I missed them.

When deadlines started approaching, I put less pressing things off to the side. I thought at the time that I was merely re-prioritising things in favour or more pressing ones, rather than completely dropping the ball on them. I mean,  that’s basically how it’s always worked in the past.

More on that: I’ve long used conference trips as a way to pace myself through my work; timing trips more-or-less equally throughout the year, so that just as I was starting to get bored and demotivated, I’d have a chance to recover for a bit. This worked pretty well for a few years.

(Indeed, getting away as often as I have over the last few years has let me forge lasting friendships far across the world, and to get really useful things done locally, particularly for PyCon AU. I’m grateful to have had the opportunity to do that.)

So the pattern of feeling down just before a trip was there, just as it always was, for my trip to OSCON and PyCon AU in July this year.

The difference: for whatever reason, I came back feeling not much better than when I left I didn’t pick up the tasks I’d put aside, so they slipped even more.

Something had to give. I chose work. There’s not much more to say for the moment, other than that the time was more-or-less of my own choosing, and I left my job on amicable terms.

Now, what next?

First and foremost, I’m getting myself into a position where I’m mentally ready to run LCA2017 next year. This is probably the biggest undertaking of my life, and I need to be ready for it. I’m making steps to getting the organisation of that back on track.

I have roles with PyCon Australia again next year. Happily, my main role – raising sponsorship money – is now a team role, and I’ll be far less hands-on this time around.

If you’ve been depending on me to get something done over the last few months, and it hasn’t happened, I’m sorry. I’ve been terrible for letting things slip, even worse, I haven’t been open enough about my reasons for it. I really hope to improve this in the future. My backlog is slowly, but surely, getting cleared out.

Beyond that, I’m taking a couple of months off to sort myself out, and to make a concerted effort in figuring out what’s next.

I’m travelling for fun! Right now, I’m sitting somewhere in Far North Queensland, visiting my parents who are here for some reason (I’ve not seen Mum since February).

Over the next few weeks, I’ve got a few conferences I have committed to speaking at (OSDC in Hobart in two weeks’ time; PyCon Canada and Fossetcon in Florida in November), and so will be spending time travelling to attend those, but also taking a bunch of time off around them to relax.

One of the projects I’ve been putting aside for motivational reasons is a book I’m co-authoring on Android development, which I’m sure will show up (a bit more finished) in the future.

As for what I’ll be spending most of my time doing? I’m really not sure. What I’d like to be doing is the subject of another post. I’ll probably write it next week. If you want to cold-call me with opportunities in the hope that they’re relevant, linkedin is as good a place as any for now (lol), but I’m also around on twitter or e-mail.

October 16, 2015 06:20 AM

August 10, 2015


PyCon Australia 2015!

I was at PyCon Australia 2015 in Brisbane last week, and I presented a couple of talks!

This was the second year of PyCon Australia in Brisbane, it was pretty excellent. I’m looking forward to next year’s, which will be in Melbourne!

August 10, 2015 10:19 AM

April 23, 2015


Nines of nines

In the operations business we like to talk about nines of things, especially regarding service levels.


then generally,


This works for any whole number n: e.g. 5 nines is 1 - 10^{-5} = 1 - 0.00001 = 0.99999.

There's a problem with this simple generalisation, and that is, when people say "three and a half nines" the number they actually mean doesn't fit the pattern. "Three and a half nines" means 0.9995, but

We could resolve this difficulty by saying "3.3ish nines" when we mean 0.9995, or by meaning ~0.9996838 when we say "three and a half nines." But there's at least one function that fits the half-nines points as well!

Let's start with the function above: f(n) = 1 - 10^{-n}. For every odd integer, it just has to be lower by a small, correspondingly decreasing amount. We can do this by increasing the exponent of 10 by k = 0.5 + \log_{10}(0.5) \approx 0.19897.

One function for introducing a perturbation for halfodd integers is p(n) = \sin^2(\pi n). When n is a whole integer, p(n) = 0, and when n is half an odd integer, p(n) = 1.  Multiply this function by some constant and you're in business.

Thus, define a new function g(n) for all n:

 g(n) := 1 - 10^{-n + k p(n)} = 1 - 10^{-n + (0.5 + \log_{10}(0.5))\sin^2(\pi n)}

which, when plotted, looks like this:

Screen Shot 2015-04-23 at 5.21.45 PM

a negative exponential curve with a negative exponential wiggle.  And it has the desired property that at every integer and half-integer it has a value with the traditional number of nines and trailing five (or not).

April 23, 2015 07:43 AM

January 18, 2015



Well I haven’t updated this page in awhile so lets add some more pics!
I visited Hobbiton today after a early rise and running out the door to catch the bus. (~2hr Journey one way from Auckland)
It was well worth the effort on getting up early as I was able to get many shots with no people in them, so I must thank the tour company for insisting that I should really get up early.
It is amazing the detail in each of the hobbit holes, all in all a good trip!

[See image gallery at]

January 18, 2015 05:00 AM

January 16, 2015


To the Future

That is all.

January 16, 2015 07:17 PM

November 23, 2014


French brioche toast

Makes 3 slices.


  1. Mix the eggs, milk, salt, sugar,  and vanilla together in a bowl until the sugar is dissolved.
  2. Put the frypan on lowish heat, melt a curl or two of butter.
  3. Dip a brioche slice into the egg mix. Don't worry about soaking it through but be careful that the slice doesn't fall apart. Brioche is weaker than regular bread.
  4. Fry until brown on both sides and puffed up.
  5. Repeat with more slices until the mixture is used up.

Enjoy on their own (they're pretty rich) or with fresh sliced strawberries, blueberries, or fried banana and lightly dusted with icing sugar or drizzled with maple syrup.

November 23, 2014 01:59 AM

November 13, 2014


Electric bike!

Last week, Bob's old mountain bike (which he gave me when he stopped riding, and which I didn't ride all that much in Hobart but made my regular commute after moving to Sydney) had died. I say "died," but in fairness, it's just a bit wonky and in need of repair.

Having fallen in lesbians with some of the loaner electric bikes at work (BH E-motion, very fun premium electric bikes), I figured it was time to get something similar. On the weekend I walked over to Sydney Electric Bikes and test-rode a few, before finally choosing the model I wanted. Having parted with a chunk of money via bank transfer on Monday, it arrived and was ready on Tuesday afternoon. I excitedly hurried  to the store to get my paws on it because it's awesome.

The model I got is the SmartMotion e20 folding electric bike. It's made by a New Zealand company (going to visit the country soon!) who devised the electric system they use on the postie bicycles there. This bike is fun. It has five levels of pedal assist, throttle, integrated lights, clicky-shifter derailleur sprockets, and a freaking USB port on the 12Ah battery for charging my other devices. It's all mine and I'm going to ride it all over the place—the electric system is apparently good for 40-60km on a charge.

The folding part is interesting. I've not owned a folding bike before. Benefit, the first: I can take it travelling far more easily. It also has 20-inch diameter wheels. These are ostensibly to take up less space, but mechanically the bike has better torque than standard size bikes, which is good for hill-climbing. (Sydney's no Hobart, but it's no Melbourne either.) The only downside seems to be the increased bumpiness, but I'd be a whinger to complain about that seriously.

Oh, and it's red. 😀


November 13, 2014 08:56 AM

June 02, 2014


Josh's Foolproof Guide to Picking Up Chicks

Want to learn how to pick up? Sick and tired of failing at a task that seems so easy to some people? Well, here's one weird tip, nay, one weird whole bleeding foolproof guide that will make you an instant chick pick-up master!

Step 1: First, obtain permission to lift the box of baby chickens from the farmer.

Ask the farmer

Step 2: Bend at the knees. Do not bend at the back. Bending at the back increases the risk of a back or spine injury.

Bend at the back

Step 3: Firmly grasp the box on both sides, or the handles if the box has handles. Ensure you have a good grip before lifting. Chicks are living creatures, and dropping a box of them will land you in hot water with the RSPCA and your mother.

Grasp both sides firmly

Step 4: Calmly lift! Ensure that the weight is being lifted by your leg muscles. If your back muscles are taking the strain, you're doing it wrong.


With this technique you can pick up several hundred chicks per hour, much greater than any famous "Pick-Up Artist" can currently claim!
For even greater efficiency at hauling chicks, consider installing a chick elevator.

June 02, 2014 12:03 PM

PAX Aus, and Make Stuff

Funny story. I only decided to go to the first ever PAX Australia, with full passes sold out ages ago, late on Friday morning. (Yeah, after it had started.)

Last week I was in Canberra for the Australian Mathematical Sciences Student Conference (AMSSC) at the ANU, and flew home on Thursday via Melbourne. That night it was a bit rainy and windy, enough so that the planes were a little delayed. On top of the exhaustion from the conference and from waiting in the crowded Virgin Lounge with loads of suits and then not having the flight called there so having to rush to the gate (why yes, I did specifically ask them to call the flight), we waited on the tarmac about half an hour before taking off for Hobart. What a drag. #problemsyouwanttohave

In retrospect I guess it would have been smart to decide to stay in Melbourne for PAX while I was waiting for the flight. But oh diddums. I was keen to get home and enjoy the company of my bed and my plush toys and my NBN.

So Friday rolls around. I put on a load of washing. I'd gotten into a good pattern of waking up around 6:30 am to give myself enough time to check Twitter before exiting the bed, and so I had my pyjamas on the clothes line by about 8:30. Time to head into Uni. While walking in I'm reminded via Twitter again that my friend Ducky still had a spare 3-day pass to PAX Aus going at cost price. Damn, I thought, I could have stayed in Melbourne for that. I know that's what I thought, because on a whim, I started checking the price of flights. Besides, I had nothing better to do, because the fire alarm in the Maths & Physics building had gone off and nobody was allowed in. After a brief intermission (Mum rang, you know how mothers have the knack of ringing at the right time? It was like that.) I called Ducky to secure the ticket. No answer.

By 10:20, as I was entering the office, a solid plan had formed (getting to Melbourne as quickly as possible without any guarantees of success, and damning all consequences). I was in the office chatting to Mel. Adapted from the actual conversation:

"Hey, I'm thinking of going to this awesome expo in Melbourne that my friends are at and it's happening right now and even though all the tickets sold out ages ago there's this vague possibility I can get one anyway, do you think it's worth hopping on the next plane?"
"Oh totally! Here let me check the price of flights for you."
"Sweet! Okay, booked the 12:30. Gotta zip!"

10:30: Hiking back home with gusto and vim. To grab clothes and dump all the knives out of my bag.
10:33: Should I get a taxi or see if I can swing the airport shuttle bus?
10:49: Nope, no time. Checking the Hobart airport website... $48 estimated parking? Sure, why not.
11:15: Let's hit the road.
11:16: Aughhh! I really need to fix that bearing in the front left wheel before the car explodes.
11:35: Every other airport lets you put the laptop through in the sleeve, but noooooooo, TSA approval just isn't good enough in Hobart.
12:20: Mother of balls, there's no available hotels in Melbourne less than $300 per night. Okay fuck it, let's just book the Hilton.
12:22: Close laptop. Board plane.

It was an exhilarating, expensive, and amazing trip. There were epic queues. There were epic cosplays (Iron Link?!). There were epic cocktails at 1806. There was the epically swank hotel room I stayed in (admittedly, this came at a premium). There were epic expo stalls—LoL should have just had their own entire expo hall; WoT and Nintendo each perhaps their own pavilion. There was epic schwag. There were random meetups with random Tasmanians. There were the epic moments Gabe and Tycho tried Vegemite for the first time ever, on stage, in front of most of the attendees. Finally there were the most epic games of Jenga I've ever had the pleasure to be near.

So anyway, Internet, because PAX is over and I'm once again home alone in my pyjamas and collared shirt, I'm sad.

Therefore, on to part two of this post.

Make stuff.

Do it. Just do it. Make. Things. And. Stuff.
This cannot go understated.
Don't just make stuff, do stuff too.
Doing makes you right. Not doing something means you are wrong.

(I'm speaking poetically here. Don't go and do destructive, violent, illegal, or stupid things. They don't count.)

What I realised moments before starting to write this blog post is that I get an honest-to-Googleness kick out of doing something creative—almost anything creative. Blogging, drawing, singing, playing music, exercising, thesis writing, programming, laughing like an evil genius.

Doing stuff is the way out of loneliness when your friends are far away, or some other excuse for not using the Internet or the telephone. (It is difficult interacting with people.)

June 02, 2014 12:03 PM

Dear Sorbent


Hi, Sorbent.

How are you?

This morning I was in my bathroom and couldn't help but read the advertising spiel on the back of the plastic wrapping on the rolls of toilet paper. For reference, here's what it says:

"Always soft, always strong.
What makes Sorbent so soft, yet still so strong?
It's a very clever combination of two different types
of paper. The top layer is air-dried for softness and
thickness, the bottom layer (no pun intended!) is
thick creped paper, for added strength. And Sorbent Long Roll
means 50% more sheets on every roll.
Which means you only need to change it half as often!"

Let's talk about the last two sentences there. If a Sorbent Long Roll has 50% more sheets on every roll, then you need to change it two-thirds as often, not half as often.

I know you are a toilet paper company, and not the Australian Bureau of Statistics. But I feel that this sort of dishonest marketing may have just been an honest mistake, so I'll explain it for you.

Let's suppose a regular roll has 100 sheets, and I use on average 5 sheets per day. This means you would expect me to replace the roll after 20 days (20 days = 100 sheets / 5 sheets per day).

If a Long Roll has 50% more, then it has 100 sheets + 50% of 100 sheets = 150 sheets total. Cool! But I'm still using 5 sheets per day. Therefore I will change the roll after 150 sheets / 5 sheets per day = 30 days.

In 60 days time, I will have used three regular rolls of 100 sheets, or two Long Rolls of 150 sheets. That means I'm replacing the Long Rolls two-thirds as often as the regular ones.

To replace the rolls half as often, each roll would need to be twice as long, i.e. have 100% more sheets, not 50% more sheets.

Note that you can swap out the size of a regular roll and the rate of use, and the maths still works out (as long as you're consistent)---a Long Roll, if it has 50% more sheets than a regular roll, will be replaced two-thirds as often.

Other than to have even bigger rolls, the only way I can see to get long rolls replaced half as often as regular rolls would be to have reusable toilet paper, and nobody wants that.

In reality, we don't use toilet sheets at a fixed rate, so your mileage may vary (no pun intended). But I would contend hypothetically that the availability of more toilet paper would encourage people to use it more quickly. This means in practice that Long Rolls get replaced even more often than two-thirds as often as regular rolls.

I realise that this highly advanced analysis using basic arithmetic may be confusing to you, but fortunately you should be able to confirm my working by asking the average third year primary school student. However, please note that to maintain accuracy, you may wish to ask them before the Abbott government brings in yet more national curriculum changes.



PS: The plus symbol + is a valid character in the email field, but your form rejected it. Please refer to internet RFC 822 (issued in 1982) as the relevant standard.

June 02, 2014 12:02 PM

The Paper Tiger

Those of you I have talked to recently will know I have been ditching nearly all of my paper.

I've been a terrible, terrible hoarder of loose paper over the years. Uni notes, bank statements, school reports, bills, receipts, meeting minutes, society reports, business cards, conference guides, concert programs, newspapers, medical reports, programming competition practice problem sets... you name it, if it was paper based and I was given a copy, there was a really good chance I had kept it and put it in a pile or binder folder somewhere. Eventually the pile was put in a box, and moved to my next place of residence, and a new pile came to life.

Why would I throw out paper, when I might just possibly maybe want to keep the information for future reference, and it's easier to put it in a pile than anything else? And some paper you have to keep, so it's not like it'd be fair to the rest of the paper if I only kept that, right? Paper is an Object, and Objects Have Souls. I can't just go around killing harmless, innocent paper! It's simply not done. Somebody printed the paper and the paper and ink cost money. The paper was produced from trees, lovingly grown just for your perverse paper pleasures. Paper chemists treated the paper with their magic bleach to make it nice and bright. You can even write notes on the paper after it's been printed, adding to its value. You can just give paper to another person, exactly as it exists, and it's practically guaranteed to be compatible with them.

And let's not forget, it's convenient to have a lot of paper around in case you need to save the world with your 紙使う人 super-abilities.

Plus I'd like to see you fold an iPad into a "paper" crane.

So what changed?

The changes have been gradual, but like a tipping point or titration or emergent criticality, it was only in the last month I got jack of the piles of paper I was storing.

The story probably started with my mother's mother.

Joyce Purtscher is a family historian. She was the first in our family (those of us in Tasmania, anyway) to get a personal computer and a laptop (well, it was more of a reinforced-steel-bench-top, but still). She has produced a number of indexes. An index, for those unfamiliar, is a summary of information designed to get you to the original information quicker. It's not just books and database tables that are useful with indexes, however. Wouldn't it be nice to have an index into all the copies of The Mercury, that tell you on what page the Calvin & Hobbes is on, what the other comics were, and perhaps the punchline? (Other people might have different ideas as to what the useful information is.) Joyce has produced indexes of things like the public records of Tasmanian orphans through the 19th century. The beautiful thing with these indexes is that for all the basic details of the record, you don't have to go to the source, because basic details are there in the index. Indexes help you get to the right paper faster, and frequently you don't care about the paper. And the good genealogical indexes all come on CD.

Hanging around my grandmother first taught me that there's a lot of paper, and a lot of information on it, in the world. Much of it seemed to be located within the State Archives and the State Library. Archives and libraries, of course, take great care of their historic documents, ensuring that oxygen, moisture, arsonists, and sunlight are kept away, to prevent degradation. Systems exist for safely storing truly enormous quantities of paper. I didn't connect the paper in the Archives with the paper at home. Paper at home was stuff that was useful to us, the paper in the archives had no daily relevance. And sure, paper is fragile. Lazily dumping it in a box under the house is going to ruin it eventually. But modern paper is lighter, and treated with chemicals so that it doesn't rot or get eaten by mould in the same way as Ye Olde Paper.

But I noticed one other thing. The 500 megabyte hard drive out of her 486, when I had the joy of migrating her to a newer computer, hadn't lost a single bit of information. In fact, through the years, the one piece of computer I've had fail on me the least, in spite of all the moving parts, has been the humble hard drive.

Fast forward out of my childhood.

In the very early 2000s, my family bought a flatbed scanner. It was a bulky USB device with a slightly dodgy driver that had to do every scan twice. Scans would come out on an angle, a bit pixelated, and with crappy colouring. On our clunky old beige computer with a "whopping" 4GB hard drive, scans took a long time to perform and a significant amount of space to store in any decent quality—and there were better things to put on the computer, like games and music. We used the scanner for emailing photos and that was about it.

In 2005, I got my Gmail invite. Email available anywhere I had an internet connection! Okay, that part wasn't so relatively awesome as existing email solutions. But the space! Who was ever going to fill a whole gigabyte with their email? Even with huge attachments? Never delete email again!

Never delete paper either...because if email was good enough to keep forever, so was paper. 2005 was the year my paper storage really took off, and not just because of Gmail. I had just got a credit card, with monthly paper statements. I had a job for a few months, which had weekly payslips. There were things like bills and receipts. I'd have to file a tax return, and I'd never know when the bank was going to cock up and I'd need a statement. But there was still relatively little paper, so there was no problem in my mind hauling it around. I'd even got my core muscles in carting school notes for so many years, a little extra paper was not a problem.

The problem with core muscles is, though, they need exercise. In 2007 I got my current job, and in 2008 and 2009 the amount of time I spent sitting down had grown even more due to the time required for Uni. So instead of taking a lined pad with me to lectures, at some point in 2008 I started taking electronic notes, right into LaTeX on my MacBook. This seriously paid off, because

There are other small benefits that come with electronic notes, such as searchability. The notes were mine and I had the source file so annotating was hardly an issue. Okay, so drawing diagrams quickly into a computer can be a pain, and a problem I had no decent solution for for a while. The paper wasn't going anywhere just yet.

A few years ago I went and purchased my first ever 1 terabyte hard disk. A whole terabyte! What the dickens can anybody do with that quantity of space!? Well, it's not hard to imagine what, when you are a terrible, terrible data hoarder such as myself. Movies, music, games, disc images, audio libraries, virtual machines. Never delete data again!

And then Apple released Mac OS X 10.5 Leopard, which came with Time Machine. Backups became, not just easy, sexy. It wasn't a question of the possibility of backing everything up. All of a sudden I desired to back everything up. Of course I had a system of CD burning backups going on before that (oh, did I mention I'm getting rid of optical media too?) but to back up everything? Differentially? To commodity, portable, external hard drives? In a matter of minutes per day? Never fear data loss again!

When Apple released Mac OS X 10.7 Lion, I heard about one really cool new feature that still doesn't seem to have been picked up widely. As you probably know, Preview is quite a capable PDF form completion and annotation tool. I was using it for those pesky AUC subsidy claim forms. But in order to properly sign a PDF with a signature, you had to print it, sign it, and then scan it back in. Preview app now includes signature annotations. You sign some paper, hold the paper up to the computer camera, and it captures your signature, which you can then insert as an annotation onto any PDF. Super handy.

In March this year, early one morning I queued at the Apple Store in Sydney. There was only one product being launched, their next "resolutionary" product: the new iPad. The one with the "retina" display, which is admittedly an utter joy to read, compared to every previous computer screen I've had the honour of using. Never print something merely in order to read it, ever again!

Just to be clear though: I still prefer reading paper books over eBooks. I haven't engaged in a War on Books yet. Books are lovely.

Finally, I got home from Sydney last month and that's when the final straw broke the camel into tiny giblets. I took one look at the horrid mess of the room all my stuff was in and thought something had to be done. I started a War on Stuff, and thought critically about a lot of my possessions. I realised that the majority of the loose paper I had stored was for archival purposes: entirely for posterity, keeping people honest, or future tax assessments. Exceedingly little of the paper that was filling up so much of my personal environment had daily relevance.

So here's what I thought next. What would Steve do?

So I bought this. It's the Fujitsu ScanSnap S1500. It can scan A4 documents at 20 pages per minute, both sides at 300 dpi. It folds away quite compactly. The driver doesn't suck.

I have now scanned thousands of pieces of paper. I have shredded hundreds, and the shreddings are now in the compost. The other paper has gone back to recycling. My Year 7 school reports are but a few clicks away.

June 02, 2014 12:02 PM


  1. How to Do What You Love, by Paul Graham. Simply full of gold. Favourite quote:

    Prestige is especially dangerous to the ambitious. If you want to make ambitious people waste their time on errands, the way to do it is to bait the hook with prestige. That's the recipe for getting people to give talks, write forewords, serve on committees, be department heads, and so on. It might be a good rule simply to avoid any prestigious task. If it didn't suck, they wouldn't have had to make it prestigious.

  2. Narcissists Suck, the blog. The collected observations of somebody who has dealt extensively with a narcissist. Choice quotes:

    It is terribly annoying to me when someone pretends to know my mind better than I do.

    You want to shake up the world of the narcissist? Live outside his control; live outside his false reality.

    Emotionally healthy people are realists. They are people who want to see reality, accept reality and live in reality.

  3. Tricky People, a book by Australian psychologist Andrew Fuller. In it he describes many varieties of tricky behaviour (the Controllers, the Bullies and Tyrants, the Poor Communicators, etc), the impacts of these behaviours on you, and ways to deal. Contains loads of great advice, includes a chapter for if the tricky person is yourself, and is even worth reading cover-to-cover.

    Back-stabbers and White-anters live by several rules:

    • Rule 1: look good.
    • Rule 2: avoid looking bad.
    • Rule 3: if you can look good and have others look bad, even better.
  4. How To Stay Sane, from the School of Life series, by Philippa Perry. Short, and describes four key ideas. It's received some interesting and critical reviews, but that was after I bought it. One thing though, this is the book that convinced me to start writing a private diary.
  5. Day One, the app I'm using as my diary. It has iOS and Mac versions that sync with one another. Much better than a plain text file, you can attach images, links, geotag, hashtags, do all the usual text formatting (with Markdown syntax :) ). It's really well made and that's probably why it got awarded App Store Best of 2012.

June 02, 2014 12:01 PM

Number shuffler addition

My current diversion of late has been Threes. You may have heard of the rip-off that spawned a thousand similar rip-offs, 2048. I will call this kind of game "number shufflers" even though the tiles don't have to be numbers.

In both the original, and superior, game Threes, and the many derivations, you have a board of fixed size and a number of tiles. A tile is added after each move, and the game ends when no space remains, therefore it is in the player's interest to eliminate tiles. The only way to do so is to combine "twins"---tiles with the same number/type. (Threes has the wrinkle that there are special "1" and "2" tiles that can only be combined as 1+2.) Combining two twins gives you a tile of the next type. With numbers, the resulting tile usuallly has the value of the sum of the previous two tiles. Thus as you create higher and higher tiles, you have fewer chances to combine them, and the tile values increase exponentially.

I got thinking about the large numbers possible in these games. It is known that presenting a gamer with huge numbers leads to reduced ability to compare them quickly. Who is going to sit down and compare all the digits for their three gajillion fantillion power level character against some other bazillionty level character, especially in the middle of an action-fight sequence? This is a problem avoided with Threes (et al) simply because the higher tiles are much rarer, and it is a puzzle game where you can take as much time as you like.

You could represent the tiles with simpler numbers---1, 2, 3, 4, etc, instead of the exponentially increasing 3, 6, 12, 24, and so on. But then the "addition" breaks. "Adding" two tiles of the same kind just gives you the next tile, not the sum of the two. For example, instead of 1+1=2, 2+2=4, 4+4=8, one has 1\oplus1 = 2, 2\oplus2 = 3, 3\oplus3 = 4. With a little thought it turns out it's very easy to implement \oplus with a kind of twisted addition defined as follows:

   a \oplus b := \log_2( 2^a + 2^b ) \quad\text{ for all } a, b.

For example,

  2 \oplus 2 = \log_2( 2^2 + 2^2 ) = \log_2(4+4) = \log_2 8 = 3.

It is easy to see that \oplus is commutative (swap inside the logarithm) and even associative:

  (a \oplus b) \oplus c = \log_2\left(2^{a\oplus b} + 2^c \right) = \log_2\left( 2^{\log_2(2^b + 2^c)} + 2^c \right) = \log_2(2^a + 2^b + 2^c)

(similarly for the other arrangement). Most pleasingly, however, regular addition distributes over \oplus:

  a + (b\oplus c) = a + \log_2(2^b + 2^c) = \log_2 2^a + \log_2(2^b + 2^c) = \log_2 2^a(2^b + 2^c) = \log_2 (2^{a+b} + 2^{a+c}) = (a+b)\oplus (a+c).

You get "fun" results if you add two different numbers, and it seems that there's no identity element unless you include -\infty and assert that 2^{-\infty} = 0 (alternatively, \log 0 = -\infty). Thus

  x \oplus (-\infty) = \log_2(2^x + 2^{-\infty}) = \log_2 (2^x + 0) = x.

Furthermore there are no inverse elements unless you escape the extended real line entirely. For example, \log_2(-1) = \frac{i\pi}{\ln 2}, and therefore

 0 \oplus \frac{i\pi}{\ln 2} = \log_2\left( 2^0 + e^{i\pi} \right) = \log_2(1 - 1) = -\infty.

I should be doing work.

June 02, 2014 12:00 PM