<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Smash Company</title>
	<atom:link href="http://www.smashcompany.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.smashcompany.com</link>
	<description></description>
	<lastBuildDate>Sun, 06 May 2012 22:53:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Germany versus Italy: what is the difference in their economy?</title>
		<link>http://www.smashcompany.com/business/germany-versus-italy-what-is-the-difference-in-their-economy</link>
		<comments>http://www.smashcompany.com/business/germany-versus-italy-what-is-the-difference-in-their-economy#comments</comments>
		<pubDate>Sun, 06 May 2012 22:53:42 +0000</pubDate>
		<dc:creator>lawrence</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://www.smashcompany.com/?p=2413</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://rjwaldmann.blogspot.com/2012/05/thoma-quotes-ignorant-german.html">This is brilliant:</a></p>
<blockquote><p>The line is that Germany has made it easy for firms to hire and fire (while gradfathering the job security protection for the middle class middle aged). That this explains why their economy is performing so differently from those of Spain and Italy, but it is a high price in solidarity to pay for low unemployment.</p>
<p>Nonsense</p>
<p>I live in Italy and I am totally unconvinced by the premise of the essay. Italy is full of contract workers (though not at the gigantic level of Spain before the crisis). The old system of employment security was strongly relaxed for new hires by the first Prodi government 1997 IIRC. Spain&#8217;s still more strict restrictions on layoffs were relaxed under Suarez (you know the guy who became prime minister soon after Franco died). Again IIRC there was a time when 35% of Spanish workers were contract workers, by far the highest proportion in old Europe.</p>
<p>If labor market reforms caused Germany to grow, then Spain would be booming. </p>
<p>The problem is that German&#8217;s are powerful and ignorant about what happens outside of their country (and yes for a US citizen to type that is the height of irony). They are sure that Spain ran huge deficits when it had budget surpluses and ran up a debt to GDP ratio much higher that Germany&#8217;s when it was roughly half as high. Finally they recommend that Italy and Spain follow Germany by doing what Gemany did many years after they did it.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.smashcompany.com/business/germany-versus-italy-what-is-the-difference-in-their-economy/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facing death alone</title>
		<link>http://www.smashcompany.com/philosophy/facing-death-alone</link>
		<comments>http://www.smashcompany.com/philosophy/facing-death-alone#comments</comments>
		<pubDate>Thu, 03 May 2012 21:23:13 +0000</pubDate>
		<dc:creator>lawrence</dc:creator>
				<category><![CDATA[Philosophy]]></category>

		<guid isPermaLink="false">http://www.smashcompany.com/?p=2411</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zenmoments.org/the-cab-ride-ill-never-forget/">What a sad story:</a></p>
