HNHacker News
TopNewBestAskShowJobs

archivist1

225 karma · joined December 22, 2019

submissionscomments
archivist1··on City Roads – Draw all roads in a city at once
It's interesting to note the size of the download for a city. Guess it's related to the complexity of the road network, not necessarily the number of roads. Interesting to think about the "entropy" of a city's network and compare between cities. For instance, Sydney AU is 25Mb, but NYC is only 11Mb. Even tho population of NYC is ~e x Sydney.
archivist1··on Web of Documents (2019)
The case for "forking the web"?

What if we just released a new browser that flat out refused to load any resource outside this definition?

Would sort of be like the parallel worlds of gopher and the web for a while. I think it would be interesting to have a "web fork" that was just for documents not apps.

archivist1··on Ask HN: I'm a total jerk, would you hire me?
clickable Link https://github.com/crislin2046/portfolio
archivist1··on Ask HN: I'm a total jerk, would you hire me?
fixed
archivist1··on A Sad Day for Rust
Open source is fundamentally wrong and in need of a correction. It's an exploitative labor practice.

There's a better way. It's coming.

archivist1··on Show HN: Auto-generated logos from SVG fuzzing
If you click for big, then hold "Tab" it seems to animate as it steps by each.
archivist1··on Show HN: Self Host the Internet
Thank you. it is mine. how can I get companies to pay me for this?
archivist1··on Things that I think will be important in the next decade
so... Facebook wants to acquire Stripe.
archivist1··on Broot – A new way to see and navigate directory trees
We are broot
archivist1··on Ask HN: A New Decade. Any Predictions?
- 2021: surprising and positive-themed social/election event, probably India

- 2023: Non-terrestrial (or non homo-sapiens intelligent) life confirmed.

- 2023: Space/solar-system tourism or mass publicity of human space missions.

- 2024: First commercial autonomous human-like bipedal standalone android

- 2025: Geo-volvanic/tectonic/oceanic disaster on same order of magnitude as Indian ocean tsunami but not as severe.

- 2027: "Pseudo" AGI system. You can talk and interact with it and it has all the answers but it's still not quite "all there".

- 2029: A lot of people die and infrastructure damaged in war act/atmospheric/solar event.

archivist1··on Ask HN: What did you build in 2019?
I built a web browser you can deliver through a web browser. Technically a view layer for a browser you connect to via DevTools. > 500 stars on GitHub. https://github.com/dosyago/skateboard

I also build a way to archive anything you browse online so you can read it again offline as if you were still online. > 500 stars on GitHub. https://github.com/dosyago/22120

archivist1··on Show HN: Color Palette of the Hong Kong MTR Subway
Site: http://metrocolor.live/
archivist1··on Serving PDFs as Individual PNG Pages
I want to support links in the PDF working in the images. maybe using area tag, but then I need OCR. it's not trivial....
archivist1··on MILSOB – A military-style sobriquet generator
https://github.com/horhof/MILSOB
archivist1··on IncludeOS: a minimal unikernel operating system for C++ services
Would it be possible to build a C/C++ app with #include <os> at the top and then compile it to a fully bootable image, and then boot a real server using that?
archivist1··on Ask HN: Is Adobe PhoneGap Dead?
Hey mikece sorry that this is offtopic but I saw your idea for a business on my other post and I wanted to ask you if you had any further insight into this. Sounds interesting. If you're not uninterested to discuss, please mail me at cris@dosycorp.com
archivist1··on Show HN: Local Node.js app to save everything you browse and serve it offline
Hey that's a cool idea about a business, I've made it into a packaged Node.JS app as a binary you can see on the releases page:

https://github.com/dosyago/22120/releases

I like multiple release channels and there's plenty of ways to install and use this.

You can download a standalone binary (Win, Mac or Linux), install globally from npm, or just clone or download the repo and run it.

I'm not sure about docker, but could you maybe give it a try and share me the docker file privately and I can decide if I like it?

If it's good then we can add it to the packages page on the repo. Sound OK? Email me at cris@dosycorp.com if you like this idea. Thank you! :)

archivist1··on Show HN: Local Node.js app to save everything you browse and serve it offline
Thank you very much for the big compliment! I feel very happy to hear it.

A lot of people in this thread talked about proxies, as in "why did you not implement a proxy" or "I implemented this but as a proxy"

The main advantage I see of this approach over a proxy is: simplicity.

The core of this is approximately 10 lines of code. The reason is it can hook into the commands and events of the browser's built in Network module.

I think there's no need to build a proxy, if you can already program the browser's in built Fetch module.

I think proxies have issues such as distribution (how do you distribute your proxy? As a cumbersome download that requires set up? As a hosted service that you have to maintain and cost?), and security (how do you handle TLS?), and complexity (I built this in a couple of hours over 2 days, one of the "obligatory bump" projects added to this thread is a proxy and has thousands of commits).

The biggest problem I see is the complexity. I feel a proxy would create a tonne of edge cases that have to be handled.

I did not mind sacrificing the benefits of a proxy (it can work on all browsers, and on any device), because I did not want to run my own server for this, but rather, crucially (I feel) give people back the power and control over their own archive. Even more importantly for me is I want to just make this the easiest way to archive for a particular set of users (say, Chrome users on Desktop), really get that right and then if that works, move to other circles later (such as mobile users, or other browsers).

Anyway, thanks for your kind comment, it really encourages me to share more about this.

I read some of your comment history but I can't get a lock on who you are, but you seem pretty interesting. Do you mind sharing a GitHub or something? If not, but you'd like to continue chatting, email me cris@dosycorp.com

Thank you!

archivist1··on Show HN: Local Node.js app to save everything you browse and serve it offline
It looks like this was patched a few months back, around ~M66

https://bugs.chromium.org/p/chromium/issues/detail?id=813540

archivist1··on Show HN: Local Node.js app to save everything you browse and serve it offline
If anyone would be interested in the next major version, please add your email to this list to be notified: https://forms.gle/FJmsXCDy18RrbFtt9
archivist1··on Show HN: Local Node.js app to save everything you browse and serve it offline
I like this idea, especially using git to version the store. With automatic commits, you could roll back to a particular date to see the page versions then. A personal "archive.org" sounds very awesome!
archivist1··on Show HN: Local Node.js app to save everything you browse and serve it offline
My future plan was to cache responses on disk and just keep cached keys in memory:

https://github.com/dosyago/22120#future

archivist1··on Show HN: Local Node.js app to save everything you browse and serve it offline
Besides the websocket, the protocol has a couple of HTTP endpoints, you can see commands here:

https://cs.chromium.org/chromium/src/content/browser/devtool...

which looks like it ignores the HTTP verb and acts only on the path. I confirmed this with tests: fetch('http://localhost:9222/json/new') and fetch('http://localhost:9222/json/new, {method:'POST', body:''}) do the same thing, as does using verb 'DELETE'.

All these open a new tab. Without knowing a 128-bit target identifier, it looks like opening a new tab is the only thing you can do if someone is running DevTools.

archivist1··on Show HN: Local Node.js app to save everything you browse and serve it offline
> What are the security implications of running in remote debugging mode?

Great question. First up, as long as you don't put --remote-debugging-address=0.0.0.0 you are only exposed locally, so the debugging endpoint can only be accessed from your local machine.

That leaves open the possibility that a web page can access that.

There's two possibilities:

- fetch('http://localhost:9222/json') which errors or is opaque because it is non CORS, or

- connecting directly to the websockets for targets, which have addresses like, http://localhost:9222/devtools/page/<128_bit_hex_string>

Interestingly, you can connect to the websocket, you just need to know the random identifier.

There are probably some DevTools zero days, but apart from those it looks like it's OK unless:

0) the identifier is not random,

1) you can get past CORS on the localhost which might be possible with an exploited extension, 3rd party software or plugin or

2) you can guess the websocket 128-bit identifier. (Guessing should only take 500 billion years. Even so 128 bits seems quite short relative to some encryption keys but there's probably a reason for that.)

Regarding 0) checking the Chromium source it appears that these ids are passed in to the constructor of "DevToolsAgentHostImpl":

https://cs.chromium.org/chromium/src/content/browser/devtool...

and are either "GUID"s or "tokens" and in the former case they are created here:

https://cs.chromium.org/chromium/src/base/guid.cc?sq=package...

and in the latter case by a class revealingly named "unguessabletoken.h":

https://cs.chromium.org/chromium/src/base/unguessable_token....

which in each case appears to rely on getting random bytes from a file descriptor to "urandom" which I think is an operating system level randomness primitive.

archivist1··on Show HN: Local Node.js app to save everything you browse and serve it offline
Thanks for compliment. I totally agree re misstep and want to improve that.

Once the library server is implemented, you'll be able to browse to it (localhost:8080 or so) and access your archive from there.

Nice idea on synthetic domain, that might yield another way to do.

← PreviousPage 2 of 2