<?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>Etherplex &#187; Web</title>
	<atom:link href="http://etherplex.org/archives/category/web/feed" rel="self" type="application/rss+xml" />
	<link>http://etherplex.org</link>
	<description>Rick Dillon&#039;s home on the net...</description>
	<lastBuildDate>Tue, 04 Oct 2011 02:37:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Why 64-bit is Still Not Ready (Hint: Adobe Flash)</title>
		<link>http://etherplex.org/archives/219</link>
		<comments>http://etherplex.org/archives/219#comments</comments>
		<pubDate>Sun, 03 Apr 2011 18:04:16 +0000</pubDate>
		<dc:creator>Rick</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://etherplex.org/?p=219</guid>
		<description><![CDATA[Back in 2004 I built my first AMD64 system over the summer, and I was thrilled.  I had just switched from Gentoo to Debian, and I think I even took a video of the process of building the machine.  I knew it would take years for the mainstream to start using 64-bit systems, and I [...]]]></description>
			<content:encoded><![CDATA[<p>Back in 2004 I built my first AMD64 system over the summer, and I was thrilled.  I had just switched from Gentoo to Debian, and I think I even took a video of the process of building the machine.  I knew it would take years for the mainstream to start using 64-bit systems, and I was proud that Linux/BSD was first.  Later, OS X and Windows followed up with their own 64-bit versions.  But what was notable on all platforms was how hard it was to transition.</p>
<p>OS X did rather well just because of the nature of their hermetically sealed ecosystem.  Sure, there were casualties (the entire MacFUSE ecosystem comes to mind), but overall it wasn&#8217;t bad.  Linux has had its rough spots for close to eight years now.  More on that in a second.  Finally, Windows still struggles with driver compatibility and weird glitches in 64-bit mode.  It&#8217;s amazing it has been this difficult to make the switch, but it does give a good perspective on how the inertia of an open community can act as an anchor at times.  The entire Apple ecosystem is a dictatorship, and therefore is very efficient at making big changes.</p>
<p>The problem both Linux and Windows (and yes, even OS X) have had is that it is very difficult to force entities that won&#8217;t give up their source code to make a change.  The best example of this is Adobe and their ubiquitous Flash Player.  It&#8217;s the most polarizing technology on the internet right now, with Apple shunning it almost entirely, and Google embedding it directly into the browser (&#8220;keep your enemies closer&#8230;&#8221;?).  In many ways it both enables and hobbles the modern web; it has been a transformative force while violating all the original ideals the web was based on.</p>
<p>So, here I am, once again making the leap to 64-bit thinking &#8220;C&#8217;mon man, it&#8217;s 2011, they must have worked out all the glitches by now&#8230;&#8221;.  I am typing this on my shiny new Lenovo X201 running Ubuntu 11.04 Beta 1 in 64-bit mode, only to find out that Flash still doesn&#8217;t work.  At all.  So, I manually download Adobe Flash &#8220;Square&#8221; and push the binary-blob to the right directory so all my browsers will find it.  And it works&#8230;sort of.  The new <a href="http://lifehacker.com/#!5786686/amazon-cloud-drive-stores-5-gb-of-your-stuff-online-and-streams-your-music-back-to-you">Amazon Cloud Player</a> and my <a href="http://www.subsonic.org/pages/index.jsp">Subsonic</a> setup keep producing this weird metallic buzz in all the music, and it makes my services useless.</p>
<p>So, I spent about an hour searching for what the problem could be.  After a whole lot of testing and searching, I determined it must be the 64-bit Linux incarnation of Adobe Flash.  It turns out that it is, and no one can force them to fix their <a href="http://penguinenclave.blogspot.com/2011/01/fedora-14-64-bit-distorted-sounds-from.html">broken use of memcpy</a> with something else because their project is still closed source.  If it were an open-source project, the changes would be made in under a day and a new version would be pushed out shortly thereafter. As it is, we have to wait for the dictator to do the right thing.</p>
<p>So, I suppose that means that dictatorships can either be the most agile or the most stagnant, and open communities are somewhere in the middle.  In any case, I think it is more fun to be part of a community than a subject to a dictator.</p>
]]></content:encoded>
			<wfw:commentRss>http://etherplex.org/archives/219/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Google-Verizon Net Neutrality Proposal: Absurd Coverage</title>
		<link>http://etherplex.org/archives/189</link>
		<comments>http://etherplex.org/archives/189#comments</comments>
		<pubDate>Sat, 14 Aug 2010 07:37:35 +0000</pubDate>
		<dc:creator>Rick</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://etherplex.org/?p=189</guid>
		<description><![CDATA[The &#8220;Google-Verizon Deal&#8220;, as everyone seems to be calling it, is not a deal at all, but rather a proposal whose intended audience is primarily the government and perhaps other corporate stakeholders in the internet service provider regulation.&#160; The reactions to the proposal have been overwhelmingly negative, and while I understand why, I thought this [...]]]></description>
			<content:encoded><![CDATA[<p>The &#8220;<a href="http://www.huffingtonpost.com/josh-silver/google-verizon-deal-the-e_b_671617.html">Google-Verizon Deal</a>&#8220;, as everyone seems to be calling it, is not a deal at all, but rather a <a href="http://googlepublicpolicy.blogspot.com/2010/08/joint-policy-proposal-for-open-internet.html">proposal</a> whose intended audience is primarily the government and perhaps other corporate stakeholders in the internet service provider regulation.&nbsp; The reactions to the proposal have been overwhelmingly negative, and while I understand why, I thought this might be a good time to engage in discussion about the current understanding of where we are, and where the proposal would take us.</p>
<h3>A Working Definition of &#8220;Net Neutrality&#8221;</h3>
<p>It is important to outline exactly where we stand on net neutrality.&nbsp; First, a working definition: net neutrality is intended to ensure that internet service providers do not prioritize (or throttle) traffic based on the owner of the traffic or the specific application of that traffic.&nbsp; In general, this is intended to allow actions like optimizing VoIP traffic to minimize latency (so your internet calls don&#8217;t have a high delay because someone next door is torrenting the latest Ubuntu ISO).&nbsp; On the other hand, it is intended to prevent the prioritization of one VoIP service (or client) over another: Vonage, TMobile @ Home and Skype should all receive the same priority because they are all VoIP applications.&nbsp;</p>
<p>As a good friend of mine said when we discussed it: if you own a website, net neutrality dictates that you shouldn&#8217;t be able to go to your customers&#8217; ISPs and buy better access to them.</p>
<h3>Do We Even Have Net Neutrality?</h3>
<p>Many people believe neutrality is a good idea, including Google.&nbsp; But there seems to be a misunderstanding on where we currently stand with respect to net neutrality.&nbsp; Much of the coverage seems to indicate that we somehow already have network neutrality.&nbsp; We don&#8217;t.&nbsp; We never have.&nbsp; It is well known that various ISPs reduce bandwidth to particular sites like YouTube because of disproportionate traffic consumption coming from those sites.&nbsp; Bittorrent has been a whipping boy as well; Comcast actually <a href="http://www.nytimes.com/2010/04/07/technology/07net.html">won in court</a> after throttling consumers&#8217; bandwidth if they used Bittorrent.&nbsp; So, this concept that seems to floating around that we all live in a net neutral world is false.&nbsp; NPR&#8217;s coverage of the &#8220;deal&#8221;, as they insist on calling it, is but one example of this misunderstanding:</p>
<blockquote><p>In a move that could change the landscape of the Internet, Google and  Verizon are reportedly close to a deal that would allow Internet service  providers to prioritize traffic from certain websites.</p>
</blockquote>
<p>Not only does the article call it a &#8220;deal&#8221; (it is not at all clear that there is any deal) but the phrase &#8220;that would allow Internet service  providers to prioritize traffic from certain websites&#8221; makes it sound like they currently can&#8217;t.&nbsp; But NPR is not the only reputable news source to get it wrong.&nbsp; In the article from the New York Times covering Comcast&#8217;s win in court, they said:</p>
<blockquote><p>A federal appeals court ruled on Tuesday that regulators had limited  power over Web traffic under current law. The decision will allow  Internet service companies to block or slow specific sites and charge  video sites like <a title="More news about YouTube." href="http://topics.nytimes.com/top/news/business/companies/youtube/index.html?inline=nyt-org">YouTube</a> to deliver their content faster to users.</p>
</blockquote>
<p>Note the phrasing: &#8220;The decision will allow  Internet service companies to block or slow specific sites&#8221;.&nbsp; Embedded in that phrasing is the notion that prior to this decision, companies could not do this.&nbsp; But, there wouldn&#8217;t have ever been a court case if that were true.&nbsp; The reason Comcast was brought to court was because they engaged in this activity.&nbsp; The court essentially clarified the current situation on net neutrality: there isn&#8217;t any.</p>
<p>I don&#8217;t know how to make this any clearer, so I&#8217;ll just say it: we do not currently live in a world in which net neutrality is a reality.&nbsp; Net neutrality is an <em>idea</em> that a lot of people agree with (like world peace), but it isn&#8217;t real, either in the wired networks that run to our homes and businesses or the wireless networks that we use on our phones.&nbsp; The only news coverage I&#8217;ve been able to find that actually acknowledges this reality is the <a href="http://torrentfreak.com/verizon-and-att-ban-bittorrent-on-wireless-networks-100813/">article</a> on TorrentFreak discussing this exact issue:</p>
<blockquote><p>Seriously, we don&rsquo;t understand where all the hatred towards Google comes  from. The proposal is not going to destroy Net Neutrality, simply  because Net Neutrality doesn&rsquo;t exist yet.</p>
</blockquote>
<p>My sentiments exactly.</p>
<p>But, that doesn&#8217;t stop the vitriol from spewing forth from publications like <a href="http://www.eweek.com/c/a/Mobile-and-Wireless/Google-Verizon-Net-Neutrality-Proposal-10-Things-That-Should-Scare-You-358966/">eWeek</a>, <a href="http://www.huffingtonpost.com/josh-silver/google-verizon-deal-the-e_b_671617.html">The Huffington Post</a>, <a href="http://lastwatchdog.com/google-verizon-call-congressional-ban-net-neutrality/">The Last Watchdog</a>, and even the very respectable <a href="http://arstechnica.com/telecom/news/2010/08/google-net-neutrality-flip-flop-in-spirit-of-compromise.ars">Ars Technica</a>, who dubbed the proposal a &#8220;flip-flop&#8221;.</p>
<h3>A Step Towards a Common Understanding</h3>
<h4>The ISPs&#8217; Position</h4>
<p>So, it is in this context that we come to the Google-Verizon proposal.&nbsp; After a decade of stagnation on the net neutrality front (or even a regression, if you count Comcast&#8217;s win) both ISPs and websites want some certainty in a highly uncertain landscape.&nbsp; On one hand, many internet service providers also engage in other businesses, and may wish to provide &#8220;private&#8221; services alongside the broadband internet service.&nbsp; This usually includes legacy information dissemination mechanisms, most notably television service, but also other services like VoIP.</p>
<p>Let&#8217;s take an example using VoIP, which would be a bundled service in a package like AT&amp;T&#8217;s UVerse.&nbsp; Back in the old days when VoIP was newer, I remember having trouble with Vonage; if I were downloading a large file (let&#8217;s say I was executing a large apt-get install command and my Linux computer) and my friend called, I would answer the phone and they would immediately complain: &#8220;Hey, Rick, I can&#8217;t hear you.&nbsp; What&#8217;s going on?&#8221;&nbsp; This was a real problem, and while it&#8217;s gotten better (as bandwidth has increased), there is an idea that providers should be able to identify latency-sensitive types of traffic and prioritize them accordingly.&nbsp; Hopefully that is something we can agree on, because it has nothing to do with net neutrality, because it isn&#8217;t about service providers buying better access to customers.</p>
<p>Here&#8217;s where it gets interesting.&nbsp; If you do decide to buy AT&amp;T UVerse, should AT&amp;T be able to bundle in phone service and make guarantees that the phone service won&#8217;t have choppy audio, even when you saturate your entire bandwidth with a torrent you&#8217;re downloading?&nbsp; What about TV?&nbsp; Should AT&amp;T be able to guarantee that your TV channels still come in clearly and without horrendous compression artififacts even if someone in your home is watch Netflix for Hulu or downloading Bioshock off of Steam?&nbsp; As I read the Google-Verizon proposal, this is what they mean when they talk about service providers being able to provide &#8220;differentiated services&#8221;.&nbsp; Everyone should be asking &#8220;Differentiated from what, exactly?&#8221;&nbsp; I think the answer is differentiated from &#8220;normal&#8221; or &#8220;public&#8221; internet.&nbsp; The internet you&#8217;re using to read this post.</p>
<p>But let&#8217;s explore what happens if we don&#8217;t let providers do this.&nbsp; Consider the same example.&nbsp; Currently, cable providers already carve out a chunk of the data coming over the wire for channel information, but no one really cares, because it operates independently of the piece carved out for the &#8220;public&#8221; internet.&nbsp; The provider is sending prioritized data, but since people don&#8217;t think of it as being on their internet connection, they don&#8217;t seem to mind.&nbsp; Now consider the case in which cable providers wanted to switch to an IP-based distribution mechanism, opening up the rest of that coax cable for internet use, but prioritizing their own video streams so that if someone was watching TV, they would be guaranteed a good picture.&nbsp; Even though this scenario would be a win for all players, it would violate net neutrality in its purest form.&nbsp; Enforcing pure net neutrality in that case would hinder progress.&nbsp; So, Google and Verizon introduced the concept of these &#8220;differentiated services&#8221; that I imagine would include things like VoIP and TV service.</p>
<p>But that&#8217;s not the whole story.</p>
<h4>The Web Sites&#8217; Position</h4>
<p>On the other side of the debate is the web sites that are engaging in significant research and development to introduce new, competitive offerings that challenge traditional business models.&nbsp; Netflix, Youtube and Hulu come to mind.&nbsp; These websites have to deliver their services over a wire that is owned by the very companies they are competing with.&nbsp; In the absence of network neutrality, that poses a very risky proposition.&nbsp; Since businesses like these have enormous up-front investments, there is a big risk that as soon as they make those investments and become relevant, their competitors like Verizon, Comcast and other digital media providers will drop the hammer on them.&nbsp; So, in the interest of maintaining innovation on the web, it is vital that these companies have some kind of assurance that their competitors won&#8217;t unfairly deprive them of their right to compete on the basis of their products&#8217; and services&#8217; merit.&nbsp; That assurance is network neutrality.&nbsp; The need for some kind of regulation in this regard is quite clear.&nbsp; But why?</p>
<p>The one remaining piece of the puzzle lies in the fact that like so many utilities (water, power, telephone), wired internet providers have a virtual monopoly.&nbsp; The right way to handle all this would normally be through the free market; if an ISP ruined your experience watching Hulu so they could push you their own video streams, you would simply switch to another that didn&#8217;t do that.&nbsp; But that&#8217;s not possible, since providers have a stranglehold on the geographic location in which you live.&nbsp; Unless you&#8217;re willing to pick up and move so you can get better internet access, the lack of competition is a real problem.&nbsp; That&#8217;s the motivation for government regulation.</p>
<h3>Wrapup</h3>
<p>So where does that leave us?</p>
<p>Well, given that we don&#8217;t have net neutrality in either wired or wireless forms yet, and given that we all agree that it would be a good thing to have, I have to say that while I&#8217;m a bit disappointed by portions of the current proposals (both those coming from the FCC and those drafted by Google-Verizon), after years of making no progress, it is good to finally get some movement on this.&nbsp; Getting formal, public agreement that public internet should operate in a neutral way is a big step: a step we haven&#8217;t seen before.</p>
<p>I think it is clear that we will need wireless net neutrality as well, although I agree that we&#8217;re still figuring out exactly what wireless networks will look like.&nbsp; The market is still changing very fast in the wireless space, with very distruptive changes (like flat rate, capped or metered data plans) still being figured out.&nbsp; As phones become more like mini-laptops and laptops replace laptops, the importance of wireless is undisputed.&nbsp; How exactly to manage the complexity of a such a dynamic market is another question which Google and Verizon have rightfully (in my humble opinion) decided to postpone resolution of.</p>
]]></content:encoded>
			<wfw:commentRss>http://etherplex.org/archives/189/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Importance of Decentralized Services</title>
		<link>http://etherplex.org/archives/156</link>
		<comments>http://etherplex.org/archives/156#comments</comments>
		<pubDate>Sun, 20 Jun 2010 17:20:01 +0000</pubDate>
		<dc:creator>Rick</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://etherplex.org/archives/156</guid>
		<description><![CDATA[The majority of this post was written before all the Facebook privacy concerns of May 2010 occurred, but those events make the whole issue much more relevant.I commented on a story about a user who loved AIM shortly after Buzz was launched, and, as I have in the past, I got reactions of confusion from [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>The majority of this post was written before all the Facebook privacy concerns of May 2010 occurred, but those events make the whole issue much more relevant.I <a href="http://www.google.com/buzz/rpdillon/QF3At1wi2NN/Centralized-messageing-a-la-AIM-ICQ-or-Facebook" target="_blank">commented on a story</a> about a user who loved AIM shortly after Buzz was launched, and, as I have in the past, I got reactions of confusion from some of my followers.</p>
</div>
<div>So I wanted to take a moment and outline some of the principles that guided the design of the internet, and identify some recent trends that violate those principles.</div>
<h3>Computers and Connections Are Unreliable</h3>
<div>When it was first designed, the internet was not a commercial enterprise.  It was designed around the concept that many computers all over the country/world that could talk to one another.  Because the computers are spread out geographically, in order to allow them to talk, they had to be connected by wires.  This led to a situation where wires were strung out across vast distances, and an obvious concern arose that the wires could be cut or otherwise damaged.  Another concern was that sometimes computers crashed, making them unavailable.  This was particularly damaging in the case where computers would send messages to each other through other computers.  For example, if a computer in New York wanted to send a message to a computer in San Diego, it might first hand the message to a computer in Chicago, and that computer would then hand the message to the destination in San Diego.  But what if the computer in Chicago lost power?  That would be a situation very much like a wire getting cut.</div>
<div>So, there was a realization that the network was vulnerable to attack and/or failure.  This led to an attitude being adopted that we couldn&#8217;t really count on any particular machine being reachable at any given time.  But, the designers still thought they could make use of the network to accomplish useful things, even with the uncertainty about how the computers were connected.  To do this, they designed the services on the web to be <em>federated</em>.</div>
<h3>Solution: Federated Services</h3>
<div>A federated service is designed the same way as states are under a federal government.  The United States are a collection of states, but they are joined together as a federation by a federal government.  If California has a budget crisis, the damage is somewhat contained to California; North Dakota can still have a budget surplus and a healthy economy (maybe).  So, the idea was to make services on the internet like that: if one service provider failed, the other service providers would be mostly unaffected.</div>
<div>The most successful example of a federated service is email.  Many different companies, organizations and individuals run mail servers, and those servers form a federation with each other to route mail through the entire system.  Yahoo might lose connectivity to the federation one day, and Yahoo&#8217;s users won&#8217;t be able to send mail anymore, but everyone else, like my mail server on <a href="http://etherplex.org" target="_blank">http://etherplex.org</a>, will still work.</div>
<div>So, federated services avoid having a single point of failure.  That means that in order to shut down email worldwide, there&#8217;s no single place that you could destroy; instead, you&#8217;d have to destroy thousands of places to make a real dent in the global email system.  There are lots of internet services that implement this model, and almost all of them were designed in the early days of the internet.  Internet Relay Chat (IRC), Usenet (newsgroups), email, and HTTP (web browsing!) are all federated, in that the crash of one computer in the network won&#8217;t prevent all the users of the service from accessing it.  This is good!  Imagine an internet where a crash on Microsoft&#8217;s web site would prevent users from accessing Amazon&#8217;s web site.  Because they are independent sites, this doesn&#8217;t happen.</div>
<div>How do you design a federated service?  Well, you get everyone to agree on how the servers should talk to one another.  This is called a specification.  Then, programmers can take the specification and program a computer to do what the specification says.  When they connect that computer to the network, it can now be part of the federation.  So, the specification for the service is openly available.  Because anyone can implement it, another property of federated services is that software that allows a computer to join the federation is often open source, giving even people with limited technical knowledge and resources the ability to join the federation.  There are open source web servers, IRC servers, newsgroup servers and email servers.</div>
<h3>The Trend Away From Federation</h3>
<div>The idea of federation gained favor before the internet was commercial.  In recent years, the commercialization of the internet has fueled an interest in create reliable servers with reliable connections.  This allows companies that want to make money to create services that no one else has by putting their offerings on reliable servers and not sharing the specification for them with anyone.  Lots of services follow this model: Google (in its search business), Twitter, MySpace, Facebook, Yahoo, AOL instant messenger, Skype, Ventrilo, TeamSpeak, and Apple&#8217;s MobileMe are all examples.  Another reason centralization is so attractive to companies is that it allows them to <a href="http://www.readwriteweb.com/archives/facebook_data_mining_truth_in_association.php" target="_blank">compile information about their users</a>, which provides credible backing for the internet&#8217;s biggest money-maker: advertising.  The theory goes that if you know your users well, then you can advertise to them more effectively.</div>
<div>But it&#8217;s not just that new services tend not be federated.  Companies have also found a way to &#8220;unfederate&#8221; the old services, like web sites and email.  Huge email providers, like Hotmail, Yahoo Mail and GMail have so many users that the loss of any one of those services really would cripple the email infrastructure.  Running a web server is fairly easy, but many online startups need to grow their business quickly, and buying computers and hiring an administrator to run hundreds of web servers is harder.  So, Amazon makes their &#8220;cloud&#8221; of computers available for rent.  As online startups need more computers, they just rent compute power from Amazon, which is cheaper and easier than trying to manage their own servers.  The problem with this is that when Amazon&#8217;s <a href="http://techcrunch.com/2008/02/15/amazon-web-services-goes-down-takes-many-startup-sites-with-it/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+Techcrunch+%28TechCrunch%29" target="_blank">collection of computers goes offline</a>, all those companies that relied on them go offline as well.  So, what was once federated is now centralized.</div>
<h3>What We&#8217;ve Lost, And How We Can Get It Back</h3>
<div>What&#8217;s the problem with centralization?  Well, it leads to systems that are prone to failure in way federated systems are not.  It makes users dependent on a single company for a service they might have come to depend on.  It allows one entity to collect information in one place about users.  Because centralized services don&#8217;t have to play nicely with the rest of the internet, it makes it possible for users to put data into that service, but not be able to get that data back out.  What does it mean to get your data &#8220;out&#8221; of a service?  With email, it means being able to download it to your computer.  With Twitter, it means downloading an archive of all your posts.  With Facebook, you should be able to get an archive with all your notes, wall posts, photos and chat history.  With Google Docs, it means I should be able to download, in bulk, my documents in a format that can be edited on my own computer.  With a contact list, you should be able to export your contacts to vCard or CSV format.  Some services offer this kind of data extraction, but many do not.  That means that users will spend time uploading and organizing their data with a service, but if they want to take that data elsewhere, they have to start over.  This gives the company a sort of &#8220;lock-in&#8221; competitive advantage, but is bad for users, since it makes it hard to choose the best service since they&#8217;ll tend to stick with the service they are already using because the switching cost is so high.</div>
<h3>The Three Critical Questions</h3>
<div>So, when you choose to use various services on the web, it is important to evaluate them in terms of both what it costs to join them, and what it would cost to switch away from them.  To crystallize your thinking, it is useful to have some questions already outlined that help you determine whether a service is at risk of locking you in.</div>
<div>
<ol>
<li><strong>Does this service operate with other services of its type?</strong><br />
If it is a messaging service, social network or chat service, does it allow you to chat with other providers?  If not, then be aware that you&#8217;ll have to choose your service based on where your friends are.  This is bad for the consumer, but good for the business: it leads to an avalanche effect in which one service tends to definitively &#8220;win&#8221;, at least for a while.  See &#8220;Facebook&#8221;.  Compare the situation with social networks with that of email providers.</li>
<li><strong>Can I only access the service in a web browser, or does it provide a way for other programs to interact with it?</strong><br />
This is related to the notion that the service provides a way for programmers to access its functionality (this is known to programmers as an &#8220;API&#8221;, or application programming interface.  It is a form of openness, but by no means guarantees federation: Twitter, for example, has an API, but is not federated.  Still, it&#8217;s nice to be able to update Twitter with the tool of your choice, whether it be the browser, a desktop client, or on your mobile.</li>
<li><strong>If I need (or want) to leave this service, can I get my data out of it?</strong><br />
If it is a service whose value lies in storing your data, how easy is it to get you data out of it, into a standard format that you could import into a new service or program?  For email, usually you can extract your data over POP or IMAP and store it however you like.  For social networks, this topic is still largely unexplored.  For photos, there are services, like Picasa, that allow entire albums to be downloaded at full resolution.  Other services, like Facebook, permanently degrade the quality of the photos uploaded, and provide no mechanism to even get those back to your computer.</li>
</ol>
</div>
<div>AIM supports instant messaging, but so does <a href="http://www.jabber.org/" target="_blank">Jabber</a> (which is what powers GTalk), and Jabber can interact with many chat providers.  A federated version of Twitter exists called <a href="http://identi.ca" target="_blank">identi.ca</a>, which supports <a href="http://openmicroblogging.org/" target="_blank">OpenMicroBlogging</a>, a standard specification for Twitter-like services (that Twitter itself doesn&#8217;t implement!)  One of the reasons I support Google more often than its competitors is that they stand out as a company that supports federated services more than any other major internet player.  From <a href="https://wave.google.com/wave/" target="_blank">Google Wave</a> to <a href="http://code.google.com/p/webfinger/" target="_blank">WebFinger</a>, Google integrates federated services into their architecture whenever possible.  When they deployed a competitor to AIM and ICQ, it was Jabber-based.  When they deployed a successor to email, it was open and federated.  It&#8217;s good to be on the look-out for companies that understand the network and understand that the health of the internet fundamentally relies on federated services.</div>
]]></content:encoded>
			<wfw:commentRss>http://etherplex.org/archives/156/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on Apple’s Hypocricy</title>
		<link>http://etherplex.org/archives/155</link>
		<comments>http://etherplex.org/archives/155#comments</comments>
		<pubDate>Fri, 04 Jun 2010 14:48:02 +0000</pubDate>
		<dc:creator>Rick</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://etherplex.org/archives/155</guid>
		<description><![CDATA[This one is going to be as short as I can make it, and to the point.  Apple is getting more and more ridiculous in their anti-Flash arguments.  Anyone who knows me knows I hate Flash (because it breaks the web&#8230;especially keyboard-based control of my browser), but it should be my choice whether to use [...]]]></description>
			<content:encoded><![CDATA[<div class='posterous_autopost'>This one is going to be as short as I can make it, and to the point.  Apple is getting more and more ridiculous in their anti-Flash arguments.  Anyone who knows me knows I <i>hate</i> Flash (because it breaks the web&#8230;especially keyboard-based control of my browser), but it should be <i>my</i> choice whether to use it, not Apple&#39;s.
<p />
<div>So, I brought this up a few weeks ago when Steve Jobs posted his <a href="http://www.apple.com/hotnews/thoughts-on-flash/">Thoughts On Flash</a>.  Taken out of context:</div>
<p />
<div><span style="font-family: arial, sans-serif; font-size: 13px; color: rgb(51, 51, 51); font-style: italic; line-height: 14px;">&quot;Adobe’s Flash products are 100% proprietary. They are only available from Adobe, and Adobe has sole authority as to their future enhancement, pricing, etc. While Adobe’s Flash products are widely available, this does not mean they are open, since they are controlled entirely by Adobe and available only from Adobe. By almost any definition, Flash is a closed system.&quot;
<p /> <span style="font-style: normal;">Everyone that reads the post will know I pulled this out of context&#8230;but his passing reference to Apple&#39;s proprietary products doesn&#39;t even begin to scratch the surface of how absurdly closed the whole iPhoneOS ecosystem is.  Apple is guilty of all that and more.</span></span></div>
<p />
<div><span style="font-family: arial, sans-serif; font-size: 13px; color: rgb(51, 51, 51); font-style: italic; line-height: 14px;"><span style="font-style: normal;">But Jobs has a plan.  And that plan is HTML5.  Apple&#39;s hypocrisy has reached new heights with the release of the <a href="http://www.apple.com/html5/">HTML5 Showcase</a>, a source for applications that don&#39;t use Adobe&#39;s proprietary add-ons to the web.  No, these apps are based on &quot;</span></span>web standards [that] are open, reliable, highly secure, and efficient. They allow web designers and developers to create advanced graphics, typography, animations, and transitions. Standards aren’t add-ons to the web. They are the web. And you can start using them today.&quot;</div>
<p />
<div>Awesome, let&#39;s get started!  Oh wait:</div>
<p />
<div style="text-align: center;"><a href='http://posterous.com/getfile/files.posterous.com/rpdillon/OS9OhspzLzbz0rudcE3FCrR9Vc84NfdkUrEHiRMNH8jLhNE6u1Am5mL9rw3y/safari.png'><img src="http://posterous.com/getfile/files.posterous.com/rpdillon/DfmpqaVTILHIhatq65mlVsPeODVdFmSDZPquxnFz2I5srd4iwaP0nFyFXtDI/safari.png.scaled.500.jpg" width="500" height="371"/></a> </div>
<p />
<div>So&#8230;let&#39;s get this straight &#8212; Apple doesn&#39;t want you to download anything from Adobe, but they&#39;ll be happy to have you install a new browser.  At least Flash is available on my Ubuntu laptop that I&#39;m typing this on.</div>
<p />
<div>All this is to say: it seems as though Apple is becoming less and less reasonable in its positions as it gains market share.  I recently ditched my Macbook for a Ubuntu-powered Dell Latitude 13n (which I&#39;m typing this on).  I have to say, I haven&#39;t been disappointed.  I&#39;ll be replacing my Mac desktop as well if Apple can&#39;t convince me that this is all some sort of fever-dream aberration on their part.</div>
<p style="font-size: 10px;">  <a href="http://rpdillon.posterous.com/thoughts-on-apples-hypocricy">via Rick&#8217;s Posterous</a>   </p>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://etherplex.org/archives/155/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Re-thinking the Tabs Model in Modern Browsers</title>
		<link>http://etherplex.org/archives/124</link>
		<comments>http://etherplex.org/archives/124#comments</comments>
		<pubDate>Mon, 20 Jul 2009 07:10:15 +0000</pubDate>
		<dc:creator>Rick</dc:creator>
				<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://etherplex.org/archives/124</guid>
		<description><![CDATA[TL;DR version: Modern browsers need to learn a lesson from Emacs and keyboard launchers and provide an interface for tab-switching that is keyboard search-as-you-type based.  Firefox is the best browser to implement this on, since it is very extensible. The Extensibility of Firefox Mozilla recently hosted a Summer Design Challenge for 2009 that focused on [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wiktionary.org/wiki/TLDR">TL;DR</a> version: Modern browsers need to learn a lesson from Emacs and keyboard launchers and provide an interface for tab-switching that is keyboard search-as-you-type based.  Firefox is the best browser to implement this on, since it is very extensible.</p>
<h4>The Extensibility of Firefox</h4>
<p>Mozilla recently hosted a <a href="http://design-challenge.mozilla.com/summer09/">Summer Design Challenge</a> for 2009 that focused on &#8220;Reinventing Tabs in the Browser&#8221;.  Firefox is a fabulous platform to host such a challenge on, as it is the most extensible of all the browsers currently available.  Let me digress into why I say this quickly before I get into my main point (which is about tabs!)</p>
<p>Mozilla itself has gone to great length to expose the browser internals by making the browser open source, which allowed for <em>modification.</em> Next, they provided a framework for developers to write add-ons for Firefox, which provided a robust architecture for <em>extension. </em>The primary distinction between modification and extension is that two modifications to a piece of software may well be mutually exclusive, while two extensions are designed to work side-by-side.  These two aspects of Firefox&#8217;s feature set have been well known since its release, and the add-on (extension) community has been <a href="http://addons.mozilla.com">very active</a> since Firefox&#8217;s release.</p>
<p>But, in recent months, Mozilla has released two extensions that make the process of extension itself even easier.  One is called <a href="http://labs.mozilla.com/projects/ubiquity/">Ubiquity</a>, which provides a command-based interface to the browser and web, and allows for it to be extended by writing Javascript in its configuration interface (in a browser window with the address &#8220;about:ubiquity&#8221;).  This type of extension caught on quickly with fans of command-based systems like <a href="http://www.launchy.net/">Launchy</a> and <a href="http://docs.blacktree.com/quicksilver/what_is_quicksilver">QuickSilver</a>, (and later, Google&#8217;s <a href="http://code.google.com/p/qsb-mac/">Quick Search Box</a>, authored by the developer responsible for Quicksilver, also only available for Mac) but was otherwise relegated to a niche of the Firefox user base.  One of its primary features was the novel mechanism by which Ubiquity could be modified: simply visiting its configuration interface (inside the browser itself), and typing into a text box.  That was it.  No saving, reloading or compiling.  As soon as the code was typed, it was &#8220;live&#8221;, and immediately available within the Ubiquity launcher.  The distinction between &#8220;development&#8221; and &#8220;use&#8221; was almost non-existent.</p>
<p>This feature was so compelling that it deserved its own extension, independent of the concept of a command-based launcher embedded inside Firefox.  Whereas Ubiquity provided an API centered around the user interface of Ubiquity, it offered little to modify aspects of Firefox outside of the Ubiquity interface.  To fill this more general need, <a href="https://jetpack.mozillalabs.com/">JetPack</a> was born, also from <a href="http://labs.mozilla.com/">Mozilla Labs</a>.  JetPack had all the quick-development goodness of Ubiquity, but without the extra baggage of a command-based interface.  JetPack was designed to allow extensions for Firefox to be written quickly and simply, and distributed on the web with equal ease.  Though still young (JetPack has only been released for a couple of months), it provides a polished interface for development.  Its internal browser-based editor for coding is based on Mozilla&#8217;s own <a href="https://bespin.mozilla.com/">Bespin</a>, and provides all the immediacy of Ubiquity development with extra goodies like line numbering and syntax highlighting thrown in.</p>
<p>So, hopefully at this point you understand why I assert that Firefox is the world&#8217;s most customizable browser.  My concluding thought on this topic is that this is all part of Mozilla&#8217;s effort to work towards a browser that is designed to be restarted only rarely, is extensible while it runs using a built-in interface, and allows users to change their working environment as easily as developers, because no special tools are required.  This vision is not entirely new; if you are familiar with Lisp-based environments, the <a href="http://en.wikipedia.org/wiki/REPL">REPL</a>, or <a href="http://en.wikipedia.org/wiki/Gnu_emacs">GNU Emacs</a>, all this will sound very familiar.  So, it would seem Mozilla is learning well from successful projects in the past.</p>
<h4>Why Tabs?  Why Not &#8220;Buffers&#8221;?</h4>
<p>Which brings me to my main point (sorry it took so long!)  As Mozilla hosted the design challenge to reinvent tabs in the browser, many teams with a wide variety of approaches sought to provide <a href="http://arstechnica.com/open-source/news/2009/07/mozilla-design-challenge-showcases-new-browser-tab-concepts.ars">meaningful improvements</a> to the existing interface.  Every team did research with users by watching users use Firefox, and/or interviewing users about their browsing techniques.  Every team noticed one glaring deficiency in the existing tab interface: it doesn&#8217;t scale.  Any user of Firefox that has tried to manage 50 tabs has had trouble.  Even the interface has trouble: it tries to show many of them, and finally gives up, reverting to a scrolling tab bar.  So, when asked to improve the existing interface, every team tried to improve the tab interface&#8217;s scalability.</p>
<p>What I found so surprising as I reviewed the entries was that, in a community that has learned so much from Lisp and Emacs, most entries completely ignored the notion that a keyboard-based navigation system scales much better than a mouse-based system.  The trade-off, of course, is learning curve and prior knowledge.  We can attribute the meteoric rise in keyboard launchers across all operating systems to &#8220;<a href="http://www.pickbrains.com/articles/solutions-to-window-start-menu-clutter">Start Menu Clutter</a>&#8221; &#8211; the simple problem that, when you install a few hundred programs, each wanting its own start menu item, quick launcher, and desktop shortcut, you rapidly drown in a mosaic of brightly colored icons, all alike.  But, if you know what you want (&#8220;Firefox&#8221;, &#8220;Word&#8221;, &#8220;Emacs&#8221;, or &#8220;iTunes&#8221;), you can use a keyboard launcher, type a few letters, and avoid the clutter entirely.  Such systems prohibit &#8220;browsing&#8221; of available programs, but for most users most of the time, the desired program is known in advance, rather than discovered by searching the start menu.</p>
<p>One entry provided effective keyboard navigation (it was called &#8220;<a href="http://www.youtube.com/watch?v=XxTZedCjnoE&amp;feature=player_embedded">Collapsible Tab Groups</a>&#8220;) and it provided good scalability.  In particular, it provided two pieces of functionality that should be present in more software today, one of which comes straight from Emacs.</p>
<p>First, (this is the non-Emacs feature), it puts the UI elements on the side of the screen, rather that the top or bottom.  Why is this so good?  Most screens are widescreen.  Heck, even the 1600&#215;1200 screens are wider than they are tall, but even those are going out of style to favor wider aspects (I&#8217;m typing this on a 1680&#215;1050 display).  So, given the fact that displays are wide, but most material we read is tall (think word documents, most PDFs, and almost every web site), do developers insist on sticking every interface bar on the top or bottom of the screen, further constraining the already-limited vertical dimension?  Well, collapsible tabs groups gets it right, and puts the tabs on the side.</p>
<p>Second (this is the Emacs feature), it provides &#8220;search as you type&#8221; for navigation.  What does this mean?  It&#8217;s the kind of behavior you get in desktop keyboard launchers.  If you type &#8220;irefox&#8221; or even &#8220;ire&#8221; into Launchy or QuickSilver, you will get &#8220;Firefox&#8221; as the launch option because that substring matches the &#8220;ire&#8221; in &#8220;firefox&#8221;.  This is the feature Emacs uses to manage buffers with <a href="http://www.emacswiki.org/emacs/InteractivelyDoThings">ido-mode</a>.  You open the interface to change buffers (files, roughly) in Emacs and it presents you with a small interface that lists just a couple of the (possibly tens or hundreds of) buffers you can switch to.  As you start typing, each character is added to the search criteria as you type, and the list is refined to reflect the relevant buffers.</p>
<p>This approach works perfectly in a browser.  The problem with Mozilla&#8217;s challenge is that they asked people to reinvent tabs; the realization is that we don&#8217;t need tabs.  &#8220;Tabs&#8221; implies a user interface, which should be customizable.  What we really want is a model for navigation, and a set of pluggable user interface elements that attach to that model.  One user interface might be tabs (for users that keep 4 or 5 websites open at a time), but another could be a search-as-you-type mode that doesn&#8217;t use any screen real-estate when it is not in use.  There has been a widespread conflation of view (the tab interface) and model (the idea that we have multiple web sites open) in every browser.</p>
<p>The obvious answer is that I should get in gear and write a keyboard-based tab switching interface using JetPack (Ubiquity has one, but it is painfully slow to use for a variety of reasons).  I don&#8217;t know&#8230;maybe I just convinced myself that I should.</p>
]]></content:encoded>
			<wfw:commentRss>http://etherplex.org/archives/124/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beauty in Programming: Part I</title>
		<link>http://etherplex.org/archives/84</link>
		<comments>http://etherplex.org/archives/84#comments</comments>
		<pubDate>Thu, 05 Feb 2009 06:59:28 +0000</pubDate>
		<dc:creator>Rick</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://etherplex.org/?p=84</guid>
		<description><![CDATA[Introduction When I program, I sometimes am fortunate enough to see beauty emerge from what I do. I love programming because of this, but, enthusiastic as I am about it, I find that it is very hard to convey the essence of what I see to others, which often means that they cannot understand what [...]]]></description>
			<content:encoded><![CDATA[<h4>Introduction</h4>
<p>When I program, I sometimes am fortunate enough to see beauty emerge from what I do. I love programming because of this, but, enthusiastic as I am about it, I find that it is very hard to convey the essence of what I see to others, which often means that they cannot understand what I am so enthusiastic about!</p>
<p>So, I would like to discuss one of my favorite idioms in programming, but before I do so, I would like to discuss something you might be familiar with: organizing information. In the context of information organization, I think my example makes sense, and the beauty arises, and I don&#8217;t have to discuss programming at all. This is ideal, because the beauty in programming has nothing to do with programming at all: it has to do with patterns of thought. But I&#8217;ve already delayed too long; off we go!</p>
<h4>Organizing Information: Hierarchies</h4>
<p>In our struggle to store and retrieve information, we have developed systems to help us organize it all. Probably the most prevalent idea in these systems is the notion of a hierarchy. We see this everywhere, from filing cabinets, to file systems on a computer, to organization of library books, to notes taken in an outline form, to the system for classifying life on Earth, and even in this very essay. The idea is simple: establish a set of top-level categories. Each of these can contain either more categories, or items. Thus, any given item has a <em>location</em> in the hierarchy that is defined by all of its parent categories.</p>
<p>This idea of classifying information in a hierarchy is so pervasive that it comes completely naturally to our way of thinking. It has three main strengths:</p>
<ol>
<li> It allows us to locate information using a broad idea, and narrowing that idea until we finally locate the information we seek</li>
<li> It allows us to easily add new information in the structure, because we have a pretty good idea of where things should go</li>
<li> It allows us to reorganize the ideas, because we can take sub-categories and change their parents as necessary</li>
</ol>
<p>But it has one major weakness: if a piece of information has multiple facets, it can really only exist in one place in the hierarchy, so users of the system are forced to choose. There is a rich history of developing add-on aspects to hierarchical systems to fix this weakness. In computer file systems used by Linux, Solaris, BSD or Apple&#8217;s OS X, for example, a user can establish <em>links</em> in the file hierarchy to allow a file to exist in multiple locations at once. This would be a bit like putting a yellow sticky note in a filing cabinet in the &#8220;Hobbies&#8221; section that says &#8220;Go look at the Automobiles section for info on my hobby sports car.&#8221; This works fairly well, but an unsuspecting user might remove the file on the sports car after it got totaled, only to find that little sticky later. Meanwhile, if your brother looked under &#8220;Hobbies&#8221; to find info on the sports car, he&#8217;d be confused when he couldn&#8217;t find it where the note indicated. So, it makes maintenance of the system a bit harder, and can confuse users.</p>
<h4>Organizing Information: Tags</h4>
<p>Nevertheless, hierarchical systems have such great advantages that they are still the most prevalent approach to solving the problem of information organization. Recently, however, another notion has come along: tagging. Tagging is a simple system: each item of data can be assigned a <em>tag</em>, or keyword, that describes some broader category to which it belongs. Each item can have an unlimited number of tags. Going back to our example, the information on the sports car could be tagged &#8220;Automobile&#8221; and &#8220;Hobby&#8221;.</p>
<p>This mechanism for organizing information is used in several well-known environments: Google uses it in their bookmarks implementation, Facebook uses it to organize photos and notes, Flickr uses it for photo organization, and many news sites (like <a class="externalLink" title="External link to http://digg.com" href="http://digg.com/" target="_blank">Digg</a> and <a class="externalLink" title="External link to http://slashdot.org" href="http://slashdot.org/" target="_blank">Slashdot</a>) tag news stories. The advantages are obvious: tags allow a fragment of information to exist in multiple places in the hierarchy. But wait, where <em>is</em> the hierarchy now?</p>
<p>The first question many newcomers to tagging ask is how to really organize things. As soon as you try to establish a tag hierarchy, you start to notice the problem. Suppose you had a tag &#8220;Cars&#8221; and then another for &#8220;Sports Cars&#8221;. If you wanted to add some information about the discontinuation of the Dodge Viper into your system, what tags would you add? Both &#8220;Cars&#8221; <em>and</em> &#8220;Sports Cars&#8221;? Or maybe just &#8220;Sports Cars&#8221;, since that implies &#8220;Cars&#8221;? But then, when someone looked for all information on &#8220;Cars&#8221;, the info on the Viper wouldn&#8217;t show up, which doesn&#8217;t seem right. Then again, is this system going to require that we add every possible tag when we add information? That seems cumbersome.</p>
<p>So, in exchange for solving a problem, tagging introduces another. We can now freely associate bits of information with tags, but the tags have no hierarchy. When we look back at the strengths of a hierarchical system, we see that we can still locate information using a broad idea. If we look at all information tagged &#8220;Cars&#8221;, we can then see that many of those items are also tagged &#8220;Sports Cars&#8221;, so we develop a sort of emergent hierarchy. This concept is often referred to as a &#8220;<a class="externalLink" title="External link to http://en.wikipedia.org/wiki/Tag_cloud" href="http://en.wikipedia.org/wiki/Tag_cloud" target="_blank">tag cloud</a>&#8220;. So, at least tagging systems allow to locate information in much the same way as we could using a hierarchy, and they have the added bonus of allowing us to file data in multiple places.</p>
<p>We&#8217;ve said that hierarchical systems are good at adding data. Unfortunately, adding information to a tagged system can be difficult. For each item we want to add to the system, we have to identify all relevant tags when we insert the information. This means not only knowing all the relevant tags in the system, but also anticipating whether any new tags are needed. This could be even more work that creating the data we wanted to insert in the first place!</p>
<p>Finally, we&#8217;ve said that hierarchies are good because they allow us to reorganize information. This can also be difficult when we use tags. In addition to collecting cars, we also start collecting motorcycles. So, we&#8217;d like to introduce the notion of &#8220;Vehicles&#8221; to our system, and have it apply to all of our cars, along with the new motorcycles we&#8217;ll be adding. In a hierarchy, you&#8217;d simply create the &#8220;Vehicles&#8221; category and put &#8220;Cars&#8221; into it. With tags, we have to go back and add the tag &#8220;Vehicles&#8221; to all items tagged with &#8220;Cars&#8221;. Laborious, to say the least!</p>
<p>Are tags really that bad, or have we missed something? Do we need to build some tools to automate all the cumbersome aspects of using tags? Or is there some underlying truth here that we have failed to recognize?</p>
<h4>&#8220;Simplicity does not precede complexity, but follows it.&#8221; -Alan Perlis</h4>
<p>In many tag systems used on the internet, the problems I&#8217;ve outlined above remain. The main reason is that it is difficult to formulate elegant systems to address these problems. The primary job of a computer programmer (whether they know it or not!), is to take problems like the one I described above and try to find the underlying model that should be used. You might get an itch in the back of your mind that something is wrong with what I described: tags seems like they should work, but for some reason are difficult to use.</p>
<p>Your first instinct may be to write a program that will automate the more cumbersome aspects of using tags. For example, in the case of adding a &#8220;Vehicles&#8221; tag, you could just write a program that would grab all the items tagged &#8220;Cars&#8221; and add &#8220;Vehicles&#8221; to them. Seems simple enough, and saves work. But it isn&#8217;t beautiful. Over time, you&#8217;d write a lot of tools to help you perform tasks like that, and the system would become complex. We wanted a simple system when we started using tags, not something that would be hard to understand and use. The key question that is always on my mind is: <em>How can we retain simplicity?</em></p>
<p>In the systems we&#8217;ve been discussing, we have defined two elements. In the hierarchical system, we defined <em>categories</em> and <em>items</em>. In the tagged system, we defined <em>items</em> and <em>tags</em>. What if we tried to define the system using only one element? What if, in the tagged system, we defined tags as items, and items as tags? How would this change its utility?</p>
<p>Such a change would mean that items could be tagged (as before), but also that tags could be tagged, since they are also items. Like many subtle changes, it is hard to see how this small modification would be useful. In fact, it allows us to enjoy the best aspects of both a hierarchical and a tagged approach to organization, and it means the entire system is only composed of <em>one</em> element: a data item. What we&#8217;ve done is change how these items <em>relate</em> to one another, and that enables new patterns of thought and organization.</p>
<p>Going back to the example of the sports car that is both a &#8220;Car&#8221; and a &#8220;Hobby&#8221;, we can see that this system would support both through the normal use of tagging. But what about our example of &#8220;Cars&#8221; and &#8220;Sports Cars&#8221;? Well, in our new system, as soon as we create the data on the Dodge Viper being discontinued, we can simply tag it with &#8220;Sports Cars&#8221;. Why don&#8217;t we have to worry about tagging it &#8220;Cars&#8221; as well? Well, as soon as we create the tag &#8220;Sports Cars&#8221;, we tag it with &#8220;Cars&#8221;. So, now we have embedded the knowledge that &#8220;Sports Cars&#8221; and &#8220;Cars&#8221; are related in the tags themselves, rather than in each item using those tags.</p>
<p>Using this idiom, it is easy to see that hierarchies naturally emerge from the structure, but can be more complex than simple trees, due to the nature of tagging. Now, tags can relate themselves to multiple other tags at different points in the tag hierarchy, as can items, because items <em>are</em> tags. Likewise, if you want to provide some notes on a tag, you simply add data to it, because the tag <em>is</em> a data item. Reorganization of the hierarchy is easy &#8211; if you want to introduce the notion of &#8220;Vehicles&#8221;, simply tag &#8220;Cars&#8221; and &#8220;Motorcycles&#8221; with &#8220;Vehicles&#8221;, and you&#8217;re done. All items with those tags (or tags tagged with those tags, etc.) will now be tied to the notion of &#8220;Vehicles&#8221;.</p>
<p>This idea, though simple, may be confusing at first.  Here&#8217;s another way to think about it: instead of tagging items with tags, we tag items with other items.  So, if we&#8217;re in a filing system, we tag files with other files.  If we organize photos, we tag photos with other photos.  In reality, we have reduced our system of organization to its very simplest form by allowing ourselves only one action: we can establish connections among various members of a homogeneous collection of data.  Now, each member of that collection will ultimately have both data, and connections to other pieces of data.</p>
<p>If this sounds familiar, that&#8217;s because it is: it is the exact methodology for organizing the internet.  Web pages sometimes contain data, and they sometimes contain references to other webpages.  Most webpages have both, even in walled gardens like <a href="http://wikipedia.org">Wikipedia</a>.</p>
<h4>Conclusion</h4>
<p>By reducing the number of elements in our system, we increased its power, but retained its simplicity.  Our new system has all the benefits of the hierarchical system, as well as supporting all the benefits of tagging.</p>
<p>While I decided to write this and relate the ideas to programming, I got the idea of &#8220;data as tags&#8221; and &#8220;tags as data&#8221; from <a class="externalLink" title="External link to http://tiddlywiki.com" href="http://tiddlywiki.com/" target="_blank">TiddlyWiki</a>, which I used to compose this, as well. If you want to see the system I described in action, visit the TiddlyWiki homepage and download a copy and play with the tagging system: it is an elegant and powerful approach to managing lots of information.</p>
]]></content:encoded>
			<wfw:commentRss>http://etherplex.org/archives/84/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using TiddlyWiki</title>
		<link>http://etherplex.org/archives/79</link>
		<comments>http://etherplex.org/archives/79#comments</comments>
		<pubDate>Thu, 22 Jan 2009 08:41:50 +0000</pubDate>
		<dc:creator>Rick</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://etherplex.org/?p=79</guid>
		<description><![CDATA[Though perputually on the verge of total disorganization in the physical realm, I try to keep my digital world very organized.  Because of this, I habitually try to move more and more of my life into a digital representation, which allows easy backup, searching and reorganization.  Although I have tried many free and proprietary software [...]]]></description>
			<content:encoded><![CDATA[<p>Though perputually on the verge of total disorganization in the physical realm, I try to keep my digital world very organized.  Because of this, I habitually try to move more and more of my life into a digital representation, which allows easy backup, searching and reorganization.  Although I have tried many free and proprietary software products to act as a central hub for storing and retrieving random bits of useful information, even the very best (Emacs Org Mode) has failed to gain traction in my life on a long term basis because it is not immediately accessible to me when its underlying framework is not present (Emacs).  Of course, Org Mode files are just text, but much of the file&#8217;s appeal is lost in a pure text mode: Emacs is required to really wrangle all the data present in the text file.  I have used other tools, like DevonThink on OS X, Google Notebook, Google Calendar, iCal, various GTD systems, several Emacs-based packages, and Evernote.  All either store my data remotely, aren&#8217;t workable on Windows, OS X and GNU/Linux, or require a sizeable framework to be present whereever I want to view/alter my data.  Each of these shortcomings causes me to shy away from really &#8220;investing&#8221; in the system.</p>
<p>In the past few months, however, I have rediscovered <a href="http://www.tiddlywiki.com/">TiddlyWiki</a>, which, despite its name, is a very serious piece of software.  Though written only in Javascript and HTML (to run in a browser), it is a serious software engineering effort, and has a large community doing active development of many different variants.  The purpose of this post is to provide a look at what TiddlyWiki has to offer, so as to assist potential new users (you!) in determining if it might be useful to organize information in their lives.</p>
<h4>TiddlyWiki is a Wiki</h4>
<p>This means in is accessed in a web browser that you already have on your computer.  It works best in Firefox, but can be used in Safari, Internet Explorer, and Opera as well.  TiddlyWiki works an whatever operating sytem you have.</p>
<p>This means it has &#8220;pages&#8221;, as seen in other wikis (like Wikipedia), except instead of entire webpages, TiddlyWiki uses Tiddlers: small (or not-so-small) chunks of formatted text about a particular topic.</p>
<p>This also means it uses hypertext, so you get both internal (links between tiddlers) and external (links to other websites) linking, as well as formatted text: bold, underline, italic, monospace fonts, numbered and bulleted lists.  The linking feature is critical, because it allows you to link tiddlers to each other in the same way the internet links webpages.  You can use this mechanism to organize your data as you see fit &#8211; whether that be in a hierarchy (like the files on your computer) or in some web that more closely resembles Wikipedia.  You are in complete control.</p>
<h4>TiddlyWiki is Just a File</h4>
<p>This means it resides on your hard drive or USB stick just like any other file.  You can copy it, give it to others, post it online, or carry it around with you just like any other file.  To open it, you just double cilck on it and it will open in your browser.</p>
<h4>TiddlyWiki Supports Metadata</h4>
<p>All I mean by this is that it allows you to tag tiddlers (pages) with their topic.  If you&#8217;re a programmer, you might tag tiddlers with the language they relate to.  If you&#8217;re a journalist, you can tag a tiddler with the article it relates to, or the source it came from.  Tiddlers can have as many tags as you like.</p>
<h4>TiddlyWiki Can Search</h4>
<p>As you grow the content in your TiddlyWiki (by adding new Tiddlers), you may start to worry that while it is really easy to add information to the TiddlyWiki, retrieving it may be difficult.  Where is that darn tiddler that contained the dentist&#8217;s address and office hours?  Even if you can&#8217;t remember what you called it (was it under &#8220;Dentist&#8221; or &#8220;Medical&#8221;?) so long as you used the word &#8220;dentist&#8221; anywhere in the tiddler, you can simply type &#8220;dentist&#8221; into the global search box, and, <em>as you type</em>, TiddlyWiki will search every word you have stored in it and show you all the tiddlers that contain that keyword.  If all you can remember is that you had the words &#8220;office hours&#8221; in the tiddler, just type that and you&#8217;ll track your data down in no time.</p>
<p>You can try this on the TiddlyWiki homepage (which is itself a TiddlyWiki!).  Upon visiting the page, you have no idea if there is any information on whether TiddlyWiki works on the browser available for the Nintendo Wii.  Simply type in the keyword &#8220;wii&#8221; in the search box and you can find out if there is any information on the Wii anywhere in the TiddlyWiki.</p>
<h4>TiddlyWiki is Organized</h4>
<p>In addition to full text search of all your data, TiddlyWiki can also list all the tags you&#8217;ve ever created and allow you to view lists of all tiddlers that match those tags.  You can then open the tiddlers you want from that list, or open all tiddlers that match a given tag.  At home, I work on schoolwork for my current class (csc576 &#8211; Connection Oriented Neworks), so to bring up my notes for that class, I just go to the tag I made called &#8220;csc576&#8243; and request all tiddlers matching that tag be opened.  Similarly, at work, if I&#8217;m working on a project relating to JBoss, I can open all my notes on JBoss by selecting the tag I created called &#8220;jboss&#8221;.</p>
<p>In addition to tagging, TiddlyWiki offers a series of tiddler lists that are organized in various useful ways.  In addition to the tag list view (mentioned above), TiddlyWiki also offers a timeline of tiddler edits, allowing you to see what has been changing in your TiddlyWiki at a glance.  Can&#8217;t remember the name of the tiddler you were editting on Monday?  Just look at the timeline and it will tell you what changed that day.  In addition to the timeline, you may also find that you create tiddlers that are not referenced from anywhere else.  They may contain useful information (the VIN number on your old 1991 Toyota Corolla), but you won&#8217;t find them just by &#8220;surfing&#8221; through the TiddlyWiki.  Well, luckily, TiddlyWiki keeps track of all these &#8220;orphaned&#8221; tiddlers and can give you a list, so that you won&#8217;t lose them.  Conversely, sometimes a tiddler has a link to it, but it doesn&#8217;t yet exist.  TiddlyWiki also tracks these cases, and provides a list if needed.</p>
<h4>Conclusion</h4>
<p>Overall, I have found that TiddlyWiki has provided a sort of &#8220;sweet spot&#8221; in the field of tools to organize your data.  It is extremely easy to pick up and start working with, but has an extensive feature set that gives advanced users  a lot to work with.  It is open source and extensible, allowing sties that collect extensions for TiddlyWiki to spring up all over the web.  If you&#8217;d like to keep your own TiddlyWiki on your local machine or USB stick to carry with you, you can head over to the <a href="http://www.tiddlywiki.com/">official site</a> and download it.  If you&#8217;d prefer to keep your data online so you don&#8217;t have to carry it with you, a site called <a href="http://tiddlyspot.com/">TiddlySpot</a> specializes in providing free online TiddlyWikis (public or private!).  Just supply a site ID and password and you&#8217;re on your way.</p>
]]></content:encoded>
			<wfw:commentRss>http://etherplex.org/archives/79/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>identi.ca as an Evolution of Twitter</title>
		<link>http://etherplex.org/archives/31</link>
		<comments>http://etherplex.org/archives/31#comments</comments>
		<pubDate>Tue, 22 Jul 2008 06:58:03 +0000</pubDate>
		<dc:creator>Rick</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://etherplex.org/archives/31</guid>
		<description><![CDATA[So after it became painfully apparent that: Twitter was an attractive idea Twitter didn&#8217;t really fit with the distributed nature of the web Twitter didn&#8217;t scale all that well an obvious opportunity emerged: build a better mousetrap, err, Twitter. And that is exactly what the Laconica software does. Built by Control Yourself, and hosted on [...]]]></description>
			<content:encoded><![CDATA[<p>So after it became painfully apparent that:
<ol>
<li>Twitter was an attractive idea</li>
<li>Twitter didn&#8217;t really fit with the distributed nature of the web</li>
<li>Twitter didn&#8217;t scale all that well</li>
</ol>
<p>an obvious opportunity emerged: build a better mousetrap, err, Twitter.  And that is exactly what the <a href="http://laconi.ca/">Laconica</a> software does.  Built by <a href="http://controlyourself.ca/">Control Yourself</a>, and hosted on their site at <a href="http://identi.ca/">Identica</a>, it provides a credible alternative micro-blogging service.  But how comparable is identi.ca to Twitter?</p>
<p>Twitter has some trademark features.  First, it allows for user control of content: a user can not only post and delete posts, but can mark his or her entire feed as private, which allows for a sort of walled garden.  This makes Twitter very appealing to casual users that really don&#8217;t like the idea of the entire web reading every update.  Identi.ca, in contrast, provides no mechanism to make feeds private, and similarly has no mechanism to delete posted content.  Depending on your point of view, this can be regarded as either a bug or a feature.</p>
<p>One of the early promises of Twitter was the ability to deteremine how you received updates.  This is a new idea &#8211; Twitter allows you to decide to pull data from the service via RSS, HTTP, or the API (in a desktop client like Twhirl), or have the information pushed to you via XMPP (Jabber), or even messaged via SMS to your mobile.   This flexibility is quite novel &#8211; it decouples how data is inserted into the system from how it is retreived.  This is quite different from email, chat, or even other web services like MySpace or Facebook, in that the granularity of control is quite small &#8211; I can elect to receive notifications via SMS for updates from my family, but not from old friends from university.  Now that Twitter has all but given up on XMPP because of the scalability problems, identi.ca stands alone in its ability to integrate with chat and SMS to provide this decoupling.</p>
<p>Maybe most importantly, Twitter is itself a walled garden.  While it gains many advantages from being centralized (like fast updates) it also suffers from problems associated with centralization: poor scalability, single point of failure and data lock-in.  Identi.ca avoids these by adopting OpenID (I have an OpenID through the handy <a href="http://www.clickpass.com/home">ClickPass</a> service), leveraging the <a href="http://openmicroblogging.org/">OpenMicroBlogging</a> specification, and allowing instances of Laconi.ca to federate together to form a web of micro-blogging services.  For those of you wondering why this is desirable, it is in part because the internet is fundamentally a peer-to-peer, federated system.  Email, newsgroups and IRC are all decentralized &#8211; these are the classic services that define the web.  Recently we have started to move away from decentralized services, but the problems quickly emerge.  With AOL Instant Messenger, for example, AOL actively seeks a way to monetize the service, and can make life difficult for third party chat clients that don&#8217;t support in-client advertising.  As a result XMPP (Jabber) emerged as a viable, open, decentralized chat service, which most internet users have adopted without knowing it by using Google&#8217;s chat service integrated into GMail.  Just as the problems with Twitter&#8217;s centralization emerge, we see an open, decentralized alternative emerge, Laconi.ca.  This seems to be the natural evolution of the internet.</p>
<p>Is Identi.ca an perfect replacement for Twitter?  No &#8211; there are enough differences to attract different crowds, but the similarities are strong.  Perhaps as Laconi.ca adds features, we will see it become a more viable complete Twitter replacement. You can be sure I&#8217;ll be looking into hosting in instance of Laconi.ca at something like ublog.etherplex.org soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://etherplex.org/archives/31/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

