Looking back at year in tech

Looking back at year in tech

Retrospective

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

In short, Typescript made Javascript fun for me again. Although a lot of this can be attributed to the support of ES6/ES7 in Typescript. These improvements in Javascript make a big difference. My past experience of the language did not leave a good impression but with the addition of short arrows, block scoped variables and a bunch of other stuff it is a fun to work with again.

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 any type scattered across your code. Later on you can become stricter across the board. Adding types to external libraries is fairly simple and a whole bunch of them are already available. Overall, I would use it again for any project requiring Javascript

VueJs

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.

Elixir/Phoenix

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.

Kubernetes

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.

Honourable mentions

Elm

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.

ReasonML/Bucklescript

An Ocaml dialect backed by Facebook. I have only dabbled with it so can only superficially talk about it but I liked what I saw. Takes some of the great things of Elm, (functional language/ML/etc.) but also great interop with javascript. Will want to check it out further in the future.

Rust/Go

Did some small experiments with these, also worth further exploring.

Photo by Henry & Co. on Unsplash