(def shef) A monthly functional programming meetup in Sheffield

We get together on the second Tuesday of every month to talk about various aspects of functional programming.

Mailing ListEvents Calendar

Anyone attending the event must adhere to the Code of Conduct. To report any incidents email us.

(def shef 34)

More Machine Learning: Neural Networks

11th April - 6:30pm - Showroom Cafe Bar - Tickets

In (def shef 34) we explored the k-nearest-neighbour classifier. This time, we're looking at a more well-known approach - neural networks.

This is a bigger, more maths-y topic and it'll be a less structured exploration. We'll be officially exploring the theory and implementation by working through Andrej Kaparthy's Hacker's guide to Neural Networks in languages of our choice, but you're also free to come along and take your own path!

Thanks to Sky Betting and Gaming for sponsoring this event!

(def shef 33)

Dojo: Machine Learning with kNN

7th March - 6:30pm - Showroom Workstation - Get a Free Ticket

The k-nearest neighbours classifier is a classic machine learning algorithm. We'll use functional languages to implement a classifier, then use it with real-world public data sets to solve classification problems.

Once you've implemented and explored the algorithm, there are many details you can dive deeper on. How does your algorithm perform on larger data sets, and can you speed it up? How about plugging in different distance functions? If you're already an ML expert, you can look at a more advanced algorithm and compare performance with the kNN implementations.

The plan is to run the dojo in small groups by language. I've put together a guide here, so feel free to get familiar with the problem ahead of time. I know at least one person plans to solve the problem in their go-to language before the dojo, then try to implement it in a different language in the session.

If it goes well and there's interest, we could run a follow-up in a future (def shef) to review and dig more into the machine learning and optimisation aspects.

We're trying free ticketing through EventBrite. You won't need a ticket to attend, but hopefully it'll help predict how many people are coming. We can also e-mail attendees any information they'll need, reminders, etc. Contact through this mechanism will be kept to a respectful minimum!

If you have any feedback on the use of ticketing, positive or negative, please let us know on the Google Group, @def_shef on Twitter or by email.

(def shef 32)

New Year Coding Dojo

10th January - 6:30pm - Union St

After a brief hiatus, (def shef) is back for 2017 with a coding dojo.

We'll be picking a small toy problem, and then breaking off into small groups to have a go at solutions in whatever functional programming language our hearts desire. If there's time we'll compare our solutions to each other.

This could be a great excuse to try something new, or simply to tinker with your pet language. Make sure you bring a laptop.

The kata we'll be doing this month is The Alphabet Cipher. If you can read Clojure there are some sample testcases you can use. Any even remotely functional language or approach is allowed.

If you can't make it tonight, feel free to have a go at home.

Potential Future Topics

At our first meeting, we came up with a bunch of topics we might like to cover at meetings. If you have any other suggestions, or you'd be interested in running a talk / session on any of these topics then please let us know.

Previous Meetings

(def shef 1)

12th November - 6:30pm - Electric Works

To kick things off we'll be doing some introductions, and then launching into a round-table discussion on "What's good about functional programming". We may even talk about some bad things too!

We'll also be dicussing future plans for the group, so if you've got any great ideas - bring them along.

(def shef 2)

10th December - 6:30pm - Electric Works

This month we'll be running a practical session, solving some sample problems using lists, recursion and traditional functional approaches.

The problems will be suitable for newcomers to functional programming, but we'll also have some slightly trickier problems for those of you with a bit more experience.

The problems are available here

(def shef 3)

14th January - 6:30pm - Electric Works

This month we'll be looking through some of the solutions to last month's problems, and planning out some sessions for the months ahead.

Some sample solutions are available on GitHub

(def shef 4)

C# is a functional language. No, really.

11th February - 6:30pm - Electric Works

This month John Stovin will be talking to us about LINQ in C# and also giving us a little flavour of F#.

(def shef 5)

XMonad

11th March - 6:30pm - Electric Works

This month Lewis Cowper is going to tell us all about XMonad - the Haskell based window manager.

(def shef 6)

Parallelism and Concurrency in Haskell

13th May - 6:30pm - Electric Works

