# Planet Maclab

## August 07, 2018

### Paris

#### OSCON 2018 Recap

A few weeks ago I attended, and spoke at, my 10th OSCON conference. I regularly say that OSCON is my favourite big conference, and every time I attend I’m reminded why I love it, and how much I love it: OSCON is a fun, relaxed, and very approachable place where companies and people involved in open source as contributors, consumers, and users, interface, work with, and have fun with each other. It’s unique in perspective, content, and value. And it’s super engaging everywhere from the lunch hall to the hallway to the sessions and in between. You should go, if you get the opportunity (O’Reilly runs a wonderful diversity and inclusion program, which make me able to help you make it along!)

This year was OSCONs 20-year celebration event!  If you have a Safari subscription, you can check out the videos from the event here. There’s also a collection of keynotes and interviews from the event on the O’Reilly Media YouTube channel.

On the Monday, Tim, Jon, and I presented a 3 hour session on Open source game development with Godot. Godot is an amazingly polished, and entirely open source, game development engine; Godot is a project of the Software Freedom Conservancy, and is aggressively competitive against the big commercial engines, like Unity and Unreal. I largely led this tutorial, supported by Tim and Jon. We got great feedback from our attendees, and had a full house. I’ll post the material from the workshop in the coming week.

On Tuesday, Tim, Jon, and I presented a 3 hour session on Machine overlord and you: Building AI on iOS with open source tools. We covered everything from CoreML, to Vision, to Apple’s Turi Create Python libraries. Our attendees loved it, and gave us great feedback; it was a fun precursor to our new book, Practical AI with Swift (more on that soon!) You can find the material from this OSCON session right here.

On Tuesday night, I stepped way, way out of my comfort zone and presented a 5 minute Ignite talk on The realities of weightloss. This talk was based on a seed of an idea that Mars had, which I’d taken and run with in a slightly different direction (with her permission). It seemed to resonate with the audience, and I got a lot of thanks, and hugs, from people afterwards.

The next day, Wednesday, saw us doing our traditional book signing (for the latest Learning Swift) in the O’Reilly Media booth of the expo. We had a huge line of people, and signed for about 45 minutes. It was great fun! The O’Reilly staff treat us like royalty, which always makes us feel very special.

On Thursday, in the second-last slot of OSCON 2018, Tim and I teamed up with Mars to deliver an entirely-live coded talk on Learning Swift with Playgrounds. Mars wrote all the examples, designed the flow, and really got thrown in the deep end—and she totally nailed it! Tim provided an excellent narration of proceedings, as Mars live-coded her way through the demos (with Xcode crashing, as is custom!) We got many fabulous reviews, with the talk getting a 4.9/5  average. We were thrilled. You can find some notes here, and the fabulous Playground that Mars wrote here on GitHub.

Our friends, VM, Josh, and Paul, also delivered well-received, and awesome talks.

We really love working O’Reilly, particularly our amazing editor, Rachel Roumeliotis, who has risen the ranks of the company while we’ve been working with her (absolutely no connection to us working with her!) and is now a VP of Content Strategy.

We’re doing a bunch of great projects with O’Reilly over the coming year or two, including finishing up a new edition of our iOS Swift Game Development Cookbookas well as a new Unity Game Development Cookbook, a Head First Swift book, and a brand new title, Practical AI with Swift. More updates on all of these soon!

Our latest edition of Learning Swift is available, and getting a bunch of great reviews, and our Mobile Game Development with Unity remains a fabulous guide to building games with Unity. Check them out?

## July 28, 2018

### Paris

#### /dev/world/2018

The conference that I help run, /dev/world/2018, is selling tickets!

We have amazing keynotes from the following people:

• A Software Engineer from Savage Interactive, creators of hit iPad art app, Procreate
• Quentin Zervaas, creator of Apple Design Award winning app, Streaks
• Richard Moss, author of The Secret History of Mac Gaming

And we have workshops!

• Quality assurance and testing fundamentals for small teams
• Refactoring a horrible codebase guided by tests
• Property Based Testing in Swift
• UX for Developers

And sessions!

