<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Blog do Fernando Meyer</title><link>http://fernandomeyer.com</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/fmeyer" /><description>ipsa scientia potestas est</description><language>en</language><lastBuildDate>Thu, 06 May 2010 13:51:59 PDT</lastBuildDate><generator>http://wordpress.org/?v=2.9.2</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/fmeyer" /><feedburner:info uri="fmeyer" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-nd/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><item><title>Writing a domain specific language DSL with python</title><link>http://feedproxy.google.com/~r/fmeyer/~3/5iFZYHsk__k/</link><category>python</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">fmeyer</dc:creator><pubDate>Sat, 05 Sep 2009 14:51:53 PDT</pubDate><guid isPermaLink="false">http://fernandomeyer.com/writing-a-domain-specific-language-dsl-with-python/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffernandomeyer.com%2Fwriting-a-domain-specific-language-dsl-with-python%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffernandomeyer.com%2Fwriting-a-domain-specific-language-dsl-with-python%2F&amp;source=fmeyer&amp;style=compact&amp;service=bit.ly" height="61" width="50" />
			</a>
		</div><p>A domain-specific language is a piece of software designed to be useful for a specific task in a fixed problem domain, they&#8217;re gaining popularity because they enhance productivity and reusability of artifacts. DSLs also enable expression and validation of concepts at the level of abstraction of the problem domain, this approach is very useful when you need to describe a user interface, a business process, a database, or the flow of information.</p>

<p>The DSL concept isn&#8217;t new after all, special-purpose programming languages and all kinds of modeling, specification languages have always existed, but this term rise due the popularity of <em>domain-specific model</em>.</p>

<p>You can easily implement dsls using <strong><a href="http://jroller.com/rolsen/entry/building_a_dsl_in_ruby1">the ruby language</a></strong>, <strong><a href="http://www.antlr.org/">Java</a></strong> or even <a href="http://www.devx.com/codemag/Article/41059">C#</a> if you prefer, but this isn&#8217;t the main propose of this article. The <em>sine qua non</em> become visible when I was implementing a simple test case with python. Indeed, there are a lot of python BDD-like frameworks, mostly who are self claimed <em>the silver bullet</em>, that are mismatching a lot of basic principles, but like I said, we are talking about dsls =)</p>

<p>With python we can easily create a piece of software that expresses some basic desired behavior, like rspec does, but much more pythonic.</p>

<p><strong>spec.py</strong></p>


<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># coding: pyspec</span>
    <span style="color: #ff7700;font-weight:bold;">class</span> Bow:
        <span style="color: #ff7700;font-weight:bold;">def</span> shot<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;got shot&quot;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">def</span> score<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #ff4500;">5</span>
&nbsp;
    describe Bowling:
        it <span style="color: #483d8b;">&quot;should score 0 for gutter game&quot;</span>:
            bowling = Bow<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
            bowling.<span style="color: black;">shot</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">assert</span> that bowling.<span style="color: black;">score</span>.<span style="color: black;">should_be</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span></pre></div></div>


<p>we can easily make this test dsl a runnable piece of python code, whiteout writing incompressible regular expressions, just using the python codecs and tokenizer.</p>

<p>Fist of all we need to define a new encoding for pyspec &#8211; <em>our pre defined spec file syntax</em> &#8211; this neat hacking enables a new path to tokenize this file</p>

<p><strong>tokenizer.py</strong></p>


<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">tokenize</span>
    <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">codecs</span>, <span style="color: #dc143c;">cStringIO</span>, <span style="color: #dc143c;">encodings</span>
    <span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">encodings</span> <span style="color: #ff7700;font-weight:bold;">import</span> utf_8
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">class</span> StreamReader<span style="color: black;">&#40;</span>utf_8.<span style="color: black;">StreamReader</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #66cc66;">*</span>args, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span>:
            <span style="color: #dc143c;">codecs</span>.<span style="color: black;">StreamReader</span>.<span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #66cc66;">*</span>args, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span>
            data = <span style="color: #dc143c;">tokenize</span>.<span style="color: black;">untokenize</span><span style="color: black;">&#40;</span>translate<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">stream</span>.<span style="color: #dc143c;">readline</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
            <span style="color: #008000;">self</span>.<span style="color: black;">stream</span> = <span style="color: #dc143c;">cStringIO</span>.<span style="color: #dc143c;">StringIO</span><span style="color: black;">&#40;</span>data<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> search_function<span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">if</span> s<span style="color: #66cc66;">!</span>=<span style="color: #483d8b;">'pyspec'</span>: <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">None</span>
        utf8=<span style="color: #dc143c;">encodings</span>.<span style="color: black;">search_function</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf8'</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># Assume utf8 encoding</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #dc143c;">codecs</span>.<span style="color: black;">CodecInfo</span><span style="color: black;">&#40;</span>
            name=<span style="color: #483d8b;">'pyspec'</span>,
            encode = utf8.<span style="color: black;">encode</span>,
            decode = utf8.<span style="color: black;">decode</span>,
            incrementalencoder=utf8.<span style="color: black;">incrementalencoder</span>,
            incrementaldecoder=utf8.<span style="color: black;">incrementaldecoder</span>,
            streamreader=StreamReader,
            streamwriter=utf8.<span style="color: black;">streamwriter</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #dc143c;">codecs</span>.<span style="color: black;">register</span><span style="color: black;">&#40;</span>search_function<span style="color: black;">&#41;</span></pre></div></div>


<p>Our tiny translate function defines a easy way to translate both <strong>describe</strong> and <strong>it</strong> into a traditional python class and method definition.</p>


