<?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>Extended Phenotype &#187; Biology</title>
	<atom:link href="http://mark.madsenlab.org/biology/feed" rel="self" type="application/rss+xml" />
	<link>http://mark.madsenlab.org</link>
	<description>Scientia non habet inimicum nisi ignorantem</description>
	<lastBuildDate>Fri, 16 Dec 2011 07:08:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Facebook, Google+, and the Crafting of the Global Social Network</title>
		<link>http://mark.madsenlab.org/2011/07/facebook-google-and-the-crafting-of-the-global-social-network.html#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://mark.madsenlab.org/2011/07/facebook-google-and-the-crafting-of-the-global-social-network.html#comments</comments>
		<pubDate>Fri, 01 Jul 2011 08:32:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Anthropology]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://mark.madsenlab.org/?p=1137</guid>
		<description><![CDATA[I was one of the &#8220;lucky,&#8221; who has a friend (and ex-coworker) that works for Google, and so I got an early invite to Google Plus, their attempt to take on Facebook head-on (i.e., after Facebook has achieved dominance, as opposed to the early Orkut days). Google+ is oddly Facebook-like. This makes sense, given that&#8230;]]></description>
			<content:encoded><![CDATA[<p>I was one of the &#8220;lucky,&#8221; who has a friend (and ex-coworker) that works for Google, and so I got  an early invite to Google Plus, their attempt to take on Facebook head-on (i.e., after Facebook has achieved dominance, as opposed to the early Orkut days).  </p>
<p>Google+ is oddly Facebook-like.  This makes sense, given that FB is well-used by people of all ages in many countries.  The design and interface are battle-tested (if also trivially and endlessly changable).  But there&#8217;s a key difference, and one that started me thinking about the real business that Facebook is in.  </p>
<p>That difference is, of course, the prominence of &#8220;Circles&#8221; in Google+, and the near-absence of features in Facebook for segmenting and targeting your communications.  Sure, one can create friend groups in Facebook, and then make status updates for just a friend group, but I&#8217;ll bet a lot of you either didn&#8217;t know that, or had never used it.  Heck, I&#8217;ve never used it despite my expressed desire on Facebook for just such a feature.  It&#8217;s nearly invisible on Facebook.  </p>
<p>It&#8217;s central and prominent on Google+.  Google wants us to *limit* and control, for ourselves, to whom we target our words and images.  Twitter almost insists upon the opposite, that we speak boldly into the ether, and whomever is listening will hear, whether we know the person or not.  </p>
<p>I&#8217;d bet that at Facebook, any feature which restricts the *volume* or *velocity* of messages that flow within the Facebook global social network are verboten, or anathema.  But at the same time, Facebook positions itself as providing control and &#8220;privacy,&#8221; despite numerous well-publicized privacy issues.  </p>
<p>Twitter largely self-organizes as a social network.  Facebook, on the other hand, is *crafting* the global social network.  It encourages us to accept the illusion of privacy in order to get us to friend more people, post more status, and expose our opinions and information than we would be willing to otherwise.  We should not, as a result, study the Facebook social network as if it were a reflection of our real-life social networks, because the two networks are different both in topology and in weighting.  </p>
<p>What Google+ is trying to do, and how that intent will translate into reality once it&#8217;s fully up and running, I have no idea.  It is, perhaps, not entirely clear to Google themselves, since they seem to start with goals and ideas, and let data and experiment drive them toward an ultimate plan and implementation.  In fact, I&#8217;ll bet the social network scientists and researchers at Google have studied the Facebook social network and its dynamics better than anybody else except Facebook&#8217;s social network scientists, and know a good deal about what makes it tick and what makes it sick.  </p>
<p>But it&#8217;s safe to say that they&#8217;ve made a couple of bets.  One is that Google is willing to accept a slightly lower velocity and average quantity of messages in the system.  This is inevitable because people will restrict more highly to whom  they send various status and messages if the means for doing so is prominent and core to the system&#8217;s operation.  The degree to which this effect will be prominent is open to question, but the underlying inequality in rates is pretty much built in.  They would make this bet if the increased loyalty they get from customers yields a better upside.  </p>
<p>Second, they&#8217;re betting that running a more organic and self-structured social network will yield better growth than a  manipulated and engineered social network.  Here, I&#8217;d bet that Google analyzed growth rates from various kinds of node-addition processes, and found that Facebook is oversaturating its degree distribution and eventually will lose the desirable &#8220;near-scale-free&#8221; network properties (for propagation), and will tend toward a distribution with too many degree correlations to propagate information efficiently.  That&#8217;s a complete conjecture on my part, but it&#8217;s backed by some solid science on the nature of information transfer on various network topologies.  </p>
<p>So Google+ is starting out in a seemingly interesting direction:  offering more well-integrated control over how and to whom we communicate, but with a familiar feel and design.  The real question now is, will enough people come and play, so that we can figure out how well it works, what Google is *really* doing, and whether that&#8217;s good or bad for individuals.  </p>
]]></content:encoded>
			<wfw:commentRss>http://mark.madsenlab.org/2011/07/facebook-google-and-the-crafting-of-the-global-social-network.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A belated Towel Day perspective</title>
		<link>http://mark.madsenlab.org/2011/05/a-belated-towel-day-perspective.html#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://mark.madsenlab.org/2011/05/a-belated-towel-day-perspective.html#comments</comments>
		<pubDate>Sun, 29 May 2011 05:13:24 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Anthropology]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[anthropology]]></category>
		<category><![CDATA[biology]]></category>
		<category><![CDATA[democracy]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://mark.madsenlab.org/?p=1114</guid>
		<description><![CDATA[This year, on Towel Day, I was busy, putting together a fundraising dinner for the UW Anthropology Department and the UW Student Farm.  So I didn&#8217;t really write anything, as I have in years past.  But not for lack of something to say.  I&#8217;m not sure what it is, exactly, about &#8220;Towel Day,&#8221; the semi-bogus&#8230;]]></description>
			<content:encoded><![CDATA[<p>This year, on Towel Day, I was busy, putting together a fundraising dinner for the UW Anthropology Department and the UW Student Farm.  So I didn&#8217;t really write anything, as I have in years past.  But not for lack of something to say.  I&#8217;m not sure what it is, exactly, about &#8220;Towel Day,&#8221; the semi-bogus holiday celebrated by fans of Douglas Adams each year, but it seems to bring out the &#8220;long view&#8221; in me, visions of civilizations rising and falling.  You&#8217;d think such thoughts would be triggered by someone more profound&#8230;by a rereading of Edward Gibbon or at least Barbara Tuchman, or even Carl Sagan reflecting on the immensity in which our parochial concerns are lost.</p>
<p>Nope.  Douglas Adams does it every time.  It&#8217;s the Golgafrinchans, at the end of <em>Restaurant At the End of the Universe</em>.</p>
<p>Because, of course, they&#8217;re us.  They&#8217;re our <em>bumbling, over-specialized, incapable of making a living for themselves, useless skills aplenty, useful skills thin on the ground</em>, selves.</p>
<p>And, as an archaeologist and social scientist, the Golgafrinchans always remind me of how fragile our civilization is.  I am a social scientist, and I read a good bit of contemporary social science, of course, but in my work I analyze phenomena at a much longer time scale.  I study societies and social groups as they come and go, are born by fission from some other group of people, flourish, perhaps give rise to social &#8220;offspring,&#8221; and eventually go extinct.  And what is more emblematic of social extinction than Adams&#8217;s portrayal of the Golgafrinchan Ark &#8220;B&#8221;, carrying the non-essential members of society off to form a new world&#8230;.</p>
<p>The Golgafrinchans occupy a place in my personal &#8220;wax museum of humanity&#8221; right next to Danny Hillis&#8217;s <a href="http://longnow.org/">Long Now</a> Foundation, and their 10,000 year clock.  Although the 24 hour news cycle and the buzz of tweets and instant information would have you believe otherwise, it is over much longer time scales that we can evaluate the success, and equitability, and sustainability of the various ways we humans have, of being human.  Our battles might be fought in days or years or lifetimes, but it is only our descendants that can truly &#8220;keep score&#8221; and decide how well we did.</p>
<p>The Long Now clock is designed to transcend us as a civilization, and as one of the ways we can communicate some of what we&#8217;ve learned with our far-future descendants.  It is designed not to require folks to be close enough to us in time and culture that they can read our writings, or comprehend our ideas, but to draw upon principles that are presumably deeper &#8212; not necessarily built into the laws of physics, mind you &#8212; but comprehensible to beings who are descended from our kind of minds, our kind of bodies.</p>
<p>Combine the perspective of an anthropologist studying the slow coming and going of societies, and the perspective of a software and systems engineer, and I think you get a sub-genre of futurism and speculation:  what it takes to &#8220;recover&#8221; the good bits of a civilization, after a collapse or other disaster.  Or simply the slow erosion of deep time.</p>
<p>I think of this problem in algorithmic terms.  If you wanted to maximize the chances of being able to recreate <em>us</em>, down the road after we&#8217;ve lost our knowledge, lost this particular set of scientific/democratic values, what is the &#8220;minimal instruction set&#8221;?</p>
<p><em>In short, what is the &#8220;boot loader&#8221; for an open, democratic society  combining expressive freedom and respect for scientific discovery</em>?</p>
<p>This is the closest I can come up with, and I do not claim that it&#8217;s a <em>deterministic</em> algorithm.  In other words, starting here, you are not guaranteed to replicate the aspects of our civilization we value.  It&#8217;s clearly stochastic, and there&#8217;s clearly a lot of noise.  Which means only that I&#8217;m giving an &#8220;initial condition&#8221; and transition probabilities for processes which are in the &#8220;basin of attraction&#8221; of the product we&#8217;re looking for, and that if you follow such rules, &#8220;more often than not,&#8221; you&#8217;d end up with something we&#8217;d recognize as an open society.  Assuming you either replicate the experiment a lot (i.e., send LOTS of Golgafrinchans to LOTS of uninhabited worlds), or wait for the experiment to repeat itself over and over (i.e., deep time).</p>
<p>But here&#8217;s the algorithm (and I don&#8217;t claim full originality here):</p>
<ol>
<li>Pay attention and observe patterns in the world around you, keeping an open mind.</li>
<li>Bang the rocks together, so to speak, and make things.  Especially new things.</li>
<li>Understand how competition <em>and</em> cooperation work, and why each is necessary.</li>
<li>Study those who are different, with an open mind.</li>
<li>Pass on what you learn, without too much prejudice.</li>
</ol>
<p>Put this algorithm on an endless loop, and you have something approximating the progressive parts of the last several thousand years of Western Civilization.   Ignore a couple of key clauses, and you have a much wider array of outcomes.  Not all good, and some downright scary.   Do it just like this, and you might, if you&#8217;re lucky, end up with an open, tolerant, prosperous, enlightened democracy.</p>
<p>That&#8217;s it.  That&#8217;s what it takes.  The Golgafrinchans managed it, apparently&#8230;and so did we.  But it was a narrow victory, and the question is whether we can manage to keep it up&#8230;..</p>
<p>Happy Towel Day!</p>
]]></content:encoded>
			<wfw:commentRss>http://mark.madsenlab.org/2011/05/a-belated-towel-day-perspective.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recent Research</title>
		<link>http://mark.madsenlab.org/2008/03/recent-research.html#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://mark.madsenlab.org/2008/03/recent-research.html#comments</comments>
		<pubDate>Sun, 30 Mar 2008 23:16:18 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Anthropology]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Evolutionary theory]]></category>
		<category><![CDATA[Science]]></category>

		<guid isPermaLink="false">http://mark.madsenlab.org/?p=517</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>I just returned today from the annual meeting of the Society for American Archaeology in Vancouver, B.C.&nbsp; I presented a paper (in poster form) about some recent work bridging the gap between formal models of cultural transmission (i.e., social learning and imitation between individuals) on social network graphs, and measures of cultural behavior that are observable in discrete traits (e.g., archaeological artifact classes).&nbsp; A corrected PDF version of the poster is available here</p>