<blockquote><p>I was responding to a call from a small brick fourplex in a quiet part of town. I assumed I was being sent to pick up some partyers, or someone who had just had a fight with a lover, or a worker heading to an early shift at some factory for the industrial part of town.<br />
When I arrived at 2:30 a.m., the building was dark except for a single light in a ground floor window.<br />
Under these circumstances, many drivers would just honk once or twice, wait a minute, then drive away.<br />
But I had seen too many impoverished people who depended on taxis as their only means of transportation.<br />
Unless a situation smelled of danger, I always went to the door. This passenger might be someone who needs my assistance, I reasoned to myself.<br />
So I walked to the door and knocked. “Just a minute”, answered a frail, elderly voice. I could hear something being dragged across the floor.<br />
After a long pause, the door opened. A small woman in her 80′s stood before me. She was wearing a print dress and a pillbox hat with a veil pinned on it, like somebody out of a 1940s movie. By her side was a small nylon suitcase. The apartment looked as if no one had lived in it for years. All the furniture was covered with sheets. There were no clocks on the walls, no knick-knacks or utensils on the counters. In the corner was a cardboard box filled with photos and glassware.<br />
“Would you carry my bag out to the car?” she said. I took the suitcase to the cab, then returned to assist the woman. She took my arm and we walked slowly toward the curb. She kept thanking me for my kindness.<br />
“It’s nothing”, I told her. “I just try to treat my passengers the way I would want my mother treated.”<br />
“Oh, you’re such a good boy”, she said. When we got in the cab, she gave me an address, then asked, “Could you drive through downtown?”<br />
“It’s not the shortest way,” I answered quickly.<br />
“Oh, I don’t mind,” she said. “I’m in no hurry. I’m on my way to a hospice.”<br />
I looked in the rear view mirror. Her eyes were glistening.<br />
“I don’t have any family left,” she continued. “The doctor says I don’t have very long.”<br />
I quietly reached over and shut off the meter. “What route would you like me to take?” I asked.<br />
For the next two hours, we drove through the city. She showed me the building where she had once worked as an elevator operator. We drove through the neighborhood where she and her husband had lived when they were newlyweds. She had me pull up in front of a furniture warehouse that had once been a ballroom where she had gone dancing as a girl. Sometimes she’d ask me to slow in front of a particular building or corner and would sit staring into the darkness, saying nothing.<br />
As the first hint of sun was creasing the horizon, she suddenly said, “I’m tired. Let’s go now.”<br />
We drove in silence to the address she had given me. It was a low building, like a small convalescent home, with a driveway that passed under a portico. Two orderlies came out to the cab as soon as we pulled up. They were solicitous and intent, watching her every move. They must have been expecting her. I opened the trunk and took the small suitcase to the door. The woman was already seated in a wheelchair.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.smashcompany.com/philosophy/facing-death-alone/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating standards is hard work</title>
		<link>http://www.smashcompany.com/technology/creating-standards-is-hard-work</link>
		<comments>http://www.smashcompany.com/technology/creating-standards-is-hard-work#comments</comments>
		<pubDate>Wed, 02 May 2012 20:12:19 +0000</pubDate>
		<dc:creator>lawrence</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.smashcompany.com/?p=2408</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nhplace.com/kent/Papers/cl-untold-story.html">This sounds exhausting and tedious. </a> It&#8217;s also incredible Kent M. Pitman was working on the Lisp standard for at least 10 years. He was new to  formal standards processes in 1986, his book was published 10 years later, in 1996. That is a long time for a story to unfold. </p>
