I often found myself with a lack of motivation when it comes to working on a project. But all that changed after I showed GoPlantUML to the great people at Reddit. This post is about how an open-source project can spark a new passion for work and how I am enjoying every minute of it.
GoPlantUML is open-source software that I wrote as a training exercise. I stumbled by accident with the ast library in Golang, and I discovered that I could quickly parse Golang code. Immediately, I realized I could use it to create a diagram of my projects using PlantUML, and thus GoPlantUML was born.
If you agree that nothing paints a better picture of your software project like a well maintained UML class diagram, then this post is for you.
Motivation
I have been fascinated with Golang because of the versatility of the language. I wanted to take advantage of the Golang parser and a great software called PlantUML (http://plantuml.com/) to create a program that will translate my Golang code into a neat class diagram.
One of the most exciting aspects of the software development process is experiencing the steps leading to a pleasing solution to your problem. That moment when, after some time of thoroughly brainstorming, everything falls into place. I had such a moment today, and I would like to share my story.
The Problem
This morning I was faced with a simple dilemma. I needed to perform a GET request containing a large payload to the server, but I didn’t want to show it in the URL. The reason for the GET request is that I wanted to give the user the ability to download a file with a click of a button. The purpose of the large payload, the requirements for this file. You see, this file is a zip archive that the service will dynamically construct and deliver to the user. The issue is it can potentially contain thousands of files inside, and I didn’t want to clutter the URL with this payload.
That is when it hit me! I have been using Redis for some time now, and I thought this would be a great use of it. With that in mind, I set up to develop the following idea.