📓 F# Notes

What the F# is Next? (original)

This post is a multi-section re-print of my original blog entry following the meandering path that led me to F#. I plan to follow up this article with an updated version for 2023, which includes some notes on what I’ve learned since this was originally penned during lockdown.

An(other) Inflection Point #

Spend enough time in technology and you see recurring patterns ebb and flow. The democratization of technology - areas of specialization evolving into commodities - has largely been a net positive. But if you get caught up in the swirl of it you sometimes miss the bigger picture. I did. In my nearly 15 plus year return to machine learning and the analytics domain I hadn’t realized my roles were essentially solving the wrong problem over and again. The pandemic gave me a chance to take a step back from that to assess in a way I hadn’t up to this point, and so this post is a bit on the next step in my journey.

Warehouse Full of Cannibals
I’ve written about my first software project outside of school building a warehouse management system for a small company that build physical products. We were building electronic musical instruments “from a cold start” as well as doing refurbishments of vintage electronic music gear. But we were staffing up and had grown beyond the ability for Bob (and myself, ostensibly) to go around with all of the parts and component information as a function of collective memory.
The Wrong Kind of DDD
But the road to this realization was full of detours. While event sourcing and event-driven systems are often associated with domain driven design (DDD) the next decade or so of my career was subsumed with another DDD - database driven development. I spent some time with IBM Global Services and managing their partner e-commerce DBs around the globe. And that actually had some event sourcing functions as we were correcting and re-loading data in preparation for Y2K.
A More Functional Approach
My path to embracing F# was not without its detours and diversions. It’s not my first or even my second functional-friendly language. With my time at Siebel I picked up java and spent nearly a decade in that “family”. While I had done quite a bit of java proper I also wrote quite a bit of production code with Groovy. Much of that time I felt like I was wrestling as much with the JVM as solving business problems.
Machine Learning
And it’s worthwhile to point out the growth in .NET machine learning projects, both to facilitate interop with other frameworks as well as purpose-built .NET workloads. The Apache Spark library is particularly notable that it works with either C# or F# and code can be deployed to Azure HDI, Amazon’s Elastic MapReduce or Databricks. While .NET gets credit for “playing well with others” by being able to run on Mac and Linux, the transpile and interop story of .
Success and Kinesthetic Learning
An Overnight Success Twenty Years in the Making # I really enjoyed watching these interviews with Don Syme, for the context as well as candor and humor he brings to the conversation. But I also liked the structure of the interview, where background info was displayed to “season” the screen as Don responded to questions. %[https://www.youtube.com/watch?v=hNAb04V4liA] %[https://www.youtube.com/watch?v=x4j7LQApfEY] It shows that F# may seem like a newcomer to certain fields, but that has more to do with where it can be deployed and the underpinnings supported by the .
Akka.NET, Actor Model and the Reactive Manifesto
Akka.NET, Actor Model and the Reactive Manifesto # This is where I’ll catch some flack from both mathematicians and computer scientists. But my personal opinion is that serverless apps - both stateless and durable functions - are really a rehash of the actor model, which has been around for decades. I had some early brushes with the concept while in school, but it really sunk in when I started looking for ways to make operational systems more elastic and reactive.
Other Learning Projects
Other Learning Projects # Aside from the exercises, kata, koan and other assorted bits and bytes, I’m also building a few of my own little projects to help sharpen my F# chops. My first foray was an Azure Function app that takes a URL and retrieves openGraph data from the targeted web page. There’s also the Fauxlemetry CLI project, which is a small applet I use to generate large sets of production-scaled event data.
Coda - Microsoft, the Enterprise & The Open Source Balancing Act
Coda: Microsoft, the Enterprise & The Open Source Balancing Act # I’m sure that Microsoft takes many figurative arrows to the chest and back while navigating between the demands of their enterprise customers and the broader open source community. That’s what happens when you make a large target of yourself, such as acquiring GitHub. But Microsoft understood that it’s not just ideas from Redmond that are worth supporting. Seeing what Aaron Stannard has done with Petabridge and Akka.