<blockquote>
<p>5.2 Early Politics and Posturing<br />
Never having been part of a formal standards process, I didn’t quite know what to expect. The very fact that there are a lot of rules was very daunting and confusing.</p>
<p>Work was divided up. Committees were assigned to work on various subtasks.</p>
<p>In researching this talk, I ran across notes about such division of labor that I had scribbled during an early meeting. It primarily illustrates how, in my youth, I was struggling to understand the organizational mechanisms at work. Among other things on the page I had scribbled the following phrases:</p>
<p>Lest someone find my handwriting illegible, the notes include these remarks:</p>
<p>“due process is an illusion”</p>
<p>“gerrymandering (Pittsburgh committee)”</p>
<p>“turn opponents on each other and let them battle each other down and/or demonstrate that you couldn’t have done better because problem was unreasonable in general.”</p>
<p>“soliciting volunteers gives critics a thing to do, which dilutes their passion and pacifies them by making them feel involved.”</p>
<p>“start process leaving details blind, then manipulate detail assumption, finally it will be too hard to back out of.”</p>
<p>I don’t know if these things really aptly described what was actually going on. They may have been, in some cases. They are just the personal guesses of someone who was new to the process and struggling to understand it. But I think it’s fair to say that early in the standards process there was a lot of tactical posturing between the committees.</p>
<p>It’s equally reasonable to note that while inter-corporate tactical posturing may have appeared to serve the individual vendors represented, it probably kept the vendors from cooperating in ways that later turned out to be essential. Before the process could move forward, a new understanding would have to be reached where we started to work more together, and less at odds with one another.</p>
<p>Ultimately, various committees were formed to work on various aspects of the standard, reviewing the relevant aspects of the language and determining whether changes or additions needed to be made. These committees included ones named Charter, Compiler, Conditions, Conformance, Namespaces, Iteration, and Objects. In addition there was a catch-all committee called Cleanup that handled small matters that didn’t seem to fit in any other committee.</p>
<p>All of these committees probably had stories worthy of note, but I will mention only a subset of them for reasons of space.</p>
<p>5.3 Charter: Susan Ennis (1986)<br />
Sitting in a room for a good part of a meeting coming up with words to write as part of our mission did not seem like a good use of time to me at that moment. But I went along with it because there seemed no stopping it. In retrospect, I consider this a major administrative contribution and I credit the committee chair, Susan Ennis, for getting us to do it.</p>
<p>What I found later was that there were many times during work on the standard where people disagreed about what the right way to proceed was. In many of those cases, we might have been hopelessly deadlocked, each wanting to pursue a different agenda, but I was able instead to point to the charter and say, “No, we agreed that this is how we’d resolve things like this.”</p>
<p>Without a doubt, the most useful sentence in the charter was the one that said, “Aesthetic considerations shall also be weighed, but as subordinate criteria” [J13SD05]. Our goal in writing the charter had been to produce an industrial-strength language, and the time spent writing that one sentence, emphasizing the importance of pragmatics over abstract concerns about elegance, broke a lot of deadlocks. It’s not that any of us wanted the language to be unaesthetic. But in practice, given the compatibility constraints we had going into the project, there were a lot of details of the language that were simply fixed givens, and had we been obliged to fix all of those to the level of detail some were wishing for, it’s likely the process would never have terminated.</p>
<p>The charter also identified which projects were in scope and out of scope for our work, and which were required features and which were optional.</p>
<p>The time spent writing the charter later paid for itself many times over and it’s an exercise I recommend to any committee engaged in any large endeavor over a period of time.</p>
<p>5.4 Cleanup: Larry Masinter<br />
Most people who have seen the Common Lisp HyperSpecTM [Pitman96] have spent at least some time browsing the X3J13 issues section, in which the nature of various issues considered in the design of the language are recorded for history. The forms used were insisted upon by Larry Masinter. Once again, I (and perhaps others) worried that having to fill out forms was just a lot of pointless make-work. However, it quickly became apparent that he was right in advocating this approach.</p>
<p>Using forms with standardized fields like “problem description” and “proposal” where each proposal had to be analyzed for “cost to users,” “cost to implementers,” etc. led those submitting changes to consider their proposal from all sides before making a suggestion. It also made it easy for reviewers to determine which proposed changes were adequately explained and which were controversial.</p>
<p>It had an additional benefit that is a little more subtle. There was implicitly a kind of philosophy of how contributions from collaborating individuals were merged using these forms. For example, a good problem description had to satisfy everyone. If two people saw a problem from a different point of view, both people’s points of view were merged into the problem description, making the problem more complicated, and making solutions sometimes harder to achieve. But this was essential to addressing porting problems, for example. One couldn’t just solve how a file system operation would work on one operating system unless the solution was going to work on other operating systems, too. On the other hand, the “proposal” field was very different. If two people disagreed on a proposal, they each wrote their own proposal so that proposals could be internally consistent and coherent. This meant that a single problem often had several proposed solutions with different costs and benefits, and the committee had to decide which was the stronger proposal.</p>
<p>The procedure worked well and solved hundreds of small issues that came up. But it was not a property of the ANSI process that we used this procedure. It was unique to Masinter’s way of doing things. This was just one of many details of the process that was greatly affected by the presence of and style of a single individual.</p>
<p>5.5 Project Editor: Kathy Chapman (1987)<br />
The project was far too complicated to be completed by the committee itself. It required some sort of outside investment or it would never be done.</p>
<p>In 1987, Gary Brown, of Digital Equipment Corporation (DEC), arranged for the services of Kathy Chapman to be made available to the committee. Kathy became the first Project Editor and did some very important foundational work.</p>
<p>CLTL had been accepted as a “base document.” Under Kathy’s supervision, and with Steele’s explicit approval, CLTL was reorganized from its tutorial style to a dictionary style, working out many of the book design details that would carry through into the final work.</p>
<p>Within the code, she kept meticulous back-pointers to the source location of each of the bits of moved text so that it was later possible to track down the origin of passages that surprised people.</p>
<p>Kathy also used markup internally that distinguished the selection of an appropriate font for a function name or a variable name even though the fonts would turn out to be the same in the printed text. Although this practice had no effect on the printed text, however, it did have a subtle effect later because the TEX to HTML processor used to produce the Common Lisp HyperSpec would be able to rely on that information to create better cross-reference links.</p>
<p>5.6 ISLISP (SC22/WG16) begins (1988)<br />
At this time also, work began by an ISO committee designated as SC22/WG16, an international standards body concerned with Lisp. (Later, at the request of John McCarthy, Lisp’s creator, this body would clarify that its goal was to produce a dialect named ISLISP, and not to produce a standard for all Lisp. In fact, in researching this paper I found records from an early meeting of X3J13 stating that McCarthy had made a similar request there, too—that the American standard be one for Common Lisp, not for Lisp.)</p>
<p>Participants in the international standard included representatives from various Lisp communities worldwide, including Common Lisp, Eulisp, Le Lisp, and Scheme.</p>
<p>The first meeting was in Paris in 1988 and was co-located with International Workshop on Lisp Evolution and Standardization (IWOLES). Richard Gabriel was designated by X3J13 as the United States’ representative to this committee. I also attended.</p>
<p>5.7 New Project Editor: Kent Pitman (1989)<br />
In 1989, Digital Equipment Corporation (DEC), having already invested a substantial amount in hosting a Project Editor, decided it wanted someone else to take over the role. There was a call for a new Project Editor.</p>
<p>I volunteered—without first talking to my employer, Symbolics—with a few conditions. One condition was that funding could be found. Another was that I not have to write any status reports. I wanted to spend all my time writing. I told the committee it was fine if they sent people to peek into my office and see if I was working, but that I didn’t want to have the task be high overhead. I told them that if they could get a better offer, they should take it.</p>
<p>I wish I had recorded Richard Gabriel’s response to my offer because it was classic. He said something tepid like “I think Kent is the minimal acceptable kind of person to get this done.” I’m not sure by what standard he said this. But I came to believe that he was wrong. Perhaps he was focused on my technical or writing capabilities. I wasn’t the strongest technical person nor the best writer. But the job didn’t turn out to need that.</p>
<p>What it needed was someone who had a mix of skills, and I had a reasonably good mix. It needed me to be a technical person one day and a writer on other days.</p>
<p>Also, if it was going to involve someone with technical skills, it needed that person to be someone who was able to separate partisan technical advocacy (which could be done at meetings) from neutral editorial action (while editing the document). There was a lot of text changing, and it needed to change in purely editorial ways. Had I confused my being allowed to edit the document for editorial reasons with my being allowed to edit the document for technical reasons, the community would have lost faith in me. They needed to believe that I would work hard to make sure that the only changes made to the standard were those consistent with technical votes taken in the committee.</p>
<p>Editing, I found, is really mostly about trust.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.smashcompany.com/technology/creating-standards-is-hard-work/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why do online communities such as Quora decline in quality?</title>
		<link>http://www.smashcompany.com/business/why-do-online-communities-such-as-quora-decline-in-quality</link>
		<comments>http://www.smashcompany.com/business/why-do-online-communities-such-as-quora-decline-in-quality#comments</comments>
		<pubDate>Tue, 01 May 2012 04:42:32 +0000</pubDate>
		<dc:creator>lawrence</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://www.smashcompany.com/?p=2406</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://delw.in/quoras-demise/">This seems like a reliable pattern, which makes the whole question of how to solve it that much more interesting. </a></p>
