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

Share files via HTTP without installing any webserver

Posted on : 20-07-2013 | By : Paolo Iannelli | In : Linux administration, Python, System Administration, Uncategorized


Did you ever been in a situation where you want to share a file and you don’t really have a way to do it ?

I mean, those situations when :

  • you would like to SCP a file, but you can’t because you don’t have your key in the other machine or is not directly reachable
  • you would like to send a file via FTP, but you don’t want to install any FTP server
  • you decide to share the file via HTTP, but then you realize you need to install a webserver with all its dependencies and nevertheless configure it

I have a solution !

Since most distributions nowadays have python installed by default, you can simply go to the directory that hosts the file and run

Port is optional and by default 8000 if you don’t specify a different one.

File listing is enabled by default, so be sure not to share any directory that contains sensitive files!

My suggestion is to put the files you want to expose to a dedicated directory and then start the HTTP server. When you are done, you can safely remove the directory.

Happy serving!

Added new page for Disco Map Reduce with Bootstrap

Posted on : 03-02-2013 | By : Paolo Iannelli | In : BigData, Python, Software Development

Tags: , , , , , , ,



I just added a new page to my bootstrap implementation of Disco (http://www.discoproject.org) Map/Reduce Framework.

The reason why I’m implementing this nice dashboard (although I’m not a Frontend Developer and I know just enough about this field) is to increase awareness of this amazing tool and increase the overall visibility of the project in the Interwebs.

Source is my fork at GitHub, but be aware that many things might not work or look very crappy : it is a “in-development” work, so if you have any issues blame yourself :)

Here are few screenshots :


Disco Dashboard with Bootstrap

Disco Dashboard with Bootstrap

Disco Failed Job with Bootstrap

Disco Failed Job with Bootstrap


Developing applications with Python

Posted on : 28-10-2012 | By : Paolo Iannelli | In : Python, Software Development

Tags: , , , , , , , ,


Ever wondered what is Python or the way it works?

Friend of mine actually wrote an interesting website (Python for Beginners) where you can find all you need to start writing your first Python code.

I must warn you : once you start developing in Python it will soon become your primary language, trust me !

So, if you want to see in one shot how beautiful this language is, take a look at : Python Cheatsheet

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.