<p><a href="http://blog.mmadsen.org/files/madsen-lipo-bentley-saa2008-poster.pdf">Download madsen-lipo-bentley-saa2008-poster.pdf</a></p>
<p> and will be published soon along with our entire poster session as an issue of the online <a href="http://www.evolutionarysciences.org/ojs/index.php/jehs/">Journal of Evolutionary and Historical Sciences</a>.&nbsp; I&#8217;ll talk more about this soon, but this week is incredibly busy and I wanted to get at least one link up for the paper before I forget.</p>
]]></content:encoded>
			<wfw:commentRss>http://mark.madsenlab.org/2008/03/recent-research.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sunday Night Windstorm, and What I&#8217;m Doing and Studying</title>
		<link>http://mark.madsenlab.org/2008/01/sunday-night-wi.html#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://mark.madsenlab.org/2008/01/sunday-night-wi.html#comments</comments>
		<pubDate>Sun, 20 Jan 2008 20:14:31 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Anthropology]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Evolutionary theory]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Science]]></category>

		<guid isPermaLink="false">http://mark.madsenlab.org/?p=524</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
I just came in from standing on the deck, under clear skies, a partial moon, and the most amazing windstorm.  The moon made visible the big waves crashing on the rocks below me, and the whitecaps out in the channel.  It&#8217;s been blowing hard all day, without cease, and I&#8217;m happy to be inside with a wood stove and food on the stove.  A brief respite at home before another stretch at the office.  I haven&#8217;t quite figured out the optimal amount of time to spend down in Seattle, but I&#8217;m pretty sure it&#8217;s shorter than I&#8217;ve been spending as things heat up at work.  Seeing friends and doing things in Seattle is great, but I miss the island.  The slow process of meeting people and &#8220;becoming a local&#8221; has all but stopped as I commute back and forth.
</p>
<p>
I haven&#8217;t written much here since late December, but only because life has reached a fever pitch again, and the brief times I have free away from a full schedule need to be devoted to research and my dissertation, not idle contemplation for my website.  But we&#8217;re in the thick swamp of an election season, unseasonably early of course, and I haven&#8217;t written anything about the candidates, the primaries, the debates, as I did for much of 2004.  I can&#8217;t promise to get back to regular posting before Super Tuesday, but I hope to soon thereafter.  Or as soon as I can get my two projects more firmly underway (one paper, one poster) for the SAA (Society for American Archaeology) meetings in late March in Vancouver.  Both are co-authored with Alex Bentley and Carl Lipo, and we&#8217;re working on the statistical consequences of expressing formal models of cultural transmission within realistic social networks.
</p>
<p>
For those unfamiliar with cultural transmission, this is the observation that humans are not born with a hard-coded set of cultural behaviors (in the sense of genetically transmitted) but learn, over the course of child development and throughout life, ways of behaving and believing and thinking through interaction with others in our social groups. In a formal sense, cultural transmission is modeled mathematically through analogues of haploid population genetics models (Wright-Fisher and Moran processes), replicator dynamics and allied models from evolutionary game theory, and the contact and voter models in the study of &#8220;interacting particle systems&#8221; or spatial stochastic processes by probability theorists and statistical physicists.  An open question, whose likely answer is &#8220;yes,&#8221; is that these methods of modeling cultural learning and transmission are formally equivalent, given appropriate variations of population structure and the focus on deterministic versus stochastic models.  But more of that in future posts, hopefully.
</p>
<p>
Basically, I&#8217;m working with some collaborators studying models of social learning and communication, for predictive ensemble or spatial statistical &#8220;signatures&#8221; in cultural data which are mapped spatially and dated temporally.  A &#8220;signature&#8221; would be a unique pattern of statistical properties which tells us how a given population was structured (in terms of social networks) given the results of how cultural information flowed within the population, and came to be reflected in material objects or artifacts.  An example would be a model in which we learn about, and adopt, preferences for songs and music from our social network of friends, but in an unbiased fashion &#8212; we occasionally adopt the preferences of a colleague or associate.  What statistical properties does this local process of imitation have, when projected into a &#8220;global&#8221; perspective &#8212; statistical patterns within a population, spatial patterns in kinds of data we can map and chart?
</p>
<p>
Of course, we all know that the model I just described is pretty simplistic.  Nobody &#8220;just copies&#8221; their friends, let alone doing so without any filters, biases, and on a strict &#8220;coin flip&#8221; or probabilistic basis.  But it turns out it sure can look that way when you aggregate the results of many people imitating, choosing, learning, and adopting ideas.  So this kind of model is a good &#8220;null hypothesis&#8221; for a simplistic kind of cultural communication &#8212; anything more realistic will have to depart from this simple random model in striking, hopefully unique ways.
</p>
<p>
Being able to find unique, predictive patterns from more complex models of cultural learning and communication is possible, but not guaranteed &#8212; it is easily possible (maybe even likely) that several different kinds of social situations could lead to the same overall patterns at a local, regional, or even global level.  We call this problem &#8220;equifinality&#8221; &#8212; the data we have are insufficient to distinguish between several possible processes, so given our models and data, each process is &#8220;equally likely&#8221; to have caused the observed pattern.
</p>
<p>
This type of research is what I&#8217;ve been engaged in for a long time &#8212; at least since 1995, with conference papers, publications, and Carl Lipo&#8217;s dissertation research covering some of the results.  Now I&#8217;m extending our previous work and learning a lot of math, probability, and population genetics in the process.  It&#8217;s fascinating stuff, but in addition to the job at GridNetworks the work keeps me pretty busy.
</p>
<p>
This is all by way of explanation for my longish absences from writing something here.  I hope to remedy that, as I said, but there&#8217;s some serious work between now and then.</p>
]]></content:encoded>
			<wfw:commentRss>http://mark.madsenlab.org/2008/01/sunday-night-wi.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Do Research?</title>
		<link>http://mark.madsenlab.org/2007/09/why-do-research.html#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://mark.madsenlab.org/2007/09/why-do-research.html#comments</comments>
		<pubDate>Tue, 25 Sep 2007 22:33:52 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Anthropology]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Science]]></category>

		<guid isPermaLink="false">http://mark.madsenlab.org/?p=535</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
