Last week’s Progressive F# tutorials conference seems to have struck a note:
Progressive F# 2013 best conference ever. Fact. #progfsharp
A big thanks to Skills Matter for organizing this 2-day hands on community event:
You can see pictures from the event on Skills Matter’s Facebook photo stream:
Following on from events in 2011 and 2012 this year we welcomed 79 F#ers:
#progFsharp seems to grow in size every year :)
If you’d like to join us next year there’s currently an early bird discount:
If you enjoyed #progfsharp this year, why not get in early & get your ticket for next year? Tickets just £95 http://ow.ly/qoV5Y
This year’s F# Tutorials ran over 2 days with 2 tracks of hands on sessions.
Day 1
Jon Harrop kicked off proceedings with a talk on using F# to change the way we work:
Followed by an F# Koans session with Rachel Reese, Dan Mohl and Robert Pickering. The F# Koans are a great way to get started with F#.
At the same time we ran a Programming with the Stars session with Rich Minerich and volunteer Michael Newton. This year‘s task was the Bank OCR Kata:
1: let zeroToNineText = """
2: _ _ _ _ _ _ _ _
3: | | | _| _||_||_ |_ ||_||_|
4: |_| ||_ _| | _||_| ||_| _|
5: """
6:
7: let getDigits (source:string) len =
8: let lines = source.Split([|'\n'|]).[1..3]
9: [for digit in 0..len-1 ->
10: let index = digit*3
11: [for line in lines -> line.[index..index+2]]
12: ]
13:
14: let zeroToNine = getDigits zeroToNineText 10
15:
16: let toNumber text =
17: getDigits text 9
18: |> List.fold (fun acc digit ->
19: let n = zeroToNine |> List.findIndex ((=) digit)
20: acc * 10 + n
21: ) 0
22:
23: let accountText = """
24: _ _ _ _ _ _ _
25: |_||_|| || ||_ | | ||_
26: | _||_||_||_| | | | _|
27: """
28:
29: let n = toNumber accountText
val zeroToNineText : 'a
Full name: Snippet.zeroToNineText
Multiple items
val string : 'T -> string
Full name: Microsoft.FSharp.Core.Operators.string
--------------------
type string = System.String
Full name: Microsoft.FSharp.Core.string
type: string
implements: System.IComparable
implements: System.ICloneable
implements: System.IConvertible
implements: System.IComparable<string>
implements: seq<char>
implements: System.Collections.IEnumerable
implements: System.IEquatable<string>
Multiple items
module List
from Microsoft.FSharp.Collections
--------------------
type List<'T> =
| ( [] )
| ( :: ) of 'T * 'T list
with
interface System.Collections.IEnumerable
interface System.Collections.Generic.IEnumerable<'T>
member Head : 'T
member IsEmpty : bool
member Item : index:int -> 'T with get
member Length : int
member Tail : 'T list
static member Cons : head:'T * tail:'T list -> 'T list
static member Empty : 'T list
end
Full name: Microsoft.FSharp.Collections.List<_>
type: List<'T>
implements: System.Collections.IStructuralEquatable
implements: System.IComparable<List<'T>>
implements: System.IComparable
implements: System.Collections.IStructuralComparable
implements: System.Collections.Generic.IEnumerable<'T>
implements: System.Collections.IEnumerable
val fold : ('State -> 'T -> 'State) -> 'State -> 'T list -> 'State
Full name: Microsoft.FSharp.Collections.List.fold
val findIndex : ('T -> bool) -> 'T list -> int
Full name: Microsoft.FSharp.Collections.List.findIndex
The code above was my attempt, check out more solutions on F# Snippets:
In the afternoon Rachel Reese ran a hands on session on Try F# from Zero to Data Science:
Looks like we broke http://tryfsharp.org during @rachelreese great workshop session ;) #progfsharp
Thought - @rachelreese should rename her session to DOSing around on TryFSharp ;) #progfsharp :D
Meanwhile Robert Pickering’s tutorial was on programmatically generating sounds and music with Undertone.
Playing with Undertone with @alanmgreen and @DaveHoganIW at #progfsharp... did I mention I know nothing about music! :> /cc: @robertpi
After some pizza and drinks, the coding spilt over to the local pub:
And by all accounts the fun continued on through the night:
Day 2
In the morning there was a choice between Machine Learning for Fun and Profit with Matt Moloney and Time for Functions in the Enterprise with Simon Cousins (which was my 11yo son’s favourite session!).
In the Machine Learning session we used Deep Belief Networks to categorize digits and to predict fluctuations on the Bitcoin/USD exchange rate.
The code sample and tasks are here: http://trelford.com/ProgFSharpML.zip
Simon’s slides and samples are here: https://github.com/simontcousins/pft2013
In the afternoon Dan Mohl and Zach Bray led a tutorial on Web Programming while Rich Minerich ran a Pacman AI competition.
Dan and Zach’s slides and tasks: https://github.com/dmohl/FsOnTheWeb-Workshop
Here’s a screenshot from the Pacman session:
Ben Lynch won the competition with a really strong AI:
Probably the best #fsharp conference in the world #progfsharp - and not just 'cos I won the graphman contest! (which I did, by the by ...)
If you fancy having a go at writing your own Pacman AI, pop down to the F#unctional Londoners meetup on November 14th.
I’m already looking forward to next year, if you can’t wait that long for some more conference action with F# check out: