
Coding Horror: The End of Pagination - duaneb
http://www.codinghorror.com/blog/2012/03/the-end-of-pagination.html
======
cletus
Dear God I hate this anti-pagination nonsense.

I _loathe_ infinite scroll. It puts you at the mercy of the site doing browser
caching right (no one does) otherwise you click on a link, click back and then
have to start from the beginning again.

Even _Apple_ gets this wrong (you'll reach a point going through the Top
Charts in the App Store where pressing Back reduces you back to the first 10
results).

Pages can be bookmarked easily, which can be _incredibly_ important. Paging is
also easier for crawling (otherwise it requires some JS evaluation or other
hackery).

DZone is a good example of a site that annoys the crap out of me with infinite
scroll.

Seriously, cut that shit out.

~~~
seiji
_Pages can be bookmarked easily, which can be incredibly important._

Pages can be bookmarked easily only _sometimes!_ Everybody seems to have
adopted the same database-centric but user-hostile (and cache/crawler-hostile)
approach to pagination of posts (see: any blog platform, engadget, tumblr,
etc).

Their brain damaged flow goes: You make a new post. The new post appears at
the top of the front page. But, the front page has a limited number of story
slots. So, the oldest story on the front page gets pushed to page two. But
page two has limited slots, so the oldest story on page two goes to page
three. Repeat for every page. Some sites have tens to hundreds of thousands of
"pages." (Preemptive note to future comment haters: I know the site doesn't
"push" articles to every page because it's all just database queries, but the
effect is the same.)

Every time you make a new post, you invalidate all thousand (ten thousand?
100k? million?) older pages. It's absolutely moronic. Google has no chance of
keeping up. You make one new post and Google has to re-index thousands of
pages.

The proper solution is to make pages "fill up" then have your root page point
to the highest numbered page. Example: <http://omgpagination.tumblr.com/>
would logically be page 600, then the "Older Posts" button would link to page
599. Instead, everybody right now makes / always be page 1, "Older Posts"
always links to page 2, etc. But those URLs aren't content stable and every
update invalidates your cache of the entire site. Your oldest posts on your
site should always be on page 1, not a moving target of page {TOTAL_POSTS /
POSTS_PER_PAGE}.

In short: be a little more clever and do the right thing for your caches.
What's good for your caches is inevitably good for your users too.

~~~
cfinke
_Every time you make a new post, you invalidate all thousand (ten thousand?
100k? million?) older pages. It's absolutely moronic. Google has no chance of
keeping up. You make one new post and Google has to re-index thousands of
pages._

You shouldn't be allowing Google to index /page/2, /page/3, /page/4; that
content is obviously going to change, and no user is ever going to search for
"page 9 of the archives of example.com."

~~~
seiji
You would think so, but at least tumblr isn't restricting it:
<http://www.google.com/search?q=tumblr+/page/300>

------
etcet
This is probably the last chance I'll get to let everyone know that Hacker
News has recently started to paginate comment threads (see my submission
<https://news.ycombinator.com/item?id=3746568>, which apparently very few
people saw).

I definitely have an axe to grind because it breaks my code, but I really
believe it's very bad for discussions. In particular the case of only a single
comment and it's children appearing on the first page of comments on threads
with large number of comments is the biggest problem. It leads to only one
response to the article being heard and has the side effect of greatly
encouraging piggy-backing on the "first post", as it were.

edit: when I say 'my code' I mean my code that's forked from wvl's
hckrnews.com extension and any other extension that highlights new posts since
you last opened the discussion.

~~~
Evgeny
Additionally, I have a habit of opening a browser window and all of the
discussions I want to read each in its own tab.

This browser window may be sitting in the background for hours if I'm busy,
and by the time I get to read it, reach the end and press "More" I'm presented
with "unknown or expired link" which, to me, is the culmination of disrespect
for the reader.

~~~
Strom
I get that expired link nonsense even if I immediately start reading the
comments. It works only if I skip reading most of the comments.

------
georgemcbay
"Pagination is also friction. Ever been on a forum where you wished like hell
the other people responding to the thread had read all four pages of it before
typing their response?"

I mostly agree with wumpus here as this relates to search results, but it is
interesting that forums are brought into it because forums (generally the
smaller, community type forums with long-tail discussions as opposed to reddit
or even HN where discussions are generally about 24 hours max and then
dropped) are the one place I absolutely love pagination.

