The past few months have been quite an exciting adventure for me in software development. I experienced new technologies at different levels of the tech stack.
In application development, I learned Go. Although really fascinating, I struggled a bit with the tooling provided (
gopls is still at version 0.5.2 as of right now). So I rely on the other CLI tools that Go provides because imports don’t work as neatly for me. I’m sure it will improve over time.
Since I started working on an Ubuntu machine, I moved completely to Visual Code as my IDE. I still the highly reliable IDEA, but I wanted to use VSCode because most of the developers I work with closely use VSCode and so I wanted to master the IDE so that I can also help speed up their development (e.g. writing
tasks.json so that our dev workflow can be unified).
For API development, I learned to use GraphQL, along with the benefits of using Hasura as a GraphQL interface for PostgreSQL databases. This was really impressive, and is the highlight of this post. Make sure to check out Hasura.
To spin those applications up, I learned containerized development: Docker containers, Kubernetes, Helm charts. Of course, these are still things I am continuously studying. This also explains why I moved to dual booting my desktop PC with Ubuntu.
For the applications I’ve been building I got to apply the concepts of hexagonal architecture. I’m still acquiring more experience in this area, but so far I am enjoying the benefits of the decoupled nature of the code.
Dev Ops and Infrastructure
I’ve been able to use online logging services which is interesting.
I’ve also spent a lot more time on AWS lately, learning to configure containerized deployments on instances. I tinkered around with AWS CodeCommit (Git repo mirrored/pushed from GitLab) and AWS CodePipeline for continuous delivery on my EC2 instances.
Neat thing I also learned was tagging my AWS resources with a
project tag, so that I can see through the AWS Cost Explorer how much a specific project had incurred.
Majority of the things I’ve been reading and studying now revolve around microservices: its challenges, nightmare scenarios, and how other people have addressed those problems. I’ve started watching YouTube videos about it only recently, and now I am starting to read formal research papers about it (published 2019, 2020).
It’s actually super enjoyable to read research papers that are actually highly relevant in my work, which is a far cry from my experience in 2016 to 2018: doing frontend application development with research in natural language processing.
I look forward to revisiting natural language processing later on, but for now, microservices will be the focus of my study.