I am very happy to share my first-ever screencast.
Screencast is about my open source project called phpProxyBuilder. It is a PHP library aimed at code reuse and promotion of proxy design pattern in PHP. It is heavily inspired by AOP and helps to implement cross-cutting concerns once and reuse the same code forever. It also promotes some of my favourite design principles like decoupling, testability, single responsibility and code reuse.
I wanted to create some screencasts for a while but I found it difficult to get the right tools. Fortunately screencasting and video editing are much easier on linux now and i hope to share more screencasts about PHP, open source and software design in the future :)
I could not find cacti graph templates for monitoring RabbitMQ so I decided to create them myself. Since I worked with cacti before and created some templates before it was not that hard. The only issue I ran into was that rabbitmqctl has to be ran as rabbitmq or root user and I could not get the stats from non-privileged user. At the end i decided to run a cron as root to generate static txt file on the server and then hit it with cacti instead of the stats generating script itself.
I hope you find them useful.
Our service will have global reach and we are launching first clients in Europe right now. Western Europe and Australia will be our initial markets so stay tuned for updates. If you find any issues or have requests please feel free to contact me in person. I am very interested in making sure everyone can use the site and sell their boats.
Go buy a boat is a website of my good friend Robert Janiszewski. He is an amazing, energetic 'do-it-now' kind of guy and this is a website, that i built, for his startup company.
When he is not working as a banking manager or on his new business he is also sailing on sport yachts in Micro division. He and his crew won 2010 world championship in France on a Flayer 550 yacht!
Website is actually quite cool. It has full translation to 2 languages already and two more are on the way. It uses jQuery a lot for banners and gallery. I have build the gallery as a custom made drupal module using jQuery. I aslo use colorbox, jQuery UI, mysql and Drupal is core of the system.
I am happy to present the first release of Ultimate web encoder.
So lately i thought 'how about i do it once and for all', and this is how Ultimate web encoder came to live : )
It is a free online tool that will let you build a chain of transformations with a few simple frag and drops. It will also allow to apply the transformation multiple times as you do not even reload the page. Its all AJAX under the hood.
Circuit breaker is a component that supports high relaiability of web sites. It helps discovering, at runtime, which of the external dependencies are failing. Having that knowledge application can avaid wasting time on trying to call them untill they are back online.
Current PHP application may depend on several databases, soap/rest web services, external cache providers or data grids, mail, ftp etc.
It is important for the application to keep on functioning even if some of these dependencies fail. To do that application has to be able to track when services become unavailable and when they become active again.
If a database or web service is down we want our application to detect it as soon as possible and react accordingly. Maybe application has a secondary slave database that can be read from? Maybe there is a way to load cached data? If all fails maybe its best just to hide some function or display message that service will be fully functional soon. What we want to avoid is making every user wait 30s for the database connection (which has to fail any way).
UPDATE: project was moved to github a while back as an independant PHP library php circuit breaker
At the beginning of 2010 i have rebuilt my sister's website to make it more user and SEO friendly. My sister is a professional photographer living in Lodz (Poland) and has her own photo studio in Lodz. She does photo sessions for fashion magazines, clothing manufacturers and weddings. She has a personal blog with some of the late projects available here: Blog of Ilona Ejsmont a professional photographer - Lodz i okolice. The blog is not my creation though, it is wordpress based site.
Website's main goal is to be an online portfolio of my sister's wedding and family photos. It is targeted to Polish local market in Lodz so there is no need for translations.
As you can see, it is a drupal based website with some special features and CakePHP integration. I have developed quite a few modules and there used to be a different theme here as well. After a full redesign in late 2010 it finally looks better. it used to look really bad, trust me. I can't describe how happy i am that the old times of grey backgrounds are over.
Monitoring of application and server health is an important task, while trying to maintain high availability. Without monitoring you dont know what goes wrong and you do not know when exactly does it happen. Some time ago i realized that the graphs i used to use were not perfect. I searched the web, read a bit of documentation and decided to put together a set of simple scripts gathering key server performance metrics.
This bundle includes gathering scripts and graph templates for Memcached, APC, Apache2, Linux file system, Linux memeory, CPU and Network. It should cover all the most important aspects for a typical web server. Graphs are designed to match my expectations and to make analysis easier.
I still dont have postgres, sphinx nor mysql stats included but .... who knows .... maybe in version 4! :- )