Logo

Speakers

Keira Hodgkison

Keira Hodgkison

Melbourne, Australia

Keira is a developer at Culture Amp, an all-in-one people feedback and analytics platform. She works with React, Flow, and Rails on solutions to help customers share, and act upon company employee engagement data. Keira is an advocate for using functional programming techniques to improve the JavaScript coding and refactoring experience. When she's not writing code, she can be found under a large cat.

The Why and How of ReasonML

New kid on the 'compile-to-JavaScript' block is ReasonML, a syntax layer and toolchain for OCaml, brought to you by the creator of React.js. While there has been a steadily-increasing buzz around ReasonML since the release of ReasonReact by Facebook in March 2017, it's hard to know from the outside whether the hype is truly deserved, or a product of savvy marketing and social media management. More importantly, why should you, as a JavaScript developer care? Aren't compile-to-JS alternatives created for people who don't like JavaScript?

The relationship between ML languages and some of our more popular JavaScript libraries is more than cursory. Scratch the surface of one of our main JavaScript type systems, Flow, and you'll find OCaml. The original prototype of React.js was created in another ML language (SML/ Standard-ML). The JavaScript Redux library is based on Elm's reducer architecture.

While the ReasonML creator has stated his original intent was to fix the top 15 things in the OCaml syntax that annoyed experienced OCaml developers, the result ended up looking a lot like... JavaScript! In this brief exploration of the syntax and the growing community that supports it, one aspect does become abundantly clear. ReasonML and ReasonReact have evolved with the JavaScript community forefront in mind.

Maz Hermon

Maz Hermon

Wellington, New Zealand

Maz Hermon is a front-end dev at Trade Me in New Zealand currently working with a great team on an epic responsive rebuild of a large and well-loved NZ e-commerce site. Maz has a passion for scalable CSS, UI component libraries and living style guides, accessibility and all things web. When not doing these things Maz enjoys time with his young family, drawing funny characters and music making.

How is a UI component library the 'Mise en place' of the modern Web-Chef’s kitchen?

Do you need help convincing your team or wider company they’d benefit from creating a living style guide and UI component library? Or getting buy in on why the one you’ve started is a good idea? Let’s run through a fun analogy comparing how having a design system and building a front-end component library is like the essential afternoon preparation session in a high performing kitchen known as ‘Mise en place’. You’ll learn how to explain how having this in place seperates the amatures from the professionals in kitchens around the world, and will ensure that by the time users walk in the virtual door, the dev kitchen is operating at high speed with grace, and no one’s left waiting, grumpily staring down the wait-staff with their best evil-eyes.

This talk will benefit you regardless of what level you're at. You’ll come away with a new way to explain to your technical and non-technical stakeholders why you and your team should be given the go ahead to support the successful fast paced delivery of features and products for your users. Don’t sit back and say ‘I told you so’ when things slow to crawl and you're all tangled in legacy code and specifity wars with your heavy CSS. Instead, come and learn a new way to frame the argument to ensure you’ve given everyone the best chance to realise what you already know to be true, before it’s too late.

Jeremy Nagel

Jeremy Nagel

Sydney, Australia

Jeremy is an environmentalist turned programmer focused on using software to solve sustainability challenges. He's more than a little obsessed with checklists and automated tests.

Attack of the mutants: using mutation testing to improve your test suite

Code without tests is code that is going to sneak up behind you while you’re texting on your phone, put glue in your hair and steal your lucky horseshoe from your bag. Evil! But how can you find those dastardly lines? Traditionally we’ve used test coverage metrics (e.g. Istanbul) to track down those villains but coverage has a lot of gaps. A test can execute 100% of code without performing any assertions, giving you a false sense of security.

What's the solution then? Fight back against those villains by unleashing mutants! Don't worry, you don't have to drink radioactive coolaid, we're talking about mutation testing. It involves using a tool like StrykerJS to programatically insert bugs (mutants) into your code and check whether the tests catch them. Having 100% test coverage is a noble goal but ultimately not very useful as it says nothing about the test suite's ability to catch bugs. On the other hand, having a 100% mutant kill score is a big deal. It means that your assertions can effectively pick up most potential bugs.

Next time your manager asks for a risk analysis of the company's test suite, you'll know what to do: call in the mutants!

Juliet Brown

Juliet Brown

Wellington, New Zealand

Juliet Brown is an artist, a programmer, and a maker, all of which she believes require inspiration, creativity, thoughtfulness, dedication and skill. She is interested in shaping code into works of art that can stand the test of time and wants to push the boundaries of how we see technology.

Intersection between Art and Technology

Programmers are artists. I am a web animator, developer, and artist. I come from A Fine Arts background, and a question I often get asked is how and why did you become a developer if you come from an arts background? For me, programming is creative, and I would like to share my journey with you. How I brought my diverse background to the developer community and what I am doing with that now. How I relate to technology with its subject matter, medium, and process. Using coding as an artistic medium references and also pushes the boundaries of what art is and can do. Painting and drawing come with such a historical background.

By bringing the old medium into technology - a new medium, a tool that we as people are involved with day to day excites me, it brings new possibilities for css and javascript and the technology space.

Common themes I explore in my art practice is popular culture, and the real and the imaginary. Recently, I have been working at converting my practice (painting, drawings) into a large human sized 3D animation world.

By combing Art and technology together, challenges the notions of the digital world and also how we perceive art and the 'artist'

Rob Crowley

Rob Crowley

Perth, Australia

Rob is the technical lead for APIs at Bankwest and has read more RFCs than he cares to admit. Rob is passionate about crafting distributed systems that perform at scale. Originally from Ireland, Rob now calls Perth home after taking quite a few detours along the way.

