Presentations

A Developer's Journey from Object Oriented to Functional Programming

Learning a new paradigm is one of the more difficult things to do in software development. So why would an object oriented developer of 10 years suddenly decide to make the drastic switch to functional programming? In this talk I’ll show you why I started looking for other ways of writing software and why the switch wasn’t as sudden or as drastic as it may seem. We’ll start our journey with C#, discussing SOLID principals and the use of IoC containers. Then we'll discuss problems with code bloat and how we can minimize them by writing code that stays on the happy path. We’ll finish up with some anecdotal results of switching to FP and some resources to help you on your journey.

Conferences

  • Codestock 2015 - Knoxville, TN
  • DevSpace Conference 2015 - Huntsville, AL
  • CodeMash 2016 - Sandusky, OH
  • Codestock 2016 - Knoxville, TN Slides and Audio
  • Scenic City Summit 2016 - Chattanooga, TN
  • Music City Code 2016 - Nashville, TN
  • Codestock 2017 - Knoxville, TN

Getting Started with Functional Programming in F#

Functional programming is one of those things that's only good for math and statistics and stuff right??? Wrong! In this session we'll start from scratch and code a multi tier application using functional techniques. Attendees will see F#'s Type Providers which are used to statically type check our data access, asynchronous data access to help the app scale, and computation expressions which will allow us to stay focused on the happy path of development.

Notes

This is a live coding talk designed to show unique features of the F# language and how it is directly applicable to solving business problems. Interaction and questions are encouraged throughout.

Short Abstract (30 minute session)

Functional programming is one of those things that's only good for math and statistics and stuff right??? Wrong! In this session we'll start from scratch and code a multi tier application using functional techniques. Attendees will see F#'s Type Providers which are used to statically type check our data access, and asynchronous data access to help the app scale. This is a live coding talk designed to show unique features of the F# language and how it is directly applicable to solving business problems.

Conferences

  • Knoxville Coding Dojo 2015 - Knoxville, TN Video
  • LambdaConf 2016 - Boulder, CO Video
  • CodeMash 2017 - Sandusky, OH
  • FunctionalKnox meetup Feb 2017 - Knoxville Video
Slides / Video

The 4 Steps to Becoming a Functional Programmer

With functional projects like React, Rust, and Swift there's little doubt the software industry is running towards functional programming. If you're a developer who is interested in learning how to be a functional programmer and maybe have tried to learn a time or two this talk is for you. No crazy jargon or burrito metaphors here, just actionable steps to help you write functional, declarative code with fewer bugs without leaving your current language.

Conferences

 

  • Knoxville Coding Dojo - September 2016
  • Codestock 2017 - Knoxville, TN

The Building Blocks of Happy Path Development in Functional Programming

How many times have you heard the metaphor that building software is like building with blocks? In this talk we'll dive headfirst into this metaphor and actually build code with blocks. We'll then relate each block shape to specific types of functions to see how we can take lots of small, specific, testable functions and then compose them together to create a larger application. We'll see how writing code in this way allows us to stay on the happy path of development which results in less code with fewer bugs.

Conferences

  • Scenic City Summit 2016 - Chattanooga, TN

C# without nulls or exceptions

Sir Tony Hoare, the inventor of null, has called it his billion dollar mistake. "The Pragmatic Programmer" says that exceptions are "a kind of cascading goto", which Edgar Dijkstra famously considered harmful. With so much of C# and the .Net framework built on these two concepts, code can quickly become littered with null checks and tightly coupled with exception catching. This talk is all about showing ways of writing and thinking about C# that can greatly reduce or remove null checks and exceptions. We'll delve into why null is so dangerous, and see how code relying on exceptions can become entangled. Then we'll see why an alternative approach produces code that has fewer defects, is more modular, is easier to test, and is easier to debug.

Are you still telling the computer how to count? - An introduction to Higher Order Functions

Higher Order Functions go by many names: Map/Reduce, Linq, Callbacks.  Are you using them to write declarative code or are you still telling the computer how to increment that same lower case single character variable?

If the two hardest problems in software development are cache invalidation, naming things, and off-by-1 errors, then clearly most developers don't know how to effectively use Higher Order Functions!  In this talk we'll look at how using Higher Order Functions can eliminate off-by-1 errors and reduce the things you have to name.  We'll walk through what Higher Order Functions are and how to use them.  We'll see practical examples in a variety of languages so you'll immediately see why they result in reduced errors, more legible code, and how learning to use them can immediately ease your transition into virtually every other language you'll encounter.

Slides / Video