RSS

Pinboard Blog

Welcoming a New Server

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.

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.

We spread the workload around like this:

Server 1: website, search engine, tag clouds, api

Server 2: RSS feeds, import from outside services, per-user stats, bookmark-by-mail

In addition, both servers ran a crawler that would download and store bookmarks for users who had signed up for the archival service.

This setup worked well for many months, but had two big drawbacks.

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.

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.

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.

Last week the heavens opened and we were finally able to find a high-memory dedicated server that was within our budget - a 16GB machine 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.

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.

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.

—maciej on August 07, 2010



July 19 Outage

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.

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.

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.

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.

—maciej on July 20, 2010



One Year Of Pinboard

A year ago today this site left the comfortable womb of beta testing and started charging for new accounts.

Here are some of our vital signs, one year in:

  • 3.5 million bookmarks
  • 11.2 million tags
  • 2.5 million urls
  • 187 GB of archived content
  • 99.91% uptime (6 hours offline)

And here are some of the features we've added to the site in our first twelve months:

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.

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 site roadmap to reflect our development priorities.

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 Google group.

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.)

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.

—maciej on July 08, 2010



New Download Feature for Offline Reading

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.

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:



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.



When the download is ready (typically within a minute), the status box will change to a download link:



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:



We include a clickable version of the original URL under each bookmark in case you want to visit the original site.

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.

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.

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.

As the feature matures, I'll be adding 'download' links to the search and popular pages as well.

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.

As ever, your comments, suggestions and questions are welcome on the Google group. Please send bug reports directly to Peter or me at support@pinboard.in.

—maciej on June 10, 2010



Bookmarking Physical Locations

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:

You can turn on this feature on your settings 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.

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).

For the moment, I have two use cases in mind for placemarks:

  1. You are somewhere with a geo-enabled mobile device and want to remember that location.
  2. You want to save a Google map view with a description and tags.

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.

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.

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).

Please let me know your thoughts, suggestions and ideas on the Google discussion group!

—maciej on May 27, 2010



Support for https connections

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).

—maciej on May 25, 2010



Improved User Settings

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.

So I've updated the settings page so that you can configure this behavior for each outside service however you like. Enjoy and please keep the great suggestions coming!

—maciej on May 09, 2010



Click History Page

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).

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.

As ever, your feedback is most welcome on Twitter, IRC, or the discussion group.

—maciej on May 07, 2010



Second Outage

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.

The symptoms of the outage were identical to what happened last week. 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.

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.

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.

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.

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.

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.

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.

—maciej on May 07, 2010



Auto-Links in Bookmark Descriptions

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!

—maciej on May 01, 2010



Outage This Morning

We had an interruption of service around 6:15 AM Pacific time, when the database on the main Pinboard server crashed, taking down the website and API. After initial attempts at first aid failed, we pointed the domain name at our backup server, where the site ran without problems while we worked on bringing the main server back to life.

The root cause of the outage appears to have been a disk error. The server entered a state where nothing could write to disk, crashing the database. We were able to reboot the server, but then had to wait a long time for it to repair the filesystem.

All told, the site was down for about twenty minutes, and ran slower than usual for about two hours while on the backup server. Database replication to the remote slave worked as designed and we did not lose any data.

We're continuing to examine the offending machine to see if we can get a better understanding of the error and prevent it recurring. In the longer term, we plan to add additional front-end servers to make sure this kind of single failure does not bring down the website.

Please let us know by email or on Twitter if you have any questions or notice anything amiss as a result of the outage. And please accept our sincere apologies for the downtime.

—maciej on April 30, 2010



Organize More Links

The "organize" view (bookmarks displayed in a toolbar above a site preview) is now available in three more places: private bookmarks, public bookmarks, and all user bookmarks.

We've also defeated framebusting on several more domains based on user reports. Let us know if you catch any more sites framebusting!

We'll be rolling the organize feature out to other parts of the site over the next few days.

