location_city Sydney schedule May 23rd 04:20 - 04:50 PM AEDT place Green Room people 122 Interested

Git is the most widely used version control tool today, but what is actually happening when we perform a `git add` or a `git commit`? To answer this question I'm going to walk through a small implementation of Git in Haskell. Along the way we'll touch on functional data structures, content-addressable stores, and parser combinators. At the end we'll analyse an entire Git repository and talk about the practical applications and limitations of what we've built. My hope is that this knowledge will help you be less frustrated the next time you see a cryptic Git error message!


Outline/Structure of the Talk

I'll be walking through an IHaskell notebook that implements a fully functional Git API. I'll define parsers and serialisers for the different types of Git objects and bring it all together by parsing an entire repository. I expect to have about 5 minutes for audience questions at the end.

Learning Outcome

Audience members will learn about parsing with Attoparsec, persistent data structures, and serialisation, as well as knowledge about how Git operates and how to use it more effectively.

Target Audience

Git Users

Prerequisites for Attendees

Familiarity with Haskell syntax is desirable but not required, as is forbidden knowledge of cryptic Git error messages.


schedule Submitted 5 years ago

  • Andrew McMiddlin

    Andrew McMiddlin - Property-based State Machine Testing

    30 Mins

    Automated testing is key to ensuring the ongoing health and well being of any software project, giving developers and users confidence that their software works as intended. Property based testing is a significant step forward compared to traditional unit tests, exercising code with randomly generated inputs to ensure that key properties hold. However, both of these techniques tend to be used at the level of individual functions. Many important properties of an application only appear at a higher level, and depend on the state of the application under test. The Haskell library hedgehog, a relative newcomer to the property based testing world, includes facilities for property-based state machine testing, giving developers a foundation on which to build these more complicated tests.

    In this talk, Andrew will give you an introduction to state machine property testing using hedgehog.He'll start with a quick refresher on property based testing, followed by a brief introduction to state machines and the sorts of applications they can be used to model. From there, he'll take you on a guided tour of hedgehog's state machine testing facilities. Finally, Andrew will present a series of examples to show off what you can do and hopefully give you enough ideas to start applying this tool to your own projects. The application being tested will be a servant web application, and examples will include testing fundamentals such as content creation and deletion, uniqueness constraints, and authentication.

    An intermediate knowledge of Haskell and familiarity with property based testing will be beneficial,but not essential. The slides and demo application will be available after the talk for people to study in detail.

  • Vaibhav Sagar

    Vaibhav Sagar - Your First Functional Deployment!

    Vaibhav Sagar
    Vaibhav Sagar
    DevOps Engineer
    schedule 4 years ago
    Sold Out!
    90 Mins

    Functional programming is wonderful, but what happens after we're done writing code (functionally) and we need to put it in production? The most popular solution is to write a shell script that manually performs the work of installing dependencies, configuring the target, and running our software. This approach is hopelessly imperative and lacks reproducibility, immutability, and simplicity, things we otherwise take for granted. Can we do better?

    The Nix package manager and ecosystem brings the functional programming approach to bear on the the problems of installing, configuring, maintaining, and upgrading software, and allows your development and operations teams to realise the promise of functional programming to move faster, break nothing, and sleep better at night.

    In this workshop I'll walk you through the process of making your first functional deployment and effectively dealing with change. I hope that after this you will be inspired to take a closer look at Nix and see what it can do for you and your team!