<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lixo.org &#187; General</title>
	<atom:link href="http://www.lixo.org/archives/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lixo.org</link>
	<description>letting the problem solve itself</description>
	<lastBuildDate>Tue, 11 May 2010 04:39:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Encoding Detector 1.0 released</title>
		<link>http://www.lixo.org/archives/2010/05/11/encoding-detector-1-0-released/</link>
		<comments>http://www.lixo.org/archives/2010/05/11/encoding-detector-1-0-released/#comments</comments>
		<pubDate>Tue, 11 May 2010 03:34:29 +0000</pubDate>
		<dc:creator>Carlos Villela</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lixo.org/archives/2010/05/11/encoding-detector-1-0-released/</guid>
		<description><![CDATA[Ever had nasty problems coming from multiple development environments set up differently on your team, with developers accidentally creating files with bad encodings? Are your users complaining about all that mojibake showing up on your internationalised UI? Well, I had&#8230; plenty of times. So I created a tiny little tool to help fight that. Encoding [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
 <a href="http://www.flickr.com/photos/cobalt/1798976614/" title="photo sharing"><img src="http://farm3.static.flickr.com/2012/1798976614_15cc08e7a8_m.jpg" alt="" style="border: solid 2px #000000;" /></a>
</div>
<p>Ever had nasty problems coming from multiple development environments set up differently on your team, with developers accidentally creating files with <a href="http://en.wikipedia.org/wiki/Windows-1252">bad encodings</a>? Are your users complaining about all that <a href="http://en.wikipedia.org/wiki/Mojibake">mojibake</a> showing up on your internationalised UI?</p>
<p>Well, I had&#8230; plenty of times. So I created a tiny little tool to help fight that. Encoding Detector is an aptly named tool (if I do say so myself) that recursively detects the encoding of files in a project directory errors out if anything seems fishy.</p>
<p>I&#8217;ve only ever used it with Ant, but it should be a breeze to set up and install on any project. All you need to do is call the main script against a directory, like:</p>
<pre><code>$ python encoding-detector.py src</code></pre>
<p>You&#8217;ll need a somewhat recent Python installed — anything that came out in the last 5 years should be OK — and that&#8217;s about it. Multiple directories can be passed as arguments, and fixing the errors is sometimes as easy as adding a few UTF-8 characters to boost the detector&#8217;s confidence up a bit.</p>
<p>This hack would definitely not be possible without <a href="http://diveintomark.org/">Mark Pilgrim</a>&#8216;s amazing <a href="http://chardet.feedparser.org">chardet</a> library. The code, as always, <a href="http://github.com/cv/encoding-detector">is on GitHub</a>, and you can also grab a <a href="http://github.com/cv/encoding-detector/downloads">neat little tarball here</a>.</p>
<p>It takes about 5 minutes to set up on your project, and you can thank me later <img src='http://www.lixo.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lixo.org/archives/2010/05/11/encoding-detector-1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speaking in Brazil</title>
		<link>http://www.lixo.org/archives/2009/09/21/speaking-in-brazil/</link>
		<comments>http://www.lixo.org/archives/2009/09/21/speaking-in-brazil/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 05:10:27 +0000</pubDate>
		<dc:creator>Carlos Villela</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lixo.org/archives/2009/09/21/speaking-in-brazil/</guid>
		<description><![CDATA[As many reading this might know, I&#8217;ve moved from London back to São Paulo about a month ago. The timing worked out wonderfully: right before a bunch of really interesting conferences happening over here. Among them, I&#8217;m speaking at: Encontro Ágil, 10-11 October: a quick talk about the spirit of continuous integration and how important [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
 <a href="http://www.flickr.com/photos/cv/1991902729/" title="photo sharing"><img src="http://farm3.static.flickr.com/2124/1991902729_c292315419_m.jpg" alt="" style="border: solid 2px #000000;" /></a>
</div>
<p>As many reading this might know, I&#8217;ve moved from London back to São Paulo about a month ago. The timing worked out wonderfully: right before a bunch of really interesting conferences happening over here. Among them, I&#8217;m speaking at:</p>
<p><a href="http://encontroagil.com.br">Encontro Ágil</a>, 10-11 October: a quick talk about the spirit of continuous integration and how important it is to stick to it even though it&#8217;s easy to get sidetracked choosing between the tools available. I&#8217;ll explain some of the pitfalls, patterns and anti-patterns, and hope to please the Demo Gods by showing what a good continuous build, test, integration and deployment cycle looks like in practice.</p>
<p><a href="http://railssummit.com.br">Rails Summit</a> 13-14 October: another quick talk about the use of Ruby at ThoughtWorks and some of the lessons learned in the 40+ projects we&#8217;ve done so far. I&#8217;ll try not to make it a total rip-off of Martin&#8217;s <a href="http://martinfowler.com/articles/rubyAtThoughtWorks.html">Ruby at ThoughtWorks</a> work for QCon earlier this year, but I&#8217;m making no promises. <img src='http://www.lixo.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>More to come, I&#8217;m sure. It&#8217;s good to be home!</p>
<p>A side note: would you, kind reader, get annoyed if I start mixing Brazilian Portuguese and English in future posts? Should I set up a separate blog, category or whatever so the non-lusophones can skip the stuff written in what would make <a href="http://en.wikipedia.org/wiki/Camões">Camões</a> spin in his grave? Any suggestions as to how to do that effectively in WordPress?<br />
<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lixo.org/archives/2009/09/21/speaking-in-brazil/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Tracer Bullet Application</title>
		<link>http://www.lixo.org/archives/2009/08/25/the-tracer-bullet-application/</link>
		<comments>http://www.lixo.org/archives/2009/08/25/the-tracer-bullet-application/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 00:25:57 +0000</pubDate>
		<dc:creator>Carlos Villela</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lixo.org/archives/2009/08/25/the-tracer-bullet-application/</guid>
		<description><![CDATA[In most projects I have been on as a consultant, getting the right environments together was an incredibly consuming task on several people with too much to worry about already: project management, senior techies and the ones responsible for keeping the legacy environments running. Recently, the idea of getting an example minimal application deployed as [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
 <a href="http://www.flickr.com/photos/eyetwist/243618116/" title="photo sharing"><img src="http://farm1.static.flickr.com/95/243618116_5c95ab1863_m.jpg" alt="" style="border: solid 2px #000000;" /></a>
</div>
<p>In most projects I have been on as a consultant, getting the right environments together was an incredibly consuming task on several people with too much to worry about already: project management, senior techies and the ones responsible for keeping the legacy environments running.</p>
<p>Recently, the idea of getting an example minimal application deployed as soon as possible during the project lifecycle has been banded about a bit as one of the things that could&#8217;ve made my last project run smoother (as always, hindsight is always 20-20). Then, one of my colleagues (either <a href="http://www.grahambrooks.com">Graham Brooks</a> or <a href="http://blog.magpiebrain.com">Sam Newman</a>, but I could be mistaken) brought up a simple and perfect analogy for it, found in <a href="http://www.amazon.co.uk/gp/product/020161622X?ie=UTF8&#038;tag=lixoorg-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=020161622X">The Pragmatic Programmer</a><img src="http://www.assoc-amazon.co.uk/e/ir?t=lixoorg-21&#038;l=as2&#038;o=2&#038;a=020161622X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />: a tracer bullet.</p>
<p>From <a href="http://en.wikipedia.org/wiki/Tracer_ammunition">Wikipedia</a>:</p>
<blockquote><p>Tracer ammunition (tracers) are special bullets that are modified to accept a small pyrotechnic charge in their base. Ignited upon firing, the composition burns very brightly, making the projectile visible to the naked eye. This enables the shooter to follow the bullet trajectory relative to the target in order to make corrections to his aim.</p>
</blockquote>
<p>Tracer bullets are used during the daytime as well, but their importance is heightened severely at night: when shooting in the dark, being able to see the trajectory is crucial, since other clues — such as surrounding objects being hit — are harder to recognize and do not provide quick enough feedback for the shooter to be able to adjust his aim in a timely fashion.</p>
<p>Since most software projects are, in a way or another, shooting in the dark, it makes sense to create a special type of application deployment that increases the visibility of the deployments coming after it.</p>
<p>This application does not need to have any features, besides painting an accurate picture of what the real application (coming up in the next few deployments, hopefully) will behave like. A few interesting things to analyze:</p>
<ul>
<li>System environment: is the <span class="caps">PATH</span> set properly? Are the versions of compilers, interpreters and runtimes correct? Is there enough memory and storage space?</li>
<li>Library dependencies: are all the dynamically linked libraries available and in the correct versions? What&#8217;s the overhead of a particular choice of framework or data mapping strategy in memory consumption and performance?</li>
<li>Interactions with other legacy systems: are they available in the correct version? Is the application authorized to talk to them? Can they be contacted reliably and at the performance levels desired, or is there a network issue that needs to be solved?</li>
<li>Performance: how many users of the application (once it&#8217;s deployed) can we tolerate? What are the expected response times? Under load, what are the bottlenecks?</li>
</ul>
<p>These questions do not necessarily have to be answered by a monolithic tracer bullet application. In my view, they&#8217;re more like deployment spikes: once they answer a question and the team learns from them, they can be thrown away or reused, but there&#8217;s no obligation to build on a previous one if doing so adds noise to the measurements.</p>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lixo.org/archives/2009/08/25/the-tracer-bullet-application/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Testing is&#8230;</title>
		<link>http://www.lixo.org/archives/2009/02/05/testing-is/</link>
		<comments>http://www.lixo.org/archives/2009/02/05/testing-is/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 00:12:41 +0000</pubDate>
		<dc:creator>Carlos Villela</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lixo.org/archives/2009/02/05/testing-is/</guid>
		<description><![CDATA[This works for me: testing is about sustainability. If your tests don&#8217;t let you be sustainable (for whatever value of &#8220;sustainable&#8221; is important to you) then you&#8217;re probably doing something wrong. The interesting thing here is that you can define sustainability as &#8220;if we don&#8217;t have this live tomorrow morning, the company will fold&#8221; and [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
 <a href="http://www.flickr.com/photos/freg/2638476026/" title="photo sharing"><img src="http://farm4.static.flickr.com/3119/2638476026_140d2ecbce_m.jpg" alt="" style="border: solid 2px #000000;" /></a>
</div>
<p>This works for me: testing is about sustainability. If your tests don&#8217;t let you be sustainable (for whatever value of &#8220;sustainable&#8221; is<br />
important to you) then you&#8217;re probably doing something wrong.</p>
<p>The interesting thing here is that you can define sustainability as &#8220;if we don&#8217;t have this live tomorrow morning, the company will fold&#8221; and then proceed with the most appropriate testing strategy &#8211; something that gets out of the way and gives you the fastest possible feedback, like a smoke test not much deeper than a ping to the server or a <tt>wget</tt> piping to <tt>diff</tt>.</p>
<p>If you define &#8220;sustainable&#8221; to be &#8220;this codebase needs to constantly adapt to new features and output formats over the next 5 years&#8221;, the testing strategy changes accordingly, and it is up to a team of competent professionals to choose at what level to operate. In this case, most would choose to use tools like Behaviour Driven Development/Design and Domain Driven Design to explore as much of the problem space as possible during development and seek shared understanding through automated and repeatable processes, that can be maintained along with the codebase and ensure the features are always easy to understand and modify, should the functionality require changes (and it will).<br />
<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lixo.org/archives/2009/02/05/testing-is/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>2008 in Numbers</title>
		<link>http://www.lixo.org/archives/2008/12/25/2008-in-numbers/</link>
		<comments>http://www.lixo.org/archives/2008/12/25/2008-in-numbers/#comments</comments>
		<pubDate>Thu, 25 Dec 2008 10:47:21 +0000</pubDate>
		<dc:creator>Carlos Villela</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lixo.org/archives/2008/12/25/2008-in-numbers/</guid>
		<description><![CDATA[Git commits: 1688 Xbox 360s bought: 1 Projects created or started: 14 Guitar Hero levels completed with 5 stars: 98 (on medium) Burglaries: 2 Full-time projects: 3 kiva.org loans made: 7 Languages learned: 2 (Erlang, LOLcode) Presentations given: 3 Family Guy episodes watched: 116 Presentations attended: 12 Interviews given: 2 (akitaonrails.com and MTV) Tweets: 979 [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
 <a href="http://www.flickr.com/photos/visbeek/2646265221/" title="photo sharing"><img src="http://farm4.static.flickr.com/3287/2646265221_881d97b469_m.jpg" alt="" style="border: solid 2px #000000;" /></a>
</div>
<p>Git commits: 1688<br />
Xbox 360s bought: 1<br />
Projects created or started: 14<br />
Guitar Hero levels completed with 5 stars: 98 (on medium)<br />
Burglaries: 2<br />
Full-time projects: 3<br />
kiva.org loans made: 7<br />
Languages learned: 2 (Erlang, LOLcode)<br />
Presentations given: 3<br />
Family Guy episodes watched: 116<br />
Presentations attended: 12<br />
Interviews given: 2 (akitaonrails.com and MTV)<br />
Tweets: 979<br />
Flats: 1 bought, 1 lived in<br />
Arduinos: 4 bought, 2 destroyed<br />
Non-fatal incidents with a soldering iron: 3<br />
Flight time: 28.5 hours<br />
Countries visited: 4 (Brazil, France, Ireland, UK)<br />
Google Reader items read: 127524<br />
Pints of London Pride per week, average: 4.33<br />
Books: 18 bought, 7 read<br />
Photos taken: 29355<br />
Semi-naked photo shoots published: 1<br />
Copies of said publication sold: 500k+<br />
Blog posts written: 16<br />
Burritos eaten: 47<br />
Attempts at purchasing an iPhone: 9 (0 of which successful)<br />
Emails written: 1045 (2.8 per day in average)<br />
Times I heard George say &#8220;shiiiiiiit&#8221; per day, average: 2.19<br />
<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lixo.org/archives/2008/12/25/2008-in-numbers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Balances between agile and usability</title>
		<link>http://www.lixo.org/archives/2008/11/27/balances-between-agile-and-usability/</link>
		<comments>http://www.lixo.org/archives/2008/11/27/balances-between-agile-and-usability/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 23:04:58 +0000</pubDate>
		<dc:creator>Carlos Villela</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.lixo.org/archives/2008/11/27/balances-between-agile-and-usability/</guid>
		<description><![CDATA[Jakob Nielsen on the use of Agile methods: Agile&#8217;s biggest threat to system quality stems from the fact that it&#8217;s a method proposed by programmers and mainly addresses the implementation side of system development. As a result, it often overlooks interaction design and usability, which are left to happen as a side effect of the [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
 <a href="http://www.flickr.com/photos/admiller/2761925206/" title="photo sharing"><img src="http://farm4.static.flickr.com/3246/2761925206_f12a3bd2ac_m.jpg" alt="" style="border: solid 2px #000000;" /></a>
</div>
<p>Jakob Nielsen on <a href="http://www.useit.com/alertbox/agile-methods.html">the use of Agile methods</a>:</p>
<blockquote><p>Agile&#8217;s biggest threat to system quality stems from the fact that it&#8217;s a method proposed by programmers and mainly addresses the implementation side of system development. As a result, it often overlooks interaction design and usability, which are left to happen as a side effect of the coding.</p>
</blockquote>
<p>In my experience, mostly as a developer, it is really easy to dismiss interaction and usability design for two reasons.</p>
<p>The first comes from the developers themselves, trading prettiness and consistency of user experience for cleaner and sounder domain models whenever they go in opposite directions. Signs this is happening are developers crying <a href="http://c2.com/xp/YouArentGonnaNeedIt.html"><span class="caps">YAGNI</span></a> when the stakeholders ask for a zoomable chart or <a href="http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html"><span class="caps">DTSTTCPW</span></a> when a sortable, paginated data table is required.</p>
<p>Next time you see a system where there are enormous listings of items with no search, pagination or sorting, ask the developers if they have ever watched a typical user at work; chances are they have only thought about the system as they see it: since the testing dataset is usually small, a loop spitting out a bit of <span class="caps">HTML</span> for each element isn&#8217;t such a big deal. They might even say there&#8217;s a story to implement all that lovely stuff later on, but they just get moved over and over to the bottom of the backlog barrel&#8230; until everyone watches a person struggle to find needles in a tabular haystack all day. This is a simple example &#8211; almost too trivial actually, but one I&#8217;ve seen happen way too many times.</p>
<p>Changing the perception that usability is just the icing on the cake draws attention to all that wasted time to the stakeholders, and should enable a much better dialogue: developers get to write an application users will love, stakeholders spend their money wisely on something that will actually increase return on investment (as productivity gains), users feel empowered and less likely to make mistakes. Everybody wins.</p>
<p>The second reason UI design and usability get overlooked, and this is the one <a href="http://blog.franktrindade.com">Frank</a> alludes to in his <a href="http://blog.franktrindade.com/2008/11/25/agile-vs-usability">latest post</a>, is that some agile teams rely a bit too heavily on the stakeholder&#8217;s descriptions of what is wanted. It instantly reminded me of one my favourite quotes from <a href="http://www.imdb.com/title/tt0317219/">Cars</a>:</p>
<blockquote><p><strong>Lightning McQueen:</strong> All right, Luigi, give me the best set of black walls you&#8217;ve got.</p>
<p><strong>Luigi:</strong> No, no, no! You don&#8217;t know what you want! Luigi know what you want. Black-wall tires, they blend into the pavement, but these white-wall tires, they say look at me, here I am, love me.</p>
<p><strong>Lightning McQueen:</strong> All right, you&#8217;re the expert.</p>
</blockquote>
<p>I find it rare for the stakeholders to know exactly what they want, down to what the end-user experience should be like. Thinking about a reasonably-sized application at this level of detail can only be done as a series of small, incremental steps and having someone on the team who is really obsessed about making every single pixel on the screen be in the right place. And if you read the last sentence and thought &#8220;well, that&#8217;s not exactly the role of my stakeholder!&#8221; you get the point: the stakeholders should not have the final word as to what the usability and experience details should be, in the same way they simply delegate to and rely on the expertise of the development team to flesh out the details of a persistence layer.</p>
<p>Have look and feel expertise in your team, and trust it, in the same way you would trust the database or network connectivity expertise.</p>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lixo.org/archives/2008/11/27/balances-between-agile-and-usability/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Announcing lotsofwords.com</title>
		<link>http://www.lixo.org/archives/2008/11/02/announcing-lotsofwordscom/</link>
		<comments>http://www.lixo.org/archives/2008/11/02/announcing-lotsofwordscom/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 07:05:36 +0000</pubDate>
		<dc:creator>Carlos Villela</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lixo.org/archives/2008/11/02/announcing-lotsofwordscom/</guid>
		<description><![CDATA[Lots of Words is a new experiment to mash up a Wikipedia based lexicon with images from Flickr and whatever else I can get my hands on, in the context of building a representative and informative source of translations for any particular word, in any particular language. I&#8217;m trying to keep things as machine-readable as [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
 <a href="http://www.flickr.com/photos/nrbelex/454711486/" title="photo sharing"><img src="http://farm1.static.flickr.com/204/454711486_5ced86fd70_m.jpg" alt="" style="border: solid 2px #000000;" /></a>
</div>
<p><a href="http://lotsofwords.com">Lots of Words</a> is a new experiment to mash up a <a href="http://wikipedia.org">Wikipedia</a> based lexicon with images from <a href="http://flickr.com">Flickr</a> and whatever else I can get my hands on, in the context of building a representative and informative source of translations for any particular word, in any particular language. I&#8217;m trying to keep things as machine-readable as possible for now, so others can build on it, too.</p>
<p>My friend <a href="http://blogamundo.net/dev/">Patrick Hall</a> and I have been musing about it for some time, and only now a technology stack allowed me to do this  as a relatively small hack rather than putting together months of optimization work.</p>
<p>It turns out, indexing something as big as Wikipedia (<a href="http://download.wikimedia.org">check out those dump file sizes!</a>) isn’t really an “idea in the head and 500 lines of code”, unless you use the right tools for the job. In this case, a shiny new <a href="http://incubator.apache.org/couchdb/">CouchDB</a> instance at <a href="http://aws.amazon.com/ec2/">Amazon <span class="caps">EC2</span></a>, a bit of Ruby and <a href="http://merbivore.com">Merb</a> to add a some logic and presentation magic, and <a href="http://jquery.com">JQuery</a> as a finishing touch did the trick. This gets pretty much every Web N.0 buzzword covered, although I haven&#8217;t yet made any millions in an iPhone app.</p>
<p>This is a spare-time project, so it made sense for me to try out as many different bits of new technology as possible and make it into a breakable toy. This is its third implementation, and the first I’m really happy with in terms of performance and malleability. CouchDB, even with 21+ million documents loaded in about 120 GB of storage, still responds in under 200ms times on all queries I&#8217;ve tried so far. It truly is, even in its pre-1.0 days, a fantastic piece of software.</p>
<p>Now I find myself wanting to put a nice front-end to this, and while the current Flickr mash-up is already very interesting&#8212;and, it turns out, solves the problem of cross-language information retrieval for a small subset of Flickr, I&#8217;m sure others will have much more useful ideas about what to do with this data. My colleague Robert Rees has helped put together a <a href="http://upcoming.yahoo.com/event/1292657/">hackfest</a> here in the <a href="http://thoughtworks.com">ThoughtWorks</a> UK office, together with the nice folks from the <a href="http://javascript.meetup.com/3">London JavaScript Meetup group</a>. Come join us 12 November!</p>
<p>If you just want to get to the code (be forewarned it is ugly!), it&#8217;s on <a href="http://github.com/cv/lots-of-words">GitHub</a>.</p>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lixo.org/archives/2008/11/02/announcing-lotsofwordscom/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>60 years of the UDHR</title>
		<link>http://www.lixo.org/archives/2008/10/13/60-years-of-the-udhr/</link>
		<comments>http://www.lixo.org/archives/2008/10/13/60-years-of-the-udhr/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 20:16:07 +0000</pubDate>
		<dc:creator>Carlos Villela</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lixo.org/archives/2008/10/13/60-years-of-the-uhdr/</guid>
		<description><![CDATA[It&#8217;s been nearly 60 years since the Universal Declaration of Human Rights has been ratified, and Seth Brau has created a amazing typographical interpretation of its text: While you&#8217;re watching it, please take a moment to reflect about the ways in which your human rights have been challenged over the powers-that-be over your lifetime, and [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
 <a href="http://www.flickr.com/photos/cv/160003280/" title="photo sharing"><img src="http://farm1.static.flickr.com/77/160003280_a263d68468_m.jpg" alt="" style="border: solid 2px #000000;" /></a>
</div>
<p>It&#8217;s been nearly 60 years since the <a href="http://www.unhchr.ch/udhr/">Universal Declaration of Human Rights</a> has been ratified, and Seth Brau has created a amazing typographical interpretation of its text:</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/hTlrSYbCbHE&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/hTlrSYbCbHE&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>While you&#8217;re watching it, please take a moment to reflect about the ways in which your human rights have been challenged over the powers-that-be over your lifetime, and think of ways in which you can stop these challenges and abuses from happening.</p>
<p>On the geeky side, it&#8217;s also interesting to note that the UDHR is the most translated text in the world. I&#8217;d expect no less, and it&#8217;s interesting to note how technically challenging that is &#8212; apart from getting translators the world over to get the wording just right so it doesn&#8217;t become ripe for abuse and misinterpretation, it is also one of the benchmarks for proper character set handling in any particular computer system &#8212; and if you think whatever you&#8217;re building is up to scratch, you must give the translations a go. Chances are you&#8217;ll end up with <a href="http://en.wikipedia.org/wiki/Mojibake">mojibake</a> all over the place at some point.<br />
<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lixo.org/archives/2008/10/13/60-years-of-the-udhr/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Opportunity makes the thief</title>
		<link>http://www.lixo.org/archives/2008/09/12/opportunity-makes-the-thief/</link>
		<comments>http://www.lixo.org/archives/2008/09/12/opportunity-makes-the-thief/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 09:52:21 +0000</pubDate>
		<dc:creator>Carlos Villela</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lixo.org/archives/2008/09/12/opportunity-makes-the-thief/</guid>
		<description><![CDATA[Applying the agent nouns are code smells rationale, nicely worded by my colleague Peter Gillard-Moss, controllers are code smells. The more I look at REST and the more I look at how MVC gets typically mapped to it, the more I think the C in MVC is doing the wrong thing, even when it&#8217;s skinny [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
 <a href="http://www.flickr.com/photos/tatianacardeal/415830949/" title="photo sharing"><img src="http://farm1.static.flickr.com/156/415830949_efd234c257_m.jpg" alt="" style="border: solid 2px #000000;" /></a>
</div>
<p>Applying the <a href="http://jupitermoonbeam.blogspot.com/2008/09/agent-nouns-are-code-smells.html">agent nouns are code smells</a> rationale, nicely worded by my colleague <a href="http://jupitermoonbeam.blogspot.com/">Peter Gillard-Moss</a>, controllers are code smells. The more I look at <span class="caps">REST</span> and the more I look at how <span class="caps">MVC</span> gets typically mapped to it, the more I think the C in <span class="caps">MVC</span> is doing the wrong thing, even when it&#8217;s <a href="http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model">skinny as possible</a>.</p>
<p>I&#8217;ve only come across very few and extremely limited cases where I need to do more in a <a href="http://rubyonrails.org">Rails</a> or <a href="http://merbivore.com">Merb</a> controller than simply delegate to the model and set some options about how the resource is going to be represented. Most of this code can be inferred by simply looking at the available routes and methods on the model, essentially making them declarative statements rather than fully capable objects that encapsulate some behaviour of my system, or coordinate inputs and outputs.</p>
<p>In fact, in a RESTful application where simple and <span class="caps">CRUD</span>-like behaviour is encouraged in (or even expected from) all resources of the domain, controllers are just plain unnecessary. If you&#8217;ve tried something like <a href="http://nutrun.com/weblog/abstract-resource/">CrudTemplate</a>, <a href="http://github.com/ianwhite/resources_controller/tree/master">resources_controller</a> or <a href="http://jamesgolick.com/2007/10/19/introducing-resource_controller-focus-on-what-makes-your-controller-special">resource_controller</a>, that&#8217;s the sort of thing I&#8217;m talking about&#8230; only without the the controller as a class.</p>
<p><a href="http://github.com/bmizerany/sinatra/tree/master">Sinatra</a> gets this right by doing away with the controllers and allowing you to tie blocks of code to <span class="caps">URL</span> matchers. Still, opportunity makes the thief, and allowing a block of code to decide what&#8217;s going to be rendered or what models get called is still going to put developers in a position where they have to fight to keep their control code skinny, while moving as much functionality as possible into a rich domain model. It&#8217;s fighting an incredibly difficult battle, since the refactoring weapons are just not powerful enough at the moment, and might never be. I&#8217;d prefer declarative statements: <em>what</em>, not <em>how</em>.</p>
<p>Because declarative, ladies and gentlemen, is <a href="http://duncan-cragg.org/blog/post/welcome-to-what-not-how">good</a>.</p>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lixo.org/archives/2008/09/12/opportunity-makes-the-thief/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About the Death of the Working Hours</title>
		<link>http://www.lixo.org/archives/2008/08/08/about-the-death-of-the-working-hours/</link>
		<comments>http://www.lixo.org/archives/2008/08/08/about-the-death-of-the-working-hours/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 03:14:06 +0000</pubDate>
		<dc:creator>Carlos Villela</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lixo.org/archives/2008/08/08/about-the-death-of-the-working-hours/</guid>
		<description><![CDATA[I fundamentally disagree with the idea that a software development team should be constrained to working 9 to 5. Most software developers don&#8217;t even have that luxury, working overtime to compensate for all the mistakes people like Fred Brooks told us about some decades ago. In this post, I&#8217;d like to pretend more of us [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
 <a href="http://www.flickr.com/photos/fintan/3692819/" title="photo sharing"><img src="http://farm1.static.flickr.com/3/3692819_6c67aea549_m.jpg" alt="" style="border: solid 2px #000000;" /></a>
</div>
<p>I fundamentally disagree with the idea that a software development team should be constrained to working 9 to 5. Most software developers don&#8217;t even have that luxury, working overtime to compensate for all the mistakes people like <a href="http://en.wikipedia.org/wiki/Fred_Brooks">Fred Brooks</a> told us about some decades ago. In this post, I&#8217;d like to pretend more of us are treated and behave as being further to the left of the scale that starts with &#8220;Factory Worker&#8221; and ends in &#8220;Knowledge Worker&#8221;, while fully understanding it&#8217;s a whole different world &#8220;out there&#8221;, for whatever definition of &#8220;out there&#8221; is that invalidates this particular rant.</p>
<p>It seems funny to me that we enthusiastically build highly informative and interactive environments for teams to play in (and I use the word <em>play</em> in the context of a <a href="http://www.lixo.org/archives/2007/06/13/the-project-game/">project as a game</a>), and then treat the human beings whose minds are supposed to be completely focused on delivering business value to a customer as machines that clock in, are amazing for 8 hours&#8230; and then punch out, go home and resume their personal lives.</p>
<p>And this is where I want to have my cake and eat it, too. The fundamental disagreement I have with the concept of working 9 to 5 (or any other 8-hour period of the day) is that creativity, enthusiasm and logical reasoning can&#8217;t be switched on and off by the magic powers of a commute&#8212;and mine these days include walking past the <a href="http://en.wikipedia.org/wiki/Camden_Market">Camden Lock and Market</a>, so it&#8217;s pretty close to that. And I mean it in a good way: it&#8217;s great that developers don&#8217;t just switch off when they go back home. It&#8217;s why we have so many great open source projects coming out of what seems like pure <a href="http://www.shirky.com/herecomeseverybody/2008/04/looking-for-the-mouse.html">cognitive surplus</a>.</p>
<p>In fact, the very existence of a cognitive surplus tells me that I actually go through all these good ideas throughout the day. It just so happens they are sprinkled all over it, as my brain happily responds to outside stimuli, which could be an <a href="http://www.lixo.org/archives/2008/07/05/information-radiator-screen-savers-for-macos-x/">information radiator</a> telling me something&#8217;s just happened, or the taste of my favourite local <a href="http://www.scoopgelato.com/">ice cream</a> from the shop down the road. More and more, I want my work to be a part of my life, not a slice of it. As <a href="http://www.imdb.com/title/tt0195685/">Erin Brockovich</a>, who once allegedly yelled,</p>
<blockquote><p>Not personal!? That is my work, my sweat, and my time away from my kids! If that&#8217;s not personal, I don&#8217;t know what is!</p>
</blockquote>
<p>If you ask your parents, or maybe grandparents, perhaps you&#8217;ll get the same answers as I did. They told me my job is my job, and I have to do it so I can put food on the table. It&#8217;s left to my imagination that very few people in my group a generation or two ago had the pleasure of working because they truly like what they do and believe what they do is both positive and meaningful to society.</p>
<p>I think I&#8217;ve moved up the pyramid a little bit, that I shouldn&#8217;t feel or be embarassed by thinking about &#8220;work stuff&#8221; for extended periods of time when I&#8217;m about to go to bed on a Saturday morning. In fact, that&#8217;d get me labelled as someone who&#8217;s &#8220;focused&#8221; and, nowadays, even praised as a workaholic. But if I&#8217;m caught talking and thinking about something else entirely for similarly extended periods of time while in the middle of my 8-hour journey, I&#8217;m <a href="http://xkcd.com/303/">slacking off</a>.</p>
<p></p>
<p>Why?</p>
<p><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lixo.org/archives/2008/08/08/about-the-death-of-the-working-hours/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.461 seconds -->