A couple of weeks ago, I had dinner with some friends, and one of them asked me why I was interested in doing research, having some trouble understanding how it benefited me &#8212; was there some kind of commercial or financial benefit?&nbsp; My answer at the time was probably inadequate; I replied that it was all about one&#8217;s personal satisfaction at learning new things, researching the answers to questions we haven&#8217;t yet answered.
</p>
<p>
Today I got a bit of an inkling at a more psychologically adequate answer.&nbsp; That&#8217;s not to say that it&#8217;s the &quot;correct,&quot; or complete, or the only answer, but I immediately recognized it as a gut-level truth, at least within the scope of my life.&nbsp; I attended our department&#8217;s reception for graduate students and faculty, held at the beginning of the academic year, and met a number of new and returning students, many of whom (because I&#8217;ve been off doing business and other things) I&#8217;d never met.&nbsp;
</p>
<p>
One of the students told me of a class taught the previous year where they&#8217;d read a paper I&#8217;d written with <a href="http://www.csulb.edu/~clipo/">Carl Lipo</a> (and likely others, I didn&#8217;t catch the exact citation, but I&#8217;m guessing <a href="http://www.csulb.edu/~clipo/papers/LipoMadsenDunnelHunt.pdf">Lipo et al. 1997</a>).&nbsp; He mentioned it because of the oddity of actually running into and meeting one of the authors, but for me the experience was significant.&nbsp; Here was somebody who knew something about me before ever having met me &#8212; in this case, how I thought and what I thought about a topic.&nbsp; He&#8217;d encountered some aspect of me as assigned reading in a class, and thus was acquainted with something I&#8217;d done and thought, years before.&nbsp;
</p>
<p>
We hope to be known, ultimately, by our words and thoughts and ideas.&nbsp; We hope to be assigned reading, or the fortuitous article or book encountered in the library late one night.&nbsp; We hope to be the idea that causes somebody else&#8217;s project or thoughts to finally &quot;gel&quot; and come together.&nbsp; Just as others served as the building blocks with which we had a tiny nugget of a new idea, we hope to be the seeds of someone else&#8217;s new ideas, down the road.&nbsp; Most of my ideas and published works will not accomplish this, but some might, whether in a small or large way.
</p>
<p>
And with that, I greet the new academic year, secure in the knowledge that something I wrote is being read.&nbsp; And that&#8217;s why I, and many others, do research.&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://mark.madsenlab.org/2007/09/why-do-research.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reflections on complexity on the occasion of diagnosing computer problems</title>
		<link>http://mark.madsenlab.org/2007/08/reflections-on.html#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://mark.madsenlab.org/2007/08/reflections-on.html#comments</comments>
		<pubDate>Wed, 22 Aug 2007 20:49:18 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Biology]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://mark.madsenlab.org/?p=540</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
