This is my very first post dedicated to DSP 2017. Wait, what? You don’t know what DSP is? Take a moment to read this first, then. Don’t know me either? About time we got acquainted! All set? Let’s go on then. I know this is quite a long introductory post and I’ll try to keep the next ones shorter.
Incidentally this is also my very first post on a public blog. I’ve been wanting to try my hand at blogging for quite some time now, so I figured this would be the perfect opportunity to do so. After spending long hours looking for hosting options and domain prices, configuring WordPress, and most importantly, finding a decent-looking theme, here I finally am. Quite the adventure already!
In Quest of The Unimaginable
But having a blog is not enough to take part in DSP, for you also need a project! And this where things got a little complicated. There are literally so many things I’ve wanted to experiment with in the last few months that I couldn’t make up my mind. Would I go with a new language? A shiny framework? A cutting-edge tech? Ideas kept bouncing around in my head, but after some time, I realized all revolved around a certain pattern:
- I’d surely like to try my hands at Web Dev
- But… I don’t really like front-end work
- But… I’ll need some kind of UI anyway
- Damn, this F# looks pretty sexy!
At the first glance, some points seem pretty contradictory already! Let me expand on some of the ideas above.
…Why Web Dev?
Since the beginning of my career, I’ve been mostly working on server and desktop applications for enterprise. This is all fine and fun (well, not always), but there is this new thing in town called the Internet, and it seems to be catching up pretty fast. Who knows, companies might as well decide to use it too, at some point! So why not jump on the bandwagon?
…Why not front-end… but front-end after all?
I am what people from the IT sphere call a full-stack developer. I’ll spare you the technicalities, but that basically means I am able to implement both the business logic on the server (aka the back-end) and the UI logic on the client side (aka the front-end). However, I quickly started to notice one thing: those two worlds generally don’t cohabit well, and while I find it rather easy to keep the server side clean and tidy, working on the client side often feels like I am piling hacks over hacks (and oh god, I don’t like this). I truly believe the front-end is a domain on its own, and it should be reserved to dedicated and trained professionals. Let’s call them front-end developers. Catchy.
But since a GUI is generally accepted as the best way for users to
mess with interact with your application, I guess I’ll have to live with it and compromise.
I was introduced to F# a few years ago by my good friend Krzysiek. Back then, I remained oblivious to its charms. Maybe I was too young. But after sinking a couple hundreds hours solving the same basic bugs, seeing resources and money being repeatedly wasted on common mistakes, studying patterns over patterns in the secret hope they would solve all our problems, or learning about performance issues the hard way, I started to seriously question the way we create software. Were we using the wrong tools? Was the blame to be put on us poor programmers? All those questions remained unanswered for quite some time.
But a couple of years later, I stumbled upon an article listing some of the basic features of F#. And It suddenly became all clear. Oh the immutability! Oh the purity! And the non-nullability… Did I mention composition? And pattern matching? Don’t worry. we’ll talk about all those in a future post.
Now, I am no F# developer. I don’t have any professional experience in using F#. The good news is, I don’t intend to leave it that way. Let’s see if F# lives up to its reputation (and If I’m worthy of it).
The Unimaginable Is Here?
I’m talking and talking, and all you’re probably thinking of is: Tell us about the project!
To put it simply, WebSharper is an open-source framework for Web Dev using F# for writing both the back-end… and the front-end! Awesome! Fear not, we’ll get into the details later. Until then, you can have a look at their official website here.
Let’s wrap up by listing what will be my goals and challenges for the next three months:
- Blog, try out new ideas, and strive to keep you interested!
- Get to learn WebSharper
- Try my hand at Web Dev
- Prove to myself and others that F# is an awesome language!
I want this DSP adventure to be all about the journey, not the destination, and as such I made the intentional choice not to commit to a specific task to implement just yet. Let’s see where the wind takes us.