<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    

    <meta name="author" content="The Apache Software Foundation">

    
      <meta name="keywords" content="python,libcloud,cloud,cloud computing,rackspace,amazon ec2,cloudfiles,openstack,cloudstack" />
    

    
      <title>Apache Libcloud | Apache Libcloud</title>
    

    <!-- fav icons -->
    <link rel="shortcut icon" href="/images/favicon.png" />
    <link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
    <link rel="apple-touch-icon-precomposed" href="/images/apple-touch-icon.png" />

    <link href="/blog/atom.xml" type="application/atom+xml" rel="alternate" title="Apache Libcloud Blog Feed" />

    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,400italic' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>

    <!-- Facebook OpenGraph tags -->
    <meta content="Apache Libcloud" property="og:site_name">
    
      <meta content="Apache Libcloud" property="og:title">
    

    

    

    
      <meta content="website" property="og:type">
    

    
      <meta content="https://libcloud.apache.org/blog/tags/conferences" property="og:url">
    
    

    

    <link href='/assets/global-65cb02d51c06fd59d8bad76819cec955.css' rel='stylesheet' type='text/css' />
  </head>

  <body data-spy="scroll" data-target=".sidebar-nav" data-offset="80">
    <nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="/index.html"><img src="/images/libcloud_logo.png" class="navbar-logo" /> Apache Libcloud</a>
        </div>
        <div class="collapse navbar-collapse navbar-ex1-collapse">
          <ul class="nav navbar-nav">
            
            
              <li ><a href="/" >Home</a></li>
            
              <li ><a href="/about.html" >About</a></li>
            
              <li ><a href="/getting-started.html" >Quick Start</a></li>
            
              <li ><a href="https://libcloud.readthedocs.org/en/stable/" target="_blank">Documentation</a></li>
            
              <li ><a href="/downloads.html" >Downloads</a></li>
            
              <li ><a href="/community.html" >Community</a></li>
            
              <li ><a href="/blog/" >Blog</a></li>
            
          </ul>
        </div><!-- /.navbar-collapse -->
      </div><!-- /.container -->
    </nav>

    <div class="container main-container">
      <div class="row section page-content">
  <div class="col-lg-8 col-lg-offset-2">
    <h1>Tag: conferences</h1>



  
    <div class="post">
  
    <h2><a href="/blog/2014/07/07/libcloud-5th-birthday-celebration-during-europython-week-in-berlin.html">Libcloud's 5th birthday celebration during EuroPython week in Berlin</a></h2>
  
  <span class="post-date-author">By Tomaz Muraus on Jul 07, 2014</span>

  <div class="post-content">
    <p>On July 23nd of this year it will be exactly 5 years from the initial project
announcement on the <a href="http://web.archive.org/web/20120517182502/https://www.cloudkick.com/blog/2009/jul/23/libcloud-announced/">Cloudkick blog</a>.</p>

<p>We are going to celebrate this great milestone with a cake and drinks and we
would like to invite you to join us. The celebration will take place in a nice
bar during the <a href="https://ep2014.europython.eu/en/">EuroPython week</a> in Berlin, Germany.</p>

<div class="imginline">
  <p><img src="/images/posts/2014-07-07-libcloud-5th-birthday-celebration-during-europython-week-in-berlin/cake.png" class="img-responsive inline" /></p>
  <p class="img-caption">The cake is not a lie!</p>
</div>

<p>Celebration will be attended by Libcloud developers so this is also a great
opportunity for you to meet and hang with us in real-life and ask any questions
you might have about the project.</p>

<div class="imginline">
  <p><a href="https://www.eventbrite.com/e/apache-libclouds-5th-birthday-celebration-tickets-12180609531" target="_blank"><img src="/images/posts/2014-07-07-libcloud-5th-birthday-celebration-during-europython-week-in-berlin/eventbrite_page.jpg" class="img-responsive inline" /></a></p>
  <p class="img-caption">For more information visit the eventbrite page.</p>
</div>

