• Fast feedback loops in Running

    When you're working towards a goal, it's crucial that you can measure against your baseline cheaply and often. Your favourite route can be your fast feedback loop in between races.
  • Running Objective and Actionable metrics

    Hypothesis for 2017 - If I run more, I SHOULD become faster.
  • Stretch goals in Running

    As an amateur runner it's a bit silly to push yourself towards beating a certain time treshold. As if enjoying nature, the company of a running mate, the endorphine rush, or being healthy just isn't enough. Time tracking can be fun and motivating, and it gives you the feeling of making progress. But improving on your PR doesn't really matter.
  • Natural density filters

    Testing a 10-Stop Natural Density filter.
  • Pay as a demotivator

    When does pay become a demotivator, and when does it become a motivator? Studies presented by Daniel Pink in his book Drive shows that pay works as a motivator if the tasks are monotonous and mechanical. More advanced tasks are on the other hand performed worse if given a larger monetary reward. For these jobs salaries should be high enough to not be “an issue”, according to Pink.

  • Migration to from Wordpress to Jekyll

    Finally. If you can read this, it means that I’ve successfully moved away from Wordpress to static pages powered by Github and Jekyll. Thanks for everything Amazon, it was exciting but it’s not what I need anymore.

  • Diversity events

    I’ve attended two diversity events in the last couple of weeks. One was held internally at Spotify, and one was a meetup hosted by Silicon Vikings at the Spotify office with speakers from among others the Stockholm startup TrueCaller.

  • Looking back at old draft on Pair programming

    I started writing this post when I was working in the UK, almost exactly three years ago. I never finished it so it’s been gathering dust since.

  • Book: Building Microservices by Sam Newman

    Just finished reading Building Microservices by Sam Newman. In really simple words it explains what’s great about microservices architectures, and what to think about when designing, developing, deploying, and monitoring them.

  • Rethinking client libraries for Spotify's Web API

    If there’s any change that I’d like to make to the way we create clients for Spotify’s Web API, it’s that they should be generated from a single definition that’s available in a version controlled repository.

  • Nordea Innovation Challenge (Hackathon)

    IBM and Swedish bank Nordea arranged a hackathon called Nordea Innovation Challenge in downtown Stockholm in late November. The theme: “Banking of the Future.”

  • Web Security: Cross-site scripting attacks using UTF-7

    This post describes a type of cross-site scripting attack that works to varying degree in older versions of Internet Explorer  (tested with IE9), and very old versions of Chrome, Safari and Firefox.

  • API wrapper project for SMHI

    While preparing for Hack for Sweden mentioned in the previous post, I figured I’d try to write a wrapper for a weather forecast API (Swedish) that we’d use so that it would take less time to utilise it. I hadn’t dedicated myself to write a API wrapper previously, and figured I mention a couple of things that I found important and useful.

  • Hack for Sweden

    Hack For Sweden

  • JavaScript: The Good Parts

    I’ve just finished reading JavaScript: The Good Parts by Douglas Crockford, a book that always seem to be mentioned in discussions around what literature to pick up when diving into JavaScript. And I have to agree. It was a great read.

  • Hack the Globe, Stockholm


  • Spotify Hackweek 2014

    Last week was the annual hackweek at Spotify. A week of working on whatever you want, as long as it’s (remotely) linked to the company in one way or another. Learn a new tool, brush up on some skills that you’ve forgotten, work on a product, and so forth.

  • Quick dive into flow-based programming

    Some initial research

  • Reflections after reading Clean Code

    I’ve just finished reading Clean Code by Robert C. Martin, and it has left me with a lot of things to think about regarding the way I write my code. A good thing!

  • Private methods - Test or not?

    While working on a JavaScript project that I’ve been putting a lot of time into recently, I’ve been using the bad practice of making methods not used outside of the class public so that I’ll be able to test them. This has forced me to think about when to test private methods.

  • Context switching

    I haven’t given context switching much thought until now.

  • Spotify Follow Button

    Trying out Spotify’s new Follow Button that’s accessible through an iframe and not just in the Web Player and Desktop clients.

  • Where's that Spotify Web Player? A small Chrome extension

    I’ve been using Spotify’s Web Player instead of the regular desktop client so that I’ll get more exposure to it. I tend to not want to use it over the desktop client because it has less features (no social flow for example).

  • Returning to Sweden

    My last post was written on February 14th and a lot of stuff has happened in the last three months. I’ve moved from England to Sweden, changed employer from WDS to Spotify, and switched my formal job description from Developer to Test Automation Developer. And some other stuff, like gaining five kilos due to the treacherously good quality of the Swedish pizzas.

  • Webdriver: Reading the value of a Javascript variable (spoiler: weirdness)

    Selenium Webdriver gives you the opportunity to execute Javascript through its JavascriptExecutor. Webdriver’s own functions are usually enough to interact with the browser though.

  • Christmas Holiday - Chrome exploration

    Celebrating the Christmas holiday in exile isn’t great fun, but at least it’s a few days off to relax and do whatever comes to mind. For some time now, I’ve wondered extensions for Chrome work and what they’re capable of, so I decided to write something simple.

  • Maven: Creating a suite of JUnit tests and running them from a jar in a another application

    I’ve spent a part of the day struggling with the what should be concidered best practice when wanting to run a Maven built suite of JUnit tests in another project.

  • Trying out Sikuli - Setting up

    I’ll be spending the weekend looking into Sikuli, a test automation tool for GUIs.

  • Ways to resolve unstable Webdriver tests

    We’re constantly having issues with unstable Webdriver tests for different reasons. Most times, it seems to come down to the way the test is written and not the way Webdriver works. Below, I’ll list some of the things that I try to have in mind while writing a test. I’ll begin with the stuff that are general test principles, and continue with what’s Webdriver specific. I’ll use Webdriver code to illustrate examples.

  • Knowing your tools will help attain good work flow

    The most obvious benefit of knowing your tools is that you save time. It also makes it easier to keep a good work flow, especially if you’re working as a pair. It is understandable that the pair navigator has a harder time to focus on the task at hand if the driver is clicking around in menus instead of using key short-cuts.

  • Software Craftsmanship 2012

    Took the train up to Bletchley to attend Software Craftsmanship 2012 earlier this week.  The conference, or rather the workshop, spanned over a full day on things related to pair programming, continuous integration, and test driven development, and also included a tour of the National Museum of Computing. Both event and museum are located at Bletchley Park, a bit more than an hour north of London. During the Second World War, Bletchley Park was the home of several thousand employees working on the decryption of messages captured by the German military. The most famous among the people who worked at Bletchley  was probably mathematician and computer science father Alan Turing.

  • Small project in Play!

    This is a screendump of a small project I did at work to get more comfortable with both Play! Framework  and our own products. One of our products is an email lookup, and this project is simply a front-end for it built in Play.

  • Bournemouth Barcamp #4 (2012)

    Want to mention this even though it is 5 weeks after it actually happened. Bournemouth Barcamp was absolutely worth the time, in case anyone googles for opinions on it when next years event is approaching. It is free, friendly, and had some interesting talks! Definitely enjoyed the presentation on Firefox’s Gamepad API (video demo here) from Mozilla Tech Evangelist Rob Hawkes.

  • Sequential pairing, and pair flow

    Working in pairs bring benefits, such as constant code review, knowledge sharing, improving team spirit, help applying good practices under pressure, and design discussions.

  • Small study on information radiators in agile/XP projects

    I love looking at radiators. At Ebay, we had radiators showing the regular agile software project information. A table-like structure showing stories moving from Ready, to In Progress, to Completed and finally to Accepted.  This was usually complemented by a burn-down chart to show if the team was on track.

  • Refactoring: Improving the code or just understanding it better?

    During a brief discussion about refactoring at last iteration’s retro, a colleague mentioned that the feeling that refactoring has improved the code might be somewhat illusive.

  • Magic numbers: Shorter code, but not cleaner

    Magic numbers can mean several things, but the one I’m going to address is the sort of number which doesn’t give the reader any idea of why it has a certain value.

  • Inheritance in JavaScript: An example

    JavaScript is a prototypal language. It is object-oriented, but with a different style than Java or C++ (which are class-based, as opposed to object-based). Inheritance in prototypal languages isn’t a relationship between classes, but between objects. The object which corresponds to the superclass acts as a prototype, which the other object clones.

Subscribe via RSS