Marcus Olsson

Learn

I'm Joining AssemblyAI

Blog  · 
A brief overview of my DevRel journey so far, and why I’m excited to join AssemblyAI’s amazing team of Developer Educators.
Career

Notion database views in Obsidian Projects plugin

Live Chat  ·  Nicole van der Hoeven  ·    ·  Watch →
Have you ever wanted rotating Notion database views in Obsidian? Marcus Olsson’s Obsidian Projects plugin does exactly that, letting you create Table, Board, Calendar, and Gallery views for the same notes in Obsidian, just like in Notion! Join us as Marcus shows us how this awesome new plugin works and how it can be used to display the same data in different ways.
Obsidian Plugins

Announcing Obsidian Projects

Blog  · 
An Obsidian plugin for plain text project planning.
Obsidian Open Source Productivity

Build your first Obsidian plugin

Webinar  ·  Obsidian  ·    ·  Watch →
A series of tutorials where I walk through different aspects of plugin development for Obsidian.
Obsidian Plugins TypeScript

Super-charging Grafana with plugins

Talk  ·  devops Amsterdam Meetup  ·    ·  Watch →
Grafana Plugins

Guiding panel users with a wizard

Forum post  ·  Grafana Labs  · 
In Data frame design: Basics, I stressed the importance to document the data response that your panel plugin expects from the data source. While you can document it in your README, that would mean the user needs to switch to another tab to understand how to use your panel. In this post, I’ll share a different approach, that lets the user configure the query without leaving Grafana.
Grafana Plugins TypeScript

Data frame design: Basics

Forum post  ·  Grafana Labs  · 
Data sources translate data from external services and APIs into a format that panels can understand. In other words, data sources produce data and panels consume data. Generally, data sources don’t know how the data they produce will be presented. While they can suggest a preferred type of visualization, the user is ultimately free to visualize the data in any way they want. In practice, this means that the panel needs the data source to produce the data it needs to do its job.
Grafana Plugins

Extend your Grafana experience through plugins

Talk  ·  Grafana Labs  ·    ·  Watch →
Grafana Plugins

How to use template variables in your data source

Forum post  ·  Grafana Labs  · 
Template variables enable users to create dashboards that change dynamically based on user input. Since variables have been around in Grafana for a long time, many users expect them to be supported for any data sources they install. In this post, I’ll share some tips on how you can use template variables in your data source plugin.
Grafana Plugins TypeScript

How to make user-configurable HTTP requests from your data source plugin

Forum post  ·  Grafana Labs  · 
If your data source retrieves data from an official, well-defined API, you can simplify your data source configuration by only asking for the relevant data, such as the API token. However, if the user should be able to access data from any given HTTP endpoint, you probably want to let them configure things like authentication headers and query parameters to fit their needs. In this post, I’ll explain how you can build a configurable HTTP-based backend data source.
Grafana Plugins TypeScript Go

How to instrument your backend data source

Forum post  ·  Grafana Labs  · 
In my previous post on how to display custom stats for your data source queries, I explained how you can return metrics about the query back to the user. This can be useful to dashboard authors who want to troubleshoot or optimize their queries. As an administrator however, you might want to understand how the data source performs over time, across dashboards. In this post, I’ll show you how you can instrument your backend data source using Prometheus.
Grafana Plugins Go

How to configure dimensions for your panel plugin

Forum post  ·  Grafana Labs  · 
In this post, I want to share a pattern that I’m using for almost all my panel plugins. I call it panel dimensions.
Grafana Plugins TypeScript

How to display custom stats for your data source queries

Forum post  ·  Grafana Labs  · 
The Query inspector in Grafana can be helpful when you’re trying to figure out why your query is failing, or why it’s taking too long to return a result. While Grafana displays some basic information about your query by default, in this post you’ll learn how to add your own stats for you query.
Grafana Plugins Go

How to add a resource handler for your data source

Forum post  ·  Grafana Labs  · 
The primary way for a data source to retrieve data is through the query method. But sometimes your data source needs to request auxiliary data on demand, for example to offer auto-completion inside the data source’s query editor. In this post, I want to show you how to add a resource handler to your data source. By adding a resource handler to your backend plugin, you can extend the Grafana HTTP API with your own data source-specific routes.
Grafana Plugins Go