<blockquote><p>Great things never last<br />
I saw Quora’s potential early on — it could have been a giant repository of information, a kind of interactive encyclopedia with views coming from everywhere. And certainly, there are still very interesting questions being asked (this one and this one came in my Quora weekly digest, and were pretty interesting). But it’s all being overrun with meaningless questions. Put simply, it’s just hard to filter through all the noise to get to the worthwhile content. That’s one reason why I visit the site maybe once a month, and just read the weekly digest instead.</p>
<p>Quora died because it put the emphasis on the user. People who use social networks like to see their egos boosted. They like everything attributed to them. When Quora began, it was equal. No one had any prestige (now the prestige of someone is denoted in the amount of “credits” it costs to ask someone to answer a question — an absurd system I don’t even have time to rant about right now). The playing field was leveled, and the information could speak for itself. I wasn’t there for jokes or gags or trollface or blogging or loose-leash egotistical “polymaths” (a common Quora title).</p>
<p>I just wanted cool information. All the time.</p>
<p>Maybe I’m wrong<br />
It could be that I simply thought I was the target audience Quora, but in actuality, they just wanted as broad an audience as possible. I don’t know. The business of startups is a sketchy subject, and I don’t intend to associate myself with it.</p>
<p>What I wanted from Quora was simple: Yahoo! Answers, but not so shitty and full of idiots. It’s hard to believe that this caliber of humanity is rampant across Quora right now.</p>
<p>Sorry Quora. It was nice while it lasted. I’ll continue to check in from time to time, and I don’t plan on unsubscribing from your Weekly Digest, which really is fascinating. But visiting the site is just too much to handle. I don’t need another social network, I just want my questions answered.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.smashcompany.com/business/why-do-online-communities-such-as-quora-decline-in-quality/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Most attempts at motivation are fake and futile</title>
		<link>http://www.smashcompany.com/business/most-attempts-at-motivation-are-fake-and-futile</link>
		<comments>http://www.smashcompany.com/business/most-attempts-at-motivation-are-fake-and-futile#comments</comments>
		<pubDate>Tue, 01 May 2012 02:08:05 +0000</pubDate>
		<dc:creator>lawrence</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://www.smashcompany.com/?p=2403</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.idonethis.com/post/22121837117/confronting-the-brutal-facts-of-your-startups-reality">I like this:</a></p>
