Permalink
Browse files

Regenerate website

  • Loading branch information...
1 parent 9d1873f commit 2a46b872e07dc9535e984287603f415ff96a6e6e @Kami committed Jul 23, 2012
View
2 2010/11/01/my-silicon-valley-and-cloudkick-experience.html
@@ -89,7 +89,7 @@ <h2 id='my_silicon_valley_and_cloudkick_experience'><a href='/2010/11/01/my-sili
<p>Oh, and how does the saying go again, &#8220;pics or it didn&#8217;t happen&#8221;.</p>
-<p><a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-03_18-10-58_524.jpg'><img alt='Golden Gate' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-03_18-10-58_524_thumb.jpg' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck8.JPG'><img alt='Mozilla HQ' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck8_thumb.JPG' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck30.jpg'><img alt='Team Cloudkick (minus Bjorn)' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck30_thumb.jpg' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-03_16-47-27_811.jpg'><img alt='Nice view on the city from the Clarendon Heights near the Sutro Tower' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-03_16-47-27_811_thumb.jpg' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-08-1716.40.57.jpg'><img alt='Stanford Campus' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-08-1716.40.57_thumb.jpg' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-02_17-14-36_80.jpg'><img alt='Golds Gym' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-02_17-14-36_80_thumb.jpg' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-16_19-27-19_791.jpg'><img alt='Spam, and lots of it' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-16_19-27-19_791_thumb.jpg' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/IMG_20100817_133705_large.jpg'><img alt='Watering the Apple by Russell Haering' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/IMG_20100817_133705_large_thumb.jpg' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/IMG_6665.JPG'><img alt='Cloudkick volunteer day at Muir Woods' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/IMG_6665_thumb.JPG' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck20.jpg'><img alt='Facebook lobby' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck20_thumb.jpg' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck6.JPG'><img alt='Google HQ' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck6_thumb.JPG' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-08-1710.36.08.jpg'><img alt='Yelps Doll' src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-08-1710.36.08_thumb.jpg' /></a></p>
+<p><a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-03_18-10-58_524.jpg'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-03_18-10-58_524_thumb.jpg' alt='Golden Gate' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck8.JPG'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck8_thumb.JPG' alt='Mozilla HQ' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck30.jpg'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck30_thumb.jpg' alt='Team Cloudkick (minus Bjorn)' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-03_16-47-27_811.jpg'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-03_16-47-27_811_thumb.jpg' alt='Nice view on the city from the Clarendon Heights near the Sutro Tower' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-08-1716.40.57.jpg'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-08-1716.40.57_thumb.jpg' alt='Stanford Campus' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-02_17-14-36_80.jpg'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-02_17-14-36_80_thumb.jpg' alt='Golds Gym' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-16_19-27-19_791.jpg'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-07-16_19-27-19_791_thumb.jpg' alt='Spam, and lots of it' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/IMG_20100817_133705_large.jpg'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/IMG_20100817_133705_large_thumb.jpg' alt='Watering the Apple by Russell Haering' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/IMG_6665.JPG'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/IMG_6665_thumb.JPG' alt='Cloudkick volunteer day at Muir Woods' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck20.jpg'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck20_thumb.jpg' alt='Facebook lobby' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck6.JPG'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/ck6_thumb.JPG' alt='Google HQ' /></a> <a href='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-08-1710.36.08.jpg'><img src='/images/2010-11-01-my-silicon-valley-and-cloudkick-experience/2010-08-1710.36.08_thumb.jpg' alt='Yelps Doll' /></a></p>
</div>
<div class="postfooter">
<div class="posttags">Tags: <a href="/tags/misc.html">misc</a></div>
View
2 2011/01/25/libcloud-monthly-update-january-2011-libcloud-0-4-2-storage-api-pycon.html
@@ -68,7 +68,7 @@
<h2 id='libcloud_monthly_update_january_2011__libcloud_042_storage_api_pycon'><a href='/2011/01/25/libcloud-monthly-update-january-2011-libcloud-0-4-2-storage-api-pycon.html'>libcloud Monthly Update (January 2011) - libcloud 0.4.2, Storage API, Pycon</a></h2>
<p>Recently I have joined the libcloud team as a committer and I have decide to write a short status update post each month (actually, <a href='http://antirez.com/post/redis-weekly-update-1.html'>Redis weekly</a> has inspired me to post something like this - our posts won&#8217;t be so low-level but more of a general view of what&#8217;s going on with the project).</p>
-<div style='text-align: center;'><a target='_blank' href='http://incubator.apache.org/libcloud/'><img align='middle' style='border: none !important;' src='/images/libcloud_logo.png' /></a></div>
+<div style='text-align: center;'><a href='http://incubator.apache.org/libcloud/' target='_blank'><img src='/images/libcloud_logo.png' align='middle' style='border: none !important;' /></a></div>
<p>The post will summarize what was accomplished in the previous month, what is currently going on and what you can expect in the upcoming months.</p>
<p>I am going to start with an update for the January 2011.</p>
View
4 ...y-update-february-2011-amazon-driver-improvements-storage-api-libcloud-roadmap-pycon.html
@@ -70,7 +70,7 @@ <h2 id='libcloud_monthly_update_february_2011__amazon_driver_improvements_storag
<p>February is coming to an end and here is another libcloud monthly update post.</p>
<p>This month has been pretty busy for me and the storage API hasn&#8217;t progressed as much as I hoped, but nevertheless here is a short description of what has been going on in the past month.</p>
-<div style='text-align: center;'><a target='_blank' href='http://incubator.apache.org/libcloud/'><img align='middle' style='border: none !important;' src='/images/libcloud_logo.png' /></a></div><br />
+<div style='text-align: center;'><a href='http://incubator.apache.org/libcloud/' target='_blank'><img src='/images/libcloud_logo.png' align='middle' style='border: none !important;' /></a></div><br />
<h3 id='what_has_been_accomplished_in_february_2011'>What has been accomplished in February 2011</h3>
<ul>
@@ -98,7 +98,7 @@ <h3 id='what_is_currently_going_on'>What is currently going on</h3>
</ul>
<br />
<h3 id='libcloud_at_pycon_2011_march_11__march_17'>Libcloud at PyCon 2011 (March 11 - March 17)</h3>
-<div style='text-align: center;'><a target='_blank' href='http://mail-archives.apache.org/mod_mbox/incubator-libcloud/201102.mbox/%3CAANLkTimwn5Dm372VYZ4YVcgKQqbVVwxyo8=DMFtHoTwg@mail.gmail.com%3E'><img align='middle' style='border: none !important;' src='http://us.pycon.org/2011/site_media/static/img/badges/pycon-badge-200x60.png' /></a></div><br />
+<div style='text-align: center;'><a href='http://mail-archives.apache.org/mod_mbox/incubator-libcloud/201102.mbox/%3CAANLkTimwn5Dm372VYZ4YVcgKQqbVVwxyo8=DMFtHoTwg@mail.gmail.com%3E' target='_blank'><img src='http://us.pycon.org/2011/site_media/static/img/badges/pycon-badge-200x60.png' align='middle' style='border: none !important;' /></a></div><br />
<p>Libcloud will be present at this year&#8217;s <a href='http://us.pycon.org/2011/sprints/projects/'>PyCon sprints</a>. This is a great opportunity for you to join us, have fun, contribute and learn something new.</p>
<p>Topics range from beginner to intermediate level so they are appropriate for just about anyone:</p>
View
2 2011/04/26/libcloud-monthly-update-april-2011-storage-api-load-balancer-api-new-drivers.html
@@ -68,7 +68,7 @@
<h2 id='libcloud_monthly_update_april_2011__storage_api_loadbalancer_api_new_drivers'><a href='/2011/04/26/libcloud-monthly-update-april-2011-storage-api-load-balancer-api-new-drivers.html'>libcloud Monthly Update (April 2011) - Storage API, load-balancer API, new drivers</a></h2>
<p>Another month is around and it is time for another libcloud monthly update post. I did not write one previous month, because I have written &#8221;<a href='/2011/03/18/pycon-us-2011-recap.html'>PyCon US 2011 Recap</a>&#8221; post which also includes information about libcloud development which has happened during PyCon and in March.</p>
-<div style='text-align: center;'><a target='_blank' href='http://incubator.apache.org/libcloud/'><img align='middle' style='border: none !important;' src='/images/libcloud_logo.png' /></a></div><br />
+<div style='text-align: center;'><a href='http://incubator.apache.org/libcloud/' target='_blank'><img src='/images/libcloud_logo.png' align='middle' style='border: none !important;' /></a></div><br />
<h3 id='what_has_been_accomplished_in_april_2011'>What has been accomplished in April 2011</h3>
<ul>
View
6 2011/05/26/libcloud-monthly-update-may.html
@@ -70,7 +70,7 @@ <h2 id='libcloud_monthly_update_may_2011__050_release_graduation_europython'><a
<p>May has been a very busy and important month for us. We have finally manged to finalize and release a long awaited version 0.5.0.</p>
<p>Part of the reason that we have finally managed to release 0.5.0 this month was that me and <a href='http://paul.querna.org/'>Paul Querna</a> were present at the Apache Retreat in Ireland where we have spent some time hacking on Libcloud and polishing the last few features which were missing for the release.</p>
-<div style='text-align: center;'><a target='_blank' href='http://libcloud.apache.org'><img align='middle' style='border: none !important;' src='/images/libcloud_logo.png' /></a></div><br />
+<div style='text-align: center;'><a href='http://libcloud.apache.org' target='_blank'><img src='/images/libcloud_logo.png' align='middle' style='border: none !important;' /></a></div><br />
<p>Overall, Libcloud 0.5.0 is a big step forward and represents a big milestone for the project. It includes many new features, improvements and new compute drivers.</p>
<h3 id='major_changes_in_libcloud_050'>Major changes in Libcloud 0.5.0</h3>
@@ -110,7 +110,7 @@ <h4 id='new_compute_drivers'>New compute drivers</h4>
<h3 id='graduation_to_a_top_level_project'>Graduation to a Top Level Project</h3>
<p>Second very important milestone for us this month was graduating from the Apache Incubator to a Top Level Project. This puts us on par with other Apache projects such as Apache Cassandra and Apache Subversion.</p>
-<div style='text-align: center;'><a target='_blank' href='http://apache.org/'><img align='middle' style='border: none !important;' src='/images/apache_logo.png' /></a></div><br />
+<div style='text-align: center;'><a href='http://apache.org/' target='_blank'><img src='/images/apache_logo.png' align='middle' style='border: none !important;' /></a></div><br />
<p>Graduation signifies that both the Apache Libcloud product and community have been well-governed under the Foundation&#8217;s meritocratic, consensus-driven process and principles.</p>
<p>Graduating to a Top Level Project means that now we have a <a href='http://www.apache.org/dev/pmc.html'>Project Management Committee</a> (PMC) which will overlook our operations and make sure everything is running smoothly.</p>
@@ -122,7 +122,7 @@ <h3 id='graduation_to_a_top_level_project'>Graduation to a Top Level Project</h3
<p>Official graduation announcement / press release can be found on the Apache blog - <a href='https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces12'>The Apache Software Foundation Announces Apache Libcloud as a Top-Level Project</a>.</p>
<h3 id='libcloud_at_europython_2011_in_florence_italy'>Libcloud at EuroPython 2011 in Florence, Italy</h3>
-<div style='text-align: center;'><a target='_blank' href='http://ep2011.europython.eu/'><img align='middle' style='border: none !important;' src='/images/europython_logo.png' /></a></div><br />
+<div style='text-align: center;'><a href='http://ep2011.europython.eu/' target='_blank'><img src='/images/europython_logo.png' align='middle' style='border: none !important;' /></a></div><br />
<p>I will be at EuroPython in Italy next month where I will give an <a href='http://ep2011.europython.eu/conference/talks/managing-the-cloud-with-libcloud'>introductory talk about Libcloud</a>.</p>
<p>Beside giving a talk we will also host a development sprint there. This is a great opportunity for anyone who wants to contribute to the project or learn something new to join us. I will post more details about the sprint in the upcoming weeks on the <a href='http://libcloud.apache.org/devinfo.html'>libcloud mailing list</a>.</p>
View
2 2012/04/28/libcloud-monthly-update-april-2012-0-8-0-0-9-1-gsoc.html
@@ -80,7 +80,7 @@ <h3 id='what_has_been_accomplished_in_the_past_few_months'>What has been accompl
<li>Libcloud has applied to <a href='http://www.google-melange.com/gsoc/homepage/google/gsoc2012'>Google Summer of Code 2012</a> under Apache organization. We have received 1 slot. Student Ilgiz Islamgulov will be working on the <a href='https://issues.apache.org/jira/browse/LIBCLOUD-159'>Libcloud REST interface</a> this summer.</li>
</ul>
-<div class='imginline'><img class='inline' src='/images/dancing_robots.jpg' /><br />Dancing robots at PyCon<br /></div>
+<div class='imginline'><img src='/images/dancing_robots.jpg' class='inline' /><br />Dancing robots at PyCon<br /></div>
<h3 id='what_is_currently_going_on'>What is currently going on</h3>
<ul>
View
174 2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <link href="/css/style.css" media="screen" rel="stylesheet" type="text/css">
+ <link href="/css/syntax.css" media="screen" rel="stylesheet" type="text/css">
+ <link href="/css/tipsy.css" media="screen" rel="stylesheet" type="text/css">
+ <link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico">
+ <link href="/atom.xml" type="application/atom+xml" rel="alternate" title="tomaz.me feed" />
+ <meta name="google-site-verification" content="ynmOt0WzX8sVTNjmph4-tcmcUq8GzD3ao2AqpUJVlcY" />
+ <script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script>
+<script type="text/javascript">
+try {
+var pageTracker = _gat._getTracker("UA-1107810-12");
+pageTracker._trackPageview();
+} catch(err) {}
+</script>
+
+
+ <title>tomaz.me - Hosting APT repository on Rackspace CloudFiles</title>
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+ <script type="text/javascript" src="/javascript/jquery.tipsy.js"></script>
+ <script type='text/javascript'>
+ $(window).load(function()
+ {
+ $('img[alt]').tipsy({title: 'alt' });
+ $('a[title]').tipsy({title: 'title', gravity: 's'});
+ });
+ </script>
+ </head>
+ <body>
+ <a href="http://github.com/Kami"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" /></a>
+ <div id="links" class="menu">
+ <ul class="nobullet">
+ <li><a href="/index.html">Home</a></li>
+ <li><a href="/archive.html">Archive</a></li>
+ <li><a href="/atom.xml">Feed</a></li>
+ <li><a href="/about.html">About</a></li>
+
+ <li><br /></li>
+ <li class="title">Find me on</li>
+ <li><a href="https://plus.google.com/106838062648597435631/about">Google plus</a></li>
+ <li><a href="http://twitter.com/KamiSLO">Twitter</a></li>
+ <li><a href="http://github.com/Kami">Github</a></li>
+ <li><a href="https://launchpad.net/~tomaz-muraus">Launchpad</a></li>
+ <li><a href="http://www.linkedin.com/in/tomazmuraus">LinkedIn</a></li>
+
+ <li><br /></li>
+ <li class="title">Friends and other blogs</li>
+ <li><a href="http://segv.net/">Ryan's site</a></li>
+ <li><a href="http://russellhaering.com/">Russell's blog</a></li>
+ <li><a href="http://journal.paul.querna.org/">Paul's journal</a></li>
+ <li><a href="http://geoff.greer.fm/">Geoff's site</a></li>
+ <li><a href="http://antirez.com/">antirez webblog</a></li>
+
+ </ul>
+ </div>
+ <div id="wrapper">
+ <div id="header">
+ <div class="logo"></div>
+ <h1><a href="/index.html">computers, programming, ponies and snakes.</a></h1>
+ </div>
+ <div id="content">
+ <div class="postdateheading"> Jul 22, 2012 </div>
+<div class="postcontent">
+ <h2 id='hosting_apt_repository_on_rackspace_cloudfiles'><a href='/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html'>Hosting APT repository on Rackspace CloudFiles</a></h2>
+
+<p>In this post I will describe how to host APT repository on <a href='http://www.rackspace.com/cloud/cloud_hosting_products/files/'>Rackspace Cloud Files</a>.</p>
+
+<p>First you need to create a CDN enabled container. You can do this using Libcloud or the new <a href='https://mycloud.rackspace.com'>Rackspace control panel</a>. Depending on how frequently you are going update your APT repository it is also recommended to lower the container TTL from the default value of 3 days to 900 seconds.</p>
+
+<p>After you have created a CDN enabled container you need to install Python script I wrote which allows you to sychronize files from a local directory to a container hosted in one of the Storage providers <a href='http://libcloud.apache.org/supported_providers.html'>supported by Libcloud</a>.</p>
+<div class='highlight'><pre><code class='console'><span class='go'> sudo pip install file-syncer</span>
+</code></pre>
+</div>
+<p>Next we are going to create a dummy APT repository::</p>
+<div class='highlight'><pre><code class='console'><span class='go'>mkdir -p /tmp/apt-test/conf</span>
+<span class='go'>cat &gt; /tmp/apt-test/conf/distributions &lt;&lt;DELIM</span>
+<span class='go'>codename: precise</span>
+<span class='go'>Components: main</span>
+<span class='go'>Architectures: i386 amd64</span>
+<span class='go'>DELIM</span>
+</code></pre>
+</div>
+<p>Add a test package using <code>reprepro</code>:</p>
+<div class='highlight'><pre><code class='console'><span class='go'>wget http://us.archive.ubuntu.com/ubuntu/ubuntu/ubuntu/pool/main/a/acpi/acpi_0.09-3ubuntu1_amd64.deb</span>
+<span class='go'>reprepro -b /tmp/apt-test/ includedeb precise acpi_0.09-3ubuntu1_amd64.deb</span>
+</code></pre>
+</div>
+<p>And test the script:</p>
+<div class='highlight'><pre><code class='console'><span class='go'>file-syncer --log-level=DEBUG --directory=/tmp/apt-test/ --username=your username --key=your api key --container-name=container name</span>
+</code></pre>
+</div>
+<p>If everything went well, you should see an output similar to this one:</p>
+<div class='highlight'><pre><code class='console'><span class='go'>22 Jul 2012 22:36:05 : INFO : Using provider: CloudFiles (US)</span>
+<span class='go'>22 Jul 2012 22:36:07 : DEBUG : Found 15 local files</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Manifest doesn&#39;t exist, assuming that there are no remote files</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Found 0 remote files</span>
+<span class='go'>22 Jul 2012 22:36:08 : INFO : To remove: 0, to upload: 15</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/contents.cache.db</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: dists/precise/main/binary-amd64/Packages</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: dists/precise/main/binary-i386/Release</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: dists/precise/main/binary-i386/Packages</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/packages.db</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: pool/main/a/acpi/acpi_0.09-3ubuntu1_amd64.deb</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/release.caches.db</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/version</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: conf/distributions</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/references.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: dists/precise/main/binary-amd64/Packages</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/main/binary-i386/Packages.gz</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: dists/precise/main/binary-i386/Packages</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/main/binary-amd64/Packages.gz</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/release.caches.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Uploading object: db/checksums.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: dists/precise/main/binary-i386/Release</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/main/binary-amd64/Release</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: conf/distributions</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/Release</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/packages.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/contents.cache.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/references.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/version</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: pool/main/a/acpi/acpi_0.09-3ubuntu1_amd64.deb</span>
+<span class='go'>22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/main/binary-amd64/Packages.gz</span>
+<span class='go'>22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/main/binary-i386/Packages.gz</span>
+<span class='go'>22 Jul 2012 22:36:10 : DEBUG : Object uploaded: db/checksums.db</span>
+<span class='go'>22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/Release</span>
+<span class='go'>22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/main/binary-amd64/Release</span>
+<span class='go'>22 Jul 2012 22:36:11 : INFO : Synchronization complete, took: 4.62 seconds</span>
+</code></pre>
+</div>
+<p>After the upload has finished, you can test the repository by adding it to your APT sources list:</p>
+<div class='highlight'><pre><code class='console'><span class='go'> echo &quot;deb http://c15173579.r79.cf2.rackcdn.com precise main&quot; | sudo tee -a /etc/apt/sources.list.d/test-api-repo.list</span>
+</code></pre>
+</div>
+<p>We are also going to disable APT HTTP request pipeling. This step is required, because a nginx proxy running in front of the CDN doesn&#8217;t seem to support HTTP/1.1 pipelining. If you skip this test apt-get update will still work, but it will get stuck on <code>[Waiting for headers]</code> for a longer period of time.</p>
+<div class='highlight'><pre><code class='console'><span class='go'> echo &quot;Acquire::http::Pipeline-Depth &quot;0&quot;;&quot; | sudo tee -a /etc/apt/apt.conf.d/pipeline-workaround.conf</span>
+</code></pre>
+</div>
+<p>You can test that everything is working by issuing the following command:</p>
+<div class='highlight'><pre><code class='console'><span class='go'> sudo apt-get update ; sudo apt-cache policy acpi</span>
+</code></pre>
+</div>
+<p>You should get an output similar to this one:</p>
+<div class='highlight'><pre><code class='console'><span class='go'>acpi:</span>
+<span class='go'> Installed: (none)</span>
+<span class='go'> Candidate: 1.6-1</span>
+<span class='go'> Version table:</span>
+<span class='go'> 1.6-1 0</span>
+<span class='go'> 500 http://us.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages</span>
+<span class='go'> 0.09-3ubuntu1 0</span>
+<span class='go'> 500 http://c15173579.r79.cf2.rackcdn.com/ precise/main amd64 Packages</span>
+</code></pre>
+</div>
+<p>That is it. To make sure your container is always up to date, you need synchronize it every time you add a new packages. This can be achieved in multiple ways:</p>
+
+<ul>
+<li>adding a script which runs synchronize command after adding a package</li>
+
+<li>adding a cron job which periodically runs the sync command</li>
+</ul>
+</div>
+<div class="postfooter">
+ <div class="posttags">Tags: <a href="/tags/open%20source.html">open source</a>, <a href="/tags/programming.html">programming</a>, <a href="/tags/libcloud.html">libcloud</a>, <a href="/tags/apt.html">apt</a></div>
+</div>
+
+ </div>
+ </div>
+ <div id="footer">Powered by <a href="https://github.com/mojombo/jekyll" target="_blank" title="Yeah, if you are a Pythonista don't get too excited, it's Ruby">jekyll</a>, design forked from <a href="http://github.com/mrtazz/blog" target="_blank">Daniel Schauenberg</a></div>
+ </body>
+</html>
View
6 archive.html
@@ -63,12 +63,16 @@
<h1><a href="/index.html">computers, programming, ponies and snakes.</a></h1>
</div>
<div id="content">
- <h2>Until now these 15 ideas have been transformed into written text.</h2>
+ <h2>Until now these 16 ideas have been transformed into written text.</h2>
<br>
<div class="postcontent">
<ul class="nobullet">
<li>
+ Jul 22, 2012:<a href="/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html"> Hosting APT repository on Rackspace CloudFiles</a>
+ </li>
+
+ <li>
Apr 28, 2012:<a href="/2012/04/28/libcloud-monthly-update-april-2012-0-8-0-0-9-1-gsoc.html"> Libcloud Update (April 2012) - 0.8.0, 0.9.1, GSoC</a>
</li>
View
160 atom.xml
@@ -5,14 +5,118 @@
<link href="http://www.tomaz.me" rel="self" />
<link href="http://www.tomaz.me" />
<id>http://www.tomaz.me</id>
- <updated>2012-06-10T18:40:29-07:00</updated>
+ <updated>2012-07-22T23:06:31-07:00</updated>
<author>
<name>Tomaz Muraus</name>
<email>tomaz@tomaz.me</email>
</author>
<entry>
+ <title>Hosting APT repository on Rackspace CloudFiles</title>
+ <link href="http://www.tomaz.me/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html" />
+ <id>http://www.tomaz.me/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html</id>
+ <updated>2012-07-22T00:00:00-07:00</updated>
+ <content type="html">&lt;h2 id='hosting_apt_repository_on_rackspace_cloudfiles'&gt;&lt;a href='/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html'&gt;Hosting APT repository on Rackspace CloudFiles&lt;/a&gt;&lt;/h2&gt;
+
+&lt;p&gt;In this post I will describe how to host APT repository on &lt;a href='http://www.rackspace.com/cloud/cloud_hosting_products/files/'&gt;Rackspace Cloud Files&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;First you need to create a CDN enabled container. You can do this using Libcloud or the new &lt;a href='https://mycloud.rackspace.com'&gt;Rackspace control panel&lt;/a&gt;. Depending on how frequently you are going update your APT repository it is also recommended to lower the container TTL from the default value of 3 days to 900 seconds.&lt;/p&gt;
+
+&lt;p&gt;After you have created a CDN enabled container you need to install Python script I wrote which allows you to sychronize files from a local directory to a container hosted in one of the Storage providers &lt;a href='http://libcloud.apache.org/supported_providers.html'&gt;supported by Libcloud&lt;/a&gt;.&lt;/p&gt;
+&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='console'&gt;&lt;span class='go'&gt; sudo pip install file-syncer&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;Next we are going to create a dummy APT repository::&lt;/p&gt;
+&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='console'&gt;&lt;span class='go'&gt;mkdir -p /tmp/apt-test/conf&lt;/span&gt;
+&lt;span class='go'&gt;cat &amp;gt; /tmp/apt-test/conf/distributions &amp;lt;&amp;lt;DELIM&lt;/span&gt;
+&lt;span class='go'&gt;codename: precise&lt;/span&gt;
+&lt;span class='go'&gt;Components: main&lt;/span&gt;
+&lt;span class='go'&gt;Architectures: i386 amd64&lt;/span&gt;
+&lt;span class='go'&gt;DELIM&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;Add a test package using &lt;code&gt;reprepro&lt;/code&gt;:&lt;/p&gt;
+&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='console'&gt;&lt;span class='go'&gt;wget http://us.archive.ubuntu.com/ubuntu/ubuntu/ubuntu/pool/main/a/acpi/acpi_0.09-3ubuntu1_amd64.deb&lt;/span&gt;
+&lt;span class='go'&gt;reprepro -b /tmp/apt-test/ includedeb precise acpi_0.09-3ubuntu1_amd64.deb&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;And test the script:&lt;/p&gt;
+&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='console'&gt;&lt;span class='go'&gt;file-syncer --log-level=DEBUG --directory=/tmp/apt-test/ --username=your username --key=your api key --container-name=container name&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;If everything went well, you should see an output similar to this one:&lt;/p&gt;
+&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='console'&gt;&lt;span class='go'&gt;22 Jul 2012 22:36:05 : INFO : Using provider: CloudFiles (US)&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:07 : DEBUG : Found 15 local files&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Manifest doesn&amp;#39;t exist, assuming that there are no remote files&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Found 0 remote files&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : INFO : To remove: 0, to upload: 15&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/contents.cache.db&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Uploading object: dists/precise/main/binary-amd64/Packages&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Uploading object: dists/precise/main/binary-i386/Release&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Uploading object: dists/precise/main/binary-i386/Packages&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/packages.db&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Uploading object: pool/main/a/acpi/acpi_0.09-3ubuntu1_amd64.deb&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/release.caches.db&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/version&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Uploading object: conf/distributions&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/references.db&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Object uploaded: dists/precise/main/binary-amd64/Packages&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/main/binary-i386/Packages.gz&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Object uploaded: dists/precise/main/binary-i386/Packages&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/main/binary-amd64/Packages.gz&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/release.caches.db&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Uploading object: db/checksums.db&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Object uploaded: dists/precise/main/binary-i386/Release&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/main/binary-amd64/Release&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Object uploaded: conf/distributions&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/Release&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/packages.db&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/contents.cache.db&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/references.db&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/version&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:09 : DEBUG : Object uploaded: pool/main/a/acpi/acpi_0.09-3ubuntu1_amd64.deb&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/main/binary-amd64/Packages.gz&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/main/binary-i386/Packages.gz&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:10 : DEBUG : Object uploaded: db/checksums.db&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/Release&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/main/binary-amd64/Release&lt;/span&gt;
+&lt;span class='go'&gt;22 Jul 2012 22:36:11 : INFO : Synchronization complete, took: 4.62 seconds&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;After the upload has finished, you can test the repository by adding it to your APT sources list:&lt;/p&gt;
+&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='console'&gt;&lt;span class='go'&gt; echo &amp;quot;deb http://c15173579.r79.cf2.rackcdn.com precise main&amp;quot; | sudo tee -a /etc/apt/sources.list.d/test-api-repo.list&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;We are also going to disable APT HTTP request pipeling. This step is required, because a nginx proxy running in front of the CDN doesn&amp;#8217;t seem to support HTTP/1.1 pipelining. If you skip this test apt-get update will still work, but it will get stuck on &lt;code&gt;[Waiting for headers]&lt;/code&gt; for a longer period of time.&lt;/p&gt;
+&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='console'&gt;&lt;span class='go'&gt; echo &amp;quot;Acquire::http::Pipeline-Depth &amp;quot;0&amp;quot;;&amp;quot; | sudo tee -a /etc/apt/apt.conf.d/pipeline-workaround.conf&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;You can test that everything is working by issuing the following command:&lt;/p&gt;
+&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='console'&gt;&lt;span class='go'&gt; sudo apt-get update ; sudo apt-cache policy acpi&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;You should get an output similar to this one:&lt;/p&gt;
+&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='console'&gt;&lt;span class='go'&gt;acpi:&lt;/span&gt;
+&lt;span class='go'&gt; Installed: (none)&lt;/span&gt;
+&lt;span class='go'&gt; Candidate: 1.6-1&lt;/span&gt;
+&lt;span class='go'&gt; Version table:&lt;/span&gt;
+&lt;span class='go'&gt; 1.6-1 0&lt;/span&gt;
+&lt;span class='go'&gt; 500 http://us.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages&lt;/span&gt;
+&lt;span class='go'&gt; 0.09-3ubuntu1 0&lt;/span&gt;
+&lt;span class='go'&gt; 500 http://c15173579.r79.cf2.rackcdn.com/ precise/main amd64 Packages&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;That is it. To make sure your container is always up to date, you need synchronize it every time you add a new packages. This can be achieved in multiple ways:&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;adding a script which runs synchronize command after adding a package&lt;/li&gt;
+
+&lt;li&gt;adding a cron job which periodically runs the sync command&lt;/li&gt;
+&lt;/ul&gt;</content>
+ </entry>
+
+ <entry>
<title>Libcloud Update (April 2012) - 0.8.0, 0.9.1, GSoC</title>
<link href="http://www.tomaz.me/2012/04/28/libcloud-monthly-update-april-2012-0-8-0-0-9-1-gsoc.html" />
<id>http://www.tomaz.me/2012/04/28/libcloud-monthly-update-april-2012-0-8-0-0-9-1-gsoc.html</id>
@@ -32,7 +136,7 @@
&lt;li&gt;Libcloud has applied to &lt;a href='http://www.google-melange.com/gsoc/homepage/google/gsoc2012'&gt;Google Summer of Code 2012&lt;/a&gt; under Apache organization. We have received 1 slot. Student Ilgiz Islamgulov will be working on the &lt;a href='https://issues.apache.org/jira/browse/LIBCLOUD-159'&gt;Libcloud REST interface&lt;/a&gt; this summer.&lt;/li&gt;
&lt;/ul&gt;
-&lt;div class='imginline'&gt;&lt;img class='inline' src='/images/dancing_robots.jpg' /&gt;&lt;br /&gt;Dancing robots at PyCon&lt;br /&gt;&lt;/div&gt;
+&lt;div class='imginline'&gt;&lt;img src='/images/dancing_robots.jpg' class='inline' /&gt;&lt;br /&gt;Dancing robots at PyCon&lt;br /&gt;&lt;/div&gt;
&lt;h3 id='what_is_currently_going_on'&gt;What is currently going on&lt;/h3&gt;
&lt;ul&gt;
@@ -333,7 +437,7 @@
&lt;p&gt;May has been a very busy and important month for us. We have finally manged to finalize and release a long awaited version 0.5.0.&lt;/p&gt;
&lt;p&gt;Part of the reason that we have finally managed to release 0.5.0 this month was that me and &lt;a href='http://paul.querna.org/'&gt;Paul Querna&lt;/a&gt; were present at the Apache Retreat in Ireland where we have spent some time hacking on Libcloud and polishing the last few features which were missing for the release.&lt;/p&gt;
-&lt;div style='text-align: center;'&gt;&lt;a target='_blank' href='http://libcloud.apache.org'&gt;&lt;img align='middle' style='border: none !important;' src='/images/libcloud_logo.png' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
+&lt;div style='text-align: center;'&gt;&lt;a href='http://libcloud.apache.org' target='_blank'&gt;&lt;img src='/images/libcloud_logo.png' align='middle' style='border: none !important;' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;p&gt;Overall, Libcloud 0.5.0 is a big step forward and represents a big milestone for the project. It includes many new features, improvements and new compute drivers.&lt;/p&gt;
&lt;h3 id='major_changes_in_libcloud_050'&gt;Major changes in Libcloud 0.5.0&lt;/h3&gt;
@@ -373,7 +477,7 @@
&lt;h3 id='graduation_to_a_top_level_project'&gt;Graduation to a Top Level Project&lt;/h3&gt;
&lt;p&gt;Second very important milestone for us this month was graduating from the Apache Incubator to a Top Level Project. This puts us on par with other Apache projects such as Apache Cassandra and Apache Subversion.&lt;/p&gt;
-&lt;div style='text-align: center;'&gt;&lt;a target='_blank' href='http://apache.org/'&gt;&lt;img align='middle' style='border: none !important;' src='/images/apache_logo.png' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
+&lt;div style='text-align: center;'&gt;&lt;a href='http://apache.org/' target='_blank'&gt;&lt;img src='/images/apache_logo.png' align='middle' style='border: none !important;' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;p&gt;Graduation signifies that both the Apache Libcloud product and community have been well-governed under the Foundation&amp;#8217;s meritocratic, consensus-driven process and principles.&lt;/p&gt;
&lt;p&gt;Graduating to a Top Level Project means that now we have a &lt;a href='http://www.apache.org/dev/pmc.html'&gt;Project Management Committee&lt;/a&gt; (PMC) which will overlook our operations and make sure everything is running smoothly.&lt;/p&gt;
@@ -385,7 +489,7 @@
&lt;p&gt;Official graduation announcement / press release can be found on the Apache blog - &lt;a href='https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces12'&gt;The Apache Software Foundation Announces Apache Libcloud as a Top-Level Project&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id='libcloud_at_europython_2011_in_florence_italy'&gt;Libcloud at EuroPython 2011 in Florence, Italy&lt;/h3&gt;
-&lt;div style='text-align: center;'&gt;&lt;a target='_blank' href='http://ep2011.europython.eu/'&gt;&lt;img align='middle' style='border: none !important;' src='/images/europython_logo.png' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
+&lt;div style='text-align: center;'&gt;&lt;a href='http://ep2011.europython.eu/' target='_blank'&gt;&lt;img src='/images/europython_logo.png' align='middle' style='border: none !important;' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;p&gt;I will be at EuroPython in Italy next month where I will give an &lt;a href='http://ep2011.europython.eu/conference/talks/managing-the-cloud-with-libcloud'&gt;introductory talk about Libcloud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Beside giving a talk we will also host a development sprint there. This is a great opportunity for anyone who wants to contribute to the project or learn something new to join us. I will post more details about the sprint in the upcoming weeks on the &lt;a href='http://libcloud.apache.org/devinfo.html'&gt;libcloud mailing list&lt;/a&gt;.&lt;/p&gt;
@@ -401,7 +505,7 @@
<content type="html">&lt;h2 id='libcloud_monthly_update_april_2011__storage_api_loadbalancer_api_new_drivers'&gt;&lt;a href='/2011/04/26/libcloud-monthly-update-april-2011-storage-api-load-balancer-api-new-drivers.html'&gt;libcloud Monthly Update (April 2011) - Storage API, load-balancer API, new drivers&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Another month is around and it is time for another libcloud monthly update post. I did not write one previous month, because I have written &amp;#8221;&lt;a href='/2011/03/18/pycon-us-2011-recap.html'&gt;PyCon US 2011 Recap&lt;/a&gt;&amp;#8221; post which also includes information about libcloud development which has happened during PyCon and in March.&lt;/p&gt;
-&lt;div style='text-align: center;'&gt;&lt;a target='_blank' href='http://incubator.apache.org/libcloud/'&gt;&lt;img align='middle' style='border: none !important;' src='/images/libcloud_logo.png' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
+&lt;div style='text-align: center;'&gt;&lt;a href='http://incubator.apache.org/libcloud/' target='_blank'&gt;&lt;img src='/images/libcloud_logo.png' align='middle' style='border: none !important;' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h3 id='what_has_been_accomplished_in_april_2011'&gt;What has been accomplished in April 2011&lt;/h3&gt;
&lt;ul&gt;
@@ -650,48 +754,4 @@
&lt;p&gt;&lt;strong&gt;Update: Multiple people have asked me about the full runner source code so I have put it in Github - &lt;a href='https://github.com/Kami/parallel-django-and-twisted-test-runner'&gt;https://github.com/Kami/parallel-django-and-twisted-test-runner&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content>
</entry>
- <entry>
- <title>PyCon US 2011 recap</title>
- <link href="http://www.tomaz.me/2011/03/18/pycon-us-2011-recap.html" />
- <id>http://www.tomaz.me/2011/03/18/pycon-us-2011-recap.html</id>
- <updated>2011-03-18T00:00:00-07:00</updated>
- <content type="html">&lt;h2 id='pycon_us_2011_recap'&gt;&lt;a href='/2011/03/18/pycon-us-2011-recap.html'&gt;PyCon US 2011 recap&lt;/a&gt;&lt;/h2&gt;
-
-&lt;p&gt;PyCon has officially finished yesterday. It has been a great week. I have met a lot of cool and smart people and also had a lot of fun.&lt;/p&gt;
-
-&lt;p&gt;At the conference I have met 3 libcloud contributors - &lt;a href='http://journal.paul.querna.org/'&gt;Paul&lt;/a&gt;, &lt;a href='http://jedsmith.org/'&gt;Jed&lt;/a&gt; and &lt;a href='http://agiletesting.blogspot.com/'&gt;Grig&lt;/a&gt;.&lt;/p&gt;
-
-&lt;p&gt;Paul, Jed and Grig only stayed there for the conference days, but I have also stayed there from 14th to 17th to lead the libcloud sprint.&lt;/p&gt;
-
-&lt;p&gt;Our sprinting team was pretty small - me, Paul (first day), Steven and &lt;a href='https://github.com/tavisrudd'&gt;Tavis&lt;/a&gt;, but we have still accomplished quite a lot.&lt;/p&gt;
-
-&lt;p&gt;Here is a short list of some of the things which have been accomplished during the sprints (some of them are still work in progress):&lt;/p&gt;
-
-&lt;ul&gt;
-&lt;li&gt;Added a new &amp;#8220;pricing&amp;#8221; module and moved all the existing pricing info to a separate JSON file (&lt;em&gt;libcloud/data/pricing.json&lt;/em&gt;). Updating the prices for the providers which don&amp;#8217;t expose them through the API should now be a lot easier.&lt;/li&gt;
-
-&lt;li&gt;Paul has started initial work to port libcloud to Python 3&lt;/li&gt;
-
-&lt;li&gt;Steven has worked on the Amazon S3 storage driver which should be finished in the upcoming week&lt;/li&gt;
-
-&lt;li&gt;libcloud now works fine with Python 2.7 and PyPy (there have been some minor issues which have prevented some tests to pass on Python 2.7)&lt;/li&gt;
-
-&lt;li&gt;Test coverage has been increased for about 10%&lt;/li&gt;
-
-&lt;li&gt;I have started working on the Windows Azure storage driver&lt;/li&gt;
-
-&lt;li&gt;Tavis has worked on refactoring some of the existing modules, fixing styling issues and fixing bugs in CloudFiles storage driver&lt;/li&gt;
-
-&lt;li&gt;Finalized and committed two community submitted drivers; &lt;a href='http://en.wikipedia.org/wiki/Nimbus_(cloud_computing)'&gt;Nimbus&lt;/a&gt; driver by David LaBissoniere and &lt;a href='http://www.bluebox.net/'&gt;Bluebox&lt;/a&gt; driver by Christian Paredes&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;p&gt;I have also talked with a few people which use the library and most of them would like us to expose more provider specific functionality - namely Amazon Elastic Block Storage and load balancers.&lt;/p&gt;
-
-&lt;p&gt;We have already debated a bit about this in the mailing list, but we haven&amp;#8217;t actually started working on it yet, because it&amp;#8217;s pretty hard to create a useful generic abstraction for resources like load balancers, IP addresses and so on.&lt;/p&gt;
-
-&lt;p&gt;You can expect more info and debates about this in the mailing list in the upcoming weeks.&lt;/p&gt;
-
-&lt;p&gt;I hope to see you again &lt;a href='http://us.pycon.org/2012/'&gt;next year in Santa Clara&lt;/a&gt; (there have been some debates about renting a beach house for the sprints - you definitely don&amp;#8217;t want to miss that!) and possibly this year at &lt;a href='http://ep2011.europython.eu/'&gt;EuroPython&lt;/a&gt; in Italy.&lt;/p&gt;</content>
- </entry>
-
</feed>
View
148 index.html
@@ -65,6 +65,110 @@
<div id="content">
<div class="post">
+ <h2 id='hosting_apt_repository_on_rackspace_cloudfiles'><a href='/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html'>Hosting APT repository on Rackspace CloudFiles</a></h2>
+
+<p>In this post I will describe how to host APT repository on <a href='http://www.rackspace.com/cloud/cloud_hosting_products/files/'>Rackspace Cloud Files</a>.</p>
+
+<p>First you need to create a CDN enabled container. You can do this using Libcloud or the new <a href='https://mycloud.rackspace.com'>Rackspace control panel</a>. Depending on how frequently you are going update your APT repository it is also recommended to lower the container TTL from the default value of 3 days to 900 seconds.</p>
+
+<p>After you have created a CDN enabled container you need to install Python script I wrote which allows you to sychronize files from a local directory to a container hosted in one of the Storage providers <a href='http://libcloud.apache.org/supported_providers.html'>supported by Libcloud</a>.</p>
+<div class='highlight'><pre><code class='console'><span class='go'> sudo pip install file-syncer</span>
+</code></pre>
+</div>
+<p>Next we are going to create a dummy APT repository::</p>
+<div class='highlight'><pre><code class='console'><span class='go'>mkdir -p /tmp/apt-test/conf</span>
+<span class='go'>cat &gt; /tmp/apt-test/conf/distributions &lt;&lt;DELIM</span>
+<span class='go'>codename: precise</span>
+<span class='go'>Components: main</span>
+<span class='go'>Architectures: i386 amd64</span>
+<span class='go'>DELIM</span>
+</code></pre>
+</div>
+<p>Add a test package using <code>reprepro</code>:</p>
+<div class='highlight'><pre><code class='console'><span class='go'>wget http://us.archive.ubuntu.com/ubuntu/ubuntu/ubuntu/pool/main/a/acpi/acpi_0.09-3ubuntu1_amd64.deb</span>
+<span class='go'>reprepro -b /tmp/apt-test/ includedeb precise acpi_0.09-3ubuntu1_amd64.deb</span>
+</code></pre>
+</div>
+<p>And test the script:</p>
+<div class='highlight'><pre><code class='console'><span class='go'>file-syncer --log-level=DEBUG --directory=/tmp/apt-test/ --username=your username --key=your api key --container-name=container name</span>
+</code></pre>
+</div>
+<p>If everything went well, you should see an output similar to this one:</p>
+<div class='highlight'><pre><code class='console'><span class='go'>22 Jul 2012 22:36:05 : INFO : Using provider: CloudFiles (US)</span>
+<span class='go'>22 Jul 2012 22:36:07 : DEBUG : Found 15 local files</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Manifest doesn&#39;t exist, assuming that there are no remote files</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Found 0 remote files</span>
+<span class='go'>22 Jul 2012 22:36:08 : INFO : To remove: 0, to upload: 15</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/contents.cache.db</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: dists/precise/main/binary-amd64/Packages</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: dists/precise/main/binary-i386/Release</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: dists/precise/main/binary-i386/Packages</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/packages.db</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: pool/main/a/acpi/acpi_0.09-3ubuntu1_amd64.deb</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/release.caches.db</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/version</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: conf/distributions</span>
+<span class='go'>22 Jul 2012 22:36:08 : DEBUG : Uploading object: db/references.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: dists/precise/main/binary-amd64/Packages</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/main/binary-i386/Packages.gz</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: dists/precise/main/binary-i386/Packages</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/main/binary-amd64/Packages.gz</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/release.caches.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Uploading object: db/checksums.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: dists/precise/main/binary-i386/Release</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/main/binary-amd64/Release</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: conf/distributions</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Uploading object: dists/precise/Release</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/packages.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/contents.cache.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/references.db</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: db/version</span>
+<span class='go'>22 Jul 2012 22:36:09 : DEBUG : Object uploaded: pool/main/a/acpi/acpi_0.09-3ubuntu1_amd64.deb</span>
+<span class='go'>22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/main/binary-amd64/Packages.gz</span>
+<span class='go'>22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/main/binary-i386/Packages.gz</span>
+<span class='go'>22 Jul 2012 22:36:10 : DEBUG : Object uploaded: db/checksums.db</span>
+<span class='go'>22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/Release</span>
+<span class='go'>22 Jul 2012 22:36:10 : DEBUG : Object uploaded: dists/precise/main/binary-amd64/Release</span>
+<span class='go'>22 Jul 2012 22:36:11 : INFO : Synchronization complete, took: 4.62 seconds</span>
+</code></pre>
+</div>
+<p>After the upload has finished, you can test the repository by adding it to your APT sources list:</p>
+<div class='highlight'><pre><code class='console'><span class='go'> echo &quot;deb http://c15173579.r79.cf2.rackcdn.com precise main&quot; | sudo tee -a /etc/apt/sources.list.d/test-api-repo.list</span>
+</code></pre>
+</div>
+<p>We are also going to disable APT HTTP request pipeling. This step is required, because a nginx proxy running in front of the CDN doesn&#8217;t seem to support HTTP/1.1 pipelining. If you skip this test apt-get update will still work, but it will get stuck on <code>[Waiting for headers]</code> for a longer period of time.</p>
+<div class='highlight'><pre><code class='console'><span class='go'> echo &quot;Acquire::http::Pipeline-Depth &quot;0&quot;;&quot; | sudo tee -a /etc/apt/apt.conf.d/pipeline-workaround.conf</span>
+</code></pre>
+</div>
+<p>You can test that everything is working by issuing the following command:</p>
+<div class='highlight'><pre><code class='console'><span class='go'> sudo apt-get update ; sudo apt-cache policy acpi</span>
+</code></pre>
+</div>
+<p>You should get an output similar to this one:</p>
+<div class='highlight'><pre><code class='console'><span class='go'>acpi:</span>
+<span class='go'> Installed: (none)</span>
+<span class='go'> Candidate: 1.6-1</span>
+<span class='go'> Version table:</span>
+<span class='go'> 1.6-1 0</span>
+<span class='go'> 500 http://us.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages</span>
+<span class='go'> 0.09-3ubuntu1 0</span>
+<span class='go'> 500 http://c15173579.r79.cf2.rackcdn.com/ precise/main amd64 Packages</span>
+</code></pre>
+</div>
+<p>That is it. To make sure your container is always up to date, you need synchronize it every time you add a new packages. This can be achieved in multiple ways:</p>
+
+<ul>
+<li>adding a script which runs synchronize command after adding a package</li>
+
+<li>adding a cron job which periodically runs the sync command</li>
+</ul>
+ <div class="postfooter">
+ <div class="posttags">Tags: <a href="/tags/open%20source.html">open source</a>, <a href="/tags/programming.html">programming</a>, <a href="/tags/libcloud.html">libcloud</a>, <a href="/tags/apt.html">apt</a></div>
+ <div class="postdate">&raquo; <a href="/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html">Jul 22, 2012</a></div>
+ </div>
+</div>
+
+<div class="post">
<h2 id='libcloud_update_april_2012__080_091_gsoc'><a href='/2012/04/28/libcloud-monthly-update-april-2012-0-8-0-0-9-1-gsoc.html'>Libcloud Update (April 2012) - 0.8.0, 0.9.1, GSoC</a></h2>
<p>Welcome to Libcloud April 2012 update post. Sorry for skipping a couple of months, but I have been pretty busy again. In any case, here is a short but sweet April update.</p>
@@ -80,7 +184,7 @@ <h3 id='what_has_been_accomplished_in_the_past_few_months'>What has been accompl
<li>Libcloud has applied to <a href='http://www.google-melange.com/gsoc/homepage/google/gsoc2012'>Google Summer of Code 2012</a> under Apache organization. We have received 1 slot. Student Ilgiz Islamgulov will be working on the <a href='https://issues.apache.org/jira/browse/LIBCLOUD-159'>Libcloud REST interface</a> this summer.</li>
</ul>
-<div class='imginline'><img class='inline' src='/images/dancing_robots.jpg' /><br />Dancing robots at PyCon<br /></div>
+<div class='imginline'><img src='/images/dancing_robots.jpg' class='inline' /><br />Dancing robots at PyCon<br /></div>
<h3 id='what_is_currently_going_on'>What is currently going on</h3>
<ul>
@@ -293,48 +397,6 @@ <h2 id='9_octal_numbers'>9. Octal numbers</h2>
</div>
</div>
-<div class="post">
- <h2 id='libcloud_monthly_update_september_2011__floss_weekly_openstack_driver_improvements_dns_api'><a href='/2011/09/24/libcloud-monthly-update-september-floss-weekly-openstack-improvements-dns-api.html'>libcloud Monthly Update (September 2011) - FLOSS weekly, OpenStack driver improvements, DNS API</a></h2>
-
-<p>Without further ado here is a Libcloud monthly update for September 2011.</p>
-
-<h3 id='what_has_been_accomplished_in_the_past_month'>What has been accomplished in the past month</h3>
-
-<ul>
-<li>
-<p>I was a guest on FLOSS weekly (podcast about FOSS software) where I talked about Libcloud. You can find video and audio recording of the show on <a href='http://twit.tv/show/floss-weekly/181'>twit.tv</a>.</p>
-</li>
-
-<li>
-<p>OpenStack and Rackspace drivers have received a lot of needed attention and refactoring. Rackspace driver now properly inherits from the OpenStack one instead of vice versa (thanks <a href='https://issues.apache.org/jira/secure/ViewProfile.jspa?name=manganeez'>Mike</a>). This will make extending the Rackspace driver and developing other provider drivers which are based on OpenStack a lot easier. Rackspace drivers now also support authentication with Rackspace Auth 1.1.</p>
-</li>
-
-<li>
-<p>Linode compute driver now supports new location in Japan.</p>
-
-<p>Linode has recently <a href='http://blog.linode.com/2011/09/19/linode-cloud-asia-pacific/'>added a new location (Tokyo, Japan)</a> and this location is now also <a href='http://blog.linode.com/2011/09/19/linode-cloud-asia-pacific/'>supported in Libcloud</a>.</p>
-</li>
-
-<li>
-<p>DNS API development has finally started.</p>
-
-<p>Base API proposal can be found <a href='http://mail-archives.apache.org/mod_mbox/libcloud-dev/201109.mbox/%3CCAJMHEmLfWki5awUqZL9ZNsrpJFkHNHAe00Vs5SeaJXkmWSxJ7g@mail.gmail.com%3E'>here</a>. I have also just finished a reference implementation and a first driver for the Linode DNS as a service. The driver can be found in <a href='https://svn.apache.org/viewvc/libcloud/trunk/libcloud/dns/drivers/linode.py?view=markup'>trunk</a>. Feedback is <a href='http://mail-archives.apache.org/mod_mbox/libcloud-dev/201109.mbox/%3CCAJMHEmL7M12TG5eFz0HQ-kCuA3=ZnNkTt8_veoOFNfueaG9q2w@mail.gmail.com%3E'>welcome (and encouraged)</a>.</p>
-</li>
-</ul>
-
-<h3 id='what_is_currently_going_on'>What is currently going on</h3>
-
-<ul>
-<li>Hacking on the DNS API continues. DNS API with at least two drivers is planned to be included in the next release (0.6.0) which should be out around November.</li>
-</ul>
-
-<p>See you next month!</p>
- <div class="postfooter">
- <div class="posttags">Tags: <a href="/tags/libcloud.html">libcloud</a>, <a href="/tags/open%20source.html">open source</a>, <a href="/tags/programming.html">programming</a>, <a href="/tags/floss%20weekly.html">floss weekly</a></div>
- <div class="postdate">&raquo; <a href="/2011/09/24/libcloud-monthly-update-september-floss-weekly-openstack-improvements-dns-api.html">Sep 24, 2011</a></div>
- </div>
-</div>
-
</div>
</div>
View
8 sitemap.xml
@@ -79,6 +79,12 @@
<lastmod>2012-06-10T12:11:05-07:00</lastmod>
</url>
<url>
+ <loc>
+ http://www.tomaz.me/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html
+ </loc>
+ <lastmod>2012-07-22T23:05:26-07:00</lastmod>
+ </url>
+ <url>
<loc>http://www.tomaz.me/about.html</loc>
<lastmod>2012-06-10T12:11:05-07:00</lastmod>
</url>
@@ -88,7 +94,7 @@
</url>
<url>
<loc>http://www.tomaz.me/</loc>
- <lastmod>2012-06-10T12:06:26-07:00</lastmod>
+ <lastmod>2012-07-22T23:05:26-07:00</lastmod>
</url>
<url>
<loc>http://www.tomaz.me/404.html</loc>
View
81 tags/apt.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <link href="/css/style.css" media="screen" rel="stylesheet" type="text/css">
+ <link href="/css/syntax.css" media="screen" rel="stylesheet" type="text/css">
+ <link href="/css/tipsy.css" media="screen" rel="stylesheet" type="text/css">
+ <link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico">
+ <link href="/atom.xml" type="application/atom+xml" rel="alternate" title="tomaz.me feed" />
+ <meta name="google-site-verification" content="ynmOt0WzX8sVTNjmph4-tcmcUq8GzD3ao2AqpUJVlcY" />
+ <script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script>
+<script type="text/javascript">
+try {
+var pageTracker = _gat._getTracker("UA-1107810-12");
+pageTracker._trackPageview();
+} catch(err) {}
+</script>
+
+
+ <title>tomaz.me - </title>
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+ <script type="text/javascript" src="/javascript/jquery.tipsy.js"></script>
+ <script type='text/javascript'>
+ $(window).load(function()
+ {
+ $('img[alt]').tipsy({title: 'alt' });
+ $('a[title]').tipsy({title: 'title', gravity: 's'});
+ });
+ </script>
+ </head>
+ <body>
+ <a href="http://github.com/Kami"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" /></a>
+ <div id="links" class="menu">
+ <ul class="nobullet">
+ <li><a href="/index.html">Home</a></li>
+ <li><a href="/archive.html">Archive</a></li>
+ <li><a href="/atom.xml">Feed</a></li>
+ <li><a href="/about.html">About</a></li>
+
+ <li><br /></li>
+ <li class="title">Find me on</li>
+ <li><a href="https://plus.google.com/106838062648597435631/about">Google plus</a></li>
+ <li><a href="http://twitter.com/KamiSLO">Twitter</a></li>
+ <li><a href="http://github.com/Kami">Github</a></li>
+ <li><a href="https://launchpad.net/~tomaz-muraus">Launchpad</a></li>
+ <li><a href="http://www.linkedin.com/in/tomazmuraus">LinkedIn</a></li>
+
+ <li><br /></li>
+ <li class="title">Friends and other blogs</li>
+ <li><a href="http://segv.net/">Ryan's site</a></li>
+ <li><a href="http://russellhaering.com/">Russell's blog</a></li>
+ <li><a href="http://journal.paul.querna.org/">Paul's journal</a></li>
+ <li><a href="http://geoff.greer.fm/">Geoff's site</a></li>
+ <li><a href="http://antirez.com/">antirez webblog</a></li>
+
+ </ul>
+ </div>
+ <div id="wrapper">
+ <div id="header">
+ <div class="logo"></div>
+ <h1><a href="/index.html">computers, programming, ponies and snakes.</a></h1>
+ </div>
+ <div id="content">
+ <h2>Tag: apt</h2>
+<div class="postcontent">
+ <ul class="nobullet">
+
+ <li>
+ Jul 22, 2012:<a href='/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html'>Hosting APT repository on Rackspace CloudFiles</a> | Tags: <a href="/tags/open%20source.html">open source</a>, <a href="/tags/programming.html">programming</a>, <a href="/tags/libcloud.html">libcloud</a>, <a href="/tags/apt.html">apt</a>
+ </li>
+
+ </ul>
+</div>
+
+ </div>
+ </div>
+ <div id="footer">Powered by <a href="https://github.com/mojombo/jekyll" target="_blank" title="Yeah, if you are a Pythonista don't get too excited, it's Ruby">jekyll</a>, design forked from <a href="http://github.com/mrtazz/blog" target="_blank">Daniel Schauenberg</a></div>
+ </body>
+</html>
View
4 tags/libcloud.html
@@ -68,6 +68,10 @@
<ul class="nobullet">
<li>
+ Jul 22, 2012:<a href='/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html'>Hosting APT repository on Rackspace CloudFiles</a> | Tags: <a href="/tags/open%20source.html">open source</a>, <a href="/tags/programming.html">programming</a>, <a href="/tags/libcloud.html">libcloud</a>, <a href="/tags/apt.html">apt</a>
+ </li>
+
+ <li>
Apr 28, 2012:<a href='/2012/04/28/libcloud-monthly-update-april-2012-0-8-0-0-9-1-gsoc.html'>Libcloud Update (April 2012) - 0.8.0, 0.9.1, GSoC</a> | Tags: <a href="/tags/libcloud.html">libcloud</a>, <a href="/tags/open%20source.html">open source</a>, <a href="/tags/programming.html">programming</a>, <a href="/tags/google%20summer%20of%20code.html">google summer of code</a>
</li>
View
4 tags/open source.html
@@ -68,6 +68,10 @@
<ul class="nobullet">
<li>
+ Jul 22, 2012:<a href='/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html'>Hosting APT repository on Rackspace CloudFiles</a> | Tags: <a href="/tags/open%20source.html">open source</a>, <a href="/tags/programming.html">programming</a>, <a href="/tags/libcloud.html">libcloud</a>, <a href="/tags/apt.html">apt</a>
+ </li>
+
+ <li>
Apr 28, 2012:<a href='/2012/04/28/libcloud-monthly-update-april-2012-0-8-0-0-9-1-gsoc.html'>Libcloud Update (April 2012) - 0.8.0, 0.9.1, GSoC</a> | Tags: <a href="/tags/libcloud.html">libcloud</a>, <a href="/tags/open%20source.html">open source</a>, <a href="/tags/programming.html">programming</a>, <a href="/tags/google%20summer%20of%20code.html">google summer of code</a>
</li>
View
4 tags/programming.html
@@ -68,6 +68,10 @@
<ul class="nobullet">
<li>
+ Jul 22, 2012:<a href='/2012/07/22/hosting-apt-repository-on-rackspace-cloud-files.html'>Hosting APT repository on Rackspace CloudFiles</a> | Tags: <a href="/tags/open%20source.html">open source</a>, <a href="/tags/programming.html">programming</a>, <a href="/tags/libcloud.html">libcloud</a>, <a href="/tags/apt.html">apt</a>
+ </li>
+
+ <li>
Apr 28, 2012:<a href='/2012/04/28/libcloud-monthly-update-april-2012-0-8-0-0-9-1-gsoc.html'>Libcloud Update (April 2012) - 0.8.0, 0.9.1, GSoC</a> | Tags: <a href="/tags/libcloud.html">libcloud</a>, <a href="/tags/open%20source.html">open source</a>, <a href="/tags/programming.html">programming</a>, <a href="/tags/google%20summer%20of%20code.html">google summer of code</a>
</li>

0 comments on commit 2a46b87

Please sign in to comment.