Dave Fancher

Information & Communications Technology

Indianapolis, Indiana, United States

Dave Fancher

Developer and trainer

Dave Fancher is a lead software engineer at Vibenomics in Fishers, Indiana; a former Microsoft MVP for Visual Studio and Development Technologies; author of The Book of F#; and author of Functional Programming with C# and Building F# Type Providers on Pluralsight. He has been building software for nearly two decades with an emphasis on Microsoft technologies. Over the past several years he's focused much of his attention on functional programming. Most recently his efforts have been focused on Node.js development.

Dave is active within the software development community and has spoken at numerous events throughout the United States and England and has co-organized the Indy.Code() conference in Indianapolis, Indiana.

When not writing code or writing about code he enjoys spending time with his family, watching movies, and gaming on his Xbox One.

Current sessions

Cleaner Code: How Functional Code is Clean Code

Since 2008 Bob Martin's seminal work "Clean Code" has been teaching developers a series of guidelines for writing maintainable code and improving software quality. While several of the guidelines such as naming conventions and comment style are highly subjective, the astute reader will notice that the remaining guidelines are actually quite objective. All too often, following the Clean Code guidelines is mostly a matter of developer discipline. Let's discuss how those objective guidelines improve code quality, how they often naturally arise when programming in a functional style, and how many functional languages actively enforce them thus eliminating the need to rely on discipline and naturally eliminate the complexities they address.


A Closer Look at .NET Delegation

Delegation is at the heart of many of .NET's most powerful features including LINQ and the Task Parallel Library (TPL) but have you stopped to consider what delegates are or why they play such a prominent role in modern .NET development? In this session we'll go beyond the lambda expression and look at delegates from the bottom up. We'll explore what delegates are from the perspective of the .NET Framework, how generics enhance delegates, the role delegates play in functional programming, and we'll even look at a few ways to abuse, err, enhance the multicast delegate experience.


Metaprogramming in ES6

JavaScript has always had some rudimentary support for inspecting objects. That capability has been critical in the many high-profile frameworks that have helped shape the language into what it is today. ES6's Symbol, Reflect, and Proxy types take these capabilities to the next level and enable some truly wonderful techniques that can change how we not only write but also think about JavaScript code.


Asynchronous Programming in .NET

From multithreading to async/await, asynchronous programming is an important aspect of writing software that takes advantage of the underlying system resources. This talk takes a walk through the history of parallel and asynchronous programming in .NET starting with a basic synchronous process and tweaking that process to demonstrate traditional threading, the Asynchronous Programming Model (APM) approach with IAwaitResult, a variety of Task Parallel Library (TPL) examples, before wrapping up with some async/await examples. Along the way we'll talk about the pros and cons of each approach and show some of the common pitfalls common to all of them.


Past and future events

Seattle CodeCamp 2018

15 Sep 2018
Seattle, Washington, United States

KCDC 2018

11 Jul 2018 - 13 Jul 2018