My brother and I once took a ballroom dancing class where we were taught the basics of the waltz, salsa, tango, and foxtrot. I wasn’t much interested in the salsa and I no longer remember the foxtrot or the tango. What I do remember is a few steps of the waltz, especially the box where the movement of your feet make the corners of the box.
The dance instructor kept me making the box for a while and it was a little boring, we didn’t actually go anywhere. And that is what I feel like I’ve been doing on this project: taking a step backwards for every step I take forward. After I learned how to make the box and practiced it for a while, the instructor then showed me more steps that can be taken with the waltz to allow free-reign of the ballroom. In the same way, I’ve been brushing up on F# and functional paradigms so that I may have all the power they offer.
It has been a month since my last commit to my project Morgemil and this wasn’t intentional at first but became so after the first week of absence. I’ve been going about it all wrong. Every time I sat down to write more code I’d get frustrated and quit. Now for me this was a sign that I have a poor design and poor understanding of the technology so I took a break.
During this break I started using F# as my goto scripting language at work. Generally this meant anything more complicated than adding two numbers together in a calculator or something too complex to express in SQL. Now for the former I would throw together a few lines in .NET Fiddle while the latter has a playground project with a ready type provider already hooked up to the test databases.
Now this was the best thing I could have done. Real day-to-day usage is the best way for me to learn something, to retain that knowledge, and to find room for improvement. So after a month of not working on Morgemil I came back and I see errors in my usage of F#, misunderstandings of functional programming, and general lack of focus.
This is entirely a good thing to say that “I have learned much.” A bad thing would be the inability to say that.