Crafting compelling real-time web experiences with GraphQL

Users expect real-time data. They want their banking transaction notifications now. Their order confirmed now. They want their user experience to feel—connected. The world has moved to push and users are waiting for the data-driven experiences we create on the web to catch up.

GraphQL is Facebook’s response to this challenge and it is quickly proving itself as an exciting alternative to RESTful APIs for a wide range of contexts. GraphQL is a query language that provides a clean and simple syntax for consumers to interrogate your APIs. These queries are strongly typed, hierarchical and enable clients to retrieve only the data they need.

In addition to the familiar pull based request-response pattern, GraphQL provides a mechanism for clients to subscribe to real-time updates in the form of Subscriptions. Subscriptions are exciting as they represent the core ability we need to satisfy the connected push based experience that our users demand.

In this talk, we will take a hands-on look at GraphQL and see how it can be used to build real-time APIs that are a joy to use. Additionally, we will see how we can integrate a React client with GraphQL using Relay Modern, Facebook's JavaScript framework for building data driven applications. By the end of the session you will understand what is required to craft a compelling real-time user experience with GraphQL, and have the knowledge to deliver on these requirements.

Jessica Norris and Ben Taylor

Jessica Norris and Ben Taylor

Sydney, Australia

Ben is a software developer and interface designer with a passion for building usable edtech. In his holidays he teaches coding to high school students and in his spare time he studies and researches learning & technology at university.

Jess loves to get deep into the nitty gritty of a software project, especially if it involves designing elegant APIs or complicated algorithms. When not making software, she spends her energy doing creative things - sewing, weaving, and making pillow forts with the kids.

How to keep your server alive AND teach JS to kids

We’re all buzzing about Headless Chrome and how we can automate our testing, but what if we go one step further and try automated marking of… untrusted student code?

Imagine the sort of code you first wrote — full of syntax errors and infinite loops — now load that code on to a server and click ‘Test’. What happens? Did you crash the page? Did it do anything?

At Grok Learning we are allowing kids as young as twelve (think ‘Stranger Things’!) to do exactly that. Come discover the challenges we had putting together a JavaScript course with a smart automatic marker that defends our system against whatever crazy code they come up with.

We’ll get technical and talk about how we’re using Headless Chrome and Puppeteer inside our server-side marker. We’ll dip into what makes it ‘smart’ — good feedback and hints to help students understand why their code doesn’t work the way they expected. And we’ll chat about how to make a good learning experience for JavaScript.

Let’s ditch to-do list tutorials and make something better!

Jason O'Neil

Jason O'Neil

Melbourne, Australia

Jason recently joined Culture Amp as a specialist in front-end developer tools. He wants software engineers to enjoy their jobs and so rages against technical debt, slow iteration cycles and lousy error messages.

50,000 lines of spaghetti code (and how to unravel it)

To our wonderful users the web-app looked fine. It had a nice UI, a tonne of useful features, and mostly seemed to work. But our team of two engineers knew the truth - the app was a mess. Bug fixes that should be simple eluded us. Features that should have taken 2 weeks took 2 months. And users started telling us the app was crashing their browser (it turns out we were leaking memory and the tab was using over 2GB!). This talk shares the story of how I joined a start-up that in its 3 short years had already accumulated a tonne of technical debt - and how my fellow engineer and I took a 50,000 line code base of unstructured jQuery, untyped Angular, and a bunch of scary Grunt tasks, and turned it into a well structured React App, using Webpack to handle our assets and split our bundle, MobX to simplify our page interactions, Flow to add type safety to our code piece by piece, and Jest to test it all. And also how we dealt with those nasty memory leaks using Chrome dev tools so the app stopped crashing. Just as importantly - I’ll share the secrets of how we convinced the non-technical management team that this massive investment was worth it, and had them excited about paying down technical debt. If you have a codebase you’re ashamed to let other engineers look at, if you’re looking at a code-cleanup that feels like it’ll be an insurmountable task, if you are sick of dealing with code that has names like “AbstractModuleDataStrategy” that don’t mean anything, and maybe don’t even do anything, and you’re not even sure anymore, then this is the talk for you. We will map a path out of the spaghetti. Or if you have it all together and always write beautiful, maintainable, well structured code and would like to come and laugh at me and my horror stories, this may also be the talk for you.

Jess Champion

Jess Champion

Wellington, New Zealand

With a background spanning product development, operations and project delivery, Jess has developed a zealous focus on the quality and maintainability of software. While she can happily work across the full stack, Jess has a passion for all things frontend, and is always looking for ways to leverage new technologies to craft digital experiences.

A unit test walks into a bar

A unit test walks into a bar. Orders a beer. Orders ten beers. Orders 2.5 billion beers. Orders -1 beers. Orders a nothing. Orders a cat. We spend a lot of time thinking and talking about how to write better code, but much less time on how to write better tests. Over the course of my career as a JavaScript developer I’ve worked across product teams, project team and operations. This talk will leverage my experience in each of these roles to examine how unit tests are a critical component of robust, stable and maintainable software across the full lifecycle. We'll do a deeper dive into some of the theory around unit testing while relating it back to business value and agile practices. I will also give opinionated practical advice for writing a robust test suite.

Aboriginal FlagTorres Strait Islanders FlagLGBTQI FlagTransgender Pride Flag

We acknowledge the Wurundjeri people of the Kulin nations, the traditional owners of the land on which we gather. We pay our respects to their Elders: past, present and future.

We firmly believe in diversity, inclusion and equality.