php-jsonq provides an easy, yet powerful way to build queries for any JSON data (or PHP data structures for that matter, which are a step away). This has a variety of useful applications – data migration, API response filtering, complex configurations manipulation, and so on, and so forth.
Category: Programming
A big part of my work has to do with code. I’ve worked as system administrator – installing, patching, and configuring someone else’s code. I’ve worked as independent programmer, writing code on my own. I also programmed as part of the team. And on top of that, I worked as Team Leader and Project Manager, where I had to interact a lot with programmers. Programming world on its own is as huge as the universe. There is always something to learn. When I find something worthy or something that I understand enough to write about, I share it in this category.
Metabase – Open Source business intelligence and analytics
Metabase is an Open Source business intelligence and analytics tool. It supports a variety of databases and services as sources for data, and provides a number of data querying and processing tools. Have a look at the GitHub repository as well.
And if you want a few alternatives or complimenting tools, I found this list quite useful.
The Complete Guide to WordPress Performance Optimization
SitePoint runs an extensive guide to the WordPress performance optimization. Not only it goes over the usual points like hosting selection and avoiding unnecessary plugins, but it also provides some insight into the WordPress database management and optimization, web server tweaks, and links to a few handy tools to help with performance of your site.
Semantic Versioning : Version 0 is unstable
We’ve been using Semantic Versioning for quite a while at work now. It’s easy to explain and follow, and it provides valuable context to the numerous releases of the projects and components that we are doing on a daily basis.
Turns out, however, that I missed a small, but important part of the standard. All releases in major version 0 are considered to be unstable, so even if they introduce backward compatibility breaking changes, there is no need to increment the major version to 1. Here’s the relevant quote:
Major version zero (0.y.z) is for initial development. Anything may change at any time. The public API should not be considered stable.
If you are relying on the semantic versioning in your projects, make sure to check your dependency management tool, to verify that it handles major version 0 correctly. Gladly, for us, composer does the job:
The
^operator behaves very similarly but it sticks closer to semantic versioning, and will always allow non-breaking updates. For example^1.2.3is equivalent to>=1.2.3 <2.0.0as none of the releases until 2.0 should break backwards compatibility. For pre-1.0 versions it also acts with safety in mind and treats^0.3as>=0.3.0 <0.4.0.
Inflected – a port of ActiveSupport’s inflector to Node.js and the browser
For the last few years I have been heavily involved in building web applications with the CakePHP framework. Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities. And among all of them, my long time favorite is the Inflector class.
The Inflector class makes makes word transformations a breeze – camel-casing, snake-casing, plural, singular, and so on – work like a charm at least for the English language. It’s also possible to use the same functionality for other languages, but that would require quite a bit of the linguistic expertise.
I’ve got so used to the inflections that I miss them every single time I have to step out of the CakePHP framework. This doesn’t happen very often for me in the PHP domain, but JavaScript is a totally different story.
The other day I came across the inflected library, which brings most of the CakePHP’s Inflector to JavaScript, via either a Node.JS NPM package, or a simple inclusion of the JavaScript file to the page source and laying off all the hard work on to the browser.
I’m a lot happier with my universe now.

