Most Active Speaker

Simon Painter

Simon Painter

Senior Developer at Müller Dairy | Microsoft MVP | O'Reilly Author

Telford, United Kingdom

Actions

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.

In 2023 I released my first technical book: "Functional Programming with C#", published by O'Reilly Media.

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

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

Write Code that NEVER Fails - Functional Programming With C#

Don't you ever get fed up of code failures in production? The infamous Null Reference Exception alone must be responsible for a large percentage of production issues.

What if it didn't have to be like that? What if you could write code that never fails? Believe it or not - you can.

Functional programming is a style of writing code that has been around since the 1960s, and has been becoming increasingly popular in recent years, with the advent of technologies like Serverless and async.

It's a style of code that removes side effects and unpredictable behaviour from your applications, making them just about impossible to break in production.

It enables nearly 100% unit test coverage, increasing the quality of the code that you deploy.

It doesn't have issues of resource contention or race conditions relating to state, making it ideal for asynchronous & distributed processing of data.

All of this is accomplished with out-of-the-box C#. No need to pay for new software licences or install additional software packages.

Using the techniques from this workshop, you will be able to immediately improve the quality of your production code, without it costing anything!

Hack the Planet! What Movies can Teach Us about InfoSec

The movie industry is over 100 years now, older even than the computing industry in many ways! It's seen just about every form of computer technology come and go over its long history, and often has something to say about it. Sometimes profound, but often ridiculous.

In this talk, we're going to look over the last 100 years of cinema history, to see what it has to say on the subject of InfoSec, Hacking and other security topics.

On our cinematic odyssey, we'll be looking at topics such as:

* How the dinosaur incident in Jurassic Park could have been easily avoided with a few simple changes
* What is the most accurate hacking movie?
* Who was the first hacker depicted in cinema? The answer might shock you!
* A 90s cyber-thriller that clearly doesn't understand the difference between websites and executables
* How baddies throughout cinema history could have been unbeateable with good password policies

Grab a bucket of popcorn, and let's dive on in!

Thinking Functionally with C#

Have you ever wanted to write C# code that's more supportable, robust and testable? I can't think of any reason you wouldn't! Functional programming is an alternative style of writing code to the Object-Oriented paradigm that most of us are taught at the beginning of our careers, and it's not only simpler to learn than OO, but also results in a better overall codebase.

In this talk, I'm going to not only show you what the Functional Programming paradigm is, but I'm also going to explain how you can adjust your thinking and approach to problem solving to work in a functional manner.

There won't be any hard theory or talk of list theory, just immediately useful, practical coding technique.

"Would YOU Survive the Titanic?", with ML and .NET

One of Microsoft's relatively less well-known projects is ML.net, which is in fact a powerful & easy to use SDK for adding machine learning capabilities into your codebase with a few mouse clicks.

And, have you ever wondered whether YOU would survive the sinking of RMS Titanic or not? In this talk, we'll be using Visual Studio, C# and ML.NET to find out, by making a solution to the ML training site Kaggle's Titanic Challenge.

Machine Learning is a hot topic these days. Business around the world are keen to utilise it; and there is a common misconception that ML has to be done in python

In fact - that's not true! These days it's not only possible to do ML in Visual Studio, but it's actually easy to produce high quality results with very little effort.

Be warned though, there are ice bergs ahead....

From Ancient Greeks to Modern Geeks - Basic Machine Learning Algorithms

We've all heard the hype. Machine Learning is cool! Machine Learning is Rad! It'll change the world! End Poverty! Get George R R Martin to finally finish Game of Thrones! What actually is it though?

Talk Machine Learning to a lot of people and they'll probably get muddled up with AI in old SF films, and think of HAL 9000 or Holly in Red Dwarf. That - or there'll be a general sense that it's some sort of black magic - archaic and unknowable.

The truth is that Machine Learning isn't really complicated at all. A few lines of code will implement a lot of the techniques without much effort.

During this talk, I'll be demonstrating a few of the simpler ML algorithms in a code-neutral, easy to follow manner. No need to learn Python, or add any new libraries or frameworks to your existing Codebase. I'll be working from first principles, and keeping it as simple as I can.

