     } assoc-union format nl ;
 
 : hacker-news. ( -- )
-    25 hacker-news-items
+    30 hacker-news-recent-items
     banner.
     [ 1 + post. ] each-index ;

        [ dup "by" of [ " by " write-text [ "by" of ] [ post>user-url ] bi write-link ] [ drop ] if ]
        ! [ dup postedAgo>> [ " " write-text postedAgo>> write-text ] [ drop ] if ]
        [
            " | " write-text
            [ "descendants" of [ "discuss" ] [ "%d comments" sprintf ] if-zero ]
            [ post>comments-url ] bi write-link nl nl
        ]
    } cleave ;


! Copyright (C) 2012 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs classes.tuple colors.constants
colors.hex combinators concurrency.combinators formatting fry
hashtables http.client io io.styles json json.reader kernel make
math math.parser sequences splitting ui urls ;
IN: hacker-news

<PRIVATE

: hacker-news-recent-ids ( -- seq )
    "https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty"
    http-get nip json> ;

: hacker-news-id>json-url ( n -- url )
    number>string
    "https://hacker-news.firebaseio.com/v0/item/" ".json?print=pretty" surround ;

: hacker-news-items ( seq -- seq' )
    [ hacker-news-id>json-url http-get nip json> ] parallel-map ;

: hacker-news-recent-items ( n -- seq )
    [  hacker-news-recent-ids ] dip head hacker-news-items ;

: write-title ( title url -- )
    '[