The unfolding discussion of a particular thread tends to have a timeline in my
brain that maps to the pagination of the thread. eg. Oh, subtopic XYZ, that
first came up at about page 5... lemme jump over there and refresh my mind on
how that came up.

Taking away pagination in forums would be a net negative for me, much like
code folding is a net negative for me (I tend to have a map of the code in my
mind that is impossible to keep if the code is folded in some random
configuration).

Granted, this is subjective and entirely personal, so I'm not saying he's
wrong (or that code folding is wrong for everyone), just that getting rid of
pagination is not necessarily great for all people in all situations.

~~~
tsewlliw
I can't agree more about code folding. The shape of the code lets me use
visual patterns instead of actually thinking about the parse tree

~~~
tfm
I thought I was the only one! (sob) I've tried folding, so many times, but it
just seems like I'm fighting against it. I don't know that it's the shape of
the code that's being hidden that spoils it, maybe I'm just a bottom-up kinda
guy.

Maybe there is a need for a support group here.

~~~
EvilTerran
Have you seen Notepad++'s new document map feature? It sounds right up your
street, as an alternative to folding for getting up & down long code files
more quickly:

<http://notepad-plus-plus.org/assets/images/docMap2.png> (on the right hand
side)

------
jedc
The worst thing you can do if you implement infinite scroll?: Put key
navigation links in your footer.

Facebook does this right now and it _seriously_ pisses me off. Though in
Facebook's case they do eventually stop loading more updates so I can click on
something in the footer, but other sites definitely don't.

Please don't do this.

~~~
citricsquid
A tip: hit "end" on your keyboard then "escape", it will terminate the loading
of the next set of pages and allow you to access the links.

~~~
jedc
Unfortunately don't have an "end" key on my MacBook Pro!

~~~
anonova
You can emulate this with Cmd+Down.

------
crdoconnor
"It isn't just oddball disemvowelled companies, either. Twitter's timeline and
Google's image search use a similar endless pagination approach. Either the
page loads more items automatically when you scroll down to the bottom, or
there's an explicit "show more results" button.

Pagination is also friction."

Actually if you're surfing on a flaky internet connection, endless pagination
has MORE friction. With pagination you can click on the "next" button again if
it doesn't load the first time.

If the javascript doesn't want to fire off another request in the endless
pagination series and the last one didn't work, you're just screwed.

This makes facebook especially, incredibly annoying to use on flaky wifi.

~~~
brigade
Or if your browser unloads the page to save memory (it helps that every
additional page increases memory footprint!), or crashes, or you want to
bookmark your place and come back later, or you're looking for a post by date,
or a million other reasonable scenarios.

Endless pagination only makes sense if you consider content after ~4-5 pages
to be near worthless and don't intend for people ever to read it.

------
ChrisLTD
I despise endless pagination. I do most of my browsing on mobile devices these
days, and endless pagination can quickly overload the measly RAM constraints
on my iPad and iPhone resulting in a crash.

~~~
harisenbon
I've been wanting to play around with "scrolling pagination" as opposed to an
"endless pagination." Where items are removed from the top of the list as they
are added to the bottom, so you have a low-memory version of endless
pagination.

Curious how much havoc that would wreck on the scrollbar & swipe scrolling on
mobile.

~~~
threecreepio
I have a site in progress that's used an endless paging with a sliding window,
so after 5 pages it'd clip the top page. It was a little irritating in that
you could notice that something different was happening with the scrollbar
once you hit the limit, but other than that it did work well on mobile
devices.

In the end we had to replace the endless bit with a big "load more" button
though, for unrelated reasons.

------
chrislomax
I don't see why pagination has to go away any time soon? I can't stand
Facebook auto loading more content, I end up dragging too far when it has auto
loaded and I have not noticed, I spend more time looking at the scroll bar
than the content!

I think the analogy of the forum posts are bad as well where people don't read
the previous 4 pages, I think the issue more with forums is that there is a
large thread to follow and it generally has to be followed from the beginning.
You have generally landed on page 20 of a forum post because it has an answer
to a query you put into a search engine. You don't land on page 20 from the
forum itself!