You can never have too much Haskell, so this month we have Andrei Pambuccian talking to us about parallelism and concurrency.

Haskell features certain approaches to paralellism and concurrency that are specific to functional programming languages, enabling the programmer to quickly switch between sequential and parallel code. The presentation will explore parallel programming via the built-in monad Eval, the Strategy type and the monad Par, each of whom has its own trade-offs in terms of performance, maintainability and ease of implementation, then go into threading via Concurrent Haskell and finally describe the Haskell bindings for OpenCL. Sample code and performance statistics will be available for each of the methods described.

(def shef 7)

An introduction to the Rust programming language

10th June - 6:30pm - Electric Works

Something a bit different this month, we have Dave King talking to us about something not entirely functional programming, but interesting and relevant regardless.

Mozilla Research are building an experimental web browser named Servo. While experienced with large C and C++ codebases they have avoided these languages for Servo. Instead developing it in Rust, a relatively new language also from Mozilla Research.

Rust is a systems level language with a focus on being a "safe, concurrent, practical language". Many features of Rust are drawn from the functional programming world such as algebraic data types and type inference.

Other features include:

(def shef 8)

Scala gives you Option[S]

8th July - 6:30pm - Electric Works

This month Ian Murray is going to be giving a brief introduction to Scala, including it's approach to mixing OO- and FP-like language features. Scala encourages, but does not enforce, use of several aspects from functional programming. By being able to express different styles of programming, Scala is able to offer developers new to FP a more gradual learning curve, while still offering the purer functional programmer plenty to chew on.

Scala is a strongly- and statically-typed functional programming language that runs on the JVM, but also provides object-like features to try and provide the user with the best of both worlds.

(def shef 9)

A Summer Social

12th August - 6:30pm - Rutland Arms

There's no official speaker this month, instead we'll be making the most of the British summer by hanging out in a beer garden. There'll still be plenty of functional chatter, and we'll be back with a proper talk in September.

(def shef 10)

Channels in Go

9th September - 6:30pm - Electric Works

This month Luke Roberts will be telling us all about Go's channels, and the benefits that they bring.

Channels are an abstraction around asynchronous message passing that can make code that deals with concurrency much easier to reason about.

(def shef 11)

Strange Loop Movie Night

14th October - 6:30pm - Electric Works

Strangeloop is an awesome conference that features, among many other topics, lots of great practical and theoretical talks about Functional Programming. It was held on the 18th and 19th of September, and lucky for us they're publishing the recordings of every single talk already!

We ended up watching and dsicussing the following two talks:

You can see the other available videos on the Strange Loop YouTube Channel and the full list of all sessions is on the main strangeloop website.

(def shef 12)

Straightforward UIs with ClojureScript

11th November - 6:30pm - Electric Works

Entry to the Electric Works will be around the back after 5:30pm, head up the stairs by the car park entrance and follow the building around to your right.

This month I'll be doing a bit of a practical session. ClojureScript is a variant of Clojure that runs compiles down to javascript and runs in the browser. Being a lisp that promotes immutable datastructures, it enables some really powerful approaches to building clean and simple user interfaces.

We'll be making use of some fancy live-reloading tools and judicious separation of state and behaviour in order to build up a functional user interface. For simplicity we'll be implementing TodoMVC. Don't worry if you're not really a frontend person, we'll make sure there's plenty of sample code so you can focus on the important bits.

To assist with setup and save time on the night, please ensure you have Java JRE 7 or 8 installed, as well as leiningen.

The code for this workshop can be found at the github repo.

(def shef 13)

Interesting features of Scheme

13th January - 6:30pm - Electric Works

Entry to the Electric Works will be around the back after 5:30pm, head up the stairs by the car park entrance and follow the building around to your right.

This month, in a continuation of our unofficial "Neat things in language X" series, Caolan will be talking to us about some of the more interesting features of Scheme.

The example code shown is going to be in Chicken Scheme, so feel free to brush up a little bit beforehand.

(def shef 14)

Rich Hickey's Greatest Hits

10th February - 6:30pm - Union St

Note that this month we have a new larger venue! We'll gather in the lobby from about 6:15 before heading upstairs once people arrive.

