back to index

#code2016

Filed under:

Technology I touched in 2016, with a bit of reasoning and some thoughts on it.

Haskell

I started learning Haskell in the middle of 2015 with the help of this amazing Haskell book. But even after almost a year and a half, I am still not at the level where I would feel comfortable when having to write something in Haskell.

I am not the smartest person, but also I am not the dumbest person. I am a busy person, but even after spending extra time with Haskell, I still can not find myself being productive with it.

Haskell makes me feel dumb, but not in a good way.

I will learn Haskell one way or the other, but I am hoping that there will be a language that will take most of the good ideas from Haskell and make it more approachable. I do not think being approachable is a priority for Haskell community. Which is OK, just not what I am looking for.

Rust

After a year of playing with Rust (once a month), I am slowly starting to become more confident with it. Still, a long way to go, but it looks like this might be my next go to language.

At times Rust feels like Perl.

The only thing I really dislike (at times) is the syntax. I guess with age aesthetics is becoming less important.

I am yet to do any interesting with Rust, but 2017 might be the year this will change.

Elm

Giving Elm a try, was the best decision I ever made in a long time. Not only I gave it a try, but we (Release Engineering team at Mozilla) started to use it for some of our applications. Probably reasons, why Elm, requires a separate blog post, but I am sure we will be using it more and more.

The most innovative thing with Elm is not the syntax or type system or anything technical, but the idea to focus on simplicity while taking the best ideas from Haskell and functional world.

Learning Elm is easier than any JavaScript framework.

I see Elm actually already became my go-to language for any front-end work. I hope in the future this could be expanded to the back-end (e.g. elm-node) or even different compilation targets then JavaScript. I wonder if I can teach my wife Elm.

JavaScript

I still write a bit JavaScript from time to time, but with Elm around, this is happening less and less. Yaaaay!

At work, we created a simple bootstrapping library, called Neo. That should make bootstrapping a JavaScript (or Elm) project a problem of a past.

Another exciting thing that came out of 2016, was that finally people got sick of npm and developers at Facebook wrote yarn (a npm replacement). I am yet to try it out but from initial looks, it seems like the right direction to go.

I might not be writing JavaScript myself, but I know many are. Having a sane package manager (like yarn) is then even more important for me.

In the future, I don't see myself spending much time with JavaScript.

Python

Everybody at work is mostly familiar with Flask, which meant it was time for me to look into it. The majority of things feel wrong since the framework doesn't guide you to best practices, but expects you to figure out best practices, on your own, or you copy paste them from somewhere (they do document them nicely). It makes me miss the Pyramid framework quite a lot.

On the bright side, I got introduced to connextion project (by Zalando) since I am building quite some number of JSON API endpoints. What surprised me - in a positive way - is that having a language, swagger/open API, that describes your JSON API a huge win for all the team.

  • early prototyping with the team without writing a single line of code.
  • automatically documenting your APIs.
  • easier to enforce best practices across all APIs.
  • automatically generating API clients for different languages.
  • back-end code now doesn't even look Flask specific, which should make it more future proof if new awesome framework comes along.

Another thing that I noticed this year is that the way I write python code. It is quite different from the code I was writing in the past. I almost stopped using class-es. I guess I got influenced by Elm, Haskell and Nix, to think in a more functional way.

Until I pick up my Rust knowledge Python is going to remain my go-to language for back-end. There are libraries I want to give a try in 2017: hypothesis (along with pytest), effect, mypy, typo.

Nix

I work with Nix almost on a daily basis. Either for work or in my free time. I hope to promote Nix even more in 2017. I wont write much about Nix here because I mostly blog about things related to Nix and you can just check my blog for this.

Looks like 2017 is going to be the year of Nix.

If we only find a way and time to make more approachable :)

Misc

I am more and more convinced that programming should be a social experience and that programming in pairs or groups can not only be fun, but help improve everybody that participates.

I wish to do more pair programming in 2017.

Happy 2017.