<?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>Codesigner</title>
	<atom:link href="http://www.codesigner.eu/feed" rel="self" type="application/rss+xml" />
	<link>http://www.codesigner.eu</link>
	<description>Creativity at work in design and programming.</description>
	<lastBuildDate>Sat, 12 Feb 2011 16:45:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Exploring non-C-based languages</title>
		<link>http://www.codesigner.eu/blog/exploring-non-c-based-languages</link>
		<comments>http://www.codesigner.eu/blog/exploring-non-c-based-languages#comments</comments>
		<pubDate>Sat, 12 Feb 2011 16:26:16 +0000</pubDate>
		<dc:creator>pallu_stfu</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.codesigner.eu/?p=319</guid>
		<description><![CDATA[Today I made my first application in Django &#8211; yet another framework for web application. Not so much sensational fact in general, but for me &#160;it actually was. And that&#8217;s because it&#8217;s written in Python. I don&#8217;t want to create a scandal, but I&#8217;ve&#160;never used Python before today. In fact, curly-bracketed programming languages has been [...]]]></description>
			<content:encoded><![CDATA[<p>Today I made my first application in Django &#8211; yet another framework for web application.</p>
<p>Not so much sensational fact in general, but for me &nbsp;it actually was. And that&#8217;s because it&#8217;s written in <a href="http://en.wikipedia.org/wiki/Python_(programming_language)">Python</a>. I don&#8217;t want to create a scandal, but I&#8217;ve&nbsp;<strong>never</strong> used Python before today.</p>
<p>In fact, curly-bracketed programming languages has been where I felt home for really a long while now, and I was just scared to step out my syntactic comfort zone: C, C++, Java, PHP and Javascript are different in many ways, but they all push the same buttons in our muscle-memory.</p>
<p>[java]<br />
for ( i = 0; i<10; i++ ) {<br />
    ...<br />
    if ( i > 5) {<br />
        &#8230;<br />
    }<br />
    else {<br />
        &#8230;<br />
    }<br />
}<br />
[/java]</p>
<p>Except for some dollar sign, this small piece of code can belong to any of the above mentioned languages. That&#8217;s a small piece of evidence: use of braces, fundamental keywords, use of semicolons, all contribute to identify the <a href="http://en.wikipedia.org/wiki/List_of_C-based_programming_languages">C-based programming languages </a>.<br />
It took to me a considerable leap of faith and bravery to make the jump and have the first look on what&#8217;s beyond the line, exploring Python for the first time. But then, I was really impressed.</p>
<p><img class="aligncenter size-large wp-image-321" title="python.preview" src="http://www.codesigner.eu/wp-content/uploads/2011/02/python.preview-570x380.jpg" alt="" width="570" height="380"></p>
<h2>Exciting stuff about Python</h2>
<p>Syntax expressiveness remains as high as C-based languages even if blocks are not delimited by curly braces. Actually, code is unbelievably clear even if blocks are simply NOT delimited.</p>
<p>Where&#8217;s the magic? Indentation.</p>
<p>Python takes indentation so bloody seriously that the interpreter will refuse to execute the code if not properly indented. Yes, badly indented code is not tidy code, untidy code is bad to read, bad to read code is less useful code for people. Hence Python won&#8217;t execute.</p>
<blockquote><p>It took so long for computer science to understand that the&nbsp;scarce&nbsp;resource in programming is the human resource, and languages should be optimized for people, not for the CPU.</p></blockquote>
<p>Syntactic correctness may be enough for a computer, but it&#8217;s right that a language optimized for the people requires more than that. And Python is really designed around this concept.</p>
<p>But there&#8217;s more than just style-aware syntax constraints: fully and natively supports OOP principles (you should have a look to what the string class can do). However, Imperative and Functional styles are viable as well in Python.</p>
<p>With such an enormous amount of bindings and libraries, you could use this language to build really anything. Included Web, Network, GTK and 3D applications.</p>
<blockquote><p>Python stays to Perl as Java stays to C.</p></blockquote>
<h2>Things I look forward to find in Python world</h2>
<p>I don&#8217;t know if it was Django web framework, but still error messages were not so crystal clear. Even PHP prints more useful statements. However, full stack traces always appeared.</p>
<p>I also would like a good debugging environment, for example I&#8217;ll have a look at Eclipse based projects good enough to show me what&#8217;s inside variables and so on, like I do in Java.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codesigner.eu/blog/exploring-non-c-based-languages/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ladies and gentlemen: Lord Voldemort</title>
		<link>http://www.codesigner.eu/blog/ladies-and-gentlemen-lord-voldemort</link>
		<comments>http://www.codesigner.eu/blog/ladies-and-gentlemen-lord-voldemort#comments</comments>
		<pubDate>Sun, 21 Nov 2010 10:36:13 +0000</pubDate>
		<dc:creator>pallu_stfu</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.codesigner.eu/?p=294</guid>
		<description><![CDATA[After the performance tests I ran with Tephlon, I became really curious about how the &#8220;big guys&#8221; of NoSQL are actually performing.
]]></description>
			<content:encoded><![CDATA[<p>After the performance tests I ran with <a href="http://tephlon.codesigner.eu">Tephlon</a>, I became really curious about how the &#8220;big guys&#8221; of NoSQL are actually performing.</p>
<p>Then, my browser arrived at <a href="http://www.vineetgupta.com/2010/01/nosql-databases-part-1-landscape/">Vineet Gupta&#8217;s article</a> (extremely informative), and I got interested in <a href="http://project-voldemort.com/quickstart.php">project voldemort</a>: a key-value store provider written in Java by Linkedin engineers, on the inspiration of Amazon Dynamo.</p>
<p>Tephlon is not aimed to support cluster storage, and it has a synchronous approach to storage. It&#8217;s written in PHP and, in a typical setup, the same PHP process who serves the page needs to get the data stored.</p>
<p>So there&#8217;s an ocean of different prerequisites between Tephlon and Voldemort, even if evolving from the one to the other should pretty easy for a web application, since the aim is the same (providing persistent key-value stores).</p>
<p>Disregard that, I was too curious to set up some little basic performance tests.</p>
<p><img class="aligncenter size-full wp-image-303" title="voldemort" src="http://www.codesigner.eu/wp-content/uploads/2010/11/Untitled-1-e1290344599748.jpg" alt="" width="568" height="270" /> Let&#8217;s say a bit more of project-voldemort. This distributed key-value store  is really powerful. And, as the name hints, there&#8217;s a lot of magic it&#8217;s capable of:</p>
<ul>
<li>Gossip based state propagation</li>
<li>Partitioning and replication</li>
<li>cluster rebalancing</li>
<li>versioning (vector clocks)</li>
<li>pluggable storage engines and serializers</li>
<li>pluggable nio socket implementation</li>
</ul>
<p>Setting it up in an Eclipse environment is as easy as installing <a href="http://www.eclipse.org/egit/">GIT plugin</a> from standard upload sites which come with latest <a href="http://www.eclipse.org/downloads/">Eclipse IDE</a>, cloning <a href="https://github.com/voldemort/voldemort">their git repository</a>, and execute the build.xml ant script.</p>
<p>Then open a terminal, navigate through your Eclipse workspace directories and find voldemort project directory. It contains a bin/ folder. Now execute the following.</p>
<pre> bin/voldemort-server.sh config/single_node_cluster &amp;</pre>
<p>Next step is to open voldemort.examples.ClientExample class (fast class search in Eclipse: ctrl+T), right click on it and execute as java application.</p>
<p>What I did next is writing a bit more code in ClientExample.java, to see better how fast this thing is.</p>
<div style="font-size:75%;">
<p>[java]<br />
public class ClientExample {</p>
<p>    public static void main(String[] args) {</p>
<p>        // In real life this stuff would get wired in<br />
        String bootstrapUrl = &#8220;tcp://localhost:6666&#8243;;<br />
        StoreClientFactory factory =<br />
             new SocketStoreClientFactory(new ClientConfig().setBootstrapUrls(bootstrapUrl));<br />
        StoreClient<String, String> client = factory.getStoreClient(&#8220;test&#8221;);</p>
<p>        Versioned<String> value = client.get(&#8220;key&#8221;);</p>
<p>        long start;<br />
        int testSize = 1000000;<br />
        ArrayList<Long> opTimes = new ArrayList<Long>();<br />
        for(int i = 1; i < testSize; i++) {<br />
            start = System.currentTimeMillis();<br />
            value = client.get("key" + i);<br />
            if(value == null) {<br />
                value = new Versioned<String>(&#8220;x&#8221;);<br />
            }<br />
            value.setObject(&#8220;val&#8221; + i);<br />
            client.put(&#8220;key&#8221; + i, value);<br />
            opTimes.add(System.currentTimeMillis() &#8211; start);<br />
        }</p>
<p>        float sum = 0, avg = 0, min = Float.MAX_VALUE, max = Float.MIN_VALUE;<br />
        for(Long optime: opTimes) {<br />
            sum += optime;<br />
            if(optime > max) {<br />
                max = optime;<br />
            }<br />
            if(optime < min) {<br />
                min = optime;<br />
            }<br />
        }<br />
        avg = sum / opTimes.size();</p>
<p>        System.out.println("RW (GET &#038; SET " + testSize + " entries)\n"<br />
                           + "total time (s)\t: " + sum / 1000 + "\n" +<br />
                           "avg optime (s):\t" + avg / 1000 + "\n"<br />
                           + "longest optime (s):\t" + max / 1000 + "\n" +<br />
                           "shortest optime (s):\t" + min / 1000);<br />
    }<br />
[/java]
</p></div>
<p>So here are some results on my little laptop (2.0GHz core 2 duo, 2GB memory):</p>
<pre>
RW (GET &amp; SET 1000000 entries)
total time (s)	: 835.361
avg optime (s):	8.3536183E-4
longest optime (s):	0.214
shortest optime (s):	0.0</pre>
<p>Quite amazing!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codesigner.eu/blog/ladies-and-gentlemen-lord-voldemort/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secrets about SSDs: the thermal issue</title>
		<link>http://www.codesigner.eu/blog/secrets-about-ssds</link>
		<comments>http://www.codesigner.eu/blog/secrets-about-ssds#comments</comments>
		<pubDate>Sat, 05 Jun 2010 09:38:45 +0000</pubDate>
		<dc:creator>pallu_stfu</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[ssd]]></category>

		<guid isPermaLink="false">http://www.codesigner.eu/?p=254</guid>
		<description><![CDATA[Yesterday I bought a Kingston V+ SSD (128GB). Here is something that I noticed that should really be seriously taken in account if you think about adopting this technology.]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-255" title="kingston-closeup" src="http://www.codesigner.eu/wp-content/uploads/2010/06/kingston-closeup-570x376.jpg" alt="" width="570" height="376"></p>
<p>Yesterday I bought a <a href="http://www.kingston.com/ukroot/ssd/vplus_series.asp?id=2" target="_blank">Kingston V+ SSD (128GB)</a>, pretty much one of the fastest solid state drives on the market (among others of the same size).</p>
<p>Now, SSDs are great, I don&#8217;t regret buying it because it&#8217;s really really fast. But here&#8217;s a relevant thing that I noticed which did not appear in <strong>any </strong>of the reviews around the internet and I would like people to know.</p>
<p>Premise: I installed it &nbsp;in my&nbsp;<a title="Review" href="http://www.notebookreview.com/default.asp?newsID=3806" target="_blank">samsung Q70 laptop</a> (2 years old, 2.0GHz core 2 duo).</p>
<h1>The Thermal issue</h1>
<p>This is what you read from all technical reviews about how good SSDs are and what enormous advantages they represent:</p>
<blockquote><p>Hard disk IO is nowadays the worst bottleneck for our evoluted super fast CPUs. Modern processors have to put themselves to sleep for relatively enormous amount of time, waiting for disk IO to happen.</p></blockquote>
<p>And that&#8217;s definitely true, it&#8217;s such a pity our processor could run a heavy encoding algorithm with a crazy bandwidth, but it needs to face the miserable 25-30MB/s of spinning platters hard disks.</p>
<p>But what happens if hard disks suddenly become 10 times faster?<br />
Automatic installers will go very fast, moving files here and there is awesome, booting takes 1/3 of the time. That&#8217;s true. On the other hand, your CPU average operating &nbsp;temperature will definitely raise. Let&#8217;s see why this thermal issue makes dramatically perfect sense:</p>
<p>Let&#8217;s imagine we need to uncompress 1GB compressed file. Your archiving application will probably perform a tight cycle over each chunk of file:</p>
<ol>
<li>read from arhive (<em>disk IO</em>),</li>
<li>uncompress/dictionary lookup/CRC (<em>CPU computing</em>)</li>
<li>write to uncompressed file (<em>disk IO</em>)</li>
</ol>
<h3>In the HDD case</h3>
<p>We just said that CPU operations are way faster than disk IOs. Let&#8217;s guess computing a data chunk is just even 2 orders of magnitude faster than reading or writing it to disk.</p>
<p>Ratio: CPU time / Disk IO time = 10/2*10^3 = 0,02</p>
<p>This translates like: with all given approximations, <strong>CPU is actually computing 2% of the time</strong>.</p>
<h3>In the SSD case</h3>
<p>In my case, with SSD adoption I achieved almost exactly <strong>10x </strong>disk IO speed. Given the loose hypothesys of the above paragraph, this means that CPU is faster than disk IO just of 1 order of magnitude.</p>
<p>Ratio: CPU time / Disk IO = 10/2*10^2 = 0,2</p>
<p>With disk IO speed boost of SSD, the <strong>CPU is busy for the 20% of the time.</strong></p>
<h3>Conclusion</h3>
<blockquote><p>With 10 times faster disk IO, we expect that during a simple file uncompression (running any autoinstaller) CPU is computing 10 times more intensely.&nbsp;And this will impact on the thermal balance of your computer. Quite much.</p></blockquote>
<p>Of course handling of compressed files is just an example. As far as now, I noticed this behaviour coming visibly up also after rebooting.<br />
This si really something that you don&#8217;t ever think about before you face it. That is also because SSDs keep pretty fresh because of their power efficiency.&nbsp;Thus seems so far from the excited mind of &nbsp;the pre-buyer&#8217;s that he&#8217;ll occur in excessive heat issues.</p>
<p><span style="text-decoration: underline;"> In my specific test looks like the CPU is behaving like a real bottleneck uncompressing a big LZMA archive (7z). CPU was stuck to 100% on BOTH cores during the process (which &#8211; ok &#8211; was happening really fast).</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codesigner.eu/blog/secrets-about-ssds/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Tephlon</title>
		<link>http://www.codesigner.eu/blog/introducing-tephlon</link>
		<comments>http://www.codesigner.eu/blog/introducing-tephlon#comments</comments>
		<pubDate>Sat, 08 May 2010 08:30:03 +0000</pubDate>
		<dc:creator>pallu_stfu</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tephlon]]></category>

		<guid isPermaLink="false">http://www.codesigner.eu/?p=215</guid>
		<description><![CDATA[Tephlon is my new personal project. It&#8217;s a library for PHP and written in PHP.]]></description>
			<content:encoded><![CDATA[<div id="attachment_227" class="wp-caption aligncenter" style="width: 580px"><a href="https://code.google.com/p/tephlon"><img class="size-large wp-image-227  " title="LogoVert_800_01" src="http://www.codesigner.eu/wp-content/uploads/2010/05/LogoVert_800_011-570x376.jpg" alt="" width="570" height="376"></a><p class="wp-caption-text">Tephlon - Relax, we'll do the plumbery</p></div>
<p><a href="http://code.google.com/p/tephlon/" title="" target="_blank">Tephlon </a>is my new personal project. It&#8217;s <strong>a library for PHP and written in PHP</strong>.</p>
<blockquote><p>Tephlon provides a persistence layer to your code such that your variables, strings, objects will still be available in the next HTTP request.</p></blockquote>
<p>It provides a <em>core </em>persistence engine, which takes care of handling and maintaining caching records, and a set of &#8220;<em>data types</em>&#8221; classes which build the &#8220;transparent&#8221; persistence abstraction.</p>
<p><s>It&#8217;s still quite new, at the time of writing we&#8217;re at version&nbsp;</s><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"><s>v1_0-pre2 </s><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;"><s>, and the core API is still subject to changes</s>, but the results of performance test and whole architecture are very very promising.</span></span></p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;"><b>UPDATE</b>: Released <b>version v1_0</b> generally available for <a href="http://code.google.com/p/tephlon/downloads/list" title="" target="">download</a>! I also made a guide for <a href="http://code.google.com/p/tephlon/wiki/Codeigniter" title="" target="_blank">integration </a>with <a href="http://codeigniter.com/" title="" target="_blank">Codeigniter</a></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codesigner.eu/blog/introducing-tephlon/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software engineering applied to CSS: DRY rule</title>
		<link>http://www.codesigner.eu/articles/software-engineering-applied-to-css-dry-rule</link>
		<comments>http://www.codesigner.eu/articles/software-engineering-applied-to-css-dry-rule#comments</comments>
		<pubDate>Mon, 19 Oct 2009 14:00:32 +0000</pubDate>
		<dc:creator>pallu_stfu</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DRY]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://www.codesigner.eu/?p=180</guid>
		<description><![CDATA[You will not want to mention the presence of a steering wheel and pedals every time you are asked to describe what a Lamborghini supercar is.]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-183" title="Lamborghini in the DRY" src="http://www.codesigner.eu/wp-content/uploads/2009/10/dry_lambo.jpg" alt="Lamborghini in the DRY" width="570" height="320" />For the sake of this same principle <a href="http://blogs.msdn.com/steverowe/archive/2008/05/15/design-principle-don-t-repeat-yourself.aspx">(Don&#8217;t Repeat Yoruself</a>), I will not spend many lines about *WHY* it&#8217;s important not to duplicate information in informatics in general.</p>
<p>Basically the reasons always fall into being a matter of :</p>
<ul>
<li><strong>Data consistency</strong>, think about databases, you hopefully want to update the date of birth of a person just in the &#8216;people&#8217; table, and not into every table who references a person.</li>
<li><strong>Mantainability, </strong>think about programming, you will not want to mention the presence of a steering wheel and pedals when you are asked to describe what a Lamborghini supercar is.<br />
Maybe you will mention these basic common characteristics  if somebody asks you what a car is. Then, when they ask you about Lamborghini you will just mention it&#8217;s a car and the person will understand it has steering wheel and all the rest.</li>
</ul>
<p>All these extremely good reasons not to repeat yourself in informatics derive from the fact that whenever needed, the one who&#8217;s best to do operations in cycle without errors is the computer, not the programmer.</p>
<h3>Advice</h3>
<p>Even if DRY mindset is very encouraged while producing new code, it&#8217;s also true that obtaining very good DRYness at first shot is very uncommon. In fact it is a process that will put yourself using precious time, energies and concentration just into <a href="http://en.wikipedia.org/wiki/Code_refactoring">refactoring</a><a href="http://en.wikipedia.org/wiki/Code_refactoring"> </a>old code.<br />
Useless to say that this is maybe the best investment in future you can do, and it will pay back more and more as the project grows.</p>
<h3>DRY approach to CSS</h3>
<p>Said that DRY is necessary and achievable at different degrees through a process of progressive code refactoring, let&#8217;s see how it applies to this very unconventional language: CSS.<br />
In other environments like C++ and Java we can leverage the explicit inheritance at a class level. For example we can say in Java:</p>
<pre>Class Lamborghini extends Car {
   public Lamborghini (..) {
      ...
   }
}</pre>
<p>This means that every lamborghini object we create, an instance of the class Lamborghini will be created and it will<span style="text-decoration: underline;"> always</span> inherit every characteristic (methods and fields) of the class Car.</p>
<pre>...
// myLambo is also a Car object!
Lamborghini myLambo = new Lamborghini(..);
...</pre>
<p>In CSS this does not really happen in such a clean way. There absolutely is inheritance, and it&#8217;s very useful. Just that every object (xhtml DOM element) is able to choose its parents. As many as it wants.<br />
Here comes an example.</p>
<pre>
/* Declaring a CSS class into stylesheet */
.footer_block {
 ..
}
.category_posts_block <span style="text-decoration: line-through;">extends .footer_block</span> { // No way, man.
  ...
}</pre>
<p>And in the xhtml document..</p>
<pre>
/* Instantiating an xhtml node (read: object) into xhtml DOM */
&lt;div class="footer_block category_posts_block"&gt;
  ...
&lt;/div&gt;
</pre>
<p>This inversion of control has very likely been chosen to remark the secondary role that the style needs to have towards the content. Indeed, in the <a href="http://stevenclark.com.au/2007/09/22/content-presentation-behaviour/">three layers model</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codesigner.eu/articles/software-engineering-applied-to-css-dry-rule/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazing swiss poster design from &#8217;60s</title>
		<link>http://www.codesigner.eu/blog/amazingly-inspiring-swiss-posters-from-60s</link>
		<comments>http://www.codesigner.eu/blog/amazingly-inspiring-swiss-posters-from-60s#comments</comments>
		<pubDate>Fri, 16 Oct 2009 20:55:07 +0000</pubDate>
		<dc:creator>pallu_stfu</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Swiss]]></category>
		<category><![CDATA[Typography]]></category>

		<guid isPermaLink="false">http://www.codesigner.eu/?p=161</guid>
		<description><![CDATA[Notice how absolutely none of these designs includes Helvetica. Notice also the amount of  &#8221;Swissness&#8221; into these designs thanks to the use of typography, the intense and precise use of grids to structure the information and underline its semantics. Full screen &#38; enjoy.]]></description>
			<content:encoded><![CDATA[<p><object width="570" height="600"><param name="flashvars" value="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fblankaposters%2Fsets%2F72157605199393277%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fblankaposters%2Fsets%2F72157605199393277%2F&#038;set_id=72157605199393277&#038;jump_to="></param><param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fblankaposters%2Fsets%2F72157605199393277%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fblankaposters%2Fsets%2F72157605199393277%2F&#038;set_id=72157605199393277&#038;jump_to=" width="570" height="600"></embed></object></p>
<p>Notice how absolutely none of these designs includes Helvetica. Notice also the amount of  &#8221;Swissness&#8221; into these designs thanks to the use of typography, the intense and precise use of grids to structure the information and underline its semantics.</p>
<p>Full screen &amp; enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codesigner.eu/blog/amazingly-inspiring-swiss-posters-from-60s/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Looking for a job? Check this out</title>
		<link>http://www.codesigner.eu/blog/computer-engineer-workplace</link>
		<comments>http://www.codesigner.eu/blog/computer-engineer-workplace#comments</comments>
		<pubDate>Fri, 16 Oct 2009 14:01:15 +0000</pubDate>
		<dc:creator>pallu_stfu</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Made me laugh]]></category>

		<guid isPermaLink="false">http://www.codesigner.eu/?p=147</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-159" title="engineers" src="http://www.codesigner.eu/wp-content/uploads/2009/10/engineers.jpg" alt="engineers" width="570" height="402" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codesigner.eu/blog/computer-engineer-workplace/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CU3ER – Great tool to create impressivly intense homepages</title>
		<link>http://www.codesigner.eu/blog/cu3er-%e2%80%93-great-tool-to-create-impressivly-intense-homepages</link>
		<comments>http://www.codesigner.eu/blog/cu3er-%e2%80%93-great-tool-to-create-impressivly-intense-homepages#comments</comments>
		<pubDate>Thu, 15 Oct 2009 11:42:38 +0000</pubDate>
		<dc:creator>pallu_stfu</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[sliders]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.codesigner.eu/?p=121</guid>
		<description><![CDATA[This tool is basically a very powerful flash-based content slider (rotator). It&#8217;s free to use and in my opinion it can really kick-ass into a homepage of a commercial web design. Thanks a lot, progressivered.com!]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.codesigner.eu/wp-content/uploads/2009/10/cu3r.jpg" alt="cu3r" title="cu3r" width="570" height="249" class="aligncenter size-full wp-image-168" /><br />
This tool is basically a very powerful flash-based content slider (rotator). It&#8217;s free to use and in my opinion it can really kick-ass into a homepage of a commercial web design.</p>
<p>Thanks a lot, <a href="http://www.progressivered.com/">progressivered.com</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codesigner.eu/blog/cu3er-%e2%80%93-great-tool-to-create-impressivly-intense-homepages/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to make PNG images to look the same in every browser</title>
		<link>http://www.codesigner.eu/blog/how-to-make-png-images-to-look-the-same-in-every-browser</link>
		<comments>http://www.codesigner.eu/blog/how-to-make-png-images-to-look-the-same-in-every-browser#comments</comments>
		<pubDate>Thu, 15 Oct 2009 09:55:49 +0000</pubDate>
		<dc:creator>pallu_stfu</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[graphic]]></category>
		<category><![CDATA[PNG]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.codesigner.eu/?p=119</guid>
		<description><![CDATA[If you don&#8217;t set the right encoding parameters, PNG images are not going to be rendered the same way across every browser. This is a well known problem. What was much less known is the solution: - in Photoshop, turn on proof colors (view -&#62; proof colors) - make sure your proof setup is set [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-238" title="png" src="http://www.codesigner.eu/wp-content/uploads/2009/10/png-570x334.jpg" alt="" width="570" height="334" /></p>
<p>If you don&#8217;t set the right encoding parameters, PNG images are not going to be rendered the same way across every browser. This is a well known problem.</p>
<p>What was much less known is the solution:</p>
<blockquote><p>- in Photoshop, turn on proof colors (view -&gt; proof colors)<br />
- make sure your proof setup  is set to “monitor rgb” (view -&gt; proof setup -&gt; monitor rgb)<br />
- when you save for web, make sure you do 24 bit png, interlacing OFF, and uncheck convert to srgb</p></blockquote>
<p>via: <a href="http://www.swiss-miss.com/2009/10/consistent-png-quality-across-browsers.html">swiss-miss</a></p>
<p><span style="position: absolute; padding: 1px 4px; color: infotext; z-index: 10000; cursor: pointer; left: 580px; top: 328px;">save</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codesigner.eu/blog/how-to-make-png-images-to-look-the-same-in-every-browser/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software engineering gold rules applied to CSS: Modularity</title>
		<link>http://www.codesigner.eu/blog/software-engineering-rules-applied-to-css-modularity</link>
		<comments>http://www.codesigner.eu/blog/software-engineering-rules-applied-to-css-modularity#comments</comments>
		<pubDate>Thu, 08 Oct 2009 10:23:35 +0000</pubDate>
		<dc:creator>pallu_stfu</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.codesigner.eu/?p=86</guid>
		<description><![CDATA[Today I thought about how to get advantage of what we learn in software engineering classes and from more classical programming experiences and best practices. Now, CSS is an awckwardly false-easy language. Especially coming from OOP (object oriented programming) it sometimes makes you really confused and frustrated. But you don&#8217;t understand what&#8217;s the problem with [...]]]></description>
			<content:encoded><![CDATA[<p>Today I thought about how to get advantage of what we learn in software engineering classes and from more classical programming experiences and best practices.</p>
<p>Now, CSS is an awckwardly false-easy language. Especially coming from OOP (object oriented programming) it sometimes makes you really confused and frustrated.<br />
But you don&#8217;t understand what&#8217;s the problem with it as long as you are into doing CSS (in fact you just feel dumb..). You really realize the problem just and only when you go back to OOP after using CSS: it&#8217;s wonderland! No surprise it feels so cozy to be back in a place in which:</p>
<ul>
<li><strong>classes </strong>correspond <span style="text-decoration: underline;">exactly</span> to the real-world concept of classes,</li>
<li><strong>inheritance </strong>is a thing that you have some decisional power about,</li>
<li>if it compiles, you can assume it will <strong>behave in a predictable way</strong> in all the platforms it&#8217;s supposed to run on,</li>
<li>you use the <strong>same language</strong> to define the appearence and the behaviour of the output,</li>
<li>your final output is the result of computation of <strong>one </strong>known machine that you can<strong> state the technical specs</strong> of. In CSS you are really not going to have control on the nature of the interpreter of your code (the browser).</li>
<li>You can declare <strong>constants</strong>, yes, I didn&#8217;t say variables. Coming from CSS you will watch them really with different eyes.</li>
</ul>
<p>But in a further analysis, it&#8217;s not so true that all the OOP experience is useless when coming to CSS. It&#8217;s almsost the opposite.<br />
Back to software engineering lessons, they  <span style="text-decoration: line-through;">tought us to keep in mind</span> wrote with fire to our mind a set of principles to stick to whenever approaching a project. One of these is certainly <strong>modularity</strong>.  Let&#8217;s see how to leverage this principle while using CSS.</p>
<p><img class="aligncenter size-full wp-image-241" title="mondrian" src="http://www.codesigner.eu/wp-content/uploads/2009/10/mondrian.gif" alt="" width="570" height="267" /></p>
<h3 style="font-size: 1.17em;">Applying Modularity concept to CSS</h3>
<p>There&#8217;s at least a couple of orthogonal ways in which the process of modularization can be used in CSS. The first is breaking down the stylesheet into different files, representing the what I call &#8220;<strong>aspects</strong>&#8221; of our final layout. For example, in a typical scenario we&#8217;ll have:</p>
<ul>
<li><strong>reset.css</strong><br />
With this file we reset the properties of default elements to a known value that will be common to all browsers, regardless of browser&#8217;s built in default paddings, margins, etc.  This will strike a large part of the cross browser incompatibilities, which are still today the major pain of who develops for the web. Remember to <span style="text-decoration: underline;">reset also typographic elements</span> like paragraph, headings, blockquotes, table, lists, etc.<br />
As a rule of thumb, be sure that you have no standard elements out of this file, or dually that all the elements declared in other stylesheets are classes or ids.</li>
<li><strong>ie6.css/ie7.css</strong><br />
<span style="font-weight: normal;">Unfortunately sometimes you will also need to deal with cross broswer incompatibilities that </span><span style="font-weight: normal;"> need a <a href="http://www.lessfussdesign.com/blog/2008/06/conditional-comments-for-ie/">conditional comment</a> and a specific stylesheet for internet explorer 6 or 7 (or both).<br />
</span></li>
<li><strong>grid.css</strong><br />
Here we define the classes which define the width in terms of multiple of a grid column width. In order to define a proper grid with proper gutters (implemented with margins in css), please refer for example to <a href="http://www.960.gs">960 grid system project</a> (which by the way includes an excelent reset.css).</li>
<li><strong>structure.css</strong><br />
This contains the declarations of the divs that partition the page&#8217;s real estate. If you worked well in grid.css you don&#8217;t need to position them anywhere, just declare here the heights (optional) , look and feel (background images, borders), vertical margins and other styling related properties.</li>
<li><strong>typography.css</strong><br />
While generic properties of unstyled text should be specified into reset.css, here instead you define  all the deltas between standard elements and class/id specific elements.</li>
</ul>
<p>The second layer of modularity that you can add to your stylesheets  is giving a precise hierarchy to the content. Really doesn&#8217;t matter which hierarchy and in which order you walk by it, just choose one. In the following example I chose a visual hierarchy, and I walked by it from top to down.<br />
Please be sure also to have a tidy and consistent use of comments in support to this. It helps always a lot.</p>
<pre><img class="alignright size-full wp-image-110" title="schemacss" src="http://www.codesigner.eu/wp-content/uploads/2009/10/schemacss.gif" alt="schemacss" width="300" height="400" />/*
 * Header
 */

#header h2 {
 color: #333;
 font-weight: 600;
 font-size: 2em;
}
#headline p{
 font-size:1.2em;
}
/* End Header */

/*
 * Sidebar
 */
#sidebar h1{
 font-size: 1.3em;
}
.side-block p{
 color: #555;
 ...
}
/* end Sidebar */

/*
 * Footer
 */
#sidebar h1{
 font-size: 1.3em;
}
.side-block p{
 color: #555;
 ...
}
/* end Footer */</pre>
<p><span style="position: absolute; padding: 1px 4px; color: infotext; z-index: 10000; cursor: pointer; left: 708px; top: 2354px;">save</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codesigner.eu/blog/software-engineering-rules-applied-to-css-modularity/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