We'll cover algorithms like:

* Naive Bayes
* Bayes Classifiers
* N-Nearest Neighbour
* Decision Trees
* Linear Regression

We'll only be covering the absolute basics of Machine Learning - maybe just enough to be dangerous! Enough also, to go away and continue your journey having taken a good first step.

Functional Front-Ends in ASP.NET

For many years now, Microsoft have been adding support to .NET for functional programming. There's the .NET functional language, F#, of course. Not only that, but also C# has been gaining new functional features for many years now - as early back as .NET Framework 3 when LINQ was introduced.

That's terrific for our back-end code. Functional applications tend to be:

* More concise
* Resistent to unhandled Exceptions or unpredictable behaviour
* Easier to maintain
* Highly Testable
* Supportive of parallel processing and async

What about the front-end, though? We can write a back-end codebase in C# that can get close to 100% functional and testable, but what can we do with the front-end in ASP.NET?

In this talk, I'll consider all of the options that exist for a C# web developer to extend the benefits of functional programming to the front-end as well as the back-end.

I'll be assuming zero knowledge of the functional paradigm. All concepts will be explained in easy-to-understand terms.

Topics will include:

* Functional JavaScript/ECMAScript libraries
* JS Frameworks with functional support
* Blazor
* Elm Architecture

Why is a Developer Nothing like an Enchilada?

In the IT industry we're surrounded all the time by all sorts of extraordinary words in our everyday working environment - but have you ever considered their origins?

Some are, of course, entirely modern. Some though date back to the middle ages, and some even to the ancient world!

In this talk we'll look at the stories behind the words we use at work all the time, without even realising what they might actually mean.

On our eymologoligical travels, we'll find out how our work relates to 12th centry Welsh monsters, a 6th centry Persian mathematician and some very silly singing Vikings.

We'll answer questions such as: What are Geeks and Nerds really? What is a C and how can it be sharp? Was a Firewall ever actually made of fire? What were bytes taken out of?

Above all, as the title suggests - Why is a Developer Nothing like an Enchilada?*

All these questions and more will be answered. You aren't going to go away better at your job, but hopefully you'll gain an appreciation for computer terminology and how it fits into the larger history of the english language

* Be warned - the answer is not as interesting as the question!

A Developer Goes to the Movies

As well as being a full-time software developer, I'm also a huge film buff. I love films from any number of countries, eras and genres. One of my favourite things though, is when Hollywood decide to make a film touching on my day job - that is, a film that's about software development.

There aren't very many of these, rather unsurprisingly, considering how dry the topic can be for the "not-we" that make up the majority of a cinema audience.

What I'm going to do in this talk is take you on a whistle-stop tour of film history, looking at many of the films that try to show the rest of the world what our jobs are like.

I'll be looking at firstly - are they actually good films? But also, how accurate are they? What sorts of social trends informed a portrayal like this?

On this brief odyssey through cinema history we'll cover:

* The first film to depict a developer. You won't believe when it's from and who the actor is!
* How have developers been portrayed differently over the years? Particularly with regard the role of women in tech
* How The Matrix wasn't the first VR world by near 30 years!
* A 90s cyber-thriller that clearly doesn't understand the difference between websites and executables
* How AI is very definitely going to kill us all. At least according to any number of old SF action-thrillers
* An old episode of Doctor Who from the 60s that predicted the internet (ok, not Hollywood, but I love Doctor Who!)

This talk won't help you do your job better, but it might give you a glimpse into how the rest of the world have seen us over the years!

F# Eye for the C# Guy

So, you're a C# developer and you've heard about this F# thing? What is it? What's the big deal? Why should I be interested.

F# is the .NET framework's language for programming in the Functional paradigm - a style of programming that's:

* More concise
* Resistent to unhandled Exceptions or unpredictable behaviour
* Easier to maintain
* Highly Testable
* Supportive of parallel processing and async

It's possible to do most of this style of programming natively in C# - with a little work with extension methods and other bits of hacking. F# does all of it natively however, and far more effectively than C# is ever likely to.

