I, like most people, always keep an eye on moving technology trends. But I don’t care about trends, I care about what makes sense.
Let me first explain what I mean by "what makes sense", if I’m baking a cake I use an electric whisk rather than a hand whisk. But I definitely don’t use a wooden spoon. There will be improvements on the electric whisk - such as all in one kitchen mixers (you know, those big things with the bowl that do everything from have blender attachments to grinding attachments etc etc etc). There may be small single handed electric whisks etc. I want to see what I think is the best way, then pursue that avenue on what people have innovated in that space.
The most recent example in the tech world is Kubernetes. Containerisation makes amazing perfect sense, I want to keep my app running in its own isolated lightweight environment. Virtual Machines feel like the wooden spoon in this - as does bare metal. As soon as we started using containers, we quickly had many many containers and organising and managing them became a nightmare - enter Kubernetes. This is what I mean by pursuing a particular avenue. Kubernetes is the kitchen mixer in all this.
I’m going to break this down into really arbitrary categories and this is really based on my experiences (mostly of pain using things).
- UI Frameworks
So let's get into it.
So hopefully everyone reading this has read my blog posts on going from C# to F#, and seen my talk given at .NET Reading Meetup.
Why am I going from C# to F#. Two main reasons, Domain Driven Design (DDD) is so easy using the likes of F#, using Object oriented Programming (OOP) for business process is painful. There are some sub reasons that I find big drivers; code is easier to read because there is less noise (brackets, braces, semi-colons, redundant keywords), manipulating lists of data because of the way functions can chain, immutability of F#.
So what I’m keeping my eye out on here is areas I can make bigger uses of Functional Programming Languages in general, things like F#, Clojure, Haskell, Elm.
I’ve actually also translated this into the frontend as well, you can go fully functional using the likes of Elm, CycleJs or semi functional using the likes of ramda js. React actually draws on a lot of functional principles - especially Redux.
I truly believe that OOP has had its day, we should now be looking to use languages that help us a lot more with our day to day real tasks (not just writing boilerplate over and over again).
I’ve had these thoughts about Databases for a while now (2+ years). SQL is a bit old hat, it was designed for use on disk drives - but we’re in the SSD (NVMe) era now. There are document databases like MongoDB, RavenDB etc etc., there are Graph databases such as Neo4j. But what really piqued my interests over a year ago was Kafka.
So for 2020 I’m really keeping my eye out for an Immutable Database, something I can just chuck partial records at, then gives me the complete up to date record, with full history. That also isn’t built on Java.
So, I’ve played around with and used quite a few UI Frameworks over the years. JQuery (yes!), KnockoutJS, Angular 1x, Aurelia, React, Cycle JS. They’ve all had their pros and their cons. I, again like most people, have kept with React. Two reasons why, Redux because the pattern is just awesome and JSX because I really don’t like “technical” separation of concerns. I want my “template” next to my JS etc. I don’t believe in templates, I want components.
But, there is this new kid on the block, Svelte. If you don’t know of it, I urge you to check it out. It is blindingly awesome and for me this is the one to watch in 2020.
Also, if you haven’t seen CycleJs, this is the functional UI framework and is really cool, it makes way more sense in general, and in my opinion fits better with RxJs - which you should all be using anyway.
Wow, what a topic DevOps is and how it has grown. DevOps is a process that we should all be following, and we need great tools to support that. I currently love Azure DevOps because it really is the all in one complete tool. But there are others I have my eyes on like CircleCI, TravisCI and AppVeyor. They all have their little quirks.
Recently I’ve had more exposure to Infrastructure as Code which really should be booming now.
So I’ve mentioned this earlier as the Kitchen Mixer, and it can be a whole topic on its own. In fact a lot of the individual parts can be whole topics. It feels to me as though Hashicorp is a front runner for providing infrastructure tools, things like the popular Consul, Vault and of course Terraform. So if you’re not using something from Hashicorp then I would just advise you to check it out.
One thing I’m interested in, as I’m sure other people are, are Service Meshes. Istio being my one to watch this year along with Linkerd. I will be doing some in-depth analysis of these in the near future as I’m slightly more interested in the application side of infrastructure than the infrastructure side of infrastructure (networking, disk provisioning, node scaling etc) (yes, that does make sense).
I’m also on the look out for good load balancers, I’ve been using Traefik and quite like it, it has some powerful features around load balancing with bias - so this is my one to watch in this space.
I’m very wary of the Nginx stuff at the moment, I do use the docker nginx web server usually as a reverse proxy or to host my UI and it works well - but after the Nginx troubles in the news I may look to use something else.
With a few arbitrary categories can I draw a conclusion? Yes, yes I can. Immutability and Functional are the themes running through these categories - and yes I would like to see these carried through to Kubernetes. In systems with fast movement of data, pacy transactions and innovations it is paramount that data integrity remains intact. Through the use of Functional concepts, languages and frameworks I believe we can easily achieve that and even up the pace.
I will be aiming to release a quarterly update to see where this has all got to, and to see if anything else has fallen into my radar.
Go fourth, and innovate!