<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 	<title>FEW AGAINST MANY</title>
	<subtitle>Because XML Feeds are the best things on earth just after Calvin &amp; Hobbes comics</subtitle>
	<link href="http://fewagainstmany.com/feed" rel="self" type="application/atom+xml"/>
	<link href="http://fewagainstmany.com"/>
	<updated>2008-06-30CEST02:00:007200</updated>
	<author>
		<name>Tim Bart</name>
		<email>tim@fewagainstmany.com</email>
	</author>
	<id>urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6</id>
 
	<entry>
		<title><![CDATA[What about R&D in web agencies ?]]></title>
		<link href="http://fewagainstmany.com/blog/what-about-research-and-development-in-web-agencies" rel="alternate"/>
		<id>http://fewagainstmany.com/blog/what-about-research-and-development-in-web-agencies</id>
		<updated>2008-06-30CEST02:00:007200</updated>
		<published>2008-06-30CEST02:00:007200</published>
		<content type="html"><![CDATA[<p>Be productive. The more productive you are, the better. No kidding. That&#8217;s business 101. Never been told to get something out of the door, no matter what ? That&#8217;s right, quality doesn&#8217;t stand a chance against productivity. That&#8217;s sad. But we have to deal with it. How did we get there ? No idea. All I know is that it started with a pretty good idea : <em>Focus on what you do best, forget about the rest.</em> I do realize that this sentence sums up pretty badly over 200 years of economics, but hopefully, you get the point.</p>

<h3 id="principle_of_the_comparative_advantage_in_web_agencies">Principle of the comparative advantage in web agencies</h3>

<p>If my one-liner didn&#8217;t cut it for you, or if you&#8217;re not familiar with <a href="" title="http://en.wikipedia.org/wiki/Comparative_advantage">Ricardo and the principle of the comparative advantage</a> I&#8217;d recommend reading it up on Wikipedia.</p>

<p>I don&#8217;t know about your company, but the internal organization of a medium-sized web agency is tightly based on this principle, and, IMO, it makes perfect sense.</p>

<p>Of course, it&#8217;s not about rice, food or manufactured products, but skills. Yup, skills. Programming skills, creative skills, organization skills &amp; every skill that&#8217;s required to <em>the manufacturing of a web product</em>.</p>

<p>You get the idea, creative people do creative stuff better than programming people, so it makes sense for them to focus exclusively on the creative side of the project and letting other people, whose skills are more appropriate, handle the rest. It&#8217;s all for the best, really. And you&#8217;ve no idea how happy I am to focus on programming and not having to deal with invoicing!</p>

<p>For a second, forget about innate skills. As of today, nobody was born knowing how to write Python code nor adding a gradient overlay in Photoshop CS3. It&#8217;s something we had to learn.</p>

<p>We&#8217;ve been hired because our skills matched the job requirements. Because we knew something that is valuable. So it shouldn&#8217;t come as a surprise that our company would love to get the most out of this. That&#8217;s the deal. They pay us, we work for them, and we produce something that has more value that the sum of all the costs involved in the <em>manufacturing</em>. That&#8217;s still business 101. Enough about business, now comes web stuff.</p>

<h3 id="the_constant_evolution_of_web_technologies">The constant evolution of web technologies</h3>

<p>As you know, the technologies we use undergo constant evolution. Since 1990, Adobe released 10 major versions of Photoshop, we can now do <em>real programming</em> in Flash (private joke) &amp; there are more programming languages than spoken languages in the world (okay, I made this one up, but you get the point). Things have changed, and most of them, for the better.</p>

<p>And there&#8217;s no need to go all the way back to 1990 to notice some drastic changes. 
Remember when Actionscript 1 was all the rage ? Now take a look at Actionscript 3, and tell me if there&#8217;s anything in common between these two languages ? The stop(); function maybe ?</p>

<p>Joking aside, our tools get more and more sophisticated/powerful. They should make things simpler for us, reduce tedious work and make us more productive. But we have to learn how to use these new or updated tools. How can you use something you don&#8217;t even know it exists ? Being up-to-date can take quite some time. There&#8217;s only so many hours in the day, and we rarely get the chance to try something new, because deadlines were set based on what we did before. <em>To be read with a dramatic tone</em> : The benefits are not always immediate, and in a world ruled by ROI &amp; where immediacy often prevails over long-term benefits, we&#8217;re not really given the choice.</p>

<h3 id="the_long_term_costs_of_outdated_skills">The long-term costs of outdated skills</h3>

<p>No need to be a genius to understand that if you don&#8217;t keep up with recent evolutions in web technologies, you&#8217;re already one step behind. So what about those skills you had 5 years ago ? They&#8217;re totally out. HTML table-based layouts anyone ? You need to keep track of what&#8217;s new, one step at a time, or you&#8217;ll have it bad. Frontpage expertise doesn&#8217;t make you a rock star these days.</p>

<p>Now think about it when everyone in the company needs to <em>upgrade his/her skills</em>. Ouch. What was hot (read very valuable), is falling out of flavor in no time. And if you&#8217;ve made this expertise the core business of your company, you&#8217;re in troubles, seriously.</p>

<h3 id="the_magic_solution_research_development">The magic solution: Research &amp; Development</h3>

<p>I used to think about R&amp;D as white labs with mad scientists making some weird experiments with viscous green lava. While reality isn&#8217;t as entertaining, R&amp;D is becoming one of the most powerful competitive advantage. Enough with business jargon, you&#8217;ve now successfully passed Business 101. Congratulations.</p>

<p>Experiments are not something that are actively encouraged in most web agencies. It&#8217;s all about being productive remember? So why should we care for experimental projects ? Well, while some might never make it past the experiment stage, some could turn out to be real productivity boost and thus generate more revenues. Greedy shareholders will appreciate! Google is famous for it&#8217;s R&amp;D policy, each engineer is encouraged to spend up to 20% of his time working on experimental projects. You all know the story about Gmail, don&#8217;t you ?</p>

<p>Of course, R&amp;D has a cost. Allocating 20% of your resources to something that could never see the light of the day implies some risks and is not suited for the faint-hearted. But after all, isn&#8217;t running a company an exercise in risk management ?</p>

<h3 id="bonus_intangible_outcomes">Bonus: Intangible outcomes</h3>

<p>By encouraging your employees to broaden or improve their skills on company time, you&#8217;re not only keeping the motivation high, you&#8217;re also building trust, and giving them personal satisfaction.</p>

<p>Everyone&#8217;s happy to be friend with the new cool kid on the block. I promise.</p>]]></content>
	</entry>
	
	<entry>
		<title><![CDATA[Frameworks don't have to do everything and more]]></title>
		<link href="http://fewagainstmany.com/blog/frameworks-dont-have-to-do-everything-and-more" rel="alternate"/>
		<id>http://fewagainstmany.com/blog/frameworks-dont-have-to-do-everything-and-more</id>
		<updated>2008-04-26CEST21:30:007200</updated>
		<published>2008-04-26CEST21:30:007200</published>
		<content type="html"><![CDATA[<p>While the concept of Frameworks isn&#8217;t recent, the buzz surrounding frameworks has grown to a point where it&#8217;s nearly impossible to read news not mentioning <em>a brand new XXX framework which will revolutionize the way we build web applications/sites</em>.</p>

<p>Since this post is about frameworks in general, and not about specific ones, some statements may not be appropriate to all. This isn&#8217;t a feature by feature comparison of frameworks but some thoughts on what to avoid if you plan to build your own.</p>

<h3>But What is a the point of using a framework ?</h3>

<p>From wikipedia:</p>

<blockquote>
  <p>Frameworks are designed with the intent of facilitating software development, by allowing designers and programmers to spend more time on meeting software requirements rather than dealing with the more tedious low level details of providing a working system.</p>
</blockquote>

<p>The motivation behind using a framework is <em>to bring back the fun to programming</em>. Even though you enjoy building websites, there are always some stuff that boring, and <strong>always</strong> the same. You can&#8217;t avoid it. By using a framework, you can make abstraction of all this stuff and focus on developing what makes your application/website unique/interesting.</p>

<h3>How is a framework different from the collection of useful functions I have collected ?</h3>

<p>There&#8217;s a name for a  <em>collection of functions</em> and it&#8217;s called a library.</p>

<p>From wikipedia:</p>

<blockquote>
  <p>A library is a collection of subprograms used to develop software. Libraries contain &#8220;helper&#8221; code and data, which provide services to independent programs. This allows code and data to be shared and changed in a modular fashion.</p>
</blockquote>

<p>See the difference ? A framework aims to provide a working system while a library aims to share code &amp; data among different programs.</p>

<p>They both serve different purposes, and thus, should be used in a different manner. This doesn&#8217;t mean that they couldn&#8217;t be used together. Many <em>back-end</em> frameworks have native implementations of front-end libraries, generally in the form of helpers.</p>

<h3>So what&#8217;s wrong with frameworks ?</h3>

<p>There&#8217;s nothing inherently wrong in using a framework. It&#8217;s a time-saver and motivation keeper and I really encourage everyone to use a good framework for the next web application/site they&#8217;ll build. The subtle nuance is using a <strong>good framework</strong>.</p>

<p>After several iterations (from Alpha to version 8.5 &#8230;), most frameworks become bloated and reach a stellar level of complexity.
As the framework gets used more and more by different people and for different applications, developers/maintainers can&#8217;t refrain from adding more functionalities to their framework in order to cover the new needs which arose during their most recent development.</p>

<p>While this might sound like a good idea, it definitely isn&#8217;t. <strong>It is really difficult to differentiate what&#8217;s specific and what&#8217;s generic about an application/website</strong>. This is the main reason why some frameworks are good and some just plainly suck. This is where the difficulty of building a framework resides. Being able to determine the tipping point between something that makes things easier for you and something that gets in your way is crucial to ensure the success/usefulness of the framework. </p>

<p>If framework developers fail to do this, they&#8217;ll reach the point where this unneeded complexity defeats the intent of the framework which is to facilitate software development.</p>

<h3>The 80-20 rule</h3>

<p>Beyond its technical marvels, the Ruby on Rails (RoR) framework popularized (or invented ?) the mantra of <em>convention over configuration</em>. It basically means that 80% of your application is similar to every other application out there. There&#8217;s no offense to be taken here, human beings and chimps have close to 100% similarity in their DNA, so 80% of similarity between applications should not be a hurdle to your imagination or creativity. The remaining 20% are your application <em>specifique &amp; unique DNA</em>, what makes it stand out (and makes you proud!).</p>

<p>If we push this idea a tiny bit further, it wouldn&#8217;t be a non-sense to say that if less than 80% of the people using your framework will use the functionality you plan to add, then, you should reconsider adding it to the core of the framework.</p>

<p>This doesn&#8217;t mean that the functionality has no use, it simply means that since not all people will use it, there&#8217;s no point in adding complexity. It&#8217;s probably best suited for a plugin or an extension (because there&#8217;s no way your framework can be successful if it doesn&#8217;t provide this kind of functionality).</p>

<p>Here&#8217;s a smart quote from the <a href="http://gettingreal.37signals.com/">Getting Real book by 37signals</a> :</p>

<blockquote>
  <p>Each time you say yes to a feature, you&#8217;re adopting a child. You have to take your baby through a whole chain of events (e.g. design, implementation, testing, etc.). And once that feature&#8217;s out there, you&#8217;re stuck with it. Just try to take a released feature away from customers and see how pissed off they get.</p>
</blockquote>

<h3>What are the alternatives to frameworks ?</h3>

<p>Since most frameworks are based on a handful of architectural patterns (MVC, Three-tier, SOA &#8230;) and since those patterns are well established and well-known by <em>rigorous developers</em>, frameworks may be overkill for some people, or not best suited to their specific needs. In this particular case, I&#8217;d recommend dropping the framework in favor of a development starting kit (SDK). I&#8217;m not talking about a full-featured SDK with IDE, debugging tools and the like, but something along the line of some files and directories to get you started. Duplicate &amp; modify some, and you&#8217;re almost ready to go.</p>

<p>It has the merit of ditching the <em>big black box</em> approach that some frameworks have adopted, and let you fully grasp the concepts/patterns that your application will be built upon.</p>

<p>The concept of this Super-light SDK is easily transportable to a bunch of different back-end as well as front-end technologies.
Of course the trade-off of such an option is that you&#8217;ll have more code to write which makes it more prone to errors and non-standard implementations/architectures, but it offers an unprecedented amount of freedom (only outplayed by the super-hero-100%-hand-code approach) and lets you get rid of some boring setups.</p>

<p>For the story, I recently had to get two frameworks (one front-end and one back-end) to talk to each other and I can&#8217;t recall one moment during which I was thankful to be using one of those frameworks, so both combined was just a nightmare.</p>

<p>Here is a list of frameworks I <em>commonly</em> use:</p>

<ul>
<li><a href="http://codeigniter.com">Code Igniter</a> for rapid PHP development</li>
<li><a href="http://webpy.org">Webpy</a> the <em>anti-framework</em> written in Python</li>
<li><a href="http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx">ASP.NET MVC</a> - can&#8217;t wait to use it in production.</li>
</ul>

<p>and a short list of frameworks you really shouldn&#8217;t miss:</p>

<ul>
<li><a href="http://rubyonrails.org">Ruby on Rails</a></li>
<li><a href="http://djangoproject.com">Django</a></li>
</ul>
]]></content>
	</entry>
	
	<entry>
		<title><![CDATA[Dancing to the vertical rythm]]></title>
		<link href="http://fewagainstmany.com/blog/dancing-to-the-vertical-rythm" rel="alternate"/>
		<id>http://fewagainstmany.com/blog/dancing-to-the-vertical-rythm</id>
		<updated>2008-04-08CEST01:00:007200</updated>
		<published>2008-04-08CEST01:00:007200</published>
		<content type="html"><![CDATA[<p>Based on some inspired &amp; most welcomed feedback, I've added some <em>vertical rythm</em> to the grid. I'm amazed by how much better it looks now.</p>

<img src="/GUI/static/images/vertical-grid.png" />

<h3>Useful resources about vertical rythm</h3>

<p>I followed some advice and read (with a lot more attention this time) an article written by Wilson Miner at A List Apart entitled: <a href="http://www.alistapart.com/articles/settingtypeontheweb/" title="Setting Type on the Web to a Baseline Grid - A List Apart">Setting Type on the Web to a Baseline Grid.</a></p>

<p>I would also recommend reading the <a href="http://webtypography.net/" title="The Elements of Typographic Style Applied to the Web">The Elements of Typographic Style Applied to the Web</a>. The focus is on typography on the web, and the chapters are full of tips and best practices. A must read</p>

<p>While things look all lined-up on Safari 3.1 on OS X, I have no clue if it looks even decent on other browsers. I don't have enough time yet to make them look better in other browsers, even though Firefox is next on the list.</p>]]></content>
	</entry>
	
	<entry>
		<title><![CDATA[Blank slate or almost]]></title>
		<link href="http://fewagainstmany.com/blog/blank-slate-or-almost" rel="alternate"/>
		<id>http://fewagainstmany.com/blog/blank-slate-or-almost</id>
		<updated>2008-04-06CEST00:00:007200</updated>
		<published>2008-04-06CEST00:00:007200</published>
		<content type="html"><![CDATA[<p>I got rid of old and useless posts, wiped-off comments (sorry guys) and refreshed the design. It&#8217;s far from perfect, and there&#8217;s not enough content for my liking, but overall, I&#8217;m pretty happy of how it turned out.</p>

<h3>Homemade</h3>

<p>Yup, this site is entirely homemade. No more WP, symphony or any other open source CMS. This is homemade stuff. Time will tell if it was a good idea.
Functionalities are pretty basic so far, but I&#8217;ve got some sweet stuff in the pipe.
Stay tuned.</p>

<h3>Bugs &amp; quirks</h3>

<p>The site has only been tested on Safari 3.1 on Mac OS X. It should look ok in Firefox, but I&#8217;ve no idea about Internet Explorer.
I&#8217;ll fix &amp; tweak the markup/css until it looks good for all major browsers. If something looks really broken, let me know via <a href="http://twitter.com/pims">twitter</a></p>]]></content>
	</entry>
	
	<entry>
		<title><![CDATA[10 easy steps to get Python running on your phone.]]></title>
		<link href="http://fewagainstmany.com/blog/10-easy-steps-to-get-python-running-on-your-phone" rel="alternate"/>
		<id>http://fewagainstmany.com/blog/10-easy-steps-to-get-python-running-on-your-phone</id>
		<updated>2007-11-25CET00:00:003600</updated>
		<published>2007-11-25CET00:00:003600</published>
		<content type="html"><![CDATA[<p>I recently installed Python on my Nokia 6120 classic, and you can easily do the same by following those 10 steps:</p>

<p><img id="pythononanokia6120classic" src="http://www.fewagainstmany.com/wp-content/uploads/nokia_n6120_classic_zoom.jpg" alt="Python on a Nokia 6120 classic" title="Python on a Nokia 6120 classic" class="border"/></p>

<ol>
<li>Head over to <a href="http://sourceforge.net/project/showfiles.php?group_id=154155">sourceforge</a> and get the latest python distribution file. If your phone is recent (2007), you should get the PythonForS60_1_4_1_3rdEd.SIS file</li>
<li>Grab the PythonScriptShell_1_4_1_3rdEd.SIS file as well.</li>
<li>Upload both .SIS files to your phone (via Bluetooth or USB Cable)</li>
<li>Locate the PythonForS60_1_4_1_3rdEd.SIS on your phone and then open it. You&#8217;ll be prompted to install it.</li>
<li>Choose where you&#8217;d like the application to be installed (phone or memory card) and you should be good to go.</li>
<li>To make sure Python is correctly installed on your phone go to Menu > settings > Data Mgr > App. Mgr. You should see &#8220;Python for S60 -> installed&#8221;</li>
<li>Now that python is installed, you need to install the shell, to do so, open the PythonScriptShell_1_4_1_3rdEd.SIS file that you&#8217;ve already uploaded and then open it.</li>
<li>Same thing here, you&#8217;ll be prompted to install the application. It&#8217;s recommended to install both Python, and Python shell on the phone memory.</li>
<li>The shell will be installed in Menu > Applications > My own > Python.</li>
<li>Your phone has now officially become your brand new dev platform :-)</li>
</ol>

<p>Take a look at the <a href="http://wiki.opensource.nokia.com/projects/Installing_PyS60">Installing PyS30 guide from Nokia</a> for more info.</p>]]></content>
	</entry>
	 
</feed>