• xcodebuild for fun and profit
• Accelerated App Development Using CloudKit: Idea to Featured in a Week
• Batteries and Locks: Modern Tech from Ancient Times
• Building Frameworks Natively in Swift
• Dancing with Attitude – Building experiences with CoreMotion
• Designing for iOS: Resources You Gotta Know
• Fun with fudge factors: prototyping vague things
• How to go from bad practice to best practice
• How To Make It Look Like You Know What You Are Doing
• Let’s settle this UI/UX thing once and for all
• Machine Learning …without the Machine
• Making a visual novel in HyperCard
• Mis-using Bluetooth wristbands to enhance cognitive accessibility of an app for inpatients with severe brain injuries
• Performance Tips & Tricks with Unity on iOS
• Push Notifications and the Limits of Innovation
• Rewriting Alamofire: Into the Core
• SIL for First Time Learners
• Solving the Massive App Problem: Rearchitecting a 5 year old codebase
• State Machines are your friend
• Structuring Your Code with the Model-View-Presenter pattern
• Swift, for Objective-C OGs
• The State of MVC
• There And Back Again with the Roundtrip App
• Tools for testing, logging, and analytics-ing your code
• VIPER for iOS

We’ll also have a dinner keynote, during our famous quiz, from Paul Fenwick! It’s going to be amazing! Grab a ticket?

## July 13, 2018

### Paris

#### OSCON 2018

I’m super, super, super excited to be back at OSCON, my favourite conference, in Portland. This year you can find me at the following bits of OSCON:

You should also check out the following sessions, from my friends:

## May 15, 2018

### Paris

#### /dev/world/2018 CFP extended!

By popular demand, we’ve extended the /dev/world/2018 call for presenters by one week, to 22 May 2018! Get your talks in! You will be amazing!

## April 20, 2018

### Paris

#### /dev/world/2018

The iOS, macOS, Swift, and general Apple development conference that I help run, /dev/world is looking for presenters! We’ve opened the CFP for our 11th event (we’ve been going for 11 years! That’s nuts!) and we’re very excited.

If you have a good idea for a talk, please send it our way! I might wear my space suit again.

## March 28, 2018

### Paris

#### Latest Swift book: Learning Swift

Learning Swift (3rd edition), my latest book on Swift, covering Swift 4 and beyond, is available now. Check it out on Safari, or from your favourite retailer of books.

## March 22, 2018

### Paris

#### Award! 😮

I’m utterly stunned to report that Night in the Woods, a game which we work on in a variety of capacities, has been awarded two incredibly prestigious IGF (Independent Game Festival) awards for 2018:

• Seumas McNally Grand Prize for Best Independent Game
• Excellence in Narrative

This is a truly stunning result for a really cool little game.

Oh, we’re also nominated for some BAFTA awards. No big deal.

## February 14, 2018

### Paris

From Thursday to Sunday I was lucky enough to be up on the relatively remote West Coast of Tasmania, in the Tasmanian-style resort town of Strahan, attending the first residential of the year-long Tasmanian Leaders Program (TLP).

TLP is a annual program (I’m part of TLP12, the twelfth intake for the program) that takes participants on residential retreats and linking sessions around Tasmania, exploring personal and professional development issues and activities. I’m told that it’s quite a competitive/exclusive/prestigious program, and I really wasn’t expecting to be offered a place.

I met 30 interesting and passionate Tasmanians, and had a great weekend doing all sorts of activities. I’ll post more about what we’re up to as the program progresses!

## January 16, 2018

### Paris

#### Blockchain-to-Ponzi Safari Extension

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 09, 2018

### Paris

#### 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.

## June 22, 2017

### Chris

#### 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).

• Something with a strong developer relations element. I enjoy working with other developers, and I love having the opportunity to get them excited about things that I’m excited about. As a conference organiser, I’m very aware of the line between terrible marketing shilling, and genuine advocacy by and for developers: I want to help whoever I work for end up on the right side of that line.
• Either in San Francisco, North of San Francisco, or Remote-Friendly. I live in Petaluma, a lovely town about 50 minutes north of San Francisco, with my wonderful partner, Josh. We’re pretty happy up here, but I’m happy to regularly commute as far as San Francisco. I’ll consider opportunities in other cities, but they’d need to primarily be remote.
• Relevant to Open Source. The Open Source world is where my experience is, it’s where I know people, and it’s the world where I can be most credible. This doesn’t mean I need to be working on open source itself, but I’d love to be able to show up at OSCON or linux.conf.au and be excited to have my company’s name on my badge.

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:

• Co-organised two editions of PyCon Australia, and led the linux.conf.au 2017 team. I’ve led PyCon AU, from inception, to bidding, to the successful execution for two years in a row. As the public face of PyCon AU, I made sure that the conference had the right people interested in speaking, and that we had many from Australian Python community interested in attending. I took what I learned at PyCon AU and applied it to run linux.conf.au 2017, where our CFP attracted its largest ever response (beating the previous record by more than 30%).
• Developed Registrasion, an open source conference ticket system. I designed and developed a ticket sales system that allowed for automation of the most significant time sinks that linux.conf.au and PyCon Australia registration staff had experienced in previous years. Registrasion was Open Sourced, and several other conferences are considering adopting it.
• Given talks at countless open source and developer events, both in Australia, and overseas. I’ve presented at OSCON, PyCons in five countries, and myriad other conferences. I’ve presented on a whole lot of technical topics, and I’ve recently started talking more about the community-level projects I’ve been involved with.
• Designed, ran, and grew PyCon Australia’s outreach and inclusion programmes. Each year, PyCon Australia has offered upwards of $10,000 (around 10% of conference budget) in grants to people who otherwise wouldn’t be able to attend the conference: this is not just speakers, but people whose presence would improve the conference just by being there. I’ve led a team to assess applications for these grants, and lead our outreach efforts to make sure we find the right people to receive these grants. • Served as a council member for Linux Australia. Linux Australia is the peak body for Open Source communities in Australia, as well as underwriting the region’s more popular Open Source and Developer conferences. In particular, I led a project to design governance policies to help make sure the conferences we underwrite are properly budgeted and planned. So, if you know of anything going at the moment, I’d love to hear about it. I’m reachable by e-mail (mail@chrisjrn.com) but you can also find me on Twitter (@chrisjrn), or if you really need to, LinkedIn. ## February 15, 2017 ### Chris #### 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: • Attending, and presenting a talk at WD42 — my talk will be one of my pieces for ConFoo, and is entirely new material. Get along! • Having a farewell do, *probably* on Tuesday 28 February (but that’s not confirmed yet). I’ll post details about where and when that’ll be in the near future (once I’ve made plans) • Madly packing and making sure that that I use up as close to 100% of my luggage allowance as possible 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. ## January 01, 2017 ### Chris #### 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: • At linux.conf.au 2016 in Geelong in February, I announced linux.conf.au 2017 in Hobart. Over the last year, the conference team and I ran a wildly successful CFP, found 4 amazing keynotes, and lined up what looks like it should be an excellent conference. The only* thing left to do is actually run the thing. • At PyCon in Montréal in 2014, I ran a BoF session for regional PyCon organisers. Two people from the Dominican Republic showed up and asked for our help in starting a PyCon in the Caribbean. In February 2016, I got to go to that conference, and it was incredible! • On that note, I got to continue building on a deeply wonderful relationship with the amazing Josh Simmons that we started in 2015. Over the course of 2016, we got to spend time with each other on no fewer than 6 occasions, both in North America, and here in Australia. We met (and got along quite well with) each others’ friends and families. We spent time living together, and have made big steps towards living together permanently this year. Frankly, I could do a whole post on this and I’m not sure why I haven’t. • On a slightly related note, I spent 92,000-odd miles in the air this year. Much of that was spent ducking over to the US to spend time with Josh; some of the rest was with Josh, and some of it was alone. I got to see some wonderful places I’ve never seen before, like the Grand Canyon and Hoover Dam, an actual northern hemisphere winter with snow and everything, and driving up the Californian coast from Los Angeles. • … and one night in May, on the Steel Bridge in Portland, Josh and I decided that we should get married. So those are some of the highlights of my year. It’s been entirely not bad, in the grand scheme of things. Hooray! ## July 06, 2016 ### Chris #### linux.conf.au 2017 wants your talks! You might have noticed earlier this week that linux.conf.au 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. linux.conf.au 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 linux.conf.au 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. OPENNESS FOR EVERYONE 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. THREATS FROM THE FUTURE 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. WHATEVER YOU WANT! 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 linux.conf.au 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 #linux.conf.au 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. ## May 12, 2016 ### Hovo #### 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 […] #### 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 […] #### 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 […] #### 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 […] ## May 09, 2016 ### Hovo #### 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 […] ## April 26, 2016 ### Chris #### Introducing Registrasion! Time for me to fill you all in on some work I’ve been doing in preparation for linux.conf.au 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. linux.conf.au 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: • Eliminating manual work for registration managers (Zookeepr has a lot of that) • More flexibility in how we automatically offer certain items to end-users (selling flexible accommodation dates was a difficulty one conference year had) • Handling money properly, so that it’s possible to easily reconcile inventory and what’s in the invoicing system 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 linux.conf.au 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! ## March 01, 2016 ### Chris #### 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. ## February 12, 2016 ### Chris #### Talks from linux.conf.au 2016 I spoke at linux.conf.au 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 linux.conf.au 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 06, 2016 ### Chris #### linux.conf.au 2017 is coming to Hobart Yesterday at linux.conf.au 2016 in Geelong, I had the privilege of being able to introduce our plans for linux.conf.au 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 linux.conf.au 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 lca2017.org and find out more about the city, or sign up to the linux.conf.au announcements list, so that you can find out more about the conference as we announce it! ## January 08, 2016 ### Chris #### Three weeks until LCA2016 In February, I’m presenting my first-ever solo presentation at linux.conf.au, my favourite Free and Open Source Software Conference. This year, the conference is in Geelong (just out of Melbourne). I’ve been attending linux.conf.au 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 linux.conf.au 2016 is still open, so if you’re not yet planning on attending, there’s still time to get a ticket! ## January 06, 2016 ### Chris #### 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. • Something with a strong developer relations element. I enjoy working with other developers, and I love having the opportunity to get them excited about things that I’m excited about. As a conference organiser, I’m very aware of the line between terrible marketing shilling, and genuine advocacy by and for developers: I want to help whoever I work for end up on the right side of that line. • Remote-Friendly. I’ve got conference travel lined up already for the first half of 2016, mostly to the US, but I need to primarily be in Australia so I can run linux.conf.au 2017. I’m happy to work from wherever I happen to be, but having the support of my employer to do so is really important. • Relevant to Open Source. The Open Source world is where my experience is, it’s where I know people, and it’s the world where I can be most credible. This doesn’t mean I need to be working on open source itself, but I’d love to be able to show up at OSCON or linux.conf.au and be excited to have my company’s name on my badge. 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: • Co-organised two editions of PyCon Australia and made a successful bid for linux.conf.au 2017. I’ve led PyCon AU, from inception, to bidding, to the successful execution for two years in a row. As the public face of PyCon AU, I made sure that the conference had the right people interested in speaking, and that we had many from Australian Python community interested in attending. PyCon AU attracted presenters from six countries, and attracted more than 300 people to my geographically isolated city in the middle of winter. I’m taking what I’ve learned, and am doing this again for linux.conf.au 2017. • Given talks at countless open source and developer events, both in Australia, and overseas. I’ve presented at OSCON, PyCons in four countries (soon to be five), and myriad other conferences. I’ve presented on a whole lot of technical topics, and I’ve recently started talking more about the community-level projects I’ve been involved with. • Designed, ran, and grew PyCon Australia’s outreach and inclusion programmes. Each year, PyCon Australia has offered upwards of$10,000 (around 10% of conference budget) in grants to people who otherwise wouldn’t be able to attend the conference: this is not just speakers, but people whose presence would improve the conference just by being there. I’ve led a team to assess applications for these grants, and lead our outreach efforts to make sure we find the right people to receive these grants.
• Served as a council member for Linux Australia. Linux Australia is the peak body for Open Source communities in Australia, as well as underwriting the region’s more popular Open Source and Developer conferences. In particular, I led a project to design governance policies to help make sure the conferences we underwrite are properly budgeted and planned.

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

