diff options
Diffstat (limited to '')
-rw-r--r-- | 2023/talks/web.md | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/2023/talks/web.md b/2023/talks/web.md new file mode 100644 index 00000000..f4b05d7e --- /dev/null +++ b/2023/talks/web.md @@ -0,0 +1,147 @@ +[[!meta title="Emacs saves the Web (maybe)"]] +[[!meta copyright="Copyright © 2023 Yuchen Pei"]] +[[!inline pages="internal(2023/info/web-nav)" raw="yes"]] + +<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing --> +<!-- You can manually edit this file to update the abstract, add links, etc. ---> + + +# Emacs saves the Web (maybe) +Yuchen Pei (he/him, pronounced: "eww-churn pay"), IRC: dragestil, <mailto:id@ypei.org>, <https://ypei.org>, mastodon: dragestil@hostux.social + +[[!inline pages="internal(2023/info/web-before)" raw="yes"]] + +On one hand, Emacs is the crown jewel of the GNU Project for its +customisability and the ability to effortlessly convert users to +hackers. On the other hand, today many of the sticky issues with +proprietary software proliferation stems from the web, including the +Javascript trap[1] on the client side and the SaaSS trap[2] on the +server side. So enters the topic of this talk. I will briefly talk about +these issues and existing non-emacs solutions, followed by ideas and +demonstrations on how Emacs can fix user freedom on the web, including: +emacs clients for specific websites and services, emacs-based browsers +aka universal frontends, transformer of emacs packages to web apps and +firefox browser extensions, and more. + +- [1] <https://www.gnu.org/philosophy/javascript-trap.html> +- [2] <https://www.gnu.org/philosophy/who-does-that-server-really-serve.en.html> + +Projects and tools mentioned in the talk: + +- LibreJS <https://gnu.org/s/librejs> +- lynx <https://lynx.invisible-island.net> +- noscript <https://NoScript.net> +- GreaseMonkey <https://www.greasespot.net/> +- Haketilo <https://haketilo.koszko.org> +- mitmproxy <https://mitmproxy.org> +- Invidious <https://invidious.io> +- youtube-dl <https://youtube-dl.org> +- libretube <https://libre-tube.github.io> +- newpipe <https://newpipe.net> +- woob <https://woob.tech/> +- Redirector <http://einaregilsson.com/redirector/> +- libredirect <https://libredirect.github.io> +- openwith <https://addons.mozilla.org/addon/open-with/> +- mastodon.el <https://codeberg.org/martianh/mastodon.el> +- mastorg <https://g.ypei.me/dotted.git/tree/emacs/.emacs.d/lisp/my/mastorg.el> +- sx.el <https://github.com/vermiculus/sx.el> +- buildbot.el <https://g.ypei.me/buildbot.el.git/about/> +- emacs-hnreader <https://github.com/thanhvg/emacs-hnreader> +- emacs-w3m <https://emacs-w3m.github.io/> +- luwak <https://g.ypei.me/luwak.git/about/> +- url-rewrite <https://g.ypei.me/url-rewrite.git/about/> +- wkhtmltopdf <https://wkhtmltopdf.org> +- pdf-tools <https://github.com/vedang/pdf-tools> +- emacs-web-server <https://elpa.gnu.org/packages/web-server.html> +- yolo.el <https://g.ypei.me/dotted.git/tree/emacs/.emacs.d/lisp/my/yolo.el> +- bom.el <https://g.ypei.me/bom.el.git/about/> + +About the speaker: + +Yuchen is a computer programmer, mathematician and free software +advocate based in Melbourne, Australia. He is addicted to writing +Emacs packages[3], of which a few has made into ELPA. He likes to +claim to be the only free software advocate in Australia, in the hope +that someone will correct him and point him to fellow comrades +fighting for user freedom in Oz. + +- [3] <https://g.ypei.me> +# Discussion + +## Questions and answers + +- Q: I like the idea of using org mode to display data from the web. + Are there many different packages that does that? (I am newish to + Emacs, so maybe this is obvious to everyone else.) + - A: dragestil uses roughly 10 packages that display data from the + web. Roughly half of them are org-mode based +- Q: Have you tried EAF (Emacs Application Framework) and its browser? + If yes, what is your opinion about it? + - A: No I haven't. My impression is it would run javascript by + default. Not sure whether it has any extensions to block js. A + nice comparison between different browsers including EAF, nyxt + and emacs-webkit can be found in the readme file of + <https://github.com/akirakyle/emacs-webkit> +- Q: I find the JavaScript trap almost impossible to avoid since I + like to buy used stuff online and use my online bank. How do you + deal with the JavaScript trap? I use NoScript and compromise on the + few things I really feel I cannot live wihtout. Eww is nice for a + lot of things, especially with R for less noise, but I need Firefox + for those JS-entrapped pages... + - A: Unfortunately I don't have a solution for that. I run + nonfree javascript when doing banking or online shopping, though + in a more isolated environment (mullvad browser) with a VPN. + It's a tiny portion of my online activity (<.1% I suppose), so + it's not *that* bad + - However, that does not mean emacs cannot help. woob has a few + clients interfacing with online banking, so perhaps at least + some banks allow the possibility of non-js client. It would be + good to look into this. +- Q: This is not really relevant to the talk, but I am curious about + your nickname. Do you have some connection to Norway? Your nick + indicates an interest in the architectural style inspired by the + decoration on viking ships that was popular in the early 20th + century. dragestil = dragon style + - A: dragestil is my favourite architectural style. Look at these + images on wikipedia <https://en.wikipedia.org/wiki/Dragestil> - + aren't they gorgeous? I've only seen one of these famous ones + in real life, the Buksnes Church on Lofoten Islands. +- Thoughts about Nyxt; about its aims, its approach, its relevance, + etc.? + - Very early on, ran into issues with keybindings. More + specifically, some conflicts between binding j to follow-hint in + document mode and C-s/C-r to next-suggestion/previous-suggestion + in prompt buffer mode. Did not continue with trying nyxt because + keybindings are basic functionalities IMO. Might revisit + someday. nyxt has a noscript-mode btw that blocks javascript. A + nice comparison between different browsers including EAF, nyxt + and emacs-webkit can be found in the readme file of + <https://github.com/akirakyle/emacs-webkit> +- Q: so trying to understand, is emacs being used as a web proxy to scrub potentially privacy attacking JS? +- Q: Anyone else here has experimented with Nyxt? I haven't much, but can't say there's not an overlap with some of the ideas of Emacs and all. Just curious. + - Not the speaker: + - I recommend qutebrowser over nyxt. For me it was just easier to use, customize and has better user experience. + - I do/did too. But then it occurred to be that a very simple locally-loaded extension might very well be able to transform any of the major browsers into 99 + of Nyxt when paired with an Emacs backend (and websocket async bidirectional communication between the two)... (when said extension is made of a service worker part and a per-page part, to access both browser-level API/state, and page-level DOM, with just these two bits) e.g. could expose/present open tabs as pseudo-buffers (à la "virtual buffers/files"), candidates for completion, and such + +## Notes + +- mastorg for mastodon +- hacker news in org mode +- emacs-web-server for hosting things from Emacs +- Dang, this is really a great demo. +- I love how he's using org-mode to do it all. +- It might actually save the web! +- Emacs as a Firefox extension!!! Ha! +- Definitely some interesting ideas in that one, and the literate form is top-notch. Warrants a focused rewatch for me (back-n-forth between 2 talks is not conductive to my best focus it seems...) +- I *really* like Org-Babel as a bridge to make complex one-off tasks ("why did the stuff in the database get into this state?" type things, usually) reproduceable and version-controlled. + - Hear hear! Howard's talks over the years have converted me to do pretty much anything in Org-mode in literate form at this point :) +- I use org-babel for recurring tasks that I need to remember. Things I have to run once a month, etc. I guess I could use cron, but usually they aren't really time sensitive enough. Or they are things like clearing my mu4e trash, which requires that I quit mu4e. +- "It's not Emacs!" Ha! + + + +[[!inline pages="internal(2023/info/web-after)" raw="yes"]] + +[[!inline pages="internal(2023/info/web-nav)" raw="yes"]] + + |