Ever wondered how to write a tile-matching game (like Candy Crush and the earlier Bejeweled)? Traditionally game developers would write a game - the graphics, state, and user interaction - in an imperative style, but recently the functional approach is getting more popular.

Hakim Cassimally (BBC, Manchester LambdaLounge) has been exploring the process of developing a tile-matching game in Clojure. He'll present present some of the basics of modelling the game grid, and playing a basic event loop, introducing some important concepts in functional programming and simple game development.

This is a beginner-friendly talk.

Where and When? Showroom Workstation in Sheffield City Centre, Jan 9th. Talk starts at 7pm.

What do I need? You don't need anything. Bring a laptop if you want to try some of the ideas in the talk. Try the Clojure Getting Started page (https://clojure.org/guides/getting_started) if it's your first time with Clojure and come along at 6:30pm if you need any help setting up.

Ever wondered how to write a tile-matching game (like Candy Crush and the earlier Bejeweled)? Traditionally game developers would write a game - the graphics, state, and user interaction - in an imperative style, but recently the functional approach is getting more popular.

Hakim Cassimally (BBC, Manchester LambdaLounge) has been exploring the process of developing a tile-matching game in Clojure. He'll present present some of the basics of modelling the game grid, and playing a basic event loop, introducing some important concepts in functional programming and simple game development.
This is a beginner-friendly talk.

Where and When? Sheffield City Centre (exact venue TBC), December 12th. Talk starts at 7pm.

What do I need? You don't need anything. Bring a laptop if you want to try some of the ideas in the talk. Try the Clojure Getting Started page if it's your first time with Clojure and come along at 6:30pm if you need any help setting up.

We're in a new venue this month, the upstairs room at the Rutland Arms in Sheffield.

This is an open session. Everyone is welcome to come along, regardless of experience. If you don't know what functional programming is (or why you care), or if you want to talk Clojure vs. Haskell, this is the session for you!

They're a set a problems designed to be a hands-on introduction to Monads, written in Haskell. A fairly basic knowledge of Haskell is required and the concepts you'll need to understand are listed on the Monad Challenges page. You'll also a computer and a working Haskell environment. If you're just getting started, there's plenty of tutorials out there like learnyouahaskell.com that should get you set up and cover off the concepts.

All experience levels welcome. I'm a Haskell beginner myself, so I'm doing these tutorials to prepare! If you're struggling with the language or the concepts, come along anyway and we'll help you!

Thanks to Mat for suggesting this topic!

(def shef) thanks Sky Betting and Gaming for kindly sponsoring this event. One of the Sunday Times' Top 100 companies to work for based in Leeds and Sheffield, there are roles available now.

We're going to have a go at the Monad Challenges next month. You'll need some Haskell (or a language with similar capabilities) so this month, we'll take on a less taxing challenge - understanding and implementing Finite State Automata in a functional style.
Finite state automata are a classic idea in computer science and and are able to recognise regular expressions.
If you've read Tom Stuart's "Understanding Computation", we'll be following chapter 3, but implementing in funcional styles instead of in OO ruby. It's a nice problem to try out a new langauge... maybe Haskell!

Bring our your code! We'll be looking at how functional programming techniques can help improve the code you work with everyday. Everything from shell scripts to Haskell is fair game, and everyone welcome - whether you're a functional programming ninja or you don't know exactly what functional programming is!

We'll also have some examples ready to get things moving, fork and PR https://github.com/defshef/35-refactor-my-code to add your favourite!

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!

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.

A suggested worksheet is available at https://github.com/defshef/dojo-knn

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 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.

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.

It's that time of year again! Strange Loop 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 (https://www.youtube.com/playlist?list=PLcGKfGEEONaDvuLDFFKRfzbsaBuVVXdYa) and the full list of all sessions is on the main strangeloop website (https://thestrangeloop.com/schedule.html).

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

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.

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

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

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

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.

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

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!

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

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 rough 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. More details to follow!

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

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.

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

It's that time of year again! Strangeloop (https://thestrangeloop.com/) 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 (https://www.youtube.com/playlist?list=PLcGKfGEEONaCIl5eU53uPBnRJ9rbIH32R) and the full list of all sessions is on the main strangeloop website (http://thestrangeloop.com/2015/sessions.html).

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

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!

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

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.

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

A late change of schedule due to a calendar mishap! F# is deferred, hopefully only until next month. Instead, 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.

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

A late change of schedule due to a calendar mishap! F# is deferred, hopefully only until next month. Instead, 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 =A3200.

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.

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

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..

Afterwards we'll be heading to a nearby pub to decomplect with a drink or two and more functional programming chatter.

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 http://thechangelog.com/rich-hickeys-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.

Afterwards we'll be heading to the Sheffield Tap to decomplect with a drink or two and more functional programming chatter.

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 <a href="http://thechangelog.com/rich-hickeys-greatest-hits/">Rich Hickey's Greatest Hits</a>. 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.

Afterwards we'll be heading to the Sheffield Tap to decomplect with a drink or two and more functional programming chatter.

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.

Afterwards we'll be heading to the Sheffield Tap to decomplect with a drink or two and more functional programming chatter.