—maciej on April 28, 2010



New Feature: Organize Unread Links

If you're anything like me, you dump a lot of bookmarks into your Pinboard account using the 'read later' bookmarklet. The read later status is one of the most popular features on the site, but it can also leave you with a big pile of uncategorized orange bookmarks. Reading and tagging a large set of these through the standard edit interface is a chore.

Today we've added an 'organize' link to the unread bookmarks page. Clicking it will take you to a special interface meant to make bulk categorizing links faster. You get a split-pane view - the top of the page shows a bookmark edit form, while the bottom loads the actual bookmark. As you navigate around your bookmark list, any changes you make in the form fields will automatically be saved.

This organize view is still a work in progress. It badly needs keyboard shortcuts and a little search box, as well as several other UI elements. But I'm hoping it's useful enough to share as is.

Delicious users may see some similarity to the new Delicious browser bar. As I was halfway through coding the 'organize links' feature, Delicious released their own version, and I was happy to lift one of their good ideas (the preview pane) for use on our site.

Unlike the Delicious browse bar, Pinboard takes measures against 'framebusting' sites that try to take over your entire browser window, so that you don't have to tiptoe around certain sites in preview mode. If you do come across a site that breaks frames, please let us know the URL so we can add the appropriate countermeasures.

I look forward to hearing your feedback, criticism, and ideas on Twitter or our Google discussion group.

—maciej on April 21, 2010



Where Do Bookmarks Come From?

Here's a look at the most recent 30 days of Pinboard bookmarks, binned by source:

As you can see, about half of our bookmarks come from within Pinboard (this includes bookmarklets, post by email, and the API), while the other half are imported from outside services. RIL in the diagram stands for "Read It Later".

I have no deep insights to draw from this pie chart, but I thought it might be interesting to some of our users.

—maciej on April 17, 2010



What is Antisocial Bookmarking?

I've noticed that Pinboard users fall into two camps. One group uses the the service as a kind of 'Delicious plus' - they are perfectly happy with the social aspects of Delicious, but have been lured to Pinboard by some missing features (mainly speed, integration with outside services and the 'read later' bookmark status).

The second group is attracted to the idea of an antisocial site, where you can keep data on a central server but have it be entirely private. We have about a thousand users who have the 'make everything private by default' setting turned on. These users tend not to be interested in integration with other sites, since that goes against the antisocial aspect, but rather want a simple and fast bookmark archive that they don't have to maintain themselves.

Since the goals of these two groups of users are somewhat in tension, I thought I'd explain my own motivation for setting up an 'antisocial' service, what exactly I mean by the term, and how it affects features that will or won't make it into Pinboard.

Despite being friends with the founders, I was a late convert to Delicious. For a long time I could not understand why anyone would bookmark to a central server, rather than just save things within their browser. The service only seemed to make sense for people who used multiple computers, or who chose to broadcast their entire online life to the world. Since I did not fit in either group, I failed to see the purpose of a public bookmarking site.

What brought me around were two Delicious features. The first was tagging. This was moderately useful for remembering things in one's own account, but what bowled me over was how well the aggregate tags for a URL from multiple users summarized its content. Through a simple UI trick, Delicious had succeed in creating better link descriptions than anyone else on the Internet.

The second feature was the 'inbox', a kind of subscription list that let you siphon links from other users. Even after Delicious had grown big enough for the front page to no longer be interesting, with a little effort you could put together an inbox that would provide you with a steady stream of nice things to read. In the days before sites like Reddit or Digg, when there were relatively few streams of engaging stuff to click on, this was a valuable resource.

So I became an active user of Delicious, with the enthusiasm of the late convert. But as time went on, and as people started to subscribe to my account, I found myself increasingly self-conscious about posting links to the site. Bookmarking had started to feel a little bit like publication. This made me hesitant about filling my account with bookmarks that were not of general interest, even when I needed to keep them around for my own use. For example, in the course of writing a long article about the Space Shuttle, I ended up bookmarking over a hundred items in the space of a few days, all on that topic, and by the end of the process I felt myself wincing with each bookmark, conscious that I had lavishly spammed my friends' bookmark streams with endless NASA articles and powerpoint decks.

