Blog (4 of 14)
-
How To Synchronize a Database With ElasticSearch?
Since search engines like Apache Solr and ElasticSearch are easy to use and setup more and more applications are using them to index their content and make it searchable by the user. After all the underlying Lucene index engine provides far more powerful features then a plain MySQL full text search or similar solutions. With Apache Solr and ElasticSearch you can enhance the performance and the functionality of your website. What we often stumble across, though, is the naiive approach of synchronizing both data storages which tends to fail in multiple ways. Let me show how you can fix this.
Tuesday, 14 June 2016Read more ➞ -
How to Refactor Without Breaking Things
Refactoring means to change the structure of your code without changing its behavior. Refactoring is an essential part of everyday programming and should become knee-jerk for your whole development team. It is very helpful to cleanup feature spikes, revise earlier decisions and keep a maintainable code base in the long run. In a perfect project world - with extensive automated tests of various types - this is just a matter of getting used to. But there are only very few such projects, so getting into proper refactoring is much harder. This article will show you important tips to master this challenge with your team.
Wednesday, 1 June 2016Read more ➞ -
When to Abstract?
One of the most difficult challenges in a developers life is finding the "right" abstraction, or at least the best one given the current circumstances. The core problem is that abstraction is a bet on the future development of the software and we know that future is volatile. The circumstances will change, so will the view on the best abstraction change.
Tuesday, 17 May 2016Read more ➞ -
Never Use null
When doing code reviews together with our customers we see a pattern regularly which I consider problematic in multiple regards – the usage of null as a valid property or return value. We can do better than this.
Tuesday, 3 May 2016Read more ➞ -
Common Bottlenecks in Performance Tests
Most developers by now internalized that we should not invest time in optimizations before we know what happens exactly. This is true for optimizations in your PHP code but also for optimizations regarding your infrastructure. We should measure before we try to optimize and waste time. How can this be done?
Tuesday, 19 April 2016Read more ➞ -
Using Mink in PHPUnit
Another day for a short PHPUnit trick. If you want to use PHPunit to control a browser for functional or acceptence tests, then you can easily do this using the Mink library. Mink is well known from the Behat community to facilitate Behaviour-Driven Development (BDD), but it is a standalone library that can be used with PHPUnit just as easily.
Tuesday, 5 April 2016Read more ➞ -
Why Architecture is Important
We experience that the system architectures of our customers grow more and more complex. This is either because of scaling requirements or because developers like to try out new technologies like implementing Microservices. What are the challenges with this and how can we overcome them?
Tuesday, 22 March 2016Read more ➞ -
Testing Effects of Commands With Phake::capture()
Today I want to share a simple trick for the excellent Mocking library Phake when testing state on APIs that don't return values.
Tuesday, 8 March 2016Read more ➞ -
Teaching and Learning Domain-Driven Design without Patterns
When development teams start to use Domain-Driven Design (DDD) in work projects, then one or more developers read the blue book by Eric Evans and start to apply patterns such as Entity, Repository, Services and Value Objects. In my experience with teams using DDD it can be very distracting to think in patterns. Read about a more practical way to get started…
Friday, 26 February 2016Read more ➞ -
Analyze the Quality Of Your PHP Code
In code reviews we often browse metrics, source code and reported code issues together with our customers. This leads to discussions about the current state of the code and possible improvements. First we used a bunch of shells scripts for that. In a second step we developed a simple PHP (Open Source) application helping us to do the job. Now we did the third step and rewrote that application into a React based client side (Open Source) application. Read on for the reasons and benefits…
Friday, 23 October 2015Read more ➞ -
Utilize Dynamic Dispatch
Dynamic Dispatch is one of the fundamental powers of object oriented programming. By using static access or traits, you throw away this power.
Thursday, 16 October 2014Read more ➞ -
Testing Micro Services
End-to-end tests for micro service architecture are hardly to achieve. This blog post outlines a method to assert end-to-end functionality by measuring metrics.
Tuesday, 16 September 2014Read more ➞
Subscribe to updates
There are multiple ways to stay updated with new posts on my blog: