Tom Bihn Daylight Briefcase

Let me introduce the newest member of my bag collection, the Tom Bihn Daylight Briefcase: classic, ultralight, minimalist briefcase for the urban dwellers.

I purchased this briefcase because I wanted to have something that is lightweight yet durable — something I could carry with me in the city. Even though I work remotely and don’t have a daily commute, I still need something to carry for when I decide to work outside or attend meetups and conferences. Because of its weight and construction, this can be also tucked into another big bag — like a traditional Russian doll!

Tom Bihn

A while ago I’ve started to build a tool to make my life easier. It’s called: gomodifytags. It automatically fills the struct tag fields based on the field names. Let me show you an example:

An example usage of gomodifytags used within vim-go

Having a tool like this makes it easy to manage multiple fields of a struct. The tool is also able to add&remove tags, manage tag options (such as omitempty), define the transformation rule (snake_case, camelCase, etc..) and much more. But how does this tool work? What Go packages does it use under the hood? There are so many questions that need to be answered.


My new blog:

I moved back to my own domain ( with a clean and minimalist new design (it might change in the future, so don’t be surprised if you see something else than the screenshot above!).

Some of you might ask why I’ve stopped writing on Medium?

I wrote it on my new blog.

I’ll be posting occasionally updates to my blog from here though. In meanwhile, see you all there 👋

Minaal Daily Bag

It’s time for another backpack review! This time I want to share my experiences and thoughts about using the Minaal Daily Bag. As some of you know, I use a bag extensively before writing down my thoughts on it. Using a bag is highly subjective, so something that applies to me might not apply to you!

First, why did I picked this bag? When I was kinda frustrated by my previous bag, the Goruck GR1, I’ve decided that I need something more lightweight but still able to use for travel and daily usage on my destinations. …

Goruck GR1

I had many messenger bags in the past. When I started to travel more than I’ve imagined, I’ve realized messenger bags were not useful anymore. It was painful to carry all your stuff on a single shoulder with a single strap.

I had to start carry something more comfortable and something that could hold more in a better way. I’m also working remotely from home, so I was not going to use the bag every single day. It should do two things in good ways

  1. Carry enough stuff to the destination
  2. Should be comfortable to wear during the trip and…

A Nel Drip coffee from Chatei Hatoui, Tokyo

I’m a coffee geek. I really love coffee. Every single morning I have the same routine at home. The smell of good coffee is everywhere in our home. I frequently get a lot of questions about how to drink fresh and quality coffee. Because the number of questions is increasing exponentially (kidding) I’ve decided to provide some guidelines.

Photo by

I’ve introduced a new tool called motion in my previous post (I recommend to read it before you continue) and explained new features (such as text-objects) that are implemented on top of it.

Text-objects are great to modify and change the function. But we also might want to move around functions. Suppose there are several function declarations in the current file and you want to jump to them directly? There is a function that starts with “New…” but you don’t remember what it is? Or you quickly want to move to the next/previous function?

With the today’s vim-go release you’ll…

Photo by

Vim users know that they can edit text in a very different way, with what we call as “text objects” or “text motions”. For example words are defined with the character “w” or paragraphs with “p”. Instead of selecting words manually and change them (or delete) you select “words” and operate on them. So you can replace words, delete them, copy them and so on. These actions are called operators in Vim and there are many of them, such as “d” for delete, “c” for change, “y” for yank, etc… How do they work?

For example this simple action below…

One of my new side projects was about a scanner/parser family written in pure Go for the Hashicorp Configuration Language. I had two reasons for it, the first one was to have fun and learn the internals of Go’s own parser family (go/{ast,token,scanner,parser}) and the second one was to have a hclfmt command, just like gofmt, which would format an HCL file based on predefined set of rules. (The original HCL parser was generated with Yacc. It works totally fine, but it was not as flexible as compared to an handwritten parser)

I’ve successfully finished this project and announced it…

The art of tokenizing (Photo: Sergei Zolkin)

I’ve decided to create a lexer (a.k.a scanner) for an upcoming hobby project. Before creating the lexer, I wanted to see how a lexer can be implemented in Go. Also important for me was how to implement it with an idiomatic Go usage. During my research I’ve found that in Go land most of the lexers out there are written in two forms (in terms of API usage).

Fatih Arslan

Software Engineer. Gopher and Coffee geek. Author of vim-go. Look for my open source projects at

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store