This post is part of the OpenStack Open Mic series to spotlight the people who have helped make OpenStack successful. Each week, a new contributor will step up to the mic and answer five questions about OpenStack, cloud, careers and what they do for fun.
Alessandro Pilotti is the CEO of Cloudbase Solutions, a company focused on cloud computing interoperability based in Verona, Italy and Timisoara, Romania. Cloudbase Solutions provides the integration between OpenStack and Windows, including the Hyper-V compute driver and Cloudbase-Init (Cloud-Init for Windows).
Alessandro is currently an MVP on ASP .Net / Internet Information Services and a Windows Azure Insider, holds a master in computer science, various certifications in the IT domain (MCSD, MCSE, MCDBA, RHCE). He enjoys doing technical speeches, developing open source projects and participating in the IT community life in general.
When not coding, consulting or training, he is flying with his paraglider into old fashioned clouds. You can follow him on twitter at: @cloudbaseit.
1. What do you think is the coolest thing that’s happened with OpenStack over the past three years?
Well, obviously the reintroduction of Hyper-V starting with OpenStack Folsom. I’ve always been a huge fan of interoperability and what we are doing is helping bridging the gap between Microsoft based infrastructures and the open source world. Being able to choose among a huge range of underlying technologies is one of the strong points in OpenStack and I’m definitely proud to be part of this effort. So far the work I’m doing with my team includes the Nova Hyper-V compute agent, Neutron Hyper-V plugin and agent, Ceilometer Hyper-V compute inspector, Windows guests support (Cloudbase-Init) and way more. All this stuff has been released during only one year and we have a lot more in the works for the upcoming releases!
2. What behavior has helped get you the furthest as a developer?
I’d say being open minded and driven by passion is what helped me the most. This is for sure more a craft than a job, which requires a very well balanced mix of logic, creativity and analytic skills. Unlike most other crafts, our tools change and evolve continuously, which means that a consistent amount of time needs to be dedicated to reading about new stuff and trying it. I’d divide the skill set required to make a good developer in four main areas: coding, architecture, testing and sysadmin skills. In cloud computing we are also witnessing a very interesting effect: the two main IT categories, developers and sysadmins are merging into this new figure: the devop. Basically a convergence between sysadmins with scripting skills and devs with os knowledge. The former usually lack on the coding and architectural side (e.g.: design patterns) and the latter on the sysadmin side, so my strong suggestion here is to invest as much time as possible in closing up the gap, whatever side you are in.
One thing that definitely helped a lot in shaping my skillset was to learn early on how to use directly the operating system APIs as much as possible. Back in the day there was no choice, any decent application was written in C/C++ and that was it. The rise of bytecode based frameworks (Java. .Net) and dynamic languages (Python, Ruby, etc) added a big and confy layer between the developer and the underlying system, which means that nowadays developers have a hard time in getting stuff done that requires going beyond the framework limitations. You don’t even need to get your hands “dirty” with old school C/C++, Python offers modules like ctypes to get the job done easily, you just need to know what to do. All of our OpenStack contribution is entirely written in Python, if you take for example Cloudbase-Init there are quite a few examples of this type of coding.
I noticed that people tend to learn a language on a specific OS and environment and stick to it. IMO this will never give you that “plus” that will make you see things differently when needed, ending up in the “when all you have is a hammer, everything looks like a nail” situation instead.
There’s quite a lot to add, especially if you run a team, but that’s a different story!
3. How did you learn to code? Are you self-taught or did you learn in college? On-the-job?
A big mix of all three: self-taught while on-the-job plus the few bits that you can learn at college. Here’s how the story went:
I got an assembled 386DX based PC towards the end of high school, back in the very early ’90s and I started coding professionally almost right away on the first small projects. I’ve always been attracted by lots of different things, out of curiosity and awe for cool engineering. I started out coding in C++ on Windows 3.1 (don’t laugh, that’s what was available at the time!) which had a very solid set of APIs in common with what was going to be released as Windows NT, still in use nowadays in Windows Server 2012 R2. Due to the obvious limits of Windows 3.x and the inaccessibility of the Windows NT requirements (12MB of RAM were a preposterous amount those days for a poor student!) I moved on shortly afterwards to OS/2 (a true gem for its time) and Linux which was beginning its amazing story.
I didn’t leave Windows behind, but I started being happy with what Microsoft was releasing only from Windows 2000 onwards. Getting used to coding with the raw APIs and system calls on all those OSs proved to be an important school. I had a web development startup with some friends around mid 90′s and obviously the hosting servers used to be on the very cheap side running Linux, so that’s where I started getting my real sysadmin skills while the coding side was mostly boring PHP. Around 2001 I started doing lots of consulting and training in the Microsoft area as well. I started also collecting certifications: MCSD (both VS 6.0 and .Net), MCSE, MCDBA, MCT plus the Red Hat Certified Engineer (RHCE) certification on the other side. The M.Sc in computer science that I got in the meantime added more on the ability to quickly adapt to new subjects and on the math and logic side than real world skills.
4. Where is your happy place? Favorite place to visit, vacation, decompress?
When I’m not traveling around the planet I spend most of the time in Timisoara (Romania) where our HQ are located and this leaves almost no time for proper sleeping, let alone thinking about vacations! That said, whenever I can, I sneak out to Verona (Italy), spending time flying with my paraglider in the mountains close to Lake Garda. Here’s a picture of one of the take off areas:
I love the utter simplicity of this sport: it’s just a high tech rag with a harness, reserve parachute and a GPS that you can carry on your back. All you need are thermals to gain altitude (with potential energy being your only “fuel”) and you can experience some gorgeous views, an amazing sensation of freedom and quite a few funny adventures, especially if you end up landing in the middle of nowhere. Good pilots (not my case, heh) can fly 100-200km during a good day. Although my piloting skills are quite raw, especially since my airborne time is very limited lately, I can still brag that I’m one of the very few stackers that really got “in the cloud”.
5. What do you think OpenStack will be used for in 20 years, 50 years!?
I unfortunately don’t own a crystal orb, but IMO the cloud as we conceive it today will change radically quite soon. In the end, all this virtualization thing is quite prehistoric. IaaS tools today are largely focused on enabling operating systems created for physical environments to run in a virtualized one, with quite a lot of overhead dedicated to emulate physical machine behaviours which leads, among other drawbacks, to uselessly long boot times.
Hyper-V for example already introduced with the latest release a “second generation” virtual hardware which largery improves boot times by providing a slightly different boot process and removing devices which are useless in a virtual world. I’d bet that the future will bring more “cloud only” operating systems, which means that OpenStack will have to adapt very fast to whatever direction the technology will take.
OpenStack is getting very big and the issues that we experienced with the Havana release are showing that too many features are being proposed and implemented, without enough bandwidth on the review side. I truly hope and wish that we’ll be able to maintain the flexibility to adapt to new challenges in a timely fashion to reach the 20 years mark. 50 years? Intelligent OpenStack services/agents wearing black suits with dark glasses and public phone calls instead of RESTful APIs?