<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Pinboard - bookmarking for introverts</title>
    <link>http://pinboard.in/</link>
    <description>Public weblog for Pinboard</description>
    <language>en-us</language>  <item>
      <title>Welcoming a New Server</title>
      <description><![CDATA[     <p>We've added a new server to our setup, which should make the site markedly faster for everyone.  Since a bunch of our users are big nerds like us, I thought I would share the details of the change here.  If you're not interested in the technical details of how the site runs, by all means punch out now.

<p>For a long time, Pinboard ran off of two dedicated servers.  Each had 4GB of memory, a copy of the database, and all the code needed to run the site.  The servers lived in separate datacenters, so that in case of a major outage at least one would still be available.   The databases kept up with each other in a master-master configuration. 

<p>We spread the workload around like this:

<p><b>Server 1</b>: website, search engine, tag clouds, api

<p><b>Server 2</b>: RSS feeds, import from outside services, per-user stats,  bookmark-by-mail

<p>In addition, both servers ran a crawler that would download and store bookmarks for users who had signed up for the archival service.

<p>This setup worked well for many months, but had two big drawbacks.   

<p>The first was a lack of redundancy.  When one of the machines went down, the site had to run entirely off the remaining server.    If something went wrong with the remaining database during this interval,  we risked losing some of the bookmarks created during the outage.   While the risk was small, it went against our biggest priority for the site - never losing anyone's data.  

<p>The second drawback was that the main website had to share hardware with a bunch of other services.  The web server was never free to spread its wings and soar.  Instead, it had to contend with whatever else was going on on the machine.  For example, once each day the search indexer would wrestle with mysql over memory while it did a full index rebuild.  While we tried to time this kind of bickering for slack hours late at night,  the situation was like having too many roommates in too small an apartment.  

<p>While our median page load times always stayed low, there were some far outliers - cases where a page could take multiple seconds to load.   Since our second priority after data integrity was to be the fastest bookmarking website around, I found these dips in peformance deeply frustrating.

<p>Last week the heavens opened and we were finally able to find a high-memory dedicated server that was within our budget - a <a href="http://www.digitalone.com/calc.html">16GB machine</a> that rents for about $200/month, which is a rarity in the memory-stingy world of dedicated boxes.   Peter and I have just completed moving the main website to this roomy new machine, where the database fits entirely in RAM, and the results have been remarkable.   In our stats, we're seeing median page service times that have improved by a factor of ten or more (and the site was not slow to begin with).    I invite you to click around and see if things feel faster to you as well.    

<p>Having a third server also means having a third copy of the database, which means if one of the machines goes offline we  don't lose redundancy.   While I hope we never have to benefit from this feature, it's very good to have it.  

<p>Coming from a background of working on big websites, where you can just throw servers at any problem, it's been a fun challenge to run a site that has to get the maximum value out of its infrastructure, an experience a little bit like trying to live out of a suitcase.    A third server opens up vast new possibilities for features, particularly when it comes to expanding our API.   In the meantime, though, I hope you enjoy the peppier service, and please tell me if you spot anything we messed up during the migration. ]]></description>
      <author>maciej@ceglowski.com (Maciej Ceglowski)</author>
      <pubDate>Sat, 07 Aug 2010 00:34:19 +0000</pubDate>
      <link>http://pinboard.in/blog</link>

      <guid isPermaLink="false">fd8e71dbd0de0387cead8ae4b6d436467b4d4c9b</guid>
    </item>
    <item>
      <title>July 19 Outage</title>
      <description><![CDATA[ <p>We had about thirty minutes of downtime yesterday afternoon when our main server became unreachable.    I have not received any satisfying explanation as to what happened.   Our hosting provider (alchemy.net) says they found our server powered off, but could not provide any further details.  

<p>Curiously, not all our users saw the site go down at the same time.  I got two reports that the site was down  while it was still responding normally for me, with the usual activity showing up in the site logs.     Within an hour of those first reports, the site had disappeared for everyone.  At that point I repointed our domain name at the backup server and started opening tickets.

<p>The partial failure, the powered-down server, and some of the network errors I saw while trying to diagnose the problem make me suspect a problem in the datacenter that hosts our machine.   I will continue trying to gather information on the outage to see if there's anything we can do to prevent a repeat.

<p>Meanwhile, we seem to be back up and both servers are back to normal.    I apologize for the downtime and any inconvenience we caused our users. ]]></description>
      <author>maciej@ceglowski.com (Maciej Ceglowski)</author>
      <pubDate>Tue, 20 Jul 2010 20:32:09 +0000</pubDate>
      <link>http://pinboard.in/blog</link>

      <guid isPermaLink="false">ce742689b51093a04b38ef1d2e275ba90208e6f4</guid>
    </item>
    <item>
      <title>One Year Of Pinboard</title>
      <description><![CDATA[ <img src="http://idlewords.com/images/tito_cake.jpg">

<p>A year ago today this site left the comfortable womb of beta testing and started charging for new accounts.      

<p>Here are some of our vital signs, one year in:

<ul>
<li>3.5 million bookmarks</li>
<li>11.2 million tags</li>
<li>2.5 million urls</li>
<li>187 GB of archived content</li>
<li>99.91% uptime (6 hours offline)</li>
</ul>
<br/>

<p>And here are some of the features we've added to the site in our first twelve months:

<ul>
<li><a href="http://pinboard.in/tour/#archive">bookmark archiving</a> (paid feature) </li>
<li>API</li>
<li>view bookmarks filtered <a href="http://pinboard.in/blog/93/">by source</a></li>
<li><a href="http://pinboard.in/resources/wordpress">WordPress plugin</a></li>
<li><a href="http://pinboard.in/blog/84/">plain-text notes</a></li>
<li>auto sync with instapaper, twitter, google reader, read it later, delicious</li>
<li><a href="http://pinboard.in/blog/69/">twitter archive</a></li>
<li>post bookmarks by email</li>
<li><a href="http://pinboard.in/blog/143/">downloadable bookmarks</a> for offline viewing</li>
<li><a href="http://m.pinboard.in/">mobile site</a></li>
<li><a href="http://pinboard.in/blog/128/">click history</a> page</li>
<li>bulk editing widget</li>
<li>tag clouds and widgets</li>
<li>a quick '<a href="http://pinboard.in/blog/111/">organize</a>' interface for mass tagging</li>
<li>bookmarks for <a href="http://pinboard.in/blog/140/">geographical locations</a></li>
</ul>

<p>Over the past year, we've had about six hours of cumulative downtime, when the website was unreachable.  Both these episodes were due to hardware failure.  This year, we'll work to make the site a little more resilient against hardware trouble.

<p>We also have a long list of bugs to squash and new features to roll out in an effort to make sure Pinboard remains the best value for your bookmarking dollar.  I've updated the <a href="/roadmap/">site roadmap</a> to reflect our development priorities.</p>

<p>  If you don't see a feature you want, or if you have specific questions about our plans for the site, please don't hesitate to ask on the <a href="http://groups.google.com/group/pinboard-dev">Google group</a>.

<p>A site like this is a real pleasure to work on.  I would like to offer a slice of virtual birthday cake to all our users, and thank everyone who submitted bugs, gave us feature suggestions, and took a chance on us in our first year.  (Please, limit one slice per customer.)

<p>I also owe a big birthday thank you to honorary co-founder Peter, who has helped me keep the site running while keeping a sharp eye out for customer requests.   When you want the quality of customer care that only two Eastern European introverts can provide, choose Pinboard.in.



 ]]></description>
      <author>maciej@ceglowski.com (Maciej Ceglowski)</author>
      <pubDate>Thu, 08 Jul 2010 15:07:23 +0000</pubDate>
      <link>http://pinboard.in/blog</link>

      <guid isPermaLink="false">5997c6b96d1dba6d454d93a93923bac048a8754d</guid>
    </item>
    <item>
      <title>New Download Feature for Offline Reading</title>
      <description><![CDATA[ <p>You can now download sets of bookmarks in a format suitable for offline viewing. Our hope is this will be a handy feature when you need to hop on a train, plane, or just want to read somewhere where there is no wifi available.

<p>To try out the feature, go to your settings page and turn on 'enable downloads'.   You should now see two new links at the top of your homepage:</p>
<br/>
<p><img src="http://idlewords.com/images/download_links_example.png" style="width:400px" /></p>
<br/>
<p>When you click the "download" link, Pinboard will prepare a download with local copies of the 25 most recent bookmarks on that page.   You'll be shown a list of the bookmarks in the download along with a status box.  </p>
<br/>
<p><img src="http://idlewords.com/images/in_progress_example.png" style="width:400px;" /></p>
<br/>
<p>When the download is ready (typically within a minute), the status box will change to a download link:</p>
<br/>
<p><img src="http://idlewords.com/images/download_ready_example.png" style="width:400px;" /></p>
<br/>
<p>The downloaded file will open into a folder containing a 'files' directory and a web page called "manifest.htm".  Open this file in your browser and you'll see the list of downloaded bookmarks:</p>
<br/>
<p><img src="http://idlewords.com/images/manifest_example.png" style="width:400px;" /></p>
<br/>
<p>We include a clickable version of the original URL under each bookmark in case you want to visit the original site.</p>

<p>Since the download link only grabs the most recent 25 bookmarks from any page, a good way to have better control over what you download is to use the 'starred' page as a kind of staging area for your downloads.

<p>You can see a list of all your available downloads by clicking the 'downloads' link on your user page.   You can queue up as many downloads as you want, but there are limits on how much you can download in any given week.  

<p>Regular Pinboard users are limited to 50 MB / week.   Archival users can download 500 MB.    We'll revisit these caps once we see how heavily the feature is used.

<p>As the feature matures, I'll be adding 'download' links to the search and popular pages as well.

<p>There's no way right now to download links for offline viewing to your iPhone or iPad, but this is something we're working on.

<p>As ever, your comments, suggestions and questions are welcome on the <a href="http://groups.google.com/group/pinboard-dev">Google group</a>.   Please send bug reports directly to Peter or me at <a href="mailto:support@pinboard.in">support@pinboard.in</a>.     ]]></description>
      <author>maciej@ceglowski.com (Maciej Ceglowski)</author>
      <pubDate>Thu, 10 Jun 2010 12:34:19 +0000</pubDate>
      <link>http://pinboard.in/blog</link>

      <guid isPermaLink="false">08fc883aab9c4690ecc2a645fe4df3f06ebf37c8</guid>
    </item>
    <item>
      <title>Bookmarking Physical Locations</title>
      <description><![CDATA[ <p>I've added an experimental feature today that makes it possible to bookmark a geographic location.    Placemarks work just like bookmarks, except that in addition to a title, description and tags they include a Google map:

<p><a href="http://pinboard.in/place/u:maciej/geo:u86zwsh4sur7t4mb9800fyvz/zoom:16/"><img style="border:0px" src="/images/map_example.png" width="450" /></a>

<p>You can turn on this feature on your <a href="/settings/">settings</a> page.  When you click 'add place', you'll be taken to a map form that will default to your current location if you are using a geo-enabled browser like Firefox or Safari on the iPhone.

<p>The URL format of a placemark is 'http://pinboard.in/place/u:username/geo:xxxxx/zoom:yy/, where 'xxxx' is the geohash of the location, and yy is the zoom level (as determined by Google maps).

<p>For the moment, I have two use cases in mind for placemarks:

<ol>
<li>You are somewhere with a geo-enabled mobile device and want to remember that location.</li>

<li>You want to save a Google map view with a description and tags.</li>
</ol>

<p>There are some obvious additional features in support of placemarking (KML, map view of all user placemarks, map search) that I will hold back on building for a few weeks.  I would first like to see whether the feature is useful, and how people will end up using it.  

<p>I will be releasing two additional changes this week - the first is the ability to email a "pinned" location to Pinboard from the iPhone maps app and have it parsed into a placemark.

<p>The second is special behavior when bookmarking a Google maps page (the popup will give you the option of saving the URL as a placemark).

<p>Please let me know your thoughts, suggestions and ideas on the Google discussion group!     ]]></description>
      <author>maciej@ceglowski.com (Maciej Ceglowski)</author>
      <pubDate>Thu, 27 May 2010 18:07:13 +0000</pubDate>
      <link>http://pinboard.in/blog</link>

      <guid isPermaLink="false">825aa0956c281f8838a697a86d3987191638dc33</guid>
    </item>
    <item>
      <title>Support for https connections</title>
      <description><![CDATA[ <p>I've enabled the https:// protocol site-wide for anyone who wants more security/privacy when using Pinboard.   The main effect of using the site in secure mode will be that outgoing clicks won't show that you came from a Pinboard page (in other words, the referer field will be empty).     ]]></description>
      <author>maciej@ceglowski.com (Maciej Ceglowski)</author>
      <pubDate>Tue, 25 May 2010 10:45:34 +0000</pubDate>
      <link>http://pinboard.in/blog</link>

      <guid isPermaLink="false">6af16fdd176f063f696d516a0b2b28587965bd86</guid>
    </item>
    <item>
      <title>Improved User Settings</title>
      <description><![CDATA[ <p>A number of users have asked for individual control over whether items from outside sources (like Instapaper or Twitter) get added as unread or regular bookmarks.

<p>So I've updated the <a href="/settings/">settings page</a> so that you can configure this behavior for each outside service however you like.  Enjoy and please keep the great suggestions coming!</p> ]]></description>
      <author>maciej@ceglowski.com (Maciej Ceglowski)</author>
      <pubDate>Sun, 09 May 2010 19:46:13 +0000</pubDate>
      <link>http://pinboard.in/blog</link>

      <guid isPermaLink="false">8d88fc4c1ac1ee041dd3c9661a0c05e0645add30</guid>
    </item>
    <item>
      <title>Click History Page</title>
      <description><![CDATA[ <p>I've added a new 'history' tab to the main navigation bar.  It leads to a page that shows you the last hundred or so Pinboard links you clicked on.  You can filter this list to show just your links, just links from other people, or everything together (the default).</p>

<p>Only you can see your click history.   I added the feature because I sometimes find myself visiting the same set of links repeatedly, and the page makes for a convenient shortcut.  It's also useful for those times when I can remember clicking an interesting link on the recent page, but don't remember enough about it to find it via search.

<p>As ever, your feedback is most welcome on Twitter, IRC, or the discussion group.</p>     ]]></description>
      <author>maciej@ceglowski.com (Maciej Ceglowski)</author>
      <pubDate>Fri, 07 May 2010 12:00:21 +0000</pubDate>
      <link>http://pinboard.in/blog</link>

      <guid isPermaLink="false">c2e4c0ffc76badc3c890a1620ade5db5d6a8692c</guid>
    </item>
    <item>
      <title>Second Outage</title>
      <description><![CDATA[ <p>Yesterday we had another outage.  Once again, the main site was down for about twenty minutes, and the API was out for a couple of hours.  No data was lost.</p>

<p>The symptoms of the outage were identical to what happened <a href="http://pinboard.in/blog/117/">last week</a>.  The main filesystem on our web server suddenly went into read-only mode, crashing the database.   Once again I moved all services to the backup machine while the main server went through its long disk check.</p>

<p>In order to prevent further downtime, I've switched the main and secondary servers so that if the problem recurs, it will not disrupt the main site again.</p> 

<p>The rest of this post will be fairly technical, in hopes that one of our users might recognize the problem and be able to offer suggestions.</p>

<p>The server in question is a dedicated ServerBeach machine running Ubuntu 8.04.3.  It has two SATA drives, one of which is used for backup.   Both have SMART diagnostics which show no errors.     There are no clues as to the problem in the logs, presumably because the machine is logging to the same drive that goes into read-only mode.  </p>

<p>I've set up syslog to write a copy of the log files to the second drive, in the hopes of capturing log output if the problem recurs.  Interestingly, both times the error took place around the same time of day, shortly after 13:00 GMT.  A look at cron.d and the various cron jobs doesn't show anything scheduled for that time that might be to blame.</p>

<p>Our three working theories are 1) bad sectors on disk, 2) a hardware problem on the SATA bus, 3) a kernel bug in the distro.  We'd welcome any leads, especially from people who have experienced similar issues.   </p>

<p>To all our users, we sincerely apologize for the outage and will be glad to answer any questions about the measures we're taking to avoid future downtime.</p> ]]></description>
      <author>maciej@ceglowski.com (Maciej Ceglowski)</author>
      <pubDate>Fri, 07 May 2010 06:55:31 +0000</pubDate>
      <link>http://pinboard.in/blog</link>

      <guid isPermaLink="false">e6cd92067d9a628781b475c66de89f2804a129a4</guid>
    </item>
    <item>
      <title>Auto-Links in Bookmark Descriptions</title>
      <description><![CDATA[ For those of you who like to put URLs in your bookmark descriptions, I've added code to automatically make anything URL-like in a bookmark description a hyperlink.   Do let me know if you spot any bugs! ]]></description>
      <author>maciej@ceglowski.com (Maciej Ceglowski)</author>
      <pubDate>Sat, 01 May 2010 16:19:11 +0000</pubDate>
      <link>http://pinboard.in/blog</link>

      <guid isPermaLink="false">cabf055093d5478209c98d03cb2c9a192591619c</guid>
    </item>
    </channel>
</rss>