<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>http://www.h3rald.com/</id>
  <title>H3RALD - Tag 'software' (Atom Feed)</title>
  <updated>2011-07-30T22:07:53Z</updated>
  <link rel="alternate" href="http://www.h3rald.com"/>
  <link rel="self" href="http://www.h3rald.com/tags/software/atom/"/>
  <author>
    <name>Fabio Cevasco</name>
    <uri>http://www.h3rald.com</uri>
  </author>
  <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:56Z</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-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:36Z</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,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:35Z</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-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:26Z</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-04-25:/articles/succeeding-with-agile-review/</id>
    <title>Book Review: Succeeding with Agile</title>
    <published>2010-04-25T12:16:28Z</published>
    <updated>2011-03-27T11:41:33Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/succeeding-with-agile-review/"/>
    <category term="review" scheme="http://www.h3rald.com/tags/review/"/>
    <category term="productivity" scheme="http://www.h3rald.com/tags/productivity/"/>
    <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">
<blockquote>
<p>&#8220;This is not a book for those who are completely new to <em>Scrum</em> or <em>agile</em>. There are other books, classes, and even websites for that. If you are completely new to <em>Scrum</em>, start with one of those.&#8221;</p>
</blockquote>
<p style="padding-left:5em;">&#8212; Mike Cohn, <em>Succeeding with Agile</em></p>
<p>Great. That&#8217;s just great. Good job I started with the <em>Introduction</em> first, otherwise the first chapters of this book would have been way too overwhelming!</p>
<p><a href="http://www.succeedingwithagile.com/"><em>Succeeding with Agile</em></a> is a book that <em>doesn&#8217;t</em> teach you about <em>Scrum</em> or <em>agile</em> methodologies, it won&#8217;t give you a definition of ScrumMaster, sprint, or backlog&#8230; instead, it takes all that for granted and teaches how to pragmatically adopt &#8212; or better, <acronym title="Awareness, Desire, Ability, Promotion, Transfer"><span class="caps">ADAPT</span></acronym> to &#8212; <em>Scrum</em>, in the context of yourself, your team, and even your entire organization.</p>
<blockquote>
<p>&#8220;[&#8230;] this book draws on my experience with <em>Scrum</em> over the past 15 years, but especialle the last 4. For the last 4 years, every evening after I spent the day with one of my clients, I would go back to my hotel room and make notes about problems they were facing, the question they asked, and the advice I gave.&#8221;</p>
</blockquote>
<p>Indeed, this book is a gold mine of information, anecdotes, tips and tricks about everything you could possibly want to know about making <em>Scrum</em> work, at any level. If you have some knowledge about <em>agile</em> development you definitely have some questions: <em>will it work?</em> &#8230; <em>is it really more productive?</em> &#8230; <em>how can I make my boss understant this?</em>. This book has all the answers you need. Most definitely, it also answer questions you didn&#8217;t think of.</p>
<p>If you don&#8217;t know what all this is about, then you&#8217;d better do your homework first:</p>
<ul>
	<li><a href="http://www.mountaingoatsoftware.com/topics/scrum">Introduction to <em>Scrum</em> &#8211; An Agile Process</a></li>
	<li><a href="http://en.wikipedia.org/wiki/_Scrum__(development)"><em>Scrum</em> (Wikipedia Page)</a></li>
	<li><a href="http://www.scrumalliance.org/"><em>Scrum</em> Alliance</a></li>
	<li><a href="http://www.scrum.org/"><em>Scrum</em>.org</a></li>
</ul>

<section class="section">
<header><h1 id="h_1">Overview</h1></header>
<img src="/img/pictures/succeeding-with-agile.jpg" style="float:left;" />
<p>The book is organized into five parts of different length, ranging from 20 to over 100 pages. If you read the book from the start till the very end, you&#8217;ll notice that the start of each part is like a new milestone in <em>Scrum</em> adoption: first the author makes sure that <em>you</em> are prepared (Part 1), then moves on to deal with individuals and initial resistance (Part 2), then teams (Part 3) and finally the whole organization (Part 4), until you can finally taste the fruits of you labor (Part 5).</p>
<p>In a way, you may well want to carry this book in your briefcase every day you go to work, and read it bit by bit, as you make progress in your quest for <em>Scrum</em> adoption.</p>

	<section class="section">
<header><h1 id="h_2">Part I: Getting Started</h1></header>
<p>Part I is about making sure you know <em>why</em> becoming gile is important and beneficial to you and your work environment. It will teach you how to promote <em>Scrum</em>, its advantages and challenges, and the different ways to go about it: Start Small or Go All In? Stealth or Public Display? Things like that. Pointless theory? Not really: everything is well documented, with success stories to support one way or the other.</p>

</section>	 

	<section class="section">
<header><h1 id="h_3">Part II: Individuals</h1></header>
<p>This part was very interesting from a psychological point of view: it deals with individuals and their possible reactions to becoming <em>agile</em>. You&#8217;ll meet <em>skeptics</em>, <em>followers</em>, <em>saboteurs</em> and <em>diehards</em> &#8212; no hope? Well, of course not: you&#8217;ll learn how to deal with each one of them in the best way possible. This part will also introduce you to new roles and responsabilities related to <em>Scrum</em>.</p>

</section> 

	<section class="section">
<header><h1 id="h_4">Part III: Teams</h1></header>
<p>Up next, Teams. You&#8217;re no longer dealing with single-minded individuals, but with more complex groups. New challenges emerge, mostly related to communication and people interactions. I particularly enjoyed <strong>Chapter 13 &#8212; The Product Backlog</strong>, which provides invaluable insights on this important everyday tool. <strong>Chapter 15 &#8212; Planning</strong> is another interesting read: it teaches you a lot about planning vs. estimating, and coming to compromises to meet deadlines.</p>

</section> 

	<section class="section">
<header><h1 id="h_5">Part IV: The Organization</h1></header>
<p>If you made it up to here, then you&#8217;re nearly done. You probably know most of the tricks by now, but there&#8217;s still a lot to learn. <strong>Chapter 17 &#8212; Scaling <em>Scrum</em></strong> is definitely worth reading, even just for the analysis between <em>formal</em> and <em>informal communities</em>, while <strong>Chapter 19 &#8212;Cohexisting with Other Approaches</strong> almost feels heretical at times: mixing <em>Scrum</em> with Waterfall? Is that even conceivable? Yes. Sometimes it&#8217;s the only way, especially when you have to deal with compliance to standards like ISO9001. Once again, the author has a nice success story on how a company passed an ISO9001 audit by providing documentation in form of photocopied notes and by adding a single failing test to persuade the auditor that the automated test suite was not rigged. Priceless.</p>

</section> 

	<section class="section">
<header><h1 id="h_6">Part V: Next Steps</h1></header>
<p>Only two chapters in this part of the book, which mainly deals with (self) assessment and progress analysis. Still worth a read, but you can safely leave it out for when you succeeded with <em>agile</em>.</p>

</section>

</section> 

<section class="section">
<header><h1 id="h_7">Technical Analysis</h1></header>
<p>I&#8217;m not exaggerating when I say that this is <em>by far</em> the best book I&#8217;ve read in the past few years when it comes to the way it is organized. Start by reading the <a href="http://my.safaribooksonline.com/9780321660534?portal=informit">table of contents</a>: if you take each chapter out and make a bulletted list of each section you&#8217;ll end up with a handy (and free!) cheat sheet on how to promote and adopt Agile methodologies.</p>
<p>This doesn&#8217;t mean the book isn&#8217;t a worthwhile read, but rather that it can also be used as a reference when needed.</p>

<section class="section">
<header><h1 id="h_8">Formatting and Readability</h1></header>
<p>From a technical writing point of view, this book is spotless. I should keep it on my desk to remind me how technical documentation should be written, except that&#8230; it&#8217;s not a technical manual of course. But the formatting and the way content is laid out can make the most skilled technical writer very jealous: there&#8217;s never a huge blob of boring text, never a series of pointless pictures: Mike Cohn (or his editors) did a terrific job composing this book.</p>
<p>You can start reading it from any point and it still makes sense, diagrams are simple and clear, and yet extremely useful, and so are the reference tables and spreadsheets. They never hurt, they are always in the right place, at the right time. And bold text is aptly used at the start of list items, so that even if you skim through the key concepts will still make it to your brain. Excellent.</p>

</section>

