• Create a site map using CasperJS and Graphviz

    I recently challenged myself to start learning CasperJS, a scripting tool that is using the PhantomJS WebKit headless browser to navigate the web. For one of my first projects, I decided to build a site map generation script. Since I was already familiar with the Graphviz tools I decided to use the Graphviz sfdp command-line tool to generate visual site maps. This post is a short introduction to the tool, and how to use it.

    Read more
  • Brew after updating to El Capitan

    If you’re an early adopter, like me, you probably also spent a few hours today installing the latest version of Apple’s newest OS X version, El Capitan (OS X 10.11). If you use your Mac for any kind of development, chances are you also have the Mac’s missing package manager, Brew, installed. As with any time Apple releases an update, there is some tinkering to be done to get everything running again. In this post, I’ll go through some of the problems I ran into with Brew after updating to El Capitan and how to solve them.

    Read more
  • How to build a Web scraper with DOM parsing in 10 minutes

    API:s are a developer’s best friends when accessing remote data, but great API:s does not grow on trees. So what do you do when the data you need isn’t accessible through a well-designed API, or no API at all for that matter? As long as the data is accessible through your Web browser, you can always just scrape it yourself! In this post, I’ll go through how to build a simple Web scraper in 10 min using Guzzle and PHP’s DOM parser. I’ll also give a brief introduction to XPaths.

    Read more
  • Dockerizing a PHP project - A short introduction

    After using Vagrant and VirtualBox at Engage for several months I finally stumbled over a project at work where I got the opportunity to learn and use Docker. Inspired by my newly acquired knowledge I wanted to experiment more with Docker so I decided to “Dockerize” my latest side project.

    Read more
  • Automatically solve Kuku-Kube with JavaScript

    Yesterday during my lunch break one of my co-workers introduced me, and the other developers at Engage, to the color puzzle game Kuku-Kube. The goal of the game is to as quickly as possible identify and click on a uniquely colored square in a grid of squares. The game has been featured on a number of big sites during the last day, including Reddit and Business Insider. This post is about how I build an automatic solver in JavaScript over a lunch break.

    Read more
  • Continuous integration with Travis CI

    Testing is an important aspect of software development, no matter if you use unit testing or if you run the software and manually test the features. In larger more complex systems, the latter method is usually very time-consuming and prone to miss a lot of bugs. That is why we have tools like unit tests and integration tests. To make our lives easier as developers, but also to make us more self-confident when pushing code changes.

    Read more
  • Migrating a live site to Amazon AWS

    For the last week, I’ve spent a lot of time migrating one of Engage’s clients from a single server setup hosted on DigitalOcean to a load-balanced multi-node server cluster setup on Amazon AWS. This post is a high-level walkthrough of the steps needed to migrate to Amazon AWS.

    Read more
  • Introducing OverView for Basecamp

    Here at Engage, we take pride in our project management process. We are constantly looking at how to improve and make our processes both more efficient and effective. Because of this forward-thinking culture at Engage, we have developed an internal tool to give our project manager a clearer overview of each team member’s progress and workload.

    Read more
  • Snowball stemming in PHP

    When working on my PHP search engine I needed a stemmer to improve the tokenization and search index. After some research, I found the PECL Stem package, which uses the Snowball Stemming algorithm and has support for multiple languages. Exactly what I needed!

    Read more
  • OAuth authentication in PHP

    Setting up OAuth doesn’t have to be a pain. There are tons of well-written and documented libraries for OAuth out there that are easy to use. If you want to authenticate against one of the larger sites on the web, like Facebook and Google, chances are that you don’t have to do much more than installing the library and setting up some routs for the auth callback. In this post, I’m going to walk through a slightly more complex scenario, where we are gonna authenticate against Basecamps API.

    Read more