Most Active Speaker

Simon Painter

Simon Painter

Senior Developer at Müller Dairy

Telford, United Kingdom

I've been working as a .NET developer for over 16 years now in a variety of industries including government, retail and manufacturing. But I've been hacking around with computer code since I was old enough to read my Dad's copy of the ZX Spectrum BASIC coders manual.

I've been speaking about Functional C# at various user groups and conferences around the UK, USA, Europe and Australia and am particularly interested in seeing just how far we can push C# without breaking it.

I'm currently working on a book for O'Reilly publications about functional programming with C#. Expected to appear in bookshops some time in 2023.

When I'm not coding, or running after my two small children, I have been known to enjoy the classic series of Doctor Who, Fighting Fantasy Gamebooks, Cryptic Crosswords, and rather more coffee than is probably good for me.

Awards

  • Most Active Speaker 2022

Area of Expertise

  • Information & Communications Technology

Topics

  • .net
  • .net core
  • ASP.NET
  • Visual Studio / .NET
  • .NET Standard
  • functional programming
  • object oriented programming
  • Programming Languages
  • metaprogramming
  • ASP.NET Core
  • Entity Framework

Down the Oregon Trail with Functional C#

In 1971, three students from Minnesota thought they could liven up a history lecture by creating a computer game for the students to play, and after several days of work in HP Time Share BASIC, they came up with what turned out to be a significant milestone in the history of computer games - Oregon Trail.

Oregon Trail is often regarded as one of the first great computer games, as well as being the originator of a franchise that is still running to this day. It was effectively also one of the first instances of both Shareware and a Commercial home release of(depending on the version).

My interest though, isn't just in historical computer games, it's also .NET and Functional Programming. I want to use this as a worked example of one of my passions - Functional Programming in C#! The challenge I've set myself is to redevelop Oregon Trail into C# using the following restrictions:

* Near 100% unit test coverage
* No variables can change state once set
* No statements (for, foreach, if, where, etc.) unless there literally is no way of avoiding them

I'll also be demonstrating a few of the tricks Functional Programming can offer, like Higher-order functions, functional flows with simple Monads and Tail Recursion. There should also be a bit of retro computing fun, while we're at it.

SOLID Principles in 5 Nightmares

The 5 SOLID principles - popularised by "Uncle" Bob Martin in some of his highly influential books on Object Orientated Software development - are rarely cited directly but they are nevertheless at the heart of a lot of the thinking that goes into modern software development.

These principles have been around in some form or other ever since the 1980s, but continue to be just as relevant today as they were then.

In this talk, we're going to look at each of the 5 SOLID principles, these being:

* Single Dependency Principle
* Open/Close Principle
* Liskov Substitution Principle
* Interface Segregation Principle
* Dependency Inversion Principle

See what he did there with the names?

We'll look at each in turn, with the help of some slightly imaginative examples taken from a popular SF franchise. What are they, what nightmare scenarios can occur if they aren't followed, and how they can subsequently be applied.

Functional Programming in JavaScript

Functional Programming is becoming increasingly popular and relevant with each year that goes by. With so much discussion around languages such as F#, Haskell and Erlang, it can seem as though getting started with Functional programming would mean first learning a whole new syntax...but what if it didn't?

Using just a few JavaScript libraries, such as RamdaJS, developers can implement some of the most powerful patterns and techniques from the world of functional programming?

This talk will demonstrate how, using ES6 and a few extra libraries, we can write Functional code that is:

More robust

Easier to read

Easier to maintain

This talk might be of interest to anyone looking into moving to a new platform, or in improving the scalability of an existing application, or even just interested in seeing what Functional Programming is all about, but all within the comfort of a familiar language.

We might even attempt the impossible, and explain what a Monad is!

Pride & Prejudice & C#

Machine Learning is all the rage these days, and rightly so. It can do work that borders on magic sometimes! As a .NET developer though, I often end up feeling left out when all of the material that I can find out there is written predominantly for Python developers. This talk is entirely in C#, and shows how we can solve a centuries-old problem for one of the UK's most famous writers - Jane Austen.

