<?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>timwhitlock.info &#187; open source</title>
	<atom:link href="http://timwhitlock.info/blog/tag/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://timwhitlock.info</link>
	<description>Tim Whitlock&#039;s personal site and blog</description>
	<lastBuildDate>Thu, 15 Dec 2011 13:51:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Diaspora &#8211; are you an early rejector?</title>
		<link>http://timwhitlock.info/blog/2010/05/13/diaspora-are-you-an-early-rejector/</link>
		<comments>http://timwhitlock.info/blog/2010/05/13/diaspora-are-you-an-early-rejector/#comments</comments>
		<pubDate>Thu, 13 May 2010 20:59:36 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[diaspora]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[fomo]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[privacy]]></category>

		<guid isPermaLink="false">http://web.2point1.com/?p=430</guid>
		<description><![CDATA[The four NYU students pledging to build Diaspora captured my imagination today, and I&#8217;m not the only one. There is so much to discuss around this and it&#8217;s not even out of the lab yet. In a rare display of focus, I&#8217;ll devote my first post on the topic to one of the more obvious [...]]]></description>
			<content:encoded><![CDATA[<p>The four NYU students pledging to build <a href="http://www.joindiaspora.com/project.html" target="_blank">Diaspora</a> captured my imagination today, and <a href="http://www.kickstarter.com/projects/196017994/diaspora-the-personally-controlled-do-it-all-distr/backers" target="_blank">I&#8217;m not the only one</a>.</p>
<p>There is so much to discuss around this and it&#8217;s not even out of the lab yet. In a rare display of focus, I&#8217;ll devote my first post on the topic to one of the more obvious questions &#8211; <strong>Can they (or do they need to) get 400 million people to migrate away from Facebook?</strong><span id="more-430"></span></p>
<p>The idea of a decentralized, open source social network where you truly own your data appeals to many a privacy-concerned geek, but I think perhaps the announcement of Diaspora and their <a href="http://www.kickstarter.com/projects/196017994/diaspora-the-personally-controlled-do-it-all-distr" target="_blank">rapid public funding</a> is timely more than anything. After the <a href="http://www.facebook.com/f8" target="_blank">F8 conference</a> Facebook are predictably under the spotlight again &#8211; this time there&#8217;s even <em>infoporn -</em> See: <a href="http://mattmckeon.com/facebook-privacy" target="_blank">Mat McKeon</a> and the <a href="http://www.nytimes.com/interactive/2010/05/12/business/facebook-privacy.html" target="_blank">New York Times.</a></p>
<p>So we&#8217;re all &#8216;concerned&#8217; about our privacy, and maybe even what Facebook are up to in general, but as <a href="http://fernandorizo.typepad.com/blog/2010/05/facebook-keeps-calling-our-bluff.html" target="_blank">Fernando Rizo muses</a> on his blog today, are you going to quit? No, of course not. Well, not without a decent alternative, because you don&#8217;t want to miss out. (See <a href="http://www.urbandictionary.com/define.php?term=fomo" target="_blank">FOMO</a>). Well let&#8217;s assume for a moment that Diaspora becomes that alternative &#8211; what then?</p>
<h3>Tipping the other way</h3>
<p>In theory I don&#8217;t see a reason the <a href="http://en.wikipedia.org/wiki/Network_effect" target="_blank">Network Effect</a> can&#8217;t work in reverse. It takes early adopters to populate a site like Facebook in the first place &#8211; perhaps a trend in rejection could result in a tipping point in the opposite direction. If you joined Facebook because your friends did, and they went somewhere else &#8211; you&#8217;d eventually go too. Somebody has to go first of course.</p>
<p><a href="../tag/facebook/">I grumble about Facebook</a> all the time,  but I use it as much as the next guy &#8211; in fact more  than most of my  friends. I don&#8217;t want to shut my account down. Going cold turkey would be a serious commitment. I think for this to happen for me there would have to be some kind of  transitional phase.</p>
<p>If Diaspora allowed me to view and publish content to and from Facebook, that would surely defeat its primary function. You could argue that it depends what the content was, but it would still mean keeping my Facebook account active. It might however be a way to soften the blow, and at the same time entice my peers into migrating too.</p>
<p>I don&#8217;t have the solution, (and I probably don&#8217;t understand the problem), but many of us are far too attached to our digital homes for this to be a clean break. As Fernando points out we&#8217;ve seen mass migration before (away from MySpace) but I&#8217;d say it&#8217;s a bigger deal this time. I remember quitting MySpace (~2007) and I really didn&#8217;t miss it. I had a handful of photos and about 30 friends. It was also incredibly annoying. Despite my moaning, I really like Facebook, it&#8217;s a very usable site and there&#8217;s <em>vastly</em> more content than I had access to three years ago.</p>
<h3>Would an exodus be necessary?</h3>
<p>Diaspora are proposing a hosted, turn-key option for their software (<a href="http://en.support.wordpress.com/com-vs-org/" target="_blank">a la WordPress</a>) and perhaps, as is <a href="http://www.gnu.org/philosophy/selling.html" target="_blank">common with open source products</a>, providers will be permitted to package up and sell the product themselves in a healthy, competitive fashion. To move 400 million people over to Diaspora, this would surely be essential &#8211; how many Facebook users know what a <a href="http://www.gnupg.org/" target="_blank">GPG</a> key is?</p>
<p><a href="http://twitter.com/timwhitlock/status/13927932016" target="_blank">I joked earlier</a> (complete with typo) that if  Diaspora took off, perhaps Facebook could move to a hosted-Diaspora  revenue model. Perhaps this wasn&#8217;t such a joke. Facebook need <a href="http://news.yahoo.com/s/afp/20100502/tc_afp/usitinternetrightscompanyfacebook" target="_blank">your data to profit</a>, if you&#8217;re going to abscond and  not give them any more data and not look at any more ads, then a  premium service where you can interact with your friends without getting  &#8216;graphed&#8217; seems reasonable to me. The privacy concerned few could pay, while the complacent masses continue to trade their personal lives for a free ticket.</p>
<p>I&#8217;m thinking out loud and probably sound like an idiot, but I&#8217;m hungry and need to go home&#8230;. just gotta check my Facebook.</p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2010/05/13/diaspora-are-you-an-early-rejector/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Model, View, Control Freak &#8211; Part 2</title>
		<link>http://timwhitlock.info/blog/2009/01/31/model-view-control-freak-part-2/</link>
		<comments>http://timwhitlock.info/blog/2009/01/31/model-view-control-freak-part-2/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 19:35:17 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[AMF]]></category>
		<category><![CDATA[amfphp]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://web.2point1.com/2009/01/31/model-view-control-freak-part-2/</guid>
		<description><![CDATA[Confessions of a control freak and an anecdote about AMF If you haven&#8217;t read part 1, it&#8217;s there for the reading, and puts this post in context. I figure the best place to start is where the title of this series comes from: I am a control freak; in life and so in code. This [...]]]></description>
			<content:encoded><![CDATA[<h3>Confessions of a control freak and an anecdote about AMF</h3>
<p><em>If you haven&#8217;t read <a href="http://web.2point1.com/2009/01/31/model-view-control-freak-part-1/">part 1</a>, it&#8217;s there for the reading, and puts this post in context. </em></p>
<p>I figure the best place to start is where the title of this series comes from: I am a control freak; in life and so in code. This is not a very positive thing to say, but in terms of my personal skills development I feel it&#8217;s important. I don&#8217;t like things that <em>just work</em>; I have to know <em>why</em>.</p>
<p>There is a button on my washing machine that says &#8220;<em>anti-crease</em>&#8220;. This bugs the hell out of me: When would I not want this setting on? What&#8217;s the trade-off? If it creases my clothes less, then what is <em>not </em>doing? Is it <em>cleaning</em> them less?</p>
<p><span id="more-90"></span></p>
<h3>The knowledge gap</h3>
<p>When I&#8217;m using a third-party code library I often at some point hit a brick wall. I&#8217;ve read the manual, I&#8217;ve done the examples and maybe even had some great success with it. And yet all of a sudden there&#8217;s an error; It means nothing to me and it&#8217;s coming from a part of my program that I did not write. I might try uncomfortably to debug the code, I may at a stretch even resort to hacking it, but most likely of all I&#8217;m going to hit the forums. I do <em>not</em> like spending my day on forums.</p>
<p>So there is a rational side to my reluctance to use third party code: when you write your own libraries you are investing in priceless knowledge that empowers you to fix bugs, and generally take more control of your product as a whole. Obviously this is at a massive time cost, and that is generally the biggest factor to weigh up. Do I want to write my own 3D library for Flash? <em>No thanks</em>! What about a light-weight template system for PHP? <em>Yeh, maybe</em>.</p>
<p>Whether this argument stands up or not, as I investigate deeper into my <em>control-freakery</em> it gets much less rational and just plain personal.</p>
<h3>An anecdote about AMF (Action Message Format).</h3>
<p><strong>AMF is <em>magic</em></strong>. You send a request off from Flash and bingo &#8211; your PHP code has executed and Flash magically has a response in its native tongue. Everything in between that made this happen <em>just worked</em>. This is abstraction at its finest; the problem is I just can&#8217;t stand it!</p>
<p>To make matters worse AMF is binary; that is to say that it is not human-readable. Using (<em>the divine</em>) <a href="http://www.fiddlertool.com/" target="_blank">Fiddler proxy</a> you can switch to hex view and make out some of the text characters being sent, but in general the protocol is not friendly for this level of debugging. When something goes wrong you need the tools and the knowledge to be in control of this mysterious beast.</p>
<p><strong>Enter the third party</strong>: The obvious choice of AMF library for PHP used to be <a href="http://www.amfphp.org/" target="_blank">amfphp</a>. This project has since been absorbed by the <a href="http://framework.zend.com/" target="_blank">Zend framework</a>, but I&#8217;m afraid my anecdote is a year old.</p>
<p>What I wanted from amfphp was literally a library; just a set of functions like <code>amf_serialize</code>, <code>amf_get_header</code>, stuff like that, so I could build a request gateway into my wider application. What I got was something that behaved more like a framework providing what appeared to be a totally sealed end-to-end process. My application ran on its own framework, so what I ended up with was two code bases, both saying <em>&#8220;I&#8217;m the daddy!&#8221;</em>. I&#8217;d set up an error handler; amfphp would override it, breaking my code. I&#8217;d start a session; but amfphp has already started one, breaking my code, and so on.. and don&#8217;t get me started on <code>__autoload</code>!</p>
<p>Looking under the hood of amfphp, it did not look like I could easily separate its infrastructure from its superstructure. I guess I just didn&#8217;t know nearly enough about AMF. This gave me an itch I just had to scratch.</p>
<h4>Should I build my own?</h4>
<p>I agonized over whether this was the right decision and came to the conclusion that it <em>wasn&#8217;t</em>.</p>
<p>So I did it anyway.</p>
<p>Work started by reading the (<a href="http://web.2point1.com/2008/09/13/amf-errata-and-other-ramblings/">rather sketchy</a>) AMF specifications published by Adobe. I did this on the tube for a week. After reading them several times I predictably decided that it was very doable and I would learn a lot from it. A small Flash project kicked off at work with an AMF back end, so every evening for a week I hammered out my own library.</p>
<p>By the end of this project AMF was no longer a mysterious, magical thing that <em>just worked</em>. It made actual sense, I could control it better, and I was able to add features to our projects such as debugging tools. I even discovered that I could harness parts of the protocol that I would not even have known about simply by using amfphp.</p>
<p>My library was never fully completed, and I&#8217;m in no doubt that it is inferior to amfphp in many ways, but that&#8217;s not the point. It was a reminder to myself that this is why I&#8217;m a control freak &#8211; to be in a position of power and not a slave to tools available.</p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2009/01/31/model-view-control-freak-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

