I am not a programmer. In the past I occasionally coded something for PoCs (proof of concepts) just to show that something could work and how it would look like. Sometimes I code something as a weekend project. Like when I connected a small Seva construction set based robot to Alexa smart speaker to be able to control the robot by voice. Or like when I used Micro:bit board to create a real-world Among Us button.
But once upon time I got an idea of learning a new programming language and its ecosystem – frameworks, libraries, test tools, deployment tools… Just to have my fingers on the pulse of the software development – to see what’s new in the software development industry.
This month I decided to go to Go. Or golang how it is call more often to reduce ambiguity of the original name. Why golang? Because I like strongly typed languages. I am lost in the borderless word of dynamically typed languages like Python. I like when my IDE is able to help me with property and methods names and parameter types. And it works much better with these more strict languages. Like golang.
I also needed a reason why I should learn it. Some motivation. So I made a plan to build up something like smart frame – or smart picture – with e-ink display displaying time, date, Bitcoin price, temperature, simply anything I would like to have on the display. And the software will be written in golang.
Fortunately there is golang library for e-ink display and I did not need to start writing a low-level communication library. Everything went actually quite fast. I ordered Waveshare e-ink display, Raspberry Zero W 2 and a picture frame from rpishop.cz. I 3d-printed a simple stand for the frame, mounted everything together and the hardware part was done.
Then I started coding the application for the frame. At the beginning I had huge plans – I was planning to develop a framework for smart frames, It was planned to be modular and easy to maintain and easy to expand concept, and so on. At the end I and still expanding by very first ugly code with ģlobal variables used to share the values which should be displayed on the screen.
Maybe ugly but stable. The code runs for several weeks and I had no issue with the stability.