Carmel, Indiana, United States
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.
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.
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.
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.