<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> method_for_it<span style="color: black;">&#40;</span><span style="color: #dc143c;">token</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #dc143c;">token</span>.<span style="color: black;">strip</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">replace</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot; &quot;</span>, <span style="color: #483d8b;">&quot;_&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">replace</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span>,<span style="color: #483d8b;">&quot;&quot;</span> <span style="color: black;">&#41;</span> + <span style="color: #483d8b;">&quot;(self)&quot;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> translate<span style="color: black;">&#40;</span><span style="color: #dc143c;">readline</span><span style="color: black;">&#41;</span>:
        previous_name = <span style="color: #483d8b;">&quot;&quot;</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: #008000;">type</span>, name,_,_,_ <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #dc143c;">tokenize</span>.<span style="color: black;">generate_tokens</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">readline</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">type</span> ==<span style="color: #dc143c;">tokenize</span>.<span style="color: black;">NAME</span> <span style="color: #ff7700;font-weight:bold;">and</span> name ==<span style="color: #483d8b;">'describe'</span>:
                <span style="color: #ff7700;font-weight:bold;">yield</span> <span style="color: #dc143c;">tokenize</span>.<span style="color: black;">NAME</span>, <span style="color: #483d8b;">'class'</span>
            <span style="color: #ff7700;font-weight:bold;">elif</span> <span style="color: #008000;">type</span> ==<span style="color: #dc143c;">tokenize</span>.<span style="color: black;">NAME</span> <span style="color: #ff7700;font-weight:bold;">and</span> name ==<span style="color: #483d8b;">'it'</span>:
                <span style="color: #ff7700;font-weight:bold;">yield</span> <span style="color: #dc143c;">tokenize</span>.<span style="color: black;">NAME</span>, <span style="color: #483d8b;">'def'</span>
            <span style="color: #ff7700;font-weight:bold;">elif</span> <span style="color: #008000;">type</span> == <span style="color: #ff4500;">3</span> <span style="color: #ff7700;font-weight:bold;">and</span> previous_name == <span style="color: #483d8b;">'it'</span>:
                <span style="color: #ff7700;font-weight:bold;">yield</span> <span style="color: #ff4500;">3</span>, method_for_it<span style="color: black;">&#40;</span>name<span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">else</span>:
                <span style="color: #ff7700;font-weight:bold;">yield</span> <span style="color: #008000;">type</span>,name
            previous_name = name</pre></div></div>


<p>Clever isn&#8217;t ? Now, fell yourself free to fork this project on GitHub and finish the job =) maybe someday we can have a real BDD python framework. <strong><a href="http://github.com/fmeyer/pydsl/tree/master">http://github.com/fmeyer/pydsl/tree/master</a></strong></p>

<p>References:</p>

<ol>
<li><p><a href="http://docs.python.org/library/codecs.html">codecs — Codec registry and base classes</a></p></li>
<li><p><a href="http://docs.python.org/library/tokenize.html">tokenize — Tokenizerfor Python source</a></p></li>
</ol>

<p><a href="http://feedads.g.doubleclick.net/~a/iljp9Ije7HtfiLOnJwhyHxfUxYE/0/da"><img src="http://feedads.g.doubleclick.net/~a/iljp9Ije7HtfiLOnJwhyHxfUxYE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/iljp9Ije7HtfiLOnJwhyHxfUxYE/1/da"><img src="http://feedads.g.doubleclick.net/~a/iljp9Ije7HtfiLOnJwhyHxfUxYE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/fmeyer/~4/5iFZYHsk__k" height="1" width="1"/>]]></content:encoded><description>A domain-specific language is a piece of software designed to be useful for a specific task in a fixed problem domain, they&amp;#8217;re gaining popularity because they enhance productivity and reusability of artifacts. DSLs also enable expression and validation of concepts at the level of abstraction of the problem domain, this approach is very useful when [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://fernandomeyer.com/writing-a-domain-specific-language-dsl-with-python/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://fernandomeyer.com/writing-a-domain-specific-language-dsl-with-python/</feedburner:origLink></item><item><title>Pagerank isn’t for humans</title><link>http://feedproxy.google.com/~r/fmeyer/~3/_M6g6JO0a7U/</link><category>Sem categoria</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">fmeyer</dc:creator><pubDate>Sat, 29 Aug 2009 22:13:26 PDT</pubDate><guid isPermaLink="false">http://fernandomeyer.com/pagerank-isnt-for-humans/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffernandomeyer.com%2Fpagerank-isnt-for-humans%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffernandomeyer.com%2Fpagerank-isnt-for-humans%2F&amp;source=fmeyer&amp;style=compact&amp;service=bit.ly" height="61" width="50" />
			</a>
		</div><p>Transitioning from a web of links and a sequence of words to a web of content, meaning and knowledge is probably the next great moving that we are going to see on the next two or maybe three years.</p>

<p>I was chatting with a friend, how can we bring knowledge to the web, how can we use the web to make a really efficient human driven search engine, last week a few former Googlers made some noise about a totally new SE named cuil, I tried some queries on that page, but it does work almost like google, you must be pretty much binary to retrieve some interesting information, in another words, nothing has changed since 90’s on this area. This problem is around researcher’s minds for a long time, trust, influence, authority when applied to the web are essentially people based issues.</p>

<p>The propose is the content being an asset with information about what it really means running against the link/words algorithms with no explicit meaning and a simple assumption “yes … we know you’re a good reference because you have a lot of links”.</p>

<blockquote><p>Make yourself a question, how to ask something? How do I ask for information?</p></blockquote>

<p>You ask your close friend: “Sunday night guitar red cap TV?” when you really want to know about the Sunday night TV show where a girl with a funny red cap playing a guitar. Things does change when you bring meaning to it, thats what a human being does.</p>

<p>Indeed, Google is still leading this running, with several fields under <a href="http://research.google.com/pubs/papers.html#ArtificialIntelligenceandDataMining" target="&#95;blank">extreme research</a>, articles about Data Mining, Collective Intelligence and AI being published denotes the new approach.</p>

<p>Yes … things are about to change </p>

