About me

Paolo Iannelli Picture

Paolo Iannelli

Big Daddy at Mega Labs

Amsterdam Area, Netherlands
Information Technology and Services
C, Python, Big Data, Scalability, High Availability, Performance
Expert Software Engineer with more than 12 years of experience.
Strong in critical thinking, problem solving and high performance architectures.
Paolo Iannelli Labs Rss

Working to Disk Nukem

Posted on : 04-01-2012 | By : Paolo Iannelli | In : C, Security, Software Development, System Administration

Tags: , , , ,


Hello folks,

shortly, I’m currently working on Disk Nukem, a data destroy utility based on DBAN.

Disk Nukem will be able to perform same operations as DBAN as well as reporting data via a web API and to web-based GUI interface, an updated kernel for device’s compatibility and others enhancements.

If you want to check it out, take a look at : http://github.com/piannelli !

If you like it, join the development!


Cheers :)

RIP dmr

Posted on : 14-10-2011 | By : Paolo Iannelli | In : C


Thanks !


Taken from

FIX : extconf.rb:1:in `require’: no such file to load — mkmf (LoadError)

Posted on : 31-05-2011 | By : Paolo Iannelli | In : Ruby, Software Development, System Administration

Tags: , , , , , , , ,


If you ever run into this error while installing gems :

  • extconf.rb:1:in `require’: no such file to load — mkmf (LoadError)

and you are running Ubuntu/Debian, all you need to do is typing this command :

  • sudo apt-get install ruby1.8-dev

Problem solved !

Solution for PHP xdebug not formatting / overloading var_dump()

Posted on : 15-04-2011 | By : Paolo Iannelli | In : PHP, Software Development

Tags: , , , , , , , , , ,


If any of you have ever experienced a problem with xdebug non displaying var_dump() with the nice overload method it includes, especially when using PHP 5.3, you may try the following:

  1. Open your php.ini file
    (for instance located in /etc/php5/apache2/php.ini)
  2. Locate the line that says html_errors = Off
  3. Change it in html_errors = On
  4. Restart your webserver (/etc/init.d/apache2 restart for instance)

If you didn’t change anything in the configuration of xdebug, overload_var_dumps should be already enabled and you should get var_dumps like the following :

RabbitMQ in real world

Posted on : 19-03-2011 | By : Paolo Iannelli | In : Monitoring, Python, Software Development, System Administration

Tags: , , , , , , , , , ,


What is RabbitMQ?

Shortly, RabbitMQ is a message broker that allows you to exchange messages between heterogeneous applications.
You can find more information at http://www.rabbitmq.com.
What you do with it is just sending messages (that can be any kind of information : binary / plain-text, doesn’t matter!)  to a so-called “queue”. Any client attached to this queue will retrieve the messages.

Cool ! But why RabbitMQ and not an API ?

Well, choosing between API and messaging might be hard if you are not familiar with messaging services, but I will show you just an example where RabbitMQ is really powerful compared to a simple API.
Imagine you have 4 temperature sensors in 4 different racks. Each of these sensors are attached to a server connected to the internet. Your goal is to read the temperature of every rack and display it.
What you can do is having an API in those servers that just output the value read from the sensor. Then, from the client, you request via a REST API this value.
Alternatively you can have a centralized REST API and force each server to run a script every X seconds to update the value with a PUT request to this REST service.

REST API for temperature monitoring

So, everyone agree that the second solution would work pretty nicely. In fact, is true.
But, what if tomorrow we want to organize those “temperature servers” by location, representing for instance a datacenter in USA and one in Canada?
I have no doubt that the first thing will come in your mind is : I change the API and put a “location” field somewhere so I know from where the data comes from.
Probably the change wouldn’t take so much effort but still you have to modify an API to achieve the goal.