It turns out that the mind behind Redis, an awesome open source, advanced key-value store, is Italian. His name is Salvatore Sanfilippo, and he’s developing from a small city in Sicily. We recently had the chance to interview him, and here is what we learnt.
Hi Salvatore, could you please tell us a bit about yourself?
My name is Salvatore Sanfilippo, I’m 33 years old, live in Sicily, Italy and I spent a great amount of my life writing programmes. Currently I’m working for VMware, where I develop an open source database called Redis. In the past I worked in the field of security, embedded systems, system programming, and web applications. I wrote the hping security utility and invented the idle scan. A few years ago I wrote one of the first few web 2.0 applications that appeared in Italy, Oknotizie and Segnalo, and did a partnership with Matrix.it.
I’m also advisor and shareholder of a small company based in Sicily that is called Kiurma, specialized in writing iPhone and iPad applications (Update – December 2022: The startup seems to be no longer in business and we therefore deactivated the link).
Awesome, so I see you have a mix of startup experience, open-source development and large-company employment. Which one do you prefer and which one would you suggest to a young CS graduate?
I think that a lot has to do with your temper, but it is really a shame to miss the ‘startup opportunity’.
It’s hard for me to argue against large company employment, since VMware is like the dream job, where I’m free to develop Redis full time, pretty freely, and with the support of some seriously smart guys inside of VMware if I need some hints. But I guess not every corporate job is like this.
I guess that as long as the corporate job is cool, you learn new things and do something that seems useful, not just for Management but also for yourself, then it can be a good thing. Otherwise, especially if you are able to bet on yourself (that is, you can manage to live without a fixed income for some time without too much trouble since you are young enough, or with some savings in your bank account), the startup experience could be very rewarding and exciting, I mean, even if the startup will not be a success.
Your path is pretty different from the traditional Italian CS graduate. Why do you think most people just try to get a boring job in consulting and don’t try to just build cool stuff?
I think that in Italy for cultural reasons we tend to do the boring-but-sure path. From what I understand from chatting with people, only a few of them are willing to do extra work for long-term rewarding opportunities. People should probably start to shift their mindset. After all what is worse than doing something you don’t care about? Especially in Italy where your IT company is not exactly as an exciting place as VMware, or Twitter or Google.
Also in our country many times programmers are paid too little for their work in a company, so it is not so hard to get more earnings even from your single-man-band business.
But it is true that startups need a fresh economy and a modern state, to grow up well, without bureaucracy and this is not what I see if I look at the Italian economic environment.
Do you think it’s harder to succeed while living in Italy, and Sicily in particular?
If your target is the world, being here is not a big limit for a programmer. The majority of interesting things are happening on the internet nowadays anyway. I mean, here or in Paris is almost the same. What could make a difference is here,or in the bay area.
But if you plan to create a startup that targets your region or country, Italy, and Sicily are not the best places to stay for sure. For instance the company I advise, Kiurma, is located in Sicily but focused on customers in the North of Italy, Europe, and the US.
Could you tell us more about Redis? How was it born, why is it awesome, and why should we use it in our applications?
Redis was born almost two years ago, as the result of a need. At the time I was experimenting with a real time analytics service called lloogg.com (right now the site is online, but I have no interest in doing business with it). With MySQL it was very hard to scale, since it is a very write-intensive application. A page-view in any site with our java script code would result in a DB write operation, and that’s a lot of writes per second.
The web application of lloogg was an ajax app to show the site traffic in real time. So what I needed was a DB handling fast writes, and fast ”get latest N items” operation.
If you are a programmer, you know how a linked list can solve these kinds of problems, so I started wondering, why on the earth is so hard to model this with MySQL with decent performance? Why there is no database that is able to natively handle the natural ordering of items, that is, I put things inside with this order, so it should be fast to get the latest N items. After these considerations, I started coding a prototype of the system, and shared the first beta on Hacker News, receiving good feedback.
Why should you use it? For two reasons I think. One is that for the right use cases, Redis is really a game changer performance-wise. If your data are in size the kind of order of magnitude that can fit in memory, you can scale to an incredible number of users with just one database box. This means lower costs, fewer problems.
Another reason for using Redis is the following. In the field of programming languages there is a motto: a programming language is worth learning if it is different enough from all you already know to change your mind, exposing you to new abstractions. Well I think Redis definitely is a really different database, and will change the way you think about your data.
And now a few questions from the Italian Startup Scene group on Facebook.
Andrea Reginato asks: “How did you convince VMWare into sponsoring your work on Redis?”
Actually VMware contacted me! And in a very interesting way. One of the smartest guys I know at VMware started contacting me about the design of Redis internals, with very compelling technical arguments. Our discussion simply evolved into the hiring process. At the time I had offers from a few companies, but I wanted to join VMware because in my opinion this was the best “home” for Redis. As a company with high technical value, with a focus on cloud technologies, I think that after a year I can say that this was the best pick.
Francesco Sullo asks: “Given the awesome performance of Redis, did you ever plan a persistent mode for the future? I know that Redis was born to manage processes in-memory, but a db version, even if seriously limited, could be a great alternative in many cases.”
Our main focus is on the in-memory back-end, but actually we already have a disk back-end that is called Virtual Memory and is something like the swap file of Redis, where values rarely used are swapped out in order to reclaim memory. This feature is present in both Redis 2.0 and the upcoming 2.2 but I’m not happy with the implementation, so the new focus is on the ‘diskstore’ feature. Diskstore is a combination of an on-disk key value store and an in-memory object cache. So in this special mode Redis takes everything on disk but loads the ‘working set’ (the keys you use more often) on memory. When a key changes it gets asynchronously flushed on disk by another thread. All this is currently implemented in the ‘unstable’ branch of Redis on github. The next version of Redis, 2.4, will drop support for Virtual Memory and will instead just support diskstore.
Salvatore, thanks so much for taking the time to answer this questions. I hope, and I’m sure, they’ll inspire someone to take your path.
By the way: To read other interesting entrepreneurial stories, tech events and funding opportunities, please make sure to also subscribe to our weekly EU-Startups Newsletter.