14 ms·
Show HN: Web pages stored entirely in the URL
- gitgud 7y agoCool! I like projects like this, which contain their state in the URL so you can share it. Another such tool is [1] This gradient generator, which encodes the gradient parameters into the url so you can come back and use the tool to edit it! Anyway good job on creating this! [1] https://www.colorzilla.com/gradient-editor/ https://www.colorzilla.com/gradient-editor/
- elcomet 7y agoVery cool project. It would be nice to provide an example of such a link on the page.
- starbugs 7y agoIsn't there an example to his personal page in the GitHub README? https://github.com/jstrieb/urlpages#examples https://github.com/jstrieb/urlpages#examples
- elcomet 7y agoYou're right, I expected to see a huge link so I didn't notice it. Here is how the link looks like : https://jstrieb.github.io/urlpages/#JTBBJTNDIURPQ1RZUEUlMjBodG1sJTNFJTBBJTNDaGVhZCUzRSUwQSUzQ3N0eWxlJTNFJTBBYm9keSUyMCU3QiUwQSUyMCUyMGJhY2tncm91bmQlM0ElMjBibGFjayUzQiUwQSUyMCUyMGNvbG9yJTNBJTIwbGltZWdyZWVuJTNCJTBBJTIwJTIwcGFkZGluZyUzQSUyMDI1cHglM0IlMEElMjAlMjBmb250LWZhbWlseSUzQSUyMHNhbnMtc2VyaWYlM0IlMEElN0QlMEElMEFzZWN0aW9uJTIwJTdCJTBBJTIwJTIwcGFkZGluZyUzQSUyMDM1cHglM0IlMEElMjAlMjBtYXgtd2lkdGglM0ElMjAxMDIwcHglM0IlMEElMjAlMjBkaXNwbGF5JTNBJTIwYmxvY2slM0IlMEElMjAlMjBtYXJnaW4lM0ElMjBhdXRvJTNCJTBBJTIwJTIwbWFyZ2luLXRvcCUzQSUyMDI1cHglM0IlMEElMjAlMjBtYXJnaW4tYm90dG9tJTNBJTIwMjVweCUzQiUwQSUyMCUyMGJvcmRlciUzQSUyMDNweCUyMHNvbGlkJTIwbGltZWdyZWVuJTNCJTBBJTdEJTBBJTBBLmZpcnN0JTIwJTdCJTBBJTIwJTIwaGVpZ2h0JTNBJTIwY2FsYygxMDB2aCUyMC0lMjAxMzVweCklM0IlMEElMjAlMjBkaXNwbGF5JTNBJTIwZmxleCUzQiUwQSUyMCUyMGZsZXgtZGlyZWN0aW9uJTNBJTIwY29sdW1uJTNCJTBBJTIwJTIwYWxpZ24taXRlbXMlM0ElMjBjZW50ZXIlM0IlMEElMjAlMjBib3JkZXIlM0ElMjBub25lJTNCJTBBJTdEJTBBJTBBLmFzY2lpLWFydCUyMCU3QiUwQSUyMCUyMGZvbnQtZmFtaWx5JTNBJTIwbW9ub3NwYWNlJTNCJTBBJTIwJTIwZm9udC1zaXplJTNBJTIwY2FsYygxLjF2dyklM0IlMEElMjAlMjBmb250LXdlaWdodCUzQSUyMGJvbGQlM0IlMEElMjAlMjB3aGl0ZS1zcGFjZSUzQSUyMHByZS13cmFwJTNCJTBBJTIwJTIwd2lkdGglM0ElMjA3MGNoJTNCJTBBJTdEJTBBJTBBLmNlbnRlciUyMCU3QiUwQSUyMCUyMGRpc3BsYXklM0ElMjBibG9jayUzQiUwQSUyMCUyMG1hcmdpbiUzQSUyMGF1dG8lM0IlMEElN0QlMEElMEEuZGVzYyUyMCU3QiUwQSUyMCUyMHRleHQtYWxpZ24lM0ElMjBjZW50ZXIlM0IlMEElN0QlMEElMEEubWlkZGxlJTIwJTdCJTBBJTIwJTIwbWFyZ2luLXRvcCUzQSUyMGNhbGMoMTV2aCklM0IlMEElN0QlMEElMEFhJTIwJTdCJTBBJTIwJTIwdGV4dC1kZWNvcmF0aW9uJTNBJTIwbm9uZSUzQiUwQSUyMCUyMGNvbG9yJTNBJTIwbGltZWdyZWVuJTNCJTBBJTdEJTBBJTNDJTJGc3R5bGUlM0UlMEElM0NzY3JpcHQlMjB0eXBlJTNEJTIydGV4dCUyRmphdmFzY3JpcHQlMjIlM0UlMEElMEElM0MlMkZzY3JpcHQlM0UlMEElM0MlMkZoZWFkJTNFJTBBJTNDYm9keSUzRSUwQSUzQ3NlY3Rpb24lMjBjbGFzcyUzRCUyMmZpcnN0JTIyJTNFJTBBJTNDZGl2JTIwY2xhc3MlM0QlMjJtaWRkbGUlMjIlM0UlMEElM0NkaXYlMjBjbGFzcyUzRCUyMmFzY2lpLWFydCUyMGNlbnRlciUyMiUzRSUwQSUzQyEtLSUyMFllcyUyQyUyMEklMjBkaWQlMjBoYW5kLWNvZGUlMjB0aGlzJTIwQVNDSUklMjBhcnQuJTIwSSUyMG1hZGUlMjBpdCUyMG9uJTIwYSUyMHBsYW5lJTIwcmlkZSUyMGZyb20lMjBOZXclMjBZb3JrJTIwdG8lMjBQaXR0c2J1cmdoJTIwd2hlbiUyMEklMjBwcm9iYWJseSUyMHNob3VsZCUyMGhhdmUlMjBiZWVuJTIwZG9pbmclMjBhY3R1YWwlMjBob21ld29yay4lMjAtLSUzRSUwQSUzQ3AlM0UlMEElMjAlMjBfX19fX19fJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwX19fX19fX18lMjAlMjAlMjAlMEElMjAlMkZfXyUyMCUyMCUyMF8lMkYlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBfJTIwJTIwJTIwJTIwJTIwJTIwJTJGJTIwJTIwX19fX18lMkYlMjAlMjAlMjBfJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwXyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMF8lMEElMjAlMjAlMjAlMjAlN0MlMjAlN0MlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMjAlN0MlMjAlMjAlMjAlMjAlMjAlNUMlMjAlMjAlNUNfX19fJTIwJTIwXyU3QyUyMCU3Q18lMjAlMjBfJTIwJTIwJTIwKF8pJTIwX19fXyUyMCUyRiUyMCU3QyUwQSUyMCUyMCUyMCUyMCU3QyUyMCU3Q19fX19fJTIwX19fX18lMjAlMjBfX19fXyU3QyUyMCU3Q19fXyUyMCUyMCUyMCU1Q19fX18lMjAlMjAlN0MlMkZfJTIwJTIwJTIwXyUyRiU3QyUyMCU1Q19fJTIwXyUyMCUyRiUyMF9fJTIwJTVDJTdDJTIwJTdDX19fJTBBJTIwJTIwJTIwJTIwJTdDJTIwJTdDJTIwJTIwXyUyMCUyMCU3QyUyMCUyMF9fXyU1QyU3QyUyMCUyMF8lMjAlMjAlN0MlMjAlMjBfJTIwJTIwJTVDJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdDJTIwJTdDJTIwJTIwJTdDJTIwJTdDJTIwJTIwJTdDJTIwJTIwX18lN0MlMjAlN0MlMjAlMjBfX18lMkYlN0MlMjAlMjBfJTIwJTIwJTVDJTBBX19fXyU3QyUyMCU3QyUyMCU3Q18lN0MlMjAlN0MlMjAlN0NfX19fJTdDJTIwJTdDXyU3QyUyMCU3QyUyMCU3Q18lN0MlMjAlN0MlMjAlMjBfX19fXyU3QyUyMCU3QyUyMCUyMCU3QyUyMCU3QyUyMCUyMCU3QyUyMCU3QyUyMCUyMCU3QyUyMCU3QyUyMCU3Q19fXyUyMCU3QyUyMCU3Q18lN0MlMjAlN0MlMEElNUNfX19fXyU3Q19fXyUyMCUyMCU3Q19fX19fJTJGJTdDX19fX18lN0NfX19fXyU3QyUyMCUyRl9fX19fX18lMkYlMjAlMjAlN0NfJTdDJTIwJTIwJTdDXyU3QyUyMCUyMCU3Q18lN0MlNUNfX19fJTJGJTdDX19fX18lN0MlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNfJTdDJTBBJTNDJTJGcCUzRSUwQSUzQyUyRmRpdiUzRSUwQSUzQ3AlMjBjbGFzcyUzRCUyMmRlc2MlMjIlM0UlMEFQcm9ncmFtbWVyJTIwJTI2bmJzcCUzQiUyNmJ1bGwlM0IlMjZuYnNwJTNCJTIwSGFja2VyJTIwJTI2bmJzcCUzQiUyNmJ1bGwlM0IlMjZuYnNwJTNCJTIwU3R1ZGVudCUyMCUyNm5ic3AlM0IlMjZidWxsJTNCJTI2bmJzcCUzQiUyMFJlc2VhcmNoZXIlMEElM0MlMkZwJTNFJTBBJTNDJTJGZGl2JTNFJTBBJTNDJTJGc2VjdGlvbiUzRSUwQSUzQyUyRmJvZHklM0UlMEE= https://jstrieb.github.io/urlpages/#JTBBJTNDIURPQ1RZUEUlMjBo...
- deleted 7y ago[deleted]
- lettergram 7y agoExample: https://jstrieb.github.io/urlpages/editor/#eyJjc3MiOiJib2R5IHtcbiAgYmFja2dyb3VuZDogYmxhY2s7XG4gIGNvbG9yOiBsaW1lZ3JlZW47XG4gIHBhZGRpbmc6IDI1cHg7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xufVxuXG5zZWN0aW9uIHtcbiAgcGFkZGluZzogMzVweDtcbiAgbWF4LXdpZHRoOiAxMDIwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IGF1dG87XG4gIG1hcmdpbi10b3A6IDI1cHg7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gIGJvcmRlcjogM3B4IHNvbGlkIGxpbWVncmVlbjtcbn1cblxuLmZpcnN0IHtcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTM1cHgpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG59XG5cbi5hc2NpaS1hcnQge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICBmb250LXNpemU6IGNhbGMoMS4xdncpO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICB3aWR0aDogNzBjaDtcbn1cblxuLmNlbnRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IGF1dG87XG59XG5cbi5kZXNjIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubWlkZGxlIHtcbiAgbWFyZ2luLXRvcDogY2FsYygxNXZoKTtcbn1cblxuYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGxpbWVncmVlbjtcbn0iLCJqcyI6IiIsImh0bWwiOiI8c2VjdGlvbiBjbGFzcz1cImZpcnN0XCI+XG48ZGl2IGNsYXNzPVwibWlkZGxlXCI+XG48ZGl2IGNsYXNzPVwiYXNjaWktYXJ0IGNlbnRlclwiPlxuPCEtLSBZZXMsIEkgZGlkIGhhbmQtY29kZSB0aGlzIEFTQ0lJIGFydC4gSSBtYWRlIGl0IG9uIGEgcGxhbmUgcmlkZSBmcm9tIE5ldyBZb3JrIHRvIFBpdHRzYnVyZ2ggd2hlbiBJIHByb2JhYmx5IHNob3VsZCBoYXZlIGJlZW4gZG9pbmcgYWN0dWFsIGhvbWV3b3JrLiAtLT5cbjxwPlxuICBfX19fX19fICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fICAgXG4gL19fICAgXy8gICAgICAgICAgICAgICAgIF8gICAgICAvICBfX19fXy8gICBfICAgICAgICAgXyAgICAgICAgX1xuICAgIHwgfCAgICAgICAgICAgICAgICAgIC8gfCAgICAgXFwgIFxcX19fXyAgX3wgfF8gIF8gICAoXykgX19fXyAvIHxcbiAgICB8IHxfX19fXyBfX19fXyAgX19fX198IHxfX18gICBcXF9fX18gIHwvXyAgIF8vfCBcXF9fIF8gLyBfXyBcXHwgfF9fX1xuICAgIHwgfCAgXyAgfCAgX19fXFx8ICBfICB8ICBfICBcXCAgICAgICB8IHwgIHwgfCAgfCAgX198IHwgIF9fXy98ICBfICBcXFxuX19fX3wgfCB8X3wgfCB8X19fX3wgfF98IHwgfF98IHwgIF9fX19ffCB8ICB8IHwgIHwgfCAgfCB8IHxfX18gfCB8X3wgfFxuXFxfX19fX3xfX18gIHxfX19fXy98X19fX198X19fX198IC9fX19fX19fLyAgfF98ICB8X3wgIHxffFxcX19fXy98X19fX198XG4gICAgICAgICAgXFxffFxuPC9wPlxuPC9kaXY+XG48cCBjbGFzcz1cImRlc2NcIj5cblByb2dyYW1tZXIgJm5ic3A7JmJ1bGw7Jm5ic3A7IEhhY2tlciAmbmJzcDsmYnVsbDsmbmJzcDsgU3R1ZGVudCAmbmJzcDsmYnVsbDsmbmJzcDsgUmVzZWFyY2hlclxuPC9wPlxuPC9kaXY+XG48L3NlY3Rpb24+In0= https://jstrieb.github.io/urlpages/editor/#eyJjc3MiOiJib2R5I...
- gruez 7y ago>cannot be taken down But all you did is shift the burden of hosting it to wherever you post the link, which can still take down your link.
- elcomet 7y agoWell the "converter" is open source so anyone could host it, you just would have to replace the domain name with your own to open existing links.
- adminu 7y agoMaybe I don't get something, here, buy as I understand it, the url contains all the data so you are effectively providing the information wherever the link is posted. Thus, if the posted link is gone, the data is gone, the generator-webpage doesn't really have anything to do with it.
- elcomet 7y agoWell yes of course, that's a trade off. But for some cases it can be useful. It makes censorship impossible as there are no server that host the data.
- adminu 7y agoBut the way to "share" information this way is to just send it to someone else. You could instead just send a text file or an image, it's the same (except, you could actually encrypt it). After all this is exactly as censorship resistant as direct communication today. The, "there is no server" argument doesn't hold if you want someone else to ever get your message. It's just either your chat app or some website where the "link" is posted. I don't see any value added.
- elcomet 7y agoYou're right, you convinced me it has little real value. But it's still a fun project !
- MJSplot_author 7y agoSimilar to this [0] from a few years ago. That one also had some basic encryption included. Some previous discussions[1,2] of that tool highlights that this can easily be abused for xss or distribution of illegal materials which you may not want to find yourself the focus of. [0] https://davidpartson024.github.io/no_host/encryptedPageMaker.html https://davidpartson024.github.io/no_host/encryptedPageMaker... [1] https://www.reddit.com/r/programming/comments/47gjbv/experimental_url_abuse/ https://www.reddit.com/r/programming/comments/47gjbv/experim... [2] https://www.reddit.com/r/InternetIsBeautiful/comments/4o76gn/make_your_own_encrypted_web_pages_without_needing/ https://www.reddit.com/r/InternetIsBeautiful/comments/4o76gn...
- lol768 7y agoUnsure I really understand the XSS risk that's discussed in the links you provided. Nobody cares about that origin because it has nothing of value hosted on it and it's not like you'd be able to access cookies from a different origin. The worst you could do is exploit a browser zero-day, but you can do that on any static hosting site already!
- prsecurity 7y agoYou are abusing trust - now it's going to be the jstrieb.github.io who is serving malware, and since his system serves whatever JS I provide by design it becomes a very effective XSS host.
- Thorrez 7y agoIt's not really jstrieb.github.io that's serving it, because since the content is in the url fragment, it is never sent to or from the server, it's handled entirely clientside. >a very effective XSS host. It can only do XSS against jstrieb.github.io which has nothing valuable. So it's not useful for anything. It can't be used in a <script> tag to obfuscate XSS attacks against other websites either, because the response isn't formatted as javascript. I guess it could be used in <iframes> on other websites in order to add obfuscation, but I think the use to attackers would be quite low.
- givinguflac 7y agoThis is really interesting. It strikes me as a modern encrypted communications method, except as designed currently everyone already has the key. I wonder how much could be shared this way, and whether it could be sufficiently secured to become a “private” means of distribution.
- netsec_burn 7y agoLike Mega or 0bin?
- _underfl0w_ 7y agoIt seems like the main content bottleneck is the fact that they store it all in straight-up base64. Trying to, say, share binaries across the net would become very unwieldy very quickly. Now, if they were to implement some compression before URL encoding, it might then be feasible to break up large files into a series of links or something...
- egfx 7y agoInteresting to use this app with a 2FB link. To use it in api mode, add 2fb.me/ before the url in full.
- evncr 7y agoWhen you use "Short link to publish" in the editor, you are basically hosting it in tinyurl???
- SigmundA 7y agowhat about data urls? No need for hosting page: data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E
- air7 7y agoThat's what I thought he would aim for. This is actually safe from being taken down whereas op's solution needs op's website to decode the url.
- SigmundA 7y agoRight it took me a a little while to realize that its still needed a host since its talks about not needing a host and doesn't say here is the bootstrap page that needs to be hosted. data url's are truly entirely in the url with no hosting or dependencies.
- jstrieb 7y agoWhile I agree that this is technically correct, I feel it ignores the spirit of the project. Since I released it open-source, my expectation is that anyone who cares about safety from takedowns will clone and host one or more of their own. Or, for that matter, use the files offline with shared base-64 encoded URLs
- air7 7y agoIf your site goes down, all the links go broken. To use a clone I'd need to manually copy a part of a dead link and append it on the clone url. The links are actually just data stores in need of a renderer. Why not use an html file instead?
- iwalton3 7y agoChrome and Firefox don’t support top-level navigation to data urls anymore. https://blog.mozilla.org/security/2017/11/27/blocking-top-level-navigations-data-urls-firefox-59/ https://blog.mozilla.org/security/2017/11/27/blocking-top-le...
- HocusLocus 7y agoAll content included in "pen register data" (headers). Thumbs up from the LE/intelligence community! /s
- ziffusion 7y agoSorry don't get this. The basic premise of REST is to access information stored on the network elsewhere. You are asking people to store information in their bookmarks.
- sp332 7y agoWho said anything about REST?
- snek 7y agoWait until they find out about browser URL length limits :)
- RyanShook 7y agoI was wondering the same thing. Most browsers limit URLs to 2083 characters. Edit: IE is 2083, Chrome is 1032
- jsjohnst 7y agoName one modern browser (let alone “most”) that does that. I’ll wait. PS: IE6-9 don’t count as modern browsers, and haven’t for a long time. To my knowledge, they were the only browsers to limit to exactly 2083 characters.
- marcosdumay 7y agoMany servers use a low limit. But it's configurable.
- jsjohnst 7y agoChrome and Safari don’t have a limit, Firefox supports over 100k. So what browser are you referencing here?
- lisper 7y agoI don't see any effective difference between putting the data in a URL and putting the data in a local HTML file and opening the file in a browser. (And if you're going to put the data in a URL, you should probably be using a data: URL.)
- posix_me_less 7y agoOne difference is that when you visit/bookmark some normal webpage, you save on your computer only its title and address. With this, you are saving the page content as well, just by visiting the page.
- lisper 7y agoWith the data in a file you are also saving the page content (in a file). I don't see what difference it makes whether you're saving that content in a file or in a bookmark. (At the risk of stating the obvious, bookmarks are stored in a file.)
- Misdicorl 7y agoIts different because sharing a link is much easier than sharing a file
- lisper 7y agoNot if the link and the file are the same size.
- cantcomplain 7y agoTake discord for example: you can only post a file of certain size, but you can post unlimited text
- dansman805 7y agoDiscord messages aren't actually unlimited; they are limited to 2,000 characters, unless this restriction was recently removed. I have personally encountered this, mainly when using code blocks.
- nabla9 7y agodata:text/html,%3Ch1%3EReinventing%20the%20Wheel%3C%2Fh1%3E%0A%3Cp%3EThis%20page%20is%20in%20the%20url.%3Cp%3E%0A%3Cp%3EHow%20strange.%3C%2Fp%3E
- deleted 7y ago[deleted]
- hagreet 7y agoso instead of adressing the content you are sending the content directly. brilliant. who could come up with such an amazing idea... seriously, though: this has some marginal advantages compared to just sending the sites such as being supported as clickable in almost every program and being allowed in size restricted posts which allow arbitrarily long links
- the_pwner224 7y agoOne idea I've thought about in this same area is 'compressing' the URLs via Unicode. Suppose you limit the page contents to just [a-zA-Z0-9] and about 15 special characters, and space/newline. Documents would be rendered without any formatting aside from what you can do with a monospace font (all caps, white space, tables, etc.). This allows about 80 unique characters - about 6.5 bits per character. There are dozens of thousands of visible Unicode characters, at least 8 bits each. Using modern compression techniques you can probably get around 4 or maybe even 5 characters of the real text into one visible Unicode character. This would compress the messages so that you can share them over SMS/Twitter (split into a few parts perhaps) or Facebook without posting giant pages of text. The data could start with a 'normal' not-rare-Unicode character indicating the language, and the same character at the end of the stream to make it easy to copy paste: a<unintelligible Unicode garbage>a Multiple translation tables could exist for different languages. Japanese and Indic languages have ~50 alphabet characters but no capitals, so I think you would be able to get similar compression regardless of input language. Users would go to a website that does decompression with JS and just paste in the compressed text to view the plaintext. And vice versa. If the compression format is open then anyone can make and host a [de]compressor. Version codes may be useful to add, so that more efficient compression techniques don't break backwards compatibility. The first release of the English compression algorithm would start and end with 'aa', a better algorithm released a few years later would use 'ab', etc. Similarly the version code could be used to indicate a more restricted set of characters to allow for better compression - [a-z0-9] and . , space newline is 30 characters which is only 5 bits per character before any further compression.
- deathanatos 7y agoOne of my toy projects: https://github.com/thanatos/baseunicode https://github.com/thanatos/baseunicode ; there's probably a lot that could be done better, and the alphabet it uses needs to be greatly expanded. There are few other implementations of the same idea out there, too. Here's another one: https://github.com/qntm/base65536 https://github.com/qntm/base65536 ; since it uses a power-of-two sized alphabet, it avoids some of the work mine has to do around partial output bytes. That link also links to some other ideas & implementations The exact metric I cared about at the time was compressing for screen-space, not for actual byte-for-byte space. I wrote it after spending some time in a situation where doing a proper scp was just a PITA, unfortunately, but copy/pasting into a terminal is almost always a thing that works. But I was also dealing with screen/tmux, which makes scrolling difficult, so I wanted the output to fit in a screen. From that, you can implement a very poor man's scp with tar -cz FILES | base64 ; the base-unicode bit replaces the base64. Mine doesn't use Huffman coding as it wants to stream data / it leans on gzip for doing that.
- amelius 7y agoHow do you add recursive links?
- uryga 7y agoindirection! you could make the website text link to self: http://url.shortener/some-vanity-url and then get the vanity url and point it at your site's link.
- amelius 7y agoBut if you use an url shortener, then the website is not stored entirely in the url anymore.
- uryga 7y agoit doesn't have to be an url shortener, but i believe that you need some external link to get self-reference here. as a rough handwavy analogy, linked lists use a pointer to the tail, not a value of the tail (here the value being the site-stored-in-a-url, and the pointer being the shortened url)
- peter303 7y agoThere is also a hack to put mini-games in the URL line using emojis.
- keb_ 7y agoReminds me of https://flems.io/ https://flems.io/
- tambourine_man 7y ago>See the "published" version here Doesn't work in Safari (Mojave)
- ubersoldat2k7 7y agoMakes me wonder how caching and other stuff are handled by browsers, or the impact of it on load times. Anyway, cool concept.
- bigato 7y agoSaying that this "cannot be taken down" is quite stupid. It's all fine and dandy if you live in a place without strong censorship, but in a situation where information that cannot be taken down would be really necessary, how long do you think it will take for the interested parties to find out that the content is in the message?
- unityByFreedom 7y agoThe content can be hidden in a short url, so it is potentially a new thing that censors would have to deal with, unless they want to block all short URL services.
- rando444 7y agoYou still need a URL though. Might as well just use DNS txt fields.
- lonelappde 7y agoThis is the webdev version of "if x==true then return true else return false"
- geekamongus 7y agoI fail to see how this isn't ripe for abuse. I can execute javascript in a person's browser using your domain. http://tinyurl.com/y5m7o4j8 http://tinyurl.com/y5m7o4j8
- judge2020 7y agoLikely going to be blocked everywhere like JSfiddle is: https://github.com/jsfiddle/jsfiddle-issues/issues/1417 https://github.com/jsfiddle/jsfiddle-issues/issues/1417 Only issue is this being deployed more widespread, Twitter may need to start scanning explicitly for this software to block it regardless of domain.
- lol768 7y agoI don't see how this issue is unique to jsfiddle or this project.. Any static hosting service is going to have this issue no?
- aaronharnly 7y agoYou can host each piece of content on its own subdomain, and within a sandboxed iframe from the rest of the site.
- lol768 7y agoYou could, but you'd probably break a lot of legitimate functionality.
- the_pwner224 7y agoHow is this bad? If the domain is only used to host the decoder, what bad stuff can a bad guy do by executing JS? I get how this would be a vulnerability on Facebook, but why is it bad here?
- novaleaf 7y agojust off the top of my head, but a bad guy could distribute a "bugged" version of the url that installs cookies and phones home. very hard for a normal person to tell the good link from a bad link, and removes the way most people determine if a link should be trusted (by looking at the domain)
- mmaunder 7y agoI think a few folks are missing the point. How are web pages shared? By distributing links. How are pages censored? By deplatforming. This usually happens by activists targeting the host right in their cashflow. If you remove the need to host, you remove a point of failure from publishing. Now the link is the content. It's an interesting concept whether or not you agree with this implementation.
- TallGuyShort 7y agoI agree it's interesting. What follows is not criticism of the author, but criticism of our society. Prediction: at some point someone will want to censor something and blame the host. The host or hostname will be taken offline, even though it's not storing or distributing the content.
- deleted 7y ago[deleted]
- jstrieb 7y agoI consciously accepted the risks of my host being blacklisted or taken down when I shared this. Luckily, the benefit of open source is that anyone can clone the repository and host any number of similar services if they are serious about using them for content distribution. I don't mind if there are problems with the host since it will mean people are actually making use of the project.
- chiefalchemist 7y agoCall me silly but if you don't need a host then why do you need a link? That does this do that .html can't?
- the_pwner224 7y agoSharing a snippet of text is much easier than sharing a file. Telling a normal person to click that link (or, go to decoder.com and paste this text into there, for a more distributed version) is much easier than getting them to view the HTML.
- chiefalchemist 7y agoPerhaps I'm misreading / misunderstanding some of the comments but long to short this is effectively a .url file format (so to speak). Yes, it looks like a URL but it's not uniform'ing, it's not resource'ing, and it's not locator'ing - in the traditional sense of those three letters.
- mjtlittle 7y agoThis reminds me of https://itty.bitty.site/edit https://itty.bitty.site/edit, which does the exact same thing but with a size limit, no in browser editor, and if I'm not mistaken, a compression algorithm.
- mjtlittle 7y agoClarification: there is an editor you just have to create interactable hypertext files externally and drop them in
- djsumdog 7y agoSo with both of these cases, the site itself (github pages or bitty.site) need to be up in order to decode the content? It's not like the way images can be stored in a data URL, right?
- RedNifre 7y agoIt's a bit weird that all the example websites are "hosted" on tinyurl.
- bepvte 7y agohttps://itty.bitty.sites https://itty.bitty.sites ??
- breck 7y agoI use this technique for sharing new tree programming language grammars. As you modify or create a language, I generate a deep link that contains all the grammar code and sample code for your language in the url: http://treenotation.org/sandbox/build/#standard%20stump http://treenotation.org/sandbox/build/#standard%20stump
- xg15 7y agoI wondered about this use-case in the context if data URIs. In theory, an alternative way to serve page content (instead via HTTP 200) should be to return a 3xx redirect and set the location header to a data URI. This would indeed allow you to use URL shorteners or any kind of open redirect as a de-facto web host. ("In theory", in the sense that HTTP allow redirects to point to any kind of URL, so there is nothing saying it couldn't be a data uri) I imagine this kind of situation is something that browser developers explicitly want to avoid, because the security implications would be a nightmare. So practically browsers do not follow redirects to data uris.
- jstrieb 7y agoHello, creator here! I originally conceived this as a simple, static CodePen clone, but I felt the "publishing" of pages as URLs was an interesting idea. So I decided to present that aspect of it front and center, even though it wasn't really the point of the project at the beginning. About a year ago, I had a proof of concept version that I ended up using fairly frequently for sharing quick HTML/CSS/JavaScript experiments (never as a means of seriously publishing and sharing censorship-proof content). I found that if its use is limited to that case, it is actually very handy and robust! Lots of interesting feedback in the comments, largely more positive than I expected. I was expecting criticism of code quality since I have minimal web development experience, but instead the (valid) criticism is coming from people who are taking the project's applications and use cases seriously, which I appreciate.
- mmaunder 7y agoIt's a very interesting concept in the current climate. The idea of sharing content as atomic and self-sufficient units of data, much like you would share the raw idea itself, but with the ability to have layout, rich content and possibly even interactivity. A web of ideas rather than ideas on pages with servers. The disintermediation of the web. I suspect that's why this item is so popular.
- jstrieb 7y agoThat's why I let that part of the project be the focus! I also hope the interest it has generated will inspire others with more knowledge and experience to make better versions or variations that are more practical.
- mmaunder 7y agoA deeper implementation would be a browser designed for this. Some hard problems. E.g. URLs provide a consistent place to go to find varying content. If the URL is the content, then it cant vary. How does one solve content discovery without resorting to hosting? PS: The first person who says blockchain buys the beers.
- ravenstine 7y agoWouldn't it be a better idea to have the URL-stored webpage use WebTorrent to host the actual content through P2P?
- madmonk 7y agoI see some potential for using this for content distribution via QR codes. Create a page, make a QR code sticker and you're now hosting a website on a wall.
- jstrieb 7y agoWill add QR code generation to the TODO
- deleted 7y ago[deleted]
- futhey 7y agoCouple notes: I tested doing this on a fork, QR codes have a 3k upper limit (which is fine for some pages), and when using large amounts of data like this they switch to a large-payload format, which seems to be blocked by the iPhone camera. Either they're blocking large-payload qr codes or by url length.
- davidcollantes 7y agoI don’t get anything other than a page with three text areas on iOS’s Safari.
- mmmeff 7y agoAyyyy, finally a use for my ultrawide monitor!
- MattyRad 7y agoShameless self promotion, but if you're interested in this sort of thing and know a little about DNS, you can similarly host a website purely through DNS records; no hosting, no cost, etc. https://serv.from.zone https://serv.from.zone
- awirth 7y agoShameless self plug - I cleaned up my take on a very similar idea a bit today after seeing this post: https://github.com/allanlw/hgscn2 https://github.com/allanlw/hgscn2 Basically, it uses a data URI and Webtorrent for a similar concept.
- futhey 7y agoReally neat, thanks for sharing!
- fouc 7y agoMakes me think of https://privatebin.info https://privatebin.info and https://flems.io https://flems.io which also entirely store the content of the webpage in the URL. (Flems is like a codepen)
- knolax 7y agoYou could just use data URLs. For example: data:text/html,<p>Hello%20World</p>
- zzo38computer 7y agoYes, that is what I thought, too. And furthermore, no internet connection is needed to access data: URIs.
- deleted 7y ago[deleted]
- deleted 7y ago[deleted]
- brod 7y agoThis is neat but lacking the obvious data-uri format which similar services implement: data:text/html;base64,...
- GorillaMoe 7y agoInteresting! It's like as if we'd had the same intent. Great minds think alike ;) I created writer.gorilla.moe and editor.gorilla.moe a while ago, exactly with the same intent :)
- thesmok 7y agoThis principle of storing content in a URL is also used at Falstad CircuitJS, where you can draw an electronic circuit diagram and export a link. Links get quite big for complex circuits, but it's very easy to store them. My project notes are full of links to the simulated circuits, example: http://www.falstad.com/circuit/circuitjs.html?cct=$+1+0.000005+10.20027730826997+54+5+50%0AR+48+160+0+160+0+1+40+5+0+0+0.5%0Aa+192+144+272+144+0+15+-15+1000000+-0.00004986625727894353+0%0Aa+192+272+272+272+0+15+-15+1000000+-4.986675593652975+-4.986725460408912%0Ag+192+160+192+192+0%0Ar+192+128+128+128+0+47000%0Ar+208+80+272+80+0+47000%0Aw+272+80+272+144+0%0Aw+208+80+192+80+0%0Aw+192+80+192+128+0%0Aw+128+128+48+128+0%0Aw+48+128+48+160+0%0Aw+192+256+176+256+0%0Aw+176+256+176+224+0%0Aw+176+224+272+224+0%0Aw+272+224+272+272+0%0Aw+192+288+48+288+0%0Aw+48+288+48+160+0%0A174+336+160+336+224+0+1000+0.2525+Resistance%0Aw+336+224+272+224+0%0Aw+336+160+336+144+0%0Aw+336+144+272+144+0%0Aw+352+192+416+192+0%0Aw+576+208+624+208+0%0A174+416+192+416+256+0+1000+0.005+Resistance%0Ag+416+256+416+272+0%0Aa+496+208+576+208+0+15+-15+1000000+2.066047243970914+2.066067904443354%0Aw+496+224+432+224+0%0Aw+496+192+496+160+0%0Aw+496+160+576+160+0%0Aw+576+160+576+208+0%0Ao+0+64+0+4098+5+0.00078125+0+2+0+3%0Ao+22+64+0+4099+5+0.00009765625+0+2+22+3%0A http://www.falstad.com/circuit/circuitjs.html?cct=$+1+0.0000...
- arunvelsriram 7y agoAwesome. It could be used in email signature I guess.