<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>http://www.h3rald.com/</id>
  <title>H3RALD - Articles (Atom Feed)</title>
  <updated>2011-08-28T19:18:00Z</updated>
  <link rel="alternate" href="http://www.h3rald.com"/>
  <link rel="self" href="http://www.h3rald.com/atom/"/>
  <author>
    <name>Fabio Cevasco</name>
    <uri>http://www.h3rald.com</uri>
  </author>
  <entry>
    <id>tag:www.h3rald.com,2011-08-28:/articles/glyph-050-released/</id>
    <title>Glyph 0.5.0 Released</title>
    <published>2011-08-28T19:18:00Z</published>
    <updated>2011-10-13T17:33:58Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/glyph-050-released/"/>
    <category term="glyph" scheme="http://www.h3rald.com/tags/glyph/"/>
    <category term="ruby" scheme="http://www.h3rald.com/tags/ruby/"/>
    <category term="opensource" scheme="http://www.h3rald.com/tags/opensource/"/>
    <content type="html">
<![CDATA[

		<section class="section">
<p>Too much time passed since the last Glyph release. Way too much. Finally I found the time and will to tidy up the last few remaining bugs, update the docs, and release it!</p>
<p>This new release was mainly focused on extending the features of Glyph as a <em>language</em>. Besides a few improvements that make writing Glyph code easier and more readable (e.g. macro composition), Glyph is now Turing-complete. It supports iterations, recursion, variable assignments, basic arithmetics&#8230; you can even write a program to compute the factorial of an integer, if you wanted to.</p>
<p>Additionally, it also features enhanced content reuse through fragments and output-independent macros, and a few bugfixes.</p>

<section class="section">
<header><h1 id="h_1">Calibre Integration</h1></header>
<p><a href="https://github.com/tammycravit">Tammy Cravit</a> proposed (and more or less implemented) an interesting new feature: integrate <a href="http://calibre-ebook.com/">Calibre</a> to generate ebooks in <span class="caps">EPUB</span> and <span class="caps">MOBI</span> format from Glyph&#8217;s native standalone <span class="caps">HTML</span> output format.</p>
<p>Although the support is still somewhat rough, you can, as a matter of fact, generate ebooks with Glyph, using Calibre.</p>

</section>
<section class="section">
<header><h1 id="h_2">Macro Composition</h1></header>
<p>This release features an update at syntax-level: the possibility of &#8220;composing&#8221; macros, thereby eliminating nesting provided that containers take only one parameter and no attributes. What? This:</p>
  <div class="CodeRay">
  <div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span>?[
<span class="line-numbers"><a href="#n2" name="n2">2</a></span>  not[output?[pdf]]|
<span class="line-numbers"><a href="#n3" name="n3">3</a></span>  ...
<span class="line-numbers"><a href="#n4" name="n4">4</a></span>]
</pre></div>
</div>


<p>Can be written like this:</p>

  <div class="CodeRay">
  <div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span>?[
<span class="line-numbers"><a href="#n2" name="n2">2</a></span>  not/output?[pdf]|
<span class="line-numbers"><a href="#n3" name="n3">3</a></span>  ...
<span class="line-numbers"><a href="#n4" name="n4">4</a></span>]
</pre></div>
</div>


<p>In this case, the <code>not</code> macro was composed with the <code>output?</code> macro, thus removing one level of nesting.</p>
<p>Additionally, I used this features to create an <code>xml</code> macro dispatcher that can be used to render raw <span class="caps">XML</span> tags, and an <code>s</code> macro dispatcher that basically is able to call nearly all the instance methods of the Ruby String class. So you can write things like <code>s/sub[This feature makes my life easier|/my/|your]</code> and similar.</p>

</section>
<section class="section">
<header><h1 id="h_3">Turing-Completeness</h1></header>
<p>As of this version, Glyph can be considered <em>Turing-complete</em>, as it satisfies the following <a href="http://c2.com/cgi/wiki?LanguageRequirementsForTuringCompleteness">requirements for Turing-completeness</a>:</p>
<ul>
	<li>A conditional construct, implemented via the <code>condition</code> macro.</li>
	<li>Variable assignment, by setting the value of snippets using the <code>snippet:</code> macro and of attributes using the <code>attribute:</code> macro.</li>
	<li>(infinite) iteration implemented through the new <code>while</code> macro or recursion, which is possible thanks to the new <code>define:</code> macro.</li>
	<li>A memory model which emulates an infinite store: there are no enforced limits on attribute/snippets allocations and number of algorithms or parameters.</li>
</ul>
<p>Plus, Glyph now understand basic integer arithmetic:</p>
  <div class="CodeRay">
  <div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span>def:[factorial|
<span class="line-numbers"><a href="#n2" name="n2">2</a></span>  ?[
<span class="line-numbers"><a href="#n3" name="n3">3</a></span>    eq[{{0}}|0]|1|
<span class="line-numbers"><a href="#n4" name="n4">4</a></span>    multiply[
<span class="line-numbers"><a href="#n5" name="n5">5</a></span>      {{0}} | factorial[subtract[{{0}}|1]]
<span class="line-numbers"><a href="#n6" name="n6">6</a></span>    ]
<span class="line-numbers"><a href="#n7" name="n7">7</a></span>  ]
<span class="line-numbers"><a href="#n8" name="n8">8</a></span>]
</pre></div>
</div>

  <p>Not that you <em>need</em> to be able to calculate factorials in your documents, but know that now you <em>can</em>. An you can also define lexically scoped variables, err&#8230; <em>attributes</em>, like this:</p>
  <div class="CodeRay">
  <div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span>let[
<span class="line-numbers"><a href="#n2" name="n2">2</a></span>  @:[a|bits]
<span class="line-numbers"><a href="#n3" name="n3">3</a></span>  @:[b|bobs]
<span class="line-numbers"><a href="#n4" name="n4">4</a></span>  section[
<span class="line-numbers"><a href="#n5" name="n5">5</a></span>    @title[Something more about attributes]
<span class="line-numbers"><a href="#n6" name="n6">6</a></span>Attributes are like lexically scoped variables. You can use them to store @[a] and @[b].
<span class="line-numbers"><a href="#n7" name="n7">7</a></span>  ]
<span class="line-numbers"><a href="#n8" name="n8">8</a></span>]
</pre></div>
</div>

  <p>Handy enough.</p>

</section>
<section class="section">
<header><h1 id="h_4">Embeddable fragments</h1></header>
<p>Too lazy to create snippets? Feel the urge to re-use something you already wrote somewhere? Use a <em>fragment</em> and embed it, as follows:</p>
  <div class="CodeRay">
  <div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span>Snippets and fragments ##[good_way|are a good way to reuse] small chunks of content, 
<span class="line-numbers"><a href="#n2" name="n2">2</a></span>while the include and load macros <span class="error">&lt;</span>=[good_way] entire files.
</pre></div>
</div>

  <p>&#8230;And you can also use a new <code>load</code> macro, to embed entire files without performing any evaluation (like <code>include</code> does).</p>

</section>
<section class="section">
<header><h1 id="h_5">Incompatibilities with previous versions</h1></header>
<p>To sum up:</p>
<ul>
	<li><code>snippets.yml</code> is no more, define all your snippets inside your document instead.</li>
	<li>New &#8220;invisible space separator&#8221;: <code>\/</code> instead of <code>\.</code>. Because it&#8217;s slightly prettier, nothing else.</li>
	<li>The <code>rewrite:</code> macro has been replaced by the <code>define:</code> macro, which also allows recursion, so be careful!</li>
	<li>If you want to render raw <span class="caps">XML</span> tags, use <code>xml/tag_name</code> instead of <code>=tag_name</code>.</li>
	<li>No more <code>match</code> macro, use <code>s/match</code> instead.</li>
</ul>
<p>For the full list of the issues fixed in this release, see the <a href="http://www.h3rald.com/glyph/book/changelog.html">Changelog</a>.</p>
<p>Hope you&#8217;ll enjoy this new release of Glyph. If you want to contribute, go ahead and <a href="https://github.com/h3rald/glyph">fork the repo</a>!</p>

</section>

</section>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2011-08-07:/articles/ruby-compendium-020/</id>
    <title>Ruby Compendium v0.2.0 released</title>
    <published>2011-08-07T16:01:52Z</published>
    <updated>2011-08-07T18:12:22Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/ruby-compendium-020/"/>
    <category term="ruby-compendium" scheme="http://www.h3rald.com/tags/ruby-compendium/"/>
    <category term="books" scheme="http://www.h3rald.com/tags/books/"/>
    <category term="ruby" scheme="http://www.h3rald.com/tags/ruby/"/>
    <content type="html">
<![CDATA[

		<section class="section">
<p>The Ruby Compendium has been updated, and it now lists the most up-to-date versions of various Ruby implementatios, even more web sites, books, podcasts, and Rubyists. In addition to the <span class="caps">PDF</span> version, the book can now be read online <a href="/ruby-compendium/book/">here on H3RALD.com</a>.</p>
<p>Overall, this is a relatively minor update; however, I felt it was a good time to release it to keep the book up-to-date.</p>

<p>The <em>Ruby Compendium</em> is available free of charge, under the terms of the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported License</a>, and you can help improving it! It was written using my very own <a href="http://www.h3rald.com/glyph">Glyph Framework</a>, and the entire source code is available on <a href="https://github.com/h3rald/ruby-compendium">GitHub</a>, for anyone to fork.</p>
<div style="text-align:center;margin:20px; auto;font-size: 18px; font-weight:bold;"><a href="https://github.com/downloads/h3rald/ruby-compendium/ruby-compendium.pdf">Download <span class="caps">PDF</span></a> | <a href="http://www.h3rald.com/ruby-compendium/book">Read Online</a></div>

</section>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2011-07-30:/articles/wunderlist/</id>
    <title>Getting things done... in Wonderland!</title>
    <published>2011-07-30T22:07:53Z</published>
    <updated>2011-07-30T21:18:54Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/wunderlist/"/>
    <category term="productivity" scheme="http://www.h3rald.com/tags/productivity/"/>
    <category term="review" scheme="http://www.h3rald.com/tags/review/"/>
    <category term="software" scheme="http://www.h3rald.com/tags/software/"/>
    <content type="html">
<![CDATA[

		<section class="section">
<p>I don&#8217;t remember the exact day when I started using a todo list in a serious way. It definitely happened at work, but I can&#8217;t remember when exactly. The point is that, once I started working (and getting paid for what I love doing &ndash; writing), I slowly turned into a real <em>productivity freak</em>.</p>
<p>I write <em>everything</em> down. My colleagues know that if I say that I&#8217;ll do something <em>right now</em> but I don&#8217;t do it within five minutes, they have to assume that I forgot about it altogether and they&#8217;d better send me an email.</p>
<p>I am not a paper person. Never been one. When I got a job which consisted in working on the computer for eight hours a day, I started looking for todo list programs. That turned into an endless quest: I tried X for a few weeks, then I discovered that Y was better, used it for months, then moved onto Z, and so on.</p>


	<section class="section">
<header><h1 id="h_1">What's wrong with 90% of digital todo lists</h1></header>
<p>Over the past five years, I must have tried dozens of different digital todo lists, and every single one of them had something wrong with it. Here are the most common flaws I encountered in many applications:</p>
<ul>
	<li><strong>Too many fields</strong> &ndash; I don&#8217;t want to specify (or see, either) a due date, a start date, a completion date, priority, effort, risk, tags, categories, sections, flags, stars, projects, reminder, pre-reminder, recurrency, location, contexts, and finally the actual task. I just want to write down what I have to do. Maybe I want to flag it as <em>important</em>. Sometimes I may need to set a deadline with a reminder, but that starts getting complex already.</li>
	<li><strong>Too few fields</strong> &ndash; On the other hand, just a title and a checkbox won&#8217;t do. I want some form of categorization and (optional) deadlines.</li>
	<li><strong>Not cross-platform</strong> &ndash; I use Windows at work, Linux at home, my wife has a Mac. We both have iPhones, but someday I may get an Android device, too. There aren&#8217;t many todo lists out there that support more than two operating systems, nevermind mobile devices or web access!</li>
	<li><strong>Too fiddly</strong> &ndash; See the first complaint, above. With too many fields almost always comes a complex interface. I don&#8217;t want to wait 17 clicks to save my task. I want to type in what I want to do, and press Enter. Is it too much to ask for?</li>
	<li><strong>Made for a particular methodology</strong> &ndash; <span class="caps">GTD</span> is great and David Allen is the God of Productivity, but I don&#8217;t want to use @contexts or specify next actions because don&#8217;t believe in them, therefore I shouldn&#8217;t be forced to do so.</li>
</ul>
<p>90% of the digital todo list suck. Believe me. 10% &ndash; perhaps &ndash; don&#8217;t. Luckily, I just need <em>one</em>, and guess what: I found it!</p>

</section>

	<section class="section">
<header><h1 id="h_2">Introducing Wunderlist: the quest is over!</h1></header>
<p><a href="http://www.6wunderkinder.com/wunderlist/">Wunderlist</a>, the List of Wonders, you can use it anywhere and at any time. It&#8217;s so awesome that&#8230; I should stop the ass-kissing right now, and get to the <em>facts</em>.</p>
<p>I discovered Wunderlist when my endless quest led me to the App Store. I think I must have installed nearly all the damn todo list apps, even the crappy ones. I didn&#8217;t fall in love with Wunderlist at first tap: it took a few install-uninstall cycles, but in the end I settled for it. Here&#8217;s why:</p>
<ul>
	<li><strong>Free</strong> &ndash; Not that it matters that much, I would happily pay a few bucks for a <em>good</em> app. And yes, I did pay for a few todo lists that I dumped afterwards. Bummer.</li>
	<li><strong>Cross-platform</strong> &ndash; iPhone, iPad, Android, Windows, OS X. And Linux? Not really, but who cares: the web app is fine and it probably plays well <a href="http://haiku-os.org/">Haiku</a> as well.</li>
	<li><strong>Simple and Efficient</strong> &ndash; Two clicks to add a task to any list. No compulsory extra-fields, optional deadlines, unlimited lists. Got something important to do? Tap the star on the left of the task to move it to the top of your list and bookmark it.</li>
	<li><strong>Amazing email integration</strong> &ndash; Create tasks via email, share tasks with others via email, get reminders via push&#8230; or email. They even email you if you have overdue tasks. Like&#8230; everyday! I was so happy when they implemented this feature that I nearly cried when I got the first few emails.</li>
	<li><strong>Everything is sync&#8217;ed</strong> &ndash; On your iPhone, iPad, Android device, Windows PC, Mac, web, etc. It&#8217;s all there, always, everywhere.</li>
</ul>
<p>When I finally realized how awesome this app was, I started using it for chores, and as a shopping list. Then I figured it was good enough as a backlog for my open source projects and my web site, and then&#8230; Then my wife discovered it.</p>

</section>

	<section class="section">
<header><h1 id="h_3">Why your wife shouldn't use it...</h1></header>
<p><img src="/img/pictures/wunderlist/wunderlist-list.png" style="float:right;margin-top:1em;" /></p>
<p>One of the relatively unusual features of Wunderlist is the possibiliy of sharing lists with others. All you have to do is click a button, specify one or more email address, and send invitations out. People will then signup for a free Wunderlist account and they&#8217;ll be able to access (as in read/write access) your list.</p>
<p>Because Roxanne, my wife, has an iPhone, she was the most obvious candidate to try out this collaborative feature. First I shared my <em>Shopping</em> list with her: we needed to make a list of things to get for a party, and that was fun. Wunderlist worked perfectly: we went around the supermarket and ticked things off the shared list, which updated in real-time!</p>
<p>All went great until I decided to share the infamous <em>Chores</em> list. You know the one: bills, fees, errands&#8230; I used to say things like &#8220;it&#8217;s on my list, honey, I&#8217;ll do it&#8221;, or even &#8220;Yes&#8230; I&#8217;ll add it to the <em>Chores</em>, just gimme a minute&#8221;. Little did I know that my beloved liked Wunderlist so much that she started using it frequenly, constantly updating the damn chores list with things like &#8220;Take the rubbish out&#8221; or &#8220;Collect the package from the post office&#8221;.</p>
<p>I realized she became a true Wunderlist ninja when I found a task called &#8220;Flowers for Roxanne!&#8221; &ndash; starred and with a deadline set to <em>two months ago!</em></p>

</section>

	<section class="section">
<header><h1 id="h_4">My five work lists</h1></header>
<p>After months of trial, I decided to use Wunderlist at work as well. With caution, of course: I made sure not to write down any sensitive information in my tasks, because you never know. I started off with just one list, but it got crowded very quickly. I now use <em>five</em> lists for work only:</p>
<p><img src="/img/pictures/wunderlist/wunderlist-work.png" style="float:right;margin-top:1em;" /></p>
<ul>
	<li><strong>Work [!]</strong> &ndash; This is the most active one, I use it for things to do <span class="caps">ASAP</span>. Starred tasks are urgent and important, and should be dealt with within the day. At work, that&#8217;s my default list.</li>
	<li><strong>Work [~]</strong> &ndash; This is for things that in progress, for tasks I delegated to other people, for keeping track of emails waiting for a reply, etc. I tend to check it at least a couple of times per day (if something is really urgent gets moved to the first list).</li>
	<li><strong>Work [&#8230;]</strong> &ndash; This is for someday/maybes. Something that is most definitely not urgent, and not too important either. I normally review it once a week, except in the middle of August when I won&#8217;t be able to do anything because everyone will be on holiday&#8230; It will become my default list for a week or two, then.</li>
	<li><strong>Work [CoP]</strong> &ndash; I also work as the coordinator of a Community of Practice, and I want to keep CoP-related stuff separate, so that I know where to look when I can allocate some CoP time during my day.</li>
	<li><strong>Work [@boss]</strong> &ndash; This is a special list for my boss only. We email each other frequently, but rather then sending her long emails she can&#8217;t afford to read, I write down discussion topics in this list, which I&#8217;ll then load up at the following status meeting.</li>
</ul>
<p>The next step? Maybe sharing lists with my boss and collegues, who knows&#8230;</p>

</section>

	<section class="section">
<header><h1 id="h_5">The bottom line</h1></header>
<p>Saying that Wunderlist is the <em>perfect</em> todo list for <em>everyone</em> would be pointless: there would always be people who wouldn&#8217;t agree with that. Wunderlist is not perfect, but close enough for me: it has most of the feature I need, and &ndash; most importantly &ndash; very little features I don&#8217;t need. In the end, this is what makes an app truly awesome.</p>
<p>I give it four stars out of five. Why not five? Because in this way <a href="http://www.6wunderkinder.com/">6Wunderkinder</a> can make Wunderlist <em>even a better product</em> by surprising its users with something they didn&#8217;t know they wanted. That&#8217;s what Steve Jobs does at every Keynote, isn&#8217;t it?</p>
<p><img src="/img/pictures/wunderlist/wunderlist-done.png" style="text-align:center;margin:auto;display:block;" /></p>

</section>

</section>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2011-03-26:/articles/the-rails3-way-review/</id>
    <title>Book Review: The Rails 3 Way</title>
    <published>2011-03-26T12:16:46Z</published>
    <updated>2011-03-27T11:41:34Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/the-rails3-way-review/"/>
    <category term="review" scheme="http://www.h3rald.com/tags/review/"/>
    <category term="books" scheme="http://www.h3rald.com/tags/books/"/>
    <category term="rails" scheme="http://www.h3rald.com/tags/rails/"/>
    <content type="html">
<![CDATA[

		<section class="section">
<p>Obie did it, again. With the second edition of his former masterpiece, <em>The Rails Way</em>, he managed to outdo himself delivering a new, even more useful, Rails Bible. Wether you&#8217;re a Ruby on Rails professional like him or just an enthusiast, this book is pretty much everything you need to learn how to master the third release of <acronym title="David Heinameier Hansson"><span class="caps">DHH</span></acronym>&#8217;s Ruby web framework.</p>
<p><a href="http://tr3w.com/">The Rails 3 Way</a> is no ordinary second edition. If you already own <em>The Rails Way</em>, you&#8217;ll be pleasantly surprised that this is a different, more polished book. While something had to remain the same, there&#8217;s a lot of new content in its 708 pages, and even the old content has been rewritten or at least revised.</p>
<p>It doesn&#8217;t matter whether you already know Rails 2.x or you&#8217;re jumping straight into the Rails 3 world, if you use Rails, you can&#8217;t miss this book.</p>
<p>I started the <a href="http://www.h3rald.com/articles/the-rails-way-review/">review of the first edition</a> with a quote from my fiancée (now wife) on how pointless programming books are, especially those dealing with newish technologies: they tend to go out of date fairly quickly. While this still holds true, there&#8217;s not much you can do about it, except maybe purchasing a digital edition of the book instead. However, if you want to keep a good Rails reference book by your side, this has to be the one.</p>




<section class="section">
<header><h1 id="h_1">What's New</h1></header>
<figure style="float:left;"><img src="/img/pictures/books/rails3way/compare.jpg" /><figcaption>The Rails Way vs. The Rails 3 Way</figcaption></figure>
<p>If you put <em>The Rails 3 Way</em> and the original <em>The Rails Way</em> one next to the other, you can see that the new book is considerably shorter: about 200 pages less. This doesn&#8217;t mean it contains less information, quite the opposite: the new book contains a lot more stuff with less <em>fluff</em>. Obie managed to reduce digressions to a bare minimum and focus on providing more informative content to the readers using less text. Think of it as a <em>fat-free</em> book.</p>
<p>While no <em>What&#8217;s new in Rails 3</em> section is included in the book, Obie points out the new stuff when needed (but not always). An example is chapter 12, <em>Ajax on Rails</em>, in which changes introduced by Rails 3 clearly stand out, especially the section on Unobtrusive JavaScript (<span class="caps">UJS</span>).</p>
<p>Although the book is divided into chapters, it can also be divided into parts (each dealing with a specific theme) simply by looking at the front edge. According to this theme-based partitioning, Active Record makes up for nearly <em>a quarter</em> of the book (173 pages), followed by <em>Active Support <span class="caps">API</span></em> appendix and the <em>All About Helpers</em> chapter.</p>
<p>Another nice addition that can really make the difference when you&#8217;re in a hurry is the <em>Method Index</em>, which is separate from the main Index. It seems to account for all the methods in all (or at least the most important) classes in Rails. I didn&#8217;t check method by method, but it is pretty comprehensive nonetheless, based on some quick spot checking.</p>

</section>
<section class="section">
<header><h1 id="h_2">Contents</h1></header>
<figure style="float:right;"><img src="/img/pictures/books/rails3way/sections.jpg" /><figcaption>Active Record makes up for over 24% of the book</figcaption></figure>
<p>The first thing you notice once you read the first few pages, is that this book is <em>even more opinioned</em> than its predecessor.</p>
<blockquote>
<p>Even though Rails 3 is less opinionated than early versions, in that it allows for easy reconfiguration of Rails assumptions, this book is more opinionated than ever.</p>
</blockquote>
	<p style="margin-left: 4em">&ndash; Obie Fernandez, <cite>Introduction to <em>The Rails Way</em></cite></p>
<p>In other words, you won&#8217;t find an ERb view in the whole book (Haml rulez!) and if you don&#8217;t like RSpec&#8230; well, you&#8217;d better skip Chapter 18 altogether.</p>
<p>The other big difference with traditional Ruby and Rails books is the amount of reference to third-party code, mainly rubygems. Rails comes with no authentication functionality? So what: <a href="https://github.com/binarylogic/authlogic">Authlogic</a> and <a href="https://github.com/plataformatec/devise">Devise</a> are great for the job, go check them out! Do you need to test your Active Mailer emails? <a href="https://github.com/bmabey/email-spec">email-spec</a> is all you need.</p>
<p>I was actually surprised to find so much content not strictly related to Rails in this book: the first chapter starts off with <a href="http://gembundler.com/">Bundler</a> (now a Rails dependency, however), Chapter 2 (Routes) mentions <a href="http://rack.rubyforge.org/">Rack</a>, and so does Chapter 4 (Controllers). If you want a nice and to-the-point practical introduction to <a href="http://relishapp.com/rspec">RSpec</a>, the first part of Chapter 18 covers that.</p>

	<figure style="float:left;"><img src="/img/pictures/books/rails3way/reference.jpg" /><figcaption>About 40% of the book is reference material</figcaption></figure>
<p>Then there&#8217;s reference material. Plenty of it, a good 40% I daresay. The good thing is that (unlike the first edition) it won&#8217;t bore you to death: take Chapter 5 (Working with Active Record) for example, you&#8217;ll fly through find-related methods so swiftly you&#8217;ll regret when it&#8217;s over. Active Support? I didn&#8217;t read every line of Appendix B, but when I want to know something about inflection methods I will know exactly where to find them, and what to expect: the method signature, a few lines of text, and a short example at most.</p>
<p>My only regret? Cheat sheets. Or better, the lack of them. More tables, please! Granted, the web is full of Rails cheat sheets, but a few of them at the end of the book or even in a separate foldable add-on like in the <a href="http://www.pragprog.com/titles/tpp/the-pragmatic-programmer">Pragmatic Programmer</a> can&#8217;t hurt.</p>
<p>Finally, some words about the code examples. The code/text ratio is almost 1:1, but Obie&#8217;s choice of <em>not</em> turning this book into a huge tutorial by implementing a single example application was absolutely right: The code snippets used in throughout the book are concise and relevant to the text around them and won&#8217;t distrupt your reading. If you want to play with them, they&#8217;re even <a href="https://github.com/obie/tr3w_time_and_expenses">on GitHub</a> for you to clone and fork.</p>

</section>
<section class="section">
<header><h1 id="h_3">Organization and Writing Style</h1></header>
<figure style="float:right;"><img src="/img/pictures/books/rails3way/flick.jpg" /><figcaption>Yes, it&#8217;s a long book. But you don&#8217;t<br/>have to read it from start to finish!</figcaption></figure>
<p><em>The Rails 3 Way</em> is a book for Rails professionals. If you don&#8217;t know Ruby or if you never heard of Ruby on Rails, this book is <em>not</em> for you. It won&#8217;t teach you what <span class="caps">MVC</span> is, it won&#8217;t waste time on explaining <em>convention over configuration</em>, it won&#8217;t even describe the structure of a Rails app! If you&#8217;re newcomer to Rails&#8230; well, that&#8217;s what <a href="http://ruby.railstutorial.org/">The Rails Tutorial</a> is for.</p>
<p>To be honest, I&#8217;m with Obie on this. If this book had been beginner-friendly, it would have been even longer than the previous edition, and probably more boring. Instead, by assuming that the reader has been already initiated to the world of Ruby and Rails, the author can dive into the framework straight away. Moreover, chapters are not ordered by difficulty: they don&#8217;t need to be, they need to be ordered in a way that makes sense for a Rails developer.</p>
<p>Once again, this book includes personal sidebars used to voice the opinion of one of the co-authors or Rails gurus: there are plenty of &#8220;<em>Yehuda</em> says&#8221;, &#8220;<em>Xavier</em> says&#8221;, &#8220;<em>Durran</em> says&#8221;, and so on. Nothing new there, it&#8217;s just a nice way to provide the reader with authoritative opinions on some matters.</p>
<p>As I progressed through the book, I started noticing how Obie anticipated my questions and doubts: I found this to be a remarkable feature of this book, and an excellent way to make the readers feel they are on the same page with the author. If something should not be done because it may cause you problems, the author won&#8217;t hold back. See page 214, &#8220;Extra Columns on <strong>has_and_belongs_to_many</strong> Join Tables&#8221;, for example: it&#8217;s a cool feature, but it can cause all sort of annoyances, and the bottom line is: use <strong>has_many :through</strong> instead, if you need extra columns on join tables.</p>

</section>
<section class="section">
<header><h1 id="h_4">Conclusion</h1></header>
<p><em>The Rails 3 Way</em> remains the <em>de facto</em> reference book for Rails. I was quite pleased to see that Obie improved it so much, compared to the first edition. Sure, it cannot be recommended to absolute beginners, but it&#8217;s not a big problem: if you&#8217;re new to Rails, all you have to do is browse around and read a few basic tutorials first.</p>
<p>What I really missed was a <em>What&#8217;s New</em> section, or something like that. The new stuff that was introduced in Ruby on Rails v3 is seamlessly blended with all the rest, which is great if you&#8217;re tackling the framework for the first time, but not so much when you already read tons of books on Rails 2.&#215;. I would have tagged content specific to Rails 3 in some way at least, for example with labels on the side of each page. Or maybe have a short introductory chapter covering the new features, and directions on where to find them in the book.</p>
<p>Overall, <em>The Rails 3 Way</em> is a great book, and if you plan on using Rails 3 for your next web site, it deserves a special place on your desk.</p>

</section>

</section>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2011-02-05:/articles/reflections-on-management/</id>
    <title>Book Review: Reflections on Management</title>
    <published>2011-02-05T21:51:25Z</published>
    <updated>2011-03-27T11:41:33Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/reflections-on-management/"/>
    <category term="review" scheme="http://www.h3rald.com/tags/review/"/>
    <category term="books" scheme="http://www.h3rald.com/tags/books/"/>
    <category term="software" scheme="http://www.h3rald.com/tags/software/"/>
    <content type="html">
<![CDATA[

		<section class="section">
<p>When I was offered to review this book, I was a bit skeptical: a book on <em>management</em>? I normally read and review books on programming and software development methodologies. However, I work as a Documentation Technical Leader, and while I don&#8217;t technically <em>manage</em> a whole team yet (damn economic crisis!), someday I may end up doing just that, so I gave <a href="http://www.informit.com/store/product.aspx?isbn=032171153X">Reflections on Management</a> a try.</p>
<p><em>It&#8217;s short, after all, I&#8217;ll probably read it in a couple of weeks and move on</em> &mdash; I thought. Well, beware of short books: I thought exactly the same thing when I picked up <a href="http://en.wikipedia.org/wiki/The_Elements_of_Style">The Elements of Style</a>, and it still follows me around everywhere, so that I can re-read bits of it whenever I need to.</p>
<p>This short but dense masterpiece by Watts S. Humphrey and William R. Thomas is one those books you always end up carrying around in your pocket (or stored in your favorite ebook reader). It&#8217;s a short but very dense collection of tips and tricks to succeed as a leader and a manager &mdash; of <em>anything</em>: <q>Your Software Projects, Your Teams, Your Boss, and Yourself</q>, as the book subtitle says. It doesn&#8217;t &#8220;just&#8221; help forging great managers and leaders, it also explains, with practical examples and no-nonsense explanations, how to deal with those annoying people in suits who constantly keep asking you for impossible things&#8230;</p>



<section class="section">
<header><h1 id="h_1">About Watts S. Humphrey</h1></header>
<p>Generally, I don&#8217;t bother writing anything about the authors in my reviews: you can easily find this kind of information online if you want to. I&#8217;ll make an exception in this case, you&#8217;ll understand why as you read along.</p>
<p><a href="http://www.sei.cmu.edu/watts/index.cfm?WT.ac=watts">Watts S. Humphrey</a> was a true legend in Software Engineering, he&#8217;s often referred to as <em>The Father of Software Quality</em>. He worked at <span class="caps">IBM</span> for 27 years and eventually became Vice President of Technical Development. In the 80s, he arrived at the <a href="http://www.sei.cmu.edu/">Software Engineering Institute (<span class="caps">SEI</span>)</a> where he developed some key development processes of our time: the Software Capability Maturity Model (<span class="caps">CMM</span>), the Personal Software Process (<span class="caps">PSP</span>), and the Team Software Process (<span class="caps">TSP</span>). He received many awards, culminating with the <em>National Medal of Technology</em> in 2005.</p>
<p>He wrote several books focusing mainly on software development and managing software projects through his <span class="caps">PSP</span> and <span class="caps">TSP</span> methodologies. <em>Reflections on Management &mdash; How to Manage Your Software Projects, Your Teams, Your Boss, and Yourself</em> was the last book published while he was alive. <a href="http://www.informit.com/title/0321624505">Leadership, Teamwork, and Trust: Building a Competitive Software Capability</a>, co-authored with James W. Over, was published posthumously.</p>
<p>Watts S. Humphrey <a href="http://www.sei.cmu.edu/newsitems/Humphrey_obituary.cfm">died</a> on October 28, 2010.</p>

</section>
<section class="section">
<header><h1 id="h_2">Structure and Organization</h1></header>
<p>In many ways, <em>Reflections on Management</em> can be seen as the <em>summa</em> of Humphrey&#8217;s work on <span class="caps">PSP</span>, <span class="caps">TSP</span> and management of software projects, condensed in a very readable 288-page-book, co-written with <a href="http://www.sei.cmu.edu/about/people/wrt.cfm">William R. Thomas</a>, Senior Technical Writer and manager of SEI&#8217;s Technical Publications Team.</p>
<p><img src="/img/pictures/books/reflmgmt.jpg" style="float:right" /></p>
<p>I noticed the tech writer&#8217;s touch simply by flicking through the pages of the book when I first got it: its structure is impeccable.</p>
<p>Organized into four parts, totalling 8 chapters, an Epilogue and an Appendix, this book is a prime example of order and readability: pick any section title (just the title) of any section in any chapter, and you get a clear idea of their content and purpose, and a key principle of management. Examples? Sure:</p>
<ul>
	<li>Chapter 8: Learning to Lead
	<ul>
		<li>8.1 How You Behave Affects Your Team</li>
		<li>8.2 Leaders Set an Example for Their Teams</li>
		<li>8.3 Learn to Avoid the Symptoms of Poor Leadership</li>
		<li>[&#8230;]</li>
	</ul></li>
</ul>
<p>If you print the Table of Contents alone you get a priceless cheat sheet on management and leadership. If you want slightly more detail, each chapter contains a summary table of all its sections, with a two-line summary of its contents. There are no subsections, only first-level sections, which make the book much easier to understand and &#8220;digest&#8221;.</p>
<p>You can read it all at once, then you should keep it readily available for consultation. It will take you only a few seconds to look through the contents and pick the most relevant section in a time of need.</p>

</section>
<section class="section">
<header><h1 id="h_3">Writing Style</h1></header>
<p>The book is very clear and simple to read, always. Each section is self-contained, and always aims to make a point, usually expressed right in its title. If I were to find a common pattern in most of the chapters of this book, it would be the following:</p>
<ol>
	<li>Identification of the problem &ndash; a particular situation or aspect is described in a way that problems are self-esplanatory.</li>
	<li>Labeling and classification &ndash; the situation is analized and often a set of causes are presented to the reader, often labeled or classified.</li>
	<li>List of possible solutions &ndash; a list possible solutions is presented to the reader, often as a definition list.</li>
	<li>Solution details &ndash; more details are provided to prove the effectiveness of the solution, often including personal anecdotes.</li>
</ol>
<p>By doing so, the author makes sure that everything he writes about can be easily understood and accepted, because proven by personal experience.</p>

</section>
<section class="section">
<header><h1 id="h_4">Contents</h1></header>
<section class="section">
<header><h1 id="h_5">Part I: Managing Your Projects</h1></header>
<p>The book starts with a general introduction on Software Quality. If you are new to the subject (and you <em>shouldn&#8217;t</em> be), this is probably one of the best and to-the-point overviews you&#8217;ll ever find, written by the man who almost came up with the concept.</p>
<p>The second chapter is about planning. Actually, the whole book is about planning at different levels, so no, you should not dismiss this part. <em>Good</em> plans are important, and they are your best weapon against management, if you excuse the expression.</p>
<p>Someone may object that if you&#8217;re working in an <em>agile</em> team, you shouldn&#8217;t spend a lot of energy in long-term planning, but rather focus on dealing with frequent requirement changes and deliver often and regularly. While this can be true, planning is still important: you won&#8217;t produce any rigorous schedule or design documents, but you still have to be able to provide accurate estimates and very often!</p>

</section>
	
	<section class="section">
<header><h1 id="h_6">Part II: Managing Your Teams</h1></header>
<p>The second part of the book focuses the <em>Team</em>, the people in it, their roles, their responsability and its leadership. Chapter 3 introduces Tom DeMarco&#8217;s concept of <em>Jelled Team</em>, i.e. a team that is more than the sum of its parts, and is characterized by cohesion, challenging goals, frequent feedback, a common working framework and good communication.</p>
<p>The Holy Grail. The dream of every team leader and its members. The good news is, it can be done. Any team can jell, and teams <em>like to jell</em> furthermore, if the proper conditions exist, and the three chapter in this third part will teach you everything from being a good team member to becoming a great team leader.</p>
<p>In many ways, this was my favorite part of the book. It&#8217;s amazing how a lifetime of experience is distilled in just a few pages. Chapter 5 (Leading and Coaching your Teams) is very, very inspiring and very helpful in understanding how to become a good team leader, how to motivate and involve people, and how to manage them rationally.</p>
<p>The story of Humphrey&#8217;s high school wrestling coach Umbach is a classic example of a truly dedicated, inspiring, and successful leader:</p>
		<blockquote>&#8220;The workouts were so tough that the matches seemed easy. By the end of the year, several of us were undefeated, the team took the 13-state championship, and we were campus heroes. All of this from a ragtag bunch of inexperienced recruits. It was Coach Umbach who made the team.<br />
<br />
Our coach&#8217;s dedication, commitment and energy were amazing, but what I found most inspiring was that he really cared about how each of us did. I have always remembered how he made a small band of raw recruits into a championship team and how he fostered the kind of cohesive team spirit that made losing simply unthinkable.&quot;</blockquote>

</section>
	
	<section class="section">
<header><h1 id="h_7">Part III: Managing Your Boss</h1></header>
<p>The third part consists of a single chapter: <em>Negotiation your projects and defending your plans</em>. It doesn&#8217;t matter if you want to pretend otherwise: as soon as you become a team leader and you have to deal with management, you&#8217;ll have to deal with complex internal politics.</p>
<p>This chapter is about learing to be pragmatically diplomatic and deal with management. It&#8217;s about creating good plans that can survive confrontation with your managers, no matter what their demands are.</p>
<p>There&#8217;s no silver bullet: I appreciated the honesty of the author when providing solutions. Section 6.6 (What to do when a project is doomed) is an example of this:</p>
<blockquote>
<p>You&#8217;re on a project and it&#8217;s headeing south. While everubody is trying their hardest, and you&#8217;re doing your level best to help, you can feel it in your bones: the project is doomed to fail. What can you do? You have three choices.</p>
<ol>
	<li>Keep plugging away and hope things will improve.</li>
	<li>Look for another job.</li>
	<li>Try to fix the problems.<br />
		</blockquote><br />
That&#8217;s right. Look for another job. That almost made me laugh, but it made me understand that in some extreme situation that may just be the best solution.</li>
</ol>

</section>
	
	<section class="section">
<header><h1 id="h_8">Part IV: Managing Yourself</h1></header>
<p>The last part of the book is about you. I would probably have moved it earlier on in the book, maybe right after the first part, but it serves as a good ending for the book. Chapter 7 (Taking Control of Your Work) is a must-read for anyone. It teaches you how to manage your working life, from time management (The 18 Hour Work Week) to psychological aspects (What Do You Want From Life?).</p>
<p>Chapter 8 (Learning to Lead), is a nice writeup on the essence of Leadership, and what it measn to be a good leader rather than a manager. A great read.</p>

</section>

</section>
<section class="section">
<header><h1 id="h_9">Final Thoughts</h1></header>
<p>Reading certain sections of this book felt a little bit weird at first. <span class="caps">TSP</span>, <span class="caps">PSP</span>, heavy planning and documents&#8230; are they still relevant in a &#8220;real world&#8221; now dominated by <em>agile</em> practices, Scrum, Kanban and similar? Do you really have to provide detailed plans and documentation to convince management?</p>
<ul>
	<li>You may not have detailed design documents, but you still have user stories.</li>
	<li>You may not be required to plan ahead of 6 months, but you still have to plan frequently and provide accurate estimates.</li>
	<li>You may not be required to trace and track everything you do, but at the very least you have to monitor your <em>velocity</em> and produce <em>burndown charts</em>.</li>
</ul>
<p>Yes, you read &#8220;<span class="caps">PSP</span>&#8221; and &#8220;<span class="caps">TSP</span>&#8221; everywhere in the book, but they are just labels. The methodologies and processes may change, but <em>the principles</em> will always remain true. This book is about understanding the very essence of management and leadership, and it will remain an invaluable resource for anyone who wants to build a career in the Software Industry.</p>

</section>

</section>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2011-01-23:/articles/introducing-ruby-compendium/</id>
    <title>Introducing the Ruby Compendium</title>
    <published>2011-01-23T17:02:15Z</published>
    <updated>2011-08-07T15:59:15Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/introducing-ruby-compendium/"/>
    <category term="ruby-compendium" scheme="http://www.h3rald.com/tags/ruby-compendium/"/>
    <category term="books" scheme="http://www.h3rald.com/tags/books/"/>
    <category term="ruby" scheme="http://www.h3rald.com/tags/ruby/"/>
    <content type="html">
<![CDATA[

		<section class="section">
<p>Learning a programming language can be hard and time consuming. You normally have to go through a bunch of tutorials, ask questions, read books&#8230; Ruby is no exception: there are plenty of resources out there about it, but it is often hard to find what you&#8217;re looking for. So, as a weekend project, I decided to create a <em>Ruby Compendium</em>, a short book about the Ruby Ecosystem.</p>
<p>I guarantee that you <em>will not</em> be able to code in Ruby after reading this book. Yes, you read it right, this book is not about coding, it&#8217;s about learning what&#8217;s out there for you that can help you to learn how to program in Ruby. Information on Ruby implementations, versions, web sites, books, podcasts, a handful of Ruby gems to solve common problems&#8230; it&#8217;s all in there.</p>

<p>The <em>Ruby Compendium</em> is available free of charge, under the terms of the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported License</a>, and you can help improving it! It was written using my very own <a href="http://www.h3rald.com/glyph">Glyph Framework</a>, and the entire source code is available on <a href="https://github.com/h3rald/ruby-compendium">GitHub</a>, for anyone to fork.</p>
<div style="text-align:center;margin:20px; auto;font-size: 18px; font-weight:bold;"><a href="https://github.com/downloads/h3rald/ruby-compendium/ruby-compendium.pdf">Download (<span class="caps">PDF</span>)</a></div>

</section>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2010-12-27:/articles/leading-lean-software-development/</id>
    <title>Book Review: Leading Lean Software Development</title>
    <published>2010-12-27T13:15:45Z</published>
    <updated>2011-03-27T11:41:31Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/leading-lean-software-development/"/>
    <category term="review" scheme="http://www.h3rald.com/tags/review/"/>
    <category term="books" scheme="http://www.h3rald.com/tags/books/"/>
    <category term="software" scheme="http://www.h3rald.com/tags/software/"/>
    <content type="html">
<![CDATA[

		<section class="section">
<p>If you already heard the names Mary and Tom Poppendieck, chances are that you already know what <em>Lean Software Development</em> is. If you don&#8217;t, start from <a href="http://en.wikipedia.org/wiki/Lean_software_development">this Wikipedia page</a>. Mary and Tom coined this term with their first book on the subject <a href="http://www.amazon.com/exec/obidos/ASIN/0321150783/poppendieckco-20">Lean Software Development: An Agile Toolkit</a>, that was followed three years later by <a href="http://www.informit.com/store/product.aspx?isbn=0321437381">Implementing Lean Software Development: From Concept to Cash</a>, and finally by this book: <a href="http://www.informit.com/store/product.aspx?isbn=0321620704">Leading Lean Software Development: Results Are not the Point</a>.</p>
<p>Unlike the two other books, this one is focused about making lean software practices succeed. In some way, it can be compared to <a href="http://www.h3rald.com/articles/succeeding-with-agile-review/">Succeeding with Agile</a>, but while Mike Cohn&#8217;s book focuses entirely on Scrum, this book has a much broader scope. Moreover, the book contains a lot of digressions and stories &mdash;even not directly related to software development&mdash; aimed at understanding particular aspects of Lean Software Development and the Lean movement in general.</p>
<p>The focus is, as the title suggests, on leadership: how can you be a good leader in these difficult, ever-changing times? How can you be agile without loosing your team? How can you improve the existing processes so that they can help you achieve your goals? If you ever asked yourself these questions, this is the right book for you&#8230;</p>

<section class="section">
<header><h1 id="h_1">Structure and Organization</h1></header>
<p>This book is extremely well-structured. Its Table of Contents follows some very rigid rules which make this book one of the most organized texts I&#8217;ve ever come across. It is divided into six chapters, each organized as follows:</p>
<ul>
	<li>A <em>snapshot</em> or an introductory story for the chapter&#8217;s main topic</li>
	<li>Four <em>frames</em>, each describing a lean practice or personal quality</li>
	<li>A <em>portrait</em> of a leader</li>
	<li><em>Your Shot</em>, i.e. some questions and exercises for the readers</li>
</ul>
<p><img src="/img/pictures/books/leadingleanswdev.jpg" style="float:right" /></p>
<p>In total, the book contains 24 frames constituting the &#8220;Big Picture&#8221;, which is actually a very powerful framework for lean software leadership. You can read the book&#8217;s <span class="caps">TOC</span> <a href="http://www.poppendieck.com/llsd.htm">online</a> on the Poppendieck website and read the book&#8217;s Introduction (<a href="http://www.poppendieck.com/pdfs/LLSD_intro.pdf"><span class="caps">PDF</span> link</a>) on the whole concept of <em>framing</em> (yes, both the authors do love photography!).</p>
<p>When I started my career as a technical writer I used to love carefully-structured, simmetrical manuals. After a while, however, I understood that such rigorous structuring can even be dangerous if it becomes an obsession: you end up adding extra &#8220;padding writing&#8221; to make sections roughly match in length, or you start cutting down some other parts, for the same reason. Writing well-balanced books is hard, but I must say that the authors do a very good job with this book: it flows very naturally while keeping to its rigorous structure.</p>

</section>
<section class="section">
<header><h1 id="h_2">Chapter 1: Systems Thinking</h1></header>
<p>The first chapter is about customers, what they want and the goals of your system. It describes some interesting high level concepts like <em>failure demand</em> and <em>policy-driven waste</em>, and how to spot opportunities to improve the process.</p>
<p>What I found particularly interesting was the usage of <a href="http://www.cps.gov.uk/publications/finance/process_mapping.html">process maps</a> to analyze an existing process and find bottlenecks or leaks (in terms of time). I was instantly sold on this practice after reading the success story of how a company manage to reduce the overall time to process and solve customer issues simply by connecting customers directly to developers instead of tech support engineers. This is something you can&#8217;t apply everywhere, but after creating a process map for that specific case, the solution was evident.</p>
<p>More generally speaking, this chapter provides a recipe/checklist outlining the sequence of the phases of process improvement and problem solving:</p>
<ol>
	<li><em>Understand</em></li>
	<li><em>Observe</em></li>
	<li><em>Visualize</em></li>
	<li><em>Evaluate</em></li>
	<li><em>Implement</em></li>
</ol>

</section>
<section class="section">
<header><h1 id="h_3">Chapter 2: Technical Excellence</h1></header>
<p>This is the only chapter focusing primarily on technical topics and knowledge. It starts with a very lengthy digression on the history of programming methodologies, aimed at understanding <em>what works and what doesn&#8217;t</em>. Some examples of IT stuff that worked include the Internet, PCs and &#8230;Open Source Software.</p>
<p>This chapter provides a general overview on Software Development as a whole. It contains some interesting information on software complexity and dealing with architectural dependencies, comprehensive sections on testing and continuous integration, and just a half page on refactoring (understandable, seeing that there are already plenty of excellent books on the subject).</p>

</section>
<section class="section">
<header><h1 id="h_4">Chapter 3: Reliable Delivery</h1></header>
<p>The <em>Race to the Sky</em> section at the beginning of Chapter 3 is by far the most fascinating of the non-IT stories included in this book. It describes the construction of the Empire State Building in 1930, how it was planned out, what strategies were followed, and why it succeeded (why <em>the construction</em> succeeded: the building itself remained totally unprofitable for quite some time).</p>
<p>There are <a href="http://en.wikipedia.org/wiki/Empire_State_Building#Further_reading">plenty</a> of books on the subject, but Tom and Mary Poppendieck well summarize the key points of this modern-day epic achievement: how to build the tallest skyscraper in the world in a single year. This story teaches us how to work under very tight deadlines, by designing a system to fit constraints, rather than estimating up-front.</p>
<p>This story was perfect to introduce, in the same chapter, concepts like <a href="http://en.wikipedia.org/wiki/Kanban">Kanban</a>, <em>pull scheduling</em> and <em>adaptive control</em>, which only recently have been seriously considered in the world of Software Development but they are becoming more and more relevant.</p>

</section>
<section class="section">
<header><h1 id="h_5">Chapter 4: Relentless Improvement</h1></header>
<p>Chapter 4 starts with a brief history of the checklist, which was invented in 1935, to be used by airplane pilots. It then moves on to its usage in hospitals, describing how checklists helped dropping infections caused by inserting central venous catheters incorrectly. Why all this? To focus on the concept of <em>process standards</em>, or better, how <em>we</em> can improve processes to accomplish our goals.</p>
<p>Basically, this us what Toyota does: regulations should not be written on stone, but they should reviewed and updated frequently for continuous improvement or <a href="http://en.wikipedia.org/wiki/Kaizen">Kaizen</a>.</p>
<p>Finally, this chapter also briefly introduces a few different ways to perform root-cause analysis, such as using <a href="http://en.wikipedia.org/wiki/Ishikawa_diagram">fishbone diagrams</a>.</p>

</section>
<section class="section">
<header><h1 id="h_6">Chapter 5: Great People</h1></header>
<p>This chapter and the last one are actually focused on people and management. In this chapter, an unusual (for this kind of books, that is) but intriguing analysis on different countries using the following dimensions:</p>
<ul>
	<li>power distance</li>
	<li>individualism</li>
	<li>masculinity</li>
	<li>uncertainty avoidance</li>
	<li>long-term orientation</li>
</ul>
<p>Turns out that individualism is abundant in the Western world but not so much in the Far East (who would have thought!), but the opposite applies to power distance. A bit stereotypical, if I may, but not too much: the results are not surprising, especially when it comes to considering different cultures as a whole. Once more, the focus is again on Toyota&#8217;s Kaizen and their culture of <em>respect for the people</em>.</p>
<p>On page 198, the meaning of the subtitle of the book (Results Are not the Point) is revealed: <q>developing the people and the system so that together they are capable to achieve successful results is the point</q>. Agile is precisely about this: focusing on the people.</p>
<p>But what about leaders? This is an aspect of the whole Agile philosophy that I keep stumbling upon: if you want <em>The Team</em> to be in charge, what happens to leadership? As I found out myself working in and with Agile Teams, often there&#8217;s a serious lack of strong leaders. <q>Leadership needs to be gently refactored into Agile</q>, that&#8217;s what Mary and Tom recommend. How? It depends on each specific case, but it must always be done <em>gently</em>.</p>

</section>
<section class="section">
<header><h1 id="h_7">Chapter 6: Aligned Leaders</h1></header>
<p>The final chapter begins with the history of <em>Agile@IBM</em>, or how to turn the biggest software company in the world into a massive agile machine. It wasn&#8217;t a top-down decision, the <span class="caps">CEO</span> didn&#8217;t just wake up one morning and decided that everyone should go Agile. Quite the opposite: it was something that was <em>pulled</em> by developers rather than <em>pushed</em> at them.</p>
<p>In cases like this, companies should be focusing on developing people, including good leaders, instead of particular initiatives and processes. Leaders in turn should shift their focus from details to more high-level decisions. When it comes to facing changes, leaders should look at the <a href="http://www.bbrt.org/beyond-budgeting/bbprinc.html">12 principles</a> of the <a href="http://www.bbrt.org/"><span class="caps">BBRT</span></a> leadership model.</p>
<p>The final portrait, <em>Leaders at all Levels</em>, well summarizes the key to successful leadership: <q>leadership is about example, coaching and helping others to achieve their goals</q>.</p>

</section>
<section class="section">
<header><h1 id="h_8">Final Thoughts</h1></header>
<p>If you&#8217;re looking for a manual on implementing Lean Software Development in detail, this is probably not the best book on the subject. If you&#8217;re a developer at the start of your career, with no management responsibilities, you&#8217;d want more technical juice, so probably you should read the other two books by the Poppendiecks on the subject first.</p>
<p>On the other hand, if you have been working in IT for a few years, and maybe you already started to climb up the corporate ladder, reading this book could make the difference between being successful leader or not. This book does not go very in-depth with any particular methodology or process, but it does provide an excellent overview of a lot of them.</p>
<p>To get the best out of <em>Leading Lean Software Development</em>, you should read it a least once sequentially, skipping the parts that are not relevant to you (right now), taking notes on the more interesting frames, and then go back over them to digest them properly. Do <em>not</em> skip the introduction of each chapter though, for one because they are always pleasant to read between frames, and also because they do teach some very important values or strategies that you <em>must</em> assimilate.</p>
<p>The general message that stands out when reading this book is <em>focus on people</em>. Customers, of course, but also employees: every single successful company mentioned in this book, from Toyota to Southwest Airlines, became successful because they always focused on developing people <em>first</em>, and <em>then</em> products.</p>

</section>

</section>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2010-11-14:/articles/randal-schwartz/</id>
    <title>A pizza with Randal Schwartz</title>
    <published>2010-11-14T12:35:29Z</published>
    <updated>2011-03-27T11:41:30Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/randal-schwartz/"/>
    <category term="opensource" scheme="http://www.h3rald.com/tags/opensource/"/>
    <category term="programming" scheme="http://www.h3rald.com/tags/programming/"/>
    <category term="italy" scheme="http://www.h3rald.com/tags/italy/"/>
    <content type="html">
<![CDATA[

		<section class="section">
<p>I am an avid <a href="http://twit.tv/FLOSS"><span class="caps">FLOSS</span> Weekly</a> listener. Sometimes I may fall behind by a few episodes, but I normally manage to catch up: Randal Schwartz&#8217; show is by far my favorite podcast.</p>
<p>You can imagine my reaction when I discovered that Randal was in Genoa, my city, ready to leave for yet another <a href="http://www.insightcruises.com/">InsightCruise</a>: I had to meet the guy, at all costs!</p>
<p>It turned out to be easier than I thought: I simply <a href="http://twitter.com/#!/h3rald/status/28962418438">asked him</a> if he fancied a pizza out on the way back from his cruise, and he said yes.</p>
<p>I also decided to invite <a href="http://www.agilesensei.com/">Claudio Perrone</a> as well, seeing that he&#8217;s back in Genoa on one of his Agile/Lean gigs. He said he didn&#8217;t know much about Perl, but he&#8217;d have liked to come as well. So there I was lining up a dinner out with two IT gurus at the same time.</p>
<p>Randal was staying at the <a href="http://www.hotelbristolpalace.it/">Bristol Palace Hotel</a>, and we met him at the lobby bar. In the end I persuaded my wife to come along as well, although she doesn&#8217;t know much about Perl either.<br />
We shook hands with Capt. Neil [Bauman, of InsightCruises.com] and a few others of the cruise gang, then we were off to the restaurant.</p>
<p>It only took five minutes to realize that Randal was exactly like he sounds on his show: cheerful and chatty, eager to talk about technology and science. When you meet famous people face-to-face, there&#8217;s always a chance that they are not nice at all, but luckily this wasn&#8217;t the case: within minutes Randal was telling us all about <a href="http://news.motionx.com/category/motionx-gps/">MotionX-<span class="caps">GPS</span></a> (a very neat iPhone app that I highly recommend) like we had been buddies for ages.</p>

After a rather bumpy bus ride (Italian evening drivers are well known for this), we got to <a href="http://www.ristorantepiedigrotta.it">Piedigrotta</a>, ordered some pizzas, and started talking. Little did we know that Randal loves talking and sharing stories about almost anything: we were chatting non stop for hours, and after dinner my wife and I invited everyone up to our place, to continue talking happily in front of a glass of our wine and... freshly-microwaved popcorn.

Here's what we talked about, organized by topic for your convenience. I didn't record the conversation even if it would have made a hell of a show, but I'll do my best to quote him as faithfully as I can remember or paraphrase him without changing the meaning of his words. 

<aside class="important">
<span class="note-title">Important</span>Randal, if you're reading this and you come across any misquotation, please let me know so I can amend them!

</aside>


<section class="section">
<header><h1 id="h_1">Something more about Randal</h1></header>
<p><a href="http://www.stonehenge.com/merlyn/">Randal Schwartz</a> is a world-famous Perl guru, author of the <a href="http://www.oreillynet.com/pub/au/335">best Perl programming</a> on the market, and a very prolific <a href="http://www.stonehenge.com/merlyn/columns.html">column writer</a>.</p>
<p>Randal is not a full-time writer though (<q>&#8220;writing books doesn&#8217;t pay&#8221;</q>). His day job consists in being a &#8220;guru on-demand&#8221;: you can hire him to fix your code, refractor complex enterprise applications, or simply provide useful advice to IT managers. <br />
Being the host of <span class="caps">FLOSS</span> Weekly is not a job, and Randal doesn&#8217;t do it for the money of course, but for passion: <q>&#8220;I&#8217;m trying my best to do one show per week, even when I am away&#8221;</q>, he said, and he does go off traveling around the world a lot!</p>
<p><q>&#8220;Once I was at home for 8 weeks and it felt really strange. I kept thinking I had to pack to go somewhere else&#8221;</q>. He&#8217;s been on nearly every Geek/Insight Cruises (51, if I remember correctly) and his <a href="http://www.stonehenge.com/merlyn/dot-plan.txt">travel plan</a> is always very busy.</p>
<p>I was extremely lucky to catch him on the way back from one of the few cruises in the Mediterranean! It must be a sign of some sort.</p>

</section>

<section class="section">
<header><h1 id="h_2">Open Source</h1></header>
<p>I have always tried to raise awareness about Open Source and Free Software among my friends, co-workers, and even managers. Sometimes it&#8217;s easy to make people realize that Free, Libre, Open Source Software matters, other times is much harder.</p>
<p>When Randal got half way through his pizza, I asked him if he had any tips on open source advocacy and on overcoming corporate resistance. I explained that the main concerns I get when I talk about open source in an enterprise environment are:</p>
<ul>
	<li>the cost or support/training</li>
	<li>the immaturity of the product and fear of it being abandoned at some point</li>
	<li>overall, a high Total Cost of Ownership</li>
</ul>
<p>Randal was almost laughing at one point: <q>&#8220;why are people concerned about paying for support for open source software? Don&#8217;t they pay it already for proprietary applications?&#8221;</q>, also <q>&#8220;the chances for open source software being discontinued are the same, if not lower, than proprietary software. Plus, proprietary software often forces compulsory upgrades, and similar things that can eventually damage your business&#8221;</q>. Additionally, if I may add, in the unfortunate case that an open source project is abandoned or turns nasty, it is often forked, so at worst you always have the source code anyway.</p>
<p>Randal also pointed out that what really matters about an open source project is the community built around it. He mentioned that the <a href="http://www.mongodb.org/">MongoDb</a> guys that came on <a href="http://twit.tv/floss105"><span class="caps">FLOSS</span> Weekly #105</a> were really enthusiastic of having embraced open source. Unfortunately, some projects just don&#8217;t seem to get the whole idea behind open source at all: <em>community</em> vs. <em>enterprise</em> editions always makes me suspicious, and Randal agreed to an extent.</p>
<p><strong>In a nutshell, Open Source is not about the company or the license, it&#8217;s about the people and the community behind a project.</strong></p>
<p><q>&#8220;You should [re-]listen to one of my very first podcasts, the one with &#8221;http://www.webmink.net/&#8220;&gt;Simon Phipps</a>, the former Chief Open Source Officer at Sun&#8221;</q>, Randal told me in the end, and he&#8217;s right: <a href="http://twit.tv/floss39"><span class="caps">FLOSS</span> #39</a> is a must for anyone truly interested in the subject.</p>
<p>Seeing that Randal seemed to be perfectly happy to play with his iPhone, I went for the obvious question and asked him what he thought about Apple, and at the same time Claudio asked him what was his operating system of choice.</p>
<p><q>&#8220;OS X&#8221;</q>, admitted Randal, <q>&#8220;I use what gets the job done&#8221;</q>. In all things, there&#8217;s no point in being an extremist for the sake of argument, and being an open source advocate does not mean that you have to condemn every piece of proprietary software (at this point, Richard Stallman would have thrown up his pizza, had he been there &#8212;but he wasn&#8217;t).</p>
<p><q>&#8220;From a <span class="caps">GUI</span> point of view, Apple is still ahead of the competition: if others want to win, they have to come up with something better, and different. [&#8230;]Ubuntu is getting there, but not quite yet.&#8221;</q></p>
<p>Randal also pointed out the importance of contributing to open source projects: <q>&#8220;you don&#8217;t have to code, you can just provide feedback, submit bug reports, write documentation, or test&#8230; I am the one who checks if git builds on a Mac, for example&#8221;</q>.</p>

</section>

<section class="section">
<header><h1 id="h_3">Programming</h1></header>
<p>Programming was another major topic of our discussion. Randal, after all, is a living Perl legend having written 6 Perl books and over 250 magazine columns. Unfortunately I don&#8217;t know much about Perl, and neither does Claudio. I am quite open-minded about languages&#8212;although I am slightly favorable towards Ruby&#8212;so I enjoyed every little bit of the discussion anyway.</p>
<p>Most of the discussion was about Perl 6, which was recently featured on <a href="http://twit.tv/floss140"><span class="caps">FLOSS</span> Weekly #140</a>. After listening to what Randal had to say about it, I am definitely going to try it out at some point (hopefully skipping Perl 5 altogether). <br />
<q>&#8220;We [Perl programmers] say that Ruby is an alpha version of Perl 6&#8221;</q> said Randal, joking about the similarities between the two languages and the amount of time it took to come up with a working Perl 6 (which to date is still unfinished). He reckons Perl 6 will be used in production for small and medium projects within a few months, and he&#8217;s going to write a book about it.</p>
<p>He then briefly described what makes Perl 6 so special. The top feature we were talking about was grammars: the language offers the possibility to create grammars to parse other languages and even Perl 6 itself. Moreover, the Rakudo implementation running on the Parrot VM aims to implement the full Perl 6 specification in Perl 6 itself <q>&#8220;[&#8230;] therefore, at run time, a program is able to access the its syntax tree itself&#8230;&#8221;</q>, he said, while playing with an imaginary Perl 6 parse tree in the air.</p>
<p>We then moved on to Smalltalk, and both Claudio and I asked him a few questions about it, in particular about the whole concept of <em>image</em>, particularly in reference to the Squeak implementation. We observed how many programmers of other languages (Ruby included) end up going back to the origins (Smalltalk) and how Smalltalk is far from dead. <q>&#8220;It&#8217;s only a matter of getting used to it&#8221;</q>, said Randal when I asked him how to work with a Smalltalk image and how to distribute it, <q>&#8220;you program as you would in any other language, you can communicate with the rest of the world just fine. What you get in Smalltalk that you don&#8217;t get in most other languages, is the ability to inspect and work with the underlying source code of the objects at run time, thanks to the amazing reflection features the language offers&#8221;</q>.</p>
<p>At one point I had to asked Randal what he though about Haskell, having tried to learn it three times without succeeding: <q>&#8220;I have tried <em>ten</em> times to learn it myself, with no luck&#8221;</q>, he said. At least I&#8217;m not alone!</p>
<p>The discussion then shifted towards tools, and then of course text editors. I just had to remind him that I am a Vim guy. Randal looked at me smiling, and said: <q>&#8220;That&#8217;s fine. You <span class="caps">WILL</span> join us. Sooner or later you will join us&#8230; join us&#8230;&#8221;</q>.</p>
<p>Randal&#8217;s involvement in Emacs dates way back to the end of the 80s, and he has been using it ever since. He even contributed to it, back then, by writing pp.el, the pretty printer module.<br />
<q>&#8220;I posted my code to the emacs mailing list, and Richard Stallman himself replied asking if he could include my code in Emacs. If you read Emacs acknowledgements, I&#8217;m there as well&#8221;</q>, said Randal, proudly.</p>
<p>I confess I almost felt the urge to give Emacs another try. I often get hyped up about things like this. If I had received such a reply from Richard Stallman, I would have probably sworn not to touch the Editor of the Beast ever again.</p>
<p><q>&#8220;Just try out Org mode. I didn&#8217;t know it very well myself until I had a show about it, but now  realize why people should always load up an Emacs instance just to run Org mode.&#8221;</q>, said Randal again, talking about yet another <a href="http://twit.tv/floss136">recent show</a>.</p>

</section>

<section class="section">
<header><h1 id="h_4">Technical Writing</h1></header>
<p>After our pizza, we all went back to my place, which is literally around the corner for the restaurant. It was only when we were happily starting the second glass of my family&#8217;s very own home-made wine that Randal looks at me and says: <q>&#8220;You know that I started off as a Technical Writer myself, don&#8217;t you?&#8221;</q></p>
<p>I was baffled. I did brush up on Randal&#8217;s life on his web site, Wikipedia and similar, like any good fan meeting his hero, but I never came across this tiny detail. This triggered yet another round of questions on my part, as I have been working full time as a technical writer for years now. Randal shared a couple of anecdotes about his early technical writing career.</p>
<p><q>&#8220;When I joined, I had a boss called Lyle. He used to say that the manual itself is <em>the</em> product. If it&#8217;s not in the manual, it simply doesn&#8217;t exist for the customer.&#8221;</q> A statement that can come handy as as a reminder for Product Managers, Project Leaders and similar when they try to belittle documentation, and for writers themselves, when they feel that they can be sloppy because no one cares.</p>
<p>I really enjoyed when Randal told us about his first encounter with his editor, Jack:</p>
<blockquote>&#8220;He was a big guy. 6 ft tall, with huge hands. He used to hold his pencil like this&#8230; [shows a fist grabbing a pencil] &#8230;he starts reading my first draft and crosses a word, then a paragraph, and another, and so on. Then he looks at me and says: &#8216;OK, what did you <em>really</em> want to say here?&#8217;<br />
<br />
I said &#8216;Well, that you set option -s to enable <span class="caps">XYZ</span>&#8217;, and he starts writing down on my document &#8216;Set option -s to enable <span class="caps">XYZ</span>&#8230;&#8217;, and so on.&quot;</blockquote>
<p>When you start as a Technical Writer, you often end up writing a lot trying to be thorough, making even really simple things complicated. Jack reminded me of a great editor that was hired at my company for a summer, and revolutionized the whole department by applying some principles and vocabulary of <a href="http://en.wikipedia.org/wiki/Simplified_English">Simplified English</a>. As it turns out, instructions written in a plain and simple language are far easier to understand than anything else.</p>

</section>

<section class="section">
<header><h1 id="h_5">Wrapping it up</h1></header>
<p>We spent the whole evening talking non-stop. We met at his hotel at 7:30 PM and I drove him back around 11 PM. The guy does talk a lot. Luckily, I got a chance to take a couple of pictures and get a funny autographed note, as long as I promised not to use it for cheques, that reads: &#8220;To Fabio, without whom this note will make no sense&#8221;.</p>
<p><img src="/img/pictures/rls/rls1_small.png" style="float:right;" /></p>
<p>There&#8217;s obviously a lot of stuff we talked about that I didn&#8217;t write about, mainly because I was trying to keep this article focused on IT-related topics. Before his cruise, Randal visited the <span class="caps">CERN</span> in Geneva, so for a good half hour we  talked about the <span class="caps">LHC</span>, experiments, neutrinos being shot from Geneva and collected in Rome, things like that.</p>
<p>We also talked a lot about Randal&#8217;s day job, then about his company <a href="http://www.stonehenge.com">Stonehenge.com</a>, then his trip to England (and to the real Stonehenge); and we talked about Italy, both about good things (food?) and bad things (bureaucracy, backwards mentality mainly in relation to IT, lack of English speakers, etc.).</p>
<p>The evening couldn&#8217;t have gone better. Especially considering Randal and I don&#8217;t agree on some <span class="caps">EXTREMELY</span> important matters (programming languages and text editors). It was a great chance to learn from each other. I doubt he will be ditching Perl in favor of Ruby, but at least I hope to have made it very clear to him that Ruby is much more than Rails, at least for some of us.</p>
<p><code>sudo apt-get install emacs</code></p>
<p>Damn! Wrong terminal. Sorry about that&#8230;</p>

</section>

</section>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2010-09-25:/articles/making-it-big-in-software/</id>
    <title>Book Review: Making it Big in Software</title>
    <published>2010-09-25T09:21:41Z</published>
    <updated>2010-09-28T21:14:21Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/making-it-big-in-software/"/>
    <category term="review" scheme="http://www.h3rald.com/tags/review/"/>
    <category term="books" scheme="http://www.h3rald.com/tags/books/"/>
    <category term="software" scheme="http://www.h3rald.com/tags/software/"/>
    <content type="html">
<![CDATA[

		<section class="section">
<p>When this book came out, it was immediately followed by a lot of buzz. Positive reviews started popping up almost instantly, a lot of people blogged about it, it was surrended by a lot of&#8230; what&#8217;s that word again? Oh yes, <em>hype</em>. The title pissed me off really: who on Earth wants to title his book <a href="http://bit.ly/b08auR">Making it Big in Software</a>? Steve Jobs? Bill Gates?</p>
<p>No, just a guy named <a href="http://lightstone.x10hosting.com/">Sam Lightstone</a>. When I was offered a review copy, I was a bit reluctant to even bother: I thought it was one of those overly-hyped titles that claim to make you famous and successful, but all they do stating the obvious: work hard, be innovative, use your money wisely, etc. Well, this book is not one of them.</p>
<p>When I got my copy, I immediately read the author&#8217;s bio on the second-last page of the book: Sam Lightstone runs a site called <a href="http://makingitbigcareers.com/">Making it Big Careers</a> (again, I got instantly worried by this), <em>but</em> also happens to be one of the brightest minds in <span class="caps">IBM</span>, a <a href="http://en.wikipedia.org/wiki/IBM_Master_Inventor"><span class="caps">IBM</span> Master Inventor</a>, author and co-author of 30+ patents.</p>
<p><img src="/img/pictures/books/making-it-big.jpg" class="right" /><br />
The 17 exclusive interviews with software gurus, visionaries, minor and major deities of the IT world are definitely worth the 24.99$ this book costs <em>on their own</em>. This was one of the major selling points of the book itself (as the merry-looking pictures of Marissa Mayer, James Gosling, Steve Wozniak and John Schwarz on the cover suggest), but far from being the only one. The interviews are strategically placed throughout the book, as supporting material for the author&#8217;s advice: if you don&#8217;t believe him, you will believe those who <em>made it</em>. Anyhow, let&#8217;s say something about the book itself, shall we?</p>
<p><em>Making it Big with Software</em> is divided into three parts:</p>
<ul>
	<li><strong>Part I: Fundamentals</strong> &#8212; all you need to know to get hired. Finish school, learn new things, and get a job in the Software industry.</li>
	<li><strong>Part II: Leadership</strong> &#8212; tips on what to do to start climbing the corporate ladder, from junior to senior manager.</li>
	<li><strong>Part <span class="caps">III</span>: Greatness</strong> &#8212; go beyond a successful career and become a luminary in IT, an example for future generations (and earn the big bucks).</li>
</ul>

	<section class="section">
<header><h1 id="h_1">Part I: Fundamentals</h1></header>
<p>After two introductory chapters, aimed at answering questions like &#8220;Why bother?&#8221; or &#8220;What do big shots in software do?&#8221;, the book starts analyzing what graduates get when they get out of school. I was really taken by the following paragraph, outlining the main difference between school and work:</p>
<blockquote>
<p>[&#8230;] although schools encourage students to do their own work, on penalty of expulsion or severe reprimand, professional work is saturated with the ubiquitous mantra of &#8220;teamwork.&#8221; In school, your success depends on individual effort, whereas professional life depends frequently on your ability to work in teams.</p>
</blockquote>
<p>So true. I never thought about it until I read it in this book. And this is a common causes of failure in the workplace: not being able to work in a team. It&#8217;s understandable: after years of striving to be the best, to do things for yourself, you&#8217;re suddenly asked to work for and with others.</p>
<p>The author gives junior graduates some useful tips to get a job in software development (or the software industry in general), with some useful tips on how to create a proper r&eacute;sum&eacute;, how to survive interviews, the usual. Hell I wish I had this book when I started!</p>
<p>Readers like me who already have a job should not dismiss this part. Maybe skim through the first few chapters, but towards the end there are some useful suggestions on how to build essential interpersonal skills and a nicely-written chapter about <em>career killers</em>.</p>

</section>

	<section class="section">
<header><h1 id="h_2">Part II: Leadership</h1></header>
<p>The second part of the book opens with <strong>Chapter 9</strong>, Working the Org, which I found most amusing for the funny, but insightful, <em>Negotiating 101</em> section. Again, particular emphasis is put on non-technical skills, which are however essential for success. I particularly enjoyed reading this part of the book, because I could relate to it, being a Technical Leader myself.</p>
<p><strong>Chapter 12</strong> is a must-read, as the author himself says:</p>
<blockquote>
<p>If you read only one chapter in this book, this should probably be the one.</p>
</blockquote>
<p>If you never read anything about time management, you rhave to read this, as it helps you realize how much time you waste, why, and what you can do to improve the situation. I attended a course on the subject at work, a while ago, and I was shocked to read most of the stuff I learned at that course so tidily organized in no-nonsense prose in this chapter. Granted, it doesn&#8217;t substitute a time management course or practical experience with managing your priorities, but it is a good starting point.</p>
<p><strong>Chapter 14</strong> deals with <em>Zen and the critical art of balance [between work and personal life]</em>. The diagram on page 249 scared the hell out of me. Here it is, transposed in tabular form:</p>
<table>
<tr>
		<th>Desired State</th>
		<th>Current State</th>
</tr>
<tr>
		<td>Work: 9 hours</td>
		<td>Work: 13 hours</td>
</tr>
<tr>
		<td>Sleep: 8 hours</td>
		<td>Sleep: 6 hours</td>
</tr>
<tr>
		<td>Travel: 1 hour</td>
		<td>Travel: 2 hours</td>
</tr>
<tr>
		<td>Family &amp; Leisure: 4 hours</td>
		<td>Family &amp; Leisure: 1 hours</td>
</tr>
<tr>
		<td>Chores &amp; Hygiene: 2 hours</td>
		<td>Chores &amp; Hygiene: 2 hours</td>
</tr>
</table>
<p><em>Thirtheen hours</em>? Really? If <em>you</em> work 13-hour days then you have to read this chapter <em>and put it into practice</em> instantly or you&#8217;ll regret it. Luckily <em>I</em> manage to work most of the time for 8 hours a day (as everyone should, by law).</p>
<p>Another chapter I particularly enjoyed (and will re-read periodically) is <strong>Chapter16</strong>, which contains the best definition of leadership I ever came across:</p>
<blockquote>
<p>&#8220;Leadership is communicating to people their worth and potential so clearly that they come to see it in themselves.&#8221;</p>
</blockquote>
	<p style="margin-left: 4em">&ndash; Stephen Covey</p>
<p>Again, this chapter teaches you the basics on leadership and management. If you didn&#8217;t take a course on the subject yet, it&#8217;s definitely worth a read.</p>

</section>

	<section class="section">
<header><h1 id="h_3">Part III: Greatness</h1></header>
<p>I particularly enjoyed the first two chapters of this last part: <strong>Chapter 17</strong> and <strong>Chapter 18</strong> are about <em>innovation</em>, which I found to be the fastest and best way to get noticed in a company.</p>
<p>These two chapters won&#8217;t teach you to become a genius or an inventor, but they do provide help on the subject: why innovating is important, how to innovate and what to do once your idea gets a shape. The <em>Patenting</em>, <em>Publishing</em> and <em>Public Speaking</em> sections in chapter 8 are useful and practical, and deserve a good read. Again, the book does not go too in-depth, but the author provides just enough information to make you aware of the main issues.</p>
<p>The final chapters of the book felt a bit distant from my current work reality. Business talk, stock options, startups, acquisitions&#8230; They may interest some readers with an enterpreneurial mindset, but not me, at least not now. Nonetheless, business and politics pay a very important role in any IT job, so it&#8217;s wise to be aware of them.</p>

</section>
<section class="section">
<header><h1 id="h_4">The Interviews</h1></header>
<p>The 17 interviews with software gurus, miracle workers and other extremely successful chaps make up for about the 20% of the book. They are carefully placed by the author in specific places of the book where they make the most sense (well, most of the time). Every person had to answer a similar set of questions, like &#8220;How did you get started in software&#8221;, &#8220;How do you stay on top of technology trends and innovation?&#8221; or &#8220;Technical leaders and executives are famous for being time-strapped. What strategies do you use to stay sane and use your time effectively?&#8221;.</p>
<p>Every interviews has at least one personal anecdotes. Some feel almost legendary, like the following:</p>
<blockquote>
<p>In 1967, at the age of 12, I dreamed of making a difference in the field of computer science. I went off to the local <span class="caps">IBM</span> office, literally knocked on their door, and said, &#8220;I will do anything for the summer-empty trash cans, you name it.&#8221; They said, &#8220;Go away kid.&#8221; But there was a sales guy who took pity upon me and threw me a nice Fortran IV [<span class="caps">IBM</span> Mathematical Formula Translating System] manual, with the expectation that I&#8217;d probably read it and get bored and never come back. But much to his surprise, I came back the following Monday and said, &#8220;Hey, this is cool! I just wrote a program and I want to run it.&#8221; The sales guy was so impressed that he found me an open computer to work on where I could teach myself how to keypunch, program, and debug for what I still recall as a delightful summer.</p>
</blockquote>
	<p style="margin-left: 4em">&ndash; Grady Booch, <span class="caps">IBM</span> Fellow and Chief Scientist for Software Engineering, <span class="caps">IBM</span> Research</p>
<p>Every interview provides at least a good piece of advice for newcomers to the field. The last chapter of the book summarizes the interviews attempting to draw the profile of the successful IT professional: some founded their own companies, other climbed up the corporate ladder, a few contributed with key inventions (email, the Internet, &#8230;) that changed society as we know it. Different levels of greatness, and different ways to reach it: this is what this book is really about.</p>

</section>
<section class="section">
<header><h1 id="h_5">Final Thoughts</h1></header>
<p><em>Making it Big in Software</em> is very well organized, in its three main parts. Unless you&#8217;re already the <span class="caps">CEO</span> of a multi-million-dollar company, you can learn something from this book, and even if you are, learning how other people <em>made it</em> is always beneficial.</p>
<p>It is not a specialized book, and as such it does not go in depth on anything specific. This is a good thing though, because after you read some of the chapters you feel motivated to learn more about this or that particular topic, skill or problem. In a way, it can be a good surrogate for more specialized books about r&eacute;sum&eacute; creation, job interviews, time management, leadership etc.</p>
<p>Overall, I recommend this book to everyone who wants to become successful in the software industry. Success can come to different degrees of course (or not come at all), but if you&#8217;re motivated enough and interested in your work, it is definitely within your grasp. <em>Be goal oriented</em>. It&#8217;s not enough, but it&#8217;s a good start.</p>

</section>

</section>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2010-09-23:/articles/h3rald-81/</id>
    <title>H3RALD.com v8.1 Released</title>
    <published>2010-09-23T12:04:25Z</published>
    <updated>2010-09-24T11:50:12Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/h3rald-81/"/>
    <category term="website" scheme="http://www.h3rald.com/tags/website/"/>
    <category term="webdevelopment" scheme="http://www.h3rald.com/tags/webdevelopment/"/>
    <content type="html">
<![CDATA[

		<section class="section">
<p>Just <a href="/articles/take-back-your-site-with-nanoc">over a year ago</a> I released the 8th version of this web site. The biggest change then was abandoning the Rails-powered <a href="http://wiki.github.com/fdv/typo/">Typo</a> blogging platform in favor of <a href="http://nanoc.stoneship.org/">nanoc</a>, arguably the most versatile static site generator out there.</p>
<p>A year later, I am still very happy with nanoc, hence there&#8217;s no need for another major release. Nonetheless, I decided to improve the site&#8217;s overall design and image, making it (hopefully) easier to use and more pleasant to the eye.</p>
<p>I always had a problem finding the right theme for my web site. I always wanted to find something related to the word <em>herald</em>, so in the last release I went for a herandry-oriented theme. For this release, I decided to go for a newspaper-style layout: after all, the word <em>herald</em> is often used in newspaper titles, and I picked the name &#8220;h3rald&#8221; after the <a href="http://global.nytimes.com/?iht">International Herald Tribune</a>.</p>
<p>Also, I was desperate to try out the new features offered by HTML5 and CSS3, and a newspaper layout seemed a good excuse to use columns.</p>
<section class="section">
<header><h1 id="h_1">Browser Compatibility</h1></header>
<p>Although I shouldn&#8217;t really say this, the site is meant to be viewed with a WebKit-based browser, really. It works in other (modern) browsers (read: no IE6), and it degrades more or less gracefully if a particular feature is not supported.</p>
<p>That being said:</p>
<ul>
	<li>IE7 and IE8 just barely render it (Javascript is used to &#8220;patch&#8221; the <span class="caps">DOM</span> with the new HTML5 elements)</li>
	<li>Firefox 3+ renders pretty much everything right.</li>
	<li>Safari and Chrome render the site as it is actually meant to be rendered</li>
</ul>
<p>Nobody ever died from not being able to see CSS3 rounded corners anyhow. The most important thing about this site is its content, and I made sure that whatever browser you&#8217;re using you can still read it.</p>

</section>
<section class="section">
<header><h1 id="h_2">Columns and hyphenation</h1></header>
<p>As I previously stated, I couldn&#8217;t wait to try out CSS3 columns so I kinda went crazy on the home page, but just there. Some may argue that they are not suitable for web use of course, but I think they contribute to give the site layout a unique feeling.</p>
<p>The problem with having columns is of course text alignment: justified text looks good, but unless you hyphenate text properly it shows a lot of blank space. Luckily, I discovered <a href="http://code.google.com/p/hyphenator/">hyphenator.js</a>, which solved the problem nicely.</p>

</section>
<section class="section">
<header><h1 id="h_3">CSS and layout improvements</h1></header>
<p>I made a point out of improving the old stylesheet to make the site easier to read and generally prettier. Beauty is in the eye of the beholder, but still, I think the new stylesheet brings some improvements, especially concerning text (the <a href="http://scripts.sil.org/gentium">Gentium</a> font is used throughout the site) and syntax highlighting.</p>
<p>Moreover, I worked on streamlining navigations across different sections of the site, in particular on article pages:</p>
<p><img src="/img/pictures/h3rald_81_article.png" alt="" /></p>

</section>
<section class="section">
<header><h1 id="h_4">Under the hood</h1></header>
<p>Besides appearence, the new site also features some improvements in its underlying business logic. In particular:</p>
<ul>
	<li>Better nanoc <a href="http://github.com/h3rald/h3rald/blob/master/Rules">Rules</a></li>
	<li>Improved <a href="/glyph/">Glyph</a> integration, by extending nanoc <a href="http://github.com/h3rald/h3rald/blob/master/lib/glyph_context.rb">RuleContext</a></li>
	<li>Minor updates to the custom <a href="http://github.com/h3rald/h3rald/blob/master/tasks/site.rake">Rake tasks</a></li>
	<li><a href="http://disqus.com/overview/">Disqus</a> comments</li>
</ul>

</section>

</section>]]>
    </content>
  </entry>
</feed>

