<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>joshua&apos;s blog</title>
      <link>http://joshua.schachter.org/</link>
      <description></description>
      <language>en</language>
      <copyright>Copyright 2013</copyright>
      <lastBuildDate>Thu, 30 Aug 2012 16:39:04 -0800</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.2</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>introducing human.io</title>
         <description><![CDATA[<p>My small startup, Tasty Labs, has recently launched <a href="http://human.io/">human.io</a>. Human.io provides a simple way to allow a publisher to turn a passive audience into a mobile army of participants. This allows publishers to easily create missions and activities to get people involved more directly than just reading stuff on a screen. If Twitter is HTML, then Human.io is CGI.</p>

<p>Human.io lends itself to small, simple tasks: Vote on an item, take a picture of a storefront, etc. It allows you to script with humans as easily as you would script with software. It also offers easy access to the sensors on the phone: GPS, camera, and so on.</p>

<p>The architecture borrows from Twilio: The developer sends UI widgets to the client, receives HTTP callbacks when their users perform actions, and then responds with more UI widgets. We can also use a long poll so you can easily run apps from behind a firewall, on your laptop, or otherwise without opening a port on the firewall.</p>

<p>We also built <a href="http://photohunt.human.io/">Photo Scavenger Hunt</a> on the platform as a fun little demo. I'm going to give away an ELPH camera to whoever's winning by tomorrow.</p>]]></description>
         <link>http://joshua.schachter.org/2012/08/introducing-humanio.html</link>
         <guid>http://joshua.schachter.org/2012/08/introducing-humanio.html</guid>
         <category>projects</category>
         <pubDate>Thu, 30 Aug 2012 16:39:04 -0800</pubDate>
      </item>
            <item>
         <title>the other way</title>
         <description><![CDATA[Well, that's one way to get a potential investor's attention. I'm either impressed or creeped out.

<img src="http://s3.amazonaws.com/jdata01/voy.png" width=644 height=378>]]></description>
         <link>http://joshua.schachter.org/2010/07/the-other-way.html</link>
         <guid>http://joshua.schachter.org/2010/07/the-other-way.html</guid>
         <category>complaining</category>
         <pubDate>Thu, 29 Jul 2010 22:45:38 -0800</pubDate>
      </item>
            <item>
         <title>seven on seven</title>
         <description><![CDATA[<p>
A few months ago, I traveled to New York City to participate in <a href="http://rhizome.org">Rhizome's</a> <a href="http://rhizome.org/sevenonseven/">Seven On Seven</a> which paired artists and technologists and challenged them to develop something new.  The New York Times <a href="http://www.nytimes.com/2010/04/19/arts/design/19rhizome.html">wrote</a> about the event.</p>


<p><a href="http://vimeo.com/12237687">Seven on Seven: Trailer</a></p>

<object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12237687&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ff0179&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=12237687&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ff0179&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed></object>


<p><a href="http://vimeo.com/12239116">Seven on Seven: Monica Narula & Joshua Schachter</a></p>

<object width="400" height="226"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12239116&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=12239116&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="226"></embed></object>


<p>
The data was gathered using the <a href="http://mturk.com">Mechanical Turk</a>. I didn't really have enough time to talk about data, so here is <a href="http://spreadsheets.google.com/pub?key=0AlfmtrCEEaMpdERDcXVnRFYtOGx0UWZFT0Z6SGpJaGc&hl=en&single=true&gid=0&output=html">actual dataset</a>.
</p>

<p>
I've posted  <a href="http://s3.amazonaws.com/jdata01/7o7t3.pdf">presentation</a> as well. </p>]]></description>
         <link>http://joshua.schachter.org/2010/06/seven_on_seven.html</link>
         <guid>http://joshua.schachter.org/2010/06/seven_on_seven.html</guid>
         <category>ideas</category>
         <pubDate>Thu, 10 Jun 2010 12:55:28 -0800</pubDate>
      </item>
            <item>
         <title>blogging tools</title>
         <description><![CDATA[<p>I haven't really written anything for this blog in a while.</p>

<p>There are a variety of reasons for this, but I'm generally pretty sensitive to my tools, and I haven't been thrilled with either what I am currently using or what I might use in the future. Do I want to use Wordpress on a virtual machine at some hosting provider? Do I want to write something custom on AppEngine? Or one of a dozen dozen other choices? It makes me want to lie down.</p>

<p>It occurs to me that the tools we have available each do a large variety of things, and that there's no good reason for these functions to be bound together into one application. For example, Maciej's recent article on <a href="http://idlewords.com/2009/09/how_to_not_get_your_blog_hacked.htm">why not to have a public of Wordpress</a> (and <a href="http://idlewords.com/2009/09/using_wordpress_to_generate_flat_files.htm">more details</a>) shows that serving the website and editing it can be very separate pieces. The original ancient Blogger software also used to push a copy up to your site via FTP.</p>

<p>There are a number of separable pieces in the system:</p>

<p><b>Authoring</b> - the actual role of editing a blog entry is usually just a big text field, but several tools use FCKEditor and other nice javascript-based editors. Google Documents could fill this role too. Current weblog APIs allow this part to be decoupled, for the most part, usually for desktop or mobile clients.</p>

<p><b>Storage</b> - a simple database would suffice. Not much metadata is required, nor is complicated indexing. Amazon S3 and Google Docs both fit the bill here.</p>

<p><b>Templating</b> - The system that turns the raw blog posts from the storage engine into the pretty HTML version. There's nothing that really fits this bill in the current systems</p>

<p><b>Hosting</b> - there's no need for the system that runs the blog authoring and storage software to serve the raw HTML pages. Amazon S3 would also suffice here, IF it dealt with directory index pages in a useful manner. (Currently, a url ending in a slash cannot map to a document on S3, so far as I know.) RSS/Atom feeds would also be served from the same system.</p>

<p><b>Feeds</b> - as standards change over time, it would be nice to be able add the appropriate functionality. Feedburner already does some of this.</p>

<p><b>Comments</b> - there are several solutions for hosting comments outside the blog applications: Disqus, Intense Debate, JSKit, and so on. I think moderation outsourcing and aggregating comment behavior will be increasingly necessary due to spam issues. Nor do I think that publishers should own comments, but that's a matter for another article.</p>

<p>I wonder if there is a way to define loose interfaces between these systems so that they could both work together but also not set APIs in concrete solid enough to stop innovation. Because the various pieces of the systems currently are all tightly bound together, it is very hard for the parts to move forward separately. For example, I've wanted to be able to specifically reply to comments in place in a visually differentiated way as the publisher, rather than just as another commenter. But this feature hasn't emerged, and if I hacked it into one platform via plugins, I'd be stuck with it forever.</p>

<p>It would also be nice if these systems could work together without all being client-side embeddable widgets. This usually slows down page loads tremendously.</p>

<p>What else have I left out?</p>]]></description>
         <link>http://joshua.schachter.org/2009/12/blogging-tools.html</link>
         <guid>http://joshua.schachter.org/2009/12/blogging-tools.html</guid>
         <category>complaining</category>
         <pubDate>Mon, 21 Dec 2009 17:13:10 -0800</pubDate>
      </item>
            <item>
         <title>on url shorteners</title>
         <description><![CDATA[<p>URL shortening services have <a href="http://en.wikipedia.org/wiki/TinyURL">been around for a number of years</a>.  Their original purpose was to prevent cumbersome URLs from getting fragmented by broken email clients that felt the need to wrap everything to an 80 column screen. <i>Addendum: They're <a href="http://www.zeldman.com/2009/08/10/shorten-this/">useful in print</a>, too.</i>  But it's 2009 now, and this problem no longer exists.  Instead it's been replaced by the SMS-oriented 140 character constraints of sites like Twitter. (Let's leave aside the fact that any phone that can run a web browser and thus follow links can also run a proper client, and doesn't have to hew to the SMS character limit.) Since TinyURL, there has been a rapid proliferation of shortening services.</p>

<p>Aside from the raw utility of allowing URLs to fit within a Twitter message, newer services add several interesting bits of functionality.  The most important of these is that let the linker turn any link into THEIR link, and view metrics on how far it's spread and how many clicks it's gotten. Showing a user how popular his actions are is inevitably addictive. Shorteners are relatively easy and lightweight to set up.  Adding a simple interstitial before the redirect provides an obvious way to monetize. And maybe someday all the link data will be worth something.</p>

<p>So there are clear benefits for both the service (<a href="http://www.avc.com/a_vc/2009/03/thats-only-ten-lines-of-code.html">low cost of entry</a>, potentially easy profit) and the linker (the quick rush of popularity).  But URL shorteners are bad for the rest of us.</p>

<p>The worst problem is that shortening services add another layer of indirection to an already creaky system. A regular hyperlink implicates a browser, its DNS resolver, the publisher's DNS server, and the publisher's website.  With a shortening service, you're adding something that acts like a third DNS resolver, except one that is assembled out of unvetted PHP and MySQL, without the benevolent oversight of luminaries like Dan Kaminsky and St. Postel.</p>

<p>There are three other parties in the ecosystem of a link: the publisher (the site the link points to), the transit (places where that shortened link is used, such as Twitter or Typepad), and the clicker (the person who ultimately follows the shortened links).   Each is harmed to some extent by URL shortening.</p>

<p>The transit's main problem with these systems is that a link that used to be transparent is now opaque and requires a lookup operation. From my past experience with Delicious, I know that <a href="http://news.ycombinator.com/item?id=503465">a huge proportion of shortened links are just a disguise for spam</a>, so examining the expanded URL is a necessary step.  The transit has to hit every shortened link to get at the underlying link and hope that it doesn't get throttled.  It also has to log and store every redirect it ever sees.</p>

<p>The publisher's problems are milder.  It's possible that the redirection steps steals search juice — I don't know how  search engines handle these kinds of redirects.  It certainly makes it harder to track down links to the published site if the publisher ever needs to reach their authors.  And the publisher may lose information about the source of its traffic.</p>

<p>But the biggest burden falls on the clicker, the person who follows the links. The extra layer of indirection slows down browsing with additional DNS lookups and server hits.  A new and <a href="http://ask.slashdot.org/article.pl?sid=07/11/18/1319201">potentially unreliable middleman</a> now sits between the link and its destination. And the long-term archivability of the hyperlink now depends on the health of a third party.   The shortener may decide a link is a <a href="http://en.wikipedia.org/wiki/TinyURL#Criticism">Terms Of Service violation</a> and delete it. If the shortener <a href="http://ma.gnolia.com/">accidentally erases a database</a>, forgets to renew its domain, or just <a href="http://6uold.blogspot.com/2008/06/long-list-of-url-shorteners.html">disappears</a>, the link will break.   If a top-level domain <a href="http://workbench.cadenhead.org/news/3503/bitly-builds-business-libya-domain">changes its policy on commercial use</a>, the link will break.    If the shortener gets hacked, every link becomes a potential phishing attack.</p>

<p>There are usability issues as well.  The clicker can't even tell by hovering where a link will take them, which is bad form.  Some sites offer link previews, but there's no way to make a preview preference stick globally across the many shortening services.   And just like ad networks, link shortening services could track a user's behavior across many domains.  That makes the paranoid among us uncomfortable.   We hope the shortener never decides to <a href="http://news.ycombinator.com/item?id=508132">add interstitials</a> or otherwise "monetize" the link with ads, but we have no guarantee.</p>

<p>For these reasons, I feel that shorteners are bad for the ecosystem as a whole. But what can be done to improve the situation?</p>

<p>One important conclusion is that services providing transit (or at least require a shortening service) should at least log all redirects, in case the shortening services disappear.  If the data is as important as everyone seems to think, they should own it. And websites that generate very long URLs, such as map sites, could <a href="http://www.scripting.com/stories/2009/03/07/solvingTheTinyurlCentraliz.html">provide their own shortening services</a>. Or, better yet, take steps to keep the URLs from growing monstrous in the first place.</p>

<p>You could guarantee that the shortened link is the one that was originally shortened by using a cryptographic hash. But this causes URLs that aren't as short as is possible.</p>

<p>A variety of <a href="http://userscripts.org/scripts/show/40582">greasemonkey scripts resolve shortened URLs</a> and replace them inline.</p>

<p>Finally, shortening services could provide <a href="http://archiveteam.org/index.php?title=TinyURL">archives of their entire database</a> - but this raises all sorts of privacy concerns that I hesitate to even dig into.</p>

<p>The most likely, of course, is that we don't do anything and that the great linkrot apocalypse causes <a href="http://www.youtube.com/watch?v=6t7APQdOW6Y">all of modern culture</a> to dissapear in a puff of smoke. Hopefully.</p>

<p><i>With thanks to <a href="http://idlewords.com/">Maciej Ceglowski</a></i></p>

<p><b>Updates</b></p>

<ul>
<li>June 15th, 2009: cli.gs, the "<a href="http://blog.cli.gs/news/cligs-is-4th-most-popular-url-shortener-on-twitter">4th most popular</a>" shortener, gets <a href="http://blog.cli.gs/news/cligs-got-hacked-restoration-from-backup-started">hacked</a>, redirecting a huge number of sites to a new location. <a href="http://blog.cli.gs/news/hack-update">93%</a> of hacked urls can be restored from backup</li>

<li>August 9th, 2009: tr.im <a href="http://blog.tr.im/post/159369789/tr-im-r-i-p">throws in the towel</a> after being able to figure out how to monetize the site. There are zero interested buyers. The site will redirect links until "at least" the beginning of 2010, but no future is guaranteed.
</li>
</ul>]]></description>
         <link>http://joshua.schachter.org/2009/04/on-url-shorteners.html</link>
         <guid>http://joshua.schachter.org/2009/04/on-url-shorteners.html</guid>
         <category>complaining</category>
         <pubDate>Fri, 03 Apr 2009 10:40:46 -0800</pubDate>
      </item>
            <item>
         <title>overclocking the lecture</title>
         <description><![CDATA[The growth of both bandwidth and storage mean that in the last few years practically everyone from individuals to large universities have begun putting lectures and talks online. While I can easily pick out a dozen or a hundred videos that that would be fascinating and educational, I am hamstrung by my short attention span, and I drift off almost immediately. Not to mention the fact that one browser crash or accidental tab closure loses my place and probably the video itself as well.<p>
After tinkering a while, I've managed to figure out a way to cut down the time it takes to watch a video. This works for me, on my Mac; your mileage may vary:
<ol>
<li> Make sure you have the appropriate codecs installed. I generally use the <a href="http://perian.org/">Perian</a> codec package. I additionally find that some FLVs require QTPro to be installed; it's not very expensive.
<li> Download the video somehow. Some sites, like Google Video, let you download a copy. Others, like YouTube, do not allow this. However, most embedded flash video can be grabbed via the technique in the bottom video in <a href="http://perian.org/#watch">the demo videos at Perian</a>.
<li> Open the video in QuickTime. The video is now happily outside the browser.
<li> Go to Window &rarr; Show A/V Controls; change the playback speed in the relevant window. I find that 2.0x generally works pretty well; the video will be faster and the audio is a little clipped but nicely de-chipmunked.
<li> Enjoy your new lecture! The glacial discussion now arrives at a rapid-fire pace. You'll be too busy trying to keep up to play Desktop Tower Defense, and you'll be done in a half hour.
</ol>
<p>
<a href="http://www.flickr.com/photos/joshu/2994666728/"><img src="http://farm4.static.flickr.com/3071/2994666728_6a1b86249d_o.png" width="395" height="842" alt="how to watch lectures faster" /></a>
]]></description>
         <link>http://joshua.schachter.org/2008/11/overclocking-lecture.html</link>
         <guid>http://joshua.schachter.org/2008/11/overclocking-lecture.html</guid>
         <category>complaining</category>
         <pubDate>Sun, 02 Nov 2008 00:14:21 -0800</pubDate>
      </item>
            <item>
         <title>amateur economist</title>
         <description><![CDATA[<p>Ever since seeing a presentation by <a href="http://doloreslabs.com/">Dolores Labs</a> about Amazon's <a href="http://mturk.com/">Mechanical
Turk</a>, I've been itching for an excuse to play with the system.</p>

<p>I recently saw a <a href="http://news.ycombinator.com/item?id=295822">thread</a> that highlights the distinction between 
expected value and utility. Would you take a more likely but lower payoff 
instead of a less likely but higher payoff?  Similarly, the <a href="http://en.wikipedia.org/wiki/St._Petersburg_paradox">St. Petersburg 
Paradox</a> takes the problem to its logical extreme. By constructing a game 
that has a series of increasingly rare payoffs of increasingly larger size, 
a game with infinite expected value is created.</p>

<p>So I constructed 21 versions of the questions, varying the size of the dollars
as well as the rate of payoff for the second outcome. </p>

<p><a href="http://www.flickr.com/photos/joshu/2851824479/" title="Example Question"><img src="http://farm4.static.flickr.com/3097/2851824479_884f680e33.jpg" width="500" height="231" alt="Example Question" /></a></p>

<p>For one cent apiece, I sent the questions to be answered by one hundred
people each, and collated the results. 2100 questions, three hours,
and thirty dollars later, I have my results.</p>

<p><a href="http://www.flickr.com/photos/joshu/2851822883/" title="Batch_3890_result.csv"><img src="http://farm4.static.flickr.com/3292/2851822883_9a926c6030_o.png" width="318" height="335" alt="Batch_3890_result.csv" /></a></p>

<p>Clearly, people (or at least these Turks) begin to cross over
at larger values, reaching equilibrium at around $1,000.</p>
<p><a href="http://www.flickr.com/photos/joshu/2851817247/"><img src="http://farm4.static.flickr.com/3046/2851817247_c3cb2335f7.jpg" width="500" height="346" /></a></p>

<p>While this isn't the most groundbreaking work, it is nice to be able to
generate an experiment and gather the results in the course of an evening
and then have the results be so pleasing.</p>

<p>The Mechanical Turk is presented as a way to solve problems that
are easily explained to people but difficult to implement for computers,
frequently described as "artificial artificial intelligence."
However, I think some of the most intriguing uses yet will be to explore
the edges of our own uniquely human behavior and self-understanding.</p>]]></description>
         <link>http://joshua.schachter.org/2008/09/amateur-economist.html</link>
         <guid>http://joshua.schachter.org/2008/09/amateur-economist.html</guid>
         <category>data</category>
         <pubDate>Fri, 12 Sep 2008 20:46:39 -0800</pubDate>
      </item>
            <item>
         <title>beyond rest</title>
         <description><![CDATA[<a href="http://anarchogeek.com/2008/7/23/beyond-rest-building-data-services-with-xmpp-pubsub">Rabble</a> and <a href="http://laughingmeme.org/2008/07/23/beyond-rest-building-data-services-with-xmpp/">Kellan's</a> presentation, "<a href="http://www.slideshare.net/kellan/beyond-rest">Beyond REST? Building data services with XMPP</a>" is
both a great idea as well as a good introduction to coping with massive amount of traffic that
large systems have to service.
<p>
A publish/subscribe architecture is natural to other problem domains
such as instant messaging and financial data systems (Tibco, Reuters, and so on).
<p>
Similarly, <a href="http://brad.livejournal.com/2143713.html">Brad Fitzpatrick implemented</a> something similar as a never-ending Atom feed 
a few years ago for Livejournal (sans XMPP, which wasn't as conceptually prevalent then.)
<p>
One important point in the presentation is that, for example, a single application would poll
Flickr approximately three million times in a day to fetch only several thousand updates.
At Delicious we saw a similar level of polling activity,
made somewhat worse by speculative querying (hitting the <a href="http://del.icio.us/url/a2269ff72a91edf6178c7ea060c43564">URL information pages</a> to see if
there was any data for arbitrary URLs, which was generally unlikely.)
<p>
One solution that ocurred to me at the time was to build a simple callback system over HTTP.
This would fall comfortably between full polling and full persistent publish/subscribe. 
The clever acronym even writes itself:
PIMP Is Mostly Push, although maybe PRSS (Push RSS) would be slightly
more polite.
<p>
Simply described, instead of polling frequently, a client would send a normal HTTP 
request with the resource to be subscribed to and an endpoint to deliver updates to: 

<code>http://your.app/subscribe?resource=/some/user&callback=http://my.app/endpoint</code>
<p>
Presumably the endpoint would then receive RSS item fragments when and only when that 
resource updated. For security, the exchange should include some kind of token, borowing from the appropriate protocols. The subscription would lapse after, say, 24 hours, or that could
be passed in as a parameter.
<p>
In some ways this is slightly more elegant than the XMPP solution as neither side has to  maintain a dedicated long-running process. A simple server-side implementation would justfetch items from a <a href="http://decafbad.com/blog/2008/07/04/queue-everything-and-delight-everyone">work queue</a> and send out HTTP messages.  A simple implementation on the client side would be a plain old web page that could accept and process a POST request. There are a number of people on inexpensive service providers who have at best web scripting hosting and not much else.  The case where Delicious/Twitter/Flickr pushes my own items (and not much else) up to my blog is an important one.  Additionally, there would not need to be any persistent TCP connections, which is probably more efficient in server 
resources (but less efficient in network resources; for billions of messages the TCP overhead 
becomes significant).
<p>
Of course, callbacks are totally infeasible for a variety of other uses, especially for 
mobile or desktop applications (which are likely to be firewalled).
]]></description>
         <link>http://joshua.schachter.org/2008/07/beyond-rest.html</link>
         <guid>http://joshua.schachter.org/2008/07/beyond-rest.html</guid>
         <category>ideas</category>
         <pubDate>Thu, 24 Jul 2008 10:41:59 -0800</pubDate>
      </item>
            <item>
         <title>rhizome</title>
         <description><![CDATA[I'm speaking briefly at the <a href="https://rhizome.org/benefit/2008/tickets.php">Rhizome 2008 Benefit</a> in New York City later this week. There are still tickets available, so you have no excuses for not attending.<p>
<a href="http://www.flickr.com/photos/joshu/2486840917/" title="rhizome by joshua, on Flickr"><img src="http://farm4.static.flickr.com/3219/2486840917_45c229139a.jpg" border="0" width="500" height="496" alt="rhizome" /></a>

]]></description>
         <link>http://joshua.schachter.org/2008/05/rhizome.html</link>
         <guid>http://joshua.schachter.org/2008/05/rhizome.html</guid>
         <category></category>
         <pubDate>Mon, 12 May 2008 12:14:15 -0800</pubDate>
      </item>
            <item>
         <title>tag mockery</title>
         <description><![CDATA[A sure sign that I've hit the big time:<p>
<a href="http://www.flickr.com/photos/joshu/2458146876/" title="dilbert on folksonomy by joshua, on Flickr"><img src="http://farm3.static.flickr.com/2093/2458146876_4bde8f41b3_o.jpg" width="209" height="189" alt="dilbert on folksonomy" /></a> 
<a href="http://www.flickr.com/photos/joshu/2455328085/" title="GTA IV by joshua, on Flickr"><img src="http://farm3.static.flickr.com/2411/2455328085_4d28825e25_m.jpg" width="240" height="160" alt="GTA IV" /></a>]]></description>
         <link>http://joshua.schachter.org/2008/05/tag-mockery.html</link>
         <guid>http://joshua.schachter.org/2008/05/tag-mockery.html</guid>
         <category>complaining</category>
         <pubDate>Thu, 01 May 2008 14:49:22 -0800</pubDate>
      </item>
            <item>
         <title>stupid internet joke day</title>
         <description><![CDATA[While I might occasionally notice interesting inconsistencies
in the structure of the world and phrase them into semi-witty banter, I know in my
bones that I am not a funny person.
<p />
So when I realized that tomorrow's imminent arrival of
<a href="http://en.wikipedia.org/wiki/April_Fools%27_Day#By_websites">Stupid Internet Joke Day</a>
(was: April Fool's Day) would require the avoidance of all unnecessary internet
contact, it also occurred to me that I may as well point out some common
Funny Anti-Patterns. But that's been done to death - thank you,
<a href=http://www.dashes.com/anil/2006/03/your-april-fool.html>internet hipsters</a>.
<p />
I merely wish to remind you all that elaborate hoaxes (press releases involving
small company acquiring a large one, switching stylesheets with someone, etc) are
immediately and transparently stupid. Instead, try to actually do something
surprising. The ha you save might just be your own.
]]></description>
         <link>http://joshua.schachter.org/2008/03/stupid-internet-joke-day.html</link>
         <guid>http://joshua.schachter.org/2008/03/stupid-internet-joke-day.html</guid>
         <category>complaining</category>
         <pubDate>Mon, 31 Mar 2008 12:57:34 -0800</pubDate>
      </item>
            <item>
         <title>put a proxy in front</title>
         <description><![CDATA[When scaling from a single web server to multiple web servers, the typical
practice is to put a load-balancing reverse HTTP proxy in front. This is a
web server that forwards incoming HTTP requests to other internal web
servers and thus distributes the load across all the different HTTP servers, allows
for failover, and all sorts of good things. <p />

However, a simple trick I learned early on is that even if you have
only a single web server, a proxy in front can help out performance
significantly. Through the simple expedient of buffering the communication
with slow web clients, your potentially heavyweight (especially when mod_perl meant that each process was dozens
 or even a hundred megabytes apiece)
and/or expensive Apache processes don't have to waste time
serving every request for the entire length of time the client is
connected. This allows you to run vastly fewer Apache processes. <p />

In the past, I've used <a
href="http://www.apsis.ch/pound/index_html">pound</a> and <a
href="http://www.danga.com/perlbal/">perlbal</a>. Pound is fast
and lightweight, and allows routing based on the HTTP query;
for example, everything under /img/ got routed to a high-speed
<a href="http://www.acme.com/software/thttpd/">thttpd</a>
instead of the Apache itself. Perlbal is much more configurable
but slightly harder to get running, and the documentation was sparse.<p />

These days, I'd also
investigate <a href="http://nginx.net/">nginx</a> and <a
href="http://varnish.projects.linpro.no/">varnish</a>. <a href="http://siag.nu/pen/">Pen</a>, a generalized TCP load-balancer with server affinity (connections will go to servers they've gone to recently in the past) is also quite interesting but will not help with the slow client problem. Finally, a second
set of apache processes, configured to reverse-proxy via <a href="http://httpd.apache.org/docs/2.0/mod/mod_proxy.html">mod_proxy</a>,
will also do the trick. A
]]></description>
         <link>http://joshua.schachter.org/2008/01/proxy.html</link>
         <guid>http://joshua.schachter.org/2008/01/proxy.html</guid>
         <category>lessons learned</category>
         <pubDate>Tue, 22 Jan 2008 00:16:32 -0800</pubDate>
      </item>
            <item>
         <title>unsubscribe</title>
         <description><![CDATA[Chris Anderson is <a href="http://www.longtail.com/the_long_tail/2007/10/sorry-pr-people.html">fed up</a> with PR folks spamming him.<p>

Me too.<p>
<a href="http://www.flickr.com/photos/joshu/1807520386/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2309/1807520386_833131789e.jpg" width="500" height="59" alt="unsubscribe" /></a><p>
These were sent to the email address listed on my blog; I use tear-off addresses for subscribing myself to things.]]></description>
         <link>http://joshua.schachter.org/2007/10/unsubscribe.html</link>
         <guid>http://joshua.schachter.org/2007/10/unsubscribe.html</guid>
         <category>complaining</category>
         <pubDate>Tue, 30 Oct 2007 20:54:13 -0800</pubDate>
      </item>
            <item>
         <title>social spring cleaning</title>
         <description><![CDATA[<p>I find myself lately re-entering everyone I know into the system
every year or two; I remember Six Degrees, Friendster, Linkedin, (I
skipped MySpace -- I'm too old,) Facebook, Dopplr, Flickr, and so on.
Brad Fitzpatrick seems to agree that this is an annoying waste of time,
and says so <a href="http://bradfitz.com/social-graph-problem/">
in his thoughts on the social graph</a>.</p>

<p>
Most social systems never forget anyone. Given that recent behavior appears to send friend
requests to anyone you've ever met even briefly, I find my contacts list ends up
filled with people I don't really know. In many systems, removing someone
from your list is either buried or simply impossible. Further, since these systems make implicit relationship information
explicit, deleting someone becomes a loud signal. In real life you would
merely back off a bit, but the systems only allow you to express a binary
sort of relationship.</p>

<p>Therefore, switching networks becomes a way to regularly cleanse your contact
list. There is evidence that younger internet users regularly start new
instant messaging IDs; this likely serves a similar purpose.</p>

<p>So perhaps frequent switching is less a function of fashion but instead a coping mechanism to deal with the mismatch between reality and software.</p>
]]></description>
         <link>http://joshua.schachter.org/2007/08/social-spring-cleaning.html</link>
         <guid>http://joshua.schachter.org/2007/08/social-spring-cleaning.html</guid>
         <category>lessons learned</category>
         <pubDate>Tue, 28 Aug 2007 01:16:04 -0800</pubDate>
      </item>
            <item>
         <title>ouch</title>
         <description><![CDATA[<div  style="text-align: center;" ><a href="http://www.flickr.com/photos/joshu/991045918/" title="Photo Sharing"><img src="http://farm2.static.flickr.com/1034/991045918_94f135c395.jpg" width="445" height="500" border=0 alt="ouch" /></a></div>]]></description>
         <link>http://joshua.schachter.org/2007/08/ouch.html</link>
         <guid>http://joshua.schachter.org/2007/08/ouch.html</guid>
         <category>complaining</category>
         <pubDate>Thu, 02 Aug 2007 15:33:05 -0800</pubDate>
      </item>
      
   </channel>
</rss>