I decided that what I really wanted was a site that would retain the advantages of public bookmarking (aggregate tags and user subscriptions) while removing some of the social expectations that made bookmarking awkward. In my mind, Delicious was something like a coffee table, a semi-public place where you put out a careful selection of things meant to entertain your guests, and tried to impress them with your cleverness. What I wanted was something like a library carrel, a place I could store things that interested me without much caring what impression they made on others. People would be welcome to poke around, but always with the understanding that they were looking at a set of links curated for my own benefit. If they got bored, it wouldn't be my fault. And I would be able to find and snoop on interesting people without having to, god forbid, ever interact with them.

Pinboard still has a long way to go before it can do all the things I expect from a personal archive. There is still no way to make lists of interesting links around a topic in anything except chronological order. It's impossible to effectively search your browsing history. People still can't bookmark together in small groups, or search their archived links except by description or title. There's no way to assemble offline reading lists and it's hard to manage more than a few dozen bookmarks at a time around a given topic without a lot of heroic tagging and clicking. But with enough time and effort, these are things I'd like the service to do well.

One of my favorite places to work is the reading room of a large municipal library. It's a kind of half-private space where you have access to endless books, a desk with a little green-shaded lamp, and someone stern to shush people when they get too chatty. Working quietly with others is not forbidden, but you don't go there to socialize. You have room to spread out your materials and you can dive deep into the things that interest you. And you're surrounded by other people doing the same thing.

I don't presume to have the ability to build that kind of online space myself, but it has been a helpful metaphor to work towards. Online communities over the past two years have fixated on what's happening right now, what your friends are doing right now, activity streams, trending topics, and staying on top of a wave of frequent and evanescent snippets of text. I think this leaves room for a site where you can hamster away information to come back to at your leisure, in the company of interesting people, without worrying that it will disappear.

At the same time, I realize that not everyone is an information hermit. I've been delighted to see Pinboard fill up with people enthusiastic about plain old social bookmarking, who just want to see it a little faster or better-integrated with other services. I welcome these bright-eyed extroverts who wish to connect everything to everything else, and will happily add all the features they ask for, just as long as the silent majority of shy nerds can continue to feel welcome on the site and benefit from its features.

—maciej on April 11, 2010



Bulk Edit All Pages

For several months now we've had a 'bulk edit' box at the top of each user page, for cases when you want to make changes to multiple bookmarks at once. But until now bulk editing has been limited to one page of bookmarks at a time, which meant there was no way to delete all bookmarks, or rename a tag, without paging through and repeating the procedure for each page.

Today I've updated the site to include an 'all pages' option in the bulk edit box. This will extend the operation to all bookmarks in the category.

—maciej on April 10, 2010



Filter by Source

For a while, Pinboard has shown source information next to automatically imported bookmarks, so you can tell where they originally came from (Twitter, Instapaper, iPhone post, etc.)

I've now made these source links clickable, so that you can filter your bookmark stream by source. You can also get an RSS feed of your bookmarks filtered by source - click the RSS link on the appropriate page, or append '/from:xxxxx' to an existing feed URL, where 'xxxx' is the name of the relevant service.

—maciej on April 03, 2010



Delibar Now Supports Pinboard

I'm very happy to announce that the latest release of Delibar now offers Pinboard support.

Delibar is a slick Mac desktop app for managing your online bookmarks. Over the last few weeks, I've had an enjoyable time working with the Delibar developers to test our integration with their product, and I'm proud as punch to see Pinboard supported by a real desktop client.

Of course, one of the biggest fringe benefits was getting to play with the lastest version of Delibar. It' s a lovely app - go download it and see for yourself!

