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.
I’m also learning how to use Snowflaqe, a meta-programming project from Zaid Ajaj. It’s a fascinating microcosm into one of F#’s real super-powers - that it can be used to generate new, canonical code - so meta! I used it to generate a client that scraped GitHub’s public GraphQL schema which then formed the structured types for a client interface library. The Types.fs file generated more than 3500 lines of error-free code that I would never have to look at other than to satisfy my curiosity. It’s like magic. My goal was relatively mundane by comparison - to collect repository data, chart the relative growth of functional-friendly languages relative to other programming styles over the past 10 years. It’s still in early stages but I’m hoping to complete the project end-to-end in F#/.NET and resist falling back to R.
But that’s just the start. Right now the challenge is to maintain the core lessons (and the hardware project above) while not getting too distracted by the “new shiny” idea that pops into my head. It’s the kind of problem I love to have.
The Future is Functional #
My vision of a path forward with F# is taking shape. Fable, Xamarin, Meadow, C#/.NET interop face out while Akka.NET, Kubernetes and Event Store provide the base for a reactive platform that’s fast, flexible, resilient and maintainable. The clarity of this sits in stark contrast to those lessons in my career where poor early choices and tech fragmentation were a project’s undoing.
![fsharp_ecosystem.png]( https://cdn.hashnode.com/res/hashnode/image/upload/v1659494196785/FTMS8vqPc.png align=“left”)
And the objective should not only be improved user experience or reduced burn rate but also a more sustainable operational framework. We as an industry must look beyond cost considerations to sustainability and reduction of carbon footprint. Bringing these intelligent tools together gives me a renewed sense that it’s not only possible to create a solution greater than the sum of its parts, but that its inherent efficiency is also a more responsible approach. And so, the work continues…