## October 16, 2015

### Chris

#### 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.

## August 10, 2015

### Chris

#### PyCon Australia 2015!

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

• Python’s New Type Hints In Action… In JavaScript looked at the tarpit surrounding PEP 484, by introducing Pythonistas to TypeScript, an implementation of the same type system but for JavaScript. There’s a video on youtube and notes on github.
• Test-Driven Repair looked at the issue of adding tests to code that hadn’t really considered it. I proposed some ideas about how to go about adding tests and refactoring your code to make future testing easy. There was a lot of good discussion after this talk, and this one represents an improvement over the version I presented at OSCON a week earlier. Once again, there’s a video on YouTube and notes on Github.

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!

## April 23, 2015

### Josh

#### Nines of nines

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

If

• "one nine of availability" = available 0.9 of the time,
• "two nines of availability" = available 0.99 of the time,
• and so on...

then generally,

• "n nines of availability" = available of the time,

right?

This works for any whole number n: e.g. 5 nines is .

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

• , and going the other way,
• .

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: . 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 .

One function for introducing a perturbation for halfodd integers is . When is a whole integer, , and when  is half an odd integer, .  Multiply this function by some constant and you're in business.

Thus, define a new function for all :

which, when plotted, looks like this:

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).

## January 16, 2015

### Chris

#### To the Future

hobart.lca2017.org

That is all.

## November 23, 2014

### Josh

Makes 3 slices.

#### Ingredients

• 3 slices of brioche loaf;
• 2 eggs;
• Dash of milk (soy works) or if you're feeling really naughty, cream;
• Pinch of salt;
• A cap-ful of vanilla;
• Sugar to taste (I usually put 1tsp);
• Butter (salted/unsalted/whatevs) for the pan.
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 13, 2014