In this I am a firm believer that if it ain't broke, don't try to fix it. Why
should I as a developer over think about maintaining page position when
clicking the back button or showing different paginated content to search
engines for indexing? I don't feel like I am putting a lot on the user and I
always know where I am with paginated content.

------
simonbrown
Another problem with endless scrolling: It often results in very small scroll
bars which can be hard to use.

~~~
lolilives
I'm going to have to agree. Another problem with endless pagination is that it
makes it difficult for me to refer to content.

For example: "Look at the blue shirt on page 5" rather than "Look at the blue
shirt visible after about 30 seconds of scrolling down"

Also, when the page is reloaded, I have to scroll all the way down to where I
was (which may take longer than I want it to because the page needs to load
everything before my target).

~~~
codinghorror
wouldn't you link directly to the blue shirt item?

------
haberman
> In a perfect world, every search would result in a page with a single item:
> exactly the thing you were looking for.

Not everything is search. Sometimes you genuinely want to see the list. eg.
transactions in your bank account, messages in your inbox, posts on your
Facebook wall, etc.

~~~
georgefox
Also, who's to say you're only searching for one item? Ever searched for a
used car on Craigslist? You probably want to see more than one result.

Even if you were only searching for one item (say you're searching Google for
an article you read a few weeks ago), sometimes alternate results are useful
too. What's wrong with discovering something new?

~~~
swah
He acknowledges that, but if there was a way to see just the listing you're
going to accept (of course that's impossible, so they show the first best
matches) wouldn't you want it?

------
orthecreedence
Normally I shy away from "end of" or "death of" posts, but this makes sense.
Pagination evolved from people having 56k modems and it taking two minutes to
load a page. Add some images in, and you're going to be there a while.

I really like the idea of intelligent search and only showing relevant content
vs just showing everything on the page and hoping people will find it. It
seems so obvious now, but the status quo is so ingrained in us. Sometimes I
_do_ want to see the 873rd image, sometimes it's just the one I'm looking for,
but burried under endless pages of other images. Having some sort of search
(either tagging, date, or text) can really make this process easier for users.

------
read_wharf
"In a perfect world, every search would result in a page with a single item:
exactly the thing you were looking for."

That's just the opposite extreme of thousands of paginations.

I, personally, don't search that way. I generally look for a few good results,
and then draw my conclusions based on the total of what I read. Rarely do I
look for _the page_ that has _the answer_. Maybe because I'm not looking for
answers.

------
AznHisoka
Pagination still is important from a search engine perspective. You want
search engines to crawl your deep pages, and pagination is a great way of
giving them that path. Relying on things like AJAX, or worse hiding all the
content behind a search box.. will lead to less pages crawled.

------
user-id
A tumbledry.org article on doing infinite scroll better was posted to HN about
a year ago (<http://news.ycombinator.com/item?id=2592741>) and it was most the
way towards doing infinite scroll right.

------
duaneb
Here's another use case perspective: consider the webcomic. There's a case
where you're not searching for something—that is, every single "page" is
possibly valuable content—but there's still hundreds, potentially thousands of
pages to display.

The problem comes in when someone is looking for that one comic they saw a few
years ago. Unlike xkcd, this comic hasn't implemented full-text search yet, so
if they can't do a manual comparison sort, they have to go over every comic.
What's a natural way to do this?

Still new to web development and user interface design in general; this is
probably a different problem altogether.

~~~
uiri
I think that the solution is right there in your question — full-text search.
xkcd takes this to an extreme perhaps, but even just transcribing the text in
each comic ought to be enough to make it decently searchable. That and titles.
I can usually get to an xkcd via the title or some words similar to the title
which are usually in the comic itself. This may not work for comics which tend
to be visual gags though.

If it is too much of a pain to manually transcribe the text, perhaps using
OCR?

~~~
dubya
For a lot of things, a huge spatial visual index would be more useful than the
text. Microsoft had some sort of project where you could have several thousand
photos onscreen at a time. An analogous case from the physical world would be
searching for a particular image you remember from a thick book of artwork. I
think this would be pretty easy for most people, but I don't know of a good
digital version. Maybe the xkcd archives would be a good testbed.

------
javajosh
Kind of a meta comment, but why does a post that should have been called "A
Viable Alternative to Pagination" is instead titled "The End of Pagination"?
Or maybe it could be more mysterious like, "What happens when you give up
paginating the web?" The final title _declares_ the end of something, which is
needlessly confrontational and emotional (especially in geeks for whom it's
especially distressing since, factually, pagination is still occurring all
over the place).

tl;dr Nice thoughts about new ways to interact with web data with a needlessly
sensational, counter-productive title.

------
Skywing
Infinite scrolling was what killed Digg, for my friends. I admit, I never did
use Digg. I do remember my friends telling me about when the "new" Digg
launch, though. They cited the infinite scroll as one of the major things that
broke usability, for them. He'd check it throughout the day and used the pages
as sort of a stopping / reference point that he'd know to skip to when he got
a chance to check it again later. The infinite scroll meant he had to sit
there and force it to load until he saw the articles that he left off at.

------
bambax
It would seem the solution to infinite pagination isn't infinite scroll (which
is the exact same concept, only badly implemented) but _sorting and
filtering_.

