<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:iweb="http://www.apple.com/iweb" version="2.0">
  <channel>
    <title>INCOHERENT Raving</title>
    <link>http://mindcode.org/Mindcode/Ruminations/Ruminations.html</link>
    <description>It’s in these pages we call blogs that an individual exercises his right to relinquish part of its own privacy by believing that, somehow, others may be interested in what they write.&lt;br/&gt;&lt;br/&gt;Should that be the case, have fun :-)</description>
    <generator>iWeb 3.0.1</generator>
    <image>
      <url>http://mindcode.org/Mindcode/Ruminations/Ruminations_files/IMG_3691.jpg</url>
      <title>INCOHERENT Raving</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Ruminations.html</link>
    </image>
    <item>
      <title>Manifesto for Integrated Development Environments</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2010/5/5_Manifesto_for_Integrated_Development_Environments.html</link>
      <guid isPermaLink="false">f2e26e3d-12f0-425c-86d6-dab8884f203f</guid>
      <pubDate>Wed, 5 May 2010 00:54:03 +0100</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2010/5/5_Manifesto_for_Integrated_Development_Environments_files/rbhh_0053B.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object000_2.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;Have you recently take a peek at Coda, or Espresso, or Textmate? Or even Google Chrome's Developer Tools? They are well designed, intuitive, interface rich, and extensible. But Coda, Espresso or Textmate, among several, are text editors, not IDEs. On the other side, VIM and Emacs live in the last century, and Eclipse is an over-bloated platform.&lt;br/&gt;&lt;br/&gt;This post is more like an outcry for a decent, common infrastructure for REAL IDEs. Still, there are some questions attached: (i) what features are needed for such a product and (ii) what products are out there that could fulfill this need, and what are they missing? So here's my draft for a manifesto:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Manifesto for Integrated Development Environments&lt;br/&gt;&lt;br/&gt;	‣	We favor interactivity and productivity over syntax and tools.&lt;br/&gt;	‣	We favor inline, contextual documentation over man and html files.&lt;br/&gt;	‣	We favor high-definition, graphic-capable color screens over character terminals.&lt;br/&gt;	‣	We favor the use of advanced input schemas over unintuitive keyboard shortcuts.&lt;br/&gt;	‣	We favor a common, extensible and customizable infrastructure over unmaintained chain-tools.&lt;br/&gt;	‣	We know the difference between search&amp;amp;replace and refactoring.&lt;br/&gt;	‣	We know the difference between integrated debugging support over a terminal window.&lt;br/&gt;	‣	We know the difference between semantic-aware completion over dumb textual templates.&lt;br/&gt;	‣	We know the difference between keyword-highlight and syntax-highlight.&lt;br/&gt;	‣	We favor the usage of standards like (E)BNF.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;That is, while there is value in the items on the right, we value the items on the left more.&lt;br/&gt;&lt;br/&gt;P.S.: This last phrase is bluntly taken from the Agile Manifesto.</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2010/5/5_Manifesto_for_Integrated_Development_Environments_files/rbhh_0053B.jpg" length="34135" type="image/jpeg"/>
    </item>
    <item>
      <title>On Buzzword Degradation</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2010/5/1_On_Buzzword_Degradation.html</link>
      <guid isPermaLink="false">4bb89e6e-bd3a-4acd-a291-450d9be4f2e6</guid>
      <pubDate>Sat, 1 May 2010 15:55:42 +0100</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2010/5/1_On_Buzzword_Degradation_files/IMG_2304-filtered.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object003_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;You know that feeling you have when you repeat a word so many times that it starts to loose its meaning? Try it:&lt;br/&gt;&lt;br/&gt;Rumination, Rumination, Rumination, Rumination, Ru-mi-nation, Ruu-mii...&lt;br/&gt;&lt;br/&gt;Well, do you? Because this is the precise feeling I now have when hearing words such as innovation, cooperation, communication, openness, leadership, teamwork, emergence, entrepreneurship, among (too) many others...&lt;br/&gt;&lt;br/&gt;... and I wonder: well, I know what I understand about teamwork. But what exactly do you mean about it? Actually, what exactly do they mean nowadays, now that everyone uses them? If everyone is “innovating”, where is your difference?&lt;br/&gt;&lt;br/&gt;Personally, I tend to regard them as shallow strings of plain letters, boldly highlighted in video projectors. They were once good sellers, but now... Now they are just worn out buzzwords, used so many times, that no one knows what they are supposed to represent. And, as such, everyone seems deprived of the responsibility on using them. Who's to blame?&lt;br/&gt;&lt;br/&gt;The problem with these words is that they represent abstract ideas. Strong principles, perhaps, but abstract nonetheless. Next time you attend some company presentation, ask yourself: why are they just shouting these concepts, but not specifying their meaning? For instance, take “cooperation”. What exactly is a “cooperative” company? Why don't they say they prescribe specific practices instead, like &amp;quot;on-site customer&amp;quot; or “pair-programming”?&lt;br/&gt;&lt;br/&gt;However mostly unintended, there's a reason for that. By adhering to abstract principles, it is up to the audience to fill in the gaps. Each one will understand cooperation in its very own, specific way; individual interpretations that could, in fact, be inconsistent with others. It seems the audience ought (or not) to recognize cooperation in practices such as “on-site customers”, but mostly everyone will &amp;quot;nod&amp;quot; approvingly in the face of an abstract principle. &lt;br/&gt;&lt;br/&gt;So, who's to blame? People, of course. Make a dollar bet with your colleagues next time you attend a start-up launch — that no one in the audience will ever ask: &amp;quot;What exactly do you mean by cooperation?&amp;quot; Oh, and send me 10% ;-)&lt;br/&gt;&lt;br/&gt;Moral of the story: don’t sell ideals; sell solutions!</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2010/5/1_On_Buzzword_Degradation_files/IMG_2304-filtered.jpg" length="158084" type="image/jpeg"/>
    </item>
    <item>
      <title>I can’t draw...</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2009/10/18_I_cant_draw....html</link>
      <guid isPermaLink="false">a2c6b9eb-34e1-4f38-bbca-94e98d5fe99b</guid>
      <pubDate>Sun, 18 Oct 2009 21:47:45 +0100</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2009/10/18_I_cant_draw..._files/computer-science_1.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object004_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;.. and I barely can make humor too, it seems. Nonetheless, I’ve found these lost attempts scattered over my backups, so I’ve felt like sharing... It seamed a good idea at the time... Somehow...</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2009/10/18_I_cant_draw..._files/computer-science_1.jpg" length="65626" type="image/jpeg"/>
    </item>
    <item>
      <title>The Tyranny of Small Choices vs No Up-front Design: &#13;Is Refactoring Enough?</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2009/9/3_The_Tyranny_of_Small_Choices_vs_No_Up-front_Design__Is_Refactoring_Enough.html</link>
      <guid isPermaLink="false">7fec4771-1d86-483e-b27b-077d0b7cc796</guid>
      <pubDate>Thu, 3 Sep 2009 23:48:45 +0100</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2009/9/3_The_Tyranny_of_Small_Choices_vs_No_Up-front_Design__Is_Refactoring_Enough_files/2778223048_127054b7be-filtered.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object001_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;Preview: In this post I’ll explore how the cumulative effect of designing a software system through small iterative steps may lead to suboptimal solutions. I’ll compare this phenomena to the stabilization of local maximums in continuous functions and natural selection to show how the bare process of refactoring isn’t enough. The conclusion, as the reader may have already foreseen, is the same of several agile methodologies: “no up-front design” isn’t “no design at all”...</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2009/9/3_The_Tyranny_of_Small_Choices_vs_No_Up-front_Design__Is_Refactoring_Enough_files/2778223048_127054b7be-filtered.jpg" length="141613" type="image/jpeg"/>
    </item>
    <item>
      <title>Singleton Pool</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2009/8/15_Singleton_Pool.html</link>
      <guid isPermaLink="false">33d86e19-803a-44dd-bed6-582c25e2a960</guid>
      <pubDate>Sat, 15 Aug 2009 13:25:53 +0100</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2009/8/15_Singleton_Pool_files/rbhh_0053B.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object000_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;I hate singletons. They are just like junk food: you know you shouldn’t eat it, but it’s kind of convenient... and easy. It’s a quick fix that tends to become an addiction.&lt;br/&gt;&lt;br/&gt;Several people have already written about the evilness of singletons: they are used by the wrong reasons, most implementations aren’t thread-safe, promote tightly-coupling, mess up with unit-testing, hinders extensibility, and are a refactorer’s nightmare. Really, just google for them...&lt;br/&gt;&lt;br/&gt;Anyway, in the past few days, I had to clean-up the code of a framework we’ve been developing for two years now. Same usual reasons: improve consistency, design, testability, extensability, and probably several other -ilities I can’t remember. As I was digging the code and writing tests to increase coverage, I started to find singletons everywhere, especially in the user-interface layer.&lt;br/&gt;&lt;br/&gt;Now, this wasn’t just a smell. It was actually hindering decoupling. Because the instance of a singleton is usually stored as a static field in its class, everywhere we were expecting something from it we needed to explicitly access its type. But what if, in a particular instantiation of the framework, I wanted to use inheritance to change some of their behavior? Or, as it was the case, I wanted to create a Mock for testing?&lt;br/&gt;&lt;br/&gt;Consider the following code (yeah, yeah, not thread-safe, I know):</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2009/8/15_Singleton_Pool_files/rbhh_0053B.jpg" length="34135" type="image/jpeg"/>
    </item>
    <item>
      <title>Science vs Engineering</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2009/7/26_Science_vs_Engineering.html</link>
      <guid isPermaLink="false">147c73ae-3b1e-4ed1-8ab3-6c7279018dc4</guid>
      <pubDate>Sun, 26 Jul 2009 15:23:37 +0100</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2009/7/26_Science_vs_Engineering_files/3283301668_ca0da4ebaa_o.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object021_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;At the University of Porto (Portugal), we have two schools that teach computer-related courses: the school of engineering - FEUP - and the school of science - FCUP. The two courses are, respectively, “Informatics and Computer Engineering” and “Computer Science”.&lt;br/&gt;&lt;br/&gt;Among their students, there’s always been an healthy competition. Both sides, of course, claim they are better - for any given arbitrary definition of better. They come up with several metrics and theories - guess who comes up with what - to assert their claims, but mostly they are just teasing each other and live in peaceful harmony... I guess...&lt;br/&gt;&lt;br/&gt;This would all be good and great if it wasn’t just for one thing: I am an engineer pursuing a PhD in computer science... Let the fight begin...&lt;br/&gt;&lt;br/&gt;FRESHMAN, AGAIN...&lt;br/&gt;&lt;br/&gt;It has come to my attention that it was particularly funny to watch me during my first days of the PhD - at least my colleagues say so. Oddly, I don’t recall it that way: to struggle my way through the calculus of inductive constructors and other “wonders of nature”, felt like standing in a boxing ring and realizing you’ve been practicing baking. I remember one of my first reactions was to ask the professor if I was going to need to switch my keyboard to greek (phi? what’s the symbol for phi?!?).&lt;br/&gt;&lt;br/&gt;Of course it didn’t helped that I’ve chosen a course on foundations of computer science: Program Semantics, Verification and Construction. Nonetheless, I thought that acquiring a deeper theoretical knowledge would expose me to the mathematical frontiers of software development. If a Ph.D. is about becoming a “doctor in philosophy”, I guess I couldn’t go wrong. &lt;br/&gt;&lt;br/&gt;In the end, it all went great. I believe I’ve (re-)earned some respect among my fellow scientists, which comes handy to balance the respect I may have lost from my fellow engineers ;-)&lt;br/&gt;&lt;br/&gt;IDENTITY CRISIS?&lt;br/&gt;&lt;br/&gt;A friend of mine, when reading this, asked me: “So, you feel you have multiple personalities?” Heck, certainly - probably - not! I know for sure I am an engineer: I have a diploma that says so :-) It just happens that one of my left ribs thinks its from a scientist.&lt;br/&gt;&lt;br/&gt;HOW IS YOUR RESEARCH SCIENCE?&lt;br/&gt;&lt;br/&gt;If among colleagues this difference only serves to tease me, or make some jokes, in the academic world this is a completely different kind of beast. The kind of beast that keeps asking you “how exactly is your research science?” Not an easy question to be answered upon, but a remark I’ve heard quite often.&lt;br/&gt;&lt;br/&gt;The thing is: I don’t know! Fortunately &lt;a href=&quot;http://vonahn.blogspot.com/2009/04/is-this-science.html&quot;&gt;I am not alone&lt;/a&gt;. Consider the following citation from &lt;a href=&quot;http://plato.stanford.edu/entries/computer-science/&quot;&gt;here&lt;/a&gt;:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;“(...) computer science would be better described as being concerned with the meta-activity that is associated with programming. More generally, and more precisely, it is occupied with the design, development and investigation of the concepts and methodologies that facilitate and aid the specification, development, implementation and analysis of computational systems.“&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;A very peculiar definition which, amusingly, doesn’t reference mathematics anywhere. &lt;br/&gt;&lt;br/&gt;SCIENTISTS vs ENGINEERS&lt;br/&gt;&lt;br/&gt;Gopalakrishnan, in his book Computation Engineering, differentiates scientists from engineers as:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;“(...) people who seek an in-depth understanding of the phenomenon of computation to be a computer scientist. We define those people who seek to efficiently apply computer systems to solve real-world problems to be computation engineers.”&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I do not which to incur in a largely, perhaps irrelevant, rumination (although I may just did) about why my research may be considered science. Instead, I’m ranting about what is the fundamental difference between a scientist and an engineer, not regarding their profession — not even regarding their education — but the “motivational forces” behind both. I eventually dare to claim that some scientists are (should be) engineers and vice-versa.&lt;br/&gt;&lt;br/&gt;THEORY AND PRACTICE&lt;br/&gt;&lt;br/&gt;You see, something inside me is deeply disturbed every time I hear the phrase ”it’s just a matter of implementation...” Just? Heck! Implementation changes everything! It’s all great and good to come up with the theory of time-travel, but what about building a time-traveling machine? Is it just a matter of implementation?&lt;br/&gt;&lt;br/&gt;Creation here is the key! It is the act of crafting something, of making a theory reality, that separates the blurry line between science and engineering. The motivational force behind an engineer is its ultimate aspiration to make something out of nothing... With a twist...&lt;br/&gt;&lt;br/&gt;Engineers are attracted to scarce resources. So comes Turing with its infinite tape, and its infinite duration. Ah — says an engineer — that’s clever! Now do it with just a few bytes and in real-time. On the other side, the scientist would rightly reply: “still, fundamentally, it’s all the same”.&lt;br/&gt;&lt;br/&gt;But the thing is, it’s almost a blasphemy to ask an engineer not to build his work. She just can’t. Proving it’s possible would never be enough. In her mind, it would just deem everything not worth it. If she comes up with an idea, she’ll rush to see it running, and jumping, and whatever she’ll classify as being built! Take that from her and you’ll take the driving force behind her world.&lt;br/&gt;&lt;br/&gt;BEAUTY IS IN THE EYE OF THE BEHOLDER&lt;br/&gt;&lt;br/&gt;I respect the church-turing thesis. It’s a beautiful theory that establishes a bridge between symbols and machines. I understand the force behind scientists to understand the “why”, and pursue mathematical truth. I am amazed by the efforts scientists take to reduce everything to its basic building blocks of construction. It is indeed an herculean task that establishes the boundaries and foundations of what can and cannot be done.&lt;br/&gt;&lt;br/&gt;But engineers regard their art as something different: it’s not the “why” so much as the “how”. For a scientist, if two programs are proven to be functionally equivalent, then they are one and the same. But an engineering will rush to shout a torrent of “non-sense” such as design, and usability, and maintainability, and performance, and cost, and several other cryptic words that somehow would make the two programs “completely different”!&lt;br/&gt;&lt;br/&gt;ANY CONCLUSIONS?&lt;br/&gt;&lt;br/&gt;Do I really need to have them?... Come on... ;-)&lt;br/&gt;&lt;br/&gt;Well, I believe that the first and most important conclusion I take is that each “guild” rushes too quickly to dismiss the other’s work. They both need each other and what worries me the most is their (un)willingly unawareness. Interdisciplinary should step down as just a buzzword, and step up as a standard practice.&lt;br/&gt;&lt;br/&gt;Secondly, we shouldn’t try to transform scientists into engineers or the other way round: each has their own driving force behind creativity which should be preserved. It saddens me that Academia, instead of embracing both strengths and weaknesses, often disregard great ideas either because of the inability to “measure” its claims, or because someone decides that, “fundamentally”, it’s not new.&lt;br/&gt;&lt;br/&gt;Finally, I must indulge myself into believing that I’m privileged to be in between them, which allowed me to acquire an uncommon perspective. But in the end, as researchers, all that we (I) can hope is to make real contributions which could enrich our knowledge as human beings. Not a very scientific conclusion, but surely a motivating one.</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2009/7/26_Science_vs_Engineering_files/3283301668_ca0da4ebaa_o.jpg" length="180056" type="image/jpeg"/>
    </item>
    <item>
      <title>Pattern Language for Hopeless Argumentation</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2009/5/27_PATTERN_LANGUAGE_FOR_HOPELESS_ARGUMENTATION.html</link>
      <guid isPermaLink="false">1302c601-ea45-4a3f-85b7-b13bddfc58c1</guid>
      <pubDate>Wed, 27 May 2009 00:23:44 +0100</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2009/5/27_PATTERN_LANGUAGE_FOR_HOPELESS_ARGUMENTATION_files/argumentation-poster.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object022_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;In the spirit of the &lt;a href=&quot;http://pclc.pace.edu/~bergin/patterns/dotherightthing.html&quot;&gt;“Do The Right Thing”&lt;/a&gt; pattern, I hereby present a Pattern Language for Hopeless Argumentation, which you can download by clicking on the above image. Shall you like, hate, made you had some good laughs, or for peculiar reason had been useful during an argumentation you had, then by all means, leave a comment :-) But, most of all, have fun!&lt;br/&gt;&lt;br/&gt;	•	It’s in the Bible. Claiming truth by asserting expertise from an outside source. Alias: Appeal to Authority.&lt;br/&gt;	•	Inversion of Responsibility. Changing the burden of proof to the opponent.&lt;br/&gt;	•	Moving the Goalposts. Keep raising the bar of the opponent arguments, until it fails. Alias: Demand of Impossible Perfection.&lt;br/&gt;	•	Cliche Thinking. Appealing to common sense or wise sayings.&lt;br/&gt;	•	I’m gonna Cry. Making the audience empathize or otherwise identify with yourself through shown emotions. Alias: Appeal to Pity or Sympathy.&lt;br/&gt;	•	Heroic Speech. Use of an eloquent and assertive discourse, targeting the audience emotions. Alias: Poetic Language.&lt;br/&gt;	•	Void. Asserting that the absence of evidence is the evidence of absence. &lt;br/&gt;	•	It’s the End of the World. Claiming that either the argument is true, or bad things would happen. Alias: Adverse Consequences.&lt;br/&gt;	•	Shaken, not stirred. Use of charismatic attributes to convince the audience. Alias: Personal Charm.&lt;br/&gt;	•	Changing the Subject. Deflecting the question by subtly changing the focus to another problem during the discourse.&lt;br/&gt;	•	No Gray Area. Implying there are only two alternatives, when in fact there are more. Alias: Excluded Middle.&lt;br/&gt;	•	Fast Talking. Speeding up the pace of speech such that it becomes hard to think and follow.&lt;br/&gt;	•	Buzzword Contest. Using an overwhelming amount of technical terms, intended to confuse or look like an expert in the field. Alias: Prestigious Jargon, Argumentum Verbosium.&lt;br/&gt;	•	Pain in the Ass. Systematically repeating the same thing, until it becomes an accepted truth. Alias: Ad Nauseaum.&lt;br/&gt;	•	Are we there yet. Keep making questions to disrupt the opponent thought or dodge the burden of proof. Alias: Argument by Question.&lt;br/&gt;</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2009/5/27_PATTERN_LANGUAGE_FOR_HOPELESS_ARGUMENTATION_files/argumentation-poster.jpg" length="196414" type="image/jpeg"/>
    </item>
    <item>
      <title>Demoscene, IRC and Old-School</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2008/11/24_Demoscene,_IRC_and_Old-School.html</link>
      <guid isPermaLink="false">112f050e-8fc1-4f0f-bad7-23940fb063a7</guid>
      <pubDate>Mon, 24 Nov 2008 04:09:36 +0000</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2008/11/24_Demoscene,_IRC_and_Old-School_files/63.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object023_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;Back in 1994, when I started to learn C and Assembly, me and some friends started a DemoScene group. We were inspired by titles like Second Reality by Future Crew, running on an 80486 with little more than 1 or 2MB of RAM memory. Those where the days of MOD and S3M - where several musical artists have begun they carrier - and pixel graphics - endless hours of painting pixel-by-pixel and producing incredible works of art. The things we were able to do with such limited machines were most of the times amazingly displayed at the Assembly Demoparty held in Helnsiky, Finland. I remember of wishing not to be so young back then, so that I could have had the experience of participating in those (almost mythological) gatherings.&lt;br/&gt;&lt;br/&gt;But time has evolved. MSN replaced IRC, which is now being replaced by Twitter. Facebook, Hi5 and other social networks are pervasive. I’m now able to keep an almost permanent presence in the Internet using my iPhone. And yet, back then, we were much, MUCH more social. I’ve met dozens of new people, held dozens of parties, engaged in several projects at such an young age, due of BBSs and MOOs and IRCs. Fooled are those who thought we were anti-social creatures hidden behind a computer. Most of us travelled in public transportation for miles and hours, only to gather and met dozens of new people.&lt;br/&gt;&lt;br/&gt;But now... now that the ability to communicate is an order of magnitudes larger, why do we feel so distant? What “mystical aura” was present in those forms of communication that is, somehow, lost? Will it ever be revived? Can we afford not to?</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2008/11/24_Demoscene,_IRC_and_Old-School_files/63.jpg" length="16353" type="image/jpeg"/>
    </item>
    <item>
      <title>On Patterns</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2008/11/20_On_Patterns.html</link>
      <guid isPermaLink="false">32f95255-2d00-4fc1-a7db-aec58df2b94c</guid>
      <pubDate>Thu, 20 Nov 2008 04:35:37 +0000</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2008/11/20_On_Patterns_files/Atomic.Fractal.Ultra-X.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object024_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;I’ve recently stumbled across this post (which, by the way, I highly recommend its reading), which has someway enticed me to add some comments. Now, this doesn’t mean I don’t agree with the author concerning a few arguments; I just want to raise the awareness over some points I find particularly important. &lt;br/&gt;&lt;br/&gt;I think it was Linda Rising, in the last PLoP conference, that reminded us of something along these lines: &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;“Should a pattern incite an Ahah! or Eureka! or an Hmm...?”&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The thing is, a pattern is a recurrent solution observed in the wild, which solves a recurrent problem by balancing some forces in a particular way. It is not an intelligently crafted solution in the author’s basement or due to an intensive labor in a research lab. It is one such that a domain expert would easily recognize it as: “I’ve seen this!”.&lt;br/&gt;&lt;br/&gt;Now, if the GOF’s Design Patterns should have been more or less abstract than they are is ultimately irrelevant; the authors have observed those patterns in a particular context, and while they may reveal to hold outside it, that can’t be neither guaranteed nor intended by the authors. That’s why patterns typically have a target audience. In the context they wrote the book, putting additional effort into implementation details have probably lead far more people to grasp it, than it would have been otherwise.&lt;br/&gt;&lt;br/&gt;As a personal example, Ralph Johnson, in PLoP’08 writer’s workshop, suggested that the patterns I wrote could be generalized far beyond their original context. This, however, would need a completely different context-problem-forces triplet. Now... someone reading my paper could say: you focus too much on AOMs; you should have generalized. Well, it’s true. But the proposed pattern is intertwined in a specific pattern language, which has its own context and forces. For that purpose, I may actually have given too little detail (actually, several comments I received were more in that direction).&lt;br/&gt;&lt;br/&gt;Alexander’s own work is the very example of what I’m asserting. The Notes on the Synthesis of Form could, could have been easily abstracted into several realms far beyond Civil Architecture. Would it be right for us to state that Alexander coupled himself into unnecessary detail?&lt;br/&gt;&lt;br/&gt;I honestly believe the problem is not in the patterns per-se (nor even in the GoF book, which should be regarded as a germinal work), but in the people using them. Personally, I think too few people know the GoF book, or for that matter, patterns in general. Those who know and apply them blindly, have completely missed the fact that a pattern is NOT a building block of software construction! Maybe that’s a reason why GoF entitled their book as Elements of Reusable Object-Oriented Software, and not Design Rules of Good Object Oriented Software.&lt;br/&gt;&lt;br/&gt;Richard Feynman once said: &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;“Know how to solve every problem that has been solved.”&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I believe the study of patterns endure this ideal. They are not engraved laws of the tissue of software. They are a systematization of intrinsic, empirical, observed knowledge that can be easily communicated.</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2008/11/20_On_Patterns_files/Atomic.Fractal.Ultra-X.jpg" length="195912" type="image/jpeg"/>
    </item>
    <item>
      <title>Innovation stiffs old practices</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2008/10/12_Innovation_stiffs_old_practices.html</link>
      <guid isPermaLink="false">1b6db4b5-68d4-4377-a34e-c5de6b9d16b3</guid>
      <pubDate>Sun, 12 Oct 2008 04:59:36 +0100</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2008/10/12_Innovation_stiffs_old_practices_files/2585374699_b5fd29e3e7_b-filtered.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object025_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;While reading a post about the new language Microsoft is supposed to release in their next development platform, I’ve found an alarming message in the author’s blog: &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;“But if all newbie programmers learn these new languages, who will manage the billions of lines of C and C++ we currently use in the future, unless it is implied to be completely be rewritten?”&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I’ve heard this line of rationale before… Who will manage the billions of lines of assembly now that people use C and C++? Who will program hardware, now that everyone is focused on high-level software? What will be the fate of horses, now that cars are being produced?&lt;br/&gt;&lt;br/&gt;Careful: this kind of thought may be presumptuous at best. Don’t get me wrong, this is not a direct critic to the author, but to the concept. Practices and tools need to evolve, so we can achieve higher degrees of abstraction. Attempting otherwise not only stiffs evolution, but may turn us into old dinosaurs, mumbling to the air:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;“Back in old days, we used two big drums to program; one was called 1, the other 0.″&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;In the end, there’ll always be someone willing to beat those drums…</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2008/10/12_Innovation_stiffs_old_practices_files/2585374699_b5fd29e3e7_b-filtered.jpg" length="157289" type="image/jpeg"/>
    </item>
    <item>
      <title>proof of god</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2008/9/30_proof_of_god.html</link>
      <guid isPermaLink="false">7e242172-838a-42a9-a3d7-1f69bcd3bff1</guid>
      <pubDate>Tue, 30 Sep 2008 05:01:21 +0100</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2008/9/30_proof_of_god_files/God20touch.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object026_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;I grew tired of arguing about religion, particularly because someone, at some point during the discussion, often invoked the need to prove, or disprove, the existence of God. This was the kind of argument that always made me stop the conversation right away, forever. Actually, with time I’ve started to take a simple approach before incurring in a largely, perhaps irrelevant, rumination about religion:&lt;br/&gt;&lt;br/&gt;	•	I am willing to change my opinion. Are you?&lt;br/&gt;	•	Do you agree to discuss using some kind of human logic? Or will you invoke the inability of humankind to understand the arguments you’ll point out?&lt;br/&gt;	•	Do you understand the difference between proof and evidence?&lt;br/&gt;&lt;br/&gt;Three out of four people will fail the first right away. My fingers are enough to count those who passed the triage so far, potentially leading to a nice, though inconclusive, conversation.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;”Nothing must be held sacred. Question everything. God is not great, Jesus is not your lord, you are not disciples of any charismatic prophet. You are all human beings who must make your way through your life by thinking and learning, and you have the job of advancing humanity's knowledge by winnowing out the errors of past generations and finding deeper understanding of reality. You will not find wisdom in rituals and sacraments and dogma, which build only self-satisfied ignorance, but you can find truth by looking at your world with fresh eyes and a questioning mind.” PZ Meyers.&lt;br/&gt;&lt;br/&gt;</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2008/9/30_proof_of_god_files/God20touch.jpg" length="100325" type="image/jpeg"/>
    </item>
    <item>
      <title>⊨ P = NP ∨ P ≠ NP</title>
      <link>http://mindcode.org/Mindcode/Ruminations/Entries/2008/8/14_P_%3D_NP_P_%3D_NP.html</link>
      <guid isPermaLink="false">831de359-05bb-43bc-8c26-4e63b6fbe9b6</guid>
      <pubDate>Thu, 14 Aug 2008 13:40:54 +0100</pubDate>
      <description>&lt;a href=&quot;http://mindcode.org/Mindcode/Ruminations/Entries/2008/8/14_P_%3D_NP_P_%3D_NP_files/big-1.jpg&quot;&gt;&lt;img src=&quot;http://mindcode.org/Mindcode/Ruminations/Media/object012_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:364px; height:173px;&quot;/&gt;&lt;/a&gt;I recently started to read a &lt;a href=&quot;http://www.amazon.com/Millennium-Problems-Greatest-Unsolved-Mathematical/dp/0465017290&quot;&gt;book from Keith Devlin&lt;/a&gt; about the &lt;a href=&quot;http://www.claymath.org/millennium/&quot;&gt;Millenium Problems of Mathematics&lt;/a&gt;. One particular problem which almost every Computer Scientist have heard is the &lt;a href=&quot;http://en.wikipedia.org/wiki/P_%3D_NP_problem&quot;&gt;P = NP&lt;/a&gt;. Most of these people know that this problem is directly related to the complexity of a particular algorithm. Most also know that it states that any known solution of a particular kind of problems perform in superpolynomial time. And that’s all they need to know…&lt;br/&gt;&lt;br/&gt;What most don’t learn is the exquisite meaning of NP, which stands for Nondeterministic Polynomial; an NP class problem is one such that a non-deterministic computer can solve it in polynomial time. Got it? Let me express it in other words: &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;A problem which is NP can be efficiently solved by just getting luck in every choice you have to make. For example, in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Travelling_salesman_problem&quot;&gt;traveling salesman problem&lt;/a&gt;, one can in fact solve it in linear time by correctly guessing the next city. The problem, thus, lies in guessing the right one!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Some people have also heard about &lt;a href=&quot;http://en.wikipedia.org/wiki/NP-complete&quot;&gt;NP-complete&lt;/a&gt; (NPC) problems. What is the difference between a NP and an NPC problem? To put it simple, an NPC problem is an NP problem that has been shown to exhibit the characteristic of being able to be “translated” into any other NPC problem. This characteristic may seem only vaguely curious, but has a profound relevance, since:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Should a polynomial solution be found to a particular NPC problem, it could easily be applied to every other one. It’s like a dictionary of problems; find the solution of a puzzle, and you’ve found the generic solution of that class of puzzles!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Unfortunately, this is as far as anyone has gone. No one has been able to prove that there exists NP problems that can or cannot be solved in polynomial time, since no one ever found a P solution to an NP problem. Actually, P = NP could be either proved or disproved without actually founding a particular solution: this would mean that every NP problem would have an efficient solution, though it hasn’t been found yet. But no significant advances there either.&lt;br/&gt;&lt;br/&gt;Keith describes this enigma in such an enthusiastic way that lead me to read the &lt;a href=&quot;http://www.claymath.org/millennium/P_vs_NP/pvsnp.pdf&quot;&gt;formal problem statement&lt;/a&gt;. I must say that I don’t find it easy to read... But I couldn’t resist inciting my colleagues and readers to have a glance at it. Enjoy!&lt;br/&gt;&lt;br/&gt;P.S. My apologies to my purist friends from any inaccuracy I’ve made for the sake of simplicity (and to the excuse of my ignorance :-).</description>
      <enclosure url="http://mindcode.org/Mindcode/Ruminations/Entries/2008/8/14_P_%3D_NP_P_%3D_NP_files/big-1.jpg" length="357687" type="image/jpeg"/>
    </item>
  </channel>
</rss>