<section class="section">
<header><h1 id="h_9">Style and Contents</h1></header>
<p>Reading this book is like listening to a seminar hold by some charismatic icon like <a href="http://en.wikipedia.org/wiki/David_Allen_(author)">David Allen</a> or <a href="http://en.wikipedia.org/wiki/JoAnn_Hackos">JoAnn Hackos</a>: you never get bored, and you constantly learn something. Mike&#8217;s informal and conversational style is one of the main reasons why you should read this book instead of others on the subject: he is a great communicator, and he knows how to make his point across.</p>
<p>As an added value, Mike also uses two types of <em>boxes</em> throughout the book:</p>
<ul>
	<li><strong>Things to try now</strong> &#8212; Whenever a new strategy or practice is introduced, you&#8217;ll find one of these boxes containing a bulleted list. <em>&#8220;Commit to running the next two or three sprints without any overtime&#8221;</em>, &#8220;Do you understand what motivates every other person on your team? If not, find out. How? Ask them.&#8221;, &#8230; these are just examples of some of the author&#8217;s reccommendations to put you in the right track.</li>
	<li><strong>Objection</strong> &#8212; Either actual quotes from customers and employees, or possible statements which may come out throughout the process of adopting <em>Scrum</em>. Things like <em>&#8220;If the product includes less than what we&#8217;ve planned, no one will buy it&#8221;</em>, or <em>&#8220;My team won&#8217;t self organize; team members are too passive and look to me to lead&#8221;</em>, &#8230; of course, what makes these objection boxes valuable is not the statement themselves, but the tips on how what to do about them. There&#8217;s not a single one left unanswered: you really feel you&#8217;re covered in any situation.</li>
</ul>

</section>

</section>

<section class="section">
<header><h1 id="h_10">Final Thoughts</h1></header>
<p>I really enjoyed this book. It took me ages to read it, not only because it&#8217;s quite long (450 pages), but also because it&#8217;s very dense of information. Another author could have made it three times longer, but I was glad Mike didn&#8217;t. I&#8217;m pretty certain I&#8217;ll keep it near me and read bits from it when I need to: it&#8217;s pretty much the Bible of <em>Scrum</em> adoption.</p>
<p>What&#8217;s wrong with it then? Not much. Perhaps the only thing I really missed was an introductory 50-page-chapter on <em>Scrum</em> and <em>agile</em>. I know this is not meant to be a book for beginners, but some basic glossary or <em>Scrum</em> cheat sheet would have made it accessible to an even wider audience, at virtually no cost for the author or the readers, who could have just skipped that part.</p>
<p>Anyhow, I give it a 9 out of 10.</p>

</section>

</section>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2009-11-05:/articles/journotwit-review/</id>
    <title>JournoTwit - The best way to organize your tweets</title>
    <published>2009-11-05T15:19:17Z</published>
    <updated>2009-11-05T16:26:30Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/journotwit-review/"/>
    <category term="review" scheme="http://www.h3rald.com/tags/review/"/>
    <category term="web20" scheme="http://www.h3rald.com/tags/web20/"/>
    <category term="internet" scheme="http://www.h3rald.com/tags/internet/"/>
    <category term="software" scheme="http://www.h3rald.com/tags/software/"/>
    <content type="html">