How to migrate from BackendSrv.datasourceRequest() to BackendSrv.fetch()

Forum post  ·  Grafana Labs  · 
If you’re building a data source plugin, chances are you want to make HTTP requests from your TypeScript code to a HTTP API somewhere. In the past, the preferred way to make an HTTP request from your plugin was to use the BackendSrv.datasourceRequest(), which has been deprecated in favor of BackendSrv.fetch().
Grafana Plugins TypeScript

How I use Docker for plugin development

Forum post  ·  Grafana Labs  · 
I thought I’d share how I use Docker for developing plugins. Docker makes it really easy for me to test my plugin against multiple versions of Grafana. For example, to make sure that the plugin still works with the earliest supported version of Grafana (as defined by grafanaDependency in plugin.json).
Grafana Plugins

How to subscribe to Grafana application events

Forum post  ·  Grafana Labs  · 
If you’re building a panel plugin, Grafana already provides the data you need to configure and render your panel. If not, you can retrieve the information you need from any of the runtime services, like BackendSrv and TemplateSrv. In some cases though, you want your plugin to react to changes outside of your plugin. For example, when the user hovers their cursor over data in another panel. In this post, you’ll learn how to make your plugin react to events in Grafana.
Grafana Plugins TypeScript

How I set and track goals using Obsidian

Blog  · 
Learn how to manage your goals in Obsidian using OKRs and periodic notes.
Obsidian Note-taking Productivity

Grafana Plugins Showcase

Talk  ·  Grafana Community Call  ·    ·  Watch →
Grafana Plugins

Creating and using plugins for k6 and Grafana

Live Chat  ·  k6 Office Hours  ·    ·  Watch →
Grafana Plugins

Getting started with Grafana dashboard design

Webinar  ·  Grafana Labs  ·    ·  Watch →
Have you finished experimenting with your first dashboard and are looking to build your first production dashboard? Or perhaps you’re looking to finally give your existing dashboards that well-deserved makeover? In this webinar, you’ll learn how to design dashboards that your users will want to come back to. You’ll learn to define the audience and the context of your dashboard to create dashboards with purpose. Tune in to learn more about:
Grafana

Getting started with Grafana 8

Webinar  ·  Grafana Labs  ·    ·  Watch →
Grafana 8.0 is here! In this webinar, Marcus will demo all the highlights of the latest major release: new and updated visualizations and themes, and data source improvements. He will walk you through how to get started using Grafana 8 and the Grafana 8 user interface while showing how to set up monitoring for a web service that uses Prometheus and Loki to store metrics and logs. Discover how to connect, explore, and correlate data in Grafana to gain valuable insights into your application.
Grafana

6 tips for improving your Grafana plugin before you publish

Blog  ·  Grafana Labs  · 
Are you putting the final touches on your plugin before you submit it to the Grafana plugin page? In this article, I’ll share a few tips for how to add that extra polish to your plugins. This article assumes that you already have some knowledge of building plugins for Grafana. If you’re looking to build your first plugin, start by following one of our plugin tutorials.
Grafana

Build IT Better: DevOps

Live Chat  ·  This Dot Media  ·    ·  Watch →
In this episode, we talk to Marus Olsson, Developer Advocate at Grafana Labs, about Grafana’s open-source tool for observability and monitoring.
Grafana

Introduction to Grafana

Live Chat  ·  Rawkode Academy  ·    ·  Watch →
Grafana is open source visualization and analytics software. It allows you to query, visualize, alert on, and explore your metrics no matter where they are stored. In plain English, it provides you with tools to turn your time-series database (TSDB) data into beautiful graphs and visualizations.
Grafana

Monitoring with Grafana

Workshop  ·  DENOG12  · 
Grafana

Learn Grafana: Share query results between panels to reduce load time

