Phillip Trelford's Array

POKE 36879,255

Progressive F# Tutorials London 2012

First things first, a big thanks to the team at Skills Matter particularly Wendy and Anaïs for making this event happen.


This year the tutorials were held over 2 days in the atmospheric Crypt in Clerkenwell:

Progressive F# PanelProgressive F# Panel Progressive F# PanelSimon Cousins & Tomas Petrick

Expect a return next year in London and New York.

Day 1


Practical Functional-first Programming with F#


Friends don't let friends use null

An outstanding keynote from Don which built on the talk he gave at the Progressive .Net Tutorials earlier in the year, stacked full of nuggets. On measuring if you have a correctness problem in your code base Don suggests counting the occurrences of NullReferenceException in your bug database.

Don also demonstrated F# 3.0’s Type Provider feature, including a very interesting Hive type provider for Hadoop written by Matt Moloney.


Programming with the stars!


I generally avoid 'function' when showing the language to newcomers. Not a problem at #progfsharp :-)


i'm going to the Progressive F# Tutorials at #SkillsMatter Nov 1-2 intense coding with the greats of #Fsharp!

To demonstrate how to tackle problems with F#, Tomas & Nicolas neatly solved the Reversi kata live on stage. They started by transforming a board to a 2D array and then searched the array for legal moves.


F# Koans


Ready for some koans fun at #progfsharp!

The F# Koans are a simple, fun, and interactive way to learn the F# language through testing. You can run them from VS2010 or VS2012. My 10yo really enjoyed working his way through them.


Processing concurrent time-series data


See you at the Progressive F# Tutorials 2012


Not to miss #fsharp events! Tutorials at #skillsmatter in 2 weeks & Type-providers and financial tutorial at #techmesh…

Simon worked through some of the techniques he has used while developing solution in F# at E.ON Energy Trading for the last 4 years. There was also some ASCII art


Expert Panel Discussion


A very lively and fun debate, covering topics from industrial use of F#, cross-platform with Mono and the JVM, to data parallelism. Jon offered that several teams at Aviva, one of the world’s largest insurers, are using F#. Martin felt that F# on the JVM would be a smash hit. Finally Nick wetted our appetite for the upcoming release of {m}brace.


Day 2


Accelerate your TDD cycle – Coding dojo with NaturalSpec and NCrunch

sforkman turns out the whole "in the crypt" thing - not a joke. #progfsharp

In this session Steffen introduced TDD with F# using NaturalSpec and NCrunch.


Make Music in the Key of F#


@AnaisatSM thanks for having us, it really was a lovely event! /cc@skillsmatter @wendydevolder @ptrelford


Robert introduced Undertone a library for creating notes in F#, part inspired by Clojure’s Overtone. With the F# Koans under his belt my 10yo was able to translate the Baa Baa Black Sheep sample to Jingle Bells :)


F# in the Cloud


In this session, George and Gian demonstrated that F# can be used to perform computations in a cloud environment, using distributed actors, Azure Hadoop and the cool F# newcomer, {m}brace.


Web Programming


James started by talking through the F# MVC project template from Daniel Mohl.

After a short tea break I demonstrated some F# 3 type providers starting with accessing Stack Overflow’s API using the F# team’s OData type provider, followed by the file system and Freebase providers which are available in FSharpx via Nuget. Finishing up with a demo of the F# team’s B-Movie Madness sample web application which I’ve deployed on Azure.

James followed on with a site built using tube passenger statistics from TfL and a CSV type provider. Finally James demonstrated WebSharper compiling F# code directly to JavaScript.


Community Action

Thanks for stopping by, hope to see y’all at some of the upcoming fun F# community events:

Server-side JavaScript Razor style in 2012

Razor is a programming syntax for dynamic ASP.Net web pages released in 2011.

Here’s a C# syntax example from W3 Schools:

<!-- Single statement block -->
@{ var myMessage =    "Hello World"; }

<!-- Inline expression or variable -->
<p>The value of myMessage is: @myMessage</p> 

<!-- Multi-statement block -->
var greeting = "Welcome to our site!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Today is: " + weekDay;
<p>The greeting is: @greetingMessage</p>

Here’s an example using server-side JavaScript:

<!-- Single statement block -->
<% var myMessage = "Hello World"; %>

<!-- Inline expression or variable -->
<p>The value of myMessage is: <%=myMessage%></p> 

<!-- Multi-statement block -->
var greeting = "Welcome to our site!";
var year = new Date().getFullYear();
var greetingMessage = greeting + " The year is: " + year;
<p>The greeting is: <%=greetingMessage%></p>

Eerily similar, eh?

The example above uses server-side JScript hosted in a classic ASP page which is lit up with IntelliSense in VS2012. Classic ASP and JScript were introduced in IIS way back in 1998. With version 3 in 2007 C# introduced the var keyword giving it a similar terse syntax to JavaScript. Nowadays you have the option of hosting classic ASP inside JavaScript itself with Node.js using osASP.

Strangeloop 2012

This year I had the privilege of attending and speaking at the Strangeloop conference in St Louis. The venues, the Union Street Marriot (a National Historic Landmark), and the Peabody Opera House were spectacular.


The range of sessions and speakers was literally mind boggling. Some of my favourites:

The breakfast hallway conversations were friendly and insightful, thanks to everyone for all the great feedback on my talk.

F# for Trading

Many people in the community use F# for Trading, and not just developers, traders too. Community matters in a language. The talk looked at some of the reasons people choose to use F# in Trading and some of the projects they have built to support their efforts, like Type Providers for Excel and the R statistical programming language.

The talk was recorded so expect a video to appear on InfoQ at some point in the future.

References (4.15 mb)