Automated end-to-end tests are often seen as a necessary evil. A common example is Selenium-based browser tests. This kind of testing has many drawbacks: They take a long time to run They require complicated setup They are fragile But it doesn’t have to be like that! In this talk I describe how we can write… Read More


Inspired by a blog post by Benji Weber on Modern Extreme Programming, tonight I am giving a presentation on these ideas. Find my slides below: Extreme Programming – to the next-level from Lars Thorup… Read More


One of my friends wrote to me the other day with an interesting architectural question, which I’ll paraphrase here: What are your thoughts on running your client-side web apps in a mobile browser if you need to do more than just responsive design concepts? For instance if we want to limit some functionality for mobile… Read More


Introduction When starting a new front-end JavaScript project, we have a lot of decisions to make. The JavaScript ecosystem has grown explosively over the past couple of years with exciting new tools, libraries and frameworks appearing on a weekly basis. To illustrate, look at the TodoMVC site that showcases different MVC frameworks: 15 main frameworks… Read More


A couple of weeks back I gave a presentation for one of my clients on how to introduce unit testing into a large code base. Here is the appetizer: Unit testing and test-driven development are practices that makes it easy and efficient to create well-structured and well-working code. However, many software projects didn’t create unit… Read More


One of the questions I often receive from developers starting with unit testing, is how we can test private methods. Here is my perspective on that. There are several ways to approach it: 1) Make the method public. 2) Extract the private method to its own class where it can be public and therefor tested… Read More


I recently gave a presentation for a client on how to manage database changes in a large development organization with multiple database systems, multiple databases and multiple applications. I talked about how you can streamline your database changes by versioning your database instances and your database schema, running database instances locally and implementing database changes… Read More


Unit testing front-end JavaScript presents its own unique set of challenges. Yesterday we had another event in the Test Driven Developers Bay Area meetup group. At this event I presented a number of different techniques to tackle these challenges and make our JavaScript unit tests fast and robust using Jasmine (another version using QUnit). I… Read More


For agile development to work well, it is important to have many small stories and many small tasks. Alistair Cockburn has coined the evocative term elephant carpaccio for the process of dividing epics into minimal achievable stories and decomposing stories into minimal achievable tasks. I have previously blogged on this and yesterday I gave a… Read More


Why are most software projects using a lot of different programming languages (e.g. SQL, Ruby, JavaScript, HTML, CSS)? Couldn’t we just use a single one? Wouldn’t that simplify everything? The issue is only partly a language issue. Doing everything (UI, business logic, data access) in C++, as I have often done for embedded projects doesn’t necessarily improve… Read More