<blockquote><p>
When the team got down emotionally, I would try to persuade them that reality wasn’t as bleak as it seemed.  I laugh thinking about it now.  The guys would tell me, “You can’t persuade me of the pitch because we helped come up with it!” </p>
<p>The problem is that I was operating under the mentality that a team needs to be motivated to get more done.  It turns out that my attempts to frame reality for the purpose of motivating was extremely demotivating to the team because it distracted our attention away from confronting the brutal facts of our reality. </p>
<p>Jim Collins in Good to Great and Teresa Amabile and Steven Kramer in The Progress Principle both interviewed hundreds of managers and employees, analyze thousands of employee journal entries, and concluded that motivation is a waste of time — employees aren’t motivated by motivation.  Rather, the right people are self-motivated and the key is just to stay out of the way and focus on not demotivating people. </p>
<p>Not dealing with reality on the part of management is a huge demotivator.  When you confront the brutal facts of your current reality, you’re able to conduct an autopsy in earnest, and then execute — a process that’s invigorating and self-motivating.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.smashcompany.com/business/most-attempts-at-motivation-are-fake-and-futile/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Loops of learning as the core of complex development in games</title>
		<link>http://www.smashcompany.com/philosophy/loops-of-learning-as-the-core-of-complex-development-in-games</link>
		<comments>http://www.smashcompany.com/philosophy/loops-of-learning-as-the-core-of-complex-development-in-games#comments</comments>
		<pubDate>Mon, 30 Apr 2012 01:34:15 +0000</pubDate>
		<dc:creator>lawrence</dc:creator>
				<category><![CDATA[Philosophy]]></category>

		<guid isPermaLink="false">http://www.smashcompany.com/?p=2400</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lostgarden.com/2012/04/loops-and-arcs.html">I like this model of games:</a></p>
