#84 Mark Seemann, Dependency Rejection, Part 1

Part one of a two part recording with Mark Seemann on dependency injection and rejection in F#.

Who he is, what he does. The new video site. Used to earn from C#, now earns from F# but would like to earn from Haskell; how much dev is going on in F#. Dependency rejection; side effects, purity and determinism. Impure functions. Pure and impure calling each other. Dijkstra, abstractions and monoids.

Mark's homepage

Download mp3 of podcast

#54 Mark Seemann, Functional Programming and F#

Mark Seemann, author, creator of AutoFixture and Plural Sight coach tells me about functional programming and F# in particular.

His background, started with VB and C++, now programs in C# only for money; what functional programming is; isolating side effects to boundaries of the program; is functional programming only suitable for certain types of application; isolation, great for testing; all of .net is available; composing functions; interfaces, strategy pattern, dependency injection; differences in architecture when developing in F#, quoting Alan Kay; deploying and devops; roslyn and f#; the book that started it for Mark by Tomas Petricek, wrap up.

Book recommendations

I sometimes ask people to recommend a few books that are relevant to the topic and a few that have been influential to them, Mark was kind enough to write the following about his choices.

Clean Code, by Robert C. Martin. This isn’t the book that changed my approach to programming the most, but it’s the book that I recommend that all programmers should read. While examples are in Java, and thus seem to apply to OOD, I think many of the points apply equally well to FP.

Design Patterns, by Eric Gamma et al. This book changed the way I programmed. The reason I don’t list it as number one today is that it’s not interesting to Functional Programmers, but anyone doing OOD should read it.

Refactoring, by Martin Fowler et al. Another OOD-specific book, this one is a gem because of the list of code smells it contains.


Blindsight, by Peter Watts. This book changed the way I think about consciousness, cognition, and a host of other things. To say anything more would be a spoiler.

Atlas Shrugged, by Ayn Rand. This one is embarrassing, but I grew up in the 1970s and 80s Denmark, which was as leftish it could be and still be a NATO member. Being good at something was more of a burden than a blessing. When I read Atlas Shrugged in my early thirties, it was a revelation to discover that there even exists a philosophy that views being good at something as a moral superior position. There’s a lot of Randism that I don’t buy into, but this book taught me that it was OK to be proud of being good at something, and for that, I’m grateful.

The Lord of the Rings, by J.R.R. Tolkien. There’s really nothing profound about this, and it isn’t a book I think much about on a normal day. It still holds the singular record of being the only book I’ve read and enjoyed in more than one life stage (twice when I was an adolescent, and a third time around 30). All other books I enjoyed when I was young, I’ve later found basic and disappointing.

Mark also keeps a list of must read books for .Net developers.

Download mp3 of podcast

#51 Rachel Reese, F Sharp, microservices and Jet

Rachel Reese tells me about her work at Jet, F#, chaos testing and being one of the Rachii.

Who she is; what she does at Jet, F#, why did Jet choose F#, tech.jet.com blog; does the architecture have to change for F#, what's different for a C# developer, F# readability; Pipe operator; microservices at jet, "event driven cloud based functional microservices"; dividing up microservices, bounded contexts, dividing up your teams; how to deal with multiple languages in different services,  recording and replaying every single event; unit testing, property testing - FsCheck; chaos testing; geographic redundancy; The Rachii; upcoming conferences; Jet is hiring in NYC and Dublin, contact them rachel@jet.com or Aimee@jet.com.

Download mp3 of podcast

#36 Nicholas Blumhardt Seq and Serilog

Nicholas Blumhardt discusses Seq, Serilog and structured event logging with me.

Who he is, what is serilog, Event Tracking for Windows (ETW) and Semantic Logging Application Block (SLAB), structured event streams, no more regex; finding events in your log, navigating from one type of event to another; what feedback he gets; datastore; seq, use cases, filtering by type; seq data storage, Microsoft Extensible Storage Engine; making money; releases and new versions; simple install and usage instructions.

Download mp3 of interview.