<p><a href="http://feedads.g.doubleclick.net/~a/miKlKahCQViHcwtWsmcMB71yHW4/0/da"><img src="http://feedads.g.doubleclick.net/~a/miKlKahCQViHcwtWsmcMB71yHW4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/miKlKahCQViHcwtWsmcMB71yHW4/1/da"><img src="http://feedads.g.doubleclick.net/~a/miKlKahCQViHcwtWsmcMB71yHW4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/fmeyer/~4/_M6g6JO0a7U" height="1" width="1"/>]]></content:encoded><description>Transitioning from a web of links and a sequence of words to a web of content, meaning and knowledge is probably the next great moving that we are going to see on the next two or maybe three years.

I was chatting with a friend, how can we bring knowledge to the web, how can we [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://fernandomeyer.com/pagerank-isnt-for-humans/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://fernandomeyer.com/pagerank-isnt-for-humans/</feedburner:origLink></item><item><title>O scrume</title><link>http://feedproxy.google.com/~r/fmeyer/~3/q2UnNjXJfqE/</link><category>Sem categoria</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">fmeyer</dc:creator><pubDate>Fri, 28 Aug 2009 16:52:11 PDT</pubDate><guid isPermaLink="false">http://fernandomeyer.com/o-scrume-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffernandomeyer.com%2Fo-scrume-2%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffernandomeyer.com%2Fo-scrume-2%2F&amp;source=fmeyer&amp;style=compact&amp;service=bit.ly" height="61" width="50" />
			</a>
		</div><p>Como varias pessoas próximas a mim ja sabem eu deixei a RedHat em abril deste ano por motivos pessoais, o trabalho remoto mesmo tendo suas vantagens não conseguiu despertar em mim a mesma proatividade e cumplicidade que eu teria trabalhando com pessoas reais durante o dia-a-dia. Trabalhar em uma empresa em que eu pudesse estar fisicamente locado com um time e desenvolvendo um software incremental foram os motivos que me levaram a <a href="http://sledge.boo-box.com/list/page/Z2xvYm9fIyNfYm94XyMjX3RhZ2dpbmctdG9vbC13cF8jI18yMTY1ODM=-56" class="bbli">globo<img src="http://boo-box.com/bbli" alt="[bb]" class="bbic" /></a>.com.</p>

<p>Dentro da gcom trabalhamos usando a metodologia <a href="http://sledge.boo-box.com/list/page/U2NydW1fIyNfYm94XyMjX3RhZ2dpbmctdG9vbC13cF8jI18yMTY1ODM=-56" class="bbli">Scrum<img src="http://boo-box.com/bbli" alt="[bb]" class="bbic" /></a>, temos varios casos de sucesso e uma boa reputaçao no mercado brasileiro com a adoção desta metodologia. Mas o sucesso dos projetos não vem apenas do uso de uma metodologia agil, pessoas com otimas noções de negócio e tecnologia fazem o barco andar de forma gloriosa. Tive a sorte de participar logo no primeiro contato na empresa com profissionais que valorizam a qualidade de seu código, alem de entregar algo rápido e funcional também olham para o como fazer melhor, refatorar um algoritmo que não ficou bom em uma primeira abordagem, ou seja fazemos software.</p>

<p>Sempre brinco pelos corredores, que hoje em dia que as empresas se preocupam mais em vender a imagem que fazem o negocio de uma forma diferente das demais e deixam totalmente de lado as boas praticas de desenvolvimento que foram esculpidas durante anos de tentativas, erros e evoluções. Nasce ai o Scrume, a desculpa de usar a metodologia e/ou a abordagem agile com pessoas que não levam à paixão seu trabalho. Conversas que tive com o <a href="http://fmeyer.org/archives/2008/11/20/o-scrume/www.fragmental.com.br" target="&#95;blank">Philip calçado</a> e artigos como <a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html" target="&#95;blank">“The Decline and Fall of Agile”</a> veem apenas confirmar esta visão, anos de evolução sendo deixadas de lado por modismos.</p>

<p>Se você pensar de uma maneira racional, software vem sendo desenvolvido ao longo dos anos possibilitando avanços significativos em vários campos como <a href="http://sledge.boo-box.com/list/page/YmlvbG9naWFfIyNfYm94XyMjX3RhZ2dpbmctdG9vbC13cF8jI18yMTY1ODM=-60" class="bbli">biologia<img src="http://boo-box.com/bbli" alt="[bb]" class="bbic" /></a>, <a href="http://sledge.boo-box.com/list/page/YXN0cm9ub21pYV8jI19ib3hfIyNfdGFnZ2luZy10b29sLXdwXyMjXzIxNjU4Mw==-64" class="bbli">astronomia<img src="http://boo-box.com/bbli" alt="[bb]" class="bbic" /></a> e <a href="http://sledge.boo-box.com/list/page/ZmluYW4lRTdhc18jI19ib3hfIyNfdGFnZ2luZy10b29sLXdwXyMjXzIxNjU4Mw==-64" class="bbli">finanças<img src="http://boo-box.com/bbli" alt="[bb]" class="bbic" /></a> para não me alongar, a não adoção do “scrum” não fez projetos como linux ou colocar o homem na lua com um tubo de 8088 por exemplo ser fadado ao fracasso. Ocorreram erros, acertos e em alguns momentos pessoas precisaram se sobrepor para trazer o bom senso a tona.</p>

<p>Concordo plenamente que a adoção do scrum por exemplo, aumenta a visibilidade dos problemas que ocorrem no desenvolvimento de features por termos um <a href="http://sledge.boo-box.com/list/page/ZmVlZGJhY2tfIyNfYm94XyMjX3RhZ2dpbmctdG9vbC13cF8jI18yMTY1ODM=-60" class="bbli">feedback<img src="http://boo-box.com/bbli" alt="[bb]" class="bbic" /></a> rápido do cliente ou da organização, mas não é tendo apenas essa abordagem que fara seu projeto ser bem sucedido.</p>

<p>Os projetos hoje que dão certo, estão envoltos em uma gama de outros fatores que equilibram essa equação. Fica meu conselho, não é trazendo um <a href="http://sledge.boo-box.com/list/page/ZXZhbmdlbGlzdGFfIyNfYm94XyMjX3RhZ2dpbmctdG9vbC13cF8jI18yMTY1ODM=-64" class="bbli">evangelista<img src="http://boo-box.com/bbli" alt="[bb]" class="bbic" /></a> e adotanto Scrum para sua empresa que fará seus projetos darem certo, mas se e somente se as pessoas envolvidas acreditarem no que estão fazendo.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/BPJ3ozA3SQtSJbeQMGp42boH9Tg/0/da"><img src="http://feedads.g.doubleclick.net/~a/BPJ3ozA3SQtSJbeQMGp42boH9Tg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BPJ3ozA3SQtSJbeQMGp42boH9Tg/1/da"><img src="http://feedads.g.doubleclick.net/~a/BPJ3ozA3SQtSJbeQMGp42boH9Tg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/fmeyer/~4/q2UnNjXJfqE" height="1" width="1"/>]]></content:encoded><description>Como varias pessoas próximas a mim ja sabem eu deixei a RedHat em abril deste ano por motivos pessoais, o trabalho remoto mesmo tendo suas vantagens não conseguiu despertar em mim a mesma proatividade e cumplicidade que eu teria trabalhando com pessoas reais durante o dia-a-dia. Trabalhar em uma empresa em que eu pudesse estar [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://fernandomeyer.com/o-scrume-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://fernandomeyer.com/o-scrume-2/</feedburner:origLink></item><item><title>Configuring Joseki + Pellet + TDB</title><link>http://feedproxy.google.com/~r/fmeyer/~3/uxzAXgHIdDY/</link><category>Sem categoria</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">fmeyer</dc:creator><pubDate>Wed, 26 Aug 2009 20:45:21 PDT</pubDate><guid isPermaLink="false">http://fernandomeyer.com/configuring-joseki-pellet-tdb/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffernandomeyer.com%2Fconfiguring-joseki-pellet-tdb%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffernandomeyer.com%2Fconfiguring-joseki-pellet-tdb%2F&amp;source=fmeyer&amp;style=compact&amp;service=bit.ly" height="61" width="50" />
			</a>
		</div><p>I was looking for some documentation about using TDB and Pellet <br />
reasoser on Jena without pet peeves, <em>didn’t</em> found anything <strong>usable</strong> at all, so after a few <br />
attempts I was still fighting against an ambiguity error, <br />
whenever Joseki tries to build a dataset, the following exception pops up</p>


<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #cc66cc;">18</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">18</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">49</span> WARN  Configuration        <span style="color: #339933;">::</span> Failed to build dataset from
description <span style="color: #009900;">&#40;</span>service name<span style="color: #339933;">:</span> reason<span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span> cannot find a most specific type
<span style="color: #000000; font-weight: bold;">for</span> file<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">///joseki-config.ttl#dataset_reason, which has as</span>
possibilities<span style="color: #339933;">:</span> ja<span style="color: #339933;">:</span>RDFDataset ja<span style="color: #339933;">:</span>InfModel.
<span style="color: #006633;">com</span>.<span style="color: #006633;">hp</span>.<span style="color: #006633;">hpl</span>.<span style="color: #006633;">jena</span>.<span style="color: #006633;">assembler</span>.<span style="color: #006633;">exceptions</span>.<span style="color: #006633;">AmbiguousSpecificTypeException</span><span style="color: #339933;">:</span>
cannot find a most specific type <span style="color: #000000; font-weight: bold;">for</span> file<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">///Users/fmeyer/projects/semantic/</span>
servicos<span style="color: #339933;">/</span>joseki<span style="color: #339933;">/</span>joseki<span style="color: #339933;">-</span>config.<span style="color: #006633;">ttl</span>#dataset_reason, which has as possibilities<span style="color: #339933;">:</span> 
ja<span style="color: #339933;">:</span>RDFDataset ja<span style="color: #339933;">:</span>InfModel.
 <span style="color: #006633;">at</span> com.<span style="color: #006633;">hp</span>.<span style="color: #006633;">hpl</span>.<span style="color: #006633;">jena</span>.<span style="color: #006633;">assembler</span>.<span style="color: #006633;">assemblers</span>.<span style="color: #006633;">AssemblerGroup</span>$PlainAssemblerGroup.
 <span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span>AssemblerGroup.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">104</span><span style="color: #009900;">&#41;</span>
 at com.<span style="color: #006633;">hp</span>.<span style="color: #006633;">hpl</span>.<span style="color: #006633;">jena</span>.<span style="color: #006633;">assembler</span>.<span style="color: #006633;">assemblers</span>.<span style="color: #006633;">AssemblerGroup</span>$ExpandingAssemblerGroup.
 <span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span>AssemblerGroup.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">70</span><span style="color: #009900;">&#41;</span>
 at com.<span style="color: #006633;">hp</span>.<span style="color: #006633;">hpl</span>.<span style="color: #006633;">jena</span>.<span style="color: #006633;">assembler</span>.<span style="color: #006633;">assemblers</span>.<span style="color: #006633;">AssemblerBase</span>.<span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span>AssemblerBase.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">41</span><span style="color: #009900;">&#41;</span>
 at com.<span style="color: #006633;">hp</span>.<span style="color: #006633;">hpl</span>.<span style="color: #006633;">jena</span>.<span style="color: #006633;">assembler</span>.<span style="color: #006633;">assemblers</span>.<span style="color: #006633;">AssemblerBase</span>.<span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span>AssemblerBase.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">38</span><span style="color: #009900;">&#41;</span>
 at org.<span style="color: #006633;">joseki</span>.<span style="color: #006633;">DatasetDesc</span>.<span style="color: #006633;">newDataset</span><span style="color: #009900;">&#40;</span>DatasetDesc.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">65</span><span style="color: #009900;">&#41;</span>
 at org.<span style="color: #006633;">joseki</span>.<span style="color: #006633;">DatasetDesc</span>.<span style="color: #006633;">initialize</span><span style="color: #009900;">&#40;</span>DatasetDesc.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">60</span><span style="color: #009900;">&#41;</span>
 at org.<span style="color: #006633;">joseki</span>.<span style="color: #006633;">Configuration</span>.<span style="color: #006633;">processModel</span><span style="color: #009900;">&#40;</span>Configuration.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">112</span><span style="color: #009900;">&#41;</span>
 at org.<span style="color: #006633;">joseki</span>.<span style="color: #006633;">Configuration</span>.<span style="color: #009900;">&#40;</span>Configuration.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">83</span><span style="color: #009900;">&#41;</span>
 at org.<span style="color: #006633;">joseki</span>.<span style="color: #006633;">Dispatcher</span>.<span style="color: #006633;">setConfiguration</span><span style="color: #009900;">&#40;</span>Dispatcher.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">130</span><span style="color: #009900;">&#41;</span>
 at org.<span style="color: #006633;">joseki</span>.<span style="color: #006633;">Dispatcher</span>.<span style="color: #006633;">initServiceRegistry</span><span style="color: #009900;">&#40;</span>Dispatcher.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span>
 at org.<span style="color: #006633;">joseki</span>.<span style="color: #006633;">Dispatcher</span>.<span style="color: #006633;">initServiceRegistry</span><span style="color: #009900;">&#40;</span>Dispatcher.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">93</span><span style="color: #009900;">&#41;</span>
 at org.<span style="color: #006633;">joseki</span>.<span style="color: #006633;">RDFServer</span>.<span style="color: #006633;">init</span><span style="color: #009900;">&#40;</span>RDFServer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">79</span><span style="color: #009900;">&#41;</span>
 at org.<span style="color: #006633;">joseki</span>.<span style="color: #006633;">RDFServer</span>.<span style="color: #009900;">&#40;</span>RDFServer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">64</span><span style="color: #009900;">&#41;</span>
 at joseki.<span style="color: #006633;">rdfserver</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#40;</span>rdfserver.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">85</span><span style="color: #009900;">&#41;</span></pre></div></div>


<p>We just need to define a GraphTDB as a subclass of a Model as follow to fix this issue</p>


<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@prefix ja<span style="color: #339933;">:</span>     <span style="color: #339933;">&lt;</span>http <span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//jena.hpl.hp.com/2005/11/Assembler#&gt; .</span>
@prefix tdb<span style="color: #339933;">:</span>     <span style="color: #339933;">&lt;/</span>http<span style="color: #339933;">&gt;&lt;</span>http <span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//jena.hpl.hp.com/2008/tdb#&gt; .</span>
&nbsp;
## Initialize TDB.
&nbsp;
<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> ja<span style="color: #339933;">:</span>loadClass <span style="color: #0000ff;">&quot;com.hp.hpl.jena.tdb.TDB&quot;</span> .
<span style="color: #006633;">tdb</span><span style="color: #339933;">:</span>DatasetTDB  rdfs<span style="color: #339933;">:</span>subClassOf  ja<span style="color: #339933;">:</span>RDFDataset .
<span style="color: #006633;">tdb</span><span style="color: #339933;">:</span>GraphTDB    rdfs<span style="color: #339933;">:</span>subClassOf  ja<span style="color: #339933;">:</span>Model .
&nbsp;
## <span style="color: #339933;">----</span> A whole dadaset managed by TDB
<span style="color: #339933;">&lt;</span> #dataset_reason<span style="color: #339933;">&gt;</span> rdf<span style="color: #339933;">:</span>type      ja<span style="color: #339933;">:</span>RDFDataset <span style="color: #339933;">;</span>
  ja<span style="color: #339933;">:</span>defaultGraph <span style="color: #339933;">&lt;</span> #inf_graph<span style="color: #339933;">&gt;</span> .
&nbsp;
<span style="color: #339933;">&lt;</span> #dataset<span style="color: #339933;">&gt;</span> rdf<span style="color: #339933;">:</span>type      ja<span style="color: #339933;">:</span>RDFDataset <span style="color: #339933;">;</span>
  ja<span style="color: #339933;">:</span>defaultGraph <span style="color: #339933;">&lt;</span> #def_graph<span style="color: #339933;">&gt;</span> <span style="color: #339933;">;</span>
  .
&nbsp;
<span style="color: #339933;">&lt;</span> #inf_graph<span style="color: #339933;">&gt;</span> rdf<span style="color: #339933;">:</span>type  ja<span style="color: #339933;">:</span>InfModel <span style="color: #339933;">;</span>
    ja<span style="color: #339933;">:</span>reasoner <span style="color: #009900;">&#91;</span>
        ja<span style="color: #339933;">:</span>reasonerClass
            <span style="color: #0000ff;">&quot;org.mindswap.pellet.jena.PelletReasonerFactory&quot;</span> <span style="color: #339933;">;</span>
       <span style="color: #009900;">&#93;</span> <span style="color: #339933;">;</span>
    ja<span style="color: #339933;">:</span>baseModel <span style="color: #339933;">&lt;</span> #tdbGraph<span style="color: #339933;">&gt;</span> .
&nbsp;
<span style="color: #339933;">&lt;</span> #def_graph<span style="color: #339933;">&gt;</span> rdf<span style="color: #339933;">:</span>type  ja<span style="color: #339933;">:</span>InfModel <span style="color: #339933;">;</span>
    ja<span style="color: #339933;">:</span>baseModel <span style="color: #339933;">&lt;</span> #tdbGraph<span style="color: #339933;">&gt;</span> .
&nbsp;
<span style="color: #339933;">&lt;</span> #tdbGraph<span style="color: #339933;">&gt;</span> rdf<span style="color: #339933;">:</span>type tdb<span style="color: #339933;">:</span>GraphTDB <span style="color: #339933;">;</span>
    tdb<span style="color: #339933;">:</span>location <span style="color: #0000ff;">&quot;DB&quot;</span> <span style="color: #339933;">;</span>
    .</pre></div></div>


<p><a href="http://feedads.g.doubleclick.net/~a/OOmAtzaRkNXFUnF1RonG1LU6u38/0/da"><img src="http://feedads.g.doubleclick.net/~a/OOmAtzaRkNXFUnF1RonG1LU6u38/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/OOmAtzaRkNXFUnF1RonG1LU6u38/1/da"><img src="http://feedads.g.doubleclick.net/~a/OOmAtzaRkNXFUnF1RonG1LU6u38/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/fmeyer/~4/uxzAXgHIdDY" height="1" width="1"/>]]></content:encoded><description>I was looking for some documentation about using TDB and Pellet 
reasoser on Jena without pet peeves, didn’t found anything usable at all, so after a few 
attempts I was still fighting against an ambiguity error, 
whenever Joseki tries to build a dataset, the following exception pops up