<blockquote><p>
The &#8216;game&#8217; aspect of this beast we call a computer game always involves &#8216;loops&#8217;.</p>
<p>The player starts with a mental model that prompts them to&#8230;</p>
<p>Apply an action to&#8230;</p>
<p>The game system and in return&#8230;</p>
<p>Receives feedback that&#8230;</p>
<p>Updates their mental model and starts the loop all over again.  Or kicks off a new loop.<br />
These loops are fractal and occur at multiple levels and frequencies throughout a game. They are almost always exercised multiple times, either within a game or by playing the game multiple times.</p>
<p>Nested, dependent loops yields complex feedback loops and unexpected dynamics.  Loops tend to deliver value through the act of being exercised.  Thus they are well suited for mastery tasks that involve trial and error or repeated exposure. The goal of both loops and arcs is to update the player&#8217;s mental model, however loops tend to rely on a balance of the following:</p>
<p>Interrelated actions that trigger multiple loops in order to bring about specific system dynamics.<br />
Systems of crisply defined cause and effect that yield self contained systems of meaning.</p>
<p>Functional feedback that helps players understand causation. </p>
<p>Loops are very good at building &#8216;wisdom&#8217;, a holistic understanding of a complex system.  The player ends up with a mental model that contains a thousand branches, successes, failures and nuances that lets them approach new situations with confidence.</p>
<p>Arcs</p>
<p>&#8216;Arcs&#8217; have similar elements to a loop, but are not built for repeated usage. The player still starts with a mental model, they apply an action to a system and receive feedback. This arc of interaction could be reading a book or watching a movie. However, the mental model that is updated rarely results in the player returning to the same interaction. The movie is watched. The book consumed. An arc is a broken loop you exit immediately.</p>
<p>&#8230;</p>
<p>Narrative games are the most common example of mixing loops and arcs.  A simple combination might involve layering a segment where the player is engaged with loops with a segments of arcs.  This is your typical cutscene-gameplay-cutescene sandwich. </p>
<p>However, the analysis can get far more detailed.  For example:</p>
<p>Parallel Arcs: You can treat the emotional payload of song as an arc that plays in parallel to the looping gameplay.<br />
Levels:  The spatial arc of navigating a level provides context for exploring variations on a central gameplay loop. The &#8216;Golden Path&#8217; in a single player level is really just another name for an arc. </p>
<p>Micro Parallel Arcs:  A game like Half Life combines both levels and parallel arcs to deliver snippets of evocative stimuli as you progress through the level. </p>
<p>These structures also exist in traditional media. For example, if you look at a traditionally arc-based form such as a book, you find an odd outlier in the form of the Bible.  At one level of analysis it can be seen as a story arc that you read through and finish.  However, it is embedded in a much larger set of loops we casually refer to as a religion. The game-like loops include everything from worship rituals to the mining of the Bible in order to synthesize weekly sermons.  The arc is a central rule book for a larger game consisting primarily of loops.</p>
<p>In the past I&#8217;ve discussed criticism as a game that attempts to revisit an arc repeatedly and embellish it with additional meaning.  The game is to generate essays superficially based on some piece of existing art.  In turn, other players generate additional essays based off the first essays.  This acts as both a referee mechanism and judge.  Score is accumulated via reference counts and by rising through an organization hierarchy.  It is a deliciously political game of wit that is both impenetrable to outsiders and nearly independent of the actual source arcs.  Here creating an arc becomes a move in the larger game. Intriguingly, tabletop roleplaying games use a similar core structure though the high level rewards differ.</p>
<p>Even in these complex cases, understanding which behavior is a loop and which is an arc helps tease apart the systemic behaviors. Of the two, loops are rarely discussed in any logical fashion.  People note the arcs and comment on them at length while being quite blind to the loops driving the outcomes. Both criticism and religions are lovely examples of how loop analysis can provide a practical description of the game&#8217;s ruleset and magic circle even when the actual players are only vaguely aware of their constraints.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.smashcompany.com/philosophy/loops-of-learning-as-the-core-of-complex-development-in-games/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Run Java as a daemon</title>
		<link>http://www.smashcompany.com/technology/run-java-as-a-daemon</link>
		<comments>http://www.smashcompany.com/technology/run-java-as-a-daemon#comments</comments>
		<pubDate>Sun, 29 Apr 2012 21:29:45 +0000</pubDate>
		<dc:creator>lawrence</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.smashcompany.com/?p=2398</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.source-code.biz/snippets/java/7.htm">Interesting:</a></p>
