Videos from linux.conf.au 2015

The penguin dinner (the “formal” conference dinner) for linux.conf.au 2015 was held at the Museum of Transport and Technology in Auckland. This was pretty cool epic and amazing. Here are the videos I managed to capture of some of the machinery at work:

Unfortunately, I took an amazing 5-minute video of a triple-expansion steam engine being started up, but I’ve lost the footage – I think my phone might not have saved it. 🙁

On the Saturday after the conference, I went on The Northern Explorer, a train trip from Auckland to Wellington with a few friends. Again, I took a number of videos (as well as literally hundreds of photos):

This is actually the first time I’ve bothered capturing videos as well as photos on a trip. My phone (a Google Nexus 5) has proved that it can do 95% of the job of my dSLR in capturing the essence of a scene, and that’s good enough for me. It helps that I carry my phone everywhere, too. I will definitely be considering buying some sort of small tripod device though; as it turns out my hands are very shaky.

I have the NBN!

It took a long time, and was a complete ordeal to organise (seriously, telecommunications companies have the worst customer service ever), but I finally have an NBN connection at my apartment!

Before:

1.19MB/s down, 0.10MB/s up, 20ms latency

After:

2.98MB/s down, 0.60MB/s, 3ms latency

I’ve chosen a 25/5 Mb/s “Silver” plan from Internode, which provides roughly 5 times the speed of my old ADSL2+ connection in both the upstream and downstream directions, as well as much lower latency. I’m really excited about the increased upstream bandwidth, it should allow me to host services from my house more comfortably.

PyConAU 2014

IMG_20140802_132246This weekend I attended PyConAU , a community-run conference for the Python programming language. Held this year in Brisbane, it was a good excuse to learn some new things, catch up with old friends, as well as make some new ones.

I have a soft spot for Brisbane. In addition to having family live here, I also love their public transport system: a well-integrated system of buses, trains and ferries run on a reliable and frequent schedule to all areas. Their AirTrain is hands down the easiest public transport solution from an airport to a city (miles ahead of Melbourne’s cramped buses). The conference was held at the Brisbane Conference and Exhibition Centre, which is the centre of the city’s cultural district, with museums, theatres and shopping and dining areas all around. It’s a wonderfully laid out modern city.
IMG_20140801_165033
The first keynote was by the director of the National Computer Science School (NCSS), and generally awesome guy, James Curran. My experiences at NCSS back in 2007 helped formed my programming abilities and gave me the knowledge that there was other life out there: an entire programming community, and being in IT was a good place to be.

A highlight of the talks on Saturday was a talk on caching for web services by Tom Eastman. He talked extensively of using HTTP protocol elements to control the cache in proxies and in web browsers. Whilst the examples used Django, the concepts will be useful for my work using ASP.NET.

An interesting part of the conference is talking to people outside talks, and this conference has been no exception. I’ve met many new people, including some stars of the Python world. I’ve also learned that many of the things I do in my daily programming life are wrong, and it’s great to learn more about best practices.

A traditional part of PyCon AU (as well as linux.conf.au, to an extent) is the end-of-day lightning talks. In particular, two talks in the Saturday session really appealed to me. First of all was Josh Deprez‘s talk on “node.hs”, where he talked about implemented Haskell in node.js, but instead wrote a lightning simulator within 5 minutes.

Secondly, and possibly of more long-term consequence, was Russell Keith-Magee‘s talk on Toga, a cross-platform UI toolkit that displays widgets using the operating system’s native widgets. So instead of your cross-platform app looking great on GNU/Linux (where GTK+ is native) and crap on Windows or OS X, it will look good on all three platforms (and possibly more in the future).

The final event of Saturday was the conference dinner, a traditional three-course sit down event with a lovely speaker named Paul Gampe (who worked in ISPs during the early nineties, making me very jealous). He gave a few lessons he learned working with the early FOSS and Perl communities, and why Python should make efforts to avoid these problems.

IMG_20140803_104959After dinner I retreated to my hotel room (I have made the mistake before of staying up with people all night and missing most of the talks on Sunday). However, I didn’t go straight to bed. I instead checked out Toga in more detail, and tried to get it running on Windows (it’s a very new piece of software). After a bit of code wrangling, I managed to get a blank window appearing on the screen (as my excited tweet about this shows). My patched code is now in the Toga repository, which is pretty cool.

Sunday morning’s keynote was given by Katie Cunningham on the topic of accessibility. I’ve heard more and more about this recently (especially through a talk at WebDev42 recently). The gist of her talk was that the tools and support and standards are there, and the only reason developers aren’t building accessible sites is because they’re lazy or don’t know better (her point was a bit more complex than that, but that was roughly it).

