diff options
author | Thanh Vuong <thanhvg@gmail.com> | 2019-08-17 09:41:46 -0600 |
---|---|---|
committer | Thanh Vuong <thanhvg@gmail.com> | 2019-08-17 09:41:46 -0600 |
commit | 40eb75bbcf0c0ee7f0432b455fa0b3590059b522 (patch) | |
tree | 2d8ec013605dc630ea2b9b60811c19dd5d2e2c93 |
wip
-rw-r--r-- | .gitignore | 11 | ||||
-rw-r--r-- | Cask | 10 | ||||
-rw-r--r-- | TODOs.org | 8 | ||||
-rw-r--r-- | hnreader.el | 78 | ||||
-rw-r--r-- | test/frontpage.html | 1057 |
5 files changed, 1164 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..206569d --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +# Compiled +*.elc + +# Packaging +.cask + +# Backup files +*~ + +# Undo-tree save-files +*.~undo-tree @@ -0,0 +1,10 @@ +(source gnu) +(source melpa) + +;; (package-file "TODO") + +(development + (depends-on "f") + (depends-on "ecukes") + (depends-on "ert-runner") + (depends-on "el-mock")) diff --git a/TODOs.org b/TODOs.org new file mode 100644 index 0000000..491f55e --- /dev/null +++ b/TODOs.org @@ -0,0 +1,8 @@ +#+STARTUP: align fold hidestars oddeven indent +#+SEQ_TODO: TODO(t) INPROGRESS(i) | DONE(d) CANCELED(c) +* why not using hn api +hn api will invole a lot of rest requests which would not be fast for emacs +also the data layout is already available at hn webiste, one curl call and +then parse them to org would be faster +* parse front page +now what diff --git a/hnreader.el b/hnreader.el new file mode 100644 index 0000000..091fa21 --- /dev/null +++ b/hnreader.el @@ -0,0 +1,78 @@ +(require 'request) +(require 'shr) +(require 'dom) +(require 'promise) +(require 'cl-lib) + + +(defvar hn--buffer "*HN*" + "Buffer for HN pages.") + +(defun hnreader--get-hn-buffer () + "Get hn buffer." + (get-buffer-create hn--buffer)) + +(defun hnreader--promise-dom (url) + "Promise (url . dom) from URL with curl." + (promise-new + (lambda (resolve reject) + (request url + :parser (lambda () (libxml-parse-html-region (point-min) (point-max))) + :error (cl-function (lambda (&rest args &key error-thrown &allow-other-keys) + (message "bad") + (funcall reject error-thrown))) + :success (cl-function (lambda (&key data &allow-other-keys) + (message "yay") + (setq thanh data) + ;; (message "%s" data) + (funcall resolve data))))))) + +(defun hnreader--prepare-buffer (buf &optional msg) + "Print MSG message and prepare window for BUF buffer." + (when (not (equal (window-buffer) buf)) + ;; (switch-to-buffer-other-window howdoi-buffer)) + (display-buffer buf '(display-buffer-use-some-window (inhibit-same-window . t)))) + (with-current-buffer buf + (read-only-mode -1) + (erase-buffer) + (insert (if msg + msg + "Loading..."))) + buf) + +(defun hnreader--print-frontpage-item (thing subtext) + "Print THING dom and SUBTEXT dom." + (insert (format "\n* %s %s (%s) [%s]\n" + ;; rank + (dom-text (dom-by-class thing "^rank$")) + ;; title + (dom-text (dom-by-class thing "^storylink$")) + ;; points + (dom-text (dom-by-class subtext "^score$")) + ;; comments + (dom-text (last (dom-children subtext))))) + ;; link + (insert (dom-attr (dom-by-class thing "^storylink$") 'href) "\n" ) + ;; comment link + (insert "https://news.ycombinator.com/item?id=" (dom-attr thing 'id))) + +(defun hnreader--print-frontpage (dom buf) + "Print raw DOM on BUF." + (message "am i here") + (let ((things (dom-by-class dom "^athing$")) + (subtexts (dom-by-class dom "^subtext$"))) + (with-current-buffer buf + (read-only-mode -1) + (erase-buffer) + (insert "#+STARTUP: overview indent\n#") + (cl-mapcar #'hnreader--print-frontpage-item things subtexts)))) + +(defun hnreader-frontpage () + "Testing." + (hnreader--prepare-buffer (hnreader--get-hn-buffer)) + (promise-chain (hnreader--promise-dom "https://news.ycombinator.com/news") + (then (lambda (result) + (message "got the dom") + (hnreader--print-frontpage result (hnreader--get-hn-buffer)))) + (promise-catch (lambda (reason) + (message "catch error in promise prontpage: %s" reason))))) diff --git a/test/frontpage.html b/test/frontpage.html new file mode 100644 index 0000000..e7e469f --- /dev/null +++ b/test/frontpage.html @@ -0,0 +1,1057 @@ +<html op="news"> + +<head> + <meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta name="referrer" content="origin"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link rel="stylesheet" type="text/css" href="frontpage_files/news.css"> + <link rel="shortcut icon" href="https://news.ycombinator.com/favicon.ico"> + <link rel="alternate" type="application/rss+xml" title="RSS" + href="https://news.ycombinator.com/rss"> + <title>Hacker News</title> +</head> + +<body> + <center> + <table id="hnmain" width="85%" cellspacing="0" cellpadding="0" border="0" + bgcolor="#f6f6ef"> + <tbody> + <tr> + <td bgcolor="#ff6600"> + <table style="padding:2px" width="100%" cellspacing="0" + cellpadding="0" border="0"> + <tbody> + <tr> + <td style="width:18px;padding-right:4px"><a + href="https://news.ycombinator.com/"><img + src="frontpage_files/y18.gif" + style="border:1px white solid;" width="18" + height="18"></a></td> + <td style="line-height:12pt; height:10px;"><span + class="pagetop"><b class="hnname"><a + href="https://news.ycombinator.com/news">Hacker + News</a></b> + <a href="https://news.ycombinator.com/newest">new</a> | <a + href="https://news.ycombinator.com/front">past</a> | <a + href="https://news.ycombinator.com/newcomments">comments</a> + | <a href="https://news.ycombinator.com/ask">ask</a> | <a + href="https://news.ycombinator.com/show">show</a> | <a + href="https://news.ycombinator.com/jobs">jobs</a> | <a + href="https://news.ycombinator.com/submit">submit</a> + </span></td> + <td style="text-align:right;padding-right:4px;"><span + class="pagetop"> + <a + href="https://news.ycombinator.com/login?goto=news">login</a> + </span></td> + </tr> + </tbody> + </table> + </td> + </tr> + <tr id="pagespace" title="" style="height:10px"></tr> + <tr> + <td> + <table class="itemlist" cellspacing="0" cellpadding="0" border="0"> + <tbody> + <tr class="athing" id="20721736"> + <td class="title" valign="top" align="right"><span + class="rank">1.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20721736" + href="https://news.ycombinator.com/vote?id=20721736&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"> + <a href="http://japanesecomplete.com/777" class="storylink"> + The most frequent 777 characters give + 90% coverage of Kanji in the wild + </a> + <span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=japanesecomplete.com"><span + class="sitestr">japanesecomplete.com</span></a>)</span> + </td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20721736">97 points</span> by + <a href="https://news.ycombinator.com/user?id=sova" + class="hnuser">sova + </a> + <span class="age"> + <a href="https://news.ycombinator.com/item?id=20721736">2 + hours ago + </a> + </span> + <span id="unv_20721736"> + </span> | + <a href="https://news.ycombinator.com/hide?id=20721736&goto=news">hide + </a> + | + <a href="https://news.ycombinator.com/item?id=20721736"> + 47 comments + </a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20721448"> + <td class="title" valign="top" align="right"><span + class="rank">2.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20721448" + href="https://news.ycombinator.com/vote?id=20721448&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.nytimes.com/2019/08/15/climate/hottest-july-noaa.html" + class="storylink">NOAA Data Confirms July Was Hottest + Month Ever Recorded</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=nytimes.com"><span + class="sitestr">nytimes.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20721448">113 points</span> by + <a href="https://news.ycombinator.com/user?id=digital55" + class="hnuser">digital55</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20721448">3 + hours ago</a></span> <span id="unv_20721448"></span> | + <a + href="https://news.ycombinator.com/hide?id=20721448&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20721448">37 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20721715"> + <td class="title" valign="top" align="right"><span + class="rank">3.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20721715" + href="https://news.ycombinator.com/vote?id=20721715&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.filfre.net/2019/08/alone-in-the-dark/" + class="storylink">Alone in the Dark</a><span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=filfre.net"><span + class="sitestr">filfre.net</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20721715">33 points</span> by + <a href="https://news.ycombinator.com/user?id=myth_drannon" + class="hnuser">myth_drannon</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20721715">2 + hours ago</a></span> <span id="unv_20721715"></span> | + <a + href="https://news.ycombinator.com/hide?id=20721715&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20721715">6 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20719095"> + <td class="title" valign="top" align="right"><span + class="rank">4.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20719095" + href="https://news.ycombinator.com/vote?id=20719095&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://async.rs/blog/announcing-async-std/#" + class="storylink">Async-std: an async port of the Rust + standard library</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=async.rs"><span + class="sitestr">async.rs</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20719095">235 points</span> by + <a href="https://news.ycombinator.com/user?id=JoshTriplett" + class="hnuser">JoshTriplett</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20719095">9 + hours ago</a></span> <span id="unv_20719095"></span> | + <a + href="https://news.ycombinator.com/hide?id=20719095&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20719095">169 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20719348"> + <td class="title" valign="top" align="right"><span + class="rank">5.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20719348" + href="https://news.ycombinator.com/vote?id=20719348&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.cnbc.com/2019/08/15/japan-surpasses-china-as-largest-foreign-holder-of-us-treasurys.html" + class="storylink">Japan surpasses China as largest foreign + holder of US Treasurys</a><span class="sitebit comhead"> + (<a + href="https://news.ycombinator.com/from?site=cnbc.com"><span + class="sitestr">cnbc.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20719348">141 points</span> by + <a href="https://news.ycombinator.com/user?id=hker" + class="hnuser">hker</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20719348">8 + hours ago</a></span> <span id="unv_20719348"></span> | + <a + href="https://news.ycombinator.com/hide?id=20719348&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20719348">52 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20721312"> + <td class="title" valign="top" align="right"><span + class="rank">6.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20721312" + href="https://news.ycombinator.com/vote?id=20721312&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a href="http://sixteenmillimeter.com/" + class="storylink">Free and open-source tools for analog + filmmaking</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=sixteenmillimeter.com"><span + class="sitestr">sixteenmillimeter.com</span></a>)</span> + </td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20721312">45 points</span> by + <a href="https://news.ycombinator.com/user?id=nessunodoro" + class="hnuser">nessunodoro</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20721312">4 + hours ago</a></span> <span id="unv_20721312"></span> | + <a + href="https://news.ycombinator.com/hide?id=20721312&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20721312">3 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20721433"> + <td class="title" valign="top" align="right"><span + class="rank">7.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20721433" + href="https://news.ycombinator.com/vote?id=20721433&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="http://alchemist.camp/articles/elixir-releases-deployment-render" + class="storylink">Effortless Elixir Releases and + Deployment</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=alchemist.camp"><span + class="sitestr">alchemist.camp</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20721433">41 points</span> by + <a href="https://news.ycombinator.com/user?id=AlchemistCamp" + class="hnuser">AlchemistCamp</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20721433">3 + hours ago</a></span> <span id="unv_20721433"></span> | + <a + href="https://news.ycombinator.com/hide?id=20721433&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20721433">6 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20720922"> + <td class="title" valign="top" align="right"><span + class="rank">8.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20720922" + href="https://news.ycombinator.com/vote?id=20720922&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a href="https://github.com/google/nixery" + class="storylink">Nixery: Transparently build and serve + containers using Nix</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=github.com"><span + class="sitestr">github.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20720922">74 points</span> by + <a href="https://news.ycombinator.com/user?id=kimburgess" + class="hnuser">kimburgess</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20720922">5 + hours ago</a></span> <span id="unv_20720922"></span> | + <a + href="https://news.ycombinator.com/hide?id=20720922&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20720922">12 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20721609"> + <td class="title" valign="top" align="right"><span + class="rank">9.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20721609" + href="https://news.ycombinator.com/vote?id=20721609&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.pulltech.net/article/1566007822-Google-plans-to-deprecate-FTP-URL-support-in-Chrome" + class="storylink">Google Plans to Deprecate FTP URL + Support in Chrome</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=pulltech.net"><span + class="sitestr">pulltech.net</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20721609">78 points</span> by + <a href="https://news.ycombinator.com/user?id=github-cat" + class="hnuser">github-cat</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20721609">3 + hours ago</a></span> <span id="unv_20721609"></span> | + <a + href="https://news.ycombinator.com/hide?id=20721609&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20721609">89 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20720095"> + <td class="title" valign="top" align="right"><span + class="rank">10.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20720095" + href="https://news.ycombinator.com/vote?id=20720095&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.reddit.com/r/algotrading/comments/cr7jey/ive_reproduced_130_research_papers_about/" + class="storylink">I've reproduced 130 research papers + about “predicting the stock market”</a><span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=reddit.com"><span + class="sitestr">reddit.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20720095">337 points</span> by + <a href="https://news.ycombinator.com/user?id=starpilot" + class="hnuser">starpilot</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20720095">7 + hours ago</a></span> <span id="unv_20720095"></span> | + <a + href="https://news.ycombinator.com/hide?id=20720095&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20720095">112 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20720630"> + <td class="title" valign="top" align="right"><span + class="rank">11.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20720630" + href="https://news.ycombinator.com/vote?id=20720630&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://fastmail.blog/2019/08/16/jmap-new-email-open-standard/" + class="storylink">Making email more modern with + JMAP</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=fastmail.blog"><span + class="sitestr">fastmail.blog</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20720630">61 points</span> by + <a href="https://news.ycombinator.com/user?id=mfsch" + class="hnuser">mfsch</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20720630">6 + hours ago</a></span> <span id="unv_20720630"></span> | + <a + href="https://news.ycombinator.com/hide?id=20720630&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20720630">20 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20715476"> + <td class="title" valign="top" align="right"><span + class="rank">12.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20715476" + href="https://news.ycombinator.com/vote?id=20715476&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a href="https://knobattack.com/" + class="storylink">Key Negotiation of Bluetooth + Attack</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=knobattack.com"><span + class="sitestr">knobattack.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20715476">275 points</span> by + <a href="https://news.ycombinator.com/user?id=Daviey" + class="hnuser">Daviey</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20715476">15 + hours ago</a></span> <span id="unv_20715476"></span> | + <a + href="https://news.ycombinator.com/hide?id=20715476&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20715476">91 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20718982"> + <td class="title" valign="top" align="right"><span + class="rank">13.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20718982" + href="https://news.ycombinator.com/vote?id=20718982&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://blog.floydhub.com/exploring-dna-with-deep-learning/" + class="storylink">Exploring DNA with Deep + Learning</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=floydhub.com"><span + class="sitestr">floydhub.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20718982">91 points</span> by + <a href="https://news.ycombinator.com/user?id=ReDeiPirati" + class="hnuser">ReDeiPirati</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20718982">9 + hours ago</a></span> <span id="unv_20718982"></span> | + <a + href="https://news.ycombinator.com/hide?id=20718982&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20718982">11 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20717240"> + <td class="title" valign="top" align="right"><span + class="rank">14.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20717240" + href="https://news.ycombinator.com/vote?id=20717240&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://news.ycombinator.com/item?id=20717240" + class="storylink">Launch HN: SannTek (YC S19) – + Breathalyzer for Cannabis</a></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20717240">184 points</span> by + <a href="https://news.ycombinator.com/user?id=Noah_SannTek" + class="hnuser">Noah_SannTek</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20717240">12 + hours ago</a></span> <span id="unv_20717240"></span> | + <a + href="https://news.ycombinator.com/hide?id=20717240&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20717240">357 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20721286"> + <td class="title" valign="top" align="right"><span + class="rank">15.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20721286" + href="https://news.ycombinator.com/vote?id=20721286&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a href="https://github.com/vmware/octant" + class="storylink">VMware Octant web-based platform to + better understand Kubernetes clusters</a><span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=github.com"><span + class="sitestr">github.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20721286">18 points</span> by + <a href="https://news.ycombinator.com/user?id=nwrk" + class="hnuser">nwrk</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20721286">4 + hours ago</a></span> <span id="unv_20721286"></span> | + <a + href="https://news.ycombinator.com/hide?id=20721286&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20721286">3 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20720513"> + <td class="title" valign="top" align="right"><span + class="rank">16.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20720513" + href="https://news.ycombinator.com/vote?id=20720513&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.bloomberg.com/news/articles/2019-08-13/u-s-farmers-stung-by-tariffs-now-face-a-3-5-billion-corn-loss" + class="storylink">U.S. Farmers Stung by Tariffs Now Face a + $3.5B Corn Loss</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=bloomberg.com"><span + class="sitestr">bloomberg.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20720513">198 points</span> by + <a href="https://news.ycombinator.com/user?id=paulpauper" + class="hnuser">paulpauper</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20720513">6 + hours ago</a></span> <span id="unv_20720513"></span> | + <a + href="https://news.ycombinator.com/hide?id=20720513&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20720513">106 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20720230"> + <td class="title" valign="top" align="right"><span + class="rank">17.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20720230" + href="https://news.ycombinator.com/vote?id=20720230&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.commentarymagazine.com/articles/o-oberlin-my-oberlin/" + class="storylink">O Oberlin, My Oberlin</a><span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=commentarymagazine.com"><span + class="sitestr">commentarymagazine.com</span></a>)</span> + </td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20720230">44 points</span> by + <a href="https://news.ycombinator.com/user?id=jseliger" + class="hnuser">jseliger</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20720230">7 + hours ago</a></span> <span id="unv_20720230"></span> | + <a + href="https://news.ycombinator.com/hide?id=20720230&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20720230">12 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20720170"> + <td class="title" valign="top" align="right"><span + class="rank">18.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20720170" + href="https://news.ycombinator.com/vote?id=20720170&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.stevanpopovic.com/arcs-of-seniority/" + class="storylink">Arcs of Seniority</a><span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=stevanpopovic.com"><span + class="sitestr">stevanpopovic.com</span></a>)</span> + </td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20720170">40 points</span> by + <a href="https://news.ycombinator.com/user?id=zdw" + class="hnuser">zdw</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20720170">7 + hours ago</a></span> <span id="unv_20720170"></span> | + <a + href="https://news.ycombinator.com/hide?id=20720170&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20720170">19 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20713283"> + <td class="title" valign="top" align="right"><span + class="rank">19.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20713283" + href="https://news.ycombinator.com/vote?id=20713283&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.blender.org/user-stories/japanese-anime-studio-khara-moving-to-blender/" + class="storylink">Japanese anime studio Khara moving to + Blender</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=blender.org"><span + class="sitestr">blender.org</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20713283">788 points</span> by + <a href="https://news.ycombinator.com/user?id=robin_reala" + class="hnuser">robin_reala</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20713283">20 + hours ago</a></span> <span id="unv_20713283"></span> | + <a + href="https://news.ycombinator.com/hide?id=20713283&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20713283">193 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20717224"> + <td class="title" valign="top" align="right"><span + class="rank">20.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20717224" + href="https://news.ycombinator.com/vote?id=20717224&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://blog.ycombinator.com/the-biggest-mistakes-first-time-founders-make/" + class="storylink">The Biggest Mistakes First-Time Founders + Make [video]</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=ycombinator.com"><span + class="sitestr">ycombinator.com</span></a>)</span> + </td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20717224">56 points</span> by + <a href="https://news.ycombinator.com/user?id=chrisa" + class="hnuser">chrisa</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20717224">11 + hours ago</a></span> <span id="unv_20717224"></span> | + <a + href="https://news.ycombinator.com/hide?id=20717224&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20717224">2 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20720111"> + <td class="title" valign="top" align="right"><span + class="rank">21.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20720111" + href="https://news.ycombinator.com/vote?id=20720111&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://github.blog/2019-08-16-highlights-from-git-2-23/" + class="storylink">Highlights from Git 2.23</a><span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=github.blog"><span + class="sitestr">github.blog</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20720111">90 points</span> by + <a href="https://news.ycombinator.com/user?id=digitalnalogika" + class="hnuser">digitalnalogika</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20720111">7 + hours ago</a></span> <span id="unv_20720111"></span> | + <a + href="https://news.ycombinator.com/hide?id=20720111&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20720111">12 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20713826"> + <td class="title" valign="top" align="right"><span + class="rank">22.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20713826" + href="https://news.ycombinator.com/vote?id=20713826&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a href="https://econcretetech.com/products" + class="storylink" rel="nofollow">ECONcrete: Protection + from hydrodynamic forces while generating marine + habitat</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=econcretetech.com"><span + class="sitestr">econcretetech.com</span></a>)</span> + </td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20713826">4 points</span> by + <a href="https://news.ycombinator.com/user?id=driekwartappel" + class="hnuser">driekwartappel</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20713826">2 + hours ago</a></span> <span id="unv_20713826"></span> | + <a + href="https://news.ycombinator.com/hide?id=20713826&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20713826">1 comment</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20716963"> + <td class="title" valign="top" align="right"><span + class="rank">23.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20716963" + href="https://news.ycombinator.com/vote?id=20716963&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://github.com/tridactyl/tridactyl/issues/1800" + class="storylink">All Tridactyl installations might get + removed by Firefox on Aug 21</a><span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=github.com"><span + class="sitestr">github.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20716963">90 points</span> by + <a href="https://news.ycombinator.com/user?id=anoopelias" + class="hnuser">anoopelias</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20716963">12 + hours ago</a></span> <span id="unv_20716963"></span> | + <a + href="https://news.ycombinator.com/hide?id=20716963&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20716963">75 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20701252"> + <td class="title" valign="top" align="right"><span + class="rank">24.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20701252" + href="https://news.ycombinator.com/vote?id=20701252&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.foreignaffairs.com/reviews/review-essay/2019-08-12/population-bust?spJobID=1701558439&spMailingID=60132624&spReportId=MTcwMTU1ODQzOQS2&spUserID=NTA0ODQwNzg0NDcS1&sp_mid=60132624&sp_rid=cm9iZXJ0QHRoZWJyb3dzZXIuY29tS0&utm_campaign=so_2019&utm_content=20190813&utm_medium=newsletters&utm_source=press_release" + class="storylink">The Population Bust</a><span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=foreignaffairs.com"><span + class="sitestr">foreignaffairs.com</span></a>)</span> + </td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20701252">60 points</span> by + <a href="https://news.ycombinator.com/user?id=ohaikbai" + class="hnuser">ohaikbai</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20701252">13 + hours ago</a></span> <span id="unv_20701252"></span> | + <a + href="https://news.ycombinator.com/hide?id=20701252&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20701252">114 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20719062"> + <td class="title" valign="top" align="right"><span + class="rank">25.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20719062" + href="https://news.ycombinator.com/vote?id=20719062&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://medium.com/prophecy-io/introducing-prophecy-io-cloud-native-data-engineering-1b9247596030" + class="storylink">Show HN: Prophecy.io – Cloud Native Data + Engineering</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=medium.com"><span + class="sitestr">medium.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20719062">47 points</span> by + <a href="https://news.ycombinator.com/user?id=ibains" + class="hnuser">ibains</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20719062">9 + hours ago</a></span> <span id="unv_20719062"></span> | + <a + href="https://news.ycombinator.com/hide?id=20719062&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20719062">20 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20718818"> + <td class="title" valign="top" align="right"><span + class="rank">26.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20718818" + href="https://news.ycombinator.com/vote?id=20718818&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://theintercept.com/2019/08/16/facebook-moderators-mental-health-accenture/" + class="storylink">Trauma Counselors Pressured to Divulge + Confidential Info About Facebook Mods</a><span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=theintercept.com"><span + class="sitestr">theintercept.com</span></a>)</span> + </td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20718818">88 points</span> by + <a href="https://news.ycombinator.com/user?id=jmsflknr" + class="hnuser">jmsflknr</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20718818">10 + hours ago</a></span> <span id="unv_20718818"></span> | + <a + href="https://news.ycombinator.com/hide?id=20718818&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20718818">28 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20716430"> + <td class="title" valign="top" align="right"><span + class="rank">27.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20716430" + href="https://news.ycombinator.com/vote?id=20716430&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="http://www.bbc.com/culture/story/20190808-the-subversive-messages-hidden-in-the-wizard-of-oz" + class="storylink">The subversive messages hidden in The + Wizard of Oz</a><span class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=bbc.com"><span + class="sitestr">bbc.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20716430">122 points</span> by + <a href="https://news.ycombinator.com/user?id=herendin2" + class="hnuser">herendin2</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20716430">13 + hours ago</a></span> <span id="unv_20716430"></span> | + <a + href="https://news.ycombinator.com/hide?id=20716430&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20716430">98 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20717428"> + <td class="title" valign="top" align="right"><span + class="rank">28.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20717428" + href="https://news.ycombinator.com/vote?id=20717428&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.scientificamerican.com/article/and-now-the-really-big-coal-plants-begin-to-close/" + class="storylink">Big Coal Plants Begin to Close</a><span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=scientificamerican.com"><span + class="sitestr">scientificamerican.com</span></a>)</span> + </td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20717428">253 points</span> by + <a href="https://news.ycombinator.com/user?id=artsandsci" + class="hnuser">artsandsci</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20717428">12 + hours ago</a></span> <span id="unv_20717428"></span> | + <a + href="https://news.ycombinator.com/hide?id=20717428&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20717428">145 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20721789"> + <td class="title" valign="top" align="right"><span + class="rank">29.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20721789" + href="https://news.ycombinator.com/vote?id=20721789&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.technologyreview.com/f/614175/a-new-clothing-line-confuses-automated-license-plate-readers/" + class="storylink">A new clothing line confuses automated + license plate readers</a><span class="sitebit comhead"> + (<a + href="https://news.ycombinator.com/from?site=technologyreview.com"><span + class="sitestr">technologyreview.com</span></a>)</span> + </td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20721789">14 points</span> by + <a href="https://news.ycombinator.com/user?id=t23" + class="hnuser">t23</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20721789">2 + hours ago</a></span> <span id="unv_20721789"></span> | + <a + href="https://news.ycombinator.com/hide?id=20721789&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20721789">1 comment</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="athing" id="20717668"> + <td class="title" valign="top" align="right"><span + class="rank">30.</span></td> + <td class="votelinks" valign="top"> + <center><a id="up_20717668" + href="https://news.ycombinator.com/vote?id=20717668&how=up&goto=news"> + <div class="votearrow" title="upvote"></div> + </a></center> + </td> + <td class="title"><a + href="https://www.cnn.com/2019/08/16/media/jimmy-kimmel-live-walking-dead-fcc-fine/index.html" + class="storylink">The FCC Fined 'Jimmy Kimmel Live' 'The + Walking Dead' for Use of Emergency Tones</a><span + class="sitebit comhead"> (<a + href="https://news.ycombinator.com/from?site=cnn.com"><span + class="sitestr">cnn.com</span></a>)</span></td> + </tr> + <tr> + <td colspan="2"></td> + <td class="subtext"> + <span class="score" id="score_20717668">79 points</span> by + <a href="https://news.ycombinator.com/user?id=LinuxBender" + class="hnuser">LinuxBender</a> <span class="age"><a + href="https://news.ycombinator.com/item?id=20717668">11 + hours ago</a></span> <span id="unv_20717668"></span> | + <a + href="https://news.ycombinator.com/hide?id=20717668&goto=news">hide</a> + | <a + href="https://news.ycombinator.com/item?id=20717668">52 comments</a> + </td> + </tr> + <tr class="spacer" style="height:5px"></tr> + <tr class="morespace" style="height:10px"></tr> + <tr> + <td colspan="2"></td> + <td class="title"><a + href="https://news.ycombinator.com/news?p=2" + class="morelink" rel="next">More</a></td> + </tr> + </tbody> + </table> + </td> + </tr> + <tr> + <td><img src="frontpage_files/s.gif" width="0" height="10"> + <table width="100%" cellspacing="0" cellpadding="1"> + <tbody> + <tr> + <td bgcolor="#ff6600"></td> + </tr> + </tbody> + </table><br> + <center><span class="yclinks"><a + href="https://news.ycombinator.com/newsguidelines.html">Guidelines</a> + | <a href="https://news.ycombinator.com/newsfaq.html">FAQ</a> + | <a href="mailto:hn@ycombinator.com">Support</a> + | <a href="https://github.com/HackerNews/API">API</a> + | <a + href="https://news.ycombinator.com/security.html">Security</a> + | <a href="https://news.ycombinator.com/lists">Lists</a> + | <a href="https://news.ycombinator.com/bookmarklet.html" + rel="nofollow">Bookmarklet</a> + | <a href="http://www.ycombinator.com/legal/">Legal</a> + | <a href="http://www.ycombinator.com/apply/">Apply to YC</a> + | <a href="mailto:hn@ycombinator.com">Contact</a></span><br><br> + <form method="get" action="//hn.algolia.com/">Search: + <input type="text" name="q" size="17" autocorrect="off" + spellcheck="false" autocapitalize="off" autocomplete="false"> + </form> + </center> + </td> + </tr> + </tbody> + </table> + </center> + <script type="text/javascript" src="frontpage_files/hn.js"></script> + +</body> +<div></div> + +</html> |