—maciej on February 26, 2010



Pinboard Wordpress Plugin

I've prepared a Pinboard Wordpress plugin derived from the popular Delicous for Wordpress plugin by Ricardo González.

If you have a Wordpress blog, you can use the plugin to automatically include your most recent Pinboard public links, with the option of filtering by specific tags.

—maciej on February 20, 2010



Plain-text Pasting Service

Yesterday we added notes to Pinboard. Notes are a way to bookmark arbitrary text. You enter an optional title, tags, and then paste whatever you like into a textarea. Pinboard will create a URL for the snippet and adds it to your bookmark collection. You can specify whether you want the bookmark to be private or visible to others.

We'll be adding some additional options to notes as time goes on, but for now we wanted to start simple and find out what people found most useful.

To try creating a note, visit http://pinboard.in/note/add/. Please let us know what you think on the Twitters or in the Google discussion group.

—maciej on February 12, 2010



Support for Read It Later

Pinboard now offers support for the popular Read It Later service. You can enter your RIL username on the settings page, and Pinboard will auto-monitor your feed of read and unread RIL items, adding any bookmarks it finds there.

—maciej on February 03, 2010



Support for Google Reader

I've added support for auto-adding Google Reader shared items as Pinboard bookmarks.

If you go to your Google Reader shared page (which can be a challenge to find), you'll see a link for an Atom feed. You can paste this link into your Pinboard settings page and the site will periodically mine the feed for bookmarks.

If you choose to 'share a link with note', that note will be added as the bookmark description. Incredibly, although Google Reader allows you to tag shared items, the tags are not included in the feed. Peter and I have complained to Google-employed friends about this and hope to see it resolved soon.

Let us know on Twitter or the Google group if there are other outside services you'd like to see integrated.

—maciej on February 01, 2010



Suggested Tags API call

I've expanded the API to include a /posts/suggest method - see delicious API v1 documentation for syntax.

This API call gives you a list of popular and recommended tags for any URL we track.

—maciej on January 24, 2010



Archived Tweets

If you've been following a Twitter account, you can also see a full archive of those tweets now by enabling the 'Twitter archive' setting on the settings page.

—maciej on January 22, 2010



Twitter Favorites

You can now auto-add links from Twitter favorites, and have them automatically appear in your 'toread' list. See the settings page for details.

—maciej on January 18, 2010



Technical Underpinnings

Some people have expressed interest in the technology that runs the site.

We have two servers, a dedicated machine from ServerBeach and a Xen instance from prgmr.com. Each of these has 4 GB of RAM. The site originally ran on Slicehost and Linode, but we moved off those services since their cost (expressed in dollars per GB of RAM or storage) was far higher, without any offsetting benefits.

Pinboard uses a master-master MySQL architecture. One of the masters performs all writes to the bookmark, user, and tag tables, while the other is used to calculate aggregates (like global link counts and per-user statistics). We also run our nightly DB backups off of this second server with mysqldump, storing the compressed results to S3.

A small batallion of Perl scripts handles background tasks like downloading outside feeds, caching pages for users with the archive feature enabled, handling incoming email, generating tag clouds, and running backups. I chose Perl for this partly because I'm productive in the language, and partly because CPAN offers usable libraries for any conceivable background task.

The site itself is built in PHP, without any templating engine. We use APC to prevent re-loading various files with each request, but have so far not needed to implement any other kind of caching.

The bookmark archive makes heavy use of wget, with some postprocessing to handle the common case where stylesheets and other inline content are versioned by appending a random string to the filename ("main.css?90xs8"). This versioning messes up Apache's ability to guess the content type of the file from its extension when it comes time to serve the archived file, so we do some renaming and symlinking behind the scenes to make sure archived files get served back properly.

We use Sphinx for our search engine, as well as for global tag pages.

Our technical goals are to never lose data, be very fast, and favor boring and faded technologies where possible. A rule of thumb that has worked well for me is that if I'm excited to play around with something, it probably doesn't belong in production.

