RSSAmplifier

Blog

This Programming Life

Recent content on This Programming Life

blog.stephanbehnke.comRSS feed ↗14 posts

Latest posts

Rewire: A new Approach to Dependency Injection in Elixir

I’ve been working with Elixir for 3 years full-time now and while I think it’s an exceptional language and development environment, the testing story always felt incomplete to me. Something was missing. In this post, I’ll explain what that is and how I attempted to fix it. Injecting Mocks While I strive to minimize the use of mocks, I find they are still quite useful in certain…

How I Learned to Stop Worrying and Love the Job Hunt

This is a story about finding a job as a senior software engineer in Toronto - with a twist: just having moved there from Germany. I was prepared. I had a plan. But it failed completely - at first. I had to adapt and learn. It was a roller coaster ride. I tell my story because it might help others learn from my mistakes. This is not meant as a bigger statement about immigration or the state of the…

26 Lessons From Being a Developer at a Startup

In the last three years, I worked for a small B2B startup in Berlin. I was the first backend developer and joined the ride of growing it from 200 to 720 business customers, from $200K to $3.2M annual revenue and from 5 to 25 employees. The following lessons are a very simplistic, personal summary of what I have learned during that time. Nothing more, nothing less. Enjoy. (1) Retrospectives are…

3 years on Google App Engine. An Epic Review.

For the last 3 years I worked on an application that runs on Google App Engine. It is a fascinating, unique piece of service Google is offering here. Unlike anything you’ll find elsewhere. This is my in-depth, personal take on it. Google’s Cloud (est. 2008) First of all, what is Google App Engine (GAE) actually? It is a platform to run your web applications on. Like Heroku. But…

The Curious Case of the Merciless Compiler

In the movie 2001: A Space Odyssey the computer program HAL 9000 goes rogue, showing no mercy towards the space ship’s crew. That’s exactly how newcomers to the Go programming language must feel. Since its introduction in 2009, the language has produced gigabytes worth of online debate about its very opinionated philosophy. Since it is a statically-compiled language, it has a compiler.…

The hunt for an immutable, type safe data record in JavaScript

Ever since working with Scala’s case classes I was hooked on the idea of having a type safe data record that was also immutable. What’s not to like? It’s type safe and immutable (duh). So I wanted to see if I can get the same thing in JavaScript - the most mutable and dynamic language known to man. class Person { givenName; familyName; } This will serve as our starting point: a…

Zero to Om - Act 6

Welcome to our next act. Today we’re going to meet a few additional libraries that’ll help us write great Om applications. Let’s get started! As always, I strongly recommend reading the previous post first if you haven’t done so already. sablono In a previous post I showed you how the application’s UI is rendered: (dom/div nil (header) (dom/input #js {:id "new-todo"…

Zero to Om - Act 5

In this part we will have a closer look at the app’s build configuration and discover what it can do for us. The source code can be found on GitHub. Note: I strongly recommend reading the previous post first if you haven’t done so already. The Build Config The project’s build configuration is defined in project.clj. It is written in Clojure and looks like this: ;; project.clj,…

Zero to Om - Act 4

Until now the application is rather boring. It just displays data. But we want to actually use it! In this post we will take a look at how the app reacts (no pun intented) to user input. The source code can be found on GitHub. Note: I strongly recommend reading the previous post first if you haven’t done so already. Managing state is tricky. Each framework has its own mechanisms to detect…

Zero to Om - Act 3

In this third post we’ll take a look at how the app is initialized and rendered. The source code can be found on GitHub. Note: I strongly recommend reading the previous post first if you haven’t done so already. For increased comprehension we will jump through the two files and not go through them from top to bottom. The State Most applications, at least the interesting ones, have some…

Zero to Om - Act 2

In this second post we will look at actual ClojureScript source code, step by step. The source code can be found on GitHub. Note: I strongly recommend reading the previous post first if you haven’t done so already. ClojureScript 101 Before we dive in we’ll look at the philosophy of ClojureScript. Since ClojureScript is a Lisp dialect, it strips away most of the syntax you may know from…

Zero to Om

This is the first part of a series of blog posts about Om. If you don’t know anything about Om, don’t worry! You’ll learn everything step by step. Here are the basics: Om is a ClojureScript interface to Facebook’s React. If that doesn’t ring any bells, again, don’t worry! NOTE: I just started learning React.js, ClojureScript and Om. So this is my way of trying…

Talk at BedCon 2014

Today I gave a talk at the BedCon here in Berlin. It introduced the audience to the fairly new programming language Go, created by Google. The room was packed, some people had to actually stand in the back. In case you missed it, here are my slides.

Scala Macros Use Case: Teaching Scala

The brand new experimental macro feature in Scala 2.10 can be used in many interesting ways: writing concise test cases, generating serialization code inlining methods This article shows exciting new possibilities it opens up for teaching Scala. To quote one student: “This is so awesome … and fun!”. Exercises are a crucial part of the “Introduction to Scala” training…