At least twice in the last two days, I&#8217;ve had friends or neighbors pose computer problems to me.  At least one was my own fault, having given a friend a (fully licensed, purchased from the MS Store) copy of Windows XP to &#8220;fix&#8221; their laptop via reinstallation.  The other is a gentleman here on the island, from whom I&#8217;m in the process of buying a small boat to putt around between the islands.  In the latter case I answered the usual questions about occupation and history, and since I nearly always answer that question with something about software or computers, I guess being involved in the second incident was my fault, too.
</p>
<p>
In the first case, the problem was that my friend tried to reinstall XP Pro SP2 over a Dell OEM installation of Windows Media Center, and got an error saying that the product key was invalid.  It only took one email for my friend, who&#8217;s probably accustomed to folks like me asking seemingly simplistic questions like &#8220;did you mistype the code?&#8221; to convince me that, indeed, this was a real error.  In the second case, a neighbor here on the island knew I was in the software business and asked me why his HP inkjet printer didn&#8217;t seem to install and work correctly on his Mac running OS X.
</p>
<p>
In both cases I was initially stymied.  In the second case, I&#8217;m still stymied, but I&#8217;m buying the guy&#8217;s boat so I might help him figure it out tomorrow.
</p>
<p>
In the first case, a quick Google on the problem revealed that other people have exactly the same problem.  Reinstalling a personal (i.e., non-Enterprise) license key for XP Pro over Media Center seems to reject perfectly valid license keys.  Of course, even though I worked at Microsoft and have worked with Windows since the 3.1 days, I have absolutely no clue why it does this.  I just know enough about the complexity of the Windows code base and have enough anecdotal experience not to be shocked in the slightest.  Similarly, I&#8217;m not shocked that I could have a serious amount of experience with computers and code and still not have a clue.
</p>
<p>
I suspect the reason for this is that software engineers actually have two core skills, not one.  Sure, software engineers are extremely good at <strong><em>abstraction</em></strong>:  the skill of looking at a set of particulars, and creating a model of generalizations to represent <em>any other</em> set of particulars that share all or some of the relationships we imagine to exist within the original case.  That task of abstraction is the same one shared by mathematicians, physicists, population geneticists, and other creators of mathematical models.  But software engineers, and systems administrators, as opposed to pure computer scientists, have a second skill which is equally crucial.  The ability to catalog a large number of actual cases, their causes, and their solutions.  In other words, the skill to capture and contextualize and apply the <strong><em>lore</em></strong> of computing.
</p>
<p>
The first ability, I think, is what people expect when they ask me what might be causing their technology to have a problem.  The ability to see a rational abstraction behind the seemingly random behavior that&#8217;s occurring, and thus to diagnose what&#8217;s wrong.  But in reality, the extent of one&#8217;s command of <strong><em>lore</em></strong> &#8212; of detail, contextualized by situation and software version and architecture &#8212; governs one&#8217;s ability to solve such problems, particularly remotely &#8212; without the computer in question in your hands.   The reason is the fundamental complexity of the situation.  On top of the hardware runs an operating system, with a specific set of rules.  That operating system can be tiny, like MS-DOS 3.3, or utterly massive, like the 60+ million lines of C code that purportedly make up Windows XP.  On top of this midgit (or giant), rests a layer of drivers &#8212; bit of the operating system contributed typically by hardware vendors that allow the whole thing to work on their hardware.  And on top of this three-layer cake runs your applications, today often themselves multi-million line pieces of software code.  Code that might also depend critically on being able to communicate to other computers, across a network, to gather data via HTML or other &#8220;protocols,&#8221; which are essentially small languages that all computers must speak fluently in order to not misunderstand one another.
</p>
<p>
Complexity is the enemy of things &#8220;just working.&#8221;  And it&#8217;s the enemy of even computer professionals being able to understand the systems they build.  We can visualize a few interactions; we can even visualize a few histories of interactions.  But nobody can visualize all of the interactions and possible states that even a moderately large piece of software (forget Microsoft Office, Windows, the Linux kernel, or Mac OS X) can display.  Heck, human beings can&#8217;t visualize the geometry of a vector with more than three dimensions!  How are we possibly going to understand the state space (i.e., possible behavior) of a piece of software with 66 million lines of code and megabytes of internal state variables?
</p>
<p>
We can&#8217;t, in detail.  We do so statistically.  We test things over partial ranges of their possible behaviors.  Hopefully the important range of their behaviors, in terms of how often users can get their system into the same state.  Even understanding the scope of the range of possible behaviors is a massive challenge, witnessed by the continued research into code coverage, automated testing, and the like.  The current popularity of unit testing probably represents a programmer-driven effort to simply reduce the dimensionality of the state space.  Unit testing reduces, by pursuing automated means of verifying the lowest level of &#8220;contracts&#8221; within the software itself, the size of the state space by large factors.
</p>
<p>
But what&#8217;s left after good, serious modern testing and QA is still a <strong><em>lot</em></strong> of possible behavior, and only some key pathways, the deepest, most intentional valleys through the overall &#8220;landscape&#8221; of behaviors, are documented or recorded.  Much of the state space of a modern commercial software program is still deeply terra incognita, as a simple consequence of the overall complexity and coupling present in our systems.
</p>
<p>
Thus, I was encouraged by this post about <a href="http://www.pragmaticprogrammer.com/articles/erlang.html">Erlang</a> <a href="http://lambda-the-ultimate.org/">on Lambda the Ultimate</a>, a prominent blog about programming languages and the associated computer science.  The designer of Erlang, Joe Armstrong, has this to say:
</p>
<blockquote><p>
<em>The Erlang flagship project (built by Ericsson, the Swedish telecom company) is the AXD301. This has over 2 million lines of Erlang.</p>
<p>The AXD301 has achieved a NINE nines reliability (yes, you read that right, 99.9999999%). Let&#8217;s put this in context: 5 nines is reckoned to be good (5.2 minutes of downtime/year). 7 nines almost unachievable &#8230; but we did 9.</p>
<p>Why is this? No shared state, plus a sophisticated error recovery model. You can read all the details in my PhD thesis.</em>
</p></blockquote>
<p>
Interesting.  And impressive.  It&#8217;s possible that there&#8217;s an approach here for reducing complexity to manageable, understandable, <strong><em>plannable</em></strong> levels.  Objects, aspects, and other recent software innovations aim to reduce dimensionality, allowing more of the total state of a program to be explicitly <strong><em>designed</em></strong>, rather than showing up as emergent run-time behavior.
</p>
<p>
It seems clear, though, that getting a handle on complexity in software is critical &#8212; if we&#8217;re going to be able to diagnose what goes on inside our software, and thus if we&#8217;re going to be able to trust it.  For commerce.  For security.  For privacy.  And for exercising our rights in a democracy, since more and more, software is involved when we vote and make decisions.</p>
]]></content:encoded>
			<wfw:commentRss>http://mark.madsenlab.org/2007/08/reflections-on.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ve Been Quiet Lately</title>
		<link>http://mark.madsenlab.org/2007/08/ive-been-quiet.html#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://mark.madsenlab.org/2007/08/ive-been-quiet.html#comments</comments>
		<pubDate>Tue, 07 Aug 2007 11:04:19 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Biology]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Science]]></category>

		<guid isPermaLink="false">http://mark.madsenlab.org/?p=542</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p style="text-indent: 20pt;">