In this talk, I'll be giving a gentle introduction to the functional paradigm - assuming zero knowledge - and introducing the F# language, but using C# as a reference point.

My aim is to give those of you familiar with C# and its syntax as gentle an introduction as possible into the world of F# and functional programming.

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!

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.

Win at Games and Write Novels with Machine Learning Algorithms

AI and Machine Learning are all the rage these days, and rightly so. They are as close as it gets to actual Magic in the computing world. It seems like there's nothing you can't do with them.

In this talk, I'm going to try and de-mystify Markov Chains - one of the basic algorithms and show exactly how they're used. Among other things, I'll show you how you can use them to:

* Model and replicate systems with a continuous set of states
* Choose the best move in a popular family board game
* Write an entire new novel by Jane Austen

And much, much more. I'm a Microsoft developer, so all code samples will be in either C# or even Excel!

Azure User Group Sweden User group Sessionize Event Upcoming

Not scheduled yet.

NDC Oslo 2025 Sessionize Event Upcoming

May 2025 Oslo, Norway

INIT 2025 Dev Conference Sessionize Event Upcoming

April 2025 Banja Luka, Bosnia and Herzegovina

NDC Security 2025 Sessionize Event Upcoming

January 2025 Oslo, Norway

Øredev 2024 Sessionize Event

November 2024 Malmö, Sweden

NDC Porto 2024 Sessionize Event

October 2024 Porto, Portugal

.NET DeveloperDays 2024 Berlin Sessionize Event

June 2024 Berlin, Germany

Techorama 2024 Belgium Sessionize Event

May 2024 Antwerpen, Belgium

DDD South West 2024 Sessionize Event

April 2024 Bristol, United Kingdom

Global Azure London 2024 Sessionize Event

April 2024 London, United Kingdom

Rome .NET Conference 2024 Sessionize Event

March 2024 Rome, Italy

A Dash of .NET User group Sessionize Event

March 2024

Appdevcon 2024 Sessionize Event

March 2024 Amsterdam, The Netherlands

DDD North 2024 Sessionize Event

March 2024 Kingston upon Hull, United Kingdom

Build Stuff 2023 Lithuania Sessionize Event

November 2023 Vilnius, Lithuania

Copenhagen Developers Festival 2023 Sessionize Event

August 2023 Copenhagen, Denmark

Azure Lowlands 2023 Sessionize Event

June 2023 Utrecht, The Netherlands

DevSum 2023 Sessionize Event

May 2023 Stockholm, Sweden

Appdevcon / Endpointcon 2023 Sessionize Event

May 2023 Amsterdam, The Netherlands

DDD South West 2023 Sessionize Event

April 2023 Bristol, United Kingdom

MiXiT 2023 Sessionize Event

April 2023 Lyon, France

WeAreDevelopers Live 2023 (Season 5) Sessionize Event

April 2023

NDC London 2023 Sessionize Event

January 2023 London, United Kingdom

.NET Conf 2022 Sessionize Event

November 2022

NDC Oslo 2022 Sessionize Event

September 2022 Oslo, Norway

NDC Melbourne 2022 Sessionize Event

June 2022 Melbourne, Australia

NDC Copenhagen 2022 Sessionize Event

May 2022 Copenhagen, Denmark

NDC Porto 2022 Sessionize Event

April 2022 Porto, Portugal

Rome .NET Conference 2022 Sessionize Event

March 2022

.NET Zurich User Group User group Sessionize Event

February 2022

DDD 2021 Sessionize Event

November 2021 Reading, United Kingdom

DDD East Midlands Conference 2021 Sessionize Event

October 2021 Nottingham, United Kingdom

DDD 2020 Sessionize Event

December 2020

NE RPC Sessionize Event

June 2020

NDC Oslo 2020 Sessionize Event

June 2020 Oslo, Norway

DDD North 2020! Sessionize Event

February 2020

DDD East Midlands Limited 2019 Sessionize Event

October 2019 Nottingham, United Kingdom

Simon Painter

Senior Developer at Müller Dairy | Microsoft MVP | O'Reilly Author

Telford, United Kingdom

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top