Category Archives: Development

Taking HHVM 3.0.0 for a spin

Not even a day has passed since Facebook released a new version of their PHP virtual machine called HHVM. If you don’t know HHVM and you’re coding PHP, you’ve probably been living under a rock for the last few years, but the point is, it’s blazing fast. As a matter of fact it’s so fast that at the moment the network latency on my blog is more of an issue than page rendering speed, and I haven’t even started to do any optimization.

What’s also cool about version 3.0.0 is the fact that the old HTTP engine is gone, instead HHVM is now reachable via FastCGI, which makes it an (almost) drop-in replacement for PHP-FPM. It also supports Hack Lang, which is a strongly typed variation of PHP. It should be noted, however, that it’s not 100% PHP compatible, so you might run into some compatibility issues. So, that being said, why don’t we take it for a spin?
Continue reading

Don’t make me think! on PHP code

If you’ve ever done any UI work, you almost surely encountered the book Don’t make me think by Steve Krug. The sole job of usability is to ensure a flow feeling for the customer. Anything that breaks that flow, makes the customer stop and think, is bad for conversion towards your target page.

When coding, you can have a similar flow feeling. You get into your zone, start coding and you just write the code that does exactly what you want – unless something interrupts you. The most common reason for this interruption in my experience is bad code. Code that you don’t know, code that’s not logical to use, code that contains bugs. If you’ve ever worked on larger systems, you know the annoyance of working with bad code. So the logical question is, how do you write slightly less crappy code?

Continue reading

Enhance your PHP-fu with code quality tools

Writing good code is an art. There is no magic bullet solution that will make you write good code over night. However, there are a few tools that you can use to remind you of the bad habits you may be doing.

If you are working in a team these tools can be the regulators that help you keep some sort of order in the massive amounts of code you’ll be writing.

Continue reading

Proper time handling with PHP and MySQL

Few developers actually know that not only character encodings but also time handling can cause you headaches when it comes to PHP and MySQL. Contrary to popular belief, PHP’s time handling actually works quite reasonably if you know how time actually works. If you don’t, you may be in for a big surprise when you add 3 days to a date and end up with a date 4 days from now. The answer lies within the *NIX time handling.

Continue reading

I find your lack of faith disturbing

Fixing the Dependency Injection Container in PHP

I’ve been developing PHP well over a decade now and I came to develop a distaste of a phenomenon that has been ravaging the community for quite some time: the lack of code completion. Editors like PHPStorm do an amazing job at discovering variable types, but even they can’t cope with one thing: the Dependency Injection Container.

Framework designers place modularity of their systems above their developer’s convenience, which results in a lot of f-words being thrown while developing. So I went out on a quest to bridge the gap and enable code completion for the Dependency Injection Container.
Continue reading

Supercharging your sitebuild work with SASS and PHPStorm

Sitebuild is a pain in the neck, no small part due to CSS’ inability to use variables, includes and such. Most of the time we also constantly need to upload stuff to a server. I’ve been a PHPStorm user for almost a year now and even though it has already been an awesome IDE for PHP, with version 6 it became even more awesome. (Full disclosure: I am in no way affiliated with JetBrains.)

I’ve recently started to create a new theme for my WordPress and I’ve found a really comfortable way for working with these tools. Even though I’m going to take WordPress as an example, the techniques described here are applicable to just about any sitebuild process.
Continue reading