I haven&#8217;t written much in a couple of weeks, and it&#8217;s because I&#8217;m studying a lot in addition to making headway on my dissertation proposal.&nbsp; This summer, in addition to the proposal, I&#8217;m trying very hard to erase some of my deficits in the mathematical arena.&nbsp; Darwin wrote, in his autobiography:</p>
<blockquote><p><em>I attempted mathematics, and even went during the summer of 1828 with a private tutor (a very dull man) to Barmouth, but I got on very slowly.&nbsp; The work was repugnant to me, chiefly from my not being able to see any meaning in the early steps of algebra.&nbsp; This impatience was very foolish, and in after years I have deeply regretted that I did not proceed far enough at least to understand something of the great leading principles of mathematics, for men thus endowed seem to have an extra sense.</em></p>
</blockquote>
<p style="text-indent: 20pt;">&nbsp;</p>
<p>
Precisely.&nbsp; Studying the evolution of culture and cultural behavior, from a modern Darwinian perspective, is inherently a mathematical business.&nbsp; Change is modeled as shifts in the frequencies of behaviors or traits, rather than outright transformations.&nbsp; And this means that calculus, linear algebra, differential equations, and stochastic processes are critical tools.&nbsp; Just as you wouldn&#8217;t hire a carpenter that knew how to build a cabinet, but didn&#8217;t have the tools to do the work, it&#8217;s hard to be an active researcher in this field and not have the right tools.&nbsp;
</p>
<p>
So I&#8217;m reviewing, practicing, and going further than my previous education in math, and I&#8217;m enjoying it thoroughly.&nbsp; I find that I&#8217;m one of those people that needs a purpose and a reason to learn things like the more abstract bits of math, and once I have a good reason, it seems to go smoothly.&nbsp; But it&#8217;s also time-consuming, and it keeps me from writing more.&nbsp; I thought I&#8217;d explain in case y&#8217;all wondered why I&#8217;ve been quieter than usual.</p>
]]></content:encoded>
			<wfw:commentRss>http://mark.madsenlab.org/2007/08/ive-been-quiet.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TransmissionLab Update</title>
		<link>http://mark.madsenlab.org/2007/04/transmissionlab.html#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://mark.madsenlab.org/2007/04/transmissionlab.html#comments</comments>
		<pubDate>Fri, 06 Apr 2007 10:44:13 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Anthropology]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Evolutionary theory]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://mark.madsenlab.org/?p=575</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