### Josh

#### 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.

## June 02, 2014

### Josh

#### 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.

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.

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.

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.

#### 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.)

#### 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.

Regards,

Josh

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. www.ietf.org/rfc/rfc0822.txt

#### 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

• carrying the mass of notes was no longer a problem;
• my handwriting was barely legible anyway;
• because it was typeset and not handwritten, I was not hesitant to let my lecturer or classmates have a copy, and have them judge me on my handwriting.

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 easy...no, 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?

• In the modern day of fast document scanners and huge and cheap hard drives, it's very economical to scan all the paper at a very decent quality setting.
• You can't "back up" paper. Well, you can, but you have to copy it, which means either using a scanner and printer, or a photocopier. "Backing up" physical paper actually means archiving, which requires physically moving the paper to a stable, clean, dry storage area that's not likely to catch on fire. To move paper to the other side of the world takes at least half a day. Backing up a scanned document means copying a file and that can be done to the other side of the planet within seconds.
• To access paper, you have to have it physically near you. To access a file, you just have to be near the Internet. I always have at least two Internet connections on hand. (But don't trust the cloud; encrypt your files and keep a local backup.)
• You can't "encrypt" paper. Well, again, you can, but again, what it actually means is rewriting a new encrypted copy and destroying the old copy.
• "Securely deleting" paper requires a fire or a paper shredder. Securely deleting a file means knowing where the menu item is, or having an encrypted hard drive to start off with, or being sensible about your hard drive disposal.
• Paper occupies significant space and has significant mass and associated costs, compared to the amount of information it stores. 200 sheets of 80gsm A4 paper weighs one kilogram. One A4 side scans in to my computer at about 1 MB. So if I have 1TB of hard disk space, on a hard disk weighing about 600 grams and costing about $60, I can store the equivalent of one million sides—500 000 A4 sheets—which would weigh 2.5 metric tonnes and cost$110 000 to print at uni—just in black and white! I can store even more on disk if I have the original document files, since plain text, layout information and vector images are more storage-efficient than full-page raster images.
• While reading is optimal with nicely typeset print on paper, the vast majority of reading can be done on an iPad or some lesser eBook reader, so printing is unnecessary unless you really have to. You can make annotations easily with Preview or any number of other tools.
• Paper degrades, thermal paper fades rapidly, and paper paraphernalia can be damaging. Staples and paperclips rust. Your hard disk can be damaged but is hermetically sealed, and probably lives in a hefty computer you won't move around, unlike paper, which is so convenient to manhandle.
• People accept emails with attached PDFs 99% as readily as they accept physical paper. You can complete PDF forms entirely electronically. When you do need paper, there's a lot of printers in the world. These days you can print to your home printer via the Internet as though you were there.
• For tax purposes, computer records are acceptable. So scan all the old receipts before they fade.
• With a fast scanner, scanning all your handwritten notes is quite easy. There's no shame in drawing a complicated diagram on paper simply to scan it. But with apps like Paper by 53 and procreate, drawing directly into commodity devices like the iPad is fun. Capturing diagrams like the ones lecturers write on the board can be done even easier: use the camera in your phone!

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.

#### Things

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.

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 , one has . With a little thought it turns out it's very easy to implement with a kind of twisted addition defined as follows:

For example,

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

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

You get "fun" results if you add two different numbers, and it seems that there's no identity element unless you include and assert that (alternatively, ). Thus

Furthermore there are no inverse elements unless you escape the extended real line entirely. For example, , and therefore

I should be doing work.

#### Drawing a pixel-art cube

Pixel art is fun, and isometric pixel art looks great when done properly. My friend Rex informs me that, unlike "real" isometric art which uses an angle of (), pixel isometric art uses a ratio of two-pixels-along-per-pixel-up, which is a slightly lower angle. Rex then wanted to know how high (in pixels) he should draw the edge of a cube if he's already drawn it some number of pixels wide. Here is the answer.

→ Drawing a pixel-art cube

(tl;dr: Multiply by 0.8944.)

#### Ultrafilters and ultralimits

These are some notes on ultrafilters and ultralimits that are currently in the draft introduction of my thesis. Feel free to follow along.

Even in seemingly benign situations, ordinary sequential limits can fail to exist. One solution is the ultralimit. To define ultralimits, one needs ultrafilters, and hence filters.

Definition 1 A filter on a set is a collection of subsets of satisfying the following properties:
(F1) (this mostly serves to exclude the "improper" filter );
(F2) If then every superset is also in (it is upwards-closed);
(F3) If and are in , then .

Note that a filter cannot contain any pair of disjoint sets; by (F3) their intersection would be in , but by (F1), this is a contradiction.

If a set then every subset is also not in . To see this, suppose some subset is in : by (F2), this implies that , contradicting .

Definition 2 An ultrafilter on satisfies the further property that for any , either or is in .

Since and are disjoint, by the above, for any ultrafilter on , precisely one of them is in . It is not possible to include more sets in an ultrafilter without it failing to be a filter, so there is no filter finer than an ultrafilter.

Lemma 1 There are two disjoint kinds of ultrafilters on a set : the principal ultrafilters, containing some singleton set where , and the non-principal or free ultrafilters, which contain no finite sets at all.
Proof If an ultrafilter on contains any finite set , we may see that it necessarily contains a singleton set, and is therfore principal, as follows. Assume that for all $x\in X$. In particular for each . Thus for all , and by property (F3) we thus have for all . Inductively each element of can be removed, one at a time, until none remain, at which point it contradicts (F1).

While it is easy to exhibit a principal ultrafilter on many infinite sets, one must rely on some additional axiom to provide the existence of free ultrafilters. The Ultrafilter Lemma (UL) does this nearly directly: UL asserts that every filter is contained within an ultrafilter, and some filters (such as the Fréchet filter described below) can only be contained within a free ultrafilter. The Ultrafilter Lemma is also a consequence of the Axiom of Choice. However, the Axiom of Choice does not follow from the Ultrafilter Lemma, so UL is a weakening of AC. One useful consequence of the Ultrafilter Lemma is the Hahn-Banach theorem.

Since free ultrafilters do not contain any finite sets, by definition they must contain all cofinite sets. The filter consisting of cofinite sets (this is the Fréchet filter) is therefore contained in any free ultrafilter; conversely, any ultrafilter containing the Fréchet filter is a free ultrafilter. The Fréchet filter itself is not usually an ultrafilter: consider two infinite sets which are complements of each other, and so neither is cofinite.

Definition 3 Given any sequence of real or complex numbers and a free ultrafilter over , if for some value and each , we have

then is the (unique) ultralimit of the sequence with respect to , written

This generalises to sequences in any metric space by

Note that if we try to do the same thing with a principal ultrafilter, then we allow the ultralimit to take the value of the sequence at a single point. For the ultralimit and ordinary limits to coincide, one must require a free ultrafilter.

Some authors sometimes require, for ultralimits, that the ultrafilter over used, instead of explicitly being required to be "free", is required to contain every interval for each .

Lemma 2 An ultrafilter on is free if, and only if, it contains every interval of the form for each .

Proof A free ultrafilter contains all cofinite sets, including as examples the intervals of the form .
To show the converse, suppose a ultrafilter contains every interval for , and assume that is not free (i.e. principal). , being principal, contains a singleton set, say, and therefore does not contain . Since subsets of sets not in a filter are also not in the filter, this implies is not in . This contradicts the requirement that every .

Ultralimits provide a resolution to the problem of defining a unique limit for a sequence that fails to converge due to having multiple limit points, effectively by choosing one of the limit points. Intuitively, a free ultrafilter will contain a set of indexes corresponding to one of the convergent subsequences, but none of the others, as they will necessarily be indexed by sets in the complement of the index set of the chosen subsequence. If a sequence is bounded, then by the Bolzano-Weierstrass theorem there is at least one convergent subsequence, so an ultralimit is always defined on bounded sequences.

Sources: mostly Wikipedia.

#### Letter to the Editor

Last night I had the distinct pleasure of trying to fix my grandmother’s broadband internet connection. Her previous internet services provider helpfully informed her that they were no longer offering services in the “rural” 7000 postcode area, and therefore she has switched to a different ISP. After great difficulty securing a new port at the overcrowded telephone exchange, she was cut over to the new service yesterday. Something went awry and I spent several hours between the computer and the call centre support trying to fix it. Due to further technical difficulties the new service still doesn’t work.

If only there were some kind of optic-fibre replacement for the degraded nightmare copper phone network that was never designed for this mess, that she could use instead.

His royal highness King Tony decrees otherwise.

Josh Deprez
South Hobart

## January 27, 2014

### Chris

#### Hottest 100 Spoiling results

Well, the Hottest 100 happened yesterday, so now it’s time to evaluate how my spoilers list went:

• 147 songs were given a 1% or higher chance of appearing in the Hottest 100 by my bootstrap analysis. 98 of those 147 songs made the Hottest 100.
• 85 of the songs in the Spoiled Top 100 made the Hottest 100.
• The top 72 songs in the spoiled list made the Hottest 100.
• 6 of the 10 songs in the Spoiled Top 10 made the Hottest 100’s Top 10.
• #1 was correctly predicted.

Why wasn’t it more accurate, or as successful as last year?

• We don’t know how good the OCR model was at transcribing votes. We’ll need to do work fitting our OCR model to known transcriptions if we want to do this again next year.
• The sample size was much lower.
• Daft Punk fans don’t post to Instagram enough (inherent bias)?
• The bootstrap resampling technique did not account for taste: particular songs often being selected together.

I’ve got every confidence that this method will be viable for next year, especially since the results were a much less spectacular spoiler than 2012’s Warmest 100. Let’s see if we can make a better model for next year.

## January 24, 2014

### Chris

#### Booting out the Warmest 100

You’re probably familiar with Triple J’s Hottest 100. It’s the world’s largest write-in music poll. Last year, Triple J made an easy, shareable link for people to post their votes out on Twitter and Facebook. Alas, these links were easy scraped from the web, and the Warmest 100 (link to 2012 count) was born. The top 10 (but not its order) was revealed, and the top three was guessed perfectly.

This year, voters weren’t given a shareable link, but a few thousand people took photos of their confirmation e-mails and posted them to Instagram. With a tiny bit of OCR work, the Warmest 100 guys posted their predictions for this year. They found about half the number of votes that they did last year through the scraping method, which is no mean feat, given the lack of indexing.

So the question is — how useful are these votes in predicting the Hottest 100? What songs can we be sure will be in the Hottest 100? How certain is that top 10?

Both years, Justin Warren independently replicated their countdown (spoilers), and has written up his methodology for collecting the votes this year. I asked him for his data to do some analysis, happily, he obliged.

He’s since updated his method, and his counts, and written those up, too (spoilers).

Update: he’s updated his method *again* based on some feedback I offered, and has also written that up (spoilers). This is the data my final visualisation runs off.

So, what have I done with the data?

### Bootstrap Analysis

When you have a sample — a small number of votes — from the entire count, you can’t really be certain where each song will actually appear in the count.

In this case, Justin’s data collected 17,000 votes from an estimated 1.5 million votes. That’s a sample of 0.1% of the total estimated vote. It’s a sample, but we have no idea how that compares to the actual count.

If we think that the votes that we have is a representative sample of all of the votes, then what we’d like to know is what would happen if we scale this sample up to the entire count. Where will songs end up if there’s a slight inaccuracy in our sample?

The good news is that computers give us a way to figure that out!

Bootstrap analysis (due to Effron) is a statistical technique that looks at a sample of votes from the whole set of votes, and randomly generates a new set of votes, with about as many votes as the original sample. The trick is that you weight each song by the amount of votes it received in the sample. This means that songs are picked in roughly the same proportion as they appear in the sample. The random sampling based on this weighted data adds noise.

You can think of this sample as a “noisy” version of the original sample. That is, it will be a version of the original sample, but with slight variation.

If you repeat this sampling process several thousand times, and rank the songs each time, you can get a feel for where each song could appear in the rankings.

How do you do that? Well, you can look at all of the rankings a given song gets for each randomised set. Sort this list, and pick the middle 98% of them. Based on that middle 98% of rankings, you can be 98% certain that the song will be at one of those positions. In statistics, this middle 98% is called the 98% confidence interval by bootstrap.

You can repeat this for different confidence levels, by picking a different amount of rankings around the middle.

I’ve used Google Spreadsheets to visualise these confidence intervals. The lightest blues are the 99% confidence intervals. The darkest blue intervals are the 70% confidence interval. The darkest single cell is the median — i.e. the middle of all of the rankings that we collected for that song in the bootstrap process.

The visualisation is up on Google Docs. (spoilers, etc).

I’ve run the same visualisation on Justin’s 2012 data, it’s less of a spoiler than the 2013 version if you care about that. It can inform the rest of the article for you.

### Notes

First up, a bit on my methodology: Justin’s data didn’t separate votes into their original ballots. So, I had to pick songs individually. To improve accuracy, I selected songs in blocks of 10, where each song in the block of 10 is different — this vaguely resembles the actual voting process.

In my experiments, I ran the sampling and ranking process 10,000 times.

You’ll notice some interesting trends in this visualisation. The first one is that the higher the song is in the countdown, the narrower its blue interval is. Why is this so?

Well, as songs get more popular, the distance between each song in the number of votes received grows. In Justin’s sample of the votes, #100 and #73 were separated by 15 votes. So if one or two votes changed between #73 and #100, that ordering could change spectacularly. Given Justin’s sample is of 17,000 votes, 15 votes represents an 0.1% change in the vote.

So at those low rankings, a tiny change in votes can make for a massive difference in ranking.

At the other end of the count, #1 and #2 are separated by 16 votes. #3 and #4 are separated by 22 votes. #4 and #5 are separated by 51 votes. Down the bottom of the list, where 16 votes could move a song 33 places in our count, you’d need 16 votes to change just to swap positions 1 and 2.

What this means from a statistical perspective is that the closer to the top you are, the more work you need to do to change your position in the count.

You’ll also see this phenomenon in the right-hand side of the intervals. The interval of a given colour on the right-hand side of the interval will generally be longer than the same colour on the left. Once again, this is because lower ranks swap around more easily than higher ranks.

Update: Since writing this article, I ran one more test – how many of the songs in the top 100 of Justin’s raw  sample of votes will make it into the actual Hottest 100? Well, bootstrapping helps us here too. For each bootstrap trial, I take the top 100 songs, and see how many of those are in the raw top 100. I reckon, with 98% confidence, that we’ll get 91 songs in the actual Hottest 100. Thanks to David Quach for the suggestion.

In summary: the Warmest 100 approach is statistically a very good indicator of the top 4 songs. The top 4 is almost certainly correct (except that 1&2 and 3&4 might swap around between themselves). Everything up to #7 will probably be in the top 10.

The sampling approach is less accurate at the bottom, but I’m pretty confident everything in the top 70 will be in the actual top 100.

I’m also pretty confident that 91 of the songs in the raw top 100 will appear in the actual top 100.

### End

I’ll be making some notes on how these confidence intervals got borne out in the actual count on Monday. I’m very interested to see how this analysis gives us a better idea of how accurate the Warmest 100 actually is.

## December 13, 2013

### Chris

#### Talk: Making Mobile Web Services That Don’t Suck

The second of my DroidCon India talks introduces developers of mobile apps with the difficulties of designing for mobile networks. It also contains a series of design ideas that developers can take back to their back-end development team, so that the APIs that they produce for accessing their services are less difficult to use in a mobile context.

#### Talk: Portable Logic/Native UI

My first talk from DroidCon India 2013 (November, Bangalore). It’s an exploration into the approach that we’ve taken at AsdeqDocs in producing a properly cross-platform mobile app. We take the approach of separating our core application logic into a C++ codebase, and apply platform-specific user interfaces over that codebase.

This talk covers the software engineering principles that make that work; as well as the benefits, difficulties, and insights that we’ve learned over a few years of doing this. It’s probably the favourite of my mobile dev talks.

#### Announcing the LCA2014 Open Programming Miniconf

Very pleased to say that I’ll, once again, be running an Open Programming Miniconf at Linux.conf.au in January. This time around, the conference will be at the University of Western Australia in Perth.

I’m especially pleased, because after initially being rejected by the conference team, with limited time to assemble a line-up, I’ve put together what I think is the best Programming miniconf lineup in the five years I’ve been running it.

One of the goals of the Open Programming Miniconf is to be a forum for developers to share their craft: ideas for improving the way people code, and topics that are of benefit to people who develop using many open source programming languages. This year, for the first time, I think we’ve filled that remit.

This year’s talks cover everything from low-level mobile programming and driver development, to deployment of web applications, as well as talks about packaging, deployment, and development tools.

We also don’t have a single state-of-the-language talk. Everything’s about topics that can be transferred to any number of languages.

I’m excited! If you’re interested in the miniconf, check out our schedule and all of our abstracts at the conference wiki. See you in Perth!

## November 25, 2013

### Chris

#### Where to, this time?

… Once again, I’ve completely failed to document my travels this year. I need to do better. Here’s my first attempt.

I’m off to Bangalore, India tomorrow to join in with DroidCon India 2013! I’m presenting two talks, and being a panelist on a panel:

• Portable Logic/Native UI – Explores the multi-platform app structure that we use on AsdeqDocs; things I wish we’d known at the start of the project, and things that we’ve learned doing it.
• Panel: The State of Android Development in India – I’m on this panel as an international voice amongst a table of locals. It’ll be interesting to see how my perspective gels with the other panelists.
• Making Mobile Web Services That Don’t Suck – A talk that covers everything a mobile dev needs to know to understand how mobile networks work, and how to work with their back-end team to make an API that doesn’t suck.

I’ll post back here with slides and videos as they become available.

I’ll be in Bangalore until late on Saturday, then coming home via Singapore for a few days. Should be fun!