Started looking at Golang about a year ago, reading through a few tutorials and writing some script sized programs. At the time I thought I would use Golang for specific sysadmin type tasks. It didn’t really pan out as the time to completion vs bash or python is almost always much lower. Scripting in bash and pythons means you can always fix bugs with just a text editor with no compiling – dependency management is pretty simple, on all linux distros. So I didn’t write anything in Golang for almost a year and forgot most of it! I have an idea for a business tool enabling mapping and execution of organisational objectives, strategy and operations.
Learning with a Project
The only way to learn a programming language is to use it on a project (or many). So I am building a web application that requires:
- Forms for input
- Navigation/Searching/SIngle page
- Persistent data
- Security controls such as csrf tokens
Previously I added a bunch of plugins to vim and managed a custom and complex vimrc file. I found that having to manage all of that on numerous workstations was too time expensive. So – in an effort for workstation portability and ease of management, I am trying the GoLand ide by JetBrains. I will decide after my 30 day trial whether or not to pay the 200 usd per year price tag. If it means I write code more often (not avoiding the environment setup, maintenance and portability issues) it may well be worth it. Ended up going with Microsoft Visual Code which is on linux, macos and windows, is opensource, free and quick and easy to set up.
After thinking about what I just wrote above – it is nonsense. I should just take 30 minutes to write down how to set up a decent Golang environment. Started but abandoned: https://mwclearning.com/?p=1858
- Relational database backend (postgres)
- Application code (Golang)
- Framework (gin / echo)
- Requirement tracking / Agile board (taskworld)
- Source code management (gitlab.com – free private repos)
- Integrate Development Environment (Microsoft Visual Code)
Tutorials based on what I features are needed to meet requirements.