If there are too many results, what I want is some way of filtering out the
results that are obviously not relevant (because not in the correct language,
or too old, or too recent, etc.), not the ability to "scroll" forever
(infinite scrolling adds DOM elements to the page to the point where the page
is so big, nothing works properly anymore).

------
taitems
One of the things that always killed me about the Forrst experience was that
sure, it had great pagination, but it was only one particular page/view. If
you were navigating snaps or code posts individually you were stuck with
manually clicking next and previous buttons like the good old days. It's one
thing to come up with cool techniques, it's a whole new bag to apply it
effectively.

~~~
kylebragger
Yeah, we admittedly don't do this very well right now.

------
Pewpewarrows
For those wanting to see an interesting approach to solving this problem (not
written by me): <http://tumbledry.org/2011/05/12/screw_hashbangs_building>

Associated HN discussion: <http://news.ycombinator.com/item?id=2592741>

------
duncans
I think Alex Micek's infinite scroll is the most impressive I've seen -
progressively-enhanced and doesn't break the back button:
<http://tumbledry.org/2011/05/12/screw_hashbangs_building>. Impressive bit of
work from a dentistry student.

~~~
duncans
In fact, was discussed on HN nearly a year ago:
<http://news.ycombinator.com/item?id=2592741>

------
jamesrcole
Honestly, I'm not sure what I think of infinite scrolling, but most of the
complaints about it are really about problems with current implementations
(e.g. back-button issues), and the people don't seem to be considering whether
there might be technological fixes to those problems.

