Last year was an interesting year for me. I was able to try out a whole lot of new technologies, assess their capabilities and get a good look at their pros and cons. I want to go over a couple of them, and shortly summarize my findings.
Typescript only adds to the fun, especially when working in Visual Studio Code it gives you a fluent experience where it’ll autocomplete your code, or help with your imports. It really catches a few bugs before opening your browser window. The type system can gradually be applied, first having the
This year I started with learning VueJs, it was fairly simple to pick up though I have some React experience that came in handy. It is really good to get a running start with it, reminding me of how Rails is helpful in the beginning of a project. The VueRouter for client-side routing and Vuex store for state handling gives you two good official defaults to fall back on. The documentation and guides of the VueJs project and official packages are really good.
Typescript support for Vue was lacking although with the latest release it has improved a lot. The vue-component-class to support ES6 class style Vue components was helpful in getting a more Typescript like approach, although it felt a bit bolted on and a departure from the official Vue-way. There is no support for type checking by Typescript in the Vue templates, something React does have with its JSX/TSX syntax. My preference overall would be to use React mostly for better Typescript support and its variety of choices regarding routing/state management. Nonetheless, would not fault anyone for choosing Vue in their projects.
As a choice for backend language/framework the new entrant is still the Elixir/Phoenix. Coming from Ruby on Rails it took some getting used to write idiomatic Elixir code. Also, the resources on the internet are still lacking compared to Ruby. However, my enthusiasm for the language grew by the day. The whole OTP ecosystem is a great resource to use and I picked up some Erlang along the way. The community is friendly and welcoming, and most important libraries are available. Documentation of the language/Ecto/Phoenix is great, big fan of treating documentation as a first class citizen. Nonetheless, other libraries may sparsely be documented.
Phoenix is great framework, shielding you from working with GenServers, until you are so comfortable with the language that this is also easy to pick up.
Though many say deployment is hard for Elixir I have not found this to be the case. Sure, there is some stuff to learn on how to build a release with Distillery, especially on how to handle environment variables, but it is perfectly doable. There are plenty of examples on how to dockerize your application with a release within and if you follow those it all should work out.
I’ve mainly dealt with Kubernetes on Google Cloud Platform and overall I am pretty positive. There is quite a bit of lingo to pick up with Pods/Deployments/Services/Ingress etc. but if you take it step by step it is not insurmountable. This year it felt as if Kubernetes really picked up momentum, and a whole more stuff is happening around it than in other cluster-management projects.
The downside of the momentum is probably that the resources on Kubernetes on the internet get outdated fast. If the ecosystem grows this should become better.
A small sideproject of mine was written in Elm. It is a great language to pick up and learn functional programming. It forces you to think in different ways regarding problems. Its strictness and resulting lack of runtime errors is really fun to work with. The ecosystem is still pretty small and I feel the whole community is waiting for the release of 0.19. Once that is released I will definitely look at it again.
Did some small experiments with these, also worth further exploring.