Blog  ·  Grafana Labs  · 
As you add more panels to your dashboard, more requests are being made, potentially leading to your dashboard taking longer to load. While you can limit the data requested in each query, one of the best ways to reduce the loading time is to reduce the number of requests being made to the data source. Grafana makes a data source query for each panel in your dashboard, even if those queries are identical.
Grafana

Beginner-friendly issues

Blog  · 
Learn how to write beginner-friendly issues for your open-source project.
Open Source

Popular community plugins that can improve your Grafana dashboards

Blog  ·  Grafana Labs  · 
One thing we believe at Grafana Labs is that your data should be presented in a way that makes sense to you. Since the release of Grafana v7.0, we’ve seen a lot more developers taking advantage of the new plugins platform, which helps them build high-quality custom plugins faster than ever. Not only does this allow them to create their own custom visualizations and data source integrations—taking the Grafana experience to the next-level—but by sharing them with the community, they’re able to help others do the same.
Grafana Plugins

All about plugins: Building your first panel plugin

Webinar  ·  Grafana Labs  ·    ·  Watch →
Plugins amplify what you can do with Grafana. By creating your own custom visualizations and data source integrations you can bring in your own data and present it in a way that makes sense for you. In this webinar, Solutions Engineer Christine Wang and Developer Advocate Marcus Olsson will show you how you can build a panel plugin to create custom visualizations for Grafana. During this webinar, you will learn about:
Grafana TypeScript

Running Chaos Engineering experiments with Gremlin and Grafana

Webinar  ·  Grafana Labs  ·    ·  Watch →
Complex systems fail in complex and unexpected ways. Monitoring is critical to detect and resolve those incidents when they happen. But how do you know your monitoring and alerting are working correctly? Chaos Engineering allows you to validate your monitoring, test your systems with controlled failure, and practice your incident response processes. In this session, we’ll cover how to set up Grafana to quickly identify potential threats and how to get started with Chaos Engineering with Gremlin.
Grafana

Getting started with Grafana 7

Webinar  ·  Grafana Labs  ·    ·  Watch →
In this webinar, Marcus will show you how to get started using Grafana. He’ll walk you through the Grafana user interface while showing how to set up monitoring for a web service that uses Prometheus and Loki to store metrics and logs. You’ll learn how to connect, explore, and correlate data in Grafana to gain valuable insights into your application. This webinar requires no previous experience with Grafana.
Grafana

Learn Grafana: How to build a scatter plot plugin in Grafana 7.0

Blog  ·  Grafana Labs  · 
There are a lot of great things about Grafana 7.0, but one of my favorite features is the new React-based plugin platform, which has a set of new APIs and design system to help you build your own plugin. The process is easier and faster than ever. In this blog post, I’ll show how you can create a panel plugin for visualizing scatter plots.
Grafana Plugins TypeScript Data Visualization

Plugin showcase: The hourly heatmap panel, built on Grafana's new plugin platform

Blog  ·  Grafana Labs  · 
Since Petr Slavotinek created the Carpet plot plugin in 2017, it’s been one of the most popular community plugins for Grafana. Unfortunately, even though the Carpet plot plugin continues to be useful to many users, it’s no longer being maintained. Grafana 7.0 introduced a brand new React-based platform, along with a set of improved APIs for building plugins. Since I knew some React from previous projects, I wrote my first Grafana plugin that would adapt the original Carpet plot to the new plugin platform.
Grafana Plugins Data Visualization

Learn Grafana: How to automatically repeat rows and panels in dynamic dashboards

Blog  ·  Grafana Labs  · 
In this blog post — which is part of our Learn Grafana series that covers how to build effective and efficient dashboards — we’ll look at how you can dynamically add and remove entire panels through a feature called repeated panels.
Grafana

WFH tips: Slack hacks that will make you more productive

Blog  ·  Grafana Labs  · 
As the work-from-home culture continues to reshape many people’s lives, the team at Grafana Labs has been sharing tips, tricks, and hacks we have learned as a remote-first company. One tool that has been vital to our internal communications and team building is Slack. If you’ve been using Slack in an office setting, you might find using Slack in a remote setting can be a new experience. Here are some of the best practices we use on Slack for seamless communication and to actually get work done.
Productivity

