<?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:dc="http://purl.org/dc/elements/1.1/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><description>I’m Sean Johnson, the founder of Snooty Monkey.This is Monkey Opus, the Snooty Monkey Blog.</description><title>Monkey Opus</title><generator>Tumblr (3.0; @snootymonkey)</generator><link>http://blog.snootymonkey.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/snootymonkey" /><feedburner:info uri="snootymonkey" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/" /><geo:lat>35.912786</geo:lat><geo:long>-79.109318</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><feedburner:emailServiceId>snootymonkey</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsnootymonkey" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsnootymonkey" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><item><title>Snooty Monkey: Andrew's Perspective</title><description>&lt;p&gt;&lt;em&gt;Guest post by Andrew, one of the Snooty Monkeys.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I met Sean the same year that Snooty Monkey was started. At the time, I was working on a digital textbook application called ezLearnz, while working at a day job that had nothing to do with software. Sean was also working on an education app called Live Syllabus, while working a day job at IBM. We saw the possibility of a 1 + 1 = 3 situation… known as a synergistic relationship in the corporate world we were working in at the time.&lt;/p&gt;
&lt;p&gt;Sean and I met regularly on Saturday mornings for more than a year. During this time, Sean mentored my process of becoming a software developer and we discussed educational topics, including an idea very similar to what is now &lt;a href="http://p2pu.org/" target="_blank"&gt;P2PU&lt;/a&gt;. We realized we were both passionate about products that simplify and facilitate education and learning. In the end, we did not continue to pursue either of our education apps; we realized the education landscape was changing too rapidly, and what was missing from existing products was a revolutionary user interface that would radically improve users’ learning experience. During this time, I started getting interested in self-improvement apart from our discussions on the subject.&lt;/p&gt;
&lt;p&gt;A year later, I started contracting for SnootyMonkey. Our discussions on education continued, but at this point broadened to self-improvement, philosophy, maximizing global happiness, and other interesting thoughts.&lt;/p&gt;
&lt;p&gt;Recently I’ve become interested in the softer skills of web app development, particularly marketing. I like the idea of becoming a well-rounded web app generalist… being able to not only create an awesome app, but find people willing to pay for it. Luckily, Snooty Monkey happens to be in need of a suitably Snooty (yet open, transparent, and ethical) Marketer. And applying Snooty Monkey’s new tagline, “Simple Self-Improvement for a Complex World” to my own career, while improving Snooty Monkey, is just so deliciously recursive. Stay tuned for more Simian Snootiness as I work to figure out ethical web marketing!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=6NhtXrAk5Co:0WnlJjGA9ks:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=6NhtXrAk5Co:0WnlJjGA9ks:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=6NhtXrAk5Co:0WnlJjGA9ks:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=6NhtXrAk5Co:0WnlJjGA9ks:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=6NhtXrAk5Co:0WnlJjGA9ks:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=6NhtXrAk5Co:0WnlJjGA9ks:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/6NhtXrAk5Co" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/6NhtXrAk5Co/11151931845</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/11151931845</guid><pubDate>Fri, 07 Oct 2011 17:06:00 -0400</pubDate><feedburner:origLink>http://blog.snootymonkey.com/post/11151931845</feedburner:origLink></item><item><title>A New Direction for Monkey Opus</title><description>&lt;p&gt;&lt;p class="p1"&gt;The Snooty Monkey tagline is a common household phrase of course. But just in case anyone reading this is a recent immigrant from Papa New Guinea, or just concluded a multi-year NASA space travel deprivation experiment, the tagline is, “Simple Software for a Complex World”.&lt;/p&gt;
&lt;p class="p1"&gt;As of this moment, Snooty Monkey has a new tagline, “Simple Self-Improvement for a Complex World”. Why the new tag line? The old tagline reflected a clear mission in 2008, let me take my skills as a “software product person” and build a self-supporting consultancy, lest my family starve to death. The new tagline reflects an &lt;a href="http://blog.snootymonkey.com/post/10740247408/snooty-monkey-lessons-learned" target="_blank"&gt;&lt;span class="s1"&gt;aspirational change here at the end of 2011&lt;/span&gt;&lt;/a&gt;, and it better fits the broader original goal of Snooty Monkey, which was to create a bootstrapped software company.&lt;/p&gt;
&lt;p class="p1"&gt;This brings me to the actual topic of this blog post, changes in &lt;strong&gt;Monkey Opus&lt;/strong&gt; (which happens to be the very blog you are reading). In the past &lt;strong&gt;Monkey Opus&lt;/strong&gt; has not been terribly focused. There has been a mix of entrepreneurship, product management, and technology topics. Moving forward, the focus will narrow. It’s not that entrepreneurship, product management, and technology topics will never be discussed here. I certainly won’t be able to always resist that temptation, but the major focus of &lt;strong&gt;Monkey Opus &lt;/strong&gt;is now self-improvement.&lt;/p&gt;
&lt;p class="p1"&gt;Why self-improvement? Because it’s what Snooty Monkey is all about as a software company. We are all monkeys. This life of ours is our opus. Let’s be snooty about it and make it a good one!&lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=47YDijB131A:JpcRJ28kFQ4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=47YDijB131A:JpcRJ28kFQ4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=47YDijB131A:JpcRJ28kFQ4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=47YDijB131A:JpcRJ28kFQ4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=47YDijB131A:JpcRJ28kFQ4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=47YDijB131A:JpcRJ28kFQ4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/47YDijB131A" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/47YDijB131A/10954512976</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/10954512976</guid><pubDate>Sun, 02 Oct 2011 18:35:47 -0400</pubDate><feedburner:origLink>http://blog.snootymonkey.com/post/10954512976</feedburner:origLink></item><item><title>Snooty Monkey: Lessons Learned</title><description>&lt;p&gt;Snooty Monkey was started in 2008 as an experiment. The focus of the experiment? Can a CTO / Lead Developer / Product Manager type (that’s me by the way) create a hybrid micro-ISV / consultancy company? One that purposely stays small (just me? me and 2?), while serving a niche client base (bootstrapped entrepreneurs) with a niche service (temporary technical co-founder). Can doing this afford me the time to experiment with software products of my own without the traditional startup pressure that each one be a hit or the whole company fails?&lt;/p&gt;
&lt;p&gt;Unlike a good experiment, where things are tested one at a time and variables are controlled, by necessity this experiment had lots of variables and was chaotic at times. The grand experiment is far from over, in many ways it’s just begun, but some of these experiments have now run their course, their questions have been answered and the results are ready for review and confirmation by the rest of the scientific community. It’s time to refocus the lab on new questions.&lt;/p&gt;
&lt;p&gt;So, what has been tested so far with Snooty Monkey? What were the hypotheses? And what can now be concluded?&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Experiment&lt;/strong&gt;: Can I support my family without a “job”?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hypothesis&lt;/strong&gt;: Yes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: Yes. I’ve worked for myself since early 2009. I have yet to take the plunge and hire an employee, but Snooty Monkey is the main source of income for a few contractors (I call them friends though).&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Experiment&lt;/strong&gt;: Is there a market for a freelance “temporary: technical co-founder / CTO / lead developer / product manager” in the bootstrapped entrepreneur community?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hypothesis&lt;/strong&gt;: Yes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: I can say in no uncertain terms that many non-technical founders of bootstrapped startups will be willing to partner for some or all of the technical aspects of their business so they can focus on what they do best, eventually replacing Snooty Monkey with their own technical team when the business finds product/market fit and needs to scale. If you have the skills, drive, maturity and experience to make a good technical co-founder, there is a market for you services for cash rather than equity. In these 3 years, about 80% of the work and about 90% of the revenue for Snooty Monkey has more or less fit the experimental description. At times I’ve done work for big companies (mostly sub-contracted through interactive marketing firms) and for venture-funded startups, and almost without fail, this work has been less rewarding and fulfilling for me and less successful for the company. At the end of the day, I’m a technical entrepreneur. If I’m doing something else for you, you’re probably not getting as much bang for your buck as you should and I’m probably not having as much fun as I should.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Experiment&lt;/strong&gt;: Can I pick and chose the projects I want to work with to fit my technical interests?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hypothesis&lt;/strong&gt;: Yes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: Yes. When I left the Biggest Blue Java shop, I made a promise to myself not to work with technology I don’t like. I’ve built many Ruby on Rails and Objective-C products, and I’ve got projects with Erlang, CoffeeScript and even Prolog in them, all of which I really enjoy. The couple of side trips into C++, Flash, Flex, and Java have been few, brief and mostly self-inflicted (Ouch, I forgot how much that sucks! Note to future self…).&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Experiment&lt;/strong&gt;: Can I pick and chose the projects I want to work with to fit my interests?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hypothesis&lt;/strong&gt;: Yes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: Mostly no. My main interests are self-improvement, philosophy, literature, sports, alternative software development technology, and education. I’ve had some luck building products in the field of sports, but other than that, I’ve not had much interest aligning my interests with my bootstrapped entrepreneurs’ product needs. I’ve built many branded marketing apps. I’ve built scientific apps, quality assurance apps, customer service apps, healthcare apps, etc. All of these have been very interesting in their own right and I’ve learned a ton with each one. But when I work on my own products as Snooty Monkey, I have a perfect fit with my own interests (Snooty Monkey’s two current products are in self-improvement and sports). This kind of alignment is a powerful force that should not be undervalued.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Experiment&lt;/strong&gt;: Can I mantain my own high ethical standards while contracting my time to others?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hypothesis&lt;/strong&gt;: Yes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: Mostly yes. I’ve been extremely impressed with the character of the entrepreneurs I’ve been fortunate to work with. I regularly hear and read about startup horror stories starring villainous and greedy entrepreneurs. But the entrepreneurs I’ve met and agreed to work with have been some of the most upstanding people I know. They’ve been impeccably fair to me and to their customers. I’m close to suggesting a hypothesis that entrepreneurs are better people on average than society at large would lead you to expect. The one exception to charting my own ethical course has been in the area of software patents. Unfortunately I’ve not seen eye to eye with some of my very best clients about the nature, value and ethical standing of the broken US patent system. The work I’ve done in just the last 3 years has led to over a dozen patent applications, many of which I directly helped formulate (Snooty Monkey does work for hire so those patents belong to the clients). I’m not proud of this. It is a case of my deeds not living up to my thoughts and words. I’m considering declining to directly participate in software patent activities in the future. This could cost Snooty Monkey valuable business.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;In looking back over these questions, I find it a bit difficult to remember how scary and unknown they seemed at the time, I can’t help but be pleased at how things have turned out.&lt;/p&gt;
&lt;p&gt;The risk I now face is that I become complacent. I’m my own boss, I have a decent income, and I get to work with great people, my team of contractors and bootstrapped entrepreneurs, who want nothing more than for me to succeed. After all, me succeeding is the only way my clients get to succeed. There are no politics, no ulterior motives, and no bureaucracy. It’s the business of software in its purest form. Just them and their idea and me and my keyboard.&lt;/p&gt;
&lt;p&gt;In some sense then, I’ve become too successful at what I do now, which is helping others build software companies without taking or before taking investment. This is now an 80-hour-a-week job for me. I could do nothing else for the foreseeable future. But it’s not what I set out to do. It was all a means to an end. That end being to build my own bootstrapped software company. And not just any software company. I want to create software products that help me improve my life, and if all goes well, help others improve their lives in the same way.&lt;/p&gt;
&lt;p&gt;I’m ready to admit that I’m no longer making any progress on this. I’ve done some really amazing and cool things since starting Snooty Monkey. I wrote a book, I created some great products, I’ve even helped create what are now some great companies. But I need to get this train back on the original track. I need to better balance the two parts of my business. I need to manage my goals, my time, my tasks and my attention to achieve more. I need to improve myself. I need to be better.&lt;/p&gt;
&lt;p&gt;I owe this to myself, I owe it to my family, I owe it to Snooty Monkey’s contractors, clients and current and future customers.&lt;/p&gt;
&lt;p&gt;During the last couple of weeks I’ve been working with Andrew (one of said contractors) on the seeds of a new plan. This plan is going to germinate and change and grow (or shrivel and die) here in the open on this blog. Get your popcorn ready! It’s going to be an exciting show.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=M5oZpmNSCQE:QtqIrJnJwV4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=M5oZpmNSCQE:QtqIrJnJwV4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=M5oZpmNSCQE:QtqIrJnJwV4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=M5oZpmNSCQE:QtqIrJnJwV4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=M5oZpmNSCQE:QtqIrJnJwV4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=M5oZpmNSCQE:QtqIrJnJwV4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/M5oZpmNSCQE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/M5oZpmNSCQE/10740247408</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/10740247408</guid><pubDate>Tue, 27 Sep 2011 17:54:00 -0400</pubDate><feedburner:origLink>http://blog.snootymonkey.com/post/10740247408</feedburner:origLink></item><item><title>Build Erlang R14Bx on Mac OS X Lion</title><description>&lt;p&gt;Usually to build software from source on Linux or Mac OS X, you follow the pattern:&lt;/p&gt;
&lt;pre&gt;./configure
make
sudo make install
&lt;/pre&gt;
&lt;p&gt;When trying this on Mac OS X Lion you’ll find that make is no longer part of the OS like it was with Snow Leopard and before. Instead, it is part of Xcode 4.1 or greater. So you need to head to the Mac App Store app and get your free copy of Xcode 4.1 (or greater) so that you’ll have make installed.&lt;/p&gt;
&lt;p&gt;Another wrinkle, specifically for getting Erlang from source, is that there are some obscure flags you need to use with configure to get Erlang to build cleanly. This sequence works (tested on Erlang R14B03 and Lion 10.7 (11A511):&lt;/p&gt;
&lt;pre&gt;CFLAGS=-O0 ./configure --enable-darwin-64bit
make
sudo make install
&lt;/pre&gt;
&lt;p&gt;Thanks to the community on the &lt;a href="http://www.erlang.org/static/doc/mailinglist.html" target="_blank"&gt;Erlang questions mailing list&lt;/a&gt; for collaborating on this solution. I’m just passing it along.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=24K4-xD-zlc:6ADpTInxwJ4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=24K4-xD-zlc:6ADpTInxwJ4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=24K4-xD-zlc:6ADpTInxwJ4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=24K4-xD-zlc:6ADpTInxwJ4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=24K4-xD-zlc:6ADpTInxwJ4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=24K4-xD-zlc:6ADpTInxwJ4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/24K4-xD-zlc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/24K4-xD-zlc/8127011784</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/8127011784</guid><pubDate>Wed, 27 Jul 2011 08:42:00 -0400</pubDate><category>Erlang</category><category>mac os x</category><category>Lion</category><feedburner:origLink>http://blog.snootymonkey.com/post/8127011784</feedburner:origLink></item><item><title>Erlang's Treatment of Memory and Threads</title><description>&lt;a href="http://www.javacodegeeks.com/2011/04/erlang-vs-java-memory-architecture.html"&gt;Erlang's Treatment of Memory and Threads&lt;/a&gt;: &lt;p&gt;This is a good, short post on Erlang’s unusual treatment of memory and threads. Substitute “Ruby” or “Python” for “Java” if it makes it easier for you to understand and none of the comparisons will be much different. It serves to explain why you overlook Erlang’s quirky syntax (which I happen to mostly like) when you need extreme concurrency.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=BaIEGJWCSvE:wMCbzzJeSRY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=BaIEGJWCSvE:wMCbzzJeSRY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=BaIEGJWCSvE:wMCbzzJeSRY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=BaIEGJWCSvE:wMCbzzJeSRY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=BaIEGJWCSvE:wMCbzzJeSRY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=BaIEGJWCSvE:wMCbzzJeSRY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/BaIEGJWCSvE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/BaIEGJWCSvE/4580923462</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/4580923462</guid><pubDate>Wed, 13 Apr 2011 11:08:37 -0400</pubDate><category>Erlang</category><feedburner:origLink>http://blog.snootymonkey.com/post/4580923462</feedburner:origLink></item><item><title>Bringing Serendipity Back</title><description>&lt;p&gt;If Timberlake can bring sexy back, then I guess dictionaries can bring serendipity back too. I’m a regular user of online dictionaries and they all seem about the same to me (which is to say, somewhere between pretty bad and awful) so I use them through Google rather than having a go to favorite. I search for the word and then pick one or more of the top 10 hits to look at.&lt;/p&gt;
&lt;p&gt;Today a search on the word “monotonist” (I know what it should mean, but I said it the other day, and then wondered if it was actually a word or if I just made it up) brought me to this fairly gross site - &lt;a href="http://www.websters-dictionary-online.com/definition/monotonist" target="_blank"&gt;&lt;a href="http://www.websters-dictionary-online.com/definition/monotonist" target="_blank"&gt;http://www.websters-dictionary-online.com/definition/monotonist&lt;/a&gt;&lt;/a&gt; (linked with nofollow to avoid giving them any link juice). I’m certain, due to the suspicious lack of branding, the poor performance of the page loads, and the dubiousness and quantity of its ad content, that it’s not actually associated with Webster’s (which is here - &lt;a href="http://www.merriam-webster.com/" target="_blank"&gt;&lt;a href="http://www.merriam-webster.com/" target="_blank"&gt;http://www.merriam-webster.com/&lt;/a&gt;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;What caught my eye was this part of the page:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_li5gloKkhT1qao18k.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;How cool! I can’t begin to count how many hours I spent unintentionally reading the dictionary as a kid. I’d ask my parents how to spell a word, or what a word meant, and they’ d inevitably answer “d-i-c-t-i-o-n-a-r-y” or “it means you should look it up”. I’d traipse over to the family set of the &lt;a href="http://en.wikipedia.org/wiki/Funk_%26_Wagnalls" target="_blank"&gt;Funk &amp; Wagnall’s encyclopedia&lt;/a&gt; (bought from the grocery store on subscription, those were the days!) and its accompanying dictionary (in 2 volumes) and look up the word. Once I found my word, I could never resist the siren call of the other words on the page. Mixed among the handful of words I knew were amazingly short words, gigantic polysyllabic monstrosities, foreign words without enough vowels or with too many vowels, and words with accompanying black and white pictures, line drawings or maps. Each trip to the dictionary was a multi-paged odyssey through the English language.&lt;/p&gt;
&lt;p&gt;Sadly, I doubt my kids, lifelong online dictionary users, have ever experienced this. The Web was &lt;strong&gt;invented to provide better context&lt;/strong&gt;; the raison d’etre of the hyperlink and the subsequent Web server and Web page was to provide context to referenced concepts with just one simple click. But what these online Web dictionaries don’t have is &lt;strong&gt;page context&lt;/strong&gt;. What else is on this dictionary “page”? What is on the “opposite page”? The “next page”? The “previous page”? And why are these words near one another? Is there a shared prefix or root? A shared word of compound words?&lt;/p&gt;
&lt;p&gt;Links and the power of the Web to provide context are used in every online dictionary page and it would be hard to argue that the Web doesn’t provide a much better experience for exploring a specific word. You have links to antonyms and synonyms and etymology and stems and related words, and, and, and…  But what about the words that are “physically” near this one? I haven’t seen an online dictionary attempt to provide this until stumbling on this shady site.&lt;/p&gt;
&lt;p&gt;The “nearness” of words is an important concept in my brain’s structure and in my understanding of English. I don’t think I’m alone in this, but I do think that in the span of just one generation we’ve probably lost that part of the organizational structure of our language in our brains. It’s a shame. We shouldn’t go back to paper dictionaries of course, but there is something for the other dictionary sites to learn from and improve on in this site’s listing of adjacent words.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=_RcmGNNJVZw:5HjeWxtaAyc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=_RcmGNNJVZw:5HjeWxtaAyc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=_RcmGNNJVZw:5HjeWxtaAyc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=_RcmGNNJVZw:5HjeWxtaAyc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=_RcmGNNJVZw:5HjeWxtaAyc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=_RcmGNNJVZw:5HjeWxtaAyc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/_RcmGNNJVZw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/_RcmGNNJVZw/3897449263</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/3897449263</guid><pubDate>Wed, 16 Mar 2011 08:13:00 -0400</pubDate><feedburner:origLink>http://blog.snootymonkey.com/post/3897449263</feedburner:origLink></item><item><title>This is not healthy. All but one (#7 Angry Birds) of the top 10...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_li12belY4J1qatkgeo1_400.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;This is not healthy. All but one (#7 Angry Birds) of the top 10 grossing applications in the Mac App Store are from Apple.&lt;/p&gt;
&lt;p&gt;Also not good: when my daughter asked about the mind mapping tool I use, I told her to get it from the Mac App Store, and then my wife and son looked at me puzzled and said, “You mean in iTunes?” These are two long time Mac users.&lt;/p&gt;
&lt;p&gt;Why exactly did the Mac App Store need to be a separate application?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=VzJd-vufEsw:rO5c_y0xWWg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=VzJd-vufEsw:rO5c_y0xWWg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=VzJd-vufEsw:rO5c_y0xWWg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=VzJd-vufEsw:rO5c_y0xWWg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=VzJd-vufEsw:rO5c_y0xWWg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=VzJd-vufEsw:rO5c_y0xWWg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/VzJd-vufEsw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/VzJd-vufEsw/3847383259</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/3847383259</guid><pubDate>Sun, 13 Mar 2011 23:14:00 -0400</pubDate><feedburner:origLink>http://blog.snootymonkey.com/post/3847383259</feedburner:origLink></item><item><title>Settling for (the Right) Mediocrity</title><description>&lt;a href="http://www.workingsoftware.com.au/page/Settling_for_mediocrity"&gt;Settling for (the Right) Mediocrity&lt;/a&gt;: &lt;p&gt;Smart stuff from the folks at Working Software:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What is it that you can compromise on that people may &lt;em class="evenChild"&gt;expect&lt;/em&gt;, in order to deliver what you consider to be exceptional in a period of time that fits your budget and release schedule? … they may be willing to forgo such pleasantries if you deliver them some quality in your application which they consider to be &lt;em class="evenChild"&gt;exceptional&lt;/em&gt;. The key to living with mediocrity, releasing software and, hopefully,  making money is to figure out which bits of the application you’re  building can get away with being mediocre, then spend all your time  working on the bits that will make your product exceptional.&lt;/p&gt;
&lt;/blockquote&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=k8fdXslMDZ4:1mqIKNNdCgo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=k8fdXslMDZ4:1mqIKNNdCgo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=k8fdXslMDZ4:1mqIKNNdCgo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=k8fdXslMDZ4:1mqIKNNdCgo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=k8fdXslMDZ4:1mqIKNNdCgo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=k8fdXslMDZ4:1mqIKNNdCgo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/k8fdXslMDZ4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/k8fdXslMDZ4/2794308803</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/2794308803</guid><pubDate>Mon, 17 Jan 2011 08:24:01 -0500</pubDate><feedburner:origLink>http://blog.snootymonkey.com/post/2794308803</feedburner:origLink></item><item><title>Apple is Not a Software Company</title><description>&lt;p&gt;Marco Arment, the founder of Instapaper and former tech lead at Tumblr &lt;a target="_blank" href="http://www.marco.org/2546655554"&gt;recently wrote&lt;/a&gt; that there really isn’t much of a market for tablets, just for iPads. I have no bone to pick with his main point, he’s right about that. But part of his analysis is way off base (the bold emphasis is mine):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;And, like they’ve done so far with Android, the hardware  manufacturers will continue to attempt to make their own user-facing  applications and front-end interfaces, but these usually suck. (Other  people may describe “suck” with kinder, apologist adjectives like  “getting better” and “not bad”.)&lt;/p&gt;
&lt;p&gt;These manufacturers aren’t software companies: they’re hardware  companies that write software out of necessity. &lt;strong&gt;Apple is a software  company that makes hardware out of necessity.&lt;/strong&gt; The software side of a  modern computing platform is far more difficult and expensive to create  and maintain than the hardware. Anyone can cobble together the same  processors, DRAM, flash, and radios as Apple, put them into a plastic  case, and run a commodity OS on them with slight front-end  customizations. But not everyone can create an entire software platform.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Apple is &lt;strong&gt;absolutely not&lt;/strong&gt; a software company that makes hardware out of necessity. That sells Jonathan Ives and his team of brilliant industrial engineers short. Creating innovative hardware is still very hard. Copying Apple’s hardware is easier, but still difficult; it takes a few tries to get right.&lt;/p&gt;
&lt;p&gt;I can see where Marco is going with this, he wants to paint a simple picture of two types of companies, hardware and software companies. He wants to put Apple, Google and Microsoft into the software category and all the other tablet makers that use Windows and Android such as HP, Dell and the Asian manufacturers into the hardware category. He then wants to say good software is really hard and good hardware is really easy, so the tablet manufacturers that aren’t software companies are stuck. Apple makes their own hardware so it works fantastically well with their software, but the hardware companies are forever disadvantaged because they can’t make software that will will work fantastically well with their hardware.&lt;/p&gt;
&lt;p&gt;This is just not an accurate picture though, Apple is not a hardware company dabbling in software or a software company dabbling in hardware. Apple is the last of a breed of something we used to have a lot of, a &lt;strong&gt;systems company&lt;/strong&gt;. Systems companies create systems composed of hardware and software.&lt;/p&gt;
&lt;p&gt;I’m not sure how old Marco is, but I’m guessing he’s a bit younger than me because I can remember a time when the computing landscape was dominated by systems companies: IBM (z/OS, RS/6000 and AIX, PS/2 and OS/2), DEC (VMS), HP (HP 3000, HP-UX), SUN (SPARC and SunOS/Solaris), Silicon Graphics (IRIX), Apple (Mac), Be (BeOS and Be Machine).&lt;/p&gt;
&lt;p&gt;In a classic disruptive move, Microsoft and it’s flock of PC OEM’s (Dell, Gateway, Acer, etc.) killed off the systems companies one by one, either outright, or by forcing them to abandon their systems (HP, IBM except for the mainframe) in favor of becoming a Windows OEM. Apple is the only one that survived as a systems company at a time that didn’t favor the systems companies; hardware compatibility was king and hardware innovation was static (More’s Law was driving all the innovation).&lt;/p&gt;
&lt;p&gt;Now that Moore’s Law is breaking down and innovation in hardware form factors and interfaces is back on the top of everyone’s agenda, it’s a great time to be a systems company again. Apple is outperforming their technology peers, and we all want iPad systems, not some hardware devices running Android or Windows software.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=hc8cOucg7N4:eZBfY7QXr8E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=hc8cOucg7N4:eZBfY7QXr8E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=hc8cOucg7N4:eZBfY7QXr8E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=hc8cOucg7N4:eZBfY7QXr8E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=hc8cOucg7N4:eZBfY7QXr8E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=hc8cOucg7N4:eZBfY7QXr8E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/hc8cOucg7N4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/hc8cOucg7N4/2567895042</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/2567895042</guid><pubDate>Sun, 02 Jan 2011 10:16:00 -0500</pubDate><category>Apple</category><feedburner:origLink>http://blog.snootymonkey.com/post/2567895042</feedburner:origLink></item><item><title>The Golden Football</title><description>&lt;p&gt;&lt;strong&gt;The Golden Football&lt;/strong&gt; is a &lt;a href="http://www.evanmiller.org/golden-football.html" target="_blank"&gt;new description by Evan Miller&lt;/a&gt; of the economics of &lt;a href="http://www.groupon.com/" target="_blank"&gt;GroupOn&lt;/a&gt;. The idea is that GroupOn moves the economic activity to the right of the normal micro-economics price/demand curve by offering up a lower price than the market has settled into charging for that particular good or service in exchange for a higher volume than the market would normally demand for that good or service at that lower price.&lt;/p&gt;
&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" title="groupon-golden-football.png" src="http://www.evanmiller.org/images/groupon-golden-football.png" border="0" alt="groupon-golden-football.png"/&gt;&lt;/p&gt;
&lt;p&gt;The Golden Football is formed from happy customers getting a price lower than they’d pay…&lt;/p&gt;
&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" title="groupon-indifference.png" src="http://www.evanmiller.org/images/groupon-indifference.png" border="0" alt="groupon-indifference.png"/&gt;&lt;/p&gt;
&lt;p&gt;And from business getting more quantity of sales than the price would normally generate, and therefore more profit.&lt;/p&gt;
&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" title="groupon-isoprofit.png" src="http://www.evanmiller.org/images/groupon-isoprofit.png" border="0" alt="groupon-isoprofit.png"/&gt;&lt;/p&gt;
&lt;p&gt;It’s an interesting model, and very different than the loss leader / lifetime customer value story that’s normally told about GroupOn.&lt;/p&gt;
&lt;p&gt;All the graphs and the model are courtesy of Evan, I’m just trying to spread the word so that hopefully some enterprising economist will test the model or some entrepreneurs will validate it by applying it in new ways.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=-aMgALY2D54:xBRa2BPaSSo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=-aMgALY2D54:xBRa2BPaSSo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=-aMgALY2D54:xBRa2BPaSSo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=-aMgALY2D54:xBRa2BPaSSo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=-aMgALY2D54:xBRa2BPaSSo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=-aMgALY2D54:xBRa2BPaSSo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/-aMgALY2D54" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/-aMgALY2D54/2444989227</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/2444989227</guid><pubDate>Fri, 24 Dec 2010 07:47:43 -0500</pubDate><category>economics</category><feedburner:origLink>http://blog.snootymonkey.com/post/2444989227</feedburner:origLink></item><item><title>The $20 Starbucks Test</title><description>&lt;p&gt;A couple of weeks ago I had the good fortune to meet &lt;a href="http://www.crunchbase.com/person/hugh-crean" target="_blank"&gt;Hugh Crean&lt;/a&gt;, the ex-CEO of &lt;a href="http://www.bing.com/travel/about/howAirPredictions.do" target="_blank"&gt;Farecast&lt;/a&gt;, ex-Microsoft executive (they acquired Farecast) and current Entrepreneur in Residence at General Catalyst. A group of us talked to Hugh for close to an hour, and I learned more about the travel industry in that short span than I’ve learned in a lifetime of flying, hoteling and using Kayak, Priceline and the like.&lt;/p&gt;
&lt;p&gt;The purpose of our chat with Hugh was to get some feedback on a project we are working on, and Hugh shared a cool $20 technique for validating your new product, service or startup idea that I’d like to pass on. Here is how it works:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Get yourself a nice crisp $20 from an ATM&lt;/li&gt;
&lt;li&gt;Go down to your neighborhood Starbucks&lt;/li&gt;
&lt;li&gt;Walk up to strangers with empty coffee mugs and tell them you are worried about your brother, need some advice, and can you buy them a cup of coffee in exchange for a quick 5 minutes of their time. (This will be awkward for most of you to do. Get over it. The “worried about my brother” line is a bit of psychology that means most people won’t turn you down. If they do turn you down, you just got a point in the &lt;a href="http://rejectiontherapy.com/" target="_blank"&gt;Rejection Therapy Game&lt;/a&gt; anyway, so consider yourself lucky).&lt;/li&gt;
&lt;li&gt;Buy them a simple coffee, not a mocha-whippa-frappa-latta-chino; you want your $20 to last.&lt;/li&gt;
&lt;li&gt;Explain that your brother has a crazy business/product idea, and that he’s about to get a 2nd mortgage on his house, raid his 401k and quit his job. His wife is a nervous wreck, afraid that they’ll lose their house and retirement fund, and he’s hit your parents up for seed money that they really can’t afford to lose. Your parents and your sister-in-law have come to you for help to try to talk him out of his hair-brained scheme.&lt;/li&gt;
&lt;li&gt;Explain that this is where they come in, your brother is a very logical and reasonable guy, and can be convinced by good reasons, but he has been blinded by thinking this is a really good idea. The problem is, you sort of agree with him, so you need some really solid reasons to give him as to why his idea won’t work, and why he shouldn’t proceed with his plan. Then… pitch your idea! Sell it the best way you can. Respect their time (you asked for 5 minutes), but give the best 2-3 minute pitch you can.&lt;/li&gt;
&lt;li&gt;Now, ask for their reasons the idea won’t work. Keep them focused on the idea, not the backstory (they may want you to convince your brother of the merits of retirement savings or the dangers of 2nd mortgages), and really listen. Resist the temptation to argue against their objections. Then thank them heartily for their time.&lt;/li&gt;
&lt;li&gt;Repeat until your $20 runs out.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;What will you learn from the experiment?&lt;/p&gt;
&lt;p&gt;The most likely outcome is you’ll hear mostly the same obvious rejections of your idea that you yourself have and have come to believe are surmountable. Your $20 didn’t generate any great new insight, but was an inexpensive check that you aren’t blind to an obvious shortcoming.&lt;/p&gt;
&lt;p&gt;A good outcome, is that you hear lots of interesting and sound new objections that you never thought of before. This should give you real pause about your idea. Both its merits, if the objections are good ones, and the extent that you’ve sufficiently thought through your idea and are being realistic about it.&lt;/p&gt;
&lt;p&gt;A not so likely outcome is that your strangers will find themselves agreeing with you and your “brother” that it is a great idea. They themselves will want to buy the product or service and they’ll start naming other people that need it. They’ll also probably apologetically offer up a few lame objections, because that’s what you asked for. In the unlikely event this happens with your idea, you probably have a real hit on your hands. Run with it!&lt;/p&gt;
&lt;p&gt;Two quick caveats… this works best for a consumer product or service. If your idea is for a better steel retracting refluxerator for pediatric heart surgeons, then the man on the street in the coffee shop might not be a great source of insight. Also you have to get comfortable with the white lie you’ll be telling about your “brother”. If you can’t get comfortable with that, it’s understandable, but it is an important part of the technique. The negative priming and the distancing of yourself from the idea gives your coffee companion free reign to trash your idea so find some other way to provide some distance from the idea. If instead you say it’s your idea, then even when you invite criticism and honesty, people will candy-coat their feedback. Luckily our social norms will not stand in the way of them trashing your brother who’s not in the room.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=wqdx_B20fuk:fJ7pYI-fc54:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=wqdx_B20fuk:fJ7pYI-fc54:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=wqdx_B20fuk:fJ7pYI-fc54:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=wqdx_B20fuk:fJ7pYI-fc54:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=wqdx_B20fuk:fJ7pYI-fc54:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=wqdx_B20fuk:fJ7pYI-fc54:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/wqdx_B20fuk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/wqdx_B20fuk/2432103782</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/2432103782</guid><pubDate>Thu, 23 Dec 2010 11:06:00 -0500</pubDate><feedburner:origLink>http://blog.snootymonkey.com/post/2432103782</feedburner:origLink></item><item><title>"Fools ignore complexity; pragmatists suffer it; experts avoid it; geniuses remove it."</title><description>“Fools ignore complexity; pragmatists suffer it; experts avoid it; geniuses remove it.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Alan Perlis&lt;/em&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=8Hub_hh6aKQ:iNNTdtUjmdE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=8Hub_hh6aKQ:iNNTdtUjmdE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=8Hub_hh6aKQ:iNNTdtUjmdE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=8Hub_hh6aKQ:iNNTdtUjmdE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=8Hub_hh6aKQ:iNNTdtUjmdE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=8Hub_hh6aKQ:iNNTdtUjmdE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/8Hub_hh6aKQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/8Hub_hh6aKQ/2378505119</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/2378505119</guid><pubDate>Sun, 19 Dec 2010 16:58:06 -0500</pubDate><feedburner:origLink>http://blog.snootymonkey.com/post/2378505119</feedburner:origLink></item><item><title>Always Be Building Your Own Products</title><description>&lt;p&gt;Like many small technology companies, Snooty Monkey makes the  mortgage and the payroll through work for clients while carving  off time to build products. It’s not ideal, but it beats the alternatives: working a corporate job for years to save up a financial runway, or ceding autonomy to outside  investors, who of course get a say in how their money is spent.&lt;/p&gt;
&lt;p&gt;Once  you have built a successful services business in a  niche that matches your passions and interests (in the case of Snooty  Monkey, building brand new  products for entrepreneurs), you can start to ask yourself: this is profitable; this  is fun; why not just do this forever?&lt;/p&gt;
&lt;p&gt;Even if your long term goal is to have a services business (or be a freelancer) and build products for other people, you  should &lt;strong&gt;never stop building your own products&lt;/strong&gt;. There are important professional obligations that client work brings. Being free at times from those obligations is critical for long term success.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#1 Learn radically new stuff&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When working for a client, you have an &lt;strong&gt;obligation&lt;/strong&gt; to manage technical risk and to properly represent your experience and skills. Both of these work to prevent you from learning radically new stuff “on the clock”.&lt;/p&gt;
&lt;p&gt;Managing technical risk involves choosing a sound technology that’s suited for the task at hand, that’s robust and relatively bug free, and where you have a reasonable assurance that they’ll be future development to fix bugs, fix security issues and adapt to new operating systems and language versions. You also are obliged to choose technologies that are readily picked up by someone else should you get hit by a bus. If you are the only &lt;a href="http://en.wikipedia.org/wiki/Logtalk" target="_blank"&gt;Logtalk&lt;/a&gt; programmer in a 4 state radius from your client, it’s probably not a great idea to build your client’s project in Logtalk without their informed buy in.&lt;/p&gt;
&lt;p&gt;Representing your experience and skills is all about communication and honesty. If you literally wrote the book on a given technology, say so. If you are waiting for your copy of the book to arrive from Amazon, and will know more next week once you get to chapter 2, say so! When hiring freelancers or project teams, clients are usually paying for more than your raw intelligence. Part of your rate derives from your skills and experience with a technology. If you don’t have said skills and experience, many clients won’t be interested in you learning them on the job, and others may expect a break in your usual rate until you come up to speed. This is a reasonable position for your client to take if your usual rate properly reflects the skills and experience you bring to the table.&lt;/p&gt;
&lt;p&gt;That’s not to say a given client might excuse you from all these obligations and give you free reign to learn a risky new technology that you have no experience with on the job. But that’s a &lt;a target="_blank" href="http://www.youtube.com/watch?v=OQSNhk5ICTI"&gt;double rainbow&lt;/a&gt; client. Don’t expect to have them.&lt;/p&gt;
&lt;p&gt;None of this precludes trying new things and continual improvement. You also do your clients a disservice by never learning, adapting and improving. Each project should be better than the last. Always been a  Test::Unit user but want to use RSpec for the next project? Want to switch from your tried and true restful-authentication to the new hotness, authlogic? These evolutionary improvements are not what I’m cautioning against in client work. It’s the big disruptive changes that make you suck for a long time until you “get it” and that you have a good chance of deciding are a mistake and abandoning.&lt;/p&gt;
&lt;p&gt;So how do you make those big leaps forward that require a huge step back first? Do them on your own time of course. And rather than building the blog sample from the book or some other toy project, you might as well try building a useful product. You’re going to invest the time in the new technology anyway, if it turns out to be great stuff, it’d be great if you got a fantastic new product out of it along the way.&lt;/p&gt;
&lt;p&gt;In that vein, Snooty Monkey kicked off the development of a new product last week; the idea for it has been kicking around since Summer. Some weeks we’ll spend no time on it, some weeks we’ll be able to carve out a few hours or a whole day. Our “rule” (admittedly arbitrary) is, &lt;strong&gt;everything&lt;/strong&gt; has to be new. The main purpose of the project is learning and having fun. The secondary goal is creating the product (if it was the primary goal, we’d use the tried and true technology stack).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Out:&lt;/strong&gt; MySQL &lt;strong&gt;In:&lt;/strong&gt; &lt;a target="_blank" href="http://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Out:&lt;/strong&gt; Ruby &lt;strong&gt;In:&lt;/strong&gt; &lt;a target="_blank" href="http://www.erlang.org/"&gt;Erlang&lt;/a&gt; (the 1 tiny exception to the rule, it’s new for all but 1 of us)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Out:&lt;/strong&gt; Rails &lt;strong&gt;In:&lt;/strong&gt; &lt;a target="_blank" href="http://nitrogenproject.com/"&gt;Nitrogen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Out:&lt;/strong&gt; XHTML &lt;strong&gt;In:&lt;/strong&gt; &lt;a href="http://diveintohtml5.org/" target="_blank"&gt;HTML5&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Out:&lt;/strong&gt; JavaScript &lt;strong&gt;In:&lt;/strong&gt; &lt;a href="http://jashkenas.github.com/coffee-script/" target="_blank"&gt;CoffeeScript&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Out:&lt;/strong&gt; AJAX interval polling &lt;strong&gt;In: &lt;/strong&gt;Comet and Web Sockets&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Out:&lt;/strong&gt; CSS &lt;strong&gt;In:&lt;/strong&gt; &lt;a href="http://lesscss.org/" target="_blank"&gt;LESS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Reader’s imaginary Socratic dialog section:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Is this choice of technology driven by the needs of the project or is it a bit gratuitous? &lt;strong&gt;A:&lt;/strong&gt; Uhh… the tail is wagging the dog.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Will you be able to build the new product as fast as you would if you used a tech. stack in your comfort zone? &lt;strong&gt;A:&lt;/strong&gt; No.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Will you be able build a successful product with it? &lt;strong&gt;A:&lt;/strong&gt; Dunno.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Will you learn a lot? &lt;strong&gt;A:&lt;/strong&gt; Hell yeah!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q from a Geek:&lt;/strong&gt; Is it going to work well to combine CoffeeScript with all the JavaScript generated by Nitrogen. &lt;strong&gt;A:&lt;/strong&gt; Dunno, waiting for that CoffeeScript book to get here from Amazon. We’ll find out. But I think you missed the point. Go back to the top and re-read the post.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#2 Reconnect with your inner customer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The other great reason to not stop building your products is empathy. &lt;strong&gt;Being a “customer” of your own services stokes the flames of empathy&lt;/strong&gt;. It’s important to walk in your customers shoes, to put yourself in the position to care about the same things they care about. Are you sitting your customer down for the three legged stool  talk (“Sorry Jack, scope, time or resources; only 2 can be fixed…”)  yet again? When was the last time you sat yourself down for the same talk?&lt;/p&gt;
&lt;p&gt;Treat yourself like you treat your customers. Don’t give yourself special breaks and exceptions you wouldn’t give them. &lt;strong&gt;Make a budget (in time, not dollars) and try to stick to it as they have to&lt;/strong&gt;. How easy do you make sticking to the budget? Are there things you are doing, such as lots of tangential work on the project that’s not core, or a lack of timely visibility and tracking that make it hard to stick to it? Or are you so fixated on the budget that you sacrifice the other goals of the project?&lt;/p&gt;
&lt;p&gt;Most important to rebuilding the empathy with your clients is to scratch your own itch with the product. Build something that you are madly passionate about, and that you are the customer for. It’s easy to slip into a calloused, distanced, assembly-line mode of working when building product after product for customers. You need to rekindle the spark that comes when you are building something that you are truly obsessed with. &lt;strong&gt;By reminding yourself what it’s like to care so much about the outcome, you’ll be better able to empathize with your clients.&lt;/strong&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=7Q1j2M8zEt8:vLd2xGhJXm4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=7Q1j2M8zEt8:vLd2xGhJXm4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=7Q1j2M8zEt8:vLd2xGhJXm4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=7Q1j2M8zEt8:vLd2xGhJXm4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=7Q1j2M8zEt8:vLd2xGhJXm4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=7Q1j2M8zEt8:vLd2xGhJXm4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/7Q1j2M8zEt8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/7Q1j2M8zEt8/2373482505</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/2373482505</guid><pubDate>Sun, 19 Dec 2010 08:58:00 -0500</pubDate><feedburner:origLink>http://blog.snootymonkey.com/post/2373482505</feedburner:origLink></item><item><title>Erlang native compilation, why not?</title><description>belucid: what are the downsides of compiling Erlang native? (HiPE)  Any reason not to use it all the time?&lt;br /&gt;&#xD;
MononcQc: the native modules aren't garbage collected when loading a new version&lt;br /&gt;&#xD;
MononcQc: also they are not portable like .beam files&lt;br /&gt;&#xD;
MononcQc: they're slower to compile and are not necessarily faster&lt;br /&gt;&#xD;
MononcQc: but they are entirely worth it for numerical stuff&lt;br /&gt;&#xD;
belucid: ok&lt;br /&gt;&#xD;
belucid: so I should run some perf tests with both&lt;br /&gt;&#xD;
belucid: and see if it makes a diff for my application&lt;br /&gt;&#xD;
MononcQc: ideally, yeah&lt;br /&gt;&#xD;
MononcQc: always measure&lt;br /&gt;&#xD;
belucid: yep&lt;br /&gt;&#xD;
belucid: and then... if they do make a meaningful diff, the impact is that I really shouldn't plan to load new versions&lt;br /&gt;&#xD;
belucid: and of course, need to compile for the target machine&lt;br /&gt;&#xD;
MononcQc: oh, load new versions all you like&lt;br /&gt;&#xD;
MononcQc: it's not a big overhead&lt;br /&gt;&#xD;
MononcQc: just something to consider&lt;br /&gt;&#xD;
belucid: ok&lt;br /&gt;&#xD;
belucid: just shouldn't plan on loading new versions forever and ever then &lt;br /&gt;&#xD;
belucid: at some point it would add up&lt;br /&gt;&#xD;
MononcQc: yeah, but then you'll need to tear the node down to upgrade the VM&lt;br /&gt;&#xD;
MononcQc: so I'm not sure it's actually that problematic in practice&lt;br /&gt;&#xD;
belucid: gotcha&lt;br /&gt;&#xD;
belucid: on days like today, Erlang R14B release day&lt;br /&gt;&#xD;
belucid: you'll bring the app down anyway&lt;br /&gt;&#xD;
belucid: thanks as always MononcQc!&lt;br /&gt;&#xD;
MononcQc: no problem&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=2ZVUCOps_Es:6bvnk986nKI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=2ZVUCOps_Es:6bvnk986nKI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=2ZVUCOps_Es:6bvnk986nKI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=2ZVUCOps_Es:6bvnk986nKI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=2ZVUCOps_Es:6bvnk986nKI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=2ZVUCOps_Es:6bvnk986nKI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/2ZVUCOps_Es" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/2ZVUCOps_Es/1126622642</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/1126622642</guid><pubDate>Wed, 15 Sep 2010 10:27:14 -0400</pubDate><category>Erlang</category><feedburner:origLink>http://blog.snootymonkey.com/post/1126622642</feedburner:origLink></item><item><title>The Erlang Shell</title><description>&lt;p&gt;One option to running the Erlang shell when your code is in ./src, including files in ./include, and building to ./ebin is to run erl from ./src as such.&lt;/p&gt;
&lt;p&gt;﻿erl -pa ../ebin&lt;/p&gt;
&lt;p&gt;All your modules are then local and can be accessed. You can include records with rr(module).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thanks MononcQc on #erlang.&lt;/em&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=fKr8GLFq73c:8XW_D41obRg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=fKr8GLFq73c:8XW_D41obRg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=fKr8GLFq73c:8XW_D41obRg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=fKr8GLFq73c:8XW_D41obRg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=fKr8GLFq73c:8XW_D41obRg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=fKr8GLFq73c:8XW_D41obRg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/fKr8GLFq73c" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/fKr8GLFq73c/1115267199</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/1115267199</guid><pubDate>Mon, 13 Sep 2010 09:19:40 -0400</pubDate><category>Erlang</category><feedburner:origLink>http://blog.snootymonkey.com/post/1115267199</feedburner:origLink></item><item><title>"From a single bit to a few hundred megabytes, from a single microsecond to a half an hour of..."</title><description>“From a single bit to a few hundred megabytes, from a single microsecond to a half an hour of computing, it confronts us with completely baffling ratio of 1 to 1,000,000,000! The programmer is in the unique position that his is the only discipline and profession in which such a gigantic ratio, which totally baffles our imagination, has to be bridged by a single technology. He has to be able to think in terms of conceptual hierarchies that are much deeper than a single mind ever needed to face before.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Edsger Dijkstra via &lt;a href="http://axisofeval.blogspot.com/2010/09/programmer-feel-good-quote.html" target="_blank"&gt;Manuel Simoni&lt;/a&gt;&lt;/em&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=z1ugX8qVMxk:0tO4xWeMNl8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=z1ugX8qVMxk:0tO4xWeMNl8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=z1ugX8qVMxk:0tO4xWeMNl8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=z1ugX8qVMxk:0tO4xWeMNl8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=z1ugX8qVMxk:0tO4xWeMNl8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=z1ugX8qVMxk:0tO4xWeMNl8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/z1ugX8qVMxk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/z1ugX8qVMxk/1077392190</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/1077392190</guid><pubDate>Mon, 06 Sep 2010 17:16:45 -0400</pubDate><feedburner:origLink>http://blog.snootymonkey.com/post/1077392190</feedburner:origLink></item><item><title>rm all the results of a find</title><description>&lt;a href="http://www.linuxforums.org/forum/linux-newbie/1585-possible-rm-finds-output.html"&gt;rm all the results of a find&lt;/a&gt;: &lt;p&gt;I’d never had the need to remove everything found by the find command before. Since rm expects arguments, rather than piped input… it breaks the normal Unix pipe it all together paradigm.&lt;/p&gt;
&lt;p&gt;Some quick googling brought xargs into the picture though. xargs constructs an argument list from its piped input and executes its argument with them. Perfect for what I was trying to do:&lt;/p&gt;
&lt;p&gt;﻿find . -name *.pyc -print0 | xargs -0 rm&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=E8wOurbsE8g:vtrgZY-VNXw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=E8wOurbsE8g:vtrgZY-VNXw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=E8wOurbsE8g:vtrgZY-VNXw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=E8wOurbsE8g:vtrgZY-VNXw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=E8wOurbsE8g:vtrgZY-VNXw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=E8wOurbsE8g:vtrgZY-VNXw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/E8wOurbsE8g" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/E8wOurbsE8g/1047942801</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/1047942801</guid><pubDate>Wed, 01 Sep 2010 10:03:02 -0400</pubDate><category>Unix</category><category>Mac OS X</category><category>Linux</category><feedburner:origLink>http://blog.snootymonkey.com/post/1047942801</feedburner:origLink></item><item><title>Stop Reading Business Books</title><description>&lt;a href="http://www.softwarebyrob.com/2010/08/05/why-startup-founders-should-stop-reading-business-books/"&gt;Stop Reading Business Books&lt;/a&gt;: &lt;p&gt;There are 2 types of business books, the pop culture, high-level, feel good business book, and books with real data and case studies by scholars. Both are equally bad for most readers. Let’s start with what Rob Walling has to say about the former:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“…﻿these books are a series of anecdotes disguised as science.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Amen brother! As someone who is in business, but is also educated in science and logical thinking, these Seth Godin / Malcolm Gladwell / Chris Anderson / Clay Shirky books make me very squeamish. Their lack of scientific rigor is both fundamental to their popularity and their fatal weakness. I love them, but it’s a guilty pleasure.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“﻿The amount of actual information garnered from this kind of book can be summarized in a page or two of written text.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;﻿They are a dinner of ice cream sandwhiches and popcorn. A couple bites are OK, but reading 150, 250 or 350 pages of these books is an incredible waste of time. There is such repetitiveness and rambling drivel in these things to get them to the publisher’s desired page count that it’s a crime against their busy audience’s time.&lt;/p&gt;
&lt;p&gt;It seems like the antidote then should be serious business books from academics at respected business schools. Not so fast:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“… these books are great … if you’re Sony. Or Proctor and Gamble. Or Panasonic …. &lt;/em&gt;&lt;em&gt;This information would be helpful if I needed to generate a huge business plan to impress a business-school professor …. &lt;/em&gt;&lt;em&gt;They speak to markets and business opportunities measured with 8  zeros or more. Massive markets that you don’t need to understand to run a  software company.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I’ve found the same to be true of these books. Are they interesting? Yes, very. Helpful? No, not really.&lt;/p&gt;
&lt;p&gt;I’ve only been at a company ﻿big enough to apply these types of theories ﻿once in my life, and even then I was not high up enough at IBM to put anything I was reading into practice. Working at the individual product or product group level at a company like IBM resembles a startup more than you’d think. It’s just a startup that’s got one hand and one foot tied behind its back in a not unreasonable effort not to be sued for the billions in cash they have.&lt;/p&gt;
&lt;p&gt;The lure is strong. Resisting is hard. I succumb myself too often. But do keep up the good fight and try not to read these things.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=9hCRLUnr_HU:W_I48eXm8Dk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=9hCRLUnr_HU:W_I48eXm8Dk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=9hCRLUnr_HU:W_I48eXm8Dk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=9hCRLUnr_HU:W_I48eXm8Dk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=9hCRLUnr_HU:W_I48eXm8Dk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=9hCRLUnr_HU:W_I48eXm8Dk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/9hCRLUnr_HU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/9hCRLUnr_HU/1042361969</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/1042361969</guid><pubDate>Tue, 31 Aug 2010 09:24:34 -0400</pubDate><feedburner:origLink>http://blog.snootymonkey.com/post/1042361969</feedburner:origLink></item><item><title>The Bowling Pin Strategy</title><description>&lt;a href="http://cdixon.org/2010/08/21/the-bowling-pin-strategy/"&gt;The Bowling Pin Strategy&lt;/a&gt;: &lt;p&gt;“…﻿find a niche where the chicken-and-egg problem is more easily overcome  and then find ways to hop from that niche to other niches and eventually  to the broader market…history suggests that big companies who rely on a ‘carpet bombing  strategy’ are often upended by focused startups who take over one niche  at a time.”&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=O-dz15bRIr4:68YukXVy_e4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=O-dz15bRIr4:68YukXVy_e4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=O-dz15bRIr4:68YukXVy_e4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=O-dz15bRIr4:68YukXVy_e4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=O-dz15bRIr4:68YukXVy_e4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=O-dz15bRIr4:68YukXVy_e4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/O-dz15bRIr4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/O-dz15bRIr4/1030696567</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/1030696567</guid><pubDate>Sun, 29 Aug 2010 08:09:45 -0400</pubDate><category>product management</category><feedburner:origLink>http://blog.snootymonkey.com/post/1030696567</feedburner:origLink></item><item><title>5 Reasons Not to Share Your Roadmap</title><description>&lt;a href="http://www.freshbooks.com/blog/2008/11/11/5-reasons-why-sharing-your-product-roadmap-is-a-bad-idea/"&gt;5 Reasons Not to Share Your Roadmap&lt;/a&gt;: &lt;p&gt;There is always a strong temptation to share the product roadmap. It is rarely a good idea because of the flexibility you give up.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=DWN7AYDU2JM:krD7repiKKo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=DWN7AYDU2JM:krD7repiKKo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=DWN7AYDU2JM:krD7repiKKo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=DWN7AYDU2JM:krD7repiKKo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/snootymonkey?a=DWN7AYDU2JM:krD7repiKKo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/snootymonkey?i=DWN7AYDU2JM:krD7repiKKo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/snootymonkey/~4/DWN7AYDU2JM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/snootymonkey/~3/DWN7AYDU2JM/1030461478</link><guid isPermaLink="false">http://blog.snootymonkey.com/post/1030461478</guid><pubDate>Sun, 29 Aug 2010 06:48:23 -0400</pubDate><category>product management</category><feedburner:origLink>http://blog.snootymonkey.com/post/1030461478</feedburner:origLink></item></channel></rss>

