The Blog of Chris Saylor

Why Use Generators in PHP

January 2, 2017 engineering
I’ve heard many co-workers, friends, and colleagues at meetups acknowledge the existence of generators in PHP, but not understand why they would use them or give them much thought when planning out implementations. In this article, I’m going to explain with concrete examples of when it is a good idea to use a generator. In case you don’t know what a generator is, you can check PHP’s documentation on the subject for a good synopsis. Continue reading

Elasticsearch Series: Let It Work for You

May 19, 2016 engineering
This is the second entry in a series on Elasticsearch and how we use it in our applications. See the previous entry on Rebuilding Indices with No Downtime. Elasticsearch has a vast number of ways to query the data in your index. How you query your data is very much dependent upon where it is being used, so in this post we’re going to talk about how we use it in our instructor search application. Continue reading

Elasticsearch Series: Rebuilding Indices with No Downtime

March 2, 2016 engineering
This is the first entry in a series on Elasticsearch and how we use it in Zumba’s applications. Many of Zumba’s applications have some form of search. In the beginning, many of these were implemented via querying MySQL. As you can imagine, this doesn’t scale very well. On top of that, certain types of queries, such as geo location, are difficult to accomplish (read: we have to do math). Continue reading

Enforce code standards with composer, git hooks, and phpcs

April 14, 2014 engineering
Maintaining code quality on projects where there are many developers contributing is a tough assignment. How many times have you tried to contribute to an open-source project only to find the maintainer rejecting your pull request on the grounds of some invisible coding standard? How many times as a maintainer of an open-source project (or internal) have you had a hard time reading code because there were careless tabs/spaces mixed, if statements with no brackets, and other such things. Continue reading