Welcome to "whoshiring", a browser for Hacker News's monthly Ask HN: Who's Hiring pages.
Whoshiring is built atop the Matrix mxWeb™ web application un-framework -- just a thin, pass-through wrapper for HTML, CSS, JS, and AJAX. Here is the Live version.
Easy.
git clone https://github.com/kennytilton/whoshiring.git
Now open whoshiring/index-es6.html
in FireFox. Other browsers reject pulling HN pages from a local directory into an iframe
for scraping. Ideas on generalizing to other browsers for development are welcome.
You can now play with the source*, save, and refresh the page back in the browser. That is how I work, FWIW. I am also have on a CLJS/re-frame version where figwheel will hot load changes.
mxWeb is simple, but only after we have grokked the data flow library Matrix™ on which it is built. Matrix is like MobX, but goes a bit further. We find the Binding.scala data flow library impressive as well.
Matrix is largely undocumented**, though there are an extensive number of sample apps, including this one, TodoMVC, The Flux Challenge, and a simulator of Ivan Sutherland's Micropipelines.
All that said, a few exceptional users have picked up mxWeb after zero to three emails, so it is doable.
The app works by scraping saved HN page sources. The files directory has a subdirectory for each HN message ID in which they ask Who's Hiring. That subirectory has multiple HTML files retrieved with the additional query parameter p=<n>
where <n>
is 1 to however many pages of answers (job listings) they have. They do about 200 jobs per page, and recently had about 870 jobs all told. Anyway...
To refresh your page data:
cd whoshiring
./grab
More soon.
To compile the JS into a single file, use the epinymous bash script at the toplevel of the directory:
cd whoshiring
./whoshiring
Now open index.html
, again in FireFox.
My latest attempt to explain mxWeb is a wonderfully elaborate CodePen application within an application, both built from mxWeb. The larger app presents the incremental evolution of about half of TodoMVC and a bit more, using mxXHR™ to check items for adverse events on an NIH web site.
It is a solid write-up, but the point emphasized was the transparency of the data flow mechanism, and transparency is hard to see. What might help is a recent write-up of how we stumbled onto data flow, including how we made it transparent.
Shoot me an e-mail or raise a GitHub issue and I will help.