… If you know how to use them.

Today, I partially broke Fishbrain’s staging environment. While that largely is the purpose of our staging setup, breaking it isn’t entirely ideal. Doing so might prevent your colleagues from doing their work. During debugging this unexpected situation, it quickly became clear that the issue was because of how we were using GraphQL fragments when loading our posts and our feed.

This made me post this meme on our Slack. It also inspired this blog post, so that we can share some of our learnings.


Fragments are a part of the GraphQL specification that allows you as a developer to break…

Like many, many other companies, Fishbrain decided to close down the office two weeks ago. This was done as a response to the spreading SARS-CoV-2 virus and the COVID-19 disease that comes with it. While some of us are used to the remote lifestyle since before, many are new to this.

Photo by Sebastian Pena Lambarri on Unsplash

In this post, I thought I’d share what my team has been doing to get work done as smooth as possible. You might not find anything here very revolutionizing, I mostly wrote this post to share it with friends and teammates.

Remote meetings

Relying 100% on asynchronous communication through Slack, Github…

This is a story about one of those times you got to use some of that math they teach you in school.

Classic fishing location. Photo by Juan Davila on Unsplash

Recently here at Fishbrain, our team set out to improve how our users’ followings got reflected in their feed. We wanted to generate a feed that feels relevant and ensure that each item in the feed is connected to the their choices and interest.

As fishing is a very location focused sport, one of the sources we wanted to add to the feed was to use the users’ favorite fishing areas. Over the years, Fishbrain as a whole…

Spoiler: Multiple databases out-of-the box are amazing.

A Rails version upgrade classic: Lots of repeated deprecation warnings.
A Rails version upgrade classic: Lots of repeated deprecation warnings.
A Rails version upgrade classic: lots of repeated deprecation warnings.

In the backend team at Fishbrain, we care a lot about providing a stable and safe experience when handling our clients’ requests. A natural choice for us a few years back, when we chose to build what is now the core service in our backend setup, was therefore Ruby on Rails. Already then it had gotten less popular, and was losing usage to other languages and frameworks. What, however, we saw was a great opportunity in building a solid (or SOLID?) application, backed by easy-to-write and easy-to-run automated tests. And this is where Ruby and Rails thrives. …

Staying online and staying sane.

Photo by Matthew T Rader on Unsplash

At Fishbrain, we have for little over a year relied on an on-call rotation in order to ensure that Fishbrain is constantly online. Having gone from previously running a tight ship and relying on server operations contractors, to managing our infrastructure ourselves with an in-house rotation, we’ve learnt a lot. This post is about those learnings, what we think is worth sharing and how to gradually start rolling out your on call rotation. It was in large part inspired by Molly Struve’s post about making on-call not suck.

Fishbrain’s Engineering team has grown quite significantly over the past year. From…

Removing friction from pull requests

At Fishbrain, code reviewing through pull requests is one of our backend team’s core pillars. It allows us to share knowledge, learn from others, and correct mistakes at an early stage. We never ship a feature without it going through code review first.

As you might know and understand, this is rather time-consuming. While we are convinced it is the right thing to do, being stuck as a reviewer or review target is just the worst on those certain days. This is why we have carefully developed our code reviewing process, making sure it runs as smooth as possible with…

Fishbrain ground control. Photo: NASA via Wikimedia

At Fishbrain, we have known for a while that our old admin panel was outdated. It was built using Angular.js and done so in a solid way. However, over time it became a hassle to maintain. Dependencies were getting out of date and incompatible with each other and the technologies we decided to use back then were getting out of fashion. Therefore we set out to create a new admin dashboard for our community team. This time our goal was to find, build or invent a tool that enabled fast development.

One of the things we learned throughout the now…

How to (not) lose commits & alienate colleagues

You and your Git friend.

Git is an amazing version control system and the obvious choice for a lot of software teams around the world. Fishbrain is no exception. However, as your team grows, so does the count of simultaneous features in development. The need to stay up to date with the remote repository increases and helps you avoid nasty conflicts.

Git provides two options for doing this: merge and rebase. Wether to use one or the other is a hot topic on its own, but we will not dig further into it. At Fishbrain we mostly use rebase and as this option rewrites Git…

Klas Eskilson

Software developer at Billogram. Big fan of the outdoors.

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