18:18:49 WARN  Configuration     [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://fernandomeyer.com/configuring-joseki-pellet-tdb/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://fernandomeyer.com/configuring-joseki-pellet-tdb/</feedburner:origLink></item><item><title>Debug Backwards in time</title><link>http://feedproxy.google.com/~r/fmeyer/~3/Ee0hb7dCMZs/</link><category>Sem categoria</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">fmeyer</dc:creator><pubDate>Wed, 26 Aug 2009 16:52:12 PDT</pubDate><guid isPermaLink="false">http://fernandomeyer.com/debug-backwards-in-time/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffernandomeyer.com%2Fdebug-backwards-in-time%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffernandomeyer.com%2Fdebug-backwards-in-time%2F&amp;source=fmeyer&amp;style=compact&amp;service=bit.ly" height="61" width="50" />
			</a>
		</div><p><span class="postbody">What if a debugger could allow you to simply step <strong>BACKWARDS</strong>? Instead of all that hassle with guessing where to put breakpoints and the fear of typing “continue” one too many times… What if you could simply go backwards to see what went wrong? This is the essence of the “Omniscient Debugger” — it remembers everything that happened during the run of a program, and allows the programmer to “step backwards in time” to see what happened at any point of the program. All variable values, all objects, all method calls, all exceptions are recorded and the programmer can now look at anything that happened at any time </span></p>

<p>HomePage:<a href="http://www.lambdacs.com/debugger/debugger.html"> http://www.lambdacs.com/debugger/debugger.html </a></p>

<p>Article: <a href="http://www.lambdacs.com/debugger/Article.html">http://www.lambdacs.com/debugger/Article.html</a></p>

<p>Video:<a href="http://video.google.com/videoplay?docid=3897010229726822034&#038;q=engedu+debugging"> http://video.google.com/videoplay?docid=3897010229726822034&amp;q=engedu+debugging</a>
</p>

<p><a href="http://feedads.g.doubleclick.net/~a/VyGPliZIUc5lBMarGcN43Jr6aag/0/da"><img src="http://feedads.g.doubleclick.net/~a/VyGPliZIUc5lBMarGcN43Jr6aag/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/VyGPliZIUc5lBMarGcN43Jr6aag/1/da"><img src="http://feedads.g.doubleclick.net/~a/VyGPliZIUc5lBMarGcN43Jr6aag/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/fmeyer/~4/Ee0hb7dCMZs" height="1" width="1"/>]]></content:encoded><description>What if a debugger could allow you to simply step BACKWARDS? Instead of all that hassle with guessing where to put breakpoints and the fear of typing “continue” one too many times… What if you could simply go backwards to see what went wrong? This is the essence of the “Omniscient Debugger” — it remembers [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://fernandomeyer.com/debug-backwards-in-time/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://fernandomeyer.com/debug-backwards-in-time/</feedburner:origLink></item><item><title>Berkeley e-classes for your IPod</title><link>http://feedproxy.google.com/~r/fmeyer/~3/OM5DceGenwQ/</link><category>Sem categoria</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">fmeyer</dc:creator><pubDate>Wed, 26 Aug 2009 16:52:12 PDT</pubDate><guid isPermaLink="false">http://fernandomeyer.com/berkeley-e-classes-for-your-ipod/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffernandomeyer.com%2Fberkeley-e-classes-for-your-ipod%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffernandomeyer.com%2Fberkeley-e-classes-for-your-ipod%2F&amp;source=fmeyer&amp;style=compact&amp;service=bit.ly" height="61" width="50" />
			</a>
		</div><p>Last April, UC Berkeley, one of the premiere schools in the United States, announced its plan to put complete academic courses on iTunes. Fast forward nine months, and you can already find 59 full courses ready for your iPod. Simply <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewArtist?id=192980748&#038;mt=2">click here</a> to access Berkeley’s iTunes site (or <a href="http://webcast.berkeley.edu/courses/feeds.php">here for the Rss feed</a>).</p>

<p>No matter where you live, you can access at no cost the very same courses attended by students paying full tuition. And, given the critical mass of courses being offered across a range of disciplines, you can put together your own personalized curriculum and expand your horizons on the fly.</p>

<p>That’s include interesting computer’s science coursers like, CS 162 &#8211; Operating systems and System programming and CS 61C &#8211; Machine Structures. You can listen this podcast and forget about these classes in university (but I think that your teacher will not appreciate)
</p>

<p><a href="http://feedads.g.doubleclick.net/~a/4yMCF9cUujRBSwqj89N_Axog6j0/0/da"><img src="http://feedads.g.doubleclick.net/~a/4yMCF9cUujRBSwqj89N_Axog6j0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/4yMCF9cUujRBSwqj89N_Axog6j0/1/da"><img src="http://feedads.g.doubleclick.net/~a/4yMCF9cUujRBSwqj89N_Axog6j0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/fmeyer/~4/OM5DceGenwQ" height="1" width="1"/>]]></content:encoded><description>Last April, UC Berkeley, one of the premiere schools in the United States, announced its plan to put complete academic courses on iTunes. Fast forward nine months, and you can already find 59 full courses ready for your iPod. Simply click here to access Berkeley’s iTunes site (or here for the Rss feed).