Two talks I really enjoyed during the rest of Sunday were Russell Keith-Maggee’s talk on building Python wheel packages (basic information that, being a very junior Python developer, I didn’t know) as well as Josh Hesketh’s talk on database migration testing. While Josh’s talk targeted Python projects and OpenStack in particular, the concepts are useful across basically all programming platforms. I’m lucky in that managing database migrations is something that Entity Framework (my C# ORM of choice) does for me.

After the conference finished, I completed my trip by visiting family for dinner and dropping in on a few Brisbane-based clients, before flying home (via Melbourne, of course, to earn maximal status credits).

As always, attending PyCon AU was a great experience, and I can’t wait for next year (it will be held in Brisbane again next year). In my mind PyCon AU is a very similar conference to linux.conf.au. I go for the same reasons: great community, great people, great content, and great fun!

How to run a small company in Australia

I’ve been the director/manager/shareholder (pretty much everything) of a small company in Australia called The Foo Project Pty Ltd for around two years now. We develop software, but this post isn’t about that. Today I want to talk about the ‘boring’ stuff (though I find it fascinating): accounting, legal issues, dealing with the federal government, etc.

Please note I’m not a lawyer or an accountant. If you need one, you should get one, not read blog posts by some guy on the Internet (that’s called procrastinating and it probably won’t help you). Handy hint: if you’re reading this for advice rather than entertainment value, you probably want an accountant or a lawyer.

So the things I’m going to cover are: why you might want a company instead of being a sole trader, how to get set up, what documents and so on you’ll need to keep, and some handy things I’ve learned along the way.

Why might a company structure be helpful?

The benefits and drawbacks of a company structure become more obvious once you consider what exactly a company is and what a sole trader isn’t.

A sole trader runs a business ‘as themselves’, that is, the business is the same legal entity as the person running it. Any income the business makes is personal income for the person running it, the same with expenses. A child running a lemonade stand in their front garden is a sole trader: any profit they make is theirs personally, and that’s as complex as it gets (well, technically they need to register for an ABN, but what the government doesn’t know won’t hurt them). Another thing to note is that any debts the business have belong to the person running it, so the business going bust is the same as the person going bust.

Image courtesy of j_regan
Image courtesy of j_regan

A company, on the other hand, is a different legal entity. Any income the company makes belongs to the company, not to the person (or people) who own the company. Any debts the company has belong to the company itself (though it is common for a company director to personally guarantee some large loans for small businesses). The profits flow to the owners (called shareholders) through dividends. Being different legal entities, if one of the shareholders (to whom the profits eventually flow anyway) takes cash out of the company without the company itself authorising it, then this is fraud.

There is also another structure for businesses known as the partnership. It combines all the worst parts of being a sole trader with the worst parts of a company structure. Just avoid it.

The benefits of being a sole trader:

  • Account keeping is greatly simplified (add up all your invoices from the year, subtract all the bills, that is your profit and put that on your tax return).
  • Tax is much simpler and you’ll probably pay less of it.

The benefits of having a company:

  • Limited liability. As a shareholder, you cannot be liable for debts the company incurs unless you have promised the company money you haven’t given it yet. Note that directors can be personally liable if they do something really stupid (best consult a lawyer for what ‘really stupid’ entails, it’s a bit complex).
  • If the business will ever be sold, it’s much simpler to hand over the keys to a separate entity than try and separate the business assets from your personal assets like a sole trader would do.
  • A company structure provides a nice wrapper for owning intellectual property (and other property I guess, but I use mine for intellectual property).

How to get set up:

This is actually much easier than you think. The hardest part will be opening a bank account!

  1. Figure out how many shareholders (owners) and directors (top-tier management) the company will have, and who they will be. If anybody else will be shareholding or directing with you, remember the following:
    1. It’s easier to introduce more directors and shareholders later on than it is to remove them. Pick carefully.
    2. Being a director does involve legally mandated responsibilities, so make sure directors will be up to the job required.
  2. Go to Register A Company (or a similar company registration service, they are all over Google) and fill out the form. It’s well explained and pretty simple. Note that they will ask you for an account password, choose something unique and never used before, as they will email it to you in plain text (*sobs*).
  3. After the form is processed, which will only take a few minutes, you’ll be sent emails with a whole heap of PDFs. Print out all these PDFs and stick them in a binder. These are the company’s registers of members and officers, and it’s a legal requirement to have a paper copy of them at the company’s registered address.
  4. Go to the Australian Business Register to register for an ABN and a TFN. This will allow you to do fun things like send tax invoices and register Australian domain names, and other less fun things like paying company income tax. The process is pretty simple, but unfortunately (in my experience, anyway) it takes several weeks for them to get the details posted back to you. If you might be employing people make sure to register for PAYG withholding. If you think turnover will be more than $75,000 in the first year register for GST, otherwise avoid it as it makes accounting much more annoying (you can register later if needed).

You now have a company, but there are a few more things to do to make things run smoothly and safely.

  • Open a bank account for the company. You can do it online, but you’ll probably need to take documents into the bank anyway, so it’s easiest to just go and talk to somebody. Take in the binder of company documents, you’ll need to prove the company exists (using the ACN) and that you are a director.
  • Set up your accounting program. I use Xero, which is cloud-based, very popular, and highly recommended. I did the setup myself, but I would recommend finding a good accountant and getting their help.
  • Buying insurance is highly recommended. I have worker’s compensation insurance (which you’ll need if you’re employing people) and professional indemnity insurance (which you’ll need if you give advice to people). Any business with actual premises will need public liability insurance and contents insurance. Insurance is like leftovers from a tasty meal, better to have too much than too little. Make sure you have enough.

Keeping documents:

There are two broad categories of things to keep: legal documents and accounting documents.

Pretty much everything you will need from a legal perspective is in the binder you printed out when you registered the company. In paper form, at least.

From an accounting perspective, keep everything in Xero (or other accounting software). Every invoice, every receipt, every transfer, every everything; it should all be recorded. Your accountant can help you (though it’s pretty easy to do yourself).

I’ve formed the practice, and I think it’s a very good practice, of scanning every single document that comes my way and backing it up to the cloud (encrypted, of course). I’ll probably never need it, but damn it will be handy if I do.

Some handy hints I’ve learned the hard way:
20140318_191428

  •  Never get behind in the accounting, it’ll just take even longer to catch up as things aren’t in memory any more. I sit down every night during the week and quickly scan in receipts and update any draft invoices (takes me about five minutes, sometimes less) and then on Friday night or over the weekend I sit down and do bank reconciliations, send invoices, deal with any paperwork, and so on (takes me about 15 minutes max, usually less).
  • Find a good accountant. They will save you money. The same goes for lawyers.
  • If you’re doing consulting work, get a lawyer to draw up a template for a contract. Contracts are good, again they will save you money. If you’re too cheap for a lawyer get a template off the Internet (though using a lawyer is better).
  • Every time you change address, or add or remove a shareholder or director (or some other scenarios), you’ll need to fill out Form 484 (“Change to company details”). Do this on time, the fees for submitting it late are horrendous.

 

Well, that’s all my advise. Hopefully it’s helpful. And again, I recommend finding a good accountant and a good lawyer. They will help you.

linux.conf.au 2014 – January 7

I’m (sporadically and with much delay) blogging my yearly pilgrimage to linux.conf.au 2014, this year being held at the University of Western Australia in Perth.

Tuesday Keynote

20140107_085514Today’s keynote was given by Kate Chapman from the Humaritarian Openstreetmap Team. It was awesome. I’d heard of OpenStreetMap previously but not really paid much attention to it either as a technology or as a community. I was impressed by both. On the technical side it’s great to have a map that can be easily edited by anybody, Wikipedia style, and has as much information as you could want on it. On the community side, I was really impressed by how they went from a bare outline of Haiti just before the earthquake there to a complete map of pretty much everything only a few weeks later.

I immediately installed JSOM, the OpenStreetMap native editor and started adding points of interest I know exist around my suburb. It was surprisingly easy to use and the near-instant results proved satisfactorily addictive. I hope to get into this more in the future.

Open Programming Miniconf

I spent a large portion of the day in the open programming miniconf. There were several highlights:

  • Katie Miller’s talk on OpenShift was hilarious, mostly because of a moment involving two tissue boxes:

    (the people pulling tissues out of the box were racing the OpenShift setup process to see which was faster).
  • Adam Harvey’s talk where he wrote a PHP microframework in 15 minutes in front of the crowd, partly to prove it could be done and partly to prove that you shouldn’t bother. I’ve always been dubious of frameworks for small peices of code, simply because PHP provides most of what you need (which is Adam’s point). I guess the problem comes when this one-page script evolves into a full application before anybody realises, and using a framework from the beginning would have saved a lot of headaches down the track. It’s a tricky one to judge.
  • Tom Eastman’s talk on serialisation formats. I’d never considered some of the problems with these formats that means that even in formats such as YAML or JSON there are security vulnerabilities that are continuously overlooked. Unfortunately I had to leave in the closing minutes of this talk to attend to an emergency, so I missed some crucial information. I’ll definitely be revisiting this one when the talks are released for download.

Walking into Perth

20140107_182451For dinner tonight we decided to walk into Perth via King’s Park, which proved to be very pretty. We also ended up walking back via the foreshore along Mounts Bay Road, which was a bit of fun since (for some reason I can’t quite figure out) we decided to run part of the way back. Turns out running is fun if you’re in good company. Who knew. The total distance was just under 12km, so I probably even burned off the energy from tonight’s dessert, a sticky date pudding from the British pub in Murray St (good stuff, though a bit dry).

Now the miniconfs are over, and the conference proper starts tomorrow. For delegates it’s a fairly unnoticeable difference (only real difference being that the talks aren’t grouped into rooms by subject anymore), but it marks almost the halfway point. There’s also the penguin dinner to look forward to, which this year looks to be an upscale picnic on the Matilda Bay foreshore.