• .NET Internals - Inside the CLR

    The Story Museum

    "Inside the CLR; what does it take to run your C#?" with Chris Bacon (https://twitter.com/Chrisdunelm) Running C#/.NET code is something we do all the time. But how does the .exe/.dll file produced by the compiler actually get executed? What's going on inside the dotnet[core]/Mono runtime? In an attempt to answer these questions we'll investigate the contents of a .NET executable file and the things that the runtime needs to have in place in order to execute .NET code. With examples from a very simple interpreted .NET runtime, demonstrating that this may not be as complex as you imagined! This will be based on the (inefficient, pointless, and obsolete!) DotNetAnywhere runtime that Chris wrote many years ago: https://github.com/chrisdunelm/DotNetAnywhere

  • Functional Programming in C#

    The Story Museum

    "Functional Programming in C#" with Simon Painter (https://twitter.com/madSimonJ) 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!