Hello world!
It's "official", our development team now has a blog. At Qandidate.com we spend one day a week on research and other fun stuff that's not related to our short term roadmap. We use this time to check...
View ArticleGetting started with HHVM
Facebook deploys one of the biggest PHP codebases in the world. They’re not only pushing the boundaries of what you can do with PHP, but also PHP itself. A few years ago they open-sourced their hiphop...
View ArticleRunning symfony standard edition on HHVM
In part one of this series we talked about "Getting started with HHVM" by getting a compiled version of HHVM running in a vagrant box. In this part we'll configure the HHVM webserver to run the symfony...
View ArticleDebugging PHP applications with HHVM
In the previous parts of this series we got you started with HHVM and showed how we could get the symfony standard edition running on HHVM. This time we will dive deeper into HHVM by using it to debug...
View ArticleFirst steps with Ansible
I remember having to install a new web server next to an existing one. The only requirement my boss had was it had to be "the same" as the existing one. There were two problems: no one had ever...
View ArticleInstalling a LAMP server with Ansible playbooks and roles
In my previous post I introduced you to Ansible. I showed you how to install Ansible, how to create a server inventory and how to execute some basic commands. Afterwards we installed a very basic web...
View ArticleSetting up XHProf/XHGui profiling with Ansible
Once in a while I think about profiling my web applications to see if I can get them to run faster. There are cool tools out there like XHProf and XHGUI to help you do exactly that. And then I remember...
View ArticleUsing Satis for fast and reliable software deployment
If you're familiar with Composer you know it can be slow and sometimes unreliable when one or more packages are not available. ∞ labs @ Qandidate.com Permalink
View ArticleFault tolerant programming in PHP
In your application, every time you call an "external" service you are vulnerable to the failure in that service. That either might be a third party API being down, your database being unresponsive or...
View ArticleAsynchronous fault tolerant programming with PHP
In the previous post on fault tolerant programming in PHP we have shown the basics of fault tolerant programming using the circuit breaker pattern. Now we will show you a running demo of the...
View ArticleHandling AngularJS POST requests in Symfony
At Qandidate.com we started using AngularJS last year and I have to say it was love at first sight! Two-way databinding, testability, dependency injection, server communication...awesome! Did I say...
View ArticleAsynchronous Phystrix explained
We started this blog series with the basics of a circuit breaker. Our second post showed a running demo of an API consisting of two private microservices using oDesk’s Phystrix. The demo consisted of...
View ArticleA new feature toggling library for PHP
Adding features to an existing application can seem straightforward, but what if the system you need the feature in is already running in production and the feature needs small bug fixes from time to...
View ArticleOpen sourcing our feature toggle API and UI
In our previous post we released our toggle library and showed how to use it in your PHP project, but our goal was to toggle features without the need for a deploy. To accomplish this we created an API...
View ArticleHow we manage our development process at Qandidate.com
At Qandidate.com we tried a lot of different project management tools and techniques. After two years of experimenting I want to share our current process, seen from my role as product owner (PO). One...
View ArticleUsing ZFS to snapshot your database
What if I told you you can backup your database in under a second? Awesome right? Well it's not entirely true, but you can create a snapshot of your database in under a second and decide later on how...
View ArticleBringing CQRS and Event Sourcing to PHP. Open sourcing Broadway!
Last week we open sourced our toggle library, API and GUI, see our announcements here and here. Today we open source Broadway! Broadway is a project providing infrastructure and testing helpers for...
View ArticleLearning Scala with the team
Last April we decided as a team to follow the Coursera course "Principles of Functional Programming in Scala". We want to keep growing as a team so we wanted to follow the course with the whole team....
View ArticleMinifying an existing AngularJS project
Being a PHP Developer who only recently started using AngularJS I knew almost nothing about the incredible progress front-end development had made since I last created a website. When we deployed our...
View ArticleFeature Toggles in Symfony
When we launched our feature toggle library to the public a few weeks ago, we had multiple people asking for a Symfony Bundle. So guess what? We created one just for you! This bundle doesn't just help...
View ArticleHaving fun with geometry data in MariaDB and ElasticSearch
At Qandidate.com we get an insane amount of job applications each day. Because we're an awesome company to work for? Well I hope so, but that's not the reason why. It's because we make a free ATS or...
View ArticleKanban: Continuously improving our process!
In my previous post I explained how our development process works at a high level. Now I will try to go into detail and explain how we develop day-to-day. ∞ labs @ Qandidate.com Permalink
View ArticleThere is a microservice for that
At Qandidate.com we recently shifted our development process towards building microservices. We’re constantly looking to improve our way of writing software. For example, moving from CRUD applications...
View ArticleUsing HAProxy to offload SSL
At Qandidate.com we started to use Docker containers to run our apps and REST APIs. Some of them are publicly exposed and should communicate over a secure connection. Of course we can config nginx in...
View ArticleUsing the Accept Header to version your API
I investigated different ways to version a REST API. Most of the sources I found, pretty much all said the same thing. To version any resource on the internet, you should not change the URL. The web...
View ArticleAdding a unique request id using middleware
In our event-sourced applications built using Broadway we have a full log of all events that happened in our application. We also log all commands using monolog. We did however miss some traceability...
View ArticleBroadway just got a new release
Today we tagged version 0.3.0 for Broadway. In this version we have merged some nice pull requests from various contributors, thanks to everybody that submitted issues and/or pull requests! One of the...
View ArticleSo...we received funding! Now what are we going to invest in?
If you are an experienced developer and keen on growing you should definitely read this bit. On Tuesday 4 November we announced our Series A investment by Randstad Innovation Fund and Qmulus. A really...
View ArticleA Broadway demo application
After the release of Broadway we got a lot of requests for a demo application. People were curious how we use Broadway and how everything ties together. So Fritsjan started with the demo application a...
View ArticleProjecting your event stream
When you are using a CQRS and Event Sourcing architecture you are separating your writes from your reads. You can fire commands that change state but return nothing and you have queries that return a...
View ArticleHow filepicker saved us a lot of trouble
Adding upload possibilities to an application is often not a pleasant experience. How often did you forget to configure the upload size? Or forgot to whitelist the mimetypes? And that is just the basic...
View ArticleReplaying event streams with Broadway
With event sourcing you have access to some powerful mechanisms. One of which is the ability to revisit the events that happened in the past. By revisiting the events, you can discover new patterns in...
View ArticleAsynchronous Event Processing with Broadway using RabbitMQ
Broadway allows the processing of events by passing them to an event bus. You can have a Projector subscribe to this event bus in order to update your read models, or you can have a Processor subscribe...
View Article