After the success of the last movie night, we return with another: Rich Hickey, creator of Clojure is well known for his very well laid out and generally excellent technical talks.

We'll be selecting from the handily prepared Rich Hickey's Greatest Hits. Be prepared to hear about how we can simplify what we're doing to build software, and how to spend more time thinking. There might be some mention of Functional Programming and Lisps in there too.

(def shef 15)

No Talk in March

10th March - 6:30pm - Sheffield Tap

No talk this month, but there will be an informal social gathering in the Sheffield Tap with a drink or two and the usual functional programming chit-chat.

(def shef 16)

A taste of Erlang

14th April - 6:30pm - Union St

Another entry for our "Neat things in language X" series, James Wheare will be introducing us to the weird and wonderful world of Erlang. There may even be a guest appearance of Erlang: The Movie.

(def shef 17)

The Magic of Hot Code Reloading

12th May - 6:30pm - Union St

Glen Mailer will be showing off a bit of hot reloading magic.

  1. Edit file.
  2. Save file.
  3. Compile code.
  4. Reload browser.
  5. Click around and interact with the page.
  6. Somehow get back to the exact same state.
  7. Check result.
  8. Not quite right.
  9. Go back to step 1, do not pass go, do not collect £200.

Interpreted languages, fast compile times & fast test suites are great at reducing the feedback cycle, but those aren't the only areas where feedback is important.

What if you could edit your code and see the effects immediately? Going from step 1 to step 7 in the scenario above without having to do anything in between. How would having that sort of instant feedback affect the way you work?

I'll show how this can be achieved in a few different common (and uncommon) programming languages, and what sort of concessions (if any) you have to make in your code to make it work.

This isn't just a crazy fringe idea: it's been around in some form or another for ages, and it's something we can and should be using right now.

(def shef 18)

An introduction to F# by way of turtles

9th June - 6:30pm - Union St

F# is a statically-typed, open source, functional-first language on the CLR which combines functional idioms such as immutability and pattern matching with advanced features like type providers and asynchronous workflows, while remaining accessible to the less functionally-inclined by including a healthy dose of OO and everything that comes with the .net ecosystem.

In this session, Grant Crofton will be showing everyone how awesome it is by using it to write a simple Logo interpreter, commonly used to draw stuff with Turtles. This may or may not include any live coding, depending on how much he wants the audience to suffer..

(def shef 19)

The ClojureScript Experience

14th July - 6:30pm - Union St

We haven't had a practical session for a while, and as there was quite a small turnout to (def shef 12), I've decided to re-use the exercise from that one again.

We'll be working on a small TodoMVC implementation written using Reagent and ClojureScript. No previous knowledge is required, but it will help if you have Leiningen installed before you arrive.

The guide for the workshop is available on github

(def shef 20)

Graph Databases and Markov Chains for AI
(without much I)

8th September - 6:30pm - Union St

This month we'll be hearing from Gary Martin:

When we look to start a new programming project, we often take the tools we already know for granted and reach for the tools that we know. This is as true for databases as it is for programming languages. In this talk we are going to look at using a graph database as an appropriate storage model for Markov chains and conversation simulation.

(def shef 21)

PureScript and functional programming on the web.

13th October - 6:30pm - Union St

Becky Conning will be getting us excited about PureScript and functional programming on the web.

Becky has used Javascript for everything for quite a while and over time has found the approaches and technologies that were helping her the most have their roots in functional programming. Today she works for SlamData writing web application tests and features using PureScript every day.

Purescript is written in and inspired by Haskell. Luckily for us web developers, Purescript modules compile to CommonJS modules making it surprisingly easy to interface between Javascript and Purescript in both directions.

There are also versions of Purescript in development that compile to Python and C++.

Becky will be sharing her excitement about the possibilities of functional programming for application development with you and we’ll building a small application to help get you motivated.

So whether you’re a Javascript developer, a seasoned functional programmer or just interested in applications come on down and get excited about Purescript and functional programming for applications!

(def shef 22)

Strangeloop Movie Night

10th November - 6:30pm - Union St