------
matthew-wegner
AutoPatchWork for Chrome automatically infinite-scrolls _many_ sites
(including Hacker News):
[https://chrome.google.com/webstore/detail/aeolcjbaammbkgaiag...](https://chrome.google.com/webstore/detail/aeolcjbaammbkgaiagooljfdepnjmkfd)

~~~
rektide
AutoPager is on both Chrome and Firefox and bloody changed my life. Parent was
TL;DR: I already knew this is bloody essential, totally the only proper way to
do things, and that one cannot go back after having tried.

Of course, the other major split from Atwood is that I think he's dead wrong.
It's not about delivering better targetted results. That will, inevitably,
fail. It's about the other part he briefly mentions- reducing irrelevant
friction. The reason Google suceeded only with shorter results was because the
friction of scanning through and filtering a result was so very high (taking a
couple excerpts, a title, furrowing one's brow, thinking hard, and making a
binary click/ don't click value-judgement guess).

[https://chrome.google.com/webstore/detail/mmgagnmbebdebebbcl...](https://chrome.google.com/webstore/detail/mmgagnmbebdebebbcleklifnobamjonh)
<https://addons.mozilla.org/en-US/firefox/addon/autopager/>

------
DanielBMarkham
_In a perfect world, every search would result in a page with a single item:
exactly the thing you were looking for._

But I'm looking for a list of similar items in order to compare them. Many --
if not most -- times I perform a search I have but a vague idea of what I
want. I throw something at the engine, take a look at the results, then decide
whether to restate my search or not. A list is a perfectly good answer to many
questions.

And this business about pagination? I'm sorry Jeff, but infinite scroll must
die. It's a god-awful user interface mess. If you like this sort of thing, why
have pages at all? The web should be just a seamless, flowing experience
without any context-switching.

I almost feel like we are purposelly being baited by Atwood. (Bloggers?
Purposely stirring up trouble for pageviews? Say it ain't so) It kills the
entire concept of a page. It destroys the user's ability to know how much of
something they are seeing, and makes linking a disaster.

Make it go away.

------
retube
His arguments _for_ pagination seem to totally trounce those against! In terms
of user experience, ease of implementation and technically (deep links,
spidering etc). I've come away from reading that article absolutely against
infinite scroll.

------
tomjen3
In general, don't paginate at all. Your two thausand word article should be on
one page.

------
mncaudill
Coincidentally, I felt compelled to write a bunch of words about the issues
with pagination just this past weekend.

<http://nolancaudill.com/2012/03/24/pagination/>

------
epikur
I've been using the Autopatchwork chrome extension for quite a while now. It's
gotten buggier as more websites have implemented their own infinite scrolling,
but like Adblock, it greatly improves web browsing.

------
instakill
I hate infinite scroll as Facebook implements it with the news feed. It's
impossible to get to the footer because something else always loads. I have to
disable my airport temporarily to get there.

------
fredwu
FYI here is a jQuery plugin for doing endless pagination:
<https://github.com/fredwu/jquery-endless-scroll>

------
duaneb
Something that Google may think about is the value of being on the front page
of a google search: such a position is devalued if there is no literal front
page.

------
alexchamberlain
To make this effective, we need to be able to artificially control the scroll
bar, like we can now artificially control history.

------
mase
Jeff mentioned this in the article, but it really forces you to rethink your
footer if you put important links there.

~~~
thrusong
This is a problem I've noticed with Facebook's footer. On quite a few pages
you just can't get to it. I thought it was an obvious problem but it doesn't
seem like a lot of sites I use that implement it have put much thought into
it.

------
drivebyacct2
I just _love_ clicking on something in an infinite scroll and then getting to
press "back" later and waiting for 20 pages of results to stream back in to
sift through.

~~~
kennu
I think infinite scrolling works best for uses cases where you don't typically
open links after you've scrolled down. In Facebook's case, most of the
interaction is ajax (Like, Commenting, etc.) so you don't lose the position.

For me Facebook works pretty well. I like to keep quickly scrolling down
(using trackpad inertial scrolling) until I've skimmed over everything new in
the feed. Forcing me to move and pinpoint the cursor to click a "Next page"
link would certainly add friction to that.

Google's search results, OTOH, are a completely different use case, where you
want to have full control to the paginated browsing, constantly navigating
back and forth.

Perhaps this involves a distinction between "lean back" and "lean forward" use
cases. Leaning back, it's nice to just keep on scrolling with simple finger
swipes.

------
goggles99
Pagination provides structure which most humans prefer (myself included). I
cannot stand endless scrolling with loading pauses every so often if I scroll
too quickly. In Google searches, I have my results set at 50 results per page
and when I am conducting research, this provides me a guideline when I know it
is time to try some different search terms.

Some hybrid scheme may be more acceptable in which the page folds segments
that you have scrolled a certain distance past, and unfolds a segment that you
are entering. A Floating nav helper could display which segment/page you are
currently on and perhaps even provide the ability to jump a previous/next or x
segment. Best of both worlds™ navigation

------
tbsdy
It's a great idea, and actually slashdot is already doing this on their front
page. However, there are some problems:

1\. If I want to find a particular item within the first "page" of results,
but I've scrolled down 10 pages of results, find that item becomes pretty
tricky!

2\. Let's say I have a user who scrolls down 1000 pages. What does this to the
browser? I'd imagine it grinds to a halt...

The only solution would be to have a load page for the _previous_ results.
Here again, the issue I highlighted in point 1 becomes more emphasized.
Especially if the search results change while it reloads (though you might
keep the results for the user's session - but this sounds like a scaling
issue).

------
funkah
Pretty cool until you click a link in the list, go back, and make a sad face
when you realize the list has reverted to the first 20 items or whatever. Then
you have to scroll, wait, scroll, wait, scroll to get back to where you were.

~~~
JamesLeonis
Tumblr implemented endless pagination with exactly this problem. This came up
when you tried to reblog/reply to a post or view "read more" content and
forgot to open another tab. They have since implemented a regular pagination
system that fixes the back button problem.