<blockquote><p>How to run a Java Program as a daemon (service) on Linux (openSUSE) using a shell script</p>
<p>The following alternatives may be used to run a Java program as a daemon on Linux:</p>
<p>Use the Java Service Wrapper.<br />
Use the Apache Jakarta Commons Daemon package (Jsvc).<br />
Use a shell script.<br />
This article describes how to use a shell script. The disadvantage of the Java Wrapper and the Commons Daemon package is that they both make use of C programs. These C programs have to be compiled (or a matching binary distribution has to be found) and have to be compatible with the operating system and the installed Java runtime environment. A shell script, on the other hand, is easier to adapt to changing OS and Java environments.</p>
<p>Features<br />
The shell script (javaDaemonTest.sh) provides the following functionality:</p>
<p>Start/stop the Java daemon process, according to the Linux system init script convention.<br />
Run the Java daemon as a different (non-root) Linux user.<br />
Log error messages and redirect StdOut/StdErr output into a log file.<br />
Install/uninstall the daemon as a Linux service.<br />
(The &#8220;install&#8221; procedure installs the script in /etc/init.d, enables the service in the configured default runlevels, creates the &#8220;rc&#8221; command (symlink) and creates the Linux user (as a system account) and group if necessary).</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.smashcompany.com/technology/run-java-as-a-daemon/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The importance of agents in Clojure</title>
		<link>http://www.smashcompany.com/technology/the-importance-of-agents-in-clojure</link>
		<comments>http://www.smashcompany.com/technology/the-importance-of-agents-in-clojure#comments</comments>
		<pubDate>Sun, 29 Apr 2012 21:28:00 +0000</pubDate>
		<dc:creator>lawrence</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.smashcompany.com/?p=2395</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://travis-whitton.blogspot.com/2009/07/network-sweeping-with-clojure.html">Using agents reduced the runtime of this script from 12 minutes to 6 seconds.<br />
</a></p>
<blockquote><p>With that out of the way, we&#8217;ll create a function to see if a given host / port combination is connectable. To avoid indefinite blocking, we&#8217;ll make it so the connection can timeout (thanks to nikkomega from reddit for helping me improve this function).</p>
<p>(defn host-up? [hostname timeout port]<br />
  (let [sock-addr (InetSocketAddress. hostname port)]<br />
    (try<br />
     (with-open [sock (Socket.)]<br />
       (. sock connect sock-addr timeout)<br />
       hostname)<br />
     (catch IOException e false)<br />
     (catch SocketTimeoutException e false)<br />
     (catch UnknownHostException e false))))</p>
<p>As you can see, the use of with-open ensures that the connection is closed regardless of the outcome. Any exceptions that may occur result in a return value of false. We&#8217;ll use this later to filter through the relevant results. To avoid ruining the flexibility of the host-up? function, we&#8217;ll add a second function to test specifically for ssh servers running on port 22.</p>
<p>(defn ssh-host-up? [hostname]<br />
      (host-up? hostname 5000 22))</p>
<p>The timeout is hardcoded at 5000 milliseconds, which is probably much longer than needed. Performance will suffer in a single-threaded application, but we&#8217;ll address this later. With the hard work out of the way, we&#8217;ll simply apply the functions to the desired data.</p>
<p>(def network &#8220;192.168.1.&#8221;)<br />
; scan 192.168.1.1 &#8211; 192.168.1.254<br />
(def ip-list (for [x (range 1 255)] (str network x)))<br />
(doseq [host (filter ssh-host-up? ip-list)]<br />
       (println (str host &#8221; is up&#8221;)))</p>
<p>After running this, I was able to retrieve the desired results and locate my machine; however, it took over twelve minutes to sweep the entire network. This is due to the long timeout and the fact that we&#8217;re testing each host in a serial fashion. Seeing as we&#8217;re using Clojure, a few small changes should improve the situation dramatically. </p>
<p>Before multi-threading the program:<br />
real    12m19.390s<br />
user    0m1.684s<br />
sys     0m0.364s</p>
<p>There are varying ways to add concurrency to a Clojure app, but agents provide a send-off function specifically designed for blocking tasks. Given the fact that we&#8217;re sitting around waiting for most of these hosts to timeout, agents are a logical choice in this case. Since the first part of our program was written in a generic fashion, all we need to change is the application of the functions.</p>
<p>(def network &#8220;192.168.1.&#8221;)<br />
; scan 192.168.1.1 &#8211; 192.168.1.254<br />
(def ip-list (for [x (range 1 255)] (str network x)))<br />
(def agents (for [ip ip-list] (agent ip)))</p>
<p>(doseq [agent agents]<br />
  (send-off agent ssh-host-up?))</p>
<p>(apply await agents)</p>
<p>(doseq [host (filter deref agents)]<br />
  (println (str @host &#8221; is up&#8221;)))</p>
<p>(shutdown-agents)</p>
<p>Running the modified code reduces the runtime from twelve minutes to six seconds. Who can argue with that?</p>
<p>real 0m6.731s<br />
user 0m1.996s<br />
sys 0m0.268s</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.smashcompany.com/technology/the-importance-of-agents-in-clojure/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The desperate and futile hope of recreating past moments of inspiration</title>
		<link>http://www.smashcompany.com/business/the-desperate-and-futile-hope-of-recreating-past-moments-of-inspiration</link>
		<comments>http://www.smashcompany.com/business/the-desperate-and-futile-hope-of-recreating-past-moments-of-inspiration#comments</comments>
		<pubDate>Sun, 29 Apr 2012 20:02:54 +0000</pubDate>
		<dc:creator>lawrence</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://www.smashcompany.com/?p=2393</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cringely.com/2012/04/not-your-fathers-IBM/">Inspiration is inspiration and it can not be turned into a process or a procedure or an algorithm</a>. Inspiration does not repeat: each moment of inspiration is wholly unique, a one time event in the story of the human species. This fact plays out in every aspect of life, from art, religion, science, and also in business. </p>
<blockquote><p>The reason IBM can’t deliver is also explained well by Steve Jobs. It’s IBM’s maniacal fixation on process, once a strength but now a cancer.<br />
“Companies get confused,” Jobs told me.  “When they start getting bigger they want to replicate their initial success. And a lot of them think well somehow there is some magic in the process of how that success was created so they start to try to institutionalize process across the company.  And before very long people get very confused that the process is the content.  And that’s ultimately the downfall of IBM.  IBM has the best process people in the world.  They just forgot about the content.”<br />
In this instance content means the deliverable, whether a product or service. IBM smugly thinks it knows so well how to do things that they can export their entire business model to cheaper labor forces in less expensive places to do business. While this is correct to a very limited extent it has been embraced as religion in Armonk.<br />
IBM seems to believe it is cheaper to replace a skilled worker with two or three unskilled workers to do the same job.  That is like hiring nine women to make a baby in one month.  While it looks good on paper it is not practical and is not working.  The language barrier for IBM’s Indian staff is huge, for example.  Troubleshooting, which was once performed on conference calls, is now done with instant messaging because the teams speak so poorly.  Problems that an experienced person could fix in a few minutes are taking an army of folks an hour to fix.  This is infuriating and alarming to IBM’s customers.<br />
IBM’s five year plan ending in 2010 was supposed to double EPS from just under $5 to about $11.  (Today it is closer to $13.)  During the last five years there was an accelerated push of jobs offshore for cost reasons, high attrition rates, and longer product release cycles.  The next five year plan for 2015 is to again double EPS to about $20.  Can this be done? Probably, but the particular way they are going about it is also likely to destroy IBM.<br />
IBM’s biggest money maker is its Global Services business, which also employs the most people.  Ten years ago Global Services was an even larger part of IBM but the company is now making a lot less on its contracts, and the turnover of business is brisk.  It is in Global Services where you see the most jobs being shipped offshore   But the problem is the offshore teams often lack the skill and experience to do the work, problems mount, customers like (most recently) The Walt Disney Company get upset and leave.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.smashcompany.com/business/the-desperate-and-futile-hope-of-recreating-past-moments-of-inspiration/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The continued retreat of women from programming</title>
		<link>http://www.smashcompany.com/philosophy/the-continued-retreat-of-women-from-programming</link>
		<comments>http://www.smashcompany.com/philosophy/the-continued-retreat-of-women-from-programming#comments</comments>
		<pubDate>Thu, 26 Apr 2012 17:05:07 +0000</pubDate>
		<dc:creator>lawrence</dc:creator>
				<category><![CDATA[Philosophy]]></category>

		<guid isPermaLink="false">http://www.smashcompany.com/?p=2391</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://motherjones.com/media/2012/04/silicon-valley-brogrammer-culture-sexist-sxsw">At a time when women have made big progress in most other professions, the retreat since the 1980s is difficult to explain:</a></p>
<blockquote><p>As it is, women remain acutely underrepresented in the coding and engineering professions. According to a Bureau of Labor Statistics study, in 2011 just 20 percent of all programmers were women. A smaller percentage of women are earning undergraduate computer science degrees today than they did in 1985, according to the National Center for Women in Technology, and between 2000 and 2011 the percentage of women in the computing workforce dropped 8 percent, while men&#8217;s share increased by 16 percent. Only 6 percent of VC-backed tech startups in 2010 were headed  by women.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.smashcompany.com/philosophy/the-continued-retreat-of-women-from-programming/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

