Dave Fancher

Information & Communications Technology

Programming Languages JavaScript functional programming

Carmel, 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.

JavaScript Metaprogramming

Metadata, data about data, is everywhere. We seem to intrinsically understand that using data to further describe the data within our systems brings numerous benefits to taming complexity. It follows then that metaprogramming, programming that interacts with the program itself by inspecting or even manipulating its own code can bring similar benefits to our software.

ES6 greatly expands upon JavaScript's existing metaprogramming capabilities with the Symbol, Reflect, and Proxy types. Through some practical examples we'll discuss the role each of these types play within JavaScript metaprogramming and see how they not only affect your code but even drive several modern language features.

Node.js Streams

Streams play a central role in many aspects of Node.js development particularly when it comes to working efficiently with external data sources. In this session we'll dive into the different types of Node.js streams, how to manage them, and how you can leverage them to naturally add another degree of composability to your own code.

Functional-Flavored JavaScript

I've spent nearly half of my 20 year software development career enamored with functional programming and embracing its principles. Imagine my horror then when my career took an unexpected turn and I suddenly found myself working on a greenfield project, building a brand new API...in node.js. JavaScript. The wild west. Surely there was no way a functional programmer like me could ever thrive in this world. Or was there?

Learn how I've applied functional principles via modern JavaScript features such as scoped declarations, array methods, arrow functions, and the reflection APIs to build the flexible, scalable, and responsive system that powers my company's business.

Past and future events

Seattle CodeCamp 2018

15 Sep 2018
Seattle, Washington, United States

KCDC 2018

11 Jul - 13 Jul 2018