Yesterday I posted <a href="http://code.google.com/p/transmissionlab/">TransmissionLab</a> version 1.4, a fairly major reworking of the model class core.  I was dissatisfied with the way that RepastJ models, by default, seemed to tightly couple the main model class to all of the other classes I&#8217;d written for data collection, transmission rules, and population construction.  My goal with TransmissionLab is really a <em>framework</em> for building models to study cultural communication and transmission, not just writing one giant model and bolting new stuff on.
</p>
<p>
A <a href="http://www.humboldt.edu/~ecomodel/documents/ABMPlatformReview.pdf">paper by Railsbeck et al</a>., in the September 2006 issue of <em><a href="http://sim.sagepub.com/content/vol82/issue9/">Simulation</a></em>, is right on the money in saying that the original Objective-C version of the Swarm toolkit is a strong &#8220;framework,&#8221; as opposed to the &#8220;library&#8221; style of successor toolkits like RepastJ and MASON.  Swarm definitely forced a style of organization onto your simulation models, via the concept of nested &#8220;swarms&#8221; of agents, observers, etc.  I suspect this is much like Ascape, but the latter doesn&#8217;t seem to be an active development project any longer (at least given the website &#8211; leave a comment if this incorrect).  Whereas Repast provides a ton of infrastructure but simulation models themselves seem to be fairly unstructured, as I read various examples and models folks have posted online.
</p>
<p><span id="more-575"></span></p>
<p>
One of the reasons it&#8217;s hard to create a generic framework for computational models is that they differ in structure and needs across domains.  On the other hand, within a specific research domain, it seems like structure should be relatively standardized, particularly if we want to communicate, share, and replicate results.  So the governing philosophy I&#8217;ve been using with TransmissionLab is that of a <em>domain-specific standard modeling framework built on a standard generic toolkit</em>, tailored to the research needs of a given domain (in this case heritability/genetics/cultural transmission modeling), but flexible enough to allow the building of many models by different groups of researchers.  We&#8217;ll see how this works out, but it seems like a good &#8220;middle&#8221; approach to the problem.
</p>
<p>
Version 1.4 of TransmissionLab is a reasonable step in that direction.  Nearly all of the &#8220;boilerplate&#8221; involved in building a computational model is abstracted into a series of Java interfaces and abstract classes (which provide templated partial implementations for the interfaces).  All of the &#8220;machinery&#8221; of the simulation deal exclusively with interfaces, such that nearly anything that the &#8220;user&#8221; writes can be considered a reusable component.  For example, in the rules package, TransmissionLab currently includes a rule for &#8220;mutation&#8221; called <strong>RandomAgentInfiniteAllelesMutation</strong>.  Assuming that &#8220;traits&#8221; are being represented as integer &#8220;tags&#8221; (a generalization of this will be in a future version to allow <strong>Object</strong> traits with internal structure), this rule will operate on any implementing class of the interface <strong>IAgentPopulation</strong>.  This allows a simulation author to reuse this mutation rule, creating populations that are well-mixed, spatially structured, network-structured, and so on.
</p>
<p>
The central model class (which contains the &#8220;main&#8221; method, for example) is similarly templated.  The &#8220;component&#8221; classes (rules, data collectors, population factories) all work with classes which implement <strong>ISimulationModel</strong>.  In practice, main model classes extend the abstract class <strong>AbstractTLModel</strong>, which provides full or partial (template method pattern) implementations of the <strong>ISimulationModel</strong> interface contract.  By design, satisfying the <strong>ISimulationModel</strong> contract also guarantees that your model class meets the needs of the <strong>SimModel</strong> contract in Repast, and thus will be runnable by any standard Repast method.  But since much of this &#8220;infrastructure&#8221; is contained in the abstract base class, user-written model classes are much much simpler.  In fact, looking at the new implementation of the Random Copying Model this morning (class <strong>NeutralCTModel</strong>), it strikes me that everything in it could be specified declaratively, in an XML configuration file.  So I may get to the point soon where user-written models are just XML files, users write new components as Java classes, and the framework stitches together the rest.
</p>
<p>
All of this may sound suspiciously like Repast Simphony, so why I am putting in this work?
</p>
<p>
Several reasons.  Simphony is still alpha code, and although it&#8217;s coming along very nicely, I&#8217;m not yet sure what I think of it as a modeling framework.  Clearly many of the goals are the same as I&#8217;m discussing here, and I may port TransmissionLab to Simphony down the road.
</p>
<p>
But Simphony is a bit of a &#8220;black box&#8221; at the moment:  I&#8217;m not quite sure how it all works under the hood, and that bothers me.  Exploratory simulations are fine if I don&#8217;t understand the fine detail of the runtime, but if we&#8217;re going to be sure that we&#8217;re getting scientifically usable results out of a computational model, we&#8217;d better darned well know exactly how the model works, period.  This is the problem I have with NetLogo (other than proprietariness and the fact that it&#8217;s well suited to specific types of models, not generic simulation).
</p>
<p>
So I&#8217;m still working with RepastJ, and plan to continue doing so until there&#8217;s a compelling case to switch.  And working with RepastJ is a lot simpler if you have just a bit more structure.  So TransmissionLab will continue to evolve in the direction of a domain-specific modeling framework using RepastJ.  If you&#8217;re doing simulations of cultural communication and transmission phenomena, check it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://mark.madsenlab.org/2007/04/transmissionlab.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TransmissionLab Version 1.3 available</title>
		<link>http://mark.madsenlab.org/2007/03/transmissionlab-2.html#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://mark.madsenlab.org/2007/03/transmissionlab-2.html#comments</comments>
		<pubDate>Thu, 29 Mar 2007 14:25:25 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Anthropology]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Evolutionary theory]]></category>
		<category><![CDATA[Science]]></category>

		<guid isPermaLink="false">http://mark.madsenlab.org/?p=577</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