It's that time of year again! Strangeloop is an awesome conference that features, among many other topics, lots of great practical and theoretical talks about Functional Programming. I was lucky enough to attend, and they've published the recordings of every single talk already, so we all get to benefit without the crippling cost of international airfare.

I'll be picking out a shortlist of the best, we'll select which talk or talks to watch on the night, so if you have any suggestions let me know on twitter or just bring it up when you arrive.

You can see the videos on the Strange Loop 2015 YouTube Playlist and the full list of all sessions is on the main strangeloop website.

(def shef 23)

Happy New Year

12th January - 6:30pm - Union St

This month we're just doing a little get together to kick off the new year, and find out what people would like to hear about in the forthcoming months. Please drop by and get involved!

(def shef 24)

From techno to textiles: live coding pattern in Haskell

9th February - 6:30pm - Union St

This month Alex McLean will be talking to us about music, in his own words:

I've been writing code to make music since around the year 2000, at first in Perl but more recently in Haskell, in particular developing the free/open source Tidal environment since around 2010. Tidal represents musical pattern as pure functions from time to events, providing an expressive language for sequencing, combining and transforming patterns. I've performed widely with Tidal in a range of collaborations, including as part of the Algorave movement that I co-founded.

In this talk I'll demonstrate Tidal, go through the way that pattern is represented and try to unearth how pure functional programming has made it possible. I'll try to make it interesting for people new to programming and functional programming, as well as the more experienced. If there's time and interest I can also talk about related research I'm involved with in representing the structure of textiles in a similar manner.

(def shef 25)

Not a proper meetup

8th March - 6:30pm - Rutland Arms

This month no-one is available to organise a proper meetup, so instead we'll just head to the Rutland Arms for some functional programming chatter.

We'll be back in April with something practical to whet your appetites.

(def shef 26)

Something practical

12th April - 6:30pm - Union St

This month we'll be working on something practical you can sink your teeth into and get a flavour of somewhat-real-world functional programming.

The plan is to take a task that we'd normally think of as something that fits object oriented programming very well, and see how to approach it with our functional hats on.

The format will be small groups split by choice of language, so hopefully there should be something to interest everyone. I can guarantee some Clojure, for anything else it'll depend who shows up. Bring your laptops!

(def shef 27)

Follow-up to our practical

10th May - 6:30pm - Union St

This month we'll be sharing our experiences and code from the various solutions and approaches people took last month.

The practical session we did was on Blackjack, and the variety of approaches and languages people took was impressive.

(def shef 28)

A practical guide to creating UI apps in F#

14th June - 6:30pm - Union St

This month we've got Ben Robinson giving us a talk:

Traditionally when creating UI apps we end up having maintain lots of mutating (and fragile) state. So we will creating a simple desktop application from the ground up using using a Functional Reactive Programming style (and judiciously borrowing ideas ideas from modern frameworks like React/Flux) that is declarative and easy to understand.

(def shef 29)

Try Elm Yourselves

12th July - 6:30pm - Union St

This month will be a practical session, so bring your laptops! We'll be exploring Elm - a strongly typed functional programming language that targets the browser and focuses on being accessible to newcomers.

(def shef 30)

The Never Changing Face of Immutability

9th August - 6:30pm - Union St

This month we have an out-of-towner coming in to talk, Chris Howe-Jones.

This talk should be a great introduction to functional and immutable thinking, so please do bring your mutable-OO friends along too! Chris doesn't want to give too much away, but he did have this to say:

This talk explores the changes in technology over time and how this has led to a rise in a different way of managing state within applications.

(def shef 31)

Strangeloop 2016 Movie Night

11th October - 6:30pm - Union St

It's that time of year again! Strangeloop is an awesome conference that features, among many other topics, lots of great practical and theoretical talks about Functional Programming. I was lucky enough to attend, and they've published the recordings of the talks already, so we all get to benefit without the crippling cost of international airfare.

I'll be picking out a shortlist of the best, we'll select which talk or talks to watch on the night, so if you have any suggestions let me know on twitter or just bring it up when you arrive.

You can see the list of videos on the Strange Loop 2016 YouTube Playlist and the full list of all sessions is on the main strangeloop website.