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

  <title><![CDATA[sharp bites]]></title>
  <link href="http://www.sharpbites.com/atom.xml" rel="self"/>
  <link href="http://www.sharpbites.com/"/>
  <updated>2013-04-28T09:40:45+02:00</updated>
  <id>http://www.sharpbites.com/</id>
  <author>
    <name><![CDATA[alberto]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[A week at BeCode. Day 6: Should I stay or should I go]]></title>
    <link href="http://www.sharpbites.com/2013/04/27/a-week-at-becode-day-6-should-i-stay-or-should-i-go/"/>
    <updated>2013-04-27T00:09:00+02:00</updated>
    <id>http://www.sharpbites.com/2013/04/27/a-week-at-becode-day-6-should-i-stay-or-should-i-go</id>
    <content type="html"><![CDATA[<iframe width="640" height="510" src="http://www.youtube.com/embed/RK34uNGvMbs " frameborder="0" allowfullscreen></iframe>


<p>Today Xavi invited me to attend a lecture he was imparting at UPV as part of the course in Agile Methodologies. He talked about Implementation Patters, which turns out to be one of his favorite books (the other one being Refactoring). It now next on my reading list (and it should be in yours too!).</p>

<p>From there we went to the old town and did a small touring visit on our way to the Central Market, where we met Luis. We bought some food there, and went to cook it at Xavi&#8217;s, where Luis kindly prepared it for all of us. He also told us about some of his marketing strategy for <a href="http://www.harveysclothing.com/">Harveys</a> and his plans to go to the Alps this Summer for a month of bike trainning.</p>

<p>It was also amusing to get to know Xavi a bit better through his flat and belongings. All the books, the dust, the paintings he and his girlfried draw, the stuff he collects, the music, his punchbag, the furniture&#8230;</p>

<p>While Luis had an nap, we spent the rest of the afternoon knowing each other, talking about our past, present and foreseeable future. The time flied and I had to part ways to get my stuff ready for the leave.</p>

<p>I feel sad to go. These guys made me feel so at home and I enjoyed this week so much, I&#8217;d love to stay longer.</p>

<p>Thank you!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A week at BeCode. Day 5: I wanna be sedated]]></title>
    <link href="http://www.sharpbites.com/2013/04/26/a-week-at-becode-day-5-i-wanna-be-sedated/"/>
    <updated>2013-04-26T00:13:00+02:00</updated>
    <id>http://www.sharpbites.com/2013/04/26/a-week-at-becode-day-5-i-wanna-be-sedated</id>
    <content type="html"><![CDATA[<iframe width="640" height="510" src="http://www.youtube.com/embed/Eajk2uDWaP0 " frameborder="0" allowfullscreen></iframe>


<p>Yesterday I started pairing on the 8-Queens Kata with Xavi. We solved the logic of the queen, and we talked about the innability of BDD to help designing an algorithm. We talked about how it could be solved.</p>

<p>Today I got back on the problem and miserably failed at it. I tried to model it throught tests, I tried to spike it, I tried to to divide it in chunks, but I didn&#8217;t get anywhere close to solving it. Boy, was it frustrating!</p>

<p>In the afternoon I paired with Xavi and he just dictated me a declarative solution of the algorithm in 20 lines of code. From there it was pretty straightforward. I still managed to mess it up. I wanted so badly to give up. Almost as much as I wanted to solve it. It finally worked, but unsurprisingly it didn&#8217;t make me feel much better.</p>

<p>After that, we went to have some beer-driven conversation about BeCode culture, its past, present and future, mentoring, meritocracy, software as crafstmanship/engineering/art.</p>

<p>And finally, I got my BeCode T-shirt!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A week at BeCode. Day 3: Psycho Killer]]></title>
    <link href="http://www.sharpbites.com/2013/04/25/a-week-at-becode-day-3-psycho-killer/"/>
    <updated>2013-04-25T00:35:00+02:00</updated>
    <id>http://www.sharpbites.com/2013/04/25/a-week-at-becode-day-3-psycho-killer</id>
    <content type="html"><![CDATA[<iframe width="640" height="510" src="http://www.youtube.com/embed/l5zFsy9VIdM " frameborder="0" allowfullscreen></iframe>


<p>Today I met <a href="https://twitter.com/iTor3_0">Aitor</a>, the last member of the BeCode family. I spent the morning improving Cuore.js with Xavi. It was great fun, pairing and laughing in a relaxed atmosphere. At some point, Xavi explained us the etymology of his surname, and how it shared roots with the word &#8220;hostile&#8221;.</p>

<p>In the afternoon, we received the visit of Connor, a prospective client. They had an open conversation of what they expected from each other to see if they would fit well, and setting the stage on the ways in which they want (and especially the ones they don&#8217;t want) to work.</p>

<p>In the evening I went to grab some beers with Xavi and Miguel Ángel and then to have dinner with Emma. We chatted about desksurfing, salaries and contracts. With the help of a few more beers I managed to get her from giving me the look to mmokay. Tough one!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A week at BeCode. Day 2: God Save the Queen]]></title>
    <link href="http://www.sharpbites.com/2013/04/23/a-week-at-becode-day-2-god-save-the-queen/"/>
    <updated>2013-04-23T21:07:00+02:00</updated>
    <id>http://www.sharpbites.com/2013/04/23/a-week-at-becode-day-2-god-save-the-queen</id>
    <content type="html"><![CDATA[<iframe width="640" height="510" src="http://www.youtube.com/embed/xJmouowPH5k " frameborder="0" allowfullscreen></iframe>


<p>Today I met <a href="https://twitter.com/hell03610">Emma</a> and Nico. Emma is part of BeCode, but is playing her own adventure as a <a href="http://tracxphotography.com/">photographer for technical conferences</a>. Nico is from Granada. In a past life he was a programmer and he decided he wanted to get get back into the game. He is attending a course they are teaching during the weekends and decided to take the chance to stay here for a full immersion. He also nicely recommended me a couple of places to visit in Navarre (shame on me!).</p>

<p>I spent the morning pairing with Xavi on Cuore again and managed to get a few pomodoros done, cleaning up the codebase by reintroducing the classes while questioning the existence and expresiveness of every line of code.</p>

<p>In the afternoon, after talking to Nico about his learning path I decided to pair with him, using the <a href="http://www.durangobill.com/N_Queens.html">N-Queens problem</a> as the playground. We where doing quite well until Xavi told us our approach was retarded, and how we should try to solve it bottom-up, from the core of the problem domain. The conversation deviated into the difference between emergent and exploratory design, design patterns, programming languages (with a small rant on ruby), and the kinds of tests he does. He also mentioned his disdain for Clean Code and Working Effectively with Legacy Code (put that in your pipe and smoke it). We decided to ignore the old-rambling-man and finish the implementation. After that, we talked about how the code could be modified to take different chess pieces into account, but left it there and called it a day.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A week at BeCode. Day 1: Anarchy in the UK]]></title>
    <link href="http://www.sharpbites.com/2013/04/22/a-week-at-becode-day-1-anarchy-in-the-uk/"/>
    <updated>2013-04-22T22:57:00+02:00</updated>
    <id>http://www.sharpbites.com/2013/04/22/a-week-at-becode-day-1-anarchy-in-the-uk</id>
    <content type="html"><![CDATA[<iframe width="640" height="510" src="http://www.youtube.com/embed/pOe9PJrbo0s " frameborder="0" allowfullscreen></iframe>


<p>Today was my first day at BeCode. If you measure productivity by lines of count written, then my productivity today would be exactly 0. (Also, you are an idiot. Stop doing that.)</p>

<p>The door was open when I arrived to The Cave (more on that later). I came in and met <a href="twitter.com/xav1uzz">Xavi</a> and <a href="twitter.com/elmendalerenda">Mike</a>. <a href="https://twitter.com/semurat">Jorge</a> and <a href="https://twitter.com/jjballano">Jesús</a> were remote, so I didn&#8217;t get to talk to them. There was also a guy whose name I don&#8217;t remember (sorry mate!) who is not really part of BeCode, but is working there with them. He designs his own line of T-shirts. I spent some time talking with Xavi and Mike about BeCode and what they do now. It surprised me a lot when they told me they have decided not to work for clients anymore. They told me they now prefer to do workshops, consulting and hacking, and they would like to develop a product.</p>

<p>The big WTF of the day came when Xavi kicked me in the head with the fact that Mac OS X is not case-sensititive (srsly, Apple?). He later added something about the worst thing in the world being a PHP programmer. He mentioned something after that, but I was still shocked, so you better ask him. :)</p>

<p>When I woke up, I talked with Mike about a project he wants to do for his town-hall, to give people the ability to give feedback. We discussed about his motivations, what would constitute the MVP and how some of the features made sense or not. Then <a href="https://twitter.com/luislitze">Luis</a> and <a href="https://twitter.com/circun4">Sergio</a> came and we went to buy some food for lunch.</p>

<p>In the afternoon, Sergio, showed me the very starting bits of a 2D videogame he wants to do. Mike told me he is going to teach a javascript course and we decided I would do it beforehand along the week and give him feedback.</p>

<p>Then I decided to have a look to <a href="https://github.com/beCodeMyFriend/Cuore.js">Cuore.js</a> source code while I waited for Xavi to come back from the gym (I know, I know, me too. Maybe he wants to get into Gandia Shore or something). When he arrived he told me what he wants to work on for the next version (was that secret? I hope not) and explained me the high level architecture of Cuore and how ReST was full of crap and how SOA was vastly superior. He  probably still was high on testosterone and I didn&#8217;t want to get kicked again, so I just nodded and no one got hurt. We moved on to the code and paired, having him as the driver. I was surprised becaused I expected him to go much faster than what he did. Instead he took plenty of time with the code. We talked a lot about what we were trying to achieve, there was no rush at all. I decided I will be working with Xavi on Cuore for the rest of the week, too.</p>

<p>A random girl came in (remember the door was open? It remained open for the rest of the day. It turns out it&#8217;s a rule to be approachable to passing byers) asking if we(they) fixed bikes. They don&#8217;t, but they told her she needed a new wheel and where to buy it, and they offered to teach her how to replace it. She came back after a while and Luis did it. She paid back with some pastries.</p>

<p>I spent some more time talking with Xavi about his view on our so-called industry, the need to teach programming to children and other phylosophical aspects of our not-science-nor-craft field.</p>

<p>Finally, Luis and &#8220;Mate&#8221; showed us a couple of videos they had been editing of Luis doing vandal cycling in Valencia and New York.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A week at BeCode. Day 0: Hey Ho! Let's go!]]></title>
    <link href="http://www.sharpbites.com/2013/04/21/a-week-at-becode-day-0-hey-ho-lets-go/"/>
    <updated>2013-04-21T23:22:00+02:00</updated>
    <id>http://www.sharpbites.com/2013/04/21/a-week-at-becode-day-0-hey-ho-lets-go</id>
    <content type="html"><![CDATA[<iframe width="640" height="510" src="http://www.youtube.com/embed/ElX7x_qNUYQ " frameborder="0" allowfullscreen></iframe>


<p>This is a post series about my desksurfing at BeCode.</p>

<p>We coined the term <a href="http://www.desk-surfing.org/">desksurfing</a>  at the <a href="http://agile-spain.org/">Agile Spain</a> Open Space Conference we held back in 2011 in Pamplona (my hometown!). It’s akin to what some fellows like <a href="http://coreyhaines.com/">Corey Haines</a> and other journeymen were already doing. You go visiting another company to spend some time sharing experiences, programming and learning from each other. Cross-pollination for your brain.</p>

<p>Today, I traveled to Valencia for a week of desksurfing at <a href="http://www.becodemyfriend.com/?lang=en_us">BeCode</a>. They describe themselves as a “punk incubator”, and you can certainly tell they are not very “enterprisey”!</p>

<ul>
<li><p>They are so underground they don’t put their office address (or the cave as they call it) on their web. I had to look for it to know where it is. Fuck! I just realized they don’t even tell what they are or do, except for a few sample projects!</p></li>
<li><p>When I mailed them telling I wanted to go there, <a href="https://twitter.com/XaV1uzz">Xavi</a>’s answer was (quite literally): “awesome, call me when you get here”. That. Was. It. Then, when I arrived he didn’t answer the phone (he later told me <a href="https://twitter.com/XaV1uzz/status/326042040225890305">he was having a paella</a>, wtf! :D).</p></li>
<li><p>They hold free workshops in their office as part of their “neighbourhood development plan”, with topics as disparate as how to fix your bike or teaching kids html or programming with <a href="http://scratch.mit.edu/">scratch</a>. I think anyone can give a workshop there, they just have to ask for the space.</p></li>
</ul>


<p>What am I going to do this week? I’m not sure yet, and I just don’t really care (well, I was curious, so after I insisted Xavi I got some more info and he proposed a couple of interesting options to work with them, we&#8217;ll see).</p>

<p>Then, why did I decide to come? AFAIK they are raw, honest, transparent and strong in their beliefs. And that resonates with me. I came here to live that, to see how they do things, to breathe their culture (and to share mine if they are interested). To have fun.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Enabling Mysql's Federated engine/plugin on Mac OS X]]></title>
    <link href="http://www.sharpbites.com/2012/09/19/enabling-mysqls-federated-engine-slash-plugin-on-mac-os-x/"/>
    <updated>2012-09-19T18:36:00+02:00</updated>
    <id>http://www.sharpbites.com/2012/09/19/enabling-mysqls-federated-engine-slash-plugin-on-mac-os-x</id>
    <content type="html"><![CDATA[<p>I spent a few hours trying to get the federated engine to work on Mysql, and since I didn&#8217;t
find any good sources for it, I thought a blog might help someone else.</p>

<p>First, install mysql if you haven&#8217;t already. I used homebrew.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ brew install mysql</span></code></pre></td></tr></table></div></figure>


<p>The Federated plugin is not installed by default, so you&#8217;ll have to do it manually. Get into mysql as root (or a user that can alter the mysql.plugin table) and type:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>mysql&gt; install plugin federated soname 'ha_federated.so';</span></code></pre></td></tr></table></div></figure>


<p>To check if it was installed correctly run:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>mysql&gt; show plugins;</span></code></pre></td></tr></table></div></figure>


<p>Exit the shell and edit /etc/my.cnf file. If you don&#8217;t have any, you&#8217;ll find an example in your mysql installation directory.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ sudo cp $(brew --prefix mysql)/support-files/my-small.cnf /etc/my.cnf</span></code></pre></td></tr></table></div></figure>


<p>Edit the file, and under [mysqld] add a line that contains:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>federated</span></code></pre></td></tr></table></div></figure>


<p>Restart the mysqld service:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>mysql.server restart</span></code></pre></td></tr></table></div></figure>


<p>Congrats. You&#8217;re done!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[An introduction to the ruby ecosystem for noobies]]></title>
    <link href="http://www.sharpbites.com/2012/07/02/an-introduction-to-the-ruby-ecosystem-for-noobies/"/>
    <updated>2012-07-02T20:08:00+02:00</updated>
    <id>http://www.sharpbites.com/2012/07/02/an-introduction-to-the-ruby-ecosystem-for-noobies</id>
    <content type="html"><![CDATA[<p>Here is a short introductory video to some useful tools to develop in ruby.
It covers homebrew, pow, rvm, bundler and pry.</p>

<iframe width="640" height="510" src="http://www.youtube.com/embed/GtB6cwgm2fE " frameborder="0" allowfullscreen></iframe>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[rails.start 1.month.ago]]></title>
    <link href="http://www.sharpbites.com/2012/03/04/rails-start-1-month-ago/"/>
    <updated>2012-03-04T04:10:00+01:00</updated>
    <id>http://www.sharpbites.com/2012/03/04/rails-start-1-month-ago</id>
    <content type="html"><![CDATA[<p>It has been one month since I started doing ruby and Rails at work, so I
 thought I&#8217;d share my experiences so far.</p>

<p>Here&#8217;s a list of the things I&#8217;ve had to deal with this month:</p>

<ul>
<li>git</li>
<li>ruby</li>
<li>rails</li>
<li>rvm</li>
<li>rubygems</li>
<li>bundler</li>
<li>homebrew</li>
<li>rspec</li>
<li>cucumber</li>
<li>capybara</li>
<li>guard</li>
<li>spork</li>
<li>jenkins</li>
<li>log4r</li>
<li>rest-client</li>
<li>delayed_job</li>
<li>rake</li>
<li>capistrano</li>
<li>foreman</li>
<li>daemons</li>
</ul>


<p>You can tell I&#8217;ve been busy :D.</p>

<h2>References</h2>

<p>Here are some resources I&#8217;ve found useful in my journey so far.</p>

<h3>Rails</h3>

<ul>
<li><a href="http://ruby.railstutorial.org/ruby-on-rails-tutorial-book?version=3.2">Ruby on Rails Tutorial</a>, an awesome introductory book for Rails. It teaches you about many of the things in the list above.</li>
</ul>


<h3>Ruby</h3>

<ul>
<li><p><a href="http://www.amazon.co.uk/gp/product/1934356085/ref=as_li_qf_sp_asin_tl?ie=UTF8&tag=wwwsharpbites-21&linkCode=as2&camp=1634&creative=6738&creativeASIN=1934356085">Programming Ruby 1.9</a><img src="http://www.assoc-amazon.co.uk/e/ir?t=wwwsharpbites-21&l=as2&o=2&a=1934356085" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />. <strong>The ruby book</strong>.
For those who want to gain in-depth knowledge of the language.</p></li>
<li><p>For hands-on ruby learning, try <a href="http://rubykoans.com/">rubykoans</a> and <a href="http://rubymonk.com/">rubymonk</a>.
They are interactive online tutorials guiding you in the inners of ruby.</p></li>
</ul>


<h3>TDD</h3>

<ul>
<li><a href="http://www.amazon.co.uk/gp/product/1934356379/ref=as_li_tf_tl?ie=UTF8&tag=wwwsharpbites-21&linkCode=as2&camp=1634&creative=6738&creativeASIN=1934356379">The RSpec Book</a><img src="http://www.assoc-amazon.co.uk/e/ir?t=wwwsharpbites-21&l=as2&o=2&a=1934356379" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />. A
must read. It teaches you how to do BDD/TDD right. Totally recommended even if you don&#8217;t program in ruby.</li>
</ul>


<h3>Git</h3>

<ul>
<li>If you are new to git, I recommend you to read <a href="http://progit.org/book/">Pro Git</a>.</li>
<li>For a more reference to-the-point style, check <a href="http://gitref.org/">Git Reference</a></li>
<li>Finally, for a learn-by-example guide, visit <a href="http://gitimmersion.com/">Git immersion</a></li>
</ul>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Movin' in]]></title>
    <link href="http://www.sharpbites.com/2012/03/03/movin-in/"/>
    <updated>2012-03-03T23:00:00+01:00</updated>
    <id>http://www.sharpbites.com/2012/03/03/movin-in</id>
    <content type="html"><![CDATA[<p>You probably have noticed this blog got a facelift.
I&#8217;ve moved from blogger to github, using a cool feature called
 <a href="http://pages.github.com/">github-pages</a>,
 which allows you to publish content to the web by simply pushing content
 to one of your GitHub hosted repositories and point your custom domain to it.</p>

<p>In order to generate the html pages, I&#8217;m using
 <a href="http://octopress.org/">octopress</a>. It allows you to define layouts and
 create posts by writing your posts in
 <a href="http://daringfireball.net/projects/markdown/basics">markdown</a>. It also makes
 super easy to deploy to github, heroku or to your own hosting via rsync.</p>

<p>Here an example showing how this post looks like in markdown:</p>

<div><script src='https://gist.github.com/1969245.js?file='></script>
<noscript><pre><code>---
layout: post
title: &quot;Movin' in&quot;
date: 2012-03-03 23:00
comments: true
categories: [github, octopress, blogging]
published: false
---
You probably have noticed this blog got a facelift.
I've moved from blogger to github, using a cool feature called
 [github-pages](http://pages.github.com/),
 which allows you to publish content to the web by simply pushing content
 to one of your GitHub hosted repositories and point your custom domain to it.


In order to generate the html pages, I'm using
 [octopress](http://octopress.org/). It allows you to define layouts and
 create posts by writing your posts in
 [markdown](http://daringfireball.net/projects/markdown/basics). It also makes
 super easy to deploy to github, heroku or to your own hosting via rsync.

Here an example showing how this post looks like in markdown:
{% gist gist_id 1969245 %}

You can import your pages from blogger, wordpress, tumblr and a few other using
 [jekyll's blog migrations](https://github.com/mojombo/jekyll/wiki/blog-migrations)
 (octopress is built on top of [jekyll](https://github.com/mojombo/jekyll)).</code></pre></noscript></div>


<p>You can import your pages from blogger, wordpress, tumblr and a few other using
 <a href="https://github.com/mojombo/jekyll/wiki/blog-migrations">jekyll&#8217;s blog migrations</a>
 (octopress is built on top of <a href="https://github.com/mojombo/jekyll">jekyll</a>).</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[git started #1. Using git with a svn server]]></title>
    <link href="http://www.sharpbites.com/2011/11/06/git-started-1-using-git-with-svn-server/"/>
    <updated>2011-11-06T00:00:00+01:00</updated>
    <id>http://www.sharpbites.com/2011/11/06/git-started-1-using-git-with-svn-server</id>
    <content type="html"><![CDATA[<div class='post'>
<div dir="ltr" style="text-align: left;" trbidi="on">So, you already know that <a href="http://www.sharpbites.com/2008/09/why-svn-sucks.html">svn sucks</a> and you want to switch to git because you know it&#8217;s awesome, but you are stuck in a team environment of svn-zombies.<br /><br />What can you do? You can try to convert all the non-deads at once&#8230; or you can use git-svn and get them into git one by one.<br /><br />git-svn let&#8217;s you interact with a svn server using git as your client.&nbsp;Some git GUIs support git svn. On Mac OSX you can use <a href="http://gitx.laullon.com/">GitX(L)</a>&nbsp;or <a href="http://www.sourcetreeapp.com/">SourceTree</a>. Here is how to do it using the commandline.<br /><br />To get a copy of your svn repo (assuming you have the de facto standard structure of trunk, branches and tags dirs) do:<br /><br /><code>git svn init -s http://path/to/your/svn/project</code><br /><br />From here, use your local repo as usually, i.e. do some hacking, add your files and commit them. Rinse, repeat. <br /><br /><code>git add somefile&nbsp;</code><br /><code>git commit</code><br /><code>...</code><br /><br />When you are ready to commit your changes, get the changes from the svn repo:<br /><br /><code>git svn rebase</code><br /><br />and commit your changes:<br /><br /><code>git svn dcommit</code><br /><br />That&#8217;s it!</div></div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Change]]></title>
    <link href="http://www.sharpbites.com/2011/10/23/change/"/>
    <updated>2011-10-23T00:00:00+02:00</updated>
    <id>http://www.sharpbites.com/2011/10/23/change</id>
    <content type="html"><![CDATA[<div class='post'>
<div dir="ltr" style="text-align: left;" trbidi="on"><blockquote>“You never change things by ﬁghting the existing reality. To change something, build a new model that makes the existing model obsolete.” <cite> R. Buckminster Fuller</cite></blockquote></div></div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Becoming an Agile Manager: Transforming the Three Dysfunctions of Management]]></title>
    <link href="http://www.sharpbites.com/2011/04/15/becoming-agile-manager-transforming/"/>
    <updated>2011-04-15T00:00:00+02:00</updated>
    <id>http://www.sharpbites.com/2011/04/15/becoming-agile-manager-transforming</id>
    <content type="html"><![CDATA[<div class='post'>
A terrific talk by Diana Larsen on <a href="http://www.infoq.com/presentations/Managing-Agile">how to overcome 3 dysfunctional management traps</a>:&nbsp;magical thinking, illusion of control and individual blame using Agile.</div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Setting up a ruby testing environment on Linux]]></title>
    <link href="http://www.sharpbites.com/2011/01/29/setting-up-ruby-testing-environment-on/"/>
    <updated>2011-01-29T00:00:00+01:00</updated>
    <id>http://www.sharpbites.com/2011/01/29/setting-up-ruby-testing-environment-on</id>
    <content type="html"><![CDATA[<div class='post'>
Now that <a href="http://www.sharpbites.com/2011/01/setting-up-your-ruby-environment-on.html">we have setup our ruby environment on Linux</a>,&nbsp;we are going to create a setup for testing purposes by adding some useful gems.<br /><br />For that, we will use a feature from <a href="http://rvm.beginrescueend.com/">rvm</a> called&nbsp;<a href="http://rvm.beginrescueend.com/gemsets/basics/">gemsets</a>. A gemset is an independent setup for your environment. That means you can have many environments with a different set of gems (hence the name) installed independently on each one (even with different ruby versions).<br /><br />Usually, when working on a project, you would create a gemset specific for that project, but in this case, we are going to create a gemset for practicing tdd, doing katas, coderetreats, etc. If you plan to use rvm in a serious project (which you should), please read first about <a href="http://rvm.beginrescueend.com/rvm/best-practices/">rvm best practices</a>.<br /><br /><span class="Apple-style-span" style="font-size: large;">A brief introduction to gemsets</span><br />For each version of ruby, rvm creates two gemsets, the default, empty gemset and the global gemset. You can list your gemsets with:<br /><blockquote>rvm gemset list</blockquote>Gems that are installed to the @global gemset are shared to all other gemset for that ruby. We won&#8217;t install anything here. Instead we will create our own gemset and put everything there.<br /><br />Create a tdd gemset:<br /><blockquote>rvm gemset create tdd</blockquote>Switch to that gemset:<br /><blockquote>rvm use gemset 1.9.2@tdd</blockquote>If you want to make this your default gemset (the one that will be loaded by default) you can do that by doing:<br /><blockquote>rvm use gemset 1.9.2@tdd &#8211;default</blockquote>Verify you are on the new gemset:<br /><blockquote>rvm gemset name</blockquote>You should get:<br /><blockquote>tdd</blockquote><span class="Apple-style-span" style="font-size: large;">Gems for testing that rock</span><br />You can install gems <b>for your current gemset</b> using:<br /><blockquote>gem install</blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">To do unit testing in ruby, <a href="http://relishapp.com/rspec">rspec</a> is a great choice.<br /><blockquote>gem install&nbsp;rspec</blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">To start using it, create an rspec file, like example_spec.rb inside a spec folder on the root of your project:</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px;"></span></div><pre style="background-color: #e0f8e0; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(8, 138, 8); border-left-width: 1px; border-right-color: rgb(8, 138, 8); border-right-width: 1px; border-style: initial; border-top-color: rgb(8, 138, 8); border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; font-weight: inherit; margin-bottom: 8px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 2px; padding-left: 5px; padding-right: 5px; padding-top: 2px; vertical-align: baseline; white-space: pre;"><span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px;">describe "something" do<br />  it "does something that passes" do<br />    5.should eq(5)<br />  end<br /></span></pre><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">You can then execute it by running:</div><blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">rspec spec/</div></blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">For a nicer, colored output, pass in the &#8211;colour flag to rspec</div><blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">rspec spec/ &#8211;colour&nbsp;</div></blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Or create a .rspec config file&nbsp;on your project root (or in your home dir if you want to always use it), to tell rspec to use the colored output by default</div><blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">echo &#8220;&#8211;colour&#8221; &gt;&gt; .rspec</div></blockquote><br /><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Excecuting rspec by hand all the time gets boring quickly, and it turns out computers are quite good at doing tasks repeteadly, so you can instead use <a href="http://ph7spot.com/musings/getting-started-with-autotest">autotest</a>, a cool gem from the <a href="http://www.zenspider.com/ZSS/Products/ZenTest/">ZenTest suite</a>&nbsp;that will automagically execute your tests when you save your files.</div><blockquote>gem install autotest</blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Execute it from your project root.</div><blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">autotest &#8211;style rspec2 &#8211;quiet</div></blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">The &#8211;style flag tells autotest to look for rspec kind of tests. The &#8211;quiet flag removes a bit of noise you probably don&#8217;t care about.</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br /></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">If you have created the .rpec file on your project root, you can omit the style flag and autotest will still find the tests.</div><blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">autotest &#8211;quiet</div></blockquote>If you are really lazy like me, you can instruct autotest to be quiet by default by creating a .autotest file in your home:<br /><blockquote>echo &#8220;Autotest.options[:quiet] = true&#8221; &gt;&gt; ~/.autotest</blockquote>So whatever option you want to use, let&#8217;s try it.&nbsp;Modify your rspec file and save it. Awesome, isn&#8217;t it? But wait,&nbsp;there is more!<br /><br />We&#8217;ll add a nice gem called <a href="https://github.com/fnando/test_notifier">test_notifier</a>.&nbsp;This is the topping of the cake. It will notify your OS with the result of your tests.<br /><br />In order to it on GNOME, we will need to install libnotify:<br /></div><blockquote>sudo apt-get install libnotify-bin</blockquote><blockquote>gem install test_notifier</blockquote>Configure autotest to use test_notifier:<br /><blockquote>echo &#8216;require &#8220;test_notifier/runner/autotest&#8221;&#8217; &gt;&gt; .autotest</blockquote>Or add the following to your rspec/spec_helper file if you want to use it directly with rspec:<br /><blockquote>require &#8220;test_notifier/runner/spec&#8221;</blockquote>Now you should get a nice notification when you save your file.<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_kQ7iivKjVno/TUSNLUgyTcI/AAAAAAAAARA/zA_zkMV45dk/s1600/test_notifier.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="138" src="http://1.bp.blogspot.com/_kQ7iivKjVno/TUSNLUgyTcI/AAAAAAAAARA/zA_zkMV45dk/s320/test_notifier.png" width="320" /></a></div></div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Setting up your ruby environment on Linux]]></title>
    <link href="http://www.sharpbites.com/2011/01/25/setting-up-your-ruby-environment-on/"/>
    <updated>2011-01-25T00:00:00+01:00</updated>
    <id>http://www.sharpbites.com/2011/01/25/setting-up-your-ruby-environment-on</id>
    <content type="html"><![CDATA[<div class='post'>
Here are the instructions on how to set up a ruby environment for Linux, in case you want to start playing with it.<br /><br /><b>NOTE:</b> Don&#8217;t use the packages from your distribution. They are outdated and will cause more harm than good. Use one of the methods below.<br /><br /><span class="Apple-style-span" style="font-size: large;">The quick and easy way</span><br />If you are planning to use Rails anyways, you can use the script from <a href="https://github.com/joshfng/railsready">railsready</a>.<br />It will install rails, passenger, and a shitload dependencies it need for everything to work smoothly.<br />You can install it by running:<br /><blockquote>sudo wget &#8211;no-check-certificate https://github.com/joshfng/railsready/raw/master/railsready.sh &amp;&amp; bash railsready.sh</blockquote>The script will ask if you want to build Ruby from source or install RVM.&nbsp;Choose RVM.<br /><br />It will download around 50MB of libraries from the repositories and then download and compile rvm, ruby and download again some other gems, so it will take some time. Don&#8217;t worry, you don&#8217;t have to do anything, just wait.<br /><br /><span class="Apple-style-span" style="font-size: large;">The almost-as-quick, almost-as-easy way</span><br />If you don&#8217;t intend to use rails and don&#8217;t feel like installing all that stuff, use the following method. It&#8217;s basically doing the same thing as the previous script, except you don&#8217;t need so many dependencies, and you won&#8217;t install rails or passenger.<br /><br /><b>Installing RVM</b><br /><br /><a href="http://rvm.beginrescueend.com/">RVM</a> (Ruby Version Manager)&nbsp;is a tool which allows us to easily install, manage and work with multiple ruby environments (interpreters and gems) on the same machine. This means we can create different environments with distincts versions, of ruby, rails, or whatever gem we want, without any headaches.<br /><div><br /></div><div><div>In order to install rvm, you&#8217;ll need curl, git and some compiler tools. We can get them with the following command:</div><blockquote>sudo apt-get install git-core curl build-essential</blockquote></div><div><div>To install rvm execute:</div><blockquote>bash &lt; &lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )</blockquote></div><div><div>This command will install rvm in your home directory.</div></div><div>You need to include a line at the end of the .bashrc file to tell it to load rvm.</div><div>Follow carefuly the instructions on your terminal, specially the part about converting the return to an if statement</div><blockquote>&#8221;[ -z &#8220;$PS1&#8221; ] &amp;&amp; return&#8221;</blockquote><div><b>NOTE:</b> The railsready script doesn&#8217;t do this, and just appends the line loading rvm at the end of the file. RVM maintainers recommend otherwise, so you better do it their way.</div><div><br /></div><div>If you find any problems, check <a href="http://rvm.beginrescueend.com/rvm/install/">rvm site troubleshooting information</a>&nbsp;(section &#8216;Trhoubleshooting your install&#8217;)</div><div><div><br /></div><div>Finally reload your envirnonment executing:</div><blockquote>source ~/.bashrc</blockquote></div><div><b>Installing ruby</b></div><div><div>Now you have rvm installed and running, you can proceed to install ruby. You&#8217;ll need some packages first, the following command will tell you which:</div><blockquote>rvm notes</blockquote></div>In my case, these were:<br /># For Ruby (MRI &amp; ree) &nbsp;you should install the following OS dependencies:<br /><blockquote>sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf</blockquote><div><div>Now, we can install ruby 1.9.2:</div><blockquote>rvm install 1.9.2</blockquote><div>This will take a while, since it is dowloading ruby sources and compiling them.</div><div><br /></div><div>You can check ruby is all fine and dandy by running</div><blockquote>ruby -v</blockquote><div>You should get something similar to:</div><blockquote>ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux]</blockquote>On the next post I will explain how to setup your environment for testing using rvm.</div></div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[New Year resolutions]]></title>
    <link href="http://www.sharpbites.com/2011/01/01/new-year-resolutions/"/>
    <updated>2011-01-01T00:00:00+01:00</updated>
    <id>http://www.sharpbites.com/2011/01/01/new-year-resolutions</id>
    <content type="html"><![CDATA[<div class='post'>
Here are my resolutions for the present year:<br />- Read LESS. Yes, less reading, more doing.<br />- Keep learning ruby.<br />- Practice! I&#8217;m resolved to do a kata EVERY day, one kata each month. Wanna join? Use the hashtag&nbsp;<a href="http://search.twitter.com/search?q=12months12katas">#12months12katas</a>.<br />- Rediscover enjoyment, on many aspects. This is a tough one, since I&nbsp;first&nbsp;need to find direction, then courage to act in consequence.</div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[12 months, 12 katas: January. String calculator]]></title>
    <link href="http://www.sharpbites.com/2011/01/01/12-months-12-katas-january-string/"/>
    <updated>2011-01-01T00:00:00+01:00</updated>
    <id>http://www.sharpbites.com/2011/01/01/12-months-12-katas-january-string</id>
    <content type="html"><![CDATA[<div class='post'>
As recommended by <a href="http://www.twitter.com/plagelao">@plagelao</a> on twitter, the kata for January will be <a href="http://www.osherove.com/tdd-kata-1/">String Calculator</a>.<br />Here are the specs:<br /><span class="Apple-style-span" style="color: #0a0606; font-family: Tahoma, Arial, Helvetica, Geneva, sans-serif; font-size: 14px; line-height: 18px;"></span><br /><ol><li>Create a simple String calculator with a method&nbsp;<strong>int Add(string numbers)</strong><ol><li>The method can take 0, 1 or 2 numbers, and will return their sum (for an empty string it will return 0) for example<strong>&nbsp;“” or “1” or “1,2”</strong></li><li>Start with the simplest test case of an empty string and move to 1 and two numbers</li><li>Remember to solve things as simply as possible so that you force yourself to write tests you did not think about</li><li>Remember to refactor after each passing test</li></ol></li><li>Allow the Add method to handle an unknown amount of numbers</li><li>Allow the Add method to handle new lines between numbers (instead of commas).<ol><li>the following input is ok:&nbsp; “1\n2,3”&nbsp; (will equal 6)</li><li>the following input is NOT&nbsp;ok:&nbsp; “1,\n”&nbsp;</li><li>Make sure you only test for correct inputs. there is no need to test for invalid inputs for these katas</li></ol></li><li>Allow the Add method to handle a different delimiter:<ol><li>to change a delimiter, the beginning of the string will contain a separate line that looks like this:&nbsp;&nbsp; “//[delimiter]\n[numbers…]” for example “//;\n1;2” should return three where the default delimiter is ‘;’ .</li><li>the first line is optional. all existing scenarios should still be supported</li></ol></li><li>Calling Add with a negative number will throw an exception “negatives not allowed” - and the negative that was passed.if there are multiple negatives, show all of them in the exception message<hr /><strong>stop here if you are a beginner</strong>. Continue if you can finish the steps so far in less than 30 minutes.<hr /></li><li>Numbers bigger than 1000 should be ignored, so adding 2 + 1001 &nbsp;= 2</li><li>Delimiters can be of any length with the following format:&nbsp; “//[delimiter]\n” for example: “//[***]\n1***2***3” should return 6</li><li>Allow multiple delimiters like this:&nbsp; “//[delim1][delim2]\n” for example “//[*][%]\n1*2%3” should return 6.</li><li>make sure you can also handle multiple delimiters with length longer than one char</li></ol><br />Enjoy!</div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Greed game koan]]></title>
    <link href="http://www.sharpbites.com/2010/12/20/greed-game-koan/"/>
    <updated>2010-12-20T00:00:00+01:00</updated>
    <id>http://www.sharpbites.com/2010/12/20/greed-game-koan</id>
    <content type="html"><![CDATA[<div class='post'>
<a href="http://twitter.com/jjballano">@jjballano</a>&nbsp;recently&nbsp;<a href="https://gist.github.com/736614">posted</a>&nbsp;his version of the <a href="http://en.wikipedia.org/wiki/Greed_(dice_game)">Greed game</a>, as part of his learning experience with <a href="http://rubykoans.com/">Ruby Koans</a>. As I am following that very same path, I thought it could also be worth for me to share <a href="https://gist.github.com/747881">my implementation of Greed</a> for people to comment on it.<br /><br /><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">The code could surely be much prettier since I am still trying to get my head around ruby block-passing, among others, so comments (and patches!) are welcome.</div><div><br /></div><br /><script src="https://gist.github.com/747881.js?file=score.rb"></script><br /><br />UPDATE: The code seems to update automatically to the latest version on github, you can find the original <a href="https://gist.github.com/747881/3b8cb77970b0b22b2265904b3c02acf7bae84a3f#file_score.rb">here</a>.</div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Writing Better Object Oriented Code]]></title>
    <link href="http://www.sharpbites.com/2010/11/30/writing-better-object-oriented-code/"/>
    <updated>2010-11-30T00:00:00+01:00</updated>
    <id>http://www.sharpbites.com/2010/11/30/writing-better-object-oriented-code</id>
    <content type="html"><![CDATA[<div class='post'>
<a href="http://twitter.com/#!/gregyoung">Greg Young</a> did a great presentation at <a href="http://www.oredev.org/">Oredev</a> about <a href="http://vimeo.com/17151526">writing Object Oriented code the right way</a>. It&#8217;s so full of good stuff I could not bother to make a summary out of it. Go watch the original video. Now.</div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[I've read: Peopleware]]></title>
    <link href="http://www.sharpbites.com/2010/11/26/ive-read-peopleware/"/>
    <updated>2010-11-26T00:00:00+01:00</updated>
    <id>http://www.sharpbites.com/2010/11/26/ive-read-peopleware</id>
    <content type="html"><![CDATA[<div class='post'>
&#8216;Peopleware&#8217; is one of those classic books of our profession, a must-read. Unfortunately, it&#8217;s not easy to grab a copy of it on the stores (it may have been discontinued, I&#8217;m not sure).&nbsp;After a failed attempt to borrow it from <a href="http://twitter.com/jmbeas">Jose Manuel Beas</a>,&nbsp;a few weeks ago, I finally got the chance to read it (thanks <a href="http://twitter.com/rubenbpv">Rubén</a>!).<br /><br />All I can say is, if you have the chance, read it! Just so you can have a glimpse at it, here are some notes I&nbsp;took from it. Most are direct quotes,&nbsp;although&nbsp;I reworded a few to&nbsp;synthesize.<br /><br /><span class="Apple-style-span" style="font-size: large;">Productivity</span><br /><span class="Apple-style-span" style="font-size: large;"><span class="Apple-style-span" style="font-size: small;">As long as workers are crowded into noisy, disruptive space, it&#8217;s not worth improving anything but the workspace.</span></span><br />Experiments showed projects without deadlines had the best productivity.<br />Better performance can be explained entirely by more effective ways of handling people, modifying the workplace and corporate culture.<br />Developers main work is human communication to organize the user&#8217;s expressions of needs into formal procedure.<br />People won&#8217;t work better under a lot of pressure.<br />The manager&#8217;s function is not to make people work, but to make it possible for people to work.<br />Best people outperform the worst by 10 and the median performer by 2.5.<br />Years of experience are not correlated to productivity.<br />Interrupting flow not only causes disruption but frustration.<br />There are two types of work: Individual work is noise sensitive and needs flow.&nbsp;Group work is noise producing. Adapt your workspace to make both kinds of work possible.<br />Measure and try to maximize flow time, but don&#8217;t let managers access to data.<br />Ignoring the phone must be accepted by corporate policy.<br />Ask people about their workspace conditions, what affects their productivity.<br />Listening to music uses the right part of the braing, which is responsible for creativity.<br />Encourage teams to customize their space.<br /><br /><span class="Apple-style-span" style="font-size: large;">People</span><br />People who work for you will be more or less the same at the end as they were at the beginning, so they better be right for the job from the start.<br />Find the right people, make them happy, turn them loose.<br />Success or failure is in the cards from the moment the team is formed and the initial directions set out.<br />Corporate pressure is pushing towards the company average, encouraging you to hire people that look, sound and think like everybody else.<br /><br /><span class="Apple-style-span" style="font-size: large;">Hiring</span><br />(Tell about hiring a juggler) &#8216;Don&#8217;t you want to see me juggle?&#8217;<br />Make people bring their code portfolio for interviews.<br />Make candidates prepare an audition with the team 10-to-15 minute presentation on some aspect of past work.<br /><br /><span class="Apple-style-span" style="font-size: large;">Good organizations</span><br />Late promotion is a sign of health.<br />With a low and flat hierarchy, people at the lowest level have, on average more years of experience.<br />Strive to be the best<br />Grow a community feeling.<br />Focus on long term benefits.<br />Widespread sense that you are expected to stay<br />Invest in personal growth<br />Retrain your people<br />When you automate a system, you make it deterministic, so it looses its self-healing ability. A&nbsp;<b>M</b>ethodology (capital &#8216;M&#8217; here) can produce the same results on you organization.<br />To achieve convergence of methods, use training, tools and peer review.<br />Don&#8217;t declare something a standard until it is a de facto standard.<br />Hawtorne effect (experiment of raising and lowering the light) People perform better when they are trying something new.<br />You have to make non-standard approaches to the rule. Whatever standard there is should be brief and gentle.<br />Let a hundred flowers blossom and let a hundred schools of thought contend. (Mao Tse-tung)<br /><br /><span class="Apple-style-span" style="font-size: large;">Jelled teams</span><br />Productive teams = challenge + team interaction<br />They have momentum.<br />They have a goal<br />The purpose of a team is not goal attainment but goal achievement.<br />People on jelled teams are often so involved you have to remind them&nbsp;that what they are trying to accomplish is not winning a war.<br />Jelled teams have low turnover and strong sense of identity.<br />Money, status and position for advance matter a lot less. Enjoyment is an obvious sign.<br />You can&#8217;t make teams jell, just act to improve the odds.<br />Teamicide techniques:<br /><br /><ul><li>Defensive management</li><li>Bureaucracy</li><li>Physical&nbsp;separation</li><li>Fragmentation of people&#8217;s time</li><li>Quality reduction</li><li>Phony deadlines</li><li>Clique control</li></ul><br />Good managers provide opportunities for the team to succeed together. The best success is the one in which there is no evident management. The best boss is the one who can manage without the team knowing they&#8217;ve been managed.<br /><br />Growing jelled teams:<br /><br /><ul><li>Give people autonomy and responsibility</li><li>Let them work alone, without constant supervision</li><li>They break the rules when they believe in it</li><li>Let them choose mates and projects</li><li>Let them exercise their natural authority in their area of expertise.</li></ul><br />Chemistry for team formation:<br /><br /><ul><li>Make a cult of quality</li><li>Provide satisfying confirmation</li><li>Build a sense of eliteness</li><li>Allow and encourage heterogeneity</li><li>Preserve and protect successful teams.</li><li>Provide strategic but not tactical direction</li></ul><br /><br /><span class="Apple-style-span" style="font-size: large;">Chaos (it is not that bad!)</span><br />Small amounts of disorder are benefitial<br />Pilot projects, war games, brainstorming, provocative training experiences, training, trips, conferences, celebrations, retreats,&#8230;<br /><br />If your corporation is fortunate enough to have a self-motivated superachiever on-board, it&#8217;s enough to say &#8220;Define your own job&#8221;<br />&#8220;Free electrons&#8221; have a strong role in choosing their own orbits.<br /><br /><span class="Apple-style-span" style="font-size: large;">Being a Change Agent</span><br />Focus on one thing to change. Raise people&#8217;s consciousness of it, so they help you change it.<br />Be careful with motivational posters, they can have the opposite effect.<br />Fuck overtime.<br />Competition inhibits coaching.<br />Any action that rewards team members differently is likely to foster competition.<br />The success of the individual should be tied to the success of the whole.<br />People hate change. Any change.<br />Your enemies are blindly loyals and militantly opposed to change.<br />The fundamental response to change is not logical, but emotional.<br />Celebrate the old as a way to help make change happen.<br />Be aware that chaos is an integral part of change. Otherwise, you mistake it for the new status quo and will want to change back.<br />Change always involves chaos, it is necessary and can&#8217;t be shortcut. The more painful the chaos, the greater the perceived value of the new status quo.<br />Change won&#8217;t even get started unless people feel safe when they know they won&#8217;t be demeaned for proposing or trying a change.<br />Change only has a chance of&nbsp;succeeding&nbsp;if failure is also&nbsp;OK.<br /><br /><span class="Apple-style-span" style="font-size: large;">Organizational learning</span><br />Learning is limited by an organization&#8217;s ability to keep its people.<br />If the retrained people leave, investment is lost and learning is gone.<br />Successful&nbsp;learning organizations are always characterized by strong middle management. In order for a vital learning center to form, middle managers must communicate with each other and learn to work together in effective harmony.<br /><br /><span class="Apple-style-span" style="font-size: large;">Waste</span><br />The ultimate management sin is wasting people&#8217;s time.<br />Organizations have need of ceremony.<br />Ceremony is good when it fulfills a need for appreciation by the team.<br />Early&nbsp;over-staffing&nbsp;is waste.<br />Fragmented time is waste, it breaks flow.<br /><br /><span class="Apple-style-span" style="font-size: large;">Community</span><br />Building a community makes a difference, but requires talent, courage and creativity. And an enormous invest of time, to be, at best, the catalyst.</div>
]]></content>
  </entry>
  
</feed>