A small update to <a href="http://code.google.com/p/transmissionlab/">TransmissionLab</a> is available, which enables proper batch-mode operation and simplifies the command line acrobatics required for batch mode operation.  This version is numbered 1.3, and is available either in source code format (from the Google Code Subversion repository) or as a binary JAR file release.  The latter are found under &#8220;<a href="http://code.google.com/p/transmissionlab/downloads/list">Downloads</a>&#8220;, and include a matched JAR file, a ZIP file with library dependencies, and an example batch-mode parameter file.
</p>
<p>
Both the batch-mode parameter file and library dependencies have slight differences from Version 1.2, so be sure to grab both otherwise you&#8217;ll encounter errors starting up a simulation.  In particular, this release adds a dependency upon the Jakarta Commons CLI library for command-line parsing, since this isn&#8217;t a strong suit of the Repast libraries.
</p>
<p>
This version also adds one statistic to the OverallStatisticsRecorder data collection module.  For each simulation run, we calculate the average number of agents who have traits (measured at each model tick) which are listed in the &#8220;top N&#8221; list of traits.  In other words, if you&#8217;re working with a &#8220;top 40&#8243; list of song-analogues, this statistic measures the number of agents whose chosen trait is a song in the top 40, as opposed to a trait that wasn&#8217;t frequent enough to make the top 40 list.  This statistic is thus paired analytically with the parameter for the size of the &#8220;top N&#8221; lists, and the combination of the two should be interesting to examine across a range of mutation rate and population size parameters.
</p>
<p>
On a related note, <a href="http://www.livescience.com/humanbiology/070328_fickle_fashion.html">LiveScience has an article on the upcoming article by Alex Bentley, Carl Lipo, Harold Herzog, and Matthew Hahn</a>.  I recommend it for a somewhat popularized account of the main conclusions of their 2007 paper.  Since much of what we&#8217;re doing with TransmissionLab at the moment is going further along the lines suggested by Bentley et al., and earlier Fraser Neiman, Carl Lipo, and myself, it&#8217;s a good clue to the kinds of phenomena we can explore purely assuming that choice among alternatives is statistically random or neutral.</p>
]]></content:encoded>
			<wfw:commentRss>http://mark.madsenlab.org/2007/03/transmissionlab-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updates to RandomCopyModel simulation code and new TransmissionLab model</title>
		<link>http://mark.madsenlab.org/2007/03/updates_to_rand.html#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://mark.madsenlab.org/2007/03/updates_to_rand.html#comments</comments>
		<pubDate>Fri, 09 Mar 2007 20:06:51 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Anthropology]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Evolutionary theory]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://mark.madsenlab.org/?p=582</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>
