<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Category: CloudStack | Dissociated Press]]></title>
  <link href="http://dissociatedpress.net/blog/categories/cloudstack/atom.xml" rel="self"/>
  <link href="http://dissociatedpress.net/"/>
  <updated>2013-06-17T16:42:21-05:00</updated>
  <id>http://dissociatedpress.net/</id>
  <author>
    <name><![CDATA[Joe Brockmeier]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Get Ready to Hack at the Collaboration Conference]]></title>
    <link href="http://dissociatedpress.net/blog/2013/06/17/get-ready-to-hack-at-the-collaboration-conference/"/>
    <updated>2013-06-17T15:54:00-05:00</updated>
    <id>http://dissociatedpress.net/blog/2013/06/17/get-ready-to-hack-at-the-collaboration-conference</id>
    <content type="html"><![CDATA[<p><img class="left" src="http://dissociatedpress.net/uploads/images/hack-day-success-baby.jpg"> This coming Sunday (June 23rd) we'll be getting together at the CloudStack Collaboration Conference for <a href="http://www.cloudstackcollab.org/hack/">hack day</a>, from 9:30 a.m. to 5:00 p.m. in the Santa Clara Convention Center.</p>

<p>The hack day is being run using the BarCamp/unconference format &ndash; meaning that the sessions will be chosen Sunday by the folks who show up. Sessions might run an hour or all day, depending on how much interest there is and how much needs to be done.</p>

<p>Have an idea for a session? A topic you want to lead or see discussed? <a href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/Hack+Day+at+CCC13">Add it to the Hack Day at CCC13 page on the CloudStack Wiki</a>. It is, of course, a wiki: <em>so edit boldly!</em></p>

<p>Don't let the "hack day" moniker fool you &ndash; non-development topics and sessions are more than welcome. Giles Sirett has proposed a marketing session, and we'll likely have at least one documentation session as well. If it's CloudStack-related, it's fair game.</p>

<p>Pleased to see that we've got a pretty good selection of sessions already proposed, but we can always do with more. If you have an idea, put 'er up and show up Sunday ready to jam with the rest of the CloudStack community!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Using CloudFormation Templates with CloudStack]]></title>
    <link href="http://dissociatedpress.net/blog/2013/04/26/using-cloudformation-templates-with-cloudstack/"/>
    <updated>2013-04-26T09:28:00-05:00</updated>
    <id>http://dissociatedpress.net/blog/2013/04/26/using-cloudformation-templates-with-cloudstack</id>
    <content type="html"><![CDATA[<p>This is pretty damn cool, check out what Chiradeep has been working on:</p>

<p><blockquote><p></p></p><p><p>AWS CloudFormation provides a simple-yet-powerful way to create ‘stacks’ of Cloud resources with a single call. The stack is described in a parameterized template file; creation of the stack is a simple matter of providing stack parameters. The template includes description of resources such as instances and security groups and provides a language to describe the ordering dependencies between the resources.</p></p><p><p>CloudStack doesn’t have any such tool (although it has been discussed). I was interested in exploring what it takes to provide stack creation services to a CloudStack deployment. As I read through various sample templates, it was clear that the structure of the template imposed an ordering of resources. For example, an ‘Instance’ resource might refer to a ‘SecurityGroup’ resource — this means that the security group has to be created successfully first before the instance can be created. Parsing the LAMP_Single_Instance.template for example, the following dependencies emerge:</p></p><p><p></p><footer><strong>Chiradeep Vittal, Cloudier Than Thou</strong> <cite><a href='http://cloudierthanthou.wordpress.com/2013/04/26/stackmate-execute-cloudformation-templates-on-cloudstack/'>Stackmate : Execute CloudFormation Templates on CloudStack</a></cite></footer></blockquote></p>

<p>Check out the full post. Looking forward to seeing how this develops.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Doing it Twice? Write it Down!]]></title>
    <link href="http://dissociatedpress.net/blog/2013/04/25/doing-it-twice-write-it-down/"/>
    <updated>2013-04-25T09:54:00-05:00</updated>
    <id>http://dissociatedpress.net/blog/2013/04/25/doing-it-twice-write-it-down</id>
    <content type="html"><![CDATA[<p><img class="left" src="http://dissociatedpress.net/uploads/images/geeks-win-eventually.png"> There's a <a href="https://plus.google.com/+BrunoOliveira/posts/MGxauXypb1Y">great meme going around</a> about geeks and repetitive tasks. Because geeks will often get annoyed at the effort of doing something manually, they often decide to find a way to automate it &ndash; which usually involves a <em>lot</em> more effort than doing it the one time but "geeks win, eventually" because they save time <strong>in the long run</strong>.</p>

<p>But in the long run <strong>we're all dead</strong>. Then what? Who knows how to run your script? What happens when it needs to be maintained? As Jon Udell points out, <a href="http://blog.jonudell.net/2012/01/09/another-way-to-think-about-geeks-and-repetitive-tasks/">it's really not a contest, it's a process</a>, and non-geeks can play too. Which is why you should also <strong>write it down</strong> if you're going to do it more than two times.</p>

<p>OK, "doing it more than two times" is a huge generalization. What I mean more specifically is:</p>

<ul>
<li>If you're in a team environment or doing work that will keep cropping up.</li>
<li>If you're doing a task that is non-obvious and/or has a complicated series of steps that is non-obvious to people who are not you.</li>
<li>If you're in any kind of critical path that would block shipping or operations if you aren't there to do the magical things you do.</li>
<li>If you want to reduce your project or organization's <a href="http://en.wikipedia.org/wiki/Bus_factor">Bus Factor</a> (help other people become proficient).</li>
<li>If you want to better understand what you do and how you can improve it.</li>
</ul>


<p>Then you need to take a step back and document the things that you do on a regular basis, because it will help your teammates and (most likely) even you when you come back to a task that you haven't done for a long time.</p>

<p>Naturally, I'm thinking of this in terms of a project like <a href="http://cloudstack.apache.org">CloudStack</a> where documentation is vitally important. The success of a distributed team depends a great deal on good documentation.</p>

<h2>An Example</h2>

<p>Yesterday I spent the better part of the day doing something that, by rights, should have take 30 to 60 minutes &ndash; depending on the whims of the bandwidth gods while copying up docs to the server.</p>

<p>Unfortunately, what I was working on was not well-documented. This isn't surprising, it's something we've only had to do as a project twice and the first time was the "let's figure out how to do this" run. I captured some of the documentation during the second run, but not in enough detail and missed one step that wound up setting me back by a big chunk of time.</p>

<p>How this could have been avoided: The second time we did this, as a project, it should have been <em>well</em> documented and put up on the <a href="https://cwiki.apache.org/CLOUDSTACK/">wiki</a>.</p>

<h2>Getting it Down</h2>

<p>While you're working, keep a scratch (text) file open at all times. Shell history is nice, but it's often hard to decipher after the fact, especially if you have a lot of trial and error going on.</p>

<p>When you run a command or do something that works, put it in the file. Even if you do nothing more than make public a list of steps that worked for you, it's light years ahead of having to start from scratch.</p>

<p>After you've done $task, take a few minutes to brush up the list you've created and (if necessary) fill in any gaps like the requirements needed to run the commands you've used, the files you need, where to get source &ndash; whatever. Just think about how you got to the state you were in before <em>Step 1</em> that may not be obvious to anyone else.</p>

<p>Plain text is absolutely fine, and usually preferred.</p>

<h2>Getting it Out</h2>

<p>If your project uses a wiki or something like that, now's a good time to put it in the appropriate place in the wiki. Note that putting documentation in an obvious place is sometimes as important as creating the documentation in the first place. A hidden README file in a disused directory on SVN isn't much help if your project usually looks to the Web for its docs.</p>

<p>You can, and also should, put it up on a blog. This is not a natural impulse for most hacker types, but more's the pity that it isn't. First, you can get feedback that way from people you've never even heard of. You may take it with a grain of salt, but you may also learn something you never would have learned any other way from someone who is an expert at what you're an neophyte at. (Note, this can also serve as a resume addition of sorts that demonstrates to employers that you are capable of putting words on paper, and that you're constantly learning.)</p>

<p>Finally, assuming you're doing it with a project or organization: <strong>announce your new docs</strong> on the appropriate mailing list. This way anyone who has an interest can benefit from your new docs, and you also can enjoy a little peer review. (Note, make a practice of thanking people if you see this happening, as a little encouragement is nice and shows that &ndash; <em>yes, someone actually just received the message in a bottle that was just sent out</em>.)</p>

<h2>Share Your Brain</h2>

<p>If you're the type of person who'd rather automate a task than repeat it, then you should also think about helping <em>others</em> (and future you) avoid having to repeat learning how to do something you've already figured out. The extra time that it takes to document something is no different than the extra time it takes to write a script; it's saving work in the future by doing a little extra now.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Reverting an SVN Commit]]></title>
    <link href="http://dissociatedpress.net/blog/2013/04/25/reverting-an-svn-commit/"/>
    <updated>2013-04-25T08:53:00-05:00</updated>
    <id>http://dissociatedpress.net/blog/2013/04/25/reverting-an-svn-commit</id>
    <content type="html"><![CDATA[<p><img class="left" src="http://dissociatedpress.net/uploads/images/whut-ian.jpg"> I've never <em>quite</em> gotten the hang of Subversion (SVN). Most of the stuff we do on <a href="http://cloudstack.apache.org/">CloudStack</a> is in <a href="https://git-wip-us.apache.org/repos/asf?p=cloudstack.git;a=summary">a git repository</a>, but the Website is managed with the <a href="http://www.apache.org/dev/cms.html">Apache CMS</a> and stored in SVN.</p>

<p>While working on the <a href="https://blogs.apache.org/cloudstack/entry/apache_cloudstack_4_0_2">4.0.2 docs release</a> yesterday, I found that I didn't quite have all the steps worked out for committing docs to the Website. (We've only had two releases so far, and <a href="http://ke4qqq.wordpress.com/">David Nalley</a> took care of building and releasing the final docs on those.)</p>

<p>To make a long, frustrating, story a lot shorter: I found an occasion to need to know how to do an SVN revert and realized <strong>it's not just like git</strong> when it comes to doing a revert. Git makes doing a revert pretty damn easy, whether you're reverting a local change or a change you've already committed to the main repo. Subversion also makes doing a revert easy locally:</p>

<p><code>
svn revert /path/to/filename
</code></p>

<p>That's simple enough. But what if you've already sent your changes to the main repo? Then it's a little trickier, but not impossible.</p>

<ul>
<li>Get the revision number of your commit. Sooner is better (I'm not sure how easy this would be if you're trying to revert a change a month later if there's been a lot of changes around it in the meantime.)</li>
<li>Do an svn update:
<code>
svn update
</code></li>
<li>Then you're going to (and this isn't terribly intuitive) do an <code>svn merge</code> to walk it back:
<code>
svn merge -c -XXXXXXXX https://svn.apache.org/repos/asf/cloudstack
</code>
(Naturally, you're going to want to replace the URL to the repo with your own, rather than CloudStack's. And replace XXXXXXXX with the number of your own commit.)
The <code>-c -XXXXXXXX</code> means <a href="http://andy.wordpress.com/2012/06/14/svn-merge-c/">change in reverse</a>.</li>
<li>Now, do an <code>svn status</code> to make sure that it's properly undone what you wanted undone. You can do an svn diff (<code>svn di</code>) as well if you want detailed changes.</li>
<li>Finally, you'll go ahead and commit the changes if you're convinced all is well:
<code>
svn commit -m "Oops"
</code></li>
</ul>


<p>(The oops is actually optional.)</p>

<p>Folks who work with SVN regularly no doubt know all this, but I know there are plenty of folks like me who touch SVN infrequently and might run into trouble.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Four vs. Six Months]]></title>
    <link href="http://dissociatedpress.net/blog/2013/04/23/four-vs-six-months/"/>
    <updated>2013-04-23T09:15:00-05:00</updated>
    <id>http://dissociatedpress.net/blog/2013/04/23/four-vs-six-months</id>
    <content type="html"><![CDATA[<p>The decision to have time-based releases was made early on with the Apache CloudStack project. It's fairly standard these days to go with time-based releases rather than feature-based releases, and makes a lot of sense for projects that are primarily aimed at use in corporate IT.</p>

<p>While coming to the decision of time-based vs. feature-based was easy, coming up with the actual <em>length</em> of a release cycle is trickier. Everyone wants the release yesterday, so there's a strong desire to have a shorter cycle. But a shorter cycle puts pressure on folks to actually <em>get the release out</em>, and a shorter cycle (especially for newer projects) seems more difficult.</p>

<p>We decided initially to go with four-month cycles, but [that decision is being revisited|http://markmail.org/message/3ctdwor5hfbpa3vx] right now, with a lot of the community leaning in favor of six-month cycles.</p>

<p>I'd be curious to hear from other projects exactly <em>how</em> they came to decide the length of time-based release cycles. In Linux distribution circles, six-month cycles have been popular &ndash; though it looks like Ubuntu is fiddling with that a little bit, and AFAIK, Fedora has generally come closer to seven-month cycles when all is done and said.</p>

<p>For the record, I don't think we've got enough data to decide that four month cycles aren't workable. I'd really like to see the community take 4.2.0 as the cycle to really refine processes, get more automated testing in place, and try to get documentation folks working together a little better before saying that six-month cycles are a better fit.</p>
]]></content>
  </entry>
  
</feed>
