Sessions at Lambda Days 2015 about fsharp

Thursday 26th February 2015

With industry adoption rising, startups picking it, new books being written and released, the underdog of statically typed functional programming languages, OCaml, is rapidly changing for the better. 2015 might be the year for you to pick it up. We will mention some of the reasons, OCaml might be just what you have been missing out on. As the ecosystem has grown organically, there is a lot of things building on top of each other that might be confusing to a newcomer and there is not yet a “standard way of doing things”. We will describe how to start an OCaml project: what tools are available, how to structure code, what libraries are available, editor integration, community support (IRC and mailing lists), documentation, continuous integration. We will also take a look at what's still lacking.

Data science is emerging as a hot topic across many areas both in industry and academia. In my research, I’m using machine learning methods to build mathematical models for cancer cell behaviours. But using today’s data science tools is hard – we waste a lot of time figuring out what format different CSV files use or what is the structure of JSON or XML files. Often, we need to switch between Python, Matlab, R and other tools to call functions that are missing elsewhere. And why are many programming languages used in data science missing tools standard in modern software engineering?

In this talk I’ll look at data science tools in F# and how they simplify the life of a modern scientist, who heavily relies on data analytics. F# provides a unique way of integrating external data sources and tools into a single environment. This means that you can seamlessly access not only data, but also R statistical and visualization packages, all from a single environment. Compile-time static checking and rich interactive tooling gives you many of the standard tools known from software engineering, while keeping the explorative nature of simple, scripting languages.

Using examples from my own research in bioinformatics, I’ll show how to use F# for data analysis using various type providers and other tools available in F#.

Making great games is all about fast iteration. Giving the designers and content creators the ability to quickly test an idea and then grow that idea organically is critical to finding the fun. That means that we as developers need to make tools that make their workflows as painless and transparent as possible.

Over the last year, we have been using F# in our game and this talk is a short reflection on how that has turned out.

We'll talk about: the language, the ecosystem, the tooling and the community with live examples from the game and the tool chain

Friday 27th February 2015

In object oriented programming world, writing code for the success of your project is often not enough. You have to bear in mind various frameworks and libraries like ORMs, IoC, mocking and testing and so on and so forth. Writing code is also complex: finding the right abstractions, or applying S.O.L.I.D principles and design patterns are meant to keep your code extensible and refactorable, but require the experience of a senior developer - and ultimately, they have little to do with delivering business value. This is just noise !

Signal-to-noise ratio is a measure used in science and engineering that compares the level of actual information conveyed by signal, to the level of background noise. We can see business value as signal, and noise as everything that is not directly used to deliver business value, like frameworks, libraries, complexity, lack of expressiveness.

In this talk, we will explain how bringing F# to an actual project helped improve the signal and reduce the noise. The conciseness of F# helped de-clutter the code from useless language constructions. Its convenience made many programming tasks much simpler, and its very powerful type system prevented many common errors, and also helped expressing a really powerful domain model. Getting rid of mocking frameworks for testing, ORMs for databases, and using just functions, focusing on building functionality and delivering business value, made the whole experience a real pleasure !

F# type providers are way to inject types for external data sources into compiler without code generation. Let's dive into the world, where all your data, wherever it comes from, can be statically typed. Thanks to power of F# type providers you can get type safety on your json data, sql databases, csv files or external API's. In this talk I'm gonna demo how you can start using this powerful features, and how start working on your own type provider.

The idea of literate programming is to combine program code with explanation in a natural language, so that the entire source code can be read as an explanation of how the program is constructed and what it does. Literate programming is useful in a wide range of areas:

you can write literate scripts to document how a library works

you can use it to explain the logic behind complex calculations or mathematical models

you can use it to write data analysis that is executable and produces the final report

and as a bonus, you can use it to generate slides for your programming talks!

In this talk, I'll talk about the F# tools for literate programming, including the F# Formatting library (which parses literate F# and Markdown), ProjectScaffold (a template for projects that lets you write literate documentation) and FsReveal (a tool for creating presentation using F#). You'll learn useful things about documenting your (not just F#) code and about writing understandable code and data analyses.