1. 2

      A lot of the cons are actually design/implementation problems that are quite common and correlated in SPA’s but not truthfully caused by them.

      Back button not working ?

      Browsers and most common js frameworks have good solutions for that. Check your design/implementation.

      Open in a new tab not working ?

      The same. Check your design/implementation.

      Refresh not working ?

      The same. Check your design/implementation.

      …feels like blaming vcs’s for being bloat with binary trash everyone puts there; or blaming wordpress sites for having huge high-res images; or any other kind of “you are using it wrong” tech problems.

      The author is right, the current state is sad, SPA’s are a good approach to certain current problems but they are not a silver bullet.

      1. 24

        If you want to take it to the extreme, you can build a website that fits in a single TCP packet.

        Source: https://github.com/diracdeltas/FastestWebsiteEver

        Demo: http://packet.city/

        1. 12

          “Get in touch today to hear about our 120-byte ad sponsorship opportunities!”

          Amazing :D

          1. 4

            Ok, that’s totally awesome. Tops my idea by far!

            1. 2

              Of course there’s sound on that page too. BBS advertising at its best.

            1. 1

              meh, this is really a cat and mouse game. just test it like:

              if (navigator.webdriver || navigator.hasOwnProperty('webdriver')) {
                console.log('chrome headless here');

              And there goes the article until the author can find a way to bypass this now…

              1. 6

                The point of the article is sort of that it’s a cat and mouse game. The person doing the web browsing is inherently at the advantage here because they can figure out what the tests are and get around them. Making the tests more complicated just makes things worse for your own users, it doesn’t really accomplish much else.

                const oldHasOwnProperty = navigator.hasOwnProperty;
                navigator.hasOwnProperty = (property) => (
                  property === 'webdriver' ? false : oldHasOwnProperty(property)
                Object.defineProperty(navigator, 'webdriver', {
                  get: () => false,
                1. 1

                  Yet there are other ways that surely make it possible for a given time window, like testing for a specific WebGL rendering that chrome headless cannot perform. Or target a specific set of bugs related only to chrome headless.


                  1. 1

                    Well, eventually you just force people to run Chrome with remote debugging or Firefox with Marionette in a separate X session, mask the couple of vars that report remote debugging, and then you have to actively annoy your users to go any further.

                    I scrape using Firefox (not even headless) with Marionette; I also browse with Firefox with Marionette because Marionette makes it easy to create hotkeys for strange commands.

                    1. 1

                      Even if there were no way to bypass that, don’t you think that you’ve sort of already lost in some sense once you’re wasting your users’ system resources to do rendering checks in the background just so that you can restrict what software people can choose to use when accessing your site?

                      1. 3

                        If headless browser is required to scrape data (and not just requesting webpages and parsing html), then website is already perverse enough. Noone will be suprised more if it would also run webgl-based proof of work before rendering most expensive thief-proof news articles from blob of malbolge bytecode with webgl and logic based on GPU cache timing.

                        1. 1

                          You’re paying a price, certainly. But depending on your circumstances, the benefits might be worth the cost.

                  1. 1

                    I wonder what would JavaScript be in this parallel world of programming languages characters :)

                    1. 3
                      1. 3

                        The Troubadour and his Travelling Troupe of Merry Dancers

                        Your songs about the Scripture are heard everywhere and are especially popular with younger children. Older people have long since given up trying to block you out of their villages.

                        1. 2

                          Spy from a distant land that the kingdom occasionally trades with. He is always browsing local windows and sending secrets back home. A bit slow, but nobody else was willing to live so far from home.

                        1. 5

                          I am not going to buy intel s̵t̵u̵f̵f̵ shit again. I have been talking to my friends and relatives about it too. This is just too bad for any company to prevail.

                          1. 2

                            That’s a poor attitude to have. Every CPU has bugs. No modern fast CPU is going to be fully immune to all of these bugs. We made mistakes in the design of modern CPUs because we wanted speed.

                            1. 5

                              Poor attitude ? My comment, much like the post, refers to the company. This is a big corp with a highly hierarchical structure and heavily thorough process in making their products reach market. Intel was doing it on purpose, make no mistake. Judge poor attitude where it is at.

                              “Some VW executives probably wish a problem with their brake controller software has been discovered at the same time,”

                            2. 1

                              Me too. Intel really needs a credible competitor.

                              I delayed all my hardware purchases in the hope that the next CPU designs address these and similar bugs, that the mitigations for Rowhammer work reliably in RAM chips and that the availability of GPUs improves. After that AMD will get my money.

                            1. 2

                              my browser probably implements this to be O(shiznit(n)) for a large enough n

                              Love this. Definitely my feeling when talking about Big O performance bounds. Folks rely a little too much on it as a method of determining performance, instead of actually running tests.

                              1. 3

                                Author here,

                                thanks i feel the same :)

                                Most discussions in my everyday life about code/algorithms/datastructures tend to favor Big-O arguments over actual running cost in real world scenarios. Which can lead to tricky and embarrassing situations.

                              1. 2

                                The ammount of requests will tend to stabilize with time because lobste.rs right now is much younger than most tech eligible for tags.

                                1. 4

                                  Awww man, no console.group()?

                                  1. 1

                                    group() is amazing! specially the groupCollapsed(). I considered them but then I thought I be opening the door to talk about count and all the other useful console functions so i focused only on .log(). Maybe next time :)