August 30, 2018

Marshal YAML fields into map[string]string

Recently we moved some of our hard-coded web-app configuration values into a YAML file. Arguing aside (YAML vs TOML vs …), YAML does a great job being easily readable by us - humans. By default, the yaml library marshals maps into map[string]interface{}, requiring a small change to get it marshaled into map[string]string. Read more

August 16, 2018

Twisk - Golang RPC starter kit

Twisk, an acronym for Twirp starter kit, helps you get started with a simple Golang RPC framework with protobuf service definitions - Twirp. It features everything from authorization, implemented CRUD on a single entity, logging, configuration and more. Using minimal dependencies, idiomatic code and best practices, it helps you get started with Golang backend API development - both JSON and Protobuf. Read more

June 10, 2018

Serve SwaggerUI within your Golang application

I’ve previously written an Article on generating OpenAPI (Swagger) spec automatically within Golang. It’s the most popular article on this blog since lots of developers are searching for it. In it, I mentioned that in order to serve the swagger.json with SwaggerUI, a Docker instance is required that will serve SwaggerUI. There is an easier way to implement it, and this article will demonstrate how to do it with net/http, Gin and Echo. Read more

June 4, 2018

Switched from Mac to Ubuntu

After being a Mac user for about a year, I decided to switch to GNU/Linux or to be more precise Ubuntu, for plenty of reasons. After few weeks of researching what laptop to buy, I asked for a Thinkpad X1 Carbon 5th Gen from my company. Besides writing a software review,this articles include hardware comparison between the Thinkpad and MacBookPro (ntb 2016) as well. Read more

May 26, 2018

Working with Go Web Frameworks - Gin and Echo

Recently I spent a lot of time working with both Gin and Echo. Primarily I wrote an open source restful starter kit named Gorsk (GitHub/Blog post). Besides Gorsk, I’m working on two web apps utilizing Gin/Echo. Even though the reasons for (not) using Golang’s ‘Web frameworks’ are mentioned quite often, I have built my own opinion on these. Read more

April 16, 2018

Removing comments

A decade ago I was happy if there were comments on my blog. Ten years later, having a full-time job, family and lots of other responsibilities I have no feeling about them. I feel good helping and informing others, but I feel comments on this blog aren’t benefiting much in this area (helping others). Additionally, I prefer the cleaner look and shorter loading times of the website. Therefore, comments are no more. Read more

April 4, 2018

Automate Chrome with Golang and ChromeDP

Until recently I never knew how simple it could be to automate a task in the browser. A client wanted me to build simple automation script for Chrome - it would log into his Drupal website, open Bootstrap settings and change cdn’s to the one found in config file. Sounded bit hard at the beginning, but after playing an hour with chromedp it became quite trivial. Example repo is available on GitHub. Read more

March 26, 2018

Golang restful starter kit - GORSK

There are many ways to write a (RESTful) backend in Go. Most of the available tutorials are way too simple, with all the presented content fitting into a single file (or at most two-three). More complex examples are quite rare, and even most of them miss lots of things for the sake of reducing complexity. That’s one of the reasons I wrote Gorsk - to have a fully functional example of a RESTful backend (in Golang) utilizing best practices, idiomatic code, and minimal dependencies. Read more

February 16, 2018

Convert txt files to csv with Golang

Recently I found a client that needed to convert a list of txt files into csv - and he wanted the solution to be written in Go. Looking at the source files, I’m assuming the text files are generated by a script or a tool that extracts the data from somewhere. The good thing is that the provided files were very simple, so they are perfect for a tutorial like this. Read more

February 13, 2018

After being completely honest, Upwork banned my account for 'being dishonest'

There are plenty of articles online despising Upwork. For those that don’t know, Upwork is ’the world’s largest online workplace where savvy businesses and professional freelancers go to work!’ Once I felt comfortable writing Go - I decided I could take some small side gigs to make connections and earn some extra cash. For reasons still unclear to me, that didn’t last for long. Read more

February 4, 2018

Elasticsearch query examples with Golang

I’ve heard of Elasticsearch quite a while ago but started using around 6-7 months ago. It’s a very fine piece of technology, allowing you to create blazingly fast queries with very complex structure. Comming from a SQL background, I spent quality time reading through the official docs to write even the most basic queries. The purpose of this article is to save you that time and get you straight to work. Read more

January 4, 2018

Create Golang API documentation with SwaggerUI

Having a documentation for you your APIs is more useful than you might be thinking. Even if you don’t expose your APIs publicly, having the docs for your frontend or mobile team is way easier than sending them screenshots/snippets or using a paid product like Postman/Insomnia (premium version with syncing). With SwaggerUI, you can get a well-designed documentation for all your APIs automatically. When moving to Go I had issues setting it up, due to lacking documentation/tutorials, so I decided to write one. Read more

December 15, 2017

Fixing corrupt archive in Golang

Recently I had an issue sending JSON via API to our analytics tool. After few days of troubleshooting, I realized what was the problem during the weekend when the file being uploaded was of lower size due to less amount of data during weekends. Obviously, I decided to zip its contents, afterward facing a problem with a corrupted archive. Read more

December 9, 2017

How to reduce JSON file size

When I started writing this article, it had a quite different title. To be precise: “Uploading large JSON files to Zoho Reports.” But, reducing JSON size might be useful in so many areas, I decided not to limit it to Zoho and changed the title. Shortly, I’ll explain how I managed to reduce and split JSON files of several gigabytes to the desired size - size limited by the provided API, with help of few tools. Read more

December 1, 2017

Glice - Golang dependency and license checker

Did you ever want to check licenses of third-party dependencies in your Go project? Me neither. However, if you want to do something like that, I made a simple tool written in Go - glice. By running it in your Go project, it gets project’s dependencies (with a possibility of recursive dependencies), then for third-party ones gets the license from GitHub API. Read more

2024 © Emir Ribic - Some rights reserved; please attribute properly and link back. Code snippets are MIT Licensed

Powered by Hugo & Kiss.