No matter where [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://fernandomeyer.com/berkeley-e-classes-for-your-ipod/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://fernandomeyer.com/berkeley-e-classes-for-your-ipod/</feedburner:origLink></item><item><title>Firefox is crashing on my macbookpro</title><link>http://feedproxy.google.com/~r/fmeyer/~3/XAkW9-y7gIU/</link><category>Sem categoria</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">fmeyer</dc:creator><pubDate>Wed, 26 Aug 2009 16:52:12 PDT</pubDate><guid isPermaLink="false">http://fernandomeyer.com/firefox-is-crashing-on-my-macbookpro/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffernandomeyer.com%2Ffirefox-is-crashing-on-my-macbookpro%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffernandomeyer.com%2Ffirefox-is-crashing-on-my-macbookpro%2F&amp;source=fmeyer&amp;style=compact&amp;service=bit.ly" height="61" width="50" />
			</a>
		</div><p>I don’t know why but it’s happening, every time when i open a second gmail tab my Firefox crashes</p>

<p><pre>Exception:  EXC_BAD_INSTRUCTION (0×0002)
Code[0]:    0×0000000d
Code[1]:    0×00006e64</p>

<p>Thread 0 Crashed:
0   libSystem.B.dylib                  0×90029ae5 _longjmp + 37
1   00000000     0xc00101dd 0 + -1073675811
</pre></p>

<p>I was looking for some similar bug at firefox bugzilla but, I didn’t found anything about it. That isn’t the unique problem, I’m coding a web interface to access and test some Webservices, then I discovered another bug: div element with visibility:hidden still show scrollbars, I couldn’t reproduce the problem on Firefox running over Win32 with the same html file, so I think that’s a bug.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/afSp6UbXGPPw2TkpJ6CagZAfuxU/0/da"><img src="http://feedads.g.doubleclick.net/~a/afSp6UbXGPPw2TkpJ6CagZAfuxU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/afSp6UbXGPPw2TkpJ6CagZAfuxU/1/da"><img src="http://feedads.g.doubleclick.net/~a/afSp6UbXGPPw2TkpJ6CagZAfuxU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/fmeyer/~4/XAkW9-y7gIU" height="1" width="1"/>]]></content:encoded><description>I don’t know why but it’s happening, every time when i open a second gmail tab my Firefox crashes

Exception:  EXC_BAD_INSTRUCTION (0×0002)
Code[0]:    0×0000000d
Code[1]:    0×00006e64

Thread 0 Crashed:
0   libSystem.B.dylib                  0×90029ae5 _longjmp + [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://fernandomeyer.com/firefox-is-crashing-on-my-macbookpro/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://fernandomeyer.com/firefox-is-crashing-on-my-macbookpro/</feedburner:origLink></item><item><title>Linux Kernel in a Nutshell is now Creative Commons: free pdf download</title><link>http://feedproxy.google.com/~r/fmeyer/~3/rFf1vsFLQoc/</link><category>Sem categoria</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">fmeyer</dc:creator><pubDate>Wed, 26 Aug 2009 16:52:12 PDT</pubDate><guid isPermaLink="false">http://fernandomeyer.com/linux-kernel-in-a-nutshell-is-now-creative-commons-free-pdf-download/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffernandomeyer.com%2Flinux-kernel-in-a-nutshell-is-now-creative-commons-free-pdf-download%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffernandomeyer.com%2Flinux-kernel-in-a-nutshell-is-now-creative-commons-free-pdf-download%2F&amp;source=fmeyer&amp;style=compact&amp;service=bit.ly" height="61" width="50" />
			</a>
		</div><p>Written by a leading developer and maintainer of the Linux kernel, Linux Kernel in a Nutshell is a comprehensive overview of kernel configuration and building, a critical task for Linux users and administrators.The book is available for download in either PDF or DocBook format for the entire book, or by the individual chapter.</p>

<p>To quote of the book’s author:</p>

<blockquote><p>If you want to know how to build, configure, and install a custom Linux kernel on your machine, buy this book.  It is written by someone who spends every day building, configuring, and installing custom kernels as part of the development process of this fun, collaborative project called Linux. I’m especially proud of the chapter on how to figure out how to configure a custom kernel based on the hardware running on your machine.  This is an essential task for anyone wanting to wring out the best possible speed and control of your hardware.</p></blockquote>

<p><a href="http://www.kroah.com/lkn/" target="_blank">http://www.kroah.com/lkn/</a>
</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Va9FDJT76PXZ5eusNKAAufhSsEU/0/da"><img src="http://feedads.g.doubleclick.net/~a/Va9FDJT76PXZ5eusNKAAufhSsEU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Va9FDJT76PXZ5eusNKAAufhSsEU/1/da"><img src="http://feedads.g.doubleclick.net/~a/Va9FDJT76PXZ5eusNKAAufhSsEU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/fmeyer/~4/rFf1vsFLQoc" height="1" width="1"/>]]></content:encoded><description>Written by a leading developer and maintainer of the Linux kernel, Linux Kernel in a Nutshell is a comprehensive overview of kernel configuration and building, a critical task for Linux users and administrators.The book is available for download in either PDF or DocBook format for the entire book, or by the individual chapter.

To quote of [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://fernandomeyer.com/linux-kernel-in-a-nutshell-is-now-creative-commons-free-pdf-download/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://fernandomeyer.com/linux-kernel-in-a-nutshell-is-now-creative-commons-free-pdf-download/</feedburner:origLink></item><item><title>Switching from bloglines to vienna</title><link>http://feedproxy.google.com/~r/fmeyer/~3/6NbJJK7zy-E/</link><category>Sem categoria</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">fmeyer</dc:creator><pubDate>Wed, 26 Aug 2009 16:52:12 PDT</pubDate><guid isPermaLink="false">http://fernandomeyer.com/switching-from-bloglines-to-vienna/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffernandomeyer.com%2Fswitching-from-bloglines-to-vienna%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffernandomeyer.com%2Fswitching-from-bloglines-to-vienna%2F&amp;source=fmeyer&amp;style=compact&amp;service=bit.ly" height="61" width="50" />
			</a>
		</div><p>I’m changing my default RSS reader from the web-based <a href="http://bloglines.com/">bloglines</a> to <a href="http://www.opencommunity.co.uk/vienna2.php">Vienna</a>, a rss reader for Mac OS X, Vienna keeps following RSS feeds simple and functional with smart folders, groups, an integrated browser and item flagging. It’s the perfect tool for offline readers like me.</p>

<p>ps: Yeap, I’m having some problems to get an internet connection here in Colombia; (sic)
</p>

<p><a href="http://feedads.g.doubleclick.net/~a/_ONwqHSckjJNHCi1uAZJ6XLkFE0/0/da"><img src="http://feedads.g.doubleclick.net/~a/_ONwqHSckjJNHCi1uAZJ6XLkFE0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/_ONwqHSckjJNHCi1uAZJ6XLkFE0/1/da"><img src="http://feedads.g.doubleclick.net/~a/_ONwqHSckjJNHCi1uAZJ6XLkFE0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/fmeyer/~4/6NbJJK7zy-E" height="1" width="1"/>]]></content:encoded><description>I’m changing my default RSS reader from the web-based bloglines to Vienna, a rss reader for Mac OS X, Vienna keeps following RSS feeds simple and functional with smart folders, groups, an integrated browser and item flagging. It’s the perfect tool for offline readers like me.

ps: Yeap, I’m having some problems to get an internet [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://fernandomeyer.com/switching-from-bloglines-to-vienna/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://fernandomeyer.com/switching-from-bloglines-to-vienna/</feedburner:origLink></item><item><title>Learning English Spanish, Italian, Portuguese</title><link>http://feedproxy.google.com/~r/fmeyer/~3/HwloksLPCsI/</link><category>Sem categoria</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">fmeyer</dc:creator><pubDate>Wed, 26 Aug 2009 16:52:12 PDT</pubDate><guid isPermaLink="false">http://fernandomeyer.com/learning-english-spanish-italian-portuguese/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffernandomeyer.com%2Flearning-english-spanish-italian-portuguese%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffernandomeyer.com%2Flearning-english-spanish-italian-portuguese%2F&amp;source=fmeyer&amp;style=compact&amp;service=bit.ly" height="61" width="50" />
			</a>
		</div><p>The English language has been at the forefront of globalization. English      is celebrated as the language of global corporate management, the Internet,      youth culture and science. At the same time, there appears to be a crisis in foreign language      learning amongst native English speakers &#8211; it seems that there is no need      any more to learn foreign languages if everyone now speaks English. But if you want to learn another language like Spanish, German or even Brazilian Portuguese, you can access these podcasts.<br />
<strong>Note:</strong> You must have ITunes installed in your computer.<br />

<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=90960920">Learn Arabic</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=188610004">Learn Chinese</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=119843495">Learn Chinese</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=80699337">Learn Chinese</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=168220603">Learn Chinese</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=75908431">English As a Second Language ESL</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=206603090">English For Business</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=120975641">Beginner French</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=160256534">Learn French</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=191303933">Learn French</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=75425978">Learn French</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=200760764">Learn French Verbs</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=151412622">Learn German I</a>  <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=151426353">II</a>  <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=151412907">III</a>  <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=151412903">IV</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=144068401">Learn German Grammar</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=117725301">Learn German</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=126265773">Learn Greek</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=202766326">Learn Hindi</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=105441909">Learn Italian</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=155864176">Learn Italian</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=120903003">Learn Japanese With Video</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=109573938">Japanese for Beginners</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=185539275">Learn Japanese Symbols</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=152536550">Learn Korean</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=162345402">Learn Portuguese</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=206150220">Learn Brazillian Portuguese in Spanish</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=79453758">Learn Russian</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=125207105">Learn Russian For Businesses</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=125207034">Russian Literature</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=201598403">Learn Spanish</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=115018357">Learn Spanish</a> <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=170271930">Learn Spanish</a>

</p>

<p><a href="http://feedads.g.doubleclick.net/~a/HuMe25E2W-rSDWqM2PNLwr7p02g/0/da"><img src="http://feedads.g.doubleclick.net/~a/HuMe25E2W-rSDWqM2PNLwr7p02g/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/HuMe25E2W-rSDWqM2PNLwr7p02g/1/da"><img src="http://feedads.g.doubleclick.net/~a/HuMe25E2W-rSDWqM2PNLwr7p02g/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/fmeyer/~4/HwloksLPCsI" height="1" width="1"/>]]></content:encoded><description>The English language has been at the forefront of globalization. English      is celebrated as the language of global corporate management, the Internet,      youth culture and science. At the same time, there appears to be a crisis in foreign language      learning [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://fernandomeyer.com/learning-english-spanish-italian-portuguese/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://fernandomeyer.com/learning-english-spanish-italian-portuguese/</feedburner:origLink></item></channel></rss>
