bash

Docker Machine Port Forwarding

Posted on

When using MacOSX and Docker you currently need Docker Machine. A problem that you’ll run into very soon is port forwarding. For example when starting tomcat: $ docker run -it –rm -p 8888:8080 tomcat:8.0 This expose tomcat on port 8888 on the host and maps it to port 8080 in the container. So you should […]

clojure

Stubbing HTTP services in Clojure

Posted on

I recently had the need to stub HTTP endpoints in Clojure. I needed something that could do this on the HTTP level since in one case I was integrating with a Java library that used Apache HTTP Client under the covers and another that used Axis 2. I tried searching for such a library in […]

devops

Kubernetes Caveats and Workarounds

Posted on

In a previous blog post I talked about how we came to use Kubernetes on Google Container Engine (GKE). In this post I’ll mention some of the caveats and workarounds we’ve come across so far when using this combination. The intension of this blog post is not to discredit the awesome work made by the […]

devops

Why We Chose Kubernetes

Posted on

A couple of months ago I set out to investigate some orchestration tools for Docker containers. I.e. something that would help us schedule Docker containers onto nodes in a cluster and make sure that our services stays up in case of various failures. But let’s start at the beginning, why would we need this in […]

devops

Enable SSL in Jenkins in Docker

Posted on

Jenkins can be a pretty important piece of infrastructure to a company. This is especially true if you’re using it as an continuous delivery platform to various environments. One of the important aspects of securing Jenkins is to enable SSL/HTTPS support so that the traffic to and from Jenkins is encrypted. In this guide we’re […]

clojure

Reflections on Software Simplicity

Posted on

One of my favorite tech talks of all times is Simple Made Easy by Rich Hickey (the founder of the Clojure programming language). In this talk Rich explains the difference between the often confused terms “simple” and “easy” in the domain of software. Simple in this context means that there is no interleaving of different […]

devops

Restrict Google CloudSQL to a Kubernetes cluster

Posted on

If you’re on the Google cloud and are using a SQL database it’s not unlikely that you’re using a Google CloudSQL instance or two. When creating a Cloud SQL instance you want to lock down the access so that only authorized networks can to connect to your instance. This is typically done by configuring the […]

awaitility

Non-fixed poll intervals in Awaitility

Posted on

I just released Awaitility 1.7.0 and one of the big new features is the ability to use non-fixed poll intervals. A poll interval tells Awaitility how often it should evaluate the condition that is supplied to the until method. Previously you could only specify a poll interval at a fixed rate like this: with().pollInterval(150, TimeUnit.MILLISECONDS). […]

clojure

Porting Frege FizzBuzz solution to Clojure

Posted on

Yesterday I saw an interesting presentation from Devoxx by Dierk K├Ânig called Frege, a Haskell for the JVM. I think he did quite a good job of bringing forth some of the benefits of functional programming and pure functions. Especially in his last example where he was demonstrating his way of solving the FizzBuzz problem […]