Estimate a project or a task is a huge issue for all developers. Even if your experience allows you to be pretty sure that your estimations are complete and you shouldn’t exceed them then there always might occur some problems. The thing I struggle with is I always think as a developer. So, in the result, I give the expected time of development and a due date set with this estimation could be confusing or even wrong. Think about the Definition of Done – it’s a complex and long process between the moment when you get the information about the task and the date when it would be deployed on production environment. The development is only one of those steps and good estimations should cover the whole process and give you a space for coffee, xbox, wii and soccer table.
PHPCon is far behind us. Emotions have subsided and I think this is a good moment do summarize what I remembered and learned during all presentations and workshops which I attended. Some of presented tools or methods wasn’t new for me, but I was fascinated by the speakers’ point of view.
Queuing in the background – getting started with RabbitMQ message broker
In PHP business logic is usually put right in action’s method or just behind it. Hence, every little piece of delaying and long-running code will be processed with a request. The problem is almost undetectable if a user sends an e-mail but with more complex actions it may take a little bit longer than preferred.
A couple of months ago I have started my adventure with CakePhp and as every Symfony’s developer I thought that any other framework except Symfony is a piece of crap. Day by day and step by step I began to realize that’s not so bad as it seemed to be in the beginning. Well, the second version of CakePhp still has a lot old-fashioned patterns, singletons or lack of tests, but I can live with that. I saw a lot of better or worse frameworks in my life. However, one module remains a bitter aftertaste – the router.
Event Driven Design is really popular topic for about two years and I don’t suprised this trend. You can really fast decouple parts of code without any influence on any other – you can send emails, saving logs or data to database without additional mess in your core class. Continue reading
Just a week ago I sat down in front of my computer and decided to try to create a common solution for injecting easy pagination. It’s an ordinary problem and I wouldn’t waste my time for doing it every time when I need to display more than 10 or 50 elements on the screen. So, as usually I started with installing Symfony2 and KnpPaginatorBundle, but after a couple of minutes I realized that the implementation can be more general than I assumed at the beginning. I could use the same design also for filtering or manipulating queries… Continue reading
When I have installed the Vagrant for the first time I struggled with connecting xdebug and PhpStorm for a while. I’d like to present a quick solution for this problem. Moreover, you can apply this when you’re working on remote server too. Continue reading
Nowadays, WordPress is a key player in the Internet. Invented as a blog system, evolved to a bigger service used for example by newspapers or even online shops. Because it was purposed to do something really different, sometimes it might seem to be a little tardy. But what if I tell you that it can be made much faster in less than 10 minutes? Let’s see.
Magento is one of the most popular PHP free e-commerce engines available on the market. It’s designed to handle and manage almost all of the common issues and features purposed for online shops, and just because of that the Magento became a really huge, heavy and slow tool.
Of course, its authors decided to create a custom cache system inside the framework, but it’s not as fast as it supposed to be. In our last project, an online shop viners.co.uk (developed in cooperation with chilid) the application could only handle several requests per second at the beginning, which is not a satisfying result when you know more details about expected website traffic- a few hundred users at once.
Based on our previous experience we decided to use Varnish as a main cashing system. We chose it because the lion’s share of the website consists of a static content, well… almost everything except for user’s basket, checkout, accounts and products availability.
It seemed to be just another ordinary day at work but it wasn’t. Yesterday, our team faced two challenging problems, which had blocked programmers’ work in two projects for a few hours. Now we are aware of the fact that the troubles could be simply avoided. That’s why I would like to share our experience and present those tricky, time consuming issues.