<![CDATA[
<p>Since I started using <a href="http://www.twitter.com">Twitter</a> on a regular basis, I felt overwhelmed by the endless stream of data generated by the people I was following.</p>
<p>The official Twitter page quickly became inadequate to manage my tweets, so I began to search for an alternative through the myriad of Twitter clients available out there, both web and desktop based. After trying out a few desktop clients, I decided to restrict the search to web clients only: between work and home, I may use up to 4 different computers and 3 different operating system, and I really didn&#8217;t fancy the idea of keeping the <em>same</em> client up-to-date everywhere &#8212; even if such client existed.</p>
<p>Over the past months I tried dozens of different web-based Twitter clients, and narrowed the list of <em>must-have</em> features to the following:</p>
<ul>
	<li>The interface should be simple to use and not too cluttered.</li>
	<li>I should be able to categorize tweets in columns (&agrave; la TweetDeck).</li>
	<li>I should be able to know, when visiting the site, how many <em>new</em> tweets I have to go through.</li>
	<li>I should be able to mark tweets as read.</li>
	<li>It should display media files (at least pictures) inline with the tweets.</li>
	<li>The interface should provide all the most common twitter actions like reply, retweet, follow/unfollow, shorten url, upload pictures etc. etc.</li>
</ul>
<p>The good news is that I found at least <em>one</em> web-based client able to do all this: <a href="http://www.journotwit.com">JournoTwit</a>.</p>
<h3>Introducing JournoTwit</h3>
<p>JournoTwit was born &ndash; as many software projects &ndash; to scratch an itch:</p>
<blockquote>
<p>Probably the last thing anyone was expecting me to do &mdash; even myself, was to create my own twitter client. However, I&#8217;ve been a little fed up with not having the features I wanted and running 5 or 6 accounts, I was getting annoyed at using several different applications just to have them logged in concurrently. [&#8230;] In under 24 hours I put together a twitter client that functioned enough for me to call it my one and only. A few more days and I added in enough features that I felt it was good enough for public consumption. It is however, not perfect and I have plenty of improvements on my to do list for it.</p>
</blockquote>
<p style="padding-left:3em;"><cite><a href="http://www.spodesabode.com/discussion/280/journotwit-the-twitter-client-thats-not-just-for-journalists/">JournoTwit&#8217;s introductory post</a></cite> by Andrew Spode Miller (<a href="http://twitter.com/spode">@spode</a>)</p>
<p>After months of <em>public consumption</em>, JournoTwit became a feature-packed Twitter client able to compete with a lot of mainstream alternatives &ndash; albeit remaining always relatively unknown to the masses. You can call it a <em>niche</em> Twitter client, able to satisfy a few basic needs:</p>
<ul>
	<li>The ability to manage multiple Twitter accounts at once.</li>
	<li>The ability to categorize all incoming tweets automatically, according to the type of information within them.</li>
	<li>The ability to keep track of unread tweets.</li>
</ul>
<p>These three features alone were enough to make JournoTwit my one and only Twitter client. And no, it&#8217;s not only for journalists and writers.</p>
<h3>Interface overview</h3>
<p>After logging in, JournoTwit looks like this:</p>
<p><img src="/img/pictures/journotwit/interface.png" alt="" /></p>
<p><b>Note:</b> I am using the <em> <a href="http://www.journotwit.com/edge/">edge</a> </em> version of JournoTwit, a sort of development snapshot with the latest features.</p>
<p>At the top, some more-or-less intuitive icons allow you to perform all the most common <em>global</em> actions:</p>
<ul>
	<li>Tweet</li>
	<li>Manual refresh</li>
	<li>Mark all columns as read</li>
	<li>Add new columns</li>
	<li>Quick search</li>
	<li>Edit settings</li>
	<li>Logout</li>
</ul>
<p>Next to this global toolbar, there&#8217;s a list of links, each corresponding to a column. Clicking a link toggles the visibility of the corresponding column.</p>
<p>In each column, tweets are displayed in different column according to their state:</p>
<ul>
	<li>Read</li>
	<li>Unread</li>
	<li>Selected</li>
</ul>
<p>You can select one tweet at a time by clicking the <strong>+</strong> icon. This toggles the tweet-specific actions:</p>
<ul>
	<li>Reply</li>
	<li>Send a direct message</li>
	<li>Save as favorite</li>
	<li>Retweet</li>
	<li>Translate</li>
</ul>
<p>Pretty intuitive and easy to use, so far.</p>
<h3>Default columns</h3>
<p>When you login, you&#8217;ll notice that all your tweets are <em>not</em> presented in the traditional, disorganized single-column stream layout. Instead, they are <em>sorted automatically</em> into different columns, according to their type:</p>
<dl>
	<dt>My Feed</dt>
	<dd>All the tweets <em>you</em> sent. By default, this column is minimized.</dd>
	<dt>No-Mention</dt>
	<dd>All tweets containing your username without the &#8220;@&#8221;, i.e. every time someone mentions you sneakily, without sending you a reply.</dd>
	<dt>Messages</dt>
	<dd>All the direct messages you sent and received.</dd>
	<dt>Mentions</dt>
	<dd>All the tweets containing your twitter username (with &#8220;@&#8221;), such as replies to your tweets.</dd>
	<dt>Statuses</dt>
	<dd>All the tweets posted by people you follow that do not contain any link or cannot be categorized through other columns.</dd>
	<dt>News</dt>
	<dd>All the tweets posted by people you follow containing links to articles or non-multimedia web pages.</dd>
	<dt>Retweets</dt>
	<dd>All the retweets posted by people you follow.</dd>
	<dt>Visual</dt>
	<dd>All the tweets posted by people you follow containing links to pictures or videos. Where possible, media is displayed inside the tweet.</dd>
	<dt>Audio</dt>
	<dd>Same as above, but for audio items.</dd>
	<dt>Chatter</dt>
	<dd>Attempts to collect all conversations involving you or people you follow.</dd>
</dl>
<p>Surprisingly, these default columns are enough to make your Twitter experience easier and more manageable, without configure a single setting. They&#8217;re obviously not perfect: some images are not resolved automatically, for example, but it works well otherwise.</p>
<p>Still this may not be enough for your needs or maybe simply not the right thing. No problem: JournoTwit is extremely flexible when it comes to organizing and sorting out your tweets.</p>
<h3>Adding new columns</h3>
<p>All columns except for <em>Mentions</em> and <em>Messages</em> can be modified as you see fit. These two columns cannot be modified simply because there&#8217;s nothing you <em>need</em> to modify it, if you think about it. But they can be deleted, of course (and re-created in a blink, if you delete them by mistake).</p>
<p>Let&#8217;s go through the slightly geeky process of creating a column.</p>
<p>When you click the <b>Add New Columns</b> icon on the top-left corner you&#8217;ll be prompted to further clarify whether you want to add a&#8230;</p>
<ul>
	<li>Set of Columns: i.e. the default columns provided by journotwit <em>or</em> a single column containing all the tweets. Useful if you mess things up and you want to start over again.</li>
	<li>Preset Column: choose from many different columns according to your needs, from different tweet types to memes (#followfriday, #musicmonday, etc.).</li>
	<li>Custom Column: create your own personal column, according to your specific needs.</li>
</ul>
<p>Because the overwhelming majority of my readers is composed by geeks, I&#8217;ll just describe how to create a custom column, so that you can fully understand the power of this tool, in the right hands.</p>
<h3>Adding a custom column</h3>
<p style="float:right;"><img src="/img/pictures/journotwit/custom_column.png" alt="" /></p>
<p>The creation of a custom column doesn&#8217;t take long, but there are quite a few things you can configure. First off, you have to specify whether you want the column to collect <em>local</em> or <em>global</em> tweets: local means the people you follow, while global means everyone on the planet. Simple enough.</p>
<p>Then comes the juicy geeky part: search terms and tags. Simply type a valid <a href="http://search.twitter.com/operators">Twitter Search query</a> in the textbox, so something like this:</p>
<p><code>from:jonobacon OR #ubuntu -jaunty</code></p>
<p>&#8230;will hopefully fetch all tweets posted by <a href="http://www.twitter.com/jonobacon">@jonobacon</a> or tweets about Ubuntu, but not related to the Jaunty Jackalope release. You can also add more text box and thus perform more search queries within the same column.</p>
<p>Then you can filter by tweet type, enabling or disabling Statuses, Visual, Links, Audio, ReTweets and Chatter. Useful to remove the noise (if you follow <a href="http://www.twitter.com/brentspiner">@brentspiner</a>, make sure you disable <em>ReTweets</em>&#8230;).</p>
<p>Finally, you only have to configure a few more settings:</p>
<ul>
	<li>Whether you want to be alerted with a <em>beep</em> when there are new tweets in this column.</li>
	<li>Whether you want the column to display tweets, a tag cloud or even an image slideshow.</li>
	<li>The name of the column.</li>
</ul>
<p>That&#8217;s all. Simple enough. As a side note, the &#8220;No-Mention&#8221; column is nothing but a custom column in disguise: if you try to edit it, you&#8217;ll see it&#8217;s nothing but a search for &#8220;<em>username</em> -<em>@username</em> -from:<em>username</em>&#8221;.</p>
<h3>Other features and advanced settings</h3>
<p>For the tweakers, JournoTwit also exposes the a set of global settings you can modify to enhance your experience or disable annoying behaviors (depends how you look at it):</p>
<h4>Behavior</h4>
<ul>
	<li>Unhide column when new tweets arrive? (default: yes)</li>
	<li>Hide columns on Mark as Read? (default: yes)</li>
	<li>Play alert sounds? (default: yes)</li>
	<li>Animate when new items arrive? (default: yes)</li>
	<li>Default #hashtags and search bar to a local search? (default: no)</li>
	<li>Ignore Tag Coulds when marking all as read? (default: yes)</li>
	<li>Ignore Slide Shows when marking all as read? (default: yes)</li>
	<li>Warn when deleting columns? (default: yes)</li>
	<li>Automatically translate tweets using Google Translate? (default: no)</li>
	<li>Show &#8220;Did You Know?&#8221; messages on refresh? (default: yes)</li>
	<li>Slide show transition time(s) (default: 5)</li>
</ul>
<h4>Display Adjustment</h4>
<p>If you are unsatisfied by JournoTwit&#8217;s default look and feel, you can change the fond size, the color theme (there are 18 possible choices) and even match the color of the icons with the current theme.</p>
<h4>Black Listing</h4>
<p>Straight from the contextual help:</p>
<blockquote>
<p>&#8220;Here you globally black list a #hashtag, such as #microsoft, or a search phrase such as &#8220;Windows 7&#8221;. Remember to separate them with a space and that you can block on a per column basis too.&quot;</p>
</blockquote>
<p>This is just what you need when you want to filter out pointless tweets. Use with care though!</p>
<h3>Conclusion</h3>
<p>Maybe it&#8217;s just me being a geek, but I think JournoTwit nailed it when it comes to making Twitter more productive: everything <em>just works, and fast</em>, unlike some of its more feature-boasting competitors. I have been using it on a daily basis for weeks, and I&#8217;ve never missed a single tweet since (unless <em>I explicitly wanted to do so</em>).</p>
<p>That being said, there are a few small features I&#8217;d like to see:</p>
<ul>
	<li>I&#8217;d like to be able to mark <em>single tweets</em>, not entire columns, as read. In this way, when I go on vacation and come back, I can catch up with unread tweets more gradually, like I do with Google Reader.</li>
	<li>I&#8217;d like to use shortcut keys to navigate the interface, like with Google Reader.</li>
	<li>I&#8217;d like to configure tweets so that they only show up in one column, not in more than one (for example in Chatter, My Feed, and Mentions at the same time).</li>
	<li>Support for Twitter Lists&#8230;</li>
</ul>
<p>I already told <a href="http://twitter.com/spode">@spode</a> about some of these, and he said he&#8217;ll look into it, we&#8217;ll see what happens. Anyhow, just <a href="http://www.journotwit.com">give it a try</a>, and see if you like it!</p>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2007-11-24:/articles/komodo-edit-review/</id>
    <title>A closer look at Komodo Edit</title>
    <published>2007-11-25T06:23:00Z</published>
    <updated>2010-09-23T11:56:32Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/komodo-edit-review/"/>
    <category term="review" scheme="http://www.h3rald.com/tags/review/"/>
    <category term="programming" scheme="http://www.h3rald.com/tags/programming/"/>
    <category term="software" scheme="http://www.h3rald.com/tags/software/"/>
    <content type="html">
<![CDATA[
<p><a href="http://digg.com/programming/A_closer_look_at_Komodo_Edit"><br />
<img src="http://digg.com/img/badges/180x35-digg-button.png" width="180" height="35" alt="Digg!" /><br />
</a></p>
<p><em>What&#8217;s your favorite code editor?</em></p>
<p>This is a common question which still keeps popping up on community boards, mailing lists, comments, etc. Every programmer who writes code in some programming language normally has an editor of choice. Being realistic, most of the times it&#8217;s not only one program but several, depending on the language and on the features needed at the time.<br />
Yes, great, but how do you choose your favorite editor?<br />
By trying a lot of them of course: that&#8217;s what I&#8217;ve been doing since I started programming. Lately I&#8217;ve become fond of <a href="http://www.vim.org">Vim</a> (or better, gVim), although I have a few other editors I may recommend, e.g.:</p>
<ul>
	<li><a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a></li>
	<li><a href="http://intype.info/home/index.php">Intype</a></li>
	<li><a href="http://scintilla.sourceforge.net/SciTE.html">SciTE</a></li>
</ul>
<p>Recently, however, I came across my <em>n^th^</em> &#8220;what&#8217;s your favorite editor&#8221; thread and someone mentioned <a href="http://www.activestate.com/Products/komodo_edit/">Komodo Edit</a>. I knew of it already, actually, but I never had a chance to give it a <em>proper</em> try. <br />
ActiveState is well known mainly for two things:</p>
<ul>
	<li>Their effort in offering a lot of commercial, windows-based Perl libraries</li>
	<li>Their commercial <span class="caps">IDE</span>, Komodo <span class="caps">IDE</span>, which I personally tried quite a long time ago</li>
</ul>
<p>The problems of Komodo <span class="caps">IDE</span> are foundamentally two:</p>
<ul>
	<li>It costs money &#8211; this is not great in a world where Eclipse and Netbeans are free</li>
	<li>It is an <span class="caps">IDE</span> &#8211; which normally means <em>&#8216;heavy as hell&#8217;</em>.</li>
</ul>
<p>It&#8217;s a matter of taste and needs: some people feel more confortable with using an editor for certain tasks, while sometimes an <span class="caps">IDE</span> may be the best solution, despite its potential slowness and bulk.</p>
<p>Komodo Edit solves the above-mentioned problems because:</p>
<ul>
	<li>It&#8217;s free</li>
	<li>It&#8217;s an editor</li>
</ul>
<p>Actually I wouldn&#8217;t call it an editor, because it offers quite a lot of features which are normally absent in editors &#8212; it&#8217;s something in-between, which definitely deserves a try.</p>
<h2>User interface</h2>
<p>Komodo Edit&#8217;s interface is one of the most clear I&#8217;ve ever come across. It is organized in four main areas plus the top menu and toolbar (which only has the buttons you <span class="caps">REALLY</span> need, unlike Notepad++&#8217;s 31-button-bar).</p>
<p><img src="/files/komodo_main.png" alt="" /></p>
<p>The central area is for editing, the left pane is for the Project browser, the right one is for the Toolbox and the bottom pane is for command output. Luckily enough, a set of handy little buttons is provided in the toolbar to show and hide each pane. I normally only use the Project Browser and the main editing area, leaving the Toolbox and Command Output panes hidden, but that&#8217;s up to you really.</p>
<p style="float:left;"><img src="/files/komodo_show-hide_pane.png" alt="" /></p>
<p>Komodo Edit allows symultaneous editing of multiple documents, which means that it has tabs like most of the best editors out there. Furthermore, it is possible to have Komodo re-open the files edited in the last editing session, saving you a lot of time. Granted, a lot of <span class="caps">IDE</span> do, but this is <strong><span class="caps">NOT</span></strong> an <span class="caps">IDE</span>, remember? It&#8217;s an <em>editor</em>, or at least it is advertised as such.</p>
<p>In reality it has <em>most</em> of the power of a full-blown <span class="caps">IDE</span> though normally remaining under the 60K memory usage (out of 2GB of total <span class="caps">RAM</span>) &#8212; which is not that bad, considering what Eclipse and NetBeans need.<br />
Out of all the <a href="http://www.activestate.com/Products/komodo_edit/edit_vs_ide.plex">extra features</a> offered by Komodo <span class="caps">IDE</span>, the only one I truly miss is the Code Browser. Other than that, it quickly became my editor/<span class="caps">IDE</span> of choice (when gVim isn&#8217;t looking, of course&#8230;)</p>
<p>Lets find out why&#8230;</p>
<h2>Editing features</h2>
<p>Komodo Edit comes with all the editing features of ever average editor, so <em>&#8220;[&#8230;] Code commenting, auto-indent and outdent, block selection, incremental search, reflow paragraph, join lines, enter next character as raw literal, repeat next keystroke and clean line endings on &#8220;save&#8221;.&quot;</em>, it uses Scintilla as main editing component, which makes it a close relative of Notepad++, Notepad2 and of course SciTE when it comes to understanding languages and syntax highlighting.</p>
<p>This is good, of course, as Scintilla is an excellent editing component, but &#8211; I have to say this &#8211; not as good as Vim when it comes to syntax highlighting (nothing is as good as Vim though, so I can&#8217;t really complain!).<br />
As you can see from the screenshot I included earlier on, it is possible to change the default black-on-white color scheme to something more stimulating and energy-saving. This doesn&#8217;t mean I have to manually re-set the color of each element, it actually comes with a black-background scheme, which is handy.</p>
<h3>Supported Languages &amp; Syntax Highlighting</h3>
<p>Komodo Edit supports quite a few programming languages, which means it can recognize the most common ones (C, C++, Java, <span class="caps">PHP</span>, Python, Ruby, Perl) but it also smart enough to notice framework-specific syntaxes like Smarty, Django or <span class="caps">RHTML</span>.<br />
Like every scintilla-based editors, it sports a nice <span class="caps">HTML</span> multi-highlighter which allows you to keep putting all the Javascript, <span class="caps">CSS</span> and server-side scripting into the same file, <span class="caps">GREAT</span>! No, you probably wouldn&#8217;t want to do that, but it&#8217;s a good thing to have.</p>
<h3>Auto-completion</h3>
<p>What makes this editor a really handy tool is its auto-completion capabilities. Why? well, because it supports:</p>
<ul>
	<li>Ruby: require, class modules (on . and ::), class variables and methods, method calltips.</li>
	<li>Python</li>
	<li>Perl</li>
	<li><span class="caps">PHP</span></li>
	<li><span class="caps">XSLT</span></li>
	<li><span class="caps">XML</span></li>
	<li>Tcl</li>
</ul>
<p>Why is this so special? Well, because if you want this you normally need an <span class="caps">IDE</span>, and if you want it for Ruby <span class="caps">AND</span> Python <span class="caps">AND</span> Perl your choices are very limited. <br />
I played with the Ruby auto-completion features quite a bit, and I&#8217;m actually really impressed.</p>
<p style="float:right;"><img src="/files/komodo_auto-completion.png" alt="" /></p>
<p>It can suggest what to write through calltips after a <code>require</code> directive, after a . and a ::, and hitting CTRL+SPACE (or just tab if you configure the right option) will auto-complete what you&#8217;re writing, be it a language keyword, a variable of any kind or a method. Additionally, it comes with &#8220;soft characters support&#8221;, which means it will try to match ( [ { when possible, allowing you to <em>write over</em> the completed character if you want to.</p>
<h3>Syntax Checking, Vi/Emacs key bindings and code folding</h3>
<p>The heading is almost self-explanatory here: Komodo Edit supports code folding (you can even chose the folding chracters!) for all its supported languages, syntax checking (it can detect and display errors before running the script, very useful in Ruby, and hard to find in other editors) and Vi/Emacs key bindings. <br />
It also offers &#8220;vi emulation&#8221;, which is constantly improving through every release &#8211; so you won&#8217;t forget Vim&#8217;s keys when I don&#8217;t use it: very nice, and again, hard to find in other editors, nevermind IDEs!</p>
<h2>Projects and Tools</h2>
<p style="float:right;"><img src="/files/komodo_toolbox.png" alt="" /></p>
<p>The Project Browser and Toolbox are two features which are normally presents in IDEs and which are normally not found in editors. Granted, some editors like <a href="http://www.pspad.com/en/">PSPad</a> do indeed have &#8220;projects&#8221;, but most of the others don&#8217;t. A <em>project</em> in Komodo Edit is normally composed by:</p>
<ul>
	<li>Some <em>Live Folders</em> including all the source files of the application you&#8217;re developing</li>
	<li>An optional set of tools, commands, snippets and other goodies which may help you coding that particular application.</li>
</ul>
<p>It is possible to create these tools by clicking the <strong>Add Item to current project</strong> button in the Projects toolbar or by clicking the <strong>Add Item to Toolbox</strong> button just over the toolbox. <br />
Either way, you can choose among the following:</p>
<h4>File/Remote File</h4>
<p>Add a file on your local machine or a remote file hosted on a server you configured via <strong>Edit &gt; Preferences &gt; Servers</strong>. Supported protocols are: <span class="caps">FTP</span>,<span class="caps">FTPS</span>, <span class="caps">SFTP</span>, <span class="caps">SCP</span>.</p>
<h4>Folder</h4>
<p>This will <em>not</em> link to a folder and import local files in Komodo, instead, it will create a container for other tools, not for local files.</p>
<h4>Live Folder</h4>
<p>On the contrary, a live folder links to an actual folder on your machines, and all files and directories inside it are automatically imported. Note that it is possible to choose to include or exclude certain files or directories from being imported by right-clicking the folder and editing its properties.</p>
<h4>Command</h4>
<p>This will create a shortcut to a command to execute. It is possible to specify its parameters, the directory where it will be run, whether its output will be displayed in the Command Output or in a newly-spawned console window, etc. etc.</p>
<h4>Snippet</h4>
<p>TextMate fans will love this. Komodo will let you create a code snippet for later use. Furthermore, it is possible to specify &#8220;tabstops&#8221; to automatically select certain words when tab is pressed (so you can effectively fill in only particular fields of the snippet).</p>
<h4>Template</h4>
<p>A simple but effective way to create code templates.</p>
<h4>Url</h4>
<p>A link which will open a given url.</p>
<h4>Open&#8230; Shortcut</h4>
<p>This will popup an <strong>Open File</strong> dialog in a direcxtory of your choice.</p>
<h4>Macro</h4>
<p>For those who require even more customization, it is also possible to record or code macros in Python or javascript, and then configure their key bindings and triggers.</p>
<h4>Custom Menu/Custom toolbar</h4>
<p>This was really impressive. Sure you can group all your tools in folders in your current project or you can create them in the toolbox to make them available all the time, but it would be cool if <em>the editor itself</em> could make those tools available by default in a toolbar or a menu. Well, that&#8217;s possible: all you need to do is create a new custom menu or toolbar and populate it with your tools by drag and drop. Very, very nice!</p>
<p>This mini-framework to create custom tools can be used to create project templates in a blink. To show this concept, Komodo Edit comes with a Rails template with almost all the tools you need when coding a Ruby on Rails application:</p>
<ul>
	<li>Create/delete database</li>
	<li>Generators</li>
	<li>Migrations</li>
	<li>Run server</li>
	<li>Example view snippets</li>
</ul>
<h2>Conclusion</h2>
<p>Komodo Edit is an interesting editor which offers a lot of features which are normally only available in IDEs at a smaller memory footprint. Granted, when I want to jot something down I still prefer to fire up gVim, but for a serious coding session, Komodo is the right choice.<br />
Its close attention to details and its ease of use make developing an even more pleasant experience, although perhaps there&#8217;s still room for improvement, if you&#8217;re really fussy.</p>
<p>Sometimes when you start getting used of its advanced features, the lack of a code browser seems a real shame, but after all, ActiveState must sell their <span class="caps">IDE</span> to someone at some point!</p>
<p>Another thing which I would have liked is the ability to create new syntax highlighting schemes, which Notepad++ and <span class="caps">VIM</span> both offer. Whydoes it bothers me so much? Well, because I&#8217;d like a <a href="http://textism.com/tools/textile/">Textile</a> syntax highlighting scheme for writing blogs and articles. <span class="caps">VIM</span> and Intype seem to be the only ones which offer it out-of-the-box, but there&#8217;s no trace of it in Komodo Edit.</p>
<p>Actually it is possible to create new syntax highlighting schemes and extend Komodo Edit via <a href="http://community.activestate.com/addons"><span class="caps">XUL</span> extensions</a>, exactly like Firefox. After a closer look, the Django syntax was added in this way.</p>
<p>Unfortunately there aren&#8217;t that many extensions available for Komodo Edit, yet, but the <a href="http://community.activestate.com/">Activestate Community</a> seems very active, so you never know. Additionally, the recently-started <a href="http://www.openkomodo.com/">OpenKomodo</a> is a new project created by ActiveState to &#8220;[&#8230;] create an open source platform for building developer environments. ActiveState has open-sourced elements of Komodo Edit, a free multi-language editor for dynamic languages based on Komodo <span class="caps">IDE</span>, to create the Open Komodo code base&#8221;. A new competitor for Eclipse and Netbeans will be available soon?</p>
<p><a href="http://digg.com/programming/A_closer_look_at_Komodo_Edit"><br />
<img src="http://digg.com/img/badges/180x35-digg-button.png" width="180" height="35" alt="Digg!" /><br />
</a></p>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2007-09-29:/articles/redbook/</id>
    <title>RedBook - A simple Ruby program for your daily logging needs</title>
    <published>2007-09-29T12:05:00Z</published>
    <updated>2009-09-06T18:10:48Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/redbook/"/>
    <category term="ruby" scheme="http://www.h3rald.com/tags/ruby/"/>
    <category term="productivity" scheme="http://www.h3rald.com/tags/productivity/"/>
    <category term="software" scheme="http://www.h3rald.com/tags/software/"/>
    <category term="tools" scheme="http://www.h3rald.com/tags/tools/"/>
    <category term="redbook" scheme="http://www.h3rald.com/tags/redbook/"/>
    <content type="html">
<![CDATA[
<p>Logging your daily activities is important. If you don&#8217;t believe me you&#8217;d better check at least these three posts on LifeHacker, which feature different scripts and applications:</p>
<ul>
	<li><a href="http://lifehacker.com/software/top/geek-to-live--quick+log-your-work-day-189772.php">QuickLogger</a></li>
	<li><a href="http://lifehacker.com/software/windows/log-your-workday-from-the-system-tray-with-life-logger-285602.php">Life Logger</a></li>
	<li><a href="http://lifehacker.com/software/featured-windows-download/log-your-workday-with-quicklogger-2-302932.php">QuickLogger 2</a></li>
</ul>
<p>I had a look at each one of them, and I believe they are quite useful, although I didn&#8217;t really find what I was looking for. Why? Well, for example:</p>
<ul>
	<li>I don&#8217;t believe a <span class="caps">GUI</span> is necessary &#8212; you&#8217;d better off with just a shortcut key or command to run from Launchy or QuickSilver, that&#8217;s much faster.</li>
	<li>They just log timestamped messages on a file, there&#8217;s no real way to search through them and display them except by using a test editor</li>
	<li>They are Windows only &#8212; not that it matters for me, but others may not be happy about it.</li>
</ul>
<p>That&#8217;s why I thought I&#8217;d roll out my own: meet <a href="http://www.assembla.com/space/redbook">RedBook</a>.<br />
Let me say it&#8217;s nothing fancy: I&#8217;m not a full-time programmer but I do like playing with Ruby during my lunch breaks at work, so that&#8217;s why RedBook is just a humble, tiny Ruby script. This automatically makes it cross-platform: you can install Ruby very easily on Linux &amp; alikes, Mac OS X and Windows. Furthermore, if you are on Windows and for some weird reason you don&#8217;t want to install Ruby, you can just try out the packed <span class="caps">EXE</span> file (made with RubyScript2Exe) &#8212; it&#8217;s about 2MB, but you won&#8217;t need anything else.</p>
<h3>How It Works</h3>
<p>The program uses two <span class="caps">YAML</span> files, one for configuration, which must reside in the same directory as redbook.rb (or redboo.exe) and one for the log itself, which you can place anywhere, provided that you edit the configuration file accordingly. For information on how to install RedBook and how to configure it, you can check the manual.html (powered by <a href="http://www.tiddlywiki.com">TiddlyWiki</a>) file provided with the program or <a href="http://redbook.h3rald.com">browse it online</a>.</p>
<p>When started, RedBook will load both the configuration file (config.yml) and <em>the whole log file</em> into memory &#8212; it&#8217;s not a big deal, considering that they are only text files after all. I did a test with a log of quite a few MBs, and it was fine.</p>
<p>You can then start input commands right away, following a few sample rules. RedBook has a (very) rudimentary parser which is able to detect keywords, i.e. alphabetic strings prepended with a colon. RedBook commands look like this:</p>
<ul>
	<li><strong>&#58;log</strong> This message will be logger <strong>&#58;tags</strong> tag1 tag2</li>
	<li><strong>&#58;select</strong> <strong>&#58;last</strong> 15 <strong>&#58;since</strong> January</li>
	<li><strong>&#58;save</strong> /home/h3rald/backup.yml</li>
</ul>
<p>If everything goes OK, RedBook will reply with some sort of response, an acknowledgement, a list of messages, etc.</p>
<p>Simple.</p>
<p>Here&#8217;s basically what the program can do:</p>
<ul>
	<li>Log any message to the main log file. Messages can be tagged with one or more tags and will be automatically timestamped.</li>
	<li>Load/display a list of logged messages on the screen. It is possible to filter messages by specifying a time span, a string to search in the message text, or a list of tags.</li>
	<li>Dump loaded messages to a <span class="caps">TXT</span>, <span class="caps">CSV</span> or <span class="caps">YAML</span> file (you can even backup your log saving it to another <span class="caps">YAML</span> file in this way).</li>
	<li>Calculate the time elapsed between two or more tasks. Time will be displayed in years, months, weeks, days, hours, minutes and/or seconds as necessary.</li>
</ul>
<p>How? Here&#8217;s a short tutorial&#8230;</p>
<h3>A Quick RedBook Tutorial</h3>
<p>Let&#8217;s assume you are able to run RedBook on your system by now (if you can&#8217;t find some of the gems which are required for it, you can download them packed in a <span class="caps">ZIP</span> file from <a href="http://www.assembla.com/spaces/files/redbook">here</a>).</p>
<p>Here&#8217;s what happens when you start the program:</p>
<p><span style="font-family: 'Bitstream Vera Sans Mono', Monaco, 'Courier New'; font-size: 10px"><br />
<del>-</del><br />
RedBook v0.1 &#8211; Copyright &#169; 2007, Fabio Cevasco<br />
<del>-</del><br />
   <span style="color:blue">&gt;&gt;</span> Loading config file&#8230;<br />
   <span style="color:green">&gt;&gt;</span> Config file loaded.<br />
   <span style="color:blue">&gt;&gt;</span> Loading log file&#8230;<br />
   <span style="color:green">&gt;&gt;</span> Log file loaded.<br />
   <span style="color:blue">&gt;&gt;</span> Ready.<br />
<span style="color:red">Red</span>Book &gt;&gt;<br />
</code><br />
</span></p>
<p>Good. Let&#8217;s start logging something then. Just use the <strong>&#58;log</strong> keyword, followed by a message, and then you can also add the <strong>&#58;tags</strong> keyword followed by space-separated tags, like this:</p>
<p><span style="font-family: 'Bitstream Vera Sans Mono', Monaco, 'Courier New'; font-size: 10px"><br />
<span style="color:red">Red</span>Book &gt;&gt; &#58;log My first message &#58;tags test<br />
   <span style="color:green">&gt;&gt;</span> Logged.<br />
<span style="color:red">Red</span>Book &gt;&gt; &#58;log This is another message<br />
   <span style="color:green">&gt;&gt;</span> Logged.<br />
<span style="color:red">Red</span>Book &gt;&gt; &#58;log This is another message &#58;tags test another_test<br />
   <span style="color:green">&gt;&gt;</span> Logged.<br />
</span></p>
<p>Try waiting a few seconds between each message. These three messages will be appended to the log file. You could open it in an editor, but it&#8217;s normally easier to display them directly inside RedBook, like this:</p>
<p><span style="font-family: 'Bitstream Vera Sans Mono', Monaco, 'Courier New'; font-size: 10px"><br />
<span style="color:red">Red</span>Book &gt;&gt; &#58;select<br />
 <span style="color:yellow">1</span> <span style="color:blue">Sat Sep 29 2007 &#8211; 09:09:32 PM</span> My first message <span style="color:cyan">[</span><span style="color:yellow">test</span><span style="color:cyan">]</span><br />
 <span style="color:yellow">2</span> <span style="color:blue">Sat Sep 29 2007 &#8211; 09:10:51 PM</span> This is another message<br />
 <span style="color:yellow">3</span> <span style="color:blue">Sat Sep 29 2007 &#8211; 09:11:45 PM</span> This is another message <span style="color:cyan">[</span><span style="color:yellow">test</span><span style="color:cyan">]</span><span style="color:cyan">[</span><span style="color:yellow">another_test</span><span style="color:cyan">]</span><br />
   <span style="color:green">&gt;&gt;</span> 3 messages loaded.<br />
</span></p>
<p>Easy. What if you have hundreds of messages? Well, the &#58;select operation can take an optional search string, or you can tell RedBook to load only those messages tagged with one or more specific tags, like this:</p>
<p><span style="font-family: 'Bitstream Vera Sans Mono', Monaco, 'Courier New'; font-size: 10px"><br />
<span style="color:red">Red</span>Book &gt;&gt; &#58;select &#58;tags test<br />
 <span style="color:yellow">1</span> <span style="color:blue">Sat Sep 29 2007 &#8211; 09:09:32 PM</span> My first message <span style="color:cyan">[</span><span style="color:yellow">test</span><span style="color:cyan">]</span><br />
  <span style="color:yellow">3</span> <span style="color:blue">Sat Sep 29 2007 &#8211; 09:11:45 PM</span> This is another message <span style="color:cyan">[</span><span style="color:yellow">test</span><span style="color:cyan">]</span><span style="color:cyan">[</span><span style="color:yellow">another_test</span><span style="color:cyan">]</span><br />
    <span style="color:green">&gt;&gt;</span> 2 messages loaded.<br />
</span></p>
<p>Or you can use the &#58;from and/or &#58;to keywords to specify a certain time frame, like this:</p>
<p>&#58;select &#58;tags test <strong>&#58;from ten minutes ago</strong></p>
<p>&#58;select <strong>&#58;from last week &#58;to 2 days ago</strong></p>
<p>RedBook includes a very nice &#8220;natural language date/time parser&#8221;, <a href="http://chronic.rubyforge.org/">Chronic</a> which is able to convert sentences like the following into Ruby Time objects:</p>
<ul>
	<li>6 in the morning</li>
	<li>friday 1pm</li>
	<li>sat 7 in the evening</li>
	<li>today</li>
	<li>yesterday at 4:00</li>
</ul>
<p>It&#8217;s not perfect (and it&#8217;s in pre-alpha as well), but it does the job, for what I can see, and it makes it very easy and fast to specify timeframes.</p>
<p>After executing a &#58;select command, two other operations can be performed on the loaded messages: <strong>&#58;calc</strong> and <strong>&#58;save</strong>.</p>
<p>&#58;calc calculates the exact amount of time elapsed between two or more tasks. Do you remember the numbers on the far left of each message? Think them as temporary IDs for the actual messages, and you can use them to select specific tasks when executing the &#58;calc operation:</p>
<p><span style="font-family: 'Bitstream Vera Sans Mono', Monaco, 'Courier New'; font-size: 10px"><br />
<span style="color:red">Red</span>Book &gt;&gt; &#58;calc 1 3<br />
 <span style="color:yellow">1</span> <span style="color:blue">Sat Sep 29 2007 &#8211; 09:09:32 PM</span> My first message <span style="color:cyan">[</span><span style="color:yellow">test</span><span style="color:cyan">]</span><br />
      <del>-</del> 2 minutes and 13 seconds.<br />
       <span style="color:yellow">3</span> <span style="color:blue">Sat Sep 29 2007 &#8211; 09:11:45 PM</span> This is another message <span style="color:cyan">[</span><span style="color:yellow">test</span><span style="color:cyan">]</span><span style="color:cyan">[</span><span style="color:yellow">another_test</span><span style="color:cyan">]</span><br />
</span></p>
<p>Similarly, if no IDs are specified, &#58;calc calculates the time difference between each message and the previous:</p>
<p><span style="font-family: 'Bitstream Vera Sans Mono', Monaco, 'Courier New'; font-size: 10px"><br />
<span style="color:red">Red</span>Book &gt;&gt; &#58;calc<br />
 <span style="color:yellow">1</span> <span style="color:blue">Sat Sep 29 2007 &#8211; 09:09:32 PM</span> My first message <span style="color:cyan">[</span><span style="color:yellow">test</span><span style="color:cyan">]</span><br /> <br />
      <del>-</del> 1 minute and 19 seconds.<br />      <br />
 <span style="color:yellow">2</span> <span style="color:blue">Sat Sep 29 2007 &#8211; 09:10:51 PM</span> This is another message<br /> <br />
      <del>-</del> 54 seconds.<br />      <br />
 <span style="color:yellow">3</span> <span style="color:blue">Sat Sep 29 2007 &#8211; 09:11:45 PM</span> This is another message <span style="color:cyan">[</span><span style="color:yellow">test</span><span style="color:cyan">]</span><span style="color:cyan">[</span><span style="color:yellow">another_test</span><span style="color:cyan">]</span><br />
 </span></p>
<p>Finally, you can save loaded messages to a <span class="caps">TXT</span>, <span class="caps">YAML</span> or <span class="caps">CSV</span> file, as follows:</p>
<p><span style="font-family: 'Bitstream Vera Sans Mono', Monaco, 'Courier New'; font-size: 10px"><br />
<span style="color:red">Red</span>Book &gt;&gt; &#58;save log.txt<br />
   <span style="color:blue">&gt;&gt;</span> Saving&#8230;<br />
   <span style="color:green">&gt;&gt;</span> Saved dataset to &#8220;log.txt&#8221;<br />
</span><br />
h<br />
If you want to backup your log, you can load all messages and then save them to a <span class="caps">YAML</span> file. Maybe in this case you want to append the <strong>&#58;silent</strong> keyword to the &#58;select command, so that messages won&#8217;t be displayed on the screen.</p>
<h3>Conclusion</h3>
<p>RedBook is just a simple program: it suits my needs for now, but of course there&#8217;s roo for improvement. If you have some useful suggestions, or you want to contribute in some way, feel free to contact me!</p>
<p style="text-align:center;"><a href="http://redbook.h3rald.com">Home Page</a> | <a href="http://code.google.com/p/redbook/">Development</a> | <a href="http://code.google.com/p/redbook/downloads/list">Download</a></p>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2007-09-28:/articles/introducing-redbook/</id>
    <title>Introducing RedBook (and the new Code section)</title>
    <published>2007-09-29T00:12:00Z</published>
    <updated>2009-09-06T18:10:47Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/introducing-redbook/"/>
    <category term="ruby" scheme="http://www.h3rald.com/tags/ruby/"/>
    <category term="productivity" scheme="http://www.h3rald.com/tags/productivity/"/>
    <category term="software" scheme="http://www.h3rald.com/tags/software/"/>
    <category term="tools" scheme="http://www.h3rald.com/tags/tools/"/>
    <category term="redbook" scheme="http://www.h3rald.com/tags/redbook/"/>
    <content type="html">
<![CDATA[
<p>I&#8217;m somehow pleased to announce the opening of a new section on this site. Nothing too big actually, it&#8217;s just a <a href="/code/">page</a> with a few (one for now) brief descriptions of open source programs and scripts I made and I&#8217;d like to share with my readers.</p>
<p>Don&#8217;t expect fancy stuff: (luckily) I don&#8217;t code for a living, I code for pleasure and I code small things. Lately I&#8217;ve been trying to write a small Ruby program able to log my daily activities and also display them in a pleasant enough way, so I started using my lunch breaks at work more constructively and I came up with <a href="/code/">RedBook</a> an interactive command-line program written in Ruby.</p>
<p>Main features:</p>
<ul>
	<li>Log timestamped and <em>tagged</em> messages to a single <span class="caps">YAML</span> file</li>
	<li>Load and display messages containing a certain string, or certain tags or within a time frame.</li>
	<li>Calculate the time elapsed between two or more tasks.</li>
	<li>Export loaded messages to <span class="caps">YAML</span>, <span class="caps">TXT</span> or <span class="caps">CSV</span> format.</li>
</ul>
<p>All done via command line via simple commands:</p>
<p><strong>&#58;log</strong> This is a test message <strong>&#58;tags</strong> test</p>
<p><strong>&#58;load</strong> <strong>&#58;last</strong> 30 <strong>&#58;from</strong> last week</p>
<p><strong>&#58;timecalc</strong> 2 5</p>
<p><strong>&#58;save</strong> test.txt</p>
<p>Thanks to the wonderful <a href="http://chronic.rubyforge.org/">Chronic</a> library, you can specify your time frames using natural language expressions like &#8220;8 in the morning&#8221;, &#8220;this tuesday&#8221;, &#8220;last month&#8221; and so on&#8230;</p>
<p>Here&#8217;s a screenshot showing RedBook in action:</p>
<p><img src="/files/redbook.png" alt="" /></p>
<p>RedBook is of course free, open source software licensed under the terms of the <span class="caps">BSD</span> license. It can be installed on any machine able to run Ruby and there&#8217;s also an <span class="caps">EXE</span> version for the lazy windows folks who don&#8217;t want to install Ruby, packed with <a href="http://www.erikveenstra.nl/rubyscript2exe/index.html">RubyScript2Exe</a>. A more in-depth article explaining how RedBook works <del>will hopefully be completed soon</del> is available <a href="http://www.h3rald.com/articles/redbook">:here</a></p>]]>
    </content>
  </entry>
  <entry>
    <id>tag:www.h3rald.com,2007-06-29:/articles/tweaking-windows-explorer/</id>
    <title>Tweaking Windows Explorer</title>
    <published>2007-06-29T09:28:00Z</published>
    <updated>2009-11-16T15:06:39Z</updated>
    <link rel="alternate" href="http://www.h3rald.com/articles/tweaking-windows-explorer/"/>
    <category term="review" scheme="http://www.h3rald.com/tags/review/"/>
    <category term="software" scheme="http://www.h3rald.com/tags/software/"/>
    <content type="html">
<![CDATA[
<p>If you asked me what file manager I used on Windows, up to a month ago I&#8217;d have answered something like: <a href="http://www.primitus.us/a43/">A43</a> or <a href="http://www.cubicreality.com/">CubicExplorer</a>, for sure <em>anything but Windows Explorer</em>.<br />
Well, it turns out that I had to change my mind after all&#8230;</p>
<p>There&#8217;s a multitude of &#8220;Explorer Replacements&#8221; which aim to be more feature-rich, more user-friendly, less bloated than Bill&#8217;s favorite, and I indeed tried quite a few of them, mostly the free ones of course.</p>
<p>The only problem is that whenever I got close to choose &#8220;the one&#8221;, I noticed that there always was one or two features missing somewhere, which were present in another and vice versa. Additionally, to be totally honest, the level of integration with Windows and other applications was never <em>complete</em>.</p>
<p>These are a few stupid, silly things which tend to be lacking or at least are not 100% functioning &#8212; not in all the file managers I tried, but at least in some:</p>
<ul>
	<li>Environment variables integration &#8212; Alternative file managers normally are not able to parse Windows environment variables.</li>
	<li>Icon overlays &#8212; Some file managers can&#8217;t render Subversion&#8217;s icon overlays.</li>
	<li>Strange context menus &#8212; Sometimes right-clicking on a file or a directory may not open the standard Explorer context menu</li>
	<li>Open Folder &#8212; Third-party application allowing you to open a folder, will always open it through Windows Explorer</li>
	<li>auto complete address bar&#8230;.</li>
	<li>Special Folders &#8212; Some special folders (e.g. Control Panel) are now accessible using alternative file manager, but others may not (e.g. Network Connections). At any rate, typing &#8220;Control Panel&#8221; will <em>not</em> open the Control Panel in an alternative file manager.</li>
</ul>
<p><em>What about trying to &#8220;patch&#8221; Windows Explorer instead of using another program altogether?</em></p>
<p>I never really thought of that until <a href="http://lifehacker.com/software/featured-windows-download/add-tabs-to-windows-explorer-with-qt-tabbar-260926.php">LifeHacker</a> featured the QT TabBar shell extension by <a href="http://members.at.infoseek.co.jp/Quizo/freeware/indexEn.html">Quizo</a>. That was my epiphany: I immediately thought I was going to &#8220;patch&#8221; Windows Explorer using a few really useful (and free, of course) Windows Shell Extensions.</p>
<p>Here&#8217;s <em>my</em> file manager now:</p>
<p><img src="/files/tweaked_explorer.jpg" alt="" /></p>
<p>Yes, it is Windows Explorer, with just a few addons:</p>
<ul>
	<li><a href="http://members.at.infoseek.co.jp/Quizo/freeware/indexEn.html#qttab">QT TabBar</a> (Requires .<span class="caps">NET</span> framework 2.0)</li>
	<li><a href="http://members.at.infoseek.co.jp/Quizo/freeware/indexEn.html#qtadr">QT Address Bar</a> (Requires .<span class="caps">NET</span> framework 2.0)</li>
	<li><a href="http://members.at.infoseek.co.jp/Quizo/freeware/indexEn.html#qtt2">QU ToolBar 2</a> (Requires .<span class="caps">NET</span> framework 2.0)</li>
	<li><a href="http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html"><span class="caps">NTFS</span> Link Shell Extension</a></li>
	<li><a href="http://www.lopesoft.com/en/fmtools/info.html">FileMenu Tools</a></li>
</ul>
<h3>Explorer Tabs</h3>
<p>For an instant gratification, download and install QT TabBar first, logoff and logon again for the changes to take effect (or install all the other extensions first, otherwise you&#8217;ll have to re-logon after installing nearly each one). As the name implies, this will add tabs to Windows Explorer, just the way you expect them to be: clean, stable and really smart.</p>
<p><img src="/files/tabs.gif" alt="" /></p>
<p>After the installation, right-click anywhere in an existing window toolbar and enable the <strong>QT Tab Standard Buttons</strong> and voil&aacute;, a the tab bar will appear. You can click CTRL+N a few times to open new tabs. Take your time to position QT TabBar wherever is more convenient for you.</p>
<p>Whenever you&#8217;re ready, take your time to configure QT TabBar (right-click on it and choose &#8220;Options&#8221;) General options:</p>
<p><img src="/files/tabbar_general.gif" alt="" /></p>
<p>&#8230;and at least the Window options:</p>
<p><img src="/files/tabbar_window.gif" alt="" /></p>
<p><strong>How do you create tabs?</strong> There are many different ways to do it, choose whatever is best for you:</p>
<ul>
	<li>CTRL+N keyboard shortcut</li>
	<li>Drag and drop a folder or a shortcut on QT TabBar &#8211; Even from other applications!</li>
	<li>Right click on an tab and choose &#8220;Clone this&#8221;</li>
</ul>
<p>Other features? Sure, there&#8217;s plenty more, e.g.:</p>
<ul>
	<li><strong>Single Instance</strong> &#8212; By enabling the appropriate option, you&#8217;ll only have a single instance of Windows explorer, everything will be opened in new tabs.  A must.</li>
	<li><strong>Rearrange tabs</strong> &#8212; Tabs can be rearranged by dragging and dropping.</li>
	<li><strong>Lock/Unlock</strong> &#8212; Lock a tab (right-click &gt; Lock) to avoid closing it accidentally.</li>
	<li><strong>Folder Memo</strong> &#8212; It is possible to set a &#8220;folder memo&#8221; for a specific folder, which can be visualized and edited afterwards (right-click &gt; Memo for this folder).</li>
	<li><strong>Folder Password</strong> &#8212; Password-protect a particular tab (right-click &gt; Set Password&#8230;).</li>
	<li><strong>Picture Preview</strong> &#8212; Preview image files simply by hovering on them with the mouse.</li>
	<li><strong>Groups</strong> &#8212; It is possible to group more tabs together by adding them to groups (right-click &gt; Add to Group &gt; [Group Name]) which can be configured via the QT TabBar option dialog.</li>
	<li><strong>Keyboard Shortcuts</strong> &#8212; Open the folder in which you unzipped QT TabBar and run QTShortcutKeyEditor.exe and enable as many as you like (they are too many to list hered), the possibilities are endless.</li>
</ul>
<h3>Customizing Toolbars</h3>
<p>Windows Explorer allows users to choose the buttons which will be displayed in the <strong>Standar Buttons</strong> toolbar. To do so, proceed as follows:</p>
<ol>
	<li>If necessary, enable the Standard Buttons toolbar by selecting <em>View &gt; Toolbars &gt; Standard Buttons</em> from the Explorer menu.</li>
	<li>Select <em>View &gt; Toolbars &gt; Customize</em> from the Explorer menu.</li>
	<li>Choose the buttons you want to display.</li>
</ol>
<p>I picked the following:</p>
<p><img src="/files/standard_explorer_buttons.gif" alt="" /></p>
<p>i.e.: Up , Refresh, Search, Folders, History, Favorites, Undo, Delete, Cut, Copy, Paste, Properties, View, Map Drive and Disconnect. It&#8217;s really up to you what you choose really.<br />
I placed this toolbar right under the menu, on the top-left side.</p>
<p style="float:right;"><img src="/files/tabbar_buttons.gif" alt="" /></p>
<p>Right next to it I placed some of the buttons available for <strong>QT TabBar</strong>:</p>
<ul>
	<li>Groups &#8212; Load an existing tab group (configurable in the options)</li>
	<li>Recently Closed &#8212; open recently-closed tabs</li>
	<li>Applications &#8212; run custom applications (configurable in the options)</li>
	<li>Close &#8212; Close current tab</li>
	<li>Lock &#8212; Lock current tab</li>
	<li>Topmost &#8212; Force explorer to stay on top of other windows</li>
</ul>
<p>Then I decided to enable the <strong>Links</strong> Explorer toolbar, which can be configured to display bookarks and shortcuts placed in the Favorites &gt; Links folder. As shortcuts, I dragged each drive available on my system and voilà: poor man&#8217;s Drive Toolbar! Unfortunately, unlike in the <em>proper</em> drive toolbars offered by alternative file managers, all drive shortcuts will remain there (with a red question mark) even when the drive is not connected to the system. I can live with that.</p>
<p style="float:right;"><img src="/files/toolbar2.gif" alt="" /></p>
<p>Right to the address bar (we&#8217;re going to substitute it in the next section though), I decided to place <strong>QT ToolBar 2</strong>, which is available &#8211; hear, hear &#8211; after installing the QT ToolVar 2 extension.<br />
At first it looks like a search filter toolbar, and yes, it can be used for this <em>as well</em>. Just type .jpg in the search box and it will show only the <span class="caps">JPG</span> files in the current folder. Easy enough.</p>
<p>Of course there&#8217;s (much) more to it. A <em>search helper</em> is provided (click the little arrow pointing downwards at the end of the toolbar and select Search Helper) to perform more complex searches:</p>
<p><img src="/files/toolbar2_search.gif" alt="" /></p>
<p>Additionally, ToolBar allows you to display a handy copy file name/path button and up to two buttons to access two applications you use frequently. To configure them select <em>Option</em> from the dropdown menu accessible at the end of the toolbar, and configure your applications like this:</p>
<p><img src="/files/toolbar2_apps.gif" alt="" /></p>
<p>I choose the Command Prompt and the A43 file manager. The cool thing is that you can enable the &#8220;arguments for user application&#8221; and the the file path (if a file is selected) or the folder path will be passed automatically to the application, so my A43 file manage will open in the current folder. If you want to have more than two custom applications at your fingertips, all you have to do is to configure as many as you like in the Options tab of QT TabBar, and they&#8217;ll become available via the Applications button.</p>
<p>Two little utilities can also be used through QT TabBar 2, <em>MD5</em>, which instantly calculates the MD5 checksum of the selected file:</p>
<p><img src="/files/toolbar2_md5.gif" alt="" /></p>
<p>and <em>Folder Analyze</em>, which finds out the size of the current folder and how it is distributed across folders and files. A bit like a little <a href="windirstat.info">WinDirStat</a> but for the current folder only. It looks like this:</p>
<p><img src="/files/toolbar2_folder.gif" alt="" /></p>
<h3>Navigation Improvements</h3>
<p>Is there any way to make navigation through folder easier in Windows Explorer? Yep, more than one:</p>
<h4>Breadcrumbs</h4>
<p>Vista offers a <a href="http://www.zdnet.com.au/insight/software/soa/Investigating-Windows-Vista-s-breadcrumb-bar-/0,139023769,139218189,00.htm">Breadcrumb Bar</a>, and XP doesn&#8217;t. Quizo fixed it of course, with his <strong>QT Address Bar</strong>, which brings breadcrumbs navigation to Windows XP. Use it as an Explorer address bar replacement. By default breadcrumbs are displayed:</p>
<p><img src="/files/address-bar1.gif" alt="" /></p>
<p>&#8230;allowing you to navigate through your folder three within submenus without changing the current directory. Clicking it toggles the standard path:</p>
<p><img src="/files/address-bar2.gif" alt="" /></p>
<p>A nice thing to have.</p>
<h4>Take back your Favorites!</h4>
<p>I don&#8217;t use IE, I use Firefox, Opera, even Safari sometimes, but not IE unless I&#8217;m forced to do so. Hence I <em>hardly ever</em> used Internet Explorer&#8217;s Favorites, an I almost forgot about it, until I decided to begin tweaking Windows Explorer, and I (re-)discovered that Favorites are shared between the two&#8230; What&#8217;s that got to do with anything? Well, you can simply put Favorites to good use and use them to store <em>only</em> Windows Explorer folders.</p>
<p>Simple and effective: click the Favorites button in the toolbar, they&#8217;ll be loaded in a sidebar on the left, then simply drag a folder to QT TabBar and you&#8217;ll get there.</p>
<h4>Wormholes, anyone?</h4>
<p>Finally, <strong><span class="caps">NTFS</span> Link Shell Extension</strong> does something totally different altogether: it can be used to create hardlinks (a bit like Unix symlinks, but for <span class="caps">NTFS</span> drives only) junctions and symbolic links (Vista only). For an explanation of what each object is, refer to the explanations provided on the <a href="http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html#hardlinks">shell extension homepage</a>. For our purposes, we&#8217;ll just use junctions now:</p>
<p>bq.&#8220;[&#8230;] Junctions  are wormholes in the tree structure of a directed graph. By browsing a Junction a maybe far distant location in the file system is made available. Modifying, Creating, Renaming and Deleting files within a junction tree structure operates at the junction target, i.e. if you delete a file in a Junction it is deleted at the original location. [&#8230;]&#8221;</p>
<p>Consider the following example.</p>
<p style="float:right;"><img src="/files/junction.gif" alt="" /></p>
<p>1) Create a directory called &#8220;Gateway&#8221; in C:\. <br />
2) With <span class="caps">NTFS</span> Link Shell Extension installed, right-click a directory &#8220;far, far away&#8221;, on any of your <span class="caps">NTFS</span> drives, for example D:\My\Very\Long\Path\MyDirectory, and select &#8220;Pick Link Source&#8221;.<br />
3) Go back in your Gateway folder, right-click and select &#8220;Drop As &gt; Junction&#8221;. A folder with a small chain overlay will be created.<br />
4) You will now be able to access all the contents in D:\My\Very\Long\Path\MyDirectory directly from C:\Gateway.</p>
<p><strong>Important</strong> &#8211; No, creating a shortcut is <em>not</em> the same thing. the path C:\Gateway\MyDirectory is an actual <em>valid path</em>, i.e. you can use it to attach files to emails, and going up one level in C:\Gateway\MyDirectory will take you simply to C:\Gateway\, <em>not</em> to D:\My\Very\Long\Path\.</p>
<p>Both at home and at work, I use a &#8220;Gateway&#8221; folder containing junctions leading to commonly-accessed directories, and this speeds up navigations a lot. Just remember to delete junctions &#8220;properly&#8221; (right-click &gt; Delete Junction), not like an ordinary directory&#8230; ;-)</p>
<h3>De-cluttering the Context Menus</h3>
<p>Right now our Windows Explorer interface has been streamlined, folder navigation is easier, but there&#8217;s still room for improvement. Where? Well, in the contex menus of course. <br />
I spent ages trying to figure out an easy way to remove unnecessary or unwanted entries from the menus which appears on a right-click. Yes, they can be removed by fiddling with the Windows Registry, but that&#8217;s not exactly user-friendly, is it? Now there&#8217;s an easy alternative: <strong>FileMenu Tools</strong>.</p>
<p>This nifty little utility allows you to remove rubbish from your context menus and add new entries as well. Entries are grouped by file type and can be enabled or disabled with a single click. Unfortunately I was not able to disabe some of them, probably due to restriction on my computer at work.</p>
<p style="float:right;"><img src="/files/filemenu_tools.gif" alt="" /></p>
<p>Once the rubbish is gone, perhaps you can even evaluate the possibility to add some more. I chose to enable just <em>Attributes</em> and <em>Advanced Renamer</em>, but there are many more predefined commands (each with its own pretty icon) you can choose from:</p>
<ul>
	<li>Synchronize Folders</li>
	<li>Extended Delete</li>
	<li>Find And Replace</li>
	<li>Delete Locked File</li>
	<li>Delete and no move to Recycle Bin</li>
	<li>Change Icon</li>
	<li>Run with Arguments</li>
	<li>Command Line From Here</li>
	<li>Split/Join File</li>
	<li>Copy/Move to&#8230;</li>
	<li>Copy Name/PAth/Content</li>
	<li>Change Time</li>
	<li>Register/Unregister <span class="caps">DLL</span></li>
	<li>Create new folder</li>
</ul>
<p>Something missing? Well, you can always create your own entry, if you like!</p>
<h3>Conclusion</h3>
<p>I think that&#8217;s enough for you to give Windows Explorer another shot &#8212; or at least it was enough for me anyway. Be aware that there are and hopefully there will be more Windows shell extensions able to do neat things: <a href="http://www.7-zip.org/">7-Zip</a>, <a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a> and <a href="http://cream.sourceforge.net/">Cream</a> all add very useful context menus, and don&#8217;t forget <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>, if you are a Windows-based developers (yes, they do exist).</p>]]>
    </content>
  </entry>
</feed>

