linux.conf.au Geelong February 2016

Documentation Miniconf Monday Feb 1

History of tech writing

Zac Dover

  • First known example of English technical writing in 1391, Chaucer's Treatise on the Astrolobe.

  • history of telecommunication, with special focus on trans-Atlantic cables

Home and Away: Working from home

Alex Settle

  • technical writing is all about communicating with people

  • when in an office, this is facilitated by being able to interact face-to-face with people

  • "explosive introversion" - the sudden desire to be on your own during social interactions

  • Healthy Operations on YouTube

Talking to engineers

Dayle Parker

  • engineers and writers often communicate in different ways

  • ask simple but specific questions

  • ask one question at a time

  • number your questions

  • write up something that can be acked or nacked

  • do your homework

  • communicate in the most comfortable way for everyone

  • give a deadline

  • if one communication method isn't working, use another

opensource.com

Rikki Endsley

  • submit writing about any open source things

  • also have subjects that people can write on if they need ideas

Let's talk about debt

Lucy Bopf

  • technical debt: the cost incurred by doing things now that you will need to fix later, whether that is because you did it quickly originally to get something running, or for some other reason

  • planning is the best way to prevent debt

    • establish requirements

    • establish time frame

    • don't over commit

    • 90% research and planning, 10% writing

  • Accuracy, both technical and writing, helps prevent debt

    • verify and understand technical elements

    • communicate technical concepts in ways that readers can understand

  • Establish conventions early then apply them consistently

My awesome jacket: All I have are questions

Andrew Burden

  • Ask questions. Lots and lots of questions.

  • Also, my jacket is awesome.

Write the f'ing manual

Jodi Biddle

  • topic, EPPO, markdown, all good! Simplify for profit.


Tuesday Feb 2

Keynote

George Fong

  • The cavalry is not coming. We are the cavalry.

Beyond boundaries: Open Council Data

Steve Bennett

  • http://opencouncildata.org/

  • encourages councils to publish their data so that people can use it for research and building applications

  • often used as the subject for things like govhack events

Open Tech School: Open learning in practice

Lily Ryan

  • http://www.opentechschool.org/

  • what is 'open'? Removing barriers: open = accessible

  • how can a workshop provide laptops for people who want to learn?

  • venues should be accessible for mobility-impaired participants

  • workshops should be available in multiple languages

  • access for hearing and sight impaired people

  • outreach/advertising is important, with accessible features highlighted

Open data + video games = win

