RSSAmplifier

Blog

Simon Emms

Software Engineer, Technical Leader, Solutions Designer in Telford, UK

simonemms.comRSS feed ↗15 posts

Latest posts

Zigflow: The Missing Temporal DSL

TL;DR : Zigflow lets you write Temporal workflows in YAML, so you can focus on what happens instead of how to make it reliable. Temporal is one of those tools that feels like a superpower once it clicks. Durable workflows, automatic retries and crash recovery baked in. But getting there can feel heavy. Since I joined Temporal last April, I've really seen first-hand how it helps engineers make…

When "The Best" isn't good enough

I am a beekeeper. This won't be of much surprise to anyone who's spent any time with me, or who follows @MrSimonEmms on the Information Superhighway . I'll bore for England on the subject of beekeeping. One thing beekeepers often say to each other is: Ask a beekeeper a question and get two answers A question that might seem simple, such as "what's the best way of raising a new queen?", will come…

Self-Hosted is dead - long live Self-Hosted

Gitpod may have deprecated support for self-hosted, but that's no reason to let it die. I've created a Gitpod Self-Hosted community installation repository to fly the flag for those of us who want and need self-hosted. Regular readers will know that I worked at Gitpod until a couple of weeks ago . Whilst I was there, I provided the technical leadership on the self-hosted offering. I planned and…

I am an ex-Podder

Hey Simon, I'm sorry to be sending this. We've made the hard decision to reduce the size of the Gitpod team and you are affected. That was the Slack message I woke up to on the morning of Tuesday 24th January 2023 from our CTO and my time with Gitpod was over, along with 20 other colleagues and friends . So, guess it's time to find something else then. One of the most recurring questions I've had…

Using a non-Ubuntu base image in Gitpod

About 3 weeks ago, the technical lead of one of Gitpod's self-hosted customers messaged me saying: Hey Simon. I know we have to use Ubuntu for our images, but one of our teams uses a testing framework that only runs on CentOS. Please help. What had happened was they had conflated two facts about Gitpod: when running a Gitpod installation, you must run Ubuntu on your Kubernetes nodes the Gitpod…

Building a RESTful API With Functions

There is an accompanying GitHub registry with a working demo Serverless functions are a great way of building a scalable application. They're small, independent, fast-to-build and infinitely scalable. If you need to build an application with just a couple of endpoints, they will work great. When it comes to building a big application or one that you want to expose as a public service, serverless…

Setting Terraform Service Principal Permissions to Work With Azure Active Directory

There are certain things that, no matter how many times I do them, I always have to look up. Symbolic links, for instance, are one thing I must have done at least once a week for the past 10 years, but I just can't remember whether the /path/to/file or the /path/to/symlink comes first (it's ln -s /path/to/file /path/to/symlink for the record). Configuring the permissions for a service principal to…

Using GitLab Pages to Host a Helm Registry

To see this in action, check out gitlab.com/MrSimonEmms/helm-repo Helm is a great way of sharing Kubernetes resources and making them reusable. The documentation provides a way of creating a registry using a Docker image that you can host yourself. This provides lots of functionality, such as authentication and commands to interact with it. If you have your own infrastructure and need…

An introduction to Git Rebase

This post assumes some familiarity with Git. This is an advanced concept and shouldn't be tried as your first foray into Git and version control. During development on a feature branch, there will be times when we need to update our branch because the master branch has received an update. In order to keep a linear Git history, avoid using the git merge master command. Having a linear history is…

Dockerising an R App

R is a statistical programming language with a huge repository of tools to crunch numbers, manipulate data and do all manner of data science tasks. I've worked with a couple of teams with data scientists who use it and love it. Which is great, except for one problem. R is a pain in the arse to Dockerise. One irritating, but not insurmountable problem is the lack of official templates for R.…

Live Reload for OpenFaas

2020-08-15: Added GoLang example This article assumes a degree of familiarity with OpenFaaS. I won't be covering how to get started in it or the key concepts in any detail. If you want to get started with it, please see their excellent documentation . I am a big fan of "serverless" functions. They help your application scale to a theoretically unlimited capacity. They are so useful that there is a…

Setting Up A DevOps Workflow

DevOps is hard. Not necessarily the technology, nor even the concepts. The hard part is that you're being asked to set up a series of things without knowing all the answers. Things like: what's the capability of the engineers? how are we going to work and release software? what infrastructure do we have? I'm regularly asked "what is your go-to workflow?" so I thought I'd actually do a fully-worked…

Compiling SQLite for Multi-Arch Docker

Recently, I wrote about building Docker containers for different processor architectures in order to be able to run containers on Raspberry Pis and similar. As in that article, that's very useful for being able to benefit from cheaper cloud space or speed up development for Internet of Things (IoT) devices. As NodeJS is an interpreted language (or transpiled, in the case of TypeScript), you will…

In Defence of Remote Working

I've been a software engineer for a long time - getting on for 15 years. In that time, I've spent a lot of that time working from company offices. Over the last few years, I've been attracted to remote working. Here are a few reasons why it's worth considering it, for both employers and employees. Communication Problems Let's get this one out of the way straight away. Every time I mention remote…

Multi-Arch Docker Containers

Containers have revolutionised computing since they were first popularised by Docker in the first half of the 2010s. Containers have made developing software and deploying it far simpler than it has ever been by creating an artifact that can work across different systems. By maintaining it's own dependencies independent of the host machine, we no longer have to ensure that all developers and…