Learn Grafana: How to use dual axis graphs

Blog  ·  Grafana Labs  · 
You’re done setting up your first graph panels in Grafana. You want to do more, look around the visualization settings, and discover the settings for the X and Y axes. You stumble over the configuration for a “Right Y” axis. You ask yourself, “Why on earth would I need another Y axis?”
Grafana Data Visualization

Docs-as-code for OSS

Talk  ·  FOSS Sthlm  · 
How do you document a non-trivial open source project? How do you make sure that your docs are consistent, even with several authors around the world, many who don’t have English as their native language? Marcus shares some of his experiences from the Grafana project.
Open Source Technical Writing

Pro Tips: Dashboard Navigation Using Links

Blog  ·  Grafana Labs  · 
Great dashboards answer a limited set of related questions. If you try to answer too many questions in a single dashboard, it can become overly complex. As a consequence, a single dashboard often can’t tell the whole story. So you end up navigating between several, and it can be quite inefficient to search for a particular dashboard every time you need it.
Grafana

Docs-as-code for OSS

Talk  ·  Write the Docs Stockholm  · 
How do you document a non-trivial open source project? How do you make sure that your docs are consistent, even with several authors around the world, many who don’t have English as their native language? Marcus shares some of his experiences from the Grafana project.
Open Source Technical Writing

Fearless Software Delivery

Talk  ·  DevOpsDays Stockholm 2019  · 
Fear is the enemy of innovation and creative experimentation. Yet so many developers feel anxious when they’re about to release their feature to production. We’ll look at how to make your team fearless by increasing the chance of getting it right, and by reducing the cost for when you get it wrong.
DevOps

Fearless Software Delivery

Talk  ·  TechWorld Summit, Stockholm 2019  · 
Fear is the enemy of innovation and creative experimentation. Yet so many developers feel anxious when they’re about to release their feature to production. We’ll look at how to make your team fearless by increasing the chance of getting it right, and by reducing the cost for when you get it wrong.
DevOps

Serverless Go on Google Cloud Platform

Talk  ·  Go Stockholm Meetup  · 
DevOps

Testing techniques in Go

Talk  ·  Go West Meetup  · 
Golang Testing

Pull-based deployments

Talk  ·  Google Cloud Summit Stockholm  · 
DevOps

Testing techniques in Go

Talk  ·  Go Stockholm Meetup  · 
Golang Testing

Coverage Cravings - How to test effectively in Go

Talk  ·  Go Malmö Meetup  · 
Go Testing

How we started orchestrating our workflows with Apache Airflow

Talk  ·  Google Cloud Platform Meetup  · 
We will showcase how we harmonised and automatised some of the processes and routines at Bonnier Broadcasting with Apache Airflow and the Google Cloud Platform.
Data Engineering

Introduction to Go

Workshop  ·  Eventbrite  · 
This meetup will introduce you to Go in the form of a code-along workshop. We’ll help you get your development environment set up and walk you through the language through talks mixed with exercises. If you’ve been thinking about learning Go, this is a perfect chance to get started!
Go

Drawing sticker-friendly gophers

Talk  ·  Go Stockholm Meetup  · 
Go

Introduction to Go

Workshop  ·  Eventbrite  · 
Go

Adding context and options to your Go client package

Blog  · 
More tips and tricks for building a Go client package.
Go

What's coming in Go 1.8

Talk  ·  Go Stockholm Meetup  · 
Go

Notes on my GolangUK 2016 talk

Blog  · 
My response to some of the questions I got after my talk in London.
DDD Go

Building an enterprise service in Go

Talk  ·  Golang UK, London 2016  ·    ·  Watch →
Go has been widely successful for creating tools and infrastructure, but the simplicity of the language also makes for an excellent fit for implementing core business applications. We will look at a few patterns for domain objects and code organization and hopefully we’ll take some additional steps towards Go in the modern enterprise. During this talk we will look at a sample application that demonstrates how a core domain could be implemented in Go.
Go DDD

Introduction to Go kit

Talk  ·  Go Stockholm Meetup  · 
Go

