My 2 cents on Web Back-End Frameworks

Today a colleague of mine was asking about other’s ideas about dropping WordPress as their main framework for development. As someone who worked with CodeIgniter for a while and in a high-traffic website, I had ideas to share which I would like to share with you as well:

 

I think dropping WordPress is a good idea. It has a lot of unnecessary footprints.

Indeed CodeIgniter is a fast and lightweight framework, among all the other available ones. I used to work with it for quite a while, and I was happy with it till it was hit with lots of traffic, then it started to show that even a lightweight framework has a huge impact on performance. We took the components that were heavily loaded out of the CodeIgniter and with a few tricks performance was improved enormously.

Developing based on frameworks is fast and easy at the early phases of development, but later in the project when you want to do something which the framework is not intended for, you will find your hands tied.

You have to either extend the core, or hack it. Both, means you have to understand underlying layers of the framework, and that is time consuming.

I believe the best way is to implement your own core architecture. This way you master the core and you can tailor it to your exact needs.

Then you can use libraries/components/frameworks around it for specific features. (e.g. Django’s admin features are amazing and super-fast to setup, but you could only benefit the Admin section from Django and not the whole architecture).

YOU should be the Master of your application’s framework and not vice versa.

I heard once this beautiful saying about frameworks from “Stefan Priebsch” (@spriebsch); imagine “Ruby on Rails”, it’s on “Rails” so it’s very fast, but when “The Rail” twists, you have to twist too, you have no other choice!

That was my 2cents on back-end architecture. Here is a good article, worth reading.

Advertisements

MySQL Error 2003 – 10061 – Connecting to a Virtual Machine

If you are trying to connect to your MySQL instance on a virtual machine (VirtualBox / Ubuntu) and you are getting the following error :


ERROR 2003 (HY000): Can't connect to MySQL server on 'xx.xx.xx.xx' (10061)

There are two tiny little configurations that you might be missing:

1 – User’s Permissions to access MySQL from the host machine

 

By default all the users in MySQL are considered to be connecting from the local machine, not any remote host. So you should add a new user or giving the privileges to an existing user to be able to connect from your host machine or anywhere else. Here is how to do it:


GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'host_name' IDENTIFIED BY 'new_password';

You could replace “host_name” by the real machine’s name or “%” to make it accessible by any host ( watch out for the security flaws if you going for a wildcard access)

2 – MySQL configuration

 

In the my.cnf file, you should specify for MySQL which IP address to bind to. So you can open up the my.cnf ( which in my case is located in : /etc/mysql/my.cnf) and edit the following line :

bind-address = 10.xxx.xx.xx

And this is the IP address of the Guest OS.

P.S.: This is with the assumption that the Network Adapter in the Virtual Machine is set to Bridged, so the host and guest OS are having separate IP addresses.

Hope it helps.