March 25, 2017

Awesome AWS CodePipeline CI

After several talks at work about the feasibility of using AWS Codebuild and AWS Codepipeline to verify the integrity of our codebase, I decided to give it a try. We use pull-requests and branching extensively, so one requirement is that we can dynamically pickup branches other than the master branch. AWS Codepipeline only works on a single branch out of the box, so I decided to use Githubs webhooks, AWS APIGateway and AWS Lambda to dynamically support multiple branches: Read more

December 27, 2016

Running your own ZNC bouncer

Over the holidays I decided to get ride of the Slack Desktop application, one very RAM hungry application I’m using constantly. Moving to the browser client is no option as I have way too many tabs open in all browsers you could imagine. As I’m constantly using the terminal I decided to replace the Slack Desktop application with a command-line interface IRC client, irssi. Now irssi works great with Slack via Slacks IRC gateway, but I wanted to receive messages while I was offline, too. Read more

December 20, 2016

Response times percentiles from opentracing

At work we have started using opentracing with a zipkin backend and elasticsearch as storage layer. Zipkin creates per-day indices inside elasticsearch, meaning we can use the raw data to generate correct response time percentiles for individual services grouped by date. After an initial draft which used a HdrHistogram on the client side Zachary Tong, an elastic.co employee, suggested on twitter to use the build-in HdrHistogram in elasticsearch instead. The resulting code is a little shorter, and runs much faster due to the fact that we cut down the amount of data needed to be transfered. Read more

September 5, 2016

Scaleway on terraform: remote-exec provisioners

In this blog post I want to explore two options of using terraform and the remote-exec provisioner with the new Scaleway cloud provider. using Scaleway First, signup for Scaleway. Once you have a Scaleway account, export the required credentials to your environment like this: export SCALEWAY_ACCESS_KEY=<your-access-key> export SCALEWAY_ORGANIZATION=<your-organization-id> You can find out both information easily by using the scw cli; it’ll write the information to the ~/.scwrc file. Now you can use the scaleway provider like this: Read more

May 11, 2016

Learning Erlang #1

after attending dotScale 2016 I finally got enough motivation to properly start learning Erlang. From past experience I know that I need a project to play around with while learning a new language. So I decided to work on an outstanding task for traq, my CLI time-tracking tool: a JSON API to use as a remote storage backend. While rsync (or dropbox, fwiw) would work great as a solid synchronization mechanism I want an API which allows me to write a mobile app for traq someday. Read more

May 6, 2016

The five important abilities of systems

Reading The Architecture of Open Source Applications, especially Chapter 4, struck a cord with me: The authors, Margo Seltzer and Keith Bostic, state, that building systems based on simple components as building blocks lead to systems which are superior to monoliths in the five important -abilities: understandability, extensibility, maintainability, testability, and flexibility. This made me wonder how to clearly differentiate between these abilities, since many discussions about software architecture evolve around one or more of these abilities. Read more

March 30, 2016

docker-compose and load balancing

We’re using docker-compose in production @work and I needed an ad-hoc, lightweight solution to load-balance requests across multiple instances of a specific service, all running on a single host. While docker-compose allows you to scale your services you need to take care of load balancing yourself. Before sharing my approach, which uses golang, let’s start with the problem description first. I’ll be using a dummy service, httpd echo, for demonstration purposes. Read more

February 13, 2016

Prototyping with XCode Playgrounds

With the introduction of the Swift programming language Apple also introduced Playgrounds, interactive environments for easy sharing & prototyping. Today I want to share a tiny example on how to use them to prototype custom UIViews. Specifically a PolarClock. You can download the complete Playground here. I love playgrounds because they allow you to quickly sketch ideas, and visualize steps, before heading for a fully fledged implementation. Let’s try it out: Read more

January 19, 2016

AWS ECS with CloudWatch

AWS ECS is a nice environment to run your applications in. But sometimes you want “hot of the press” Docker features, which you can not configure in your task definitions just yet - like the awslogs log driver, which forwards your Docker logs to CloudWatch. When using the Amazon provided ECS AMIs the setup can be bit complicated for non-us regions, so here’s a simple solution to make it work until the task definitions support the log driver: Read more

January 1, 2016

Cheers to 2016

2015 was a turbulent year for me: I switched jobs twice, moved closer to Hamburg, lost a great companion and won a new one. Guessing from the past two months 2016 will be a turbulent year as well, because I’ll have to help Yumi become the awesome border colli he’s supposed to be. So cheers to a great 2016. Cheers to new challenges and new adventures.

© Raphael Randschau 2010 - 2018 | Impressum