Domain Driven Design in Go: Part 3

Blog  ·  Citerus  · 
Up until now, we have only looked at one service in isolation, but this is seldom the case in a service-oriented architecture. For the last post in this blog series on Domain Driven Design in Go we will have a look at how we interact with other services. In particular, we will have a look at two concepts that help us reason about these interactions: application services and bounded contexts.
DDD Go

Writing a Go client for your RESTful API

Blog  · 
Learn how to build a Go client for your REST API.
Go

Domain Driven Design in Go: Part 2

Blog  ·  Citerus  · 
In my previous post I announced a project I have been tinkering with lately; porting an existing DDD sample application to Go. I elaborated a bit about its background and the general structure of the application. In this post we are going to have a look at some of the implementation aspects that I have encountered so far.
DDD Go

Domain Driven Design in Go: Part 1

Blog  ·  Citerus  · 
In 2008, Citerus developed a Java sample application in close collaboration with Eric Evans, based on the examples in his book. The purpose was to showcase the concepts from DDD in a real-world application. Since then, the application has been ported to other languages such as C# and Ruby. Of course, as a DDD practitioner and a Go developer I thought it might be a fun exercise to try porting it to Go.
DDD Go

An eventful world

Talk  ·  Javaforum Göteborg  · 
We live in an asynchronous event-based distributed system called nature. Yet, we are constantly and furiously evolving at scale. How did we ever manage to get this far without sharing mind and body with the rest of humanity? Through ages of communicating with other processes we have found ways of making progress in a world with generally unreliable, misbehaving people. Luckily for us, one human failing does not bring down humanity. How can we learn from the world we live in, in order to design cohesive, scalable and fault tolerant services? In his talk, Marcus will explore real world analogies to the challenges we face in distributed systems and how they can help us find and to reason about bounded contexts and communication between services.
Distributed Systems

An eventful world

Talk  ·  µCon Stockholm 2015  · 
In his talk, Marcus will explore real world analogies to the challenges we face in distributed systems and how they can help us find and to reason about bounded contexts and communication between services.
Distributed Systems

Utforska affären med Event Storming

Talk  ·  Citerus  · 
Upplever du att det finns ett glapp mellan de som förstår verksamheten och de som utvecklar mjukvaran? Med övningen Event Storming kan ni utforska er affär, underlätta dialogen mellan de inblandade och samtidigt förbättra kvaliteten på er mjukvara. Citerus Marcus Olsson berättar hur ni kan utforska och visualisera affärsflödet med hjälp av denna övning. Välkomna!
DDD

Events and explosions in a distributed system

Blog  · 
Why transitions are so much more interesting than the state itself.
Distributed Systems

Circuit breaking using hystrix-go

Blog  · 
Learn how to add circuit breakers to your Go services.
Go Distributed Systems

The Go programming language

Talk  ·  Google Technology User Group  · 
Go

Fånga affären med CQRS och Event Sourcing

Talk  ·  Umeå Java User Group  · 
CQRS och Event Sourcing hjälper oss att skapa en design som är testbar, förändringstålig och enkel att förstå. Med små medel kan vi utveckla system som inte bara stödjer affären utan även öppnar upp för nya affärsmöjligheter. Presentationen kommer blanda teori med exempel ur vår exempelapplikation för att se hur teorin fungerar i praktiken. Koden finns tillgänglig på github (http://github.com/citerus/bookstore-cqrs-example) och om intresse finns så uppmuntras det att titta på applikationen i förväg och följ med under presentationen.
DDD

Domain Driven Design in Go

Talk  ·  Go Stockholm Meetup  · 
Go DDD

Event Storming – ett effektivt sätt att utforska affärsprocesser

Blog  ·  Citerus  · 
Upplever du att det finns ett glapp mellan de som förstår verksamheten och de som utvecklar mjukvaran? Genom en enkel övning kan ni utforska er affär, underlätta dialogen mellan de inblandade och samtidigt förbättra kvaliteten på er mjukvara.
DDD

Thoughts on DDD in Go

Blog  · 
Implementing Clean Architecture and DDD building blocks in Go.
DDD Go