Jon Manning and Paris Buttfield-Addison

  • hackathons are great, but they are rarely followed up on

  • game jams are aware of this, thus they:

    • focus on making something

    • show something cool

    • make quickly and abandon quickly

    • are designed for practice and honing skills

    • don't care about productization

  • games matter, even in serious environments

  • games can teach things and help the audience understand things in different ways

  • games are engaging

  • if creating games at a hackathon, do it within the context of the event

  • appliance battle Pokemon style based on government data star ratings

  • match the department to the area multiplayer matching game

  • games are based on systems, and if you can find a system in data, you can make a game out of it

    • don't try to model real-world processes

    • taking liberties is absolutely fine, but not so far as to make the player lose sight of the point

  • at a hackathon, engage:

    • players

    • fellow participants

    • whoever deals out the prizes (but don't worry too much about it)

  • multiplayer is the easiest way to engage people, and it means you don't need to create an AI. It also more fun to show in person or to create demo videos for.

    • but multiplayer is hard

    • do it locally, or over a network. Do not use the internet.

    • real time is hard, turn based is better. If you must do real time keep it simple

  • at a hackathon you can do things you wouldn't get away with in production

    • the game only has to be fun for 30 seconds

    • doesn't need to deal with cheating, latency, and all sorts of other problems

  • but stay on-message

  • you're already being subversive by doing a game, so keep it simple

  • cut often and early; cut in the direction of the theme

  • sound in games is great

  • time is your enemy but not in the way you think

    • fosters deadline-oriented thinking

    • all-nighters are deceptive; you will never do your best work on an all-nighter so go home at night and arrive rested at a decent time

    • cutting things mercilessly is a great way of keeping things on schedule

  • raising engagement in a topic, rather than going in depth, is usually enough

  • the best way to make a game is to make a game, but games are hard, big projects

  • use the external pressure of a hackathon to set limits to your game and to motivate yourself

Prying Open Government

Dan Hawke

  • how to use freedom of information laws to benefit the community

  • anyone anywhere can request information from Australia

  • each Australian state has its own privacy laws, but are governed by the same national laws

  • http://alaveteli.org/ is an open source website for making information requests

  • example: requesting passenger numbers from Auckland transport

Internet Archive: Universal access. Open APIs.

Vicky Brasseur

  • https://github.com/internetarchive

  • https://archive.org/index.php

  • non-profit digital archive with the goal of getting more information to more people

  • currently have 25 petabytes of unique data

  • where does the money come from ($14-15 million):

    • 40% digitization projects

    • 20% web archiving projects

    • 40% foundations and donations

  • about 100 employees at the archive

  • who uses the archive?

    • in top 250 websites

    • 3-4 million people per day

    • 4 million downloads/streams per day

    • no IP addresses kept

  • 400+ billion web captures, 1996 to present

  • Wayback Machine updated within hours

  • 700,000 people per day

  • 80 TB crawl open for bulk download

  • you can save a webpage on the internet archive using the Wayback Machine

  • https://openlibrary.org/

  • they archive movies, TV, music, and software

  • Wayback Machine has a easy-to-use API

  • The Open Library has an extensive API

  • Internet Archive search API: https://archive.org/advancedsearch.php

  • Docs for the IAS3 API: https://github.com/vmbrasseur/IAS3API

  • python module: internetarchive

Wednesday Feb 3

Keynote

Catarina Mota

  • the faster we fail the faster we learn

  • RepRap democratizes manufacturing

  • Catarina lives in a open source, crowd-sourced, and hackable house

  • the perfect storm: internet + communities + fabrication tools

  • machines are not neutral

  • the affordances of technologies define realms of possibilities

Going faster: Continuous delivery for Firefox

Laura Thomson

  • get features and fixes to end users through continuous delivery using browser add-ons

Education and the AGPL: A case study

Molly de Blanc

  • study of the AGPL as applied to the Open edX MOOC

  • two kinds of community:

    • contributors: technical and non-technical

    • users/learners

  • definitions of community success:

    • quantity

    • quality

    • strength

Wait, ?tahW: The twisted road to right-to-left language support

Moriel Schottlender - Wikimedia Foundation

  • thinking about RTL issues exposes general issues with language software

  • RTL user base is growing

  • RTL readers also see other things RTL, for example where a logo or navigation controls on top right rather than top left

  • initial solution for internet RTL was simply to write things backwards using conversion scripts

  • next solution was logical and visual rendering: you write RTL and the text is displayed RTL

  • this works reasonable well for many things but not everything should be flipped, for example left/right justification buttons or undo/redo buttons

  • when mixing LTR and RTL, think carefully about the differences between content and interface

  • instead of left/right, one must think before/after, backwards/forwards, start/end

  • control characters can be used to set direction explicitly

The future belongs to unikernels

Andrew Stuart

  • unikernel = stripped down operating system running a single application

  • small, fast to start

  • there is no user log in to a unikernel, which provides security benefits

Challenges when scaling: Adventures in Swift's sharding

Matt Oliver

  • Object storage system

  • REST API

  • eventually consistent (not immediately consistent)

  • hugely scalable

  • high concurrency

  • distributed system

  • can use commodity hardware

  • flexible

  • multi region

  • customizable (open source)

  • storage policies and erasure coding

  • 3 basic resources in Swift that are all treated as objects:

    • account - SQLite DB

    • container - SQLite DB

    • object

  • this arrangement does lead to problems caused by large SQLite DBs

  • Swift uses a modified consistent hash ring to find the data placement in the cluster

    • replica count (even in EC)

    • part power - defines the number of partitions

    • partitions - represents a place in the ring

    • primary and hand-off nodes

  • Swift's hashing scales well

Thursday Feb 4

Building museum exhibits with open hardware: Raspberry Pi and Arduino

Michael Borthwick

  • audio/visual experience of Oxfam Refugee Realities has a much greater impact on the attendees, mainly school-age children

    • minefield would have foot switches in the sand connected to an interface, with connected sound as well

    • but they didn't have any of these parts so Michael used an Arduino as the interface

    • bright LEDs are helpful when testing so you know for sure if a signal is coming through

  • Nick Cave exhibit

    • used an arduino to power up DVD players embedded in the walls through infra red

  • RAAF cut-away engine that visitors could watch operate for 30 seconds at a time

    • made custom board from various arduino add-ons

    • was able to use open source libraries for arduino add-ons to build the code

  • AC/DC exhibit at Art Gallery Victoria

    • only needed 2.1 sound channels, so used extra channels to control lighting

    • used Arduino as controller

  • Raspberry Pi offers the ability to show HD video, but you can also show historical video in native resolutions and aspect ratios

  • they can run long term on minimal power without issues

  • can easily be hidden or mounted in small places

  • great for making cultural material more accessible by providing subtitles and close-captioning

  • simple touch sensor to turn subtitles on or off

  • subtitles can be added on the fly by the Raspberry Pi rather than hard-coded into the video

He aha te mea nui?

Chris Cormack

  • Koha library project, and open source Integrated Library System

  • https://koha-community.org/

  • started as a bespoke system for a local library in NZ, and is now used in thousands of libraries around the world

  • open sourced so the library wouldn't get locked in

A detailed look at erasure codes in OpenStack Swift

John Dickinson

  • how do we reliably store something? Store multiple copies.

  • problem is that this increases the size required for large DBs exponentially

  • erasure codes store multiple copies through fractions of the data rather than storing complete copies

  • represent data as coefficients of polynomials

  • even if you lose some parts, you can reconstruct them using the polynomial:

    g'day
    
    [7, 27, 4, 1, 25]
    
    f(x) = 7x(4) + 27x(3) + 4x(2) + 1x(1) + 25
    
  • uses http to communicate

  • when a request is made, the server returns a 100 Continue status, which informs the client that it is ok to start transmitting data

  • multiple 100 Continue calls are used to create a back and forth interaction between the client and the server

  • a proxy between the client and the Object server performs the erasure code transformation. Thus the client and the server do not need to know anything about the erasure coding.

  • after writing the erasure coded data, the proxy directs the server to write .durable, then the proxy sends a response to the client.

edlib: because one more editor is never enough

Neil Brown

  • everything is pluggable

  • multiple document backends

  • multiple language bindings

  • multiple multistage renderers

  • multiple display managers

  • configurable key/event bindings

  • loadable libraries for everything else

  • core provides essential abstractions

  • panes represent areas of interactions

    • may have children with depth

    • send and receive all messages

  • documents and marks

    • set of interfaces provided by a pane

    • multiple panes can access one document

  • commands

    • pass control between panes

    • can pass control between languages

  • attributes

    • attributes are named strings

    • elements (characters) in a document have attributes

    • panes, marks, and documents have attributes

    • can be used to pass extra information between commands

Speaking their language: How to write for technical and non-technical audiences

Rikki Endsley

  • what are you writing about

  • why are you writing about it

  • who is your reader (lay, managerial, experts)

  • will you re-use your content

  • research

  • create an outline

  • write

  • revise

  • The care and feeding of the press: best practices for working with tech journalists:

  • becoming a good writer requires lots of reading and lots of writing

  • read examples of the type of document you intend to make

  • How to: Writing an excellent post-event wrap up report

  • consider how your content might be re-used

  • invite the reader in with your introduction

  • tell a story

  • leave out the boring parts

  • edit, edit, edit

Friday Feb 5

Keynote

Genevieve Bell

  • started career as an anthropologist at Stanford before taking a position at Intel in 1998

  • initially Intel wanted her to find out what women and the "rest of the world", aka not America, want. Basically, what do humans need and want, and how can technology meet those needs and wants.

  • our present is messy and myriad

  • context matters: we don't necessarily want everything to be seamless

  • our solutions need to human

Python's dark corners

Peter Lovett

  • whitespace can cause unexpected behavior:

    • run python -t to give warnings if you mix tabs and spaces

    • python interprets a tab as 8 spaces

  • everything is an object

    • builtin types (int, float, etc)

    • functions

    • modules

    • use id(name) to see what a name is pointing to, e.g. id(a)

    • b = list(a) -> creates a copy of the object, in this case a list

    • b = a -> b and a point to the same object

    • is compares objects, == compares values

  • if you accidentally rebind a builtin, you can import __builtin__ and use it to access the builtin: a = __builtin__.str('hi')

  • Python does not prevent accidental name creation, but there are testing tools and IDEs that can help

  • scope is localized when you do any assignment within a function; trying to use a global within a function then assigning in that function will cause an unboundlocalvariable error

  • no void return type, so you don't get an error if you assign to something you shouldn't it just returns None

  • Fedora 23 to have Python 3 by default. Debian and Ubuntu will soon do the same.

Raspberry Pi hacks

Ruth Suehle

  • early 2006 concept based on Atmel ATmega644

  • designed for educational use

  • intended for Python but friendly for multiple languages

  • http://elinux.org/Main_Page has a wealth of PI info

  • Pi 2 has 40 GPIO as apposed to the Pi's 26, but the first 26 are in the same order

  • find your Pi: cat /proc/cpuinfo -> revision number tells you the version

  • If you have Hynyx RAM it may cause problems

  • there is a display specifically for the Pi that uses the DSI output

  • Fedora ARM Installer for loading OSes on SD cards

  • you can use power bricks as a portable power source

  • dx.com

  • TP1 and TP2 are the pins for checking your power

  • use a powered hub for peripherals

  • https://www.raspberrypi.org/blog/raspberry-leaf/

  • use a case to protect your Pi - Lego works great

  • RaspBMC/XBMC is now Kodi

  • Running classic games works well on the Pi

  • Raspberry Pi Hacks written by Ruth Suehle and Tom Calloway

  • Pi wants 5v 1amp. No more, no less.

National Wool Museum

Demonstration of rug weaving machine that uses hundreds of cardboard cards to create the design. Very cool!