Bandwidth has returned here at the house, so I&#8217;m catching up on a backlog of things that needed reasonably comfortable internet connectivity.  The Canopy wireless service off Mt. Constitution has been having problems with a power supply and some other stuff for a couple of days, so I&#8217;ve been relying on my low-speed backup DSL link, which I have to say lets me get email but otherwise feels more like &#8220;super dialup&#8221; than &#8220;broadband.&#8221;  Oh well.
</p>
<p>
I&#8217;ve been busy on the simulation modeling front this week, coming out with a &#8220;final&#8221; version of the RandomCopyModel from an upcoming paper by Alex Bentley, Carl Lipo, Harold Herzog, and Matthew Hahn.  I didn&#8217;t work on the original model or paper, but Alex graciously allowed me to use the original code as the basis for some future experimental models we&#8217;re working on, as well as simulation setups I&#8217;ll need for my dissertation research.  In return I refactored and made the original simulation a bit clearer to follow in terms of the code, so we&#8217;re providing <a href="http://students.washington.edu/madsenm/software/software.html">version 1.3 of the RandomCopyModel</a> under the terms of a Creative Commons-GPL license for non-commercial use.
</p>
<p>
In the meantime, I&#8217;ve also been planning the next &#8220;version&#8221; of the model, which is now a separate codebase managed by Google Code under the name <a href="http://code.google.com/p/transmissionlab/">TransmissionLab</a>.
</p>
<p>
The goal of TransmissionLab is to accurately represent theoretical models of CT (e.g., random copying, prestige-biased transmission, frequency-biased transmission) within a variety of population structures (e.g., complete graphs/well-mixed, sparse random graphs and social networks of varying topologies, spatial lattices), and using  a variety of update algorithms (e.g., Moran processes, Wright-Fisher processes, various other birth-death processes).  TransmissionLab seeks to also make data collection and &#8220;observation&#8221; of simulated populations simple, with modules which are completely separate from the simulated population itself thus preventing observational &#8220;side-effects&#8221; on the model.  Analysis flows from data collection, and can be done in a variety of ways.
</p>
<p>
Naturally we&#8217;re not the first people by any means to do agent-based simulation models of cultural transmission, imitation behavior within populations, or the diffusion of innovations.  Heck, this isn&#8217;t even the first simulation of these sorts of phenomena I&#8217;ve been involved with.  Where I hope that TransmissionLab differs is that nearly all of my previous simulation models have proven fairly special-purpose, expedient models for working on one particular question or problem, and I&#8217;m trying to make TransmissionLab a common platform that can span projects both for myself and my research group.
</p>
<p>
This is important for a number of reasons:
</p>
<ol>
<li>Stable, well-used models tend to be well-structured, well-tested models.  The issues of whether the simulation is showing us artifacts of writing software or the theoretical behavior we&#8217;re trying to describe can only be solved by deep investment in design, coding, and testing.</li>
<li>Relating the results of one study to another when each uses different simulation code is a difficult one, for obvious reasons.  To the extent that we use the same code framework and models to perform multiple studies, we can make arguments (and even measurements) which relate the results of several research studies to each other.</li>
<li>The relationship issue mentioned in the previous item could span multiple research teams if the model is well-structured and tested enough that others adopt it for research.</li>
</ol>
<p>
Thus, I&#8217;m putting some reasonable effort into developing TransmissionLab, and if you have an interest in agent-based modeling and cultural phenomena, I hope you give it a look in a version or two.  Right now I&#8217;m moving from the older RandomCopyModel to a new set of development tasks, which will be outlined shortly at the googlecode wiki for the project.  Once these are checked in, there will be some interesting elements beyond the earlier model to explore.  I&#8217;ll post when that happens.</p>
]]></content:encoded>
			<wfw:commentRss>http://mark.madsenlab.org/2007/03/updates_to_rand.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