—maciej on January 12, 2010



Six Months of Pinboard

We started offering paid accounts on Pinboard on July 7. At the time, the service wasn't much more than a clone of pre-Yahoo delicious, with the addition of some common-sense features that the original del had weirdly lacked (things like a 'toread' status, long description field, or default privacy settings).

Back then, our userbase consisted of about thirty intrepid testers who had volunteered to shake out bugs. The site ran on a little Xen instance and stored a few thousand bookmarks. The Pinboard global operations center was a laptop in the kitchen of a somewhat beat-up Moldavian apartment.

Today, Pinboard has grown to about 1200 active users, and we're coming up on our two millionth bookmark. We store about a hundred gigabytes of crawled content. From one full-time employee, the site has ballooned to a staff of 1.5. We've expanded to fill two servers, one hosting the main site while the other performs certain onerous background tasks. And we've added piles and piles of features, including Twitter and Instapaper mirroring, better bulk editing, a mobile site, bookmarking by email, archiving, feeds, an API, and even a version of the site for the five Pinboard users who prefer to browse their bookmarks in Spanish.

Pinboard has been self-funding from the outset, but with the launch last month of the archiving service (where we store copies of all bookmarks in an account for $25 per year) the site has reached the point where I can work on it full-time. It makes me very happy to have Pinboard as my full-time job, and I look forward to extravagances like being able to hire an ops person and perhaps even some outside development help if the site continues to grow.

It is particularly pleasing to report that the site remains spam free, and that we have had no downtime or significant slowdowns since launch. As much as I would like to claim credit for this, it's a direct dividend of the signup fee. The fee, which grows by a tenth of a penny with each new user, has effectively vaccinated us against the usual negative network effects of a social bookmarking service, where spam and nuisance accounts grow to absorb all available development effort. Instead, each new signup funds the marginal work needed to keep the site as fast and responsive for new users as it was for the first handful.

There have been two big surprises in the past six months. The first was discovering that a minimalist paid bookmarking site can effectively compete against delicious, a free service that has all the resources of Yahoo at its disposal, a five year headstart, and until the recent layoffs employed some thirty people. Yahoo management single-handedly created our market with a series of terrible product decisions, and has continued to push the yoke forward and keep the nose pointed straight at the ground. As happy as I am to see Pinboard succeed, I wish it weren't due to so much squandered effort by people I like and respect on the delicious development team.

The second surprise has been the degree of patience and goodwill shown by our users in the face of the various bugs, problems and shortcomings that inevitably crop up on a growing service. I expected this kind of generosity from our volunteer testers, but did not anticipate that paid users would be cheering us on, offering detailed bug reports and test cases, and overlooking our inevitable missteps with the kind of graciousness they have consistently shown. It has been a very gratifying part of running the site.

I look forward to posting in another six months about our new skyscraper headquarters, dedicated server farm, subterranean control center and complete archived copy of the Internet. In the meantime, please keep the cards and letters coming on the discussion list, Twitter, or through email. And thank you to everyone who has helped make our first six months such a success!

—maciej on January 07, 2010



Sync with Instapaper

I've added a user preference (on the settings page) for people who'd like to import their toread items from an Instapaper account.

Turning on the option will make us monitor your Instapaper RSS feed and add any new URLs as 'toread' bookmarks in your Pinboard account.

—maciej on December 14, 2009



Bookmark Archive

We've turned on a new paid archiving feature that will download and store a permanent copy of every page you bookmark. Think of it as a personal Internet Archive.

This is a feature I've wanted ever since I ran a dead link checker against my bookmarks and saw how many of them no longer worked after only a couple of years.

You can find a full description of the new service at http://pinboard.in/upgrade/.

—maciej on December 07, 2009



Tag Intersections

You can now filter by combinations of tags using the syntax /u:username/t:apples/t:oranges/. Up to three tags can be combined this way.

