Bruno is a professional web developer from Croatia with Master's degrees in Computer Science and English Language and Literature. After having left his position as lead developer for a large online open access publisher, he now works as the PHP editor for SitePoint and on various freelance projects. When picking them, he makes sure they all involve new and exciting web technologies. In his free time, he writes tutorials on his blog and stalks Google's job vacancy boards.

Bruno's articles

  1. Announcing PHP Summer Camp

    The image above is Rovinj, Croatia – a little piece of heaven on the west coast of the Istrian Peninsula. For the third time in a row, and in a slightly different format, the PHP Summer Camp will this time be hosted in Rovinj from September 3rd to September 6th, with an optional extra leisure […]

  2. PHP 5.6 End of Beta

    On June 5th 2014, the PHP group announced the fourth and final beta of the 5.6 version. This milestone ends the beta program and begins the RC program ( currently planned for June 19th), which will from now on focus exclusively on making sure the version is stable enough for release. As is customary with a beta program, no new features were added since beta 1 – all the releases were bugfix and improvement patches only.


    Some five months ago we published a list of upcoming new 5.6 features, and since then the PHP group has created a more approachable summary of the changes than one that can be seen in the cryptic changelogs. The list, also called the 5.6 migration guide, is an already very useful work in progress and contains a simple demo of every new feature that matters – you can check it out here.

    If you’re interested in seeing all the bugfixes through the betas, you can read the changelog on Github.

    Things we haven’t covered in our original post but which have been added in the meanwhile are:


    In a nutshell, “exponentiation via **” it’s an operator which lets you easily calculate a number to the power of another number. However, the order of execution might be counter-intuitive to some. The example states:

    $a = 2**3; // $a = 8, i.e. 2^3
    $b = 2**3**2; // $b is 512

    Most people new to the exponent operator will assume the second line groups operations as such:

  3. PhpStorm 8 – New Features

    Jetbrains is famous for the early access program on the IDEs they make – a pre-release version of the IDE is made publicly available months ahead of release time, so people have time to test it, report bugs and provide feedback. It’s like beta, just not the beta we’re used to today (modern “beta” is a kind of excuse for a product to suck for a long time). After the EAP is done, they move onto beta, fully test the features they’ve implemented and fix bugs, and only then release.

    PhpStorm, my personal IDE of choice, and one we’ve covered before, is now approaching version 8 and has had its EAP version available since March 6th, 2014. Let’s take a look at what’s coming through their changelogs and EAP posts and additionally explain the most important features with links and/or clarifications (we won’t be covering bug fixes, read the release logs for those).

    Drupal 8 Support and Multiple Cursor

    EAP 134.1456 introduced the EAP’s beginning and announced several highly requested features like:

  4. Google’s BigQuery Provides Free Access to GDELT

    The entire quarter-billion-record GDELT Event Database is now available as a public dataset in Google BigQuery.

    This is the sentence at the top of the release post, and it’s a really big deal.


    The Global Database of Events, Language and Tone is one of the largest datasets on the planet. It is the quantitative database of human society, relying on thousands of news sources from every corner of the globe dating back to 1979.

    It was thought up by Kalev Leetaru, who is also the author of the Google release post referenced above. The GDELT covers all countries globally spanning a third of a century, and consists of daily updates during that time period. Hundreds of millions of records, each with 59 fields narrating into detail the actors and events having taken place. Every record is georeferenced, so you can globally place it, and all actors are tagged with appropriate ethnic and religious affiliation. All this – free and available for your perusal, and you don’t even have to have the computing power to handle it.

    Google BigQuery, “Google’s powerful cloud-based analytical database service” is, basically, the world’s fastest SQL engine, and it’s completely free for any and all uses of GDELT. Due to the sheer power of BigQuery, you can get results on GDELT queries in near real-time and any permutation of fields and values you can think of won’t be enough to bog it down to a halt – unless you really mess things up and go against the grain. If you deal with databases in any regards and the following paragraph doesn’t send chills down your spine, you’re probably dead:

  5. HHVM 3.1.0 Released

    The HHVM team just released version 3.1.0.

    The team focused on cleaning out the Github repo for the most part, fixing bugs and open issues, but new features have landed as well. This release brings HHVM closer in sync with PHP 5.6., the features of which we’ve written about before.

    The highlight implementing the $...args functionality, 400 ini tweakable settings, and – something that sounded most interesting to me – improvements on the Zend Extension Compatibility Layer. This layer will allow building existing PHP extensions with HHVM, with minor tweaks required in the source code. In time, the layer will hopefully be in such a state to allow seamless transition of extensions.

    The full changelog, as quoted from the original release post but with some added links and an explanation or two:

  6. MySQL Management with Packaged Apps

    Some years back, the Chrome team announced packaged apps – applications that behave like native ones, with access to a large part of your machine’s hardware. Ever since, we’ve seen terminal emulators, IRC clients, IDEs, true 3D games and more pop up.


    I’d like to take this opportunity and review ChromeMyAdmin, a Packaged App by Yoichiro Tanaka.

    I personally consider the MySQL/MariaDB database management landscape particularly barren. With the often unstable MySQL Workbench on one hand, and the bloated but underdeveloped PhpMyAdmin on the other, sometimes you just need a simpler solution for quick and dirty edits.

    Let’s take it for a spin and see how it does.


    Go to the Web Store page and install the app. It should appear in your Chrome App launcher immediately. On Windows, this looks like the figure below:

    The starting interface is simple and smooth, a familiar Bootstrap look:

    Vagrant Up

    If you’ve read any of my previous posts, you know I don’t favor polluting my everyday machine with SDKs, programming languages and their runtimes, or database drivers. I’ve made a simple Vagrantfile which boots up a 14.04 Ubuntu server instance with MySQL pre-installed, and remote connections enabled. This means you can jack into the virtual machine’s database from the host machine and still keep your host machine clean of unwanted software.

    If you’re not familiar with Vagrant and the aforementioned virtualization methods, please see our previous articles on the topic.

    You can download the Vagrantfile from Github. After you do, simply bash into the folder (use Git Bash if on Windows) and run “vagrant up”, provided you have Vagrant and VirtualBox installed.


    The IP address of our VM is set to, so this is what we use for the connection’s host name in ChromeMyAdmin’s main screen. This is also the first place ChromeMyAdmin dropped the ball – you have to input the port number – it doesn’t assume a default. Not a big problem, but it would get bonus points for usability.

  7. PHP Fights HHVM and Zephir with PHPNG

    Chaos in the old world! First HipHop, years ago, and no one bats an eye. Then suddenly, HHVM happens, introduces Hack, and all hell breaks loose – Facebook made a new PHP and broke/fixed everything (depending on who you ask). Furthermore, Zephir spawns and threatens with C-level compilation of all your PHP code, with full support for current PHP extensions. It's mushroom growth time for alternative PHP runtimes, and HippyVM appears as well.

    Amid the sea of changes, another splash was heard: PHPNG.

    As introduced by Manuel Lemos, PHPNG is a new branch of PHP coming to a yet undetermined future version of PHP.

    Wait, what?

    This somewhat cheesily named (NG = new generation) and clumsily presented version of PHP is the core team's attempt to rival part of what HHVM and Zephir have been doing – improving PHP's performance to levels no other language can catch up with.

    Like Manuel says, it was presented by Dmitry Stogov in an internals newsgroup thread. Dmitry is responsible for performance and optimization at Zend, and mostly deals with the Zend Engine. The NG upgrade focuses on rewriting core parts of the Zend Engine to enable better memory allocation on PHP's data types, and on adding JIT compilation similar to HHVM which lets PHP be compiled down to C on execution, improving speed of subsequent runs of the same code.

    As with any "Make PHP better" attempt, this one has its pros and cons.


  8. Welcoming New Authors: March / April 2014

    In the last “Introducing authors” article, we mentioned a whopping 11 new authors. Admittedly, the period the last article encompassed was far longer than two months, but the publishing schedule has changed since as well, and I’d like to mention that in this post.

    First things first, though – let’s shake hands with the new recruits!

    New Authors

    These six authors have joined our ranks through March and April. Some are pros, others are just getting there, but all are welcome and their contributions appreciated – with such a diversity in country of origin, our channel is quickly becoming a true melting pot of attitudes, approaches and thoughts.

  9. HHVM and Hack on Heroku

    In a move that surprised most but displeased none, Heroku, the Cloud Application Platform, has added native HHVM support to their cloud.

    PHP has long been a viable solution for high traffic production apps, and has had one of the best package managers for a while, not to mention the fact that it’s evolved significantly since the days of “simple hacks for small projects”. The PHP “development model” has been anything but “hackish” in the professional circles for a while now. The unfortunate ignorance of Adam Gross aside, this really is some big news.

  10. PHP News You May Have Missed

    The last month or two have been chock full of small news and releases not warranting a full story in their own right but still interesting, I’ve decided to make a small compilation and direct your attention to the interesting developments around us. Just because we don’t cover something immediately, doesn’t mean we don’t notice or care :)

    Ubuntu 14.04. LTS

    enter image description here

    Not so much PHP related, but still fairly important for our channel and future development purposes, the release of Ubuntu Server 14.04 LTS kind of flew by most people. This release will be supported by Canonical until 2019, which is a big deal as we can now all switch to this newest version as soon as it’s vetted by hardcore users. Stay tuned for upcoming Vagrant boxes predefined for 14.04. soon – we’ll be custom building and publishing some soon.

    You can download the server version here and there’s a default Vagrant box available here.

    GAE 1.9.1 – 1.9.3

    enter image description here

    Google App Engine has reached minor version 1.9.3., adding some more features and upgrades since the last time we talked about it:

    • bug fixes regarding Zend Framework, null characters in URLFetch, failed file uploads to Cloud Storage, long POST data, unlimited upload sizes and the fnmatch() function
    • ability to embed images in emails via the Content-Id header was added
    • the zip module is included by default now

    The SDK has been updated and you can take it for a spin immediately. To see how you can do that, check out my previous article on GAE.