The problem is that poor Ms. Austen only ever wrote 6 (ish) novels. That's nowhere near enough for a writer of her stature. Over the course of this talk, I'll show you how, with a bit of C#, a simple ML algorithm, and a little Blue-Peter like ingenuity, we can generate an entire new book by Jane Austen in a matter of seconds.

The technique I'll be looking at is called Markov Chains, it's used for modelling processes with multiple states, and capturing the way that the system behave as it switches from one to the other.

I'll not only show you how to use this powerful technique to create a new Jane Austen novel, but I'll also show you how it has applications in your day job as well!

Functional Programming with C#

Functional Programming is becoming increasingly popular and relevant with each year that goes by. With so much discussion around languages such as F#, Haskell and Erlang, it can seem as though getting started with Functional programming would mean first learning a whole new syntax...but what if it didn't?

Most .NET developers are familiar with the use of Linq, and basic constructs such as IEnumerable, Func delegates, arrow functions and ternary expressions, but did you know that you can use all of this to implement some of the most powerful patterns and techniques from the world of functional programming?

This talk will demonstrate how, using only familiar features available in out-of-the-box C#, to write Functional code that is:

* More robust
* Easier to read
* Easier to maintain

As well as these benefits, Functional code is a great enabler for the use of concurrency with Async functions and Serverless applications with technologies such as Azure Functions.

This talk might be of interest to anyone looking into moving to a new platform, or in improving the scalability of an existing application, or even just interested in seeing what Functional Programming is all about, but all within the comfort of a familiar language.

We might even attempt the impossible, and explain what a Monad is!

Hacking C#: Development for the Truly Lazy

I don't know about you, but I'm a lazy developer. What do I mean by lazy? I don't mean I don't want to do my work - far from it - I mean that I hate to write out a great deal of code to get the job done. I want to accomplish my goals with as little effort as possible.

One of my pet hates is writing enhancements that involve copying and pasting blocks of code, changing a variable name, then leaving everything else the same. I hate having to consider each and every possible null reference exception, and adding in a whole ton of boilerplate to handle it. I hate having to spent ages jumping back and forth in a legacy codebase, trying to understand what it actually does!

What's the alternative? In this talk, I'll demonstrate a way of working that avoids all this unneccesary work, and gives you more time to do something more productive.

We'll look at:
* Functional Programming - what benefits does this increasingly popular paradigm bring us to cut down coding effort
* Linq & Generics - These have been a part of C# for a long time now, and are some of the most powerful features available in the language, but hardly anyone seems to be using them effectively
* MetaProgramming - break open C# and take it to the next level with code that describes how to generate code

Our goal is to write code in as few lines as possible that provides the greatest amount of impact. We also want code that's readable, and easily maintainable. We want to think smart, and think...Lazy.

Azure Lowlands 2023 Upcoming

June 2023 Utrecht, Netherlands

DevSum 2023 Upcoming

May 2023 Stockholm, Sweden

MiXiT 2023 Upcoming

April 2023 Lyon, France

NDC London 2023

January 2023 London, United Kingdom

.NET Conf 2022

November 2022

NDC Oslo 2022

September 2022 Oslo, Norway

NDC Melbourne 2022

June 2022 Melbourne, Australia

NDC Copenhagen 2022

May 2022 Copenhagen, Denmark

NDC Porto 2022

April 2022 Porto, Portugal

.NET Zurich User Group User group

February 2022

DDD 2021

November 2021 Reading, United Kingdom

DDD East Midlands Conference 2021

October 2021 Nottingham, United Kingdom

DDD 2020

December 2020

NE RPC

June 2020

NDC Oslo 2020

June 2020 Oslo, Norway

DDD North 2020!

February 2020

DDD East Midlands Limited 2019

October 2019 Nottingham, United Kingdom

Simon Painter

Senior Developer at Müller Dairy

Telford, United Kingdom