For the moment, this only works on the user+tag pages, and not in the global tag page nor any of the RSS feeds.

—maciej on December 02, 2009



Dead link detection

I've started to check everyone's account for dead links. It will take a little while to cover them all, but you can visit http://pinboard.in/u:username/code:404 to see a list of the ones we've found so far (be sure to replace 'username' with your own login).

If you'd rather not lose any more links, we'll be offering a "cache everything" feature in a few days that will give you a permanent snapshot of everything you bookmark.

—maciej on November 13, 2009



IE8 and Camino browser support

I've fixed some javascript issues, and Pinboard should now work with both IE8 and Camino. Please let me know if you find any problems, or have another browser compatibility request.

—maciej on October 25, 2009



'Copy to mine' links

Ever looked at the recent or popular page and found a bookmark that looked interesting? I've added a link next to each bookmark that lets you put it on your own 'toread' list with one click. The bookmark will be auto-tagged with 'copied' and 'via:username' so you can quickly find your snagged bookmarks with tag search.

—maciej on October 25, 2009



Tag completion and tag suggestions

I've made tag completion a little friendlier (space bar now inserts a space rather than auto-completing tag), and I've also incorporated tag suggestions. When you bookmark a URL, Pinboard will look for any overlap between other users' tags for that link and the set of tags you've used in the past. You'll see them displayed in clickable form below the "tags" field in the add bookmark form.

—maciej on October 17, 2009



Initial version of API

I've released a trial version of our API (see Google group mailing list for details). Right now it's a partial clone of the delicious API with an endpoint at https://api.pinboard.in/v1/. Please try it out, but don't build any real apps with it until I finish debugging!

—maciej on October 17, 2009



Mobile version for iPhone users

I've set up an iPhone-friendly version of the site at http://m.pinboard.in - same bookmarks, custom layout. Please let me know what you think via Twitter or our Google group!

—maciej on October 11, 2009



URL pages and per-bookmark user counts

I've added a preference for people who want to see global user counts next to their bookmarks. This will show you the total number of other people who publicly bookmarked that URL.

You can click the link to see a URL detail page that aggregates all user tags and descriptions.

—maciej on October 05, 2009



Network page RSS feed

The network page now has an RSS feed. It uses a 'secret' URL since your network is not public knowledge on Pinboard.

—maciej on October 02, 2009



New popular page

I've added a popular page with a list of the days most linked URLs, along with a tag cloud. Each URL come with the name of the first person to (publicly) post it, for fame and glory.

—maciej on October 02, 2009



In-place editing

I've altered the edit bookmark behavior to be a little nicer: changes should now update in place, so you won't get an annoying page reload every time you edit a bookmark. Deleting a bookmark still triggers a reload, but I plan to clean that up eventually as well.

—maciej on October 02, 2009



Changes in bulk editing

I've added a new interface for selecting and editing multiple bookmarks. At the top of your user and user+tag pages there is now an 'edit' link. Clicking this will display checkboxes next to your bookmarks, and reveal a little box with various editing options. You can also use this widget to delete multiple bookmarks at a time, which hadn't been possible before.

This replaces the previous interface for bulk editing, the 'starred' page. The stars will stay on the site, but their behavior will now be more in line with stars in Gmail and similar web apps - as a way to mark favorites, or else create a semi-persistent 'bag' of bookmarks to do operations on.

One option that isn't supported yet is 'select all pages', for times when you want to do bulk operations on more than one page of bookmarks at a time. I'll try to have this finished in the next couple of days.

As always, I'm eager to hear your comments in the Google Group discussion!

—maciej on September 21, 2009



Private and toread RSS feeds

I've added a little RSS link (along with RSS autodiscovery) to the various flavors of user page so you can now get a corresponding RSS feed for each one. Feeds that show private data include a special per-user secret in the URL.

—maciej on September 21, 2009



Bugfixes and behavior changes

