Mattermost Logo

Mattermost Developer Blog

Advanced Git with the Free University of Tbilisi Posted on Mar 27, 2020 by Jesse Hallam

On Monday, March 16, 2020, I had the privilege to (virtually) join Shota Gvinepadze and his students at the Free University of Tbilisi and speak about “Advanced Git @ Mattermost” for a portion of their class time. The following are my speaking notes from the session, slightly modified from the original slides for this format. Keep in mind that the command line examples are illustrative of my workflow, and not meant to be run in isolation.

Read More
All About Emojis Posted on Mar 26, 2020 by Harrison Healey

In person, you can easily tell someone’s mood based on their body language and how they speak, but that’s much more difficult with text alone. Emojis are a great way to add tone to a piece of text and also help make text-based conversation feel more casual, relaxed, and fun. Thanks to emojis, we can chat with much more real emotion than you might get by being careful about your word choice or by including just the right number of exclamation marks and periods at the end of a sentence.

Read More
Maintaining Consistency in Codebases with Go vet Posted on Mar 17, 2020 by Jesús Espino

Maintaining success in a large open-source project is one of the key objectives of Mattermost. We have hundreds of contributors and we want to create a project that could serve as a model in the Go community. Having said that, following idiomatic Go principles is the thing that we care most about while maintaining our code consistency. For this specific task, we utilized go vet and with this blog post, I would like to explain how we pushed the limits of this tool by extending it.

Read More
Instrumenting Go code via AST, Part 2 Posted on Mar 15, 2020 by Eli Yukelzon

Welcome! This is the second part of our AST blog post series, expanding on the subject of utilizing Go AST libraries to automate and improve your workflow. In this post I’ll discuss a rather common problem that comes up while working with Go code and the way we’ve solved it by sprinkling a little bit of AST magic dust. Let’s dive in. Problem: A struct with no interface Let’s say you are working on a large code base that was not built with interfaces in mind, meaning, there are structs and methods attached to those structs, but there is no interface describing it.

Read More
Incorporating GolangCI-Lint at Mattermost Posted on Jan 13, 2020
by Agniva De Sarker and Ben Schumacher

At Mattermost, we have traditionally relied on the trusty go vet and gofmt checks for our CI runs. Although it works well, there are a lot of other powerful linters out there which we’re potentially missing out on. Speaking of linters, the first name that inevitably comes up is staticcheck. It’s a powerful metalinter with a whole slew of checks. But simply running staticcheck is not sufficient, because it misses out on other linters which perform a single task, but nevertheless are very powerful.

Read More
On Hermes and Mattermost Posted on Dec 20, 2019 by Miguel Alatzar

With the upgrade to React Native 61 came the prospect of substantially improving performance of our Android app. How? Through the use of Hermes, Facebook’s new JavaScript engine. To say that we were excited is an understatement. And with that excitement came curiosity: how is this new JavaScript engine achieving performance boosts? Let’s first chat a bit about JS engines in general. How does your JavaScript code eventually get executed by the CPU on the machine?

Read More
Onboarding with Mattermost Posted on Dec 20, 2019 by CJ Wild

I recently joined Mattermost as a Remote Software Engineer and while I’ve worked in remote environments before, I was really surprised at how amazing this company is to work with. During my onboarding I discovered that they have really developed a culture built around being remote; one that allowed for me to feel as part of a larger team and always engaged, rather than separated from my peers and working alone.

Read More
KubeCon NA 2019 Posted on Dec 18, 2019 by Gabe Jackson

It wasn’t my first time flying. It also wasn’t the first time I had arrived at the airport early enough to require multiple cups of coffee. As I sat at my gate, however, I did find myself wondering for the first time: had I ever heard the words “Lambda,” “stateful set”, and “yaml” while waiting to board? You see, a bunch of us were coming from all over to attend KubeCon + CloudNativeCon North America 2019.

Read More
Monitoring a Multi-Cluster Environment Using Prometheus Federation and Grafana Posted on Dec 18, 2019 by Stylianos Rigas

Monitoring the state of your clusters is an effective way to discover bottlenecks in your multi-cluster production environment. It is one of the key challenges that development teams are facing and factors such as the team experience as well as the number and distribution of the applications can make things even more complex. Better monitoring can help identify single points of failure. Being able to get information about things like the number of applications running on each node or the CPU and memory performance can help to get closer to zero downtime deployments.

Read More
Localizing Matterpoll Posted on Dec 11, 2019 by Ben Schumacher

Matterpoll is a plugin that allows users to create polls in Mattermost. Since Mattermost is localized in 16 different languages, it’s optimal that Matterpoll is similarly localized. Because we rely on contributors to do the translations, we want to make it easy for them to translate new strings and determine whether already translated strings need to be updated because the “source” text changed. On the other hand, Matterpoll only has two maintainers (@kaakaa and me) and no infrastructure of its own to work with.

Read More