<p>For more information, exact location and RSVP, please refer to the
<a href="https://www.eventbrite.com/e/apache-libclouds-5th-birthday-celebration-tickets-12180609531">Eventbrite page</a>. Keep in mind that RSVP is mandatory if you want to
attend the celebration.</p>


  </div>

  <div class="row section post-meta">
    <div class="col-md-12 post-tags">
      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a href="/blog/tags/conferences.html" rel="tag">conferences</a>, <a href="/blog/tags/events.html" rel="tag">events</a>, <a href="/blog/tags/celebrations.html" rel="tag">celebrations</a></p>
    </div>
  </div>
</div>

  

  
    <div class="post">
  
    <h2><a href="/blog/2014/04/15/libcloud-at-apachecon.html">ApacheCon and CloudStack Collaboration conference presnetations</a></h2>
  
  <span class="post-date-author">By Tomaz Muraus on Apr 15, 2014</span>

  <div class="post-content">
    <p>Last week <a href="http://events.linuxfoundation.org/events/apachecon-north-america">ApacheCon North America</a> and <a href="http://events.linuxfoundation.org/events/cloudstack-collaboration-conference-north-america">CloudStack Collaboration
Conference</a> took place in Denver, Colorado.</p>

<div class="imginline">
  <p><a href="http://events.linuxfoundation.org/events/apachecon-north-america" target="_blank">
  <img src="/images/apachecon_denver.png" class="img-responsive inline" />
  </a></p>
</div>

<p>During that week multiple presentations about Libcloud took place. In
this post I’m including links to the slides of some of those
presentations:</p>

<ul>
  <li><a href="http://www.slideshare.net/sebastiengoasguen/apache-libcloud">Apache Libcloud by Sebastien Goasguen</a> - Sebastien had a great introductory
presentation about Libcloud. His presentation also included a great demo
of using Libcloud’s deploy_node functionality to deploy a Worpdress blog on
Exoscale.</li>
  <li><a href="https://www.mist.io">Mobile, multi-cloud management on top of libcloud by Dimitris Moraitis</a> -
Dimitris presented how they utilize Libcloud at <a href="https://www.mist.io">mist.io</a>.</li>
</ul>

<div class="imginline">
  <p><img src="/images/posts/sacon.jpg" class="img-responsive inline" /></p>
  <p>Sebastien delivering his talk.</p>
</div>

<p><em>I was also supposed to deliver a presentation about Libcloud’s history,
evolution and lessons learned, but due to severe tonsillitis which has been
strecthing for over 3 weeks, I sadly had to cancel my talk.</em></p>


  </div>

  <div class="row section post-meta">
    <div class="col-md-12 post-tags">
      <p>Tags: <a href="/blog/tags/conferences.html" rel="tag">conferences</a>, <a href="/blog/tags/apachecon.html" rel="tag">apachecon</a>, <a href="/blog/tags/ccna.html" rel="tag">ccna</a>, <a href="/blog/tags/presentations.html" rel="tag">presentations</a></p>
    </div>
  </div>
</div>

  


  </div>
</div>


      <hr />

      <footer>
        <div class="row">
          <div class="col-lg-12 text-center">
            <div class="footer-links">
  <p><a href="http://www.apache.org/licenses/">License</a> | <a
  href="/security.html">Security</a> | <a
  href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a> |
  <a href="http://www.apache.org/foundation/thanks.html">Thanks</a> |
  <a href="/credits.html">Credits</a> | <a href="/media.html">Media</a>
</div>

<div class="footer-text">
  <p class="">Copyright &copy; 2009-2022 <a href="https://www.apache.org/" target="_blank">The Apache Software Foundation</a></p>
  <p class="">Apache Libcloud, Libcloud, Apache, the Apache feather, and the Apache Libcloud project logo are trademarks of the Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
  <p class="">Site last updated on 2022-03-29 14:07:29 +0200</p>
</div>

          </div>
        </div>
      </footer>

    </div><!-- /.container -->

    <!-- JavaScript -->
    <script src='/assets/global-ca31c129d340dc3d6b63a2ade2b830c6.js' type='text/javascript'></script>

    

    <script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-23580482-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>

  </body>
</html>
