My personal Swiss army knife
The first program I intentionally wrote, that is to say I actually felt that I knew what I was doing and had a clear purpose, was one that would copy stuff into folders based on date modified… or something like that. That bit of C++ is long gone .The point is , the reason I wrote it was because I wanted to get something done and there was nothing around that I knew of that could get the job done.
These small use cases have never left me, I view writing code to solve problems the same way most people view calculators as good at solving math problems. This means I have a preferred language which is my goto hammer for everything that looks remotely like a nail.
Being a little overenthusiastic about different programming languages , once I got comfortable with associated features such as closures , function objects and functors, I thought it would be rather interesting to set out finding another language that did all this. I Googled it, and Scala came up.
A few Years later , Apple releases Swift, my reaction? “This looks familiar” , indeed Swift had clearly borrowed a lot of syntax from Scala, of course they are very different languages , but I think the syntax style of a language generation reveals a certain shift in thinking. Needless to say , that thought of the generation shift peaked it’s head once again.
In the last quarter of 2015 though , Scala fell off my todo shelf and onto my desk of todo things. An interest in Akka was the spark that ignited the fire , though it was Twitter’s openness about how their enginerring works that really added fuel to the flame. Twitter uses so much Scala you would swear they invented it , in fact in some cases, like Futures, one could argue they sort of did.
Scalability is kind of what you want for your personal language because it’s where you go off topic, where you play with ideas to find 100 ways to solve the same problem and sometimes take a project in a completely different direction after some shower-thought. This can have major benifits in real world projects too, just look at teh aforementioned Twitter to see that this language isn’t just a toy I like playing with.
All of this however does not mean I’m going to start adopting Scala.js in all my website projects , but it does mean that express projects will be replaced with ones written in Finatra . I also think that in this very short space of evaluation time I would be confident enough to try some production project in Scala if afforded the opportunity.
To sum it all up , I like my new hammer , because it has a cork screw, and a scissors , and a… what is that white slide out thing opposite the tweezer? Is it a monad?