I am a software platform builder. I joined Docker last week, to help Solomon and the Docker team build the distributed computing platform we need for the next decade, as software eats the world and is assembled in systems composed of high number of devices collaborating with even higher numbers of cloud services: a future where the paint covering the walls of your house will host thousands of units of computing, some of them getting power from the Sun, others collaborating with millions of cloud services.
Because of Netscape: in 1995, I was in a startup building a client/server IDE and started playing with Netscape Navigator. After a few months using it, I realized that the concepts introduced by Tim Berners-Lee with the web, delivered to the user in the easy to use implementation of the Netscape browser, would change the way we built and consumed applications. I joined Netscape a few years later, and the rest of my career was spent building platforms in the context of this new web paradigm.
In the past 5 years, I have specialized in cloud platforms, which I describe as a commoditization of distributed computing. I have experienced many approaches to building, packaging and operating distributed apps.
When I started using Docker in 2014, I had the same epiphany I had twenty years ago with Netscape. Docker is a platform for building the next generation of distributed applications, defining elegant and extensible abstractions, implemented in a user-friendly tool for developers and sysadmins – a command line interface is friendly to these users. Tools affect the way we think about, perceive and act upon the world, and Docker, like the browser before it, is one of these tools that grows on you. The more I used it, the more it changed the way I thought about problems.
One example of this happened a few months ago when I trained a team at Microsoft about Docker and its ecosystem. I wanted to go over examples from my azure-linux set of tutorials, explaining how to setup a Linux cluster on Azure and use different Docker orchestration tools. The tutorial required a recent version of docker, building docker-machine yourself, Python, pip, NodeJS, npm, and the Azure client SDK. Most of my colleagues had Windows laptops. Two years ago, I would have provided them a hand crafted Hyper-V VM. One year ago, I would have given them a Vagrant box with everything pre-installed. This time, I had them provision a Docker on Ubuntu VM from the Azure portal, SSH to it using either Putty or Cygwin, then use the chanezon/azure-linux container where all the tools were installed. The realization here was: once you have Docker on a Linux box, you can run anything that has been packaged as an image. Ahmet Alp Balkan and many teams at Microsoft are working on making it true for Windows as well. During the tutorial, this led to something like this, to provision new Docker machines in Azure, and list containers running on them.
After running containers for applications in Go, Python, Node and Java, and setting up various Docker orchestration systems, I became convinced that Docker will become an indispensable tool for developers and operations as they inject some software magic in every part of our lives.
In 2 years, Docker revolutionized the cloud market. I am not as a sophisticated mapper as Simon Wardley, but here’s my rough map of the cloud market: by introducing that new container category, and the portability that containers allow for hybrid and multi-cloud scenarios, Docker will play a central role for every player in that market. It affects both developers and IT Professionals, and provides them the right set of interfaces and abstractions to implement a Devops approach.
What will I be doing?
My main role has been evangelism for the past 10 years. At Docker, I will go back to building and spend more time coding, with Solomon Hykes, on platform aspects. I will also do a bit of evangelism and storytelling, because I love it so much. In the next few months, come chat with me if you’re at Devoxx France, Cloud Foundry Summit or Devoxx UK.
How to Docker?
So how do you Dockerize your application? I will describe a simple example, with the Dockerfile for the use case I described above.
Then I specify two volumes, that the user of this container can mount: /usr/data where you would typically mount the directory where you keep your ssh keys, ~/.ssh, and /root/.docker where you would mount either ~/.docker, or another directory where you want to keep the certs and meta data that docker-machine will create so that they can be reused over several container invocations.
This flexible setup allows you to decouple the versions docker-machine, azure sdk, azure cross platform cli, or docker client that you use from what you have installed on your machine. All you need installed locally is a recent version of docker.
I spent a few hours in my first week at Docker creating a reusable container that can be used as a command line: chanezon/dockerized. It lets you know who started at Docker recently and why, from the comfort of your terminal, without going to a browser. You could run it as a cron job as well, piping the output to an email notification.
docker run -ti chanezon/dockerized
will list people who started recently, a link and title of their starting blog post
docker run -ti chanezon/dockerized Chanezon -v
will output the text of the complete blog post for a specific person.
It is a Python script looking at the Docker blog feed and content.
This example may seem trivial, but it illustrates how, once you start to think in terms of containers, building, shipping and running your software creations, from the simplest of the command lines, to the most complex microservice architecture, becomes much easier.
Happy 2nd birthday Docker!
I feel very lucky to start right in time for Docker’s second birthday. This week we are hosting an open-source-a-thon, with over a dozen open-source-a-thon parties around the world: this is a good opportunity to learn about Docker, contribute to the project, help save blue whales, and boldly go where no open source contributor has gone before!
I spent most of my career competing with Microsoft, at Netscape, Sun, Google and VMware. Competition builds respect, competitors force you to question your assumptions and to constantly evolve. For many of my friends, this move came as a total shock. What made me open to the idea of joining Microsoft is a presentation from Scott Guthrie about Windows Azure at NodeConf 2012 last summer. He presented from a Mac laptop, launched Google Chrome, went to the Cloud9 IDE, edited a Node app pulled from Github, and pushed it to Azure from the cloud IDE: to me this indicated a real change of mentality at Microsoft, and a new openness. Clearly they had listened to what developers ask from a cloud platform. Later on, when my friend Srikanth Satyanarayana pinged me to start conversations with Microsoft, I was open to it. I met with Satya Nadella, and realized that our visions for where the cloud was going were very aligned. Further conversations with Scott Guthrie about Azure, John Shewchuk and Steve Guggenheimer about developer evangelism convinced me this was an adventure I had to take!
Joining Microsoft boils down to 4 reasons: People, Learning, Technology, Impact.
People: in my late 30’s I realized that the people you work with, for and around are as important as what you’re working on. Microsoft has many people I have admired from the outside, like Dare Obasanjo, Eric Meijer, Scott Guthrie, Jon Udell, Scott Hanselman, Jeff Sandquist, Andrew Shuman or Anders Hejlsberg. The team I join has a fantastic roster of A-players with whom I’ll have fun and from whom I will learn.
Learning: I’m a learner at heart. I am curious, I read a lot, and I like to learn from people I work with. I also love to share what I learned with others. My kids loved this book called My Friends, by Taro Gomi, which goes like this: “I learned to walk from my friend the cat, I learned to jump from my friend the dog…”.
In my career it worked the same way: I learned algorithmic from my teacher Christian Vial, I learned internet protocols from my friend Nicolas Pioch, I learned open source from my friend Alejandro Abdelnur, I learned social media from my friend Loic Lemeur, I learned developer relations from my friend Vic Gundotra, I learned platform strategy and storytelling from my friend Charles Fitzgerald… I love doing developer relations, and my two mentors in this area over the past 8 years, Vic and Charles, both came from the Microsoft DPE team. I’m coming to the source for more learning. This team is more than a 1000 people worldwide, and over the past 10 years they defined what tech evangelism is about: they operate at a larger scale and cover a wider scope than any of the teams I worked with. I am very excited to join them.
Technology: Windows Azure is Enterprise ready, more open than people think, and is a complete platform, from infrastructure to services, mobile and Big Data. Azure has matured a lot in the past few years, it covers IaaS, PaaS and Saas, their Paas service is multi-framework and multi-service, with a marketplace of add-ons, it has a mobile backend as a service for Windows Phone, iOS, Android and HTML5, and includes Hadoop and Big Data services. It is in production today, has been battle tested for years as the base for many Microsoft first party apps and services, and is ready for the Enterprise, with a true public/private/hybrid solution: with Windows Server 2013, System Center and Azure you can start building your hybrid cloud today.. The team ships important new features regularly, my favorite being the point to site and software vpn features announced a few weeks ago, which will drastically lower the barrier to create hybrid clouds. Azure is not a Windows/.NET only platform, it is more open than people give it credit for: you can provision Linux VMs, and the PaaS supports .NET, Java, PHP, Node, Python, Ruby, with open source (Apache 2 license) SDKs on Github and an Eclipse plugin, built by the Microsoft Open Technologies team. Scott Guthrie gives a very good overview of Windows Azure in this video from the Windows Azure Conf 3 weeks ago.
Impact: as a kid, I was reading a lot of science fiction, and got my first computer (a TRS-80) when I was 10 years old. As I explain in many of my presentations (like Portrait of the developer as The Artist), my childhood dreams were to change the world through technology, and more specifically computers. My dreams are far from being fulfilled today: it is true that we have more powerful machines and software tools, and technology changed the world in many aspects, but machines are still hard to program, and software engineering needs to evolve to let us work at a higher level of abstraction.
The move to a devices and services world is an important architecture change like we see every 20 years in the software industry. Cloud platforms have the potential to help developers build smarter applications faster, and change entire areas of the human experience. It has started to happen in the consumer applications space, but the next big wave of change is the consumerization of Enterprise IT, where developers and IT professionals can completely transform the way enterprises work, driving business value faster, enabling new capabilities and business models. My goal is to help them in this transformation, and Microsoft is the place where I can have the most impact.
Here’s a quick video to summarize it all: developers, developers, developers, think big and look up at the sky, its color is Azure!
My last day at VMware was april 6th 2013: I loved every bit of these 18 months building a worldwide and world class developer relations team of 21 star developer advocates, program managers and community site builders for Spring and Cloud Foundry. We had fun, accomplished and learned a lot.
I strongly believed in the “go big or go home” strategy led by Paul Maritz and Tod Nielsen, going up stack from VMware’s stronghold in Infrastructure as a Service (IaaS) to Platform as a Service (Cloud Foundry), developer tools (Wavemaker) and frameworks (Spring), and Software as a Service (Horizon, Socialcast, Sliderocket, Zimbra).
I am proud of the work we did in VMware developer relations, engaging with developers around the world to help them become more agile, drive business value, and change the world with software, by leveraging cloud platforms and modern development frameworks.
We helped the Spring community grow, brought SpringOne to China and India, and helped create a strong developer and partner community around Cloud Foundry, with 13 Cloud Foundry Open Tour events around the world, and technical presentations at 130 developer conferences in 2012. One aspect that I am particularly proud of, as a manager, is the culture of innovation and getting things done we built in that team in 18 short months.
As many of you know, it is an understatement to say that I am an avid reader. In 2012, 3 business books particularly inspired me: “Who Moved My Cheese?” by Spencer Johnson, “The Start-up of You”, by LinkedIn founder Reid Hoffman, and Clayton “Innovator’s Dilemma” Christensen “How Will You Measure Your Life?”. What these 3 books have in common is advocating for an active management of your career based on your own priorities, goals and values, embracing change instead of fighting it, and being open to emergent opportunities.
Pivotal represented a big change, for my team and myself. When planning the organization for Pivotal developer relations, I got pinged by a friend with a super exciting opportunity outside of VMware and decided to do a pivot of my own. I built a plan for Pivotal developer relations, covering Cloud and Big Data, transitioned the team to Adam Fitzgerald, left VMware and, being French, took a month of vacations:-)
It is always bittersweet to leave a team you love working with, but my new gig is too exciting to look back. Thank you VMware for these excellent 18 months, and good luck with your new adventure Pivotal team! I want to specially thank Charles Fitzgerald, who was my manager, but whom I consider more like a mentor and a friend, for teaching me developer platform strategy and evangelism, Tod Nielsen and Mark Brewer for hiring me at VMware and giving my team the means to tell developers the VMware platform story, Mark Lucovsky, Derek Collison, Vadim Spivak, Ramnivas Laddad and their teams for building Cloud Foundry and Bosh, the Spring team for enabling Java developers to be more productive, Jerry Chen, Killian Murphy and their teams in products, David McJannet, Dekel Tankel and their marketing team, James Watters for building such an impressive ecosystem of partners, and being an awesome voice on Twitter, Alan Ren for his relentless energy building the VMware engineering team in China.
But above all, I want to thank my team: Adam Fitzgerald, Josh Long, Andy Piper, Raja Rao, Chris Richardson, Frank Yu, Eric Bottard, Rajdeep Dua, Toshihiko Ikeda, Alvaro Videla, Monica Wilkinson, Peter Ledbrook, Scott Frederick, Tamao Nakahara, Danny Gamboa, Amy Welch, Christina Jones, Corrine Bai, Giorgio Besso, Dararith Ourk, Chloe Jackson, Loc Nguyen, Magizh Thirunavukkarasu,
you will always have a special place in my heart, and I wish you all success at Pivotal or elsewhere for those who have left the team.
I will post more details about my new job on Monday. In the meantime, I took advantage of this month of spring vacations to shoot some fun videos in different places I visited, as a homage to you, developers I interacted with around the world, in the past 8 years doing developer relations at Google and VMware. They are inspired by Bob Dylan’s Subterranean Homesick Blues video, in the movie Don’t Look Back. I call them Subterranean Developer Blues!
Two days ago I attended Waza, Heroku’s first developer conference, “a free developer event for the study of technique” (Waza means technique in Judo and Aikido).
It was a very good event, held at Yoshi’s San Francisco, a wonderful jazz club/japanese restaurant. The choice of venue meant they kept the event small, I counted between 200-300 developers, but there were cameras everywhere, and all talks were taped, so I expect the videos from the talks to be published soon. Holding the event in a jazz club made it very convivial, there were tables, couches and seats everywhere, which favored small groups gatherings and conversations, and that part worked really well, I saw developers in conversations everywhere. They also had alcoves specialized by topic (Java, Ruby, Data) where you could come sit down and ask questions to Heroku staff. Heroku is now part of Salesforce.com, and you could feel the powerful Salesforce marketing machine behind the event organization: stylish decoration, with a purple theme, including purple lightning in the whole venue, Japanese theme, exquisite sushis and finger food, green tea and even drip coffee.
What worked a bit less well were the rooms: the large concert room holds 300 people comfortably, but the 3 rooms were other sessions were hosted held between 20-50 people maximum, it was hard to hear and you had to stand during the sessions.
Here are a few pictures I took at the conference, to give you an idea of the atmosphere.
The talks I found the most interesting were:
Smashing Your App Into Pieces, by Josh Kalderimis (@joshkalderimis) from the Travis CI project. The gist of the talk is that a polyglot PaaS platform enables you to split your monolithic app coded in a single language, in several very focused services that focus on one concern and use the best tool and language to perform that service. He gave the example of the Travis CI open source project that he contributes to, where they refactored the initial ruby app in several more focused apps: they ditched Resque to use RabbitMQ for messaging, Travis Hub is deployed on JRuby 1.6.5 so that it can use the Java Rabbit drivers, and Travis Core runs on Ruby 1.9.2. Since Cloud Foundry is a great platform to deploy polyglot apps (with Java, Ruby and Rabbit support out of the box), this argument resonated very well with me.
Build As A Service, by David Dollar from Heroku (@ddollar), about Heroku’s buildpacks and the vulcan build server that is at the base of their whole polyglot strategy. A cool aspect of buildpacks is that by specifying –buildpack git-repo-url-for-your-buidpack, you can configure your app to run on a custom version of whatever platform it runs on (ruby, node,…).
Add-ons: Inception to Implementation, by Chris Continanza (@em_csquared) from Heroku. This one was my favorite after Rob’s. Chris explained how their add-on self service system works for add-on providers. They define a simple api with 4 calls that you have to implement: provision, deprovision, change plan, single sign on, and a gem, kensa, to help you develop and test the add-on. This is simple and seems easy to use. I wonder if it would work as a mechanism to add services to Cloud Foundry. I need to dig into this:-)
Concurrency Is Not Parallelism, by Rob Pike (@rob_pike) from Google. Rob as usual a great speaker, with a lot of food for thought. The session was about the distinction between concurrency, which is about how to structure a program, and parallelism, which is about its execution, and the fact that the Go programming language has very natural constructs to structure concurrent programs, that may be parallelizable. One example he gave at the end that made sense to me is Sawzall, a programming language he created a few years ago, to make it easier to script MapReduce jobs, that is parallel but does not let you express concurrency. The main message of his talk was: go read C. A. R. Hoare’s 1978 paper “Communicating sequential processes” (context on wikipedia), which influenced the design of Go.
Overall this was a great event, very polished, with some solid and interesting talks, both specific to Heroku’s platform, and some more generally applicable to any application you are building using any cloud service. I will update this post when the videos and slides for the talks have been published.
On the Cloud Foundry side, our developer events so far have been a bit more grassroots, like Google developer events in the early days: no sushi, concert, sake or drip coffee: just engineers, source code, demos, presos and pizza:-) Next week, tuesday 1/17, the Silicon Valley Cloud Computing Group organizes a meetup about Cloud Foundry in Palo Alto. We were initially planning to host it at the VMware cafeteria, but 600 developers signed up, so we had to move it to the Crowne Plaza. I hope to see many of you there, it should be fun. If you are coming and don’t have a Cloud Foundry account yet, you can signup with this promo code to get your account right away.
In july 2005 I joined Google as AdWords API evangelist, to start developer relations, be the public friendly face for developers, of a company mostly driven by algorithms, with little human front end. Google then had 3000 employees, and 5 developer products.
I learned a lot, had fun, and made many friends at Google and outside, all over the world, in the past 6 years, building developer ecosystems for Google services in Ads, Commerce, Social, Browser and Cloud. I worked with many partners, gave talks at numerous conferences and GTUGs (30-50 talks/year in the past few years), traveled a lot, and met thousands of developers who are changing the world with code.
On tuesday, I joined VMware as Senior Director, Developer Relations, to help them build their developer relations team. I love Google but this is an opportunity that I could not resist!
In the past 2 years I managed the Google Cloud and Apps Developer Relations team, focused on the Google App Engine Cloud Platform and Google Apps collaboration suite (special thanks to +Simon Meacham for taking over the team from me). I believe that the move of software and data to the Cloud is a profound architecture transition like we see every 15 years (the previous ones being mainframe, client-server, web). Modern HTML5 browsers, as well as mobile platforms like iOS and Android represent the client side of this transformation, the server side being a set of software, platform and infrastructure delivered as services, and known as Cloud computing. Nick Carr has a good layman explanation of this transition in his book The Big Switch, where he likens it to the industrialization of electricity in the beginning of the 20th century, and if you prefer a video, Simon Wardley‘s 2009 OSCON talk Cloud Computing – Why IT matters is full of wisdom and fun to watch, on that same topic.
In the same way the tech industry has put a PC (or Mac), with a big pile of software, on everyone’s desk in the 30 years from 1980 to 2010, the next 15 years will be about getting a mobile device in everyone’s hands, with myriads of cloud services to make them useful. Apple, Google, Amazon, Facebook and others will provide most of the consumer Cloud services, with many vertical players like Netflix. But a huge market is Enterprises moving their software to the Cloud. After talking to many customers in the past 2 years, I realized that there are 2 requirements for Cloud services for Enterprise: they must be based on open source and open standards, to avoid lock-in and allow the level of control Enterprises want to have, and must provide the ability to create private, public and hybrid clouds. It is true for Enterprises, Governments, the military (cf my talk AFCEA C4I Symposium: The 4th C in C4I Stands for Cloud), and even consumer startups once they start to scale.
6 months ago Vint Cerf came to give a talk to our team, and explained that when he was young, standardizing how machines talked together, with TCP/IP was a great career opportunity for him, and that today the same opportunity existed for standardizing Cloud technologies. In april VMWare released an open source Platform as a Service (PaaS) called Cloud Foundry. It is multi-language/frameworks, multi-service, and multi-clouds (private, public, hybrid). When I saw it launch I recognized the open source platform that could become the de facto standard for Cloud platforms, public and private, the same way TCP/IP standardized how machines communicate. My favorite industry analyst, James Governor, understood right away what Cloud Foundry means for the industry.
I had been following VMware for a few years, seeing Paul Maritz and his team avoid the innovator’s dilemma associated with their stronghold in IaaS, following a “go big or go home” strategy, embracing PaaS and SaaS through clever acquisitions and product creation over the whole value chain, assembling the whole Cloud stack from both ends: virtualization products at the IaaS bottom layer, for sysadmins, Zimbra, Sliderocket and Horizon at the top SaaS layer, for end users, and Cloud Foundry in the middle PaaS layer, for developers. Add SpringSource developer tools and frameworks, and you have the start of a very strong developer story. VMware is going to lead the cloud enterprise cloud transition, and while today they talk mostly to IT departments, Devops and Sysadmins, I strongly believe that they are going to become the first provider of cloud technology for developers: I am joining them to build their developer relations team, help them write and tell that story.
When I wrote the draft for this post I started a long list of people to thank, then realized that between Googlers, partners, developers I met at conferences, GTUG members and organizers, bloggers, analysts, journalists, conference organizers, there would be more than a thousand people, and I would surely forget someone. The better idea for that kind of things is to crowdsource it! If we worked, or interacted together in the context of my role in Google developer relations in the past 6 years, please tell an anecdote on this Google+ thread (or this Facebook post, or with the #patgoogle on Twitter if you are not on Google+). I loved every bit of my time at Google, thanks to all of you, and will cherish these actualized memories. Plus, it will make it easier to create a circle called: “People from my golden years at Google”:-)
Took me 10 minutes to create this, it was so fun that it even enticed me to start blogging again:-)
Now I wish that Blekko would implement the delicious integration themselves to avoid the need for file download, unix manipulation and file upload: that’s what APIs are for. On the other hand, this could be implemented as a Chrome Extension.
I spent the past 2 nights in Singapore coding a fun literary experiment: I was initially planning to Tweet Joyce’s Ulysses the 16th of June, Bloomsday, with some friends. But I realized it was too late for that. Then I decided to crowdsource it, and created a Mechanical Irish using Google Appengine Python.
Please try out BloomTweets and spread the word: I need around 2000 volunteers to tweet the whole book.
The app will let you login to Twitter, then take a fragment of 10 lines, and reduce it to one or two tweets of 120 characters, each assigned to a Twitter user I created for the characters.
Your post will go to your Twitter status.
When I have some time, in the next few days, I will write a cron job to post all the Tweets by their various characters, and Twitter user bloomsday09 will retweet the whole book.
You can find more details about the project in the about page.
It was a fun experiment to code, I hope there will be enough enthusiasts to tweet until “heart was going like mad and yes I said yes I will Yes.”
I installed the Google Friend Connect WordPress plugin that Matt Cutt’s team built, on this blog: go to the bottom of this post and join the site to comment on my blog, no more form to fill out. What is nice with this integration is that the commenting system is still the wordpress native system, and not a foreign widget, so I can still use the akismet spam detection engine, and use the wordpress admin to moderate the comments.