Unread bookmarks with tags will now show up on the user+tag page (but only to their creator, unread bookmarks remain invisible to others). Similarly, unread bookmarks will show up on the starred page if appropriate. And it should now be possible to edit the URL of a bookmark.

—maciej on September 10, 2009



RSS feed, tag cloud, and pagination for recent page

I've spruced up the recent page to include a tag cloud generated from the most recent 300 items, a public RSS feed, and pagination links. You can now surf back through about three days' worth of recent public items.

—maciej on September 03, 2009



Auto-mirror a delicious account

I've set up a feature that lets you tell Pinboard to monitor a delicious RSS feed and add any bookmarks it finds there. New bookmarks (that aren't already in your collection) will appear with a 'from:delicious' tag added.

This feature does not work for bookmarks marked private on delicious, since we use the public feeds only.

—maciej on August 27, 2009



Google Reader Send to Pinboard

Jim Florato offers the following useful instructions for getting Google Reader to automatically send links to Pinboard:

Go to Settings, and then the "Send To" tab. Click the "Creat Custom Link" and enter the following:

Name: Pinboard

Url: http://pinboard.in/add?url=${url}&title=${title}

Icon Url: http://pinboard.in/favicon.ico

Thanks to Jim, Anu and Roel for all alerting me to this new Google Reader feature!

—maciej on August 16, 2009



Pinboard with NetNewsWire

Paul Robinson posts very helpful instructions on how to integrate Pinboard into the popular RSS aggregator NetNewsWire. Thanks for taking the time to write that up!

—maciej on August 15, 2009



Auto-import bookmarks from Twitter

You can now turn on a setting that will monitor a Twitter username and automatically add any bookmarks posted to their public stream.

Tweets containing URLs will post as a regular bookmark, with the 'toread' flag set, and the tag 'from:twitter' automatically added. Any #hashtags that appear in the tweet will be converted into a pair of tags - one of them with the prepended hash, and one without (so for a tweet containing '#foo', pinboard will add tags 'foo' and '#foo').

Pinboard will dereference any shortened URLs to their full form before saving the bookmark. It will also try to get the title of the link to use as the bookmark title. In cases where that doesn't work, the title will post as "Untitled (URL)".

Let us know what you think on the Google group!

—maciej on August 14, 2009



Bookmarking by email

I've enabled bookmarking by email for those who want it - see settings and the howto page for details.

—maciej on August 07, 2009



Google and Firefox bookmarks

Import should now work with bookmarks in Netscape format - that means you can export your bookmarks from Firefox and Google Bookmarks and upload them on the 'settings' page.

—maciej on August 06, 2009



¡Pinboard en español!

Thanks to a Titanic translation effort by Pinboard user Guillermo Ruiz de Loizaga, a Spanish-language version of the site is now live at http://es.pinboard.in.

—maciej on August 02, 2009



Untagged and Unread

I've moved "toread" bookmarks into the main user page, while keeping the top menu item for convenience. I've also added an "untagged" tab, since I find it's sometimes handy to see a list of all my untagged bookmarks and do some remedial tagging.

—maciej on August 02, 2009



RSS feeds for user + tag combinations

You can now get RSS feeds for user + tag combinations. The URL syntax is http://feeds.pinboard.in/rss/u:username/t:tag/. I've also turned on feed autodiscovery, so smart browsers should automatically find the appropriate feeds as you navigate the site.

—maciej on July 25, 2009



Private/public/all view

I've updated user pages to allow you to see only private or public bookmarks if you like. There are three filter tabs below your username on the default bookmarks page.

—maciej on July 22, 2009



RSS feeds for user accounts

I've set up our secondary server and that means it's time to start serving RSS feeds. The URL syntax is http://feeds.pinboard.in/rss/u:username. Please send email if there are any formatting or other issues. Since these are public feeds, they won't include any of your private bookmarks.

—maciej on July 18, 2009



