Living without the modern browser
an3223.github.io
an3223.github.io
Really, there is no reason why a form should require JavaScript. When jQuery was hip, the js community celebrated "Graceful degradation". I frequently have the feeling this attitude is lost. That's super sad because it also excludes all the handycapped people.
Does even anybody remember the good old HTTP basic acess authentification? This is one of the most accessible ways of protecting ressources, it can be consumed by any HTTP client (!), and it is just reduced to the basic.
One of the worst things are these terrible captchas everywhere. I wonder why we cannot come up with a web standard interface in a way the captchas could be offloaded to customizable and adaptable GUIS rendered by the browsing client. This way, clients (users) could even declare what kind of captcha they can solve (blind people obviously cannot read images).
Because then Google would lose a large free pool of labor for training its machine learning.
Also, for a while they used it to determine street numbers for Google Maps.
What would prevent the client from not rendering anything and always replying "yes this is a human"?
The client would take care of displaying the challenge, and taking and sending the repsonse.
Yes! I recently used an e-shop that uses HTTP auth for user accounts. It was a bit unsettling, when the browser asked me for login credentials. :)
PS: I am using Ubuntu so I can't use 1Password as a standalone application; but how does it happen that a website is perfectly capable of blocking my interaction with the browser? Why doesn't Firefox ask for the password as part of the actual webpage instead?
Hadn't tried it in other browsers - does it work at all?
The cross-browser modal dialog is entirely anti-Ux.
I do wish Mozilla would finally do away with the modal auth dialog and use in-tab content that extensions can interact with.
https://github.com/h2o/h2o/wiki/Hosting-private-and-public-r...
Basic authentication is fine if all you need is to control access to documents, but it can not be used for access delegation or any scope control.
You can make your application code check the authorization header, get the username from there and do authorization based on that.
Why not? It's just a header with a username and password. Your app can do whatever you want with that info. It also doesn't strictly have to be a username and password, you allow app tokens or whatever you want in there, that's just what the browser UI calls it.
True. But I'm glad to use Javascript on forms where fields are depending on input from other fields.
Or when you want to give the user the option to submit multiple entries of the same field type. For example when you ask for a job history.
Yes you can sumbit the form on every step but this is much harder to develop and has a lot of negative interactions for the user. For example the scrollposition is gone on each submit. And the user has to wait for a reply from the server on each submit.
Javascript is not the problem, bloated and spammy websites are.
It is part of the problem. Because of what Javascript allows and makes possible, bloat can thrive and endure in the modern web.
Could this be fixed by dynamically-created anchors, so for instance when one is adding a new row to the "job experience" section of an application form, the reload to add the new row could also direct the user to "somesite.com/jobapp#JobExp2"?
1. can be done by humans most of the time
2. cannot be done by machines most of the time
3. fit into the workflow of a web form
Point 3 is the interesting bit: You cannot build a captcha that tests dexterity, emotional intelligence or creative problem solving but is still accessible to a large internet audience.
This is one of those things that's technically true, but misleading.
Without scripting, you can't do any client-side validation, so you have to submit the form.
Without scripting, it's then harder to repop the form for the user when it fails.
I'm not saying things aren't excessive today -- they clearly are. But tossing client-side scripting entirely seems like a baby/bathwater situation.
+ client-side validation is not validation.
Repopulating the form on the server side after validation failure is trivial and even more so when there are libraries that abstract that away (eg. wtforms).
On a similar note I somehow fail to see the benefit of writing (and often duplicating) large parts of business logic in client-side javascript and replacing perfectly good HTML form-submission mechanism with random JSON "REST" APIs.
> Repopulating the form on the server side
> after validation failure is trivial
You'd think so, but the number of sites out there that still require me to re-type the full form because one field failed validation is mind-boggling.Since you're doing the server-side validation you have to do anyway, it's child's play to return the HTML form with the values the client submitted pre-filled.
Client-side validation is a user convenience; it's awesome, but not sufficient in itself, because it can only protect the client, not the server, from invalid values.
Even more, html validation has by far a much better UX than most custom made JS solutions. For example if there is an error in the validation, your cursor is immediately transported to the offending field where you can do the correction, with the appropriate css classes available to highlight the field properly.
And for the stuff that html validation is not powerful enough, well then you most probably want to check that on the server as well anyway.
Yes, I use it on some of my sites. For some reason chrome password manager won't work with it. Not sure why.
I’m a web developer who has never done significant forms without JavaScript.
So I’m curious: how would you handle reactive form fields without client side scripting? For example (perhaps a bad example): the user is entering data in “rows”. The user clicks “add row” and then a new row of fields appears. The user can also delete rows on a whim. Their changes should only be persisted once submit is clicked.
Would the “right” way be a full page reload with the row added/deleted, and caching all the values?
Not to mention, if fields require cross validation, is it customary to have to submit the form to get the validation error messages to occur? On some of the forms I’ve worked on, this would be very complex.
If the user didn't have Javascript enabled, then yes.
You'll have to do the validation server side anyway, client side scripting is just a "nice to have" it shouldn't be mandatory.
There are also probably too many people using the web to build applications that should be native.
I hear this a lot, but I'm personally glad I don't need to download an app to my phone/computer to order pizza or find directions.
Obviously this is a balance, but of the two extremes that could exist, having too many web-apps seems to be better than having too few. The quickest, simplest step you can take ATM to improve your device security is to install fewer apps -- particularly if you use an OS like Android.
It's not clear to me that situation would get any better if half of the web disappeared.
I find it mind-boggling there’s a generation of developers after me that doesn’t know the basics of server side state. No offence intended to yourself, and good on you for putting yourself out there to ask :)
There is a reason single-page apps became a thing, so I'm not clear why you think a page refresh for every user interaction is somehow a good thing. The dismissive attitude that "Regarding form fields appearing and all your fancy front end logic: none of this would fly in user testing" flies in the face of how 90% of heavy consumer front ends out there work today.
I strongly prefer single-page web apps over native apps. Web apps are constrained by my browser. Native apps get a lot more trust.
Nothing in software engineering is absolute. And even if something were to be 100% the correct solution one day, the next it could change.
I wonder if there's a market for an alternative "browser" that loads "native" code (or as close as practically possible) and runs it in a sandbox.
Electron comes close, but many don’t like it at all. (I have somewhat mixed experiences, I love VS Code but I’m not too fond of Slack.)
Mike Acton once said something about having created a browser plugin his team used that loaded and ran binary exe tools on demand, but that it was also wildly insecure. At least I think he said something like that. My memory could be wrong about that.
Citation?
No.
This is probably not what you had in mind, and I'm not sure how good it would be at sandboxing, but REBOL Reblets imho come close to this <http://www.rebol.com/reblets.html>
Native apps have a performance benefit at the expense of everything we take for granted on the web, like being able to open up a developer console and inspect it.
For example, I noticed that the top language translation app on the Mac App Store incurs a Google Analytics request for every keystroke. And since there's no easy network tab I can open on any app, I only found it out because I was curious how it worked and mitm'd it with a proxy. And I couldn't just toss uBlock Origin at it to de-trackify it like I can any web app.
Doesn't seem like a 100% epic win for users to me. In fact, the only upside I can even think of is that it probably uses less RAM than a Chrome tab opened to Google Translate. Let's slow down and acknowledge the trade-offs before we go all-in on HN memes like native app superiority.
This is absolutely not true. Think about any kind of dynamic dashboard or data management platform. Having full page reloads for any minor change to filters, etc, is simply an unacceptable UX. But it has to be web-based because you need to be able to access it from any device, anywhere, without installing an app.
Plus, on a personal level, there are many services for which I will never install a native app—because I don't use it often, or because the native app provides no added benefit, or for one of a hundred other reasons. Those services don't get my business if they don't have a web app.
Theere's no reason a static contnt page must require JS Simply to render text, with a blank page as fallback.
Better ways of addressing the dashboaard example might be worth considering.
Too: bullshit dashboards with JS-based fakery;
https://www.theverge.com/2016/11/8/13571216/new-york-times-e...
In all seriousness, there is a big difference between static content pages and full-blown applications; the cost to make the latter work properly without JS enabled is almost never worth it. But the same is true even for some static pages; for instance, I would never expect that NY times election forecast page to work without JavaScript, and don't see any reason that it should. (The "JS-based fakery" is pretty irrelevant to the discussion, IMO.)
And: Sampling bias. A simple static page shouldn't require development. Hence, anyone doing web dev will have experience skewed strongly to more complex designs.
How would you describe the basic underlying structure and mechanics of a typical app you've built?
The problem is that many people, for various reason (accessibility, poor network connection, low-end hardware, etc.) are stuck "in the past" with regards to the web. This doesn't mean you have to make this the experience for everyone using your website: just make sure it degrades gracefully for those who can't use the new shiny stuff.
I hate to say it, but you're essentially saying "we can't afford to support people who are disabled, cannot afford the newest hardware, or are simply driving through a place with poor reception".
You have to do that cost-benefit analysis based on how important those things are to your business—for instance, screen reader support is an absolute necessity for the public sector and certain information-heavy apps, but probably not as important for visual tools.
I was talking to someone once about how ridiculously bloated Imgur is and that I had to use Imgoat because of the slow internet I was experiencing then. Of course they were trying to make all kinds of excuses like imgur not having servers nearby etc. But of course the really simple fact couldn't get to their heads that Imgur downloads like what 2-3 MB maybe even more of crap minus the actual image whereas Imgoat is something like 500 KB. No amount of network optimizations and caches etc are going to get over this fact. And also, such optimizations are over and above the page download size improvements anyways. If Imgoat used such techniques it'd be even faster. Most importantly: both sites have the exact same and simple core function, yet one site is so many times more bloated than the other. I will let you derive your own conclusions as to what this means.
And imgur also has the typical horrendous js misuses such as scrollbar hijacking that makes absolutely no sense etc.
Okay, example: client pays me to make an somewhat interactive website. Client wants it to be done using React as that is easy to get other devs for in the future, if the need arises. Client doesn't want to pay double (random estimate) to make everything behave in e.g. Lynx. Do I do it out of pocket, or just say no to the client?
And the absolute number of HN people like you shaming folks for not supporting text-mode browsers like lynx is a rounding error for most websites.
Straw man. We don’t want to go 15 years back, only 10 :-)
Seriously, the web was at a local maximum around 2009. Google worked, GMail was OK, Ajax was expected for r new stuff but was still written with graceful degradation in mind.
So the reason I always hear is performance: Less HTTP-requests, less latency, therefore better user experience. While that might be the case for flaky mobile connections (although executing lots of Javascript on resource constraint devices might not be the best idea either), with fast wired connections I experience the opposite: The single page apps of today feel a lot slower to me, than the websites with the same functionality did 10 years ago, thanks to all the computation which has to be done on client side. Just take Youtube for example: What a bad experience nowadays, especially with Firefox. That was way better back in a time when they didn't try to avoid page refreshes. And it's not just Youtube, it's all over the web. A welcome change to all of that is HN, because it still feels as fast as websites did, before frontend development was even a thing.
I find it mind-boggling that people forget the hell of flash scope and the back button and broken history and POST-redirect-GET. Session state was miserable and the best thing about SPAs is avoiding that.
And no, moving client-side logic to the back-end isn't self-evidently superior. Not for your implementation nor for user UX. So you'd have to use more than condescension to make your point. Full page reloads for an "Add Row" button died for more reasons than just "web developers are idiots and don't realize how everyone actually loved that."
Usually, such things are in abundance and take priority over supporting browsers without JS. For the vast majority of apps and businesses, JS as a minimum entry requirement is a perfectly acceptable tradeoff of lost users vs additional development cost.
I think just insisting on JS is, for most applications, the best thing for the most people. If the app is such that it has maximum availability as one of its top goals (government public service, public infrastructure, bill paying etc) I completely get it, but otherwise I'm just not convinced that not requiring JS is somehow inherently good.
If you'll allow a pretty weak analogy, it's almost like refusing to use a car and insisting upon using a horse and cart. You may have your own good reasons for doing that, and that's completely fine, you are free to make that choice, but you absolutely should expect the modern roads not to cater to you, and to be very often inconvenienced. Indeed, you shouldn't really expect society to spend lots of tax money catering to your choice and designing all roads, junctions, etc with it in mind, beyond the very minimum level so you can at least use the most important roads.
But rather than any analogy, think about how many times more powerful a modern computer is than a computer from 2000. Now think about how many times more "things" you can do on that computer simultaneously. The latter is much smaller than the former.
A US college or university site can be sued for lack of Section 508 compliace.
So, it goes beyond development costs to legal risk of lack of compliance.
OTOH, a site selling cars probably does not need to worry about potential car-buyers using screen-readers.
I'm absolutely all for accessibility and would never argue against making things accessible as part of some cost-based tradeoff. Frankly this shouldn't even be an issue that comes up if you 'just do things right' from the get go - but even if it does, the imperative is always on you to just fix it.
There might be a correlation where apps that happen to use JS are more likely to be written in a way which is less accessible by default, but that's another conversation.
With that out the way - totally agree with you, for certain apps with regulatory requirements insisting that JS not be required for use, that's what you do - and for good reason - max availability to anyone for public services etc - that makes complete sense.
The point I may have misunderstood is putting development effort into a SPA that only uses JS and works well with a screenreader versus the non-JS alternative that also works well with a screenreader.
Of course, it depends on where in the development process the developer becomes ‘aware’ of making the site compliant.
As you said, ‘do the right thing from the get go’.
Something like 90% of sites I run in to deliver static content, yet almost all use Javascript (again, for tracking and ad delivery).
Fortunately, the overwhelming majority of these sites still work great or at least good enough without Javascript.
Most sites out there really have no legitimate need for Javascript, with the exception of truly interactive sites like ones that let you play games in the browser, let you use some sort of application (like a spreadsheet, word processor, graphics program, or, arguably, web mail) in the browser, or do something like let you see live updates of things like stock tickers. But most sites are not like this. They just serve static content that could be served up just as well or even better without JS.
Perhaps you should give it a try and learn how to do it. That way you'll know when building non-js fallbacks is feasible and how do it easily.
> is it customary to have to submit the form to get the validation error messages to occur?
You trust the client to perform validation? Client-side validation should only be used to improve UX, not as a substitute for server-side validation.
I don't know if this is the "right" way, but it sure sounds like a more reasonable fallback for clients without JS than serving them a blank page.
Using Chrome with all tracking enabled is basically that. You just don't see CAPTCHAs. Blocking bot is a hard problem to solve.
It's an interesting alternative, though. Pay 5 bucks with the credit card to validate your identity if you don't want to subject yourself to captcha...
Lost? It is just ignored for the sake of cool SPAs and hottest new js stuff.
That’s not how accessibility works. Requiring JavaScript does not change how accessible your site is to persons with disabilities.
What does hurt is making sites that are difficult to navigate by keyboard, without proper accessibility hints, and actually it’s quite easy to do that without JavaScript.
plus what's in this comment https://security.stackexchange.com/questions/988/is-basic-au...
Yes! It was great! People would just transmit username and password in plaintext!
Wait. That's actually the opposite of great. That's why nobody uses it any more.
And no, handycapped people aren't excluded just because something doesn't degrade gracefully into a no-JS environment. You can (and many people do) make perfectly accessible web sites that still require JS.
As for offloading captchas to the client? That suffers a similar problem to basic auth - it's extremely vulnerable because attackers can obtain access to information that makes their job trivial. That's why we cannot "come up with a standard" - the client has to be treated as hostile, because there's no way to verify their integrity.
> Wait. That's actually the opposite of great. That's why nobody uses it any more.
Unless of course, if you're using HTTPS, in which case HTTP basic auth is fine and very simple to configure for many use cases.
My guess on the reason why is two-fold. First, we've been telling people that Basic Auth is a terrible thing only stupid people would use for more than two decades now, and once a lesson like that gets hammered deep enough into the mass consciousness it tends to stay there even long after the underlying facts have changed. And second, using Basic Auth means giving up any possibility of styling/designing your login experience and relying instead on the browser's built-in dialogs, which tend to be clunky and ugly in the extreme.
For further risks, see e.g. https://security.stackexchange.com/questions/988/is-basic-au...
Yes, it's simple. And you're trading off security for simplicity. Make that choice, maybe, for your Intranet or your small blog. Commercial sites that have stored PII really, REALLY shouldn't.
Then it's more or less as broken as alternative authentication methods
old, yes. good, no.
* Browsers never implemented a way to "log out", so creds end up cached in memory until the browser is restarted.
* There is no concept of a session so the credentials need to be included in each request and verified every time. If you use something like bcrypt or pbkdf2 on the backend that means every request will take hundreds of milliseconds.
* Since every request needs to be verified you can't easily use 2FA, without ugly hacks that 'remember' that the earlier creds were valid.
Hopefully things like WebAuthn will result in a resurgence of browser native autentication.
If you write even mildly complex business applications with business rules and want a professional and non shitty user experience you absolutely need Javascript, there's no substitute.
If you make simple sign up forms then by all means don't use Javascript.
JavaScript doesn't deserve all the hate it gets, but the flip side of that is that it gets most of that hate because of the way developers keep using it.
Also, no JavaScript means no Google Maps.
Certainly, in terms of accessibility, the JavaScript (and Browser) landscape has never been better than it is now. General awareness and tooling for building online experiences that consider disabled users has led to an infinitely better time for these people when using the internet, overall.
Sure, some people build shitty products that make your fan spin and ignore disabled users. But that's because they've built a shitty product, not because of the 'modern browser' itself.
> The web can be a resource hog, sometimes devouring CPU and memory. But it doesn’t need to be that way.
It also doesn't mean returning back to horse and cart!
OK, not no one. And people certainly DO care if a site is very slow, or user interactions are bogged down and choppy. But there is this somewhat weird (IMO) belief, very common among developers and tech-savvy users, that heavy use of resources is a bad thing in and of itself. I certainly understand where that belief comes from, but it's just not relevant to 98%+ of people if it doesn't get to the point of being heavily noticeable in user interactions.
It would be better if poorly designed sites (for example newspapers or TV channel sites) were slow or displayed without images and iframes with ad rarher than situation when browser swaps out everything else to help this poorly designed site run faster.
Such a compelling argument! But seriously, MOST websites are slow and bogged down, especially in cheap hardware, we just have grown accustomed. The fault doesn't lie in hardware not being there yet or over-zealous power users, it's in webdevs being just plain lazy. And it's just gonna get worse with each iteration of new js library woo, each one another brick in this clusterfuck of a Babel Tower.
That's an excellent summary of modern web development. Folks with 32 GB of RAM and the latest and greatest Intel CPU + the most expensive cutting edge video card decide what's acceptable resource usage. Cause hey, it works for me.
It blows my mind that companies think that delivering a full-featured browser with a web page to make it into a native application makes any sense whatsoever. In a lot of cases, the same app, written 30 years ago, would fit on a floppy disk.
We throw tons of CPU and memory at these problems precisely so we can build fast.
And now, 15 years later ... I have a MacBook Pro and iPhone. I'm so lazy. Every day at work I write tons of C/C++ code. I know how works Linux TCP/IP stack, TLS, HTTP1/2/3. But I just want to watch the new Stranger Things episode after the workday. I don't have any customization app for OS X. No special hotkeys or c00l h4x0r terminal app.
Try `ssh brow.sh` for a 5 minute demo (`ssh brow.sh -t https://maps.google.com` is pretty cool too)
I really need to try out the experimental vim branch[2] to emulate Vimium/Tridactyl. Firefox rendered to a shell with Vim keybindings would be so amazing to use!
[1]: https://www.brow.sh/ [2]: https://github.com/browsh-org/browsh/pull/264
Also, some commands interfere with Tmux I think, such as closing tabs. I need to figure that one out!
So basically I just wanted to say sorry to the people that have submitted code and not had it merged and sorry to the people that really want this feature, like a handful of blind users that keep emailing me about full keyboard support. I haven't forgotten about Brwowsh, I've just got to earn some money first.
The only thing I can think of is the filtering I had to setup after Browsh got blacklisted for rendering https://html.brow.sh/https://mail.google.com as it was seen as a phishing attempt. Now I 301 redirect all matches for `[mail|accounts].google.com`.
If you install Browsh yourself you can customise the redirect filters however you want.
I also enjoy reading your blog - your article on China was eye opening.
Most webpages are mostly text, and terminals are great at text.
function streamer() {
youtube-dl -o - "$1" | vlc -
}
Then: $ streamer <just about any media url>
Of course you need youtube-dl and vlc $ mpv <just about any media url>
without setting up any aliases or functions or mucking with calling youtube-dl yourself.[1]: https://iina.io/
mpv() {
if [ $# -eq 0 ]; then
command mpv "$(xsel -b)"
else
env mpv "$@"
fi
} $ vlc <URL of YouTube video>
Or just copy the URL and hit Ctrl-V at the main screen of the UI on Windows/Linuxhttps://ytdl-org.github.io/youtube-dl/supportedsites.html
Very useful for even strange sites like my local news station that uses a broken Flash media player.
A browser extension would be even fancier, but I don't think that would work so easy permission wise :)
Well, wasting 100-200 Mb for one tab is fine, but what if I have many tabs opened? Browser quickly uses up all available memory and starts swapping out other programs including a shell.
I think that browser could at least reduce memory consumption for background tabs: they don't need to run when they are in background. A browser could free everything that is not necessary, including: image decoding cache, caches to speed up DOM and CSS, canvases, compiled JS bytecode (it takes more memory than source code) and JIT'ted code, any network caches, SQlite cache. Also they could gzip text resources in memory like CSS or JS code.
Note that this approach is better than simply unloading a page like mobile browsers do. But if the user didn't input anything into a page, I think it should be fine to unload it completely after some timeout (for example, 30 minutes).
The same approach could be used with iframes. Typically they are used mostly for ads and analytics. There is no need to waste precious memory for slightly better animation of an ad banner.
I remember that many years ago Opera could handle tens of tabs with 512 Mb of memory and not get swapped out.
Tabs back then weren't full page SPAs, though.
The author is right when he says in the conclusion that it is really difficult to do without Firefox. Although many services can be fixed with external programs, these are often only emergency solutions.
But I also learned to distinguish between the "information" web and the "entertainment" web and since I do a lot of research, programming and reading in data sources I don't need Javascript to 95%. Other points are important to me, e.g. fast loading times, low CPU and minimalist design. But you have to do without many features.
Text-based web browsers are cool, yes. But if you're not in the Linux scene and ride on (e.g. Manjaro I3) it's incredibly cumbersome and exhausting.
[1] https://voidnill.gitlab.io/cosmic_voidspace/alligator.html
(I'm not affiliated)
If I want to do "fancy" things, like book a flight, I just do that on the iPad.
I'm a JS dev working with some relatively large institutions building single page web applications using JS frameworks. Unfortunately I have seen there is often an unwillingness from both management and some developers to invest in server side rendering of SPAs. There is always a willingness to support users who have visual or other accessibility requirements, yet users who want or need to disable JS are often left out in the cold.
I love JavaScript but I still believe it is important to provide alternatives for those that don't.
Because accommodating disabled people is mandated by the ADA. No such requirement exists for noscript users.
Isn't that just a preference of the user, that has repercussions? In fact the WCAG 2.0 specifically says that a JS fallback is _not_ a requirement for accessibility - a common misconception is that disabled users disable JavaScript - this isn't actually true.
Fair enough if you want to turn off JS for tracking reasons or whatever, but you have to accept that some things might not work without it.
Because it's simply not worth it. Do the math on the number of people who want to be able to use a site without JS (and the even smaller number who would absolutely refuse to use a site without JS) vs. the large cost of maintaining essentially 2 versions of the site. Couple that with the fact that the types of people who disable JS tend to make horrible customers (and I'm not saying that's at all a bad thing, but from the pure economic perspective of the site owners it means their opinion counts less).
SPA to me implies that essentially all the content is fetched not via traditional navigation but AJAX requests fetching pages/content etc. and the local JS code making sure to switch out the currently displayed contents.
My understanding was that server side rendering simply speeds up first load of an SPA since it doesn't need to be rendered on the client, but then you still need JS to actually get any additional content and navigate.
I guess one could build something that looks/behaves like a traditional web app with links leading to new pages that are rendered by the server and if JS is enabled switch to what I described earlier. Would the former really be considered an SPA though?
I guess the definition of an SPA is not as strict as Wikipedia says? But what makes such a web app (like you mention with actual page navigation) an SPA? That's just a ... normal web app/site.
I guess the point was that a perfect SPA has a fallback mode that works without JS? I'm just not sure that exists at the moment. If you invest in an SPA and its (perceived) advantages aren't you choosing it precisely because you want it to be more than a traditional web app with individual pages? Hence all the JS and reactiveness in the browser. Building a degraded fallback mode would be admirable but it's a whole lot of added complexity (have to find alternative UX to accomplish those JS interactive pieces).
If your SPA isn't actually an SPA maybe just stick with a traditional setup. That's why I don't understand the drift in that original comment.
That said, I still use tools like youtube-dl on most of my computers and IRC and RSS and all the rest.
Then I do all other browsing on a Chrome Guest session. It's cut down my web usage a bit as I have to log in to sites like HN or LinkedIn, Facebook, in the guest session to use them.
On modern hardware it's effectively instantaneous. Click the icon to start it and it's up and rendered the homepage before I release the mouse button.
Many sites don't work well in Dillo, but then many sites do.
It doesn't really support JS yet - it's included and you can compile it in, but there's IIRC no DOM still - and 3.8 behaves a bit weirdly with word wrapping and fonts (I think the latter is because they are compiled in the executable), but it works pretty well, and it works even outside X: it has a framebuffer version.
I have locally defined bash functions for DuckDuckGo (ddg), the Online Etymological Dictionary (etym), weather, and stock quotes (well, plus extensive cruft-stripping for the latter). DDG + bang searches gets me numerous other services, particularly Worldcat, which wins the award for least-useful web design: it breaks on both mobile GUI and console devices, though at full screen rendered by w3m it's passable (I'm considering how to extract and present useful info bypassing the web design entirely).
Third-party utilities give further resources: surfraw for a whole slew of sites, rvt (no longer maintained :-( ) for Reddit, and a set of Wikipedia tools. There's dict/dictd for dictionary lookups (including forwarding OSX queries to my Debian Linux box which has both a server and far better dictionaries).
For RSS I wrote a far-too-complex "rsstail-pretty" which reads from a set of feeds and restructures output -- because there's all kinds of useless and annoying crap in RSS feed content. Similar tricks for stockquote (a bash function wrapper around an awk script) and weather (bash function, sed, and awk -- because features of each are required).
The browser or http agent (w3m, curl, wget, generally) fires once, grabs content, and gets out of the way in many cases. No 25GB VSS memory allocations (yes! Firefox) resident for hours or days.
The amount of useless cruft wrapped around desired information payloads makes the Saturn V launch / return capsule mass ratio look downright sleek.
Particular disappointments: Archive.org, entirely useless without JS.
If for some reason I was unable to use an ad blocker then my web browsing would drop to such an extent that you could say I no longer used "the web" but rather a handful of sites. Similarly, if my only TV option was cable with commercials, I'd just stop watching TV altogether.
I normally browse without JS, and JS-only sites are increasingly common. 95% of the time I just close the tab, even if I'm researching local businesses. From the other 5% of the time, requiring JS to read some text has become such a reliable predictor of regret that the choice (to just close the tab) is easy and immediate.
On the flipside, people here often complain about not being able to view a site or that its format is unreadable, when it works great without JS, so it goes both ways. You only ever hear that blocking JS makes things fail, but not that it makes things work.
Chrome even has (what I consider) a great interface for minimally controlling JavaScript and cookies, by placing an icon on the omnibar when either are blocked, letting you enable them on a per-site basis.
More recently I’ve been playing around with heading in the other direction: when things break, I try blocking first-party JavaScript instead. This has often been successful, so that I’m considering disabling all JS by default and only turning it on when needed.
All this definitely speeds things up. I installed NoScript on my fairly slow phone (Firefox for Android) a month ago, which I don’t use for much, but do a little web reading on sometimes. Disabling JS definitely sped things up a lot.
A few sites do stupid things like visually hiding all content if you don’t have JS. Those I don’t use, use reader mode or once or twice have added a user stylesheet for if I’m going to touch them more than once but decide not to whitelist them for probably capricious reasons.
But this disabling-JS lark is definitely not for the consumer.
Google also uses this trick in search results if I remember correctly.
This is a bad technique. If you really want that effect, something friendlier would be this in the head of the document:
<script>document.documentElement.className+=' js'</script>
… then prefix that earlier selector with `.js`.Or another approach: remove the `opacity: 0` from the stylesheet, and immediately inside the element to be hidden while loading, add
<script>document.currentScript.parentNode.style.opacity=0</script>
Remember that external JS is never guaranteed to load; even on normal people’s computers, networks are not reliable and even first-party resources can fail to load, though it’s ones on a different origin that are the least reliable.Which leads me to the question: when is a browser considered modern? If it has a GUI? If it supports Web 2.0? If it supports Web 3.0? If it supports JavaScript? If it supports all JavaScript by default?
"There are multiple text-based browsers to choose from. The oldest and maybe the most well known is Lynx. Personally I use Links instead, which provides a similar experience, but also includes a “graphical” mode that is capable of displaying images, and the default background color is black as opposed to gray (only for the non-graphical mode, though the background color can be changed in graphical mode). Here’s a list of text-based browsers from Wikipedia (not all of them are maintained)."
Every once in a while I check this out. They're all either horribly out of date, or they do not work with current technologies, or they have some experimental features but they're out of date ports from Firefox (with security vulnerabilities!). Hence I recommend Browsh instead which is based on Firefox. But I would not say it fits the narrative of "living without the modern browser" as it is Firefox under the hood. It fits better in the living without GUI narrative.
Quick solution can be if website is trying to act as "app", should only be app, leave web for just reading hypertext and links. Any lightweight browser can handle that.
But again we will have to draw an imaginary line between websites and apps.
I hadn't ever really considered just giving up on the browser before. But I think yeah, maybe it's time. The web has become such an awful cesspool of surveillance capitalism, I'm tired of fighting it all.
So when I discovered the RSS feeds, I just unsubscribed to everything from the website and added the feeds to my feed reader instead.