My tech stack for 2020
Tags: react, graphql, blockchain, python
Published: 2019-11-18 00:00:00

---
title: "My tech stack for 2020"
date: "2019-11-18"
description: "What I'm using and what I'm learning next year."
cover: "stack.jpg"
author: "J. Del Valle"
tags: "react, graphql, blockchain, python"
canonical_url: "https://delvalle.dev/posts/2020-tech-stack/my-tech-stack-for-2020/"
---

We’re now at the end of the year 2019 and it is that time when everyone starts planning what to do next year. 2019 was a great year for me in terms of coding. My previous job was great and my once side-project - now full time - has allowed me to work with very cool tech. While I’m mostly gonna keep using the same stack on my main project I’ve also decided my path for next year in terms of learning new things. 

In this post, I’m gonna talk about my main project’s stack and what I’d like to learn in 2020.

## React

I’ve been working with React since 2015 and I feel very comfortable with it now. I’ve worked on projects of all sizes and it has never let me down. There are very cool features coming to React like Suspense and Concurrent Mode - both experimental at the moment - that are worth checking out. React is alive and their team hasn’t stopped shipping new features each year so I still feel it’s gonna keep leading the front-end development world. 

Special mention to **Gatsby**. My blog is made with Gatsby, a React framework that helps us developers build really fast static sites. Before launching my blog I was using Jekyll which was great but sincerely, being a JS and React developer, Gatsby felt so much better so I migrated to it and I don’t regret it at all. I’m sticking with Gatsby for 2020.  

## Styled-Components

I’ve been using CSS and Sass for styling my web applications for a long time now but a couple of months ago I tried a new approach. It’s called CSS-in-JS and several libraries follow this approach: JSS, Emotion, Glamorous and Styled Components just to a few. Even the Material-UI library has its CSS-in-JS solution. 

The basic idea is that you write your styles in your Javascript, some libraries will let you use CSS syntax which I prefer. Some will inject the styles in your HTML whereas some will create classes and append these to your HTML elements. 

As for myself, after using JSS, Emotion, MUI and Styled Components I decided to choose the latter on my main project, mostly due to the developer experience it gave me. It just felt pretty straightforward to use with React and I just love how clean the JSX looks when using it. The other ones I tried were great too actually, they are easy to work with and provide a lot of flexibility so switching between them shouldn’t be a problem for anyone. 

## GraphQL / Apollo 

When I started working on my current personal project I decided to work with a completely new approach for the web API. I first heard about GraphQL a couple of years ago but wasn’t until January 2019 that I started working with it using the Apollo libraries on both the server-side and client-side and it’s been pretty challenging and fun. 

It presents a different approach than REST APIs, letting you choose which set of data to receive from the back end, using one single endpoint. Do you want all the fields from a record or just a couple? No problem, you just have to declare which fields you want to fetch. 

Using react-apollo makes fetching data from the API easy and clean on the front-end and apollo-link-state lets you manage your local state using the GraphQL way. I found apollo-link-state to be a good alternative to Redux which I used heavily in the past but have grown tired of. 

Going to the back end, integrating Apollo Server with Express and Mongoose on the back-end has been a breeze. You can also mix GraphQL with REST in case you cannot migrate everything or if you still need to call some third party REST APIs. 

All in all, I’m using Apollo not only as an intermediary between client-side and server-side but also to manage the client-side's local state. 

## NodeJs / Express

NodeJS has been my goto backend framework when developing web apps. I mostly worked on front-end development while on my previous jobs, but when I decided to work on my project I knew I had to choose something I felt comfortable with for the back-end and being mainly a Javascript programmer, NodeJS was the obvious choice. As mentioned above, integrating with Apollo was a breeze and when I also decided to use MongoDB as my database I didn’t find any big obstacle during the early stage development. 

NodeJS is not new anymore but it has been widely adopted and today remains as one of the most powerful and versatile solutions for web applications so I’m still gonna use it in 2020. 
MongoDB

I’ve used MongoDB since I was in college and while I stopped using it while on my previous jobs I kept studying and using it on my side-projects. For my current project, I needed good performance on geolocation data retrieval and I remembered MongoDB had a nice set of geolocation indexes that fit nicely for this requirement.

Several, NoSQL alternatives to MongoDB exist and may be better for some use cases but this time I also wanted to work with something I was familiar with to boost up development speed so I went with MongoDB once more. 

# What I’m learning in 2020

## Vue 

So as I mentioned above, I’ve worked with React for several years now. I’ve worked with Angular as well but not at the same degree. Still, I’ve chosen Vue as my new front end framework to learn in 2020. I don’t think I’m ditching React any time soon but I want to have a fresh alternative and Vue seems a good candidate. If I get the opportunity to start a new web app even for the sake of learning I’m gonna go with Vue and just enjoy the ride. 

## Python, Computer Vision, and Machine Learning

Python is on fire at the moment and is one of the big programming languages when it comes to Data Science and Machine Learning, the latter being a topic I’m interested to dig more into. A couple of weeks ago I decided to introduce myself to Computer Vision and I’m enjoying it a lot. So far I’ve used OpenCV and PyTorch for some object detection tasks. The reason I’m getting into this field of computer science besides my interest in learning is that I got a project idea where Computer Vision is indispensable so I’ll dedicate a big chunk of my time to it during 2020.

Besides that, anything that involves Machine Learning will be used more and more as time goes by and getting into this field seems like a safe bet. 

## Blockchain 

Blockchain technology is another topic that I’m very interested to dig into and it’s also something that has been growing lately due to its potential. The main purpose of using blockchain technology is to create decentralized, transparent and secure systems. Its most common use case is cryptocurrency but there are a lot of possibilities that can be addressed with it and each year it’s getting more and more buzz. 2020 will be my introductory year into the Blockchain. 

---

So, that’s my stack for 2020. Feel free to comment, suggest and give any feedback you like. Do you know of cool resources for learning more about any of these topics? Just let me know! 

Thanks for reading!