Greasemonkey script for del.icio.us suggested tags

User lance_ has put together a Greasemonkey script that pulls your del.icio.us related tags into the Pinboard popup window. Hats off to Canadian industriousness!

—maciej on July 13, 2009



RSS Feed

There's an RSS feed of this blog at http://pinboard.in/feed/

—maciej on July 10, 2009



Signup enabled

The site is now open to all comers, provided they pay a small signup fee that will grow in proportion to the total number of users. My hope is that this will keep the rate of growth manageable so the site stays fast and usable for everyone.

—maciej on July 09, 2009



Welcome, avalanche of new users!

There's been a huge spike in signups since the site appeared on TechCrunch two days ago. I've stopped adding new accounts for the moment to keep the site snappy for existing users, so please bear with me if you're waiting for an invite. Resources should be in place in the next couple of days to support the larger user base, and I'll send out emails to those who signed up when everything is ready.

—maciej on July 08, 2009



Networks

You can now subscribe to users to get a feed of their bookmarks (similar to delicious networks). Use the 'subscribe' and 'unsubscribe' links on the user page and the new 'network' tab in the banner.

—maciej on July 03, 2009



User settings

I've added some user settings to the "settings" page. You can now decide whether you want your new bookmarks flagged private by default (meaning, the checkbox will be auto-checked), and whether you want javascript tag auto-completion in your life.

—maciej on July 01, 2009



Welcome beta testers!

Our heroic group of alpha testers has tamed the bugs in the service enough to start inviting additional users. I'll be sending invites out to the first hundred or so people to sign up, and we can see how the site holds up under a light real-world workload. Please report any bugs by email, and join the discussion on IRC or Google groups if you want to talk about features.

—maciej on June 29, 2009



Cached bookmark update

I've turned off bookmark caching for the moment while I work on getting it pointed directly at S3.

—maciej on June 29, 2009



Tag auto-completion

The 'add bookmark' popup window now has Javascript tag completion. I've also enabled default gzip compression on the web server; please let me know if you have any trouble getting stylesheets, javascript or html content as a result.

—maciej on June 24, 2009



New server + bookmarklet

I've moved things over to our production URL, http://pinboard.in. There's also a new bookmarklet in place now for people who don't want to deal with popup windows.

—maciej on June 23, 2009



Cached Bookmarks

Bookmarks are now cached locally in case they disappear or change later. Look for the [cached] link next to your bookmarks (it may take a while to appear as we do the initial indexing).

—maciej on June 17, 2009



Related Tags

I've added a related tags feature on user+tag pages.

—maciej on June 14, 2009



Exporting your bookmarks

I've added an export feature, using the same format as del.icio.us. Details are on the settings page.

—maciej on June 14, 2009



Backups

Mindful of the Magnolia data disaster, I wanted to let everyone know that the full database is being backed up nightly to Amazon S3.

—maciej on June 14, 2009



Welcome alpha testers!

Thanks to everyone who's volunteered to take the site for a spin. I'll be making updates and adding features this week as time allows, and of course fixing the bugs you find. I'll be putting up a 'roadmap' page soon with a list of what I'm working on next, and posting here once various pieces are done.

—maciej on June 14, 2009



Pinboard is a bookmarking site and personal archive with an emphasis on speed over socializing.

This is the Pinboard developer blog, where we announce features and share news.




Who Runs Pinboard?

Maciej Ceglowski (maciej) is a former engineer at Yahoo's Brickhouse, and has worked for several years as an independent contractor. He writes on non-technical topics at idlewords.com.


Peter Gadjokov (pvg) co-founded del.icio.us in 2003. His previous projects include Bigbook, Infoscape, Weathernews, and the internal networking protocols for an Austrian tank.



How To Reach Us

Send bug reports to bugs@pinboard.in

Talk to us on Twitter

Post to the discussion group at pinboard-dev

Or find us on IRC: #pinboard at freenode.net