<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Loopy Code</title>
	
	<link>http://www.loopycode.com</link>
	<description>An Embedded Programmer on a journey to Web Entrepreneurship</description>
	<lastBuildDate>Fri, 12 Nov 2010 12:36:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/LoopyCode" /><feedburner:info uri="loopycode" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>LoopyCode</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Facebook is Killing Email</title>
		<link>http://feedproxy.google.com/~r/LoopyCode/~3/y2FVDvmFxT4/</link>
		<comments>http://www.loopycode.com/facebook-is-killing-email/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 12:32:17 +0000</pubDate>
		<dc:creator>Edan Maor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.loopycode.com/?p=31</guid>
		<description><![CDATA[Facebook is killing email. It&#8217;s been happening slowly, and most techies disagree, but it&#8217;s been happening for a long time. I&#8217;ve been meaning to write this post for a while, but it&#8217;s become much more relevant, with Tech Crunch reporting: &#8220;Facebook’s Gmail Killer, Project Titan, Is Coming On Monday&#8220;. There&#8217;s been some excellent discussion on this [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Facebook is killing email. It&#8217;s been happening slowly, and most techies disagree, but it&#8217;s been happening for a long time. I&#8217;ve been meaning to write this post for a while, but it&#8217;s become much more relevant, with Tech Crunch reporting: &#8220;<a title="Facebook’s Gmail Killer, Project Titan, Is Coming On Monday" rel="bookmark" href="http://techcrunch.com/2010/11/11/facebook-gmail-titan/">Facebook’s Gmail Killer, Project Titan, Is Coming On Monday</a>&#8220;. There&#8217;s been some excellent discussion on this topic already, for example on the <a href="http://news.ycombinator.com/item?id=1896884">Hacker News</a> discussion site. Most people there think this is a stupid/uninteresting move by Facebook. But I think this is <strong>exactly</strong> what Facebook should be doing.</p>
<p><a href="http://www.loopycode.com/wp-content/uploads/2010/11/facebook_vs_gmail.png"><img class="size-full wp-image-32 alignnone" title="facebook_vs_gmail" src="http://www.loopycode.com/wp-content/uploads/2010/11/facebook_vs_gmail.png" alt="" width="571" height="142" /></a></p>
<h2>Facebook has already replaced email</h2>
<p>I recently took a trip to Spain with my family. Every time I visit an airport&#8217;s lounge, I take a glance to see what people are doing online, what kinds of sites they&#8217;re visiting. Not surprisingly, 90% of the time, people are on Facebook.</p>
<p>What <em>was</em> interesting to me was that most of the time, what I saw people doing was messaging. Sometimes chatting. It makes sense, after all &#8211; people want to tell their friends and family that they&#8217;re at the airport, about to board a plane. But that&#8217;s what was surprising &#8211; this is exactly what people use email for. Don&#8217;t they?</p>
<h2>Why Facebook Won</h2>
<p>The truth is, for most users, email is hard.</p>
<p>The top rated comment on Hacker News is:</p>
<blockquote><p>I will be really interested to see this, because as it stands Facebook&#8217;s messaging interface is barely any better than 2001&#8242;s Hotmail (you do get a pretty picture with address autocomplete though).</p></blockquote>
<p>Facebook&#8217;s interface may be terrible, but it&#8217;s good in the only thing that actually matters &#8211; making sure you can successfully send a message to the person you intended.</p>
<p>In order to email someone, you have to have their email address. If you get it wrong, you probably won&#8217;t know it. Most people&#8217;s address is a semi-random collection of words, that may or may not have anything to do with their real names. And it tends to become outdated every few years.</p>
<p>On the other hand, users already have all their friends and family inside Facebook. They can&#8217;t go wrong in sending the message, since they type someone&#8217;s actual name, click on a picture of that person, then send them a message &#8211; much simpler, no chance of errors.</p>
<p>When I want to talk to a friend, Facebook is what I turn to every time. I already live inside Facebook, and I have 300 friends there. I don&#8217;t have email addresses for most people I&#8217;m Facebook friends with, but I&#8217;ve probably messaged a good portion of them. These are messages I would never sent if I only had email available to me.</p>
<p>It&#8217;s funny that the fact that email is much more &#8220;open&#8221;, in a sense, makes it much harder to use than Facebook&#8217;s &#8220;closed&#8221; system, which just works. After all, this issue <strong>could</strong> <strong>have </strong>been solved with email as well, by introducing some kind of central authentication or &#8220;user profile&#8221; mechanism. The original lure of email was, in part, its anonymity, its openness. But the Internet has grown up a lot since those days when anonymity was the big deal with going online.</p>
<h2>What Facebook is missing</h2>
<p>The thing is, while Facebook messaging is great for talking to friends, it can&#8217;t be used for &#8220;serious&#8221; matters.</p>
<p>Firstly, Facebook messaging shines when talking to friends, since they usually already exist in your friends list. Talking business with someone you just met at a conference, with whom you have no mutual friends, is still not perfect.</p>
<p>More importantly, Facebook isn&#8217;t <strong>seen</strong> as a serious platform. This is less true now than it used to be, but I would still hesitate to ask people to Facebook me in order to talk business &#8211; Facebook is for friends and family, email is for work.</p>
<h2>What Facebook should do next</h2>
<p>What Facebook should do next is work as hard as they can to make Facebook the only destination for messaging. They already conquered the &#8220;talk to friends&#8221; portion, now all they need is to integrate the more &#8220;serious&#8221; side into it, and they&#8217;ll have taken control over every way people talk online.</p>
<p>In fact, that&#8217;s exactly my guess as to what <a href="http://techcrunch.com/2010/11/11/facebook-gmail-titan/">Project Titan</a> is about. Facebook wants to give you an email client, which will give you the same interface for messaging friends on Facebook, and for talking to more &#8220;serious&#8221; people (non-friends) via email.</p>
<p>If they manage to do it right, this will be a huge deal for most users. Facebook messaging made talking to your friends work. If they can get the same ease-of-use into talking to anyone, users will flock to this new service. It won&#8217;t happen overnight, of course, but it will be the next step in Facebook&#8217;s long-term game to effectively take over everything people do online.</p>
<h2>Is this a good thing?</h2>
<p>I wrote this piece from the point of view of Facebook &#8211; what Facebook should be doing to become even bigger and more powerful, which is clearly in their interest. But for us web citizens, is this a good thing?</p>
<p>Hard to say. I love Facebook &#8211; it&#8217;s made keeping in touch with people in my life much easier, and I love that I can talk to anyone I want with a minimum of fuss. I&#8217;d love to get those same advantages when talking to people outside of my social circle.</p>
<p>But I am hesitant to give Facebook so much power. Everyone was afraid of Google getting too powerful, since they know so much about you. If Facebook pulls a move like this off, they&#8217;ll have control over most of the conversations that happen online &#8211; not an idea I&#8217;m comfortable with.</p>
<img src="http://feeds.feedburner.com/~r/LoopyCode/~4/y2FVDvmFxT4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.loopycode.com/facebook-is-killing-email/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.loopycode.com/facebook-is-killing-email/</feedburner:origLink></item>
		<item>
		<title>Google Instant – Thoughts on the Interface and What This Means for SEO</title>
		<link>http://feedproxy.google.com/~r/LoopyCode/~3/AnNI-sb8J_o/</link>
		<comments>http://www.loopycode.com/google-instant-thoughts-on-interface-and-seo/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 22:01:50 +0000</pubDate>
		<dc:creator>Edan Maor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.loopycode.com/?p=25</guid>
		<description><![CDATA[If you haven&#8217;t heard, Google just released their Instant Search (called &#8220;Google Instant&#8221;). This gives you search results in real-time, as you type. This is a way of searching that&#8217;s becoming increasingly common. In this post, I&#8217;ll share some thoughts on the Goolge&#8217;s new interface, a few tips and tricks for Power Users, and thoughts [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>If you haven&#8217;t heard, Google just released their <a href="http://www.google.com/instant/#utm_campaign=launch&amp;utm_medium=van&amp;utm_source=instant">Instant Search</a> (called &#8220;Google Instant&#8221;). This gives you search results in real-time, as you type. This is a way of searching that&#8217;s becoming increasingly common. In this post, I&#8217;ll share some thoughts on the Goolge&#8217;s new interface, a few tips and tricks for Power Users, and thoughts on what this might mean for SEO.</p>
<h2>Introducing &#8220;Search as you Type&#8221;</h2>
<h3>The Basics</h3>
<p>Search as you type does exactly what it claims: while typing, Google automatically starts a search for you on the term you&#8217;re searching for and displays the results. All without you ever typing &#8220;Enter&#8221;.</p>
<p>Google doesn&#8217;t just start searching for the first letters you type, though; it searches for the <strong>best </strong><strong>match</strong> to what you&#8217;re typing (this will come up later when we talk about SEO).</p>
<p>For example, look at the following search:</p>
<p><a href="http://www.loopycode.com/wp-content/uploads/2010/09/Google-Instant-Search-Stack-Overflow1.jpg"><img class="size-full wp-image-27 alignnone" title="Google Instant Search Stack Overflow" src="http://www.loopycode.com/wp-content/uploads/2010/09/Google-Instant-Search-Stack-Overflow1.jpg" alt="" width="635" height="318" /></a></p>
<p>The black letters are what I&#8217;ve typed so far. The gray letters are the letters Google assumes I&#8217;ll type next (the best match). As you can see, Google has performed the search based on the best match. Pressing &#8220;Enter&#8221; will force Google to perform a regular search. In this case, pressing &#8220;Enter&#8221; will make Google search for &#8220;stac&#8221;.</p>
<h3>Problems with the Interface</h3>
<p>Is the fact that Google searches for the best match clear enough? It took someone pointing it out for me to understand how it worked. I&#8217;m not sure this will be clear to regular users, negating the benefit of saving people keystrokes. More importantly, I&#8217;m worried that people will enter a few letters which have a best match, but will want to perform a search <strong>for those letters, </strong>and not the best match<strong>.</strong> Will they realize they need to press &#8220;Enter&#8221; for Google to do what they want?</p>
<p>A related problem is what happens when a user presses &#8220;Enter&#8221;. The page is grayed out for a split-second, and then the search is carried out. Does this make it clear what&#8217;s going on to users? Or will they enter a few letters (e.g. &#8220;tet&#8221;), see the results they want (&#8220;Tetris&#8221;), press &#8220;Enter&#8221; out of habit, then watch their results disappear.</p>
<h3>Interface Features for Power Users</h3>
<p>After messing around with the interface for a bit, I found some tricks for Power Users. If you have any more tricks, please list them in the comments.</p>
<ul>
<li>Pressing  &#8221;delete&#8221; will delete Google&#8217;s guess, execute the search, but <strong>keep you in the search bar</strong> so you can type more text. This is the same as hitting &#8220;Enter&#8221;, except that &#8220;Enter&#8221; will cause the search bar to lose focus.</li>
<li>Typing letters, even when the search bar is out of focus, will type the letters into the search bar. It will even add a space at the end of the last word automatically for you. I love this feature; I&#8217;m not sure why they didn&#8217;t have it in the old interface. It means I get to keep my hands on the keyboard just a little more than before.</li>
<li>Hitting &#8220;Tab&#8221; or the &#8220;Right Arrow&#8221; will cause Google&#8217;s  &#8221;best match&#8221; guess to be entered for you. Useful if Google guessed right, but you want to add more search terms.</li>
</ul>
<h2 style="font-size: 1.5em;">What Google Instant means for SEO</h2>
<p>I&#8217;m no SEO expert, and I&#8217;m sure that the real impact on SEO won&#8217;t be understood for a while. Having said that, the most important Search Engine, by far, has just <strong>fundamentally </strong>changed the way search works. It&#8217;s clear that <strong>this will have an impact on SEO. </strong>This is obviously something Google has considered long and hard &#8211; they&#8217;d have to be crazy not to. But human ingenuity will always find a way to take advantage of a new situation, given enough time, and I&#8217;m sure this will happen here.</p>
<p>A simple example: <strong>best matches</strong> for certain letters suddenly become <strong>much more important.</strong> If I set out looking for a &#8220;Volkswagen&#8221;, and enter &#8220;vol&#8221;, I&#8217;ll get the following result:</p>
<p><a href="http://www.loopycode.com/wp-content/uploads/2010/09/Google-Instant-Search-Volkswagen.jpg"><img class="size-large wp-image-28 alignnone" title="Google Instant Search Volkswagen" src="http://www.loopycode.com/wp-content/uploads/2010/09/Google-Instant-Search-Volkswagen-1024x351.jpg" alt="" width="819" height="281" /></a></p>
<p>The top ad on the right reads &#8220;A Luxury Car means Volvo S40&#8243;. Obviously, not the result Volkswagen are hoping for.</p>
<p>In fact, now getting things to be <strong>best matches</strong> matters a great deal. I&#8217;m not even sure there has been work done on understanding the algorithm Google uses for guessing best matches. It doesn&#8217;t look like it&#8217;s just which search has the most results: &#8220;Stack Overflow&#8221; has just over 2,000,000 results, while &#8220;stack on&#8221;, the next best guess, clocks in at 24,000,000.</p>
<p>But just like the search results themselves, how Google decides on a best match will start to be studied and gamed, now that it&#8217;s gained such importance.</p>
<h2>Conclusion</h2>
<p>For me, the bottom line is that I love this move. It&#8217;s bold, considering that Google is messing with their most important property. But it&#8217;s a step in the right direction &#8211; a much better, more modern interface for search. Time will tell how much of an impact this has on SEO, and how the majority of people will take to the new interface. But all things considered, I think Google has done an amazing job.</p>
<h2></h2>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 141px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;f:\Downloads\pics temp\Google Instant Search Stack Overflow.jpg&#8221;</div>
<img src="http://feeds.feedburner.com/~r/LoopyCode/~4/AnNI-sb8J_o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.loopycode.com/google-instant-thoughts-on-interface-and-seo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.loopycode.com/google-instant-thoughts-on-interface-and-seo/</feedburner:origLink></item>
		<item>
		<title>A Surprisingly Hard Problem (Post Correspondence)</title>
		<link>http://feedproxy.google.com/~r/LoopyCode/~3/qVr-NXG2rE0/</link>
		<comments>http://www.loopycode.com/a-surprisingly-hard-problem-post-correspondence/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 09:34:58 +0000</pubDate>
		<dc:creator>Edan Maor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.loopycode.com/?p=19</guid>
		<description><![CDATA[A Small Riddle Imagine I have a bucket with an infinite number of dominoes. Each domino looks like one of these: In other words, I have an infinite number of dominoes which read &#8220;a&#8221; at the top and &#8220;baa&#8221; at the bottom, and so on for the other types. The dominoes can&#8217;t be turned end [...]]]></description>
			<content:encoded><![CDATA[<p></p><h2>A Small Riddle</h2>
<p>Imagine I have a bucket with an infinite number of dominoes. Each domino looks like one of these:</p>
<p><a href="http://www.loopycode.com/wp-content/uploads/2010/07/Post-Correspondence-Domino-Set1.jpg"><img class="size-full wp-image-21 alignnone" title="Post Correspondence Domino Set" src="http://www.loopycode.com/wp-content/uploads/2010/07/Post-Correspondence-Domino-Set1.jpg" alt="" width="373" height="210" /></a></p>
<p>In other words, I have an infinite number of dominoes which read &#8220;a&#8221; at the top and &#8220;baa&#8221; at the bottom, and so on for the other types. The dominoes can&#8217;t be turned end for end: they have a specific top and bottom (otherwise the letters would be upside down, which is obviously crazy).</p>
<p>Here&#8217;s the riddle: try to arrange the dominoes, in any order you like, so that the string made of all the tops of the dominoes and the string made of all the bottoms of the dominoes is the same string.</p>
<p>The simplest attempt is to take one of each kind of domino and arrange them in order, as in the picture above. Reading all the tops of the dominoes gives the string &#8220;a,ab,bba&#8221;, and the bottoms read &#8220;baa,aa,bb&#8221;, which are obviously not the same string (I added the commas for clarity, but the comparison is done without them).</p>
<p>Is it possible to find an arrangement with those three types dominoes to get an answer? The solution, in this case, is the following:</p>
<p><a href="http://www.loopycode.com/wp-content/uploads/2010/07/Post-Correspondence-Solution.jpg"><img class="size-full wp-image-22 alignnone" title="Post Correspondence Solution" src="http://www.loopycode.com/wp-content/uploads/2010/07/Post-Correspondence-Solution.jpg" alt="" width="509" height="210" /></a></p>
<p>If we number the original dominoes 1-3, this solution has the sequence: 3-2-3-1, and the strings read: &#8220;bba,ab,bba,a&#8221; and &#8220;bb,aa,bb,baa&#8221;. Without the commas, both strings read: &#8220;bbaabbbaa&#8221;. Not too difficult.</p>
<h2>The General Problem</h2>
<p>Now comes the interesting part. I could ask you the same question, but give you a different set of dominoes. For example, I could give you the same set as before, but without the third domino:</p>
<p><a href="http://www.loopycode.com/wp-content/uploads/2010/07/Post-Correspondence-Unsolvable-Set.jpg"><img class="size-full wp-image-23 alignnone" title="Post Correspondence Unsolvable Set" src="http://www.loopycode.com/wp-content/uploads/2010/07/Post-Correspondence-Unsolvable-Set.jpg" alt="Post Correspondence Unsolvable Set" width="240" height="210" /></a></p>
<p>It&#8217;s pretty clear that in this case, no solution is possible. If I start with the first domino, already the strings are different, since one starts with an &#8220;a&#8221; and the other with a &#8220;b&#8221;. Likewise, starting with the second domino gives us a top string that starts &#8220;ab&#8221; and a bottom string that starts &#8220;aa&#8221;, so once again, we are stuck.</p>
<p>So the general question becomes, given a set of dominoes, is there a way to solve the problem by forming two equal strings? In other words:</p>
<blockquote><p>Given a set of domino types, return True if the problem can be solved (i.e., the dominoes can be arranged to form two equal strings), or False otherwise.</p></blockquote>
<p>Take a few minutes to try and come up with the algorithm that solves this. But don&#8217;t try for too long; this is a deceptively difficult problem.</p>
<h2>The Solution</h2>
<p>Okay, I lied a little. This isn&#8217;t a difficult problem; it&#8217;s an impossible one. There is <strong>no possible algorithm</strong> which solves the general case of the Correspondence Problem, as was proved by Emil Post in 1946.</p>
<p>The proof of the undecidability of the Post Correspondence Problem is a complicated one. I learned it from Sipser&#8217;s <a href="http://www.amazon.com/gp/product/0534950973?ie=UTF8&amp;tag=thtaofco0a-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0534950973">Introduction to the Theory of Computation</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=thtaofco0a-20&amp;l=as2&amp;o=1&amp;a=0534950973" border="0" alt="" width="1" height="1" /> (affiliate). It involves showing that any Turing Machine can be simulated by carefully constructing the dominoes, making solving the Post Correspondence Problem equivalent to checking whether a Turing Machine accepts a given input. Since the latter is provably undecidable, the former must be undecidable as well.</p>
<h2>Why I love the Post Correspondence Problem</h2>
<p>I love the field of Computer Science, and I really love questions about decidability. It seems magical  to me that some problems<strong> </strong>can <strong>never be solved by an algorithm. </strong>But most of the time, the undecidable problems (like the famous <a title="Halting Problem on Wikipedia" href="http://en.wikipedia.org/wiki/Halting_problem">Halting Problem</a>), seem a little detached from actual programming.</p>
<p>The reason I love the <a title="Post Correspondence Problem on Wikipedia" href="http://en.wikipedia.org/wiki/Post_correspondence_problem">Post Correspondence Problem</a> is that this seems like it should have an answer. When I first heard about it, I spent a lot of time looking for an algorithm to solve this, before learning that no algorithm can exist. This is the type of problem I can imagine running into during my day to day programming, and trying to solve it without realizing that it can&#8217;t be solved.</p>
<p>Which leads me to wonder: how many times have programmers working on real-life programs stumbled onto unsolvable problems, and tried to attack them without realizing the futility?</p>
<img src="http://feeds.feedburner.com/~r/LoopyCode/~4/qVr-NXG2rE0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.loopycode.com/a-surprisingly-hard-problem-post-correspondence/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://www.loopycode.com/a-surprisingly-hard-problem-post-correspondence/</feedburner:origLink></item>
		<item>
		<title>Succeed by being an Incrementalist</title>
		<link>http://feedproxy.google.com/~r/LoopyCode/~3/vNOqp4h2pBc/</link>
		<comments>http://www.loopycode.com/succeed-by-being-an-incrementalist/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 10:21:19 +0000</pubDate>
		<dc:creator>Edan Maor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.loopycode.com/?p=16</guid>
		<description><![CDATA[If you haven&#8217;t read it, Josh Waitzkin&#8217;s &#8220;The Art of Learning&#8221; (affiliate link) is a great book. Josh Waitzkin is an interesting guy: He was a famously successful chess player as a kid (even having a movie made about him). Growing up, he decided to refocus his energies on Martial Arts, and went on to [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>If you haven&#8217;t read it, Josh Waitzkin&#8217;s &#8220;<a href="http://www.amazon.com/gp/product/0743277465?ie=UTF8&amp;tag=thtaofco0a-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0743277465">The Art of Learning</a>&#8221; (affiliate link) is a great book. <a title="Josh Waitzkin's Wikipedia page" href="http://en.wikipedia.org/wiki/Josh_Waitzkin">Josh Waitzkin</a> is an interesting guy: He was a famously successful chess player as a kid (even having <a title="Searching for Bobby Fischer's Wikipedia Page" href="http://en.wikipedia.org/wiki/Searching_for_Bobby_Fischer">a movie</a> made about him). Growing up, he decided to refocus his energies on Martial Arts, and went on to win 4 Push Hands competitions in Tai Chi Chuan. The Art of Learning is his autobiography. He talks about the life of a professional athlete in a fascinating way, digging into both the physical and the mental aspects of martial arts competitions.</p>
<p><a href="http://www.loopycode.com/wp-content/uploads/2010/07/artoflearning.jpg"><img class="size-full wp-image-18 alignnone" title="artoflearning" src="http://www.loopycode.com/wp-content/uploads/2010/07/artoflearning.jpg" alt="The Art of Learning, by Joshua Waitzkin" width="320" height="320" /></a></p>
<p>I took a lot of ideas from this book, but the most important idea was the two ways people approach learning: <em>entity learning </em>and <em>incremental learning.</em></p>
<blockquote><p>Children who are &#8220;<strong>entity theorists</strong>&#8221; &#8211; that is, kids who have been influenced by their parents and teachers to think in this manner &#8211; are prone to use language like &#8220;I am smart at this&#8221; and to attribute their success or failure to an ingrained and unalterable level of ability. They see their overall intelligence or skill level at a certain discipline to be a fixed <em>entity,</em> a thing that cannot evolve. <strong>Incremental theorists</strong>, who have picked up a different modality of learning [..] are more prone to describe their results with sentences like &#8220;I got it because I worked very hard at it&#8221; or &#8220;I should have tried harder&#8221;.</p></blockquote>
<p>Entity theorists believe that certain people are inherently better at things. Incremental theorists believe that anyone can learn anything, even if it takes a lot of work. Surprisingly, as this quote demonstrates, people&#8217;s underlying beliefs about this tend to stem, not from the feedback of their parents/peers, but of the <strong>specific wording </strong>and the <strong>sentiment </strong>of that feedback.</p>
<p>I am a member of the incrementalist camp. Anything can be learned, and incrementalism is a much better mindset to have when faced with problems. In fact, I doubt it&#8217;s possible to succeed at creating a startup without it. The number of new things you have to learn, combined with the fact that you&#8217;re certain to be making mistakes daily, make it a terrible position to be in if you believe being good at something is a &#8220;binary&#8221; matter.</p>
<p>Unfortunately, a lot of programmers tend to fall into the trap mentioned by Max Klein in his article &#8220;<a href="http://maxkle.in/your-high-iq-will-kill-your-startup/">Your high IQ will kill your startup</a>&#8220;:</p>
<blockquote><p>People who are born intelligent start off life with everything easy for them. They don’t have to work hard to get good grades, they never really have to do much to get ahead. The major challenge of early life is school – and school is designed for average people. So intelligent people just breeze through.</p>
<p>But there is a point where every intelligent person faces something that requires more than intelligence. It requires hard work, it requires the ability to fail, it requires being able to do tough tasks, boring tasks. For the first time in their life, in spite of their intelligence, these intelligent people are challenged, and they start failing. Like when they first attempt to create a startup.</p></blockquote>
<p>Most programmers are above-average in intelligence. To make matters worse, a lot of the best hackers started off at a very young age, giving them the impression that they&#8217;re &#8220;naturally talented&#8221; at programming. They probably are, but no one knows everything at first; they certainly made many mistakes and learned a lot along the way.</p>
<p>The problem is, these programmers let their success with computers lull them into one field for the rest of their life, because that&#8217;s the only place they feel safe. Even worse, when they finally do decide to venture into new areas, their immediate failures send them right back to writing code. That&#8217;s not necessarily bad, since many people enjoy spending most of their time programming. It&#8217;s only bad when it&#8217;s because they feel that&#8217;s all they&#8217;ll ever be good at.</p>
<p>Evey once in a while, I run into someone who very patiently explains to me that I&#8217;m wrong. &#8220;I just don&#8217;t have any artistic talent&#8221;, they say, or &#8220;I&#8217;m just no good at sports&#8221;. And they&#8217;re probably right. But behind every story of a &#8220;gifted&#8221; artist, there usually lurks the truth: they had some talent to start with, sure, but they worked very hard to get to where they are now. I regularly throw myself into learning things I&#8217;m bad at, because it&#8217;s fun, but also because I want to prove to myself that I can. I&#8217;m certainly a better programmer than I am anything else, but it&#8217;s nice to know that I <strong>can</strong> learn new fields if I really try.</p>
<p>I&#8217;ll finish with another great annecdote from Josh Waitzkin, showing the importance of the incrementalist mindset for success:</p>
<blockquote><p>In one wonderfully revealing study, a group of children was interviewed and then each child was noted as having either an entity or learning theory of intelligence. All the children were then given a series of easy math problems, which they all solved correctly. Then, all the children were given some very hard problems to solve &#8211; problems that were too difficult for them. It was clear that the learning theorists were excited by the challenge, while the entity theorists were dismayed. Comments would range from &#8220;Oh boy, now I&#8217;m really gonna have to try hard&#8221; to &#8220;I&#8221;m not smart enough for this.&#8221; Everyone got these problems wrong &#8211; but evidently the experience of being challenged had very different effects. What is most interesting is the third stage of this experiment: all the children were once again given easy problems to solve. Nearly all of the learning theorists breezed right through the easy material, but the entity theorists had been so dispirited by the inability to solve the hard problems that many of them foundered through the easy stuff. Their self-confidence had been destroyed.</p></blockquote>
<blockquote><p><em><br />
</em></p></blockquote>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="color: #424037; font-family: Arial, Helvetica, sans-serif; line-height: normal; font-size: 14px;"></p>
<p style="line-height: 1.75em; margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px;">People who are born intelligent start off life with everything easy for them. They don’t have to work hget good gradehave to do much to get ahead. The major challenge of early life is school – and school is designed for average people. So intelligent people just breeze through.</p>
<p style="line-height: 1.75em; margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px;">But there is a point where every intelligent person faces something that requires more than intelligence. It requires hard work, it requires the ability to fail, it requires being able to do tough tasks, boring tasks. For the first time in their life, in spite of their intelligence, these intelligent people are challenged, and they start failing. Like when they first attempt to create a startup.</p>
<p></span></div>
<img src="http://feeds.feedburner.com/~r/LoopyCode/~4/vNOqp4h2pBc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.loopycode.com/succeed-by-being-an-incrementalist/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.loopycode.com/succeed-by-being-an-incrementalist/</feedburner:origLink></item>
		<item>
		<title>Solving Sign-up Anxiety</title>
		<link>http://feedproxy.google.com/~r/LoopyCode/~3/UboRslSP6M8/</link>
		<comments>http://www.loopycode.com/solving-sign-up-anxiety/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 10:00:50 +0000</pubDate>
		<dc:creator>Edan Maor</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.loopycode.com/?p=9</guid>
		<description><![CDATA[Every once in a while, you come across software that solves a problem you never knew you had. Finding KeePass was like that for me. Being a long-time web user, you&#8217;ve probably signed up to a lot of sites. If you&#8217;re like most people, you guiltily use the same password on all of them. But [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Every once in a while, you come across software that solves a problem you never knew you had. Finding <a title="KeePass" href="http://www.keepass.info/">KeePass </a>was like that for me.</p>
<p><a href="http://www.loopycode.com/wp-content/uploads/2010/06/KeePass.gif"><img class="alignleft size-full wp-image-10" title="KeePass" src="http://www.loopycode.com/wp-content/uploads/2010/06/KeePass.gif" alt="KeePass logo" width="75" height="75" /></a></p>
<p>Being a long-time web user, you&#8217;ve probably signed up to a lot of sites. If you&#8217;re like most people, you guiltily use the same password on all of them. But every time you register for a new site, somewhere at the back of your head you&#8217;re thinking, &#8220;Will I remember the username? Is it really ok to use the same password, <em>again?</em> Will I even remember that I registered for this site?&#8221;. You&#8217;re not aware of it, but you&#8217;ve got Sign-up Anxiety. The little niggling at the back of your head you get when creating a new user on a site, because you <em><span style="font-style: normal;">know</span> </em>that it&#8217;s another piece of information to store in your already-overburdened memory.</p>
<p>Enter <a href="http://www.keepass.info/">KeePass</a>. KeePass is a password manager. It&#8217;s pretty simple: every time you sign up for a site, you add your username and site details to KeePass, which will generate a password for you. This all gets saved in an encrypted file on your computer. When opening the file, you&#8217;ll be asked to type your master password, after which the program will stay around in your tray to help you auto-login to various sites.</p>
<p>On the surface, nothing to write home about. But this program solved the sign-up anxiety I never knew I had. I now happily create accounts on sites even if I know I&#8217;ll never visit them again, because why not? It&#8217;s a random password, and it&#8217;s all stored on a file on my computer. No need to commit anything to memory. This sounds like a small deal, but it fits right in with the <a href="http://en.wikipedia.org/wiki/Getting_Things_Done">Getting Things Done</a> philosophy: storing all these things externally causes us to stop worrying so much, if when we don&#8217;t realize we were worrying in the first place.</p>
<h2>Using KeePass effectively</h2>
<p>I&#8217;ve developed a few routines for using KeePass effectively, which I thought I&#8217;d share. These mostly focus on doing as much as possible with the keyboard, and making sure you don&#8217;t lose important information for later.</p>
<p><strong>Note: </strong>You may have to enable some of the shortcuts I use in the KeePass options for some of the tips to work.</p>
<p><a href="http://www.loopycode.com/wp-content/uploads/2010/06/addentry_big.png"><img class="size-full wp-image-11 alignnone" title="KeePass - adding an entry" src="http://www.loopycode.com/wp-content/uploads/2010/06/addentry_big.png" alt="" width="489" height="539" /></a></p>
<h3>Signing up to a new site</h3>
<p>Whenever I need to sign up to something, I do the following:</p>
<ol>
<li>Enter the username I want on the site&#8217;s registration form. This is sometimes a regular username and sometimes a password.</li>
<li>Hit ctrl+alt+k to quick-open the KeePass window (entering my master password if need be).</li>
<li>Hit ctrl+y to create a new entry.</li>
<li>Give the site&#8217;s name as the title (this is important for auto-logging-in later), and enter the username I chose.</li>
<li><strong>Hit OK. </strong>This will save the entry, making it much easier to copy the password into the registration form.</li>
<li>Now, you&#8217;ve got an entry for the site that you can use, with the password already saved. Ctrl+c to copy the password to your clipboard, enter it on the site, and complete your registration.</li>
<li>Save the KeePass file, and you&#8217;re good to go. If there was a problem with the registration (username was taken, for example), just hit enter on your entry to edit it.</li>
<li>I usually add the email address I used in the &#8220;Notes&#8221; section of the entry, since I tend to use many addresses, but your mileage may vary.</li>
</ol>
<h3>Logging in to a site</h3>
<p>This is where KeePass really shines. It has a keyboard shortcut, ctrl+alt+a, which will enter your username and password for you. It works by looking at the current window title, checking if you have an entry whose title matches, and then performing an auto-type of the username and password for you. A few tips:</p>
<ul>
<li>The auto-type feature only works with window titles that match (a loose matching: the title &#8220;Gmail &#8211; log in&#8221; will work with the entry &#8220;Gmail&#8221;) . Most sites work fine, but some sites have titles that won&#8217;t work well (for example, Amazon&#8217;s log-in has the title &#8220;Log in&#8221; with no mention of Amazon). For these situations, you can choose what text this entry will auto-match against by going to the notes section of the entry, clicking on the &#8220;Tools&#8221; button at the bottom left, and choosing &#8220;Auto-type: select target window&#8221;. There are plugins to solve this issue by making KeePass look at urls as well as window titles, but I don&#8217;t have experience with any of them.</li>
<li>By default, KeePass will auto-type the sequence: &#8220;username {tab} password {enter}&#8221;. This can be changed for sites that require other things (your SSN for example). Just open the entry, go to the &#8220;Notes&#8221; section, then click the &#8220;Tools&#8221; button at the bottom left and choose &#8220;Auto-type: Customize Sequence&#8221;.</li>
<li>For sites that simply won&#8217;t work with auto-type (for whatever reason), you can alway do this: ctrl+alt+k to bring up KeePass, ctrl+f to find the entry you&#8217;re looking for, then hit ctrl+v to cause the auto-type behavior.</li>
</ul>
<h3>Tips and tricks</h3>
<p>There are a few other things I do to get the most out of KeePass.</p>
<ul>
<li>Since you&#8217;re putting so many eggs into the KeePass basket, backing up your KeePass databse file <strong>must</strong> be a top priority. I back up to my disk-on-key, as well as continuously backing up to <a title="Dropbox" href="https://www.dropbox.com/referrals/NTU5Mzg1MzA5">Dropbox</a> (referral link). If you&#8217;re worried about the security implications, look into using a key file which doesn&#8217;t get synced.</li>
<li>To make sure I have my passwords wherever I go, I also keep a portable copy of KeePass on my disk-on-key. For this reason, I use version 1.17 of KeePass and not 2 (the 2 versions require the .NET framework, which makes them a tad less portable).</li>
<li>I keep mentioning that I use KeePass for websites, but it&#8217;s actually geared just as much towards using it for software (logging in to your Skype, for example). I also keep all my login details for my projects in my KeePass database (MySql password, etc).</li>
<li>I keep a few other details in my KeePass, things I don&#8217;t just want to throw on my computer in a regular file, but which are handy to have. For example, various credit-card numbers can be stored there for easy access when purchasing things online (this can also be a bad thing if you&#8217;re trying to spend less, I&#8217;ve discovered).</li>
<li>KeePass comes with many security precautions. For example, you can chose how often it locks the file you&#8217;re viewing, forcing you to reenter your password. Other security measures are automatically clearing passwords from your clipboard after ten seconds of use. If you&#8217;re interested in extra security, read up on the subject at the KeePass website.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/LoopyCode/~4/UboRslSP6M8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.loopycode.com/solving-sign-up-anxiety/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.loopycode.com/solving-sign-up-anxiety/</feedburner:origLink></item>
		<item>
		<title>Hello world</title>
		<link>http://feedproxy.google.com/~r/LoopyCode/~3/ALiNneRrPdY/</link>
		<comments>http://www.loopycode.com/hello-world/#comments</comments>
		<pubDate>Sat, 29 May 2010 11:40:55 +0000</pubDate>
		<dc:creator>Edan Maor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.loopycode.com/?p=1</guid>
		<description><![CDATA[Welcome to my new blog, LoopyCode. It is now officially one day old. I thought I&#8217;d take the time to tell you what this blog is about, and what you can expect to get from reading it. I&#8217;ll be posting every few days. I&#8217;ll talk about a lot of things, but you can expect a [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Welcome to my new blog, LoopyCode. It is now officially one day old.</p>
<p style="text-align: center;"><a href="http://www.loopycode.com/wp-content/uploads/2010/03/birthday_balloons.jpg"><img class="size-medium wp-image-7 aligncenter" title="birthday_balloons" src="http://www.loopycode.com/wp-content/uploads/2010/03/birthday_balloons-267x300.jpg" alt="Birthday Balloons" width="267" height="300" /></a></p>
<p>I thought I&#8217;d take the time to tell you what this blog is about, and what you can expect to get from reading it.</p>
<p>I&#8217;ll be posting every few days. I&#8217;ll talk about a lot of things, but you can expect a lot of:</p>
<ul>
<li>Thoughts about the projects I&#8217;m working on.</li>
<li>Reviews of new software I&#8217;m using to get the most from my computer.</li>
<li>Things I&#8217;m learning as I make the move from embedded systems programming to the web.</li>
</ul>
<p>I&#8217;ll also be talking about some of the lessons I&#8217;ve learned in my 6+ years of programming and running a small software team, and my experiences building a business focused on Web 2.0 software.</p>
<p>If you ever want to get in touch, please send an email or leave a comment. I&#8217;m always happy to talk.</p>
<img src="http://feeds.feedburner.com/~r/LoopyCode/~4/ALiNneRrPdY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.loopycode.com/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.loopycode.com/hello-world/</feedburner:origLink></item>
	</channel>
</rss>

