Jump to content

InterLinked

Member
  • Posts

    492
  • Joined

  • Last visited

  • Days Won

    4
  • Donations

    0.00 USD 
  • Country

    United States

Posts posted by InterLinked

  1. 3 hours ago, Caporeira said:

    Hi,is there a possible to download Windows 2000 bootable image included new drivers ?

    I have PC with Gigabyte GA-P55A-UD3 and I'm getting blue screen with 0x0000007B error code, when I trying install W2k.

    Probable some driver are needed.

    I think it's against TOS to distribute modified ISOs here.

    However, you should be able to make one yourself somewhat easily.

    Have you followed the steps here? https://w2k.phreaknet.org/guide

  2. 1 minute ago, VistaLover said:

    ... On June 26th/27th, bloody Microsoft :realmad: devs unleashed a set of newer-JS-syntax-containing GitHub scripts; "new" JS features included the dreaded Optional Chaining ("?.") and Nullish Coalescing ("??") operators, that can't be polyfilled :((but, perhaps, could be transpiled...).

    Fortunately for "us", very recent UXP-based roytam1 forks (e.g., I use myself St52 and, occasionally, NM28) have these two operators natively supported, thanks to the efforts of an "upstream" dev! :thumbup; of course, you need either the github-wc-polyfill (v1.2.19) or palefill (v1.14) extension in order for GitHub to be usable in UXP-based browsers, but, all things considered, latest Serpent 52.9.0 (and, probably, latest NM 28.10.6a1) survived these most recent GitHub changes practically unscathed... :thumbup

    Goes without saying that in browsers lacking such support (older UXP-based builds, Chromium forks based on Ch<80 - yes, these include both 360EEv11/v12 :( ), GitHub is basically now BROKEN (you can simply browse GitHub pages, but you can't do many "useful" things on them :no: ...).

    And here comes Serpent 55.0.0 :rolleyes:; after the recent "sync" with UXP (thanks roytam1), and for a brief period of several weeks, GitHub was fully functional in St55, provided, of course, gh-wc-polyfill/palefill had been force-installed there (neither of these two extensions cater "officially" for the moebius fork...).

    AIUI, latest St55 [v55.0.0 (2022-06-22) (32-bit)] should have native support for both "?."+"??" operators, backported from UXP; however, after the recent GH changes, I find that GH is no longer usable there :( :realmad: ; I have gh-wc-pf_v1.2.19 force-installed and many GH pages do work as expected, but other pages cause the browser to fully crash :( ; example is the main repo page of any GH project, e.g. 

    https://github.com/gorhill/uBlock

    zeQwm2g.jpg

    https://github.com/JustOff/github-wc-polyfill

    etc., the issue tracker of a project will also, often, produce a crash and, last-but-not-least, trying to access your GH account via your avatar (top right) will ALWAYS result in a full-blown browser crash... :realmad:

    @roytam1 : Please, can you reproduce at your end? :dubbio:
    Given that latest St52 doesn't suffer from this, does this mean you need to transfer more UXP "stuff" to moebius for GH to work, or is that no longer possible?

    As I've posted in the past, GitHub is a site I use many times daily, I already lament the loss of proper support in 360EEv11/v12, I thought St55 would've been my third option besides St52+360EEv13, only to sadly find it, too, has been broken by Microsoft... :(

    Personally I noticed this almost immediately as I use GitHub quite regularly.

    It was broken on Monday, working for a brief period of time yesterday, and broken again today.

     

    I have contacted support before in the past and gotten them to revert the changes in the past. They also said they would not do this (the ?? and ?. operators) so now they've lied.

     

    Please *DO* file support tickets and complain about this BUG since they have broken the website and made it inaccessible. It violates the spirit of their platform and they need to hear from a lot of people. **They do actually listen** but they DO need to hear from you! Please take a minute and file a bug report now. It will only take a minute and they will hopefully put a system in place to ensure this is reverted and does not happen again if enough people complain.

  3. 11 minutes ago, XPerceniol said:

    Never owned a smart phone and don't want one, but I do have a dumb phone because it was too costly to justify them getting me a land line phone.

    Then go VoIP. It's cheaper than both.

    Point is to use a landline PHONE and the actual service can be VoIP or true POTS, etc.

    Then again, I'm a VoIP/telephone engineer in my spare time so I have to remember it's not as simple for everyone ;)

    11 minutes ago, XPerceniol said:

    Have you beat - both my PCs are going on 18 years old but my main monitor is only 10 years old. My Old Dell that came with my old Dell Dimension 3000 still works but causes massive headaches.

    In my case, all the equipment was free anyways, so it was either use such a PC or watch it be recycled...

    11 minutes ago, XPerceniol said:

    I've never owned a car and I can't imagine how people afford to drive, one of the guys that pick me up says a full tank lasts for only 1 week, but he drives all over. I walk, but not as much as I should be. Hard to explain, phobia(s).

    Right now I live in the city, so yeah, no car. In a few years I'll probably move somewhere more rural and then I'll "need" a car, but for now I don't so no point in having one.

    11 minutes ago, XPerceniol said:

    I guess its just sad that this is not the country my dearly departed father hoped it would be. I'm glad I don't have spawn (hehe) as I worry about the state the world will be in when I'm cremated.

    Yeah, kind of the same myself...

    11 minutes ago, XPerceniol said:

    I (personally) find the whole funeral thing and religious crap extremely offensive - people are there at the end crying over the coffin when where the heck were they throughout their life when that person really needed them.

    I"ll haunt anybody that does that =P. Actually, I'm so isolated that nobody would even know if I dropped off the face of the planet tomorrow, and I prefer it that way. Wouldn't even be in the paper ... "poor troubled soul was he" .... hurl. 

     

     

  4. 2 minutes ago, cc333 said:

    I'm tired and depressed after yet another day of observing humanity's ineptitude and people's utter lack of concern for each other, so I won't go on much....

    Re: EV vs. ICE:  I don't know.  I think maybe EVs ultimately aren't a terrible idea,

    Don't be fooled, even for an instance. They are a terrible idea. Environmentalists should not settle for the "lesser" (if it is that) of two huge evils. There is a third, better way.

    2 minutes ago, cc333 said:

    but I agree wholeheartedly with many comments here that the available options leave much to be desired, create needless complications, and simply manufacturing them and their components (the plastics, the metals, and, most notably, the batteries) actually creates almost as much damage to the environment than driving around a 20+ year old gas/petrol powered car.

    I'm a little bit more positive about it, in that I don't think it's 100% about milking more money out of people, but I do believe that the current push, at least over here in California, USA, is severely misguided at best, because we have an old, outdated electric grid that isn't equipped to supply the kind of power output that several tens of millions of EVs would need, except perhaps in the major cities.  What about all the people living in rural areas, though? 

    Yup, exactly. And consider how toxic most urban areas are these days, most environmentalists live in or are relocating to rural areas.

    2 minutes ago, cc333 said:

    Where I am now, every third car is an EV of some type, and those who own them have the money to not only buy the car, but to also upgrade their homes with a proper charging solution.  Attempting to drive an EV in a mountainous rural area, while doable, isn't practical or financially sustainable by most;  therefore, I don't think it's wise to force everyone to adopt them right now.

    In time, my hope is that the technology will improve, new methods of manufacturing will be invented that reduce the environmental impact, and the electric grid will be upgraded and rebuilt, but with all the political inertia and red tape, it's gonna take decades at best for all of these things to happen, and nobody seems to care.  Hopefully when nuclear fusion power gets invented, things will improve.

    These are the bright green lies society is banking on: that in the future, we'll have better technologies that will make the problem disappear. The problem is *that's not going to happen*, it's not physically feasible, and all of this is destroying the planet *right now*.

    2 minutes ago, cc333 said:

    And now for electronics.

    Take cellular/mobile phones, for example.

    I like my iPhones, but it's gotten to a point now where every phone on the market is some kind of Apple (iOS) or Google (Android) based flat slab of glass or plastic with cameras galore.  For years, I haven't really cared about the latest and greatest, preferring instead to use older phones, and to keep using them for longer than the average person might (we used TracFone (a US prepaid service) with a 2G phone until late 2013 or so, LONG after most everyone else I knew switched to an iPhone), because why upgrade if it still works?  I mean, the main purpose is to

    I'd keep using my old Nokia 5190 or Motorola StarTAC indefinitely if I could, but as the 2G and 3G signals get shut down over here in the US, the situation is becoming increasingly bleak and depressing, because pretty soon, only brand new smartphones will work.

    Ditch your "smart" or "dumb" phone altogether, and get a real phone. My 1957 Western Electric 500 blows your phone out of the water any day. Or any other phone manufactured by Western Electric before Divestiture.

     

    2 minutes ago, cc333 said:

    The carriers all say they need to maximize capacity for the new hotness they call 5G, but I just don't buy it. 

    5G is an environmental disaster. It's going to significantly increase carbon emissions and compromise any current targets for carbon neutrality. It's yet another we don't need that is bad for the environment on multiple fronts.

    2 minutes ago, cc333 said:

    4G was plenty fast for my needs (I mean, even 3G is good enough for what I want to do;  2G is pushing it, but even that's still OK for the occasional email or something), so why do we need to keep making things faster?  Did anybody actually ask for it?  I didn't.

    And don't get me started on all this SaaS rentware garbage.  And cryptographically locking down all aspects of the hardware architecture that rentware runs on is just wrong.  I don't want to pay $1000 or more for a computer, only to be locked out by the manufacturer a year later when they decide to stop supplying OS updates because it's "too old".  And when they inevitably say that the newer OS is safer, I cringe, because while there can be some genuine risks in high security settings, I feel that the average user need not care too much, as long as they practice good browsing habits and the software in question is updated enough to work with modern standards (I consider Windows XP to be the practical minimum here, with 7 being my preferred recommendation for those who aren't quite as technically minded, because XP requires a lot of hoop-jumping nowadays, whereas Windows 7, provided the hardware is compatible, still more or less works out of the box once updated a bit (and Spectre/Meltdown mitigations are disabled, because I think the danger of exploitation is mostly theoretical (and requires direct access to the hardware, if I'm remembering correctly), and thus in practice poses relatively little risk to the average home user).  I developed a soft spot for Windows 8.1, because I could make it work and look mostly like 7 with some minor tweaks, but I avoid 10 like the plague because I don't like it.  11 is worse in this regard, and has rendered 100% of my hardware (some of which I've paid thousands of dollars for over the years) obsolete.

    I'm with you there. Windows 7 is my main OS, and I'll continue running it on hardware from around 2010 for a very long time. (Lots of it being recycled so I have ready access to it)

    2 minutes ago, cc333 said:

    Anyway, I guess I went on longer than I thought.  Oh, well.

    Maybe someone, somewhere, sometime will invent a time machine that we can all use to go back in time to a point when the world as we know it seemed like a better place (for all its turmoil, I find that the bulk of the 20th century seems like a happier time than the 21st century has so far turned out to be (of course, looking back through modern history, few periods have been quite as thoroughly miserable as the past ten to twenty years have been).

    You can do this if you don't want.

    I don't have a cell phone or any other low-quality, high environmental impact consumerist crap technologies. I only use landline phones (mostly Western Electric, which is the gold standard as far as phones go). I've got an early 2000s Canon point and shoot camera that works great. I've got everything I want and need, and it works better than all the crap that everyone else is taking on debt to buy.

    My PC and monitors are all 12 years old.

    I don't have a car yet, but when I get one, you can bet it won't be newer than 40 years old.

  5. 3 hours ago, UCyborg said:

    Expensive gas -> expensive everything else

    A big downvote from me! :thumbdown

     

    That's kind of the point... stop the real killer of the planet and cause of climate change... rampant consumerism, waste, and excess.

    Throwing a wrench in the economy is an easy way to reduce environmental impact quickly.

  6. 45 minutes ago, UCyborg said:

    EU is talking about forbidding of sales of cars with classic gasoline engines.

    https://www.cnbc.com/2022/06/09/goodbye-gasoline-cars-eu-lawmakers-vote-to-ban-new-sales-from-2035.html

    Great, they've now jumped on the "gasoline is evil" bandwagon....

    Exactly what I would expect these rich out of touch lawmakers to do. If they really wanted to make a difference, maybe they would ban the sale of new cars or heavily tax driving any car. But no, they just push subsidies for certain environmental atrocities while condemning others. At the end of the day, the earth loses either way.

    Personally, I'd rather see gas stay at $5 per gallon than a complete ban on gas vehicles. For them, it's about having their cake (pretending to make a difference) and eating it too (enjoying the benefits of car culture)...

  7. 6 minutes ago, NotHereToPlayGames said:

    "amy" (the creator of Proxomitron Reborn) was going to look into "spoofing" the 'fingerprint' that Cloudfare uses but that was several months ago and I've never heard any status so I can only assume the project died before it even left the ground.

    Hmm... so apparently this is why I can't access any sites on medium.com

    For about a year now, I get their "1020 Access Restricted" - owner may have blocked you blah blah

     

    Spoof user agent from Iron 70 to Chrome 98 and boom, now it works.

    The people who run medium.com are total freaking retards, there is no other logical or plausible explanation.

  8. 4 minutes ago, NotHereToPlayGames said:

    So far, the answer has been that the end-user will have to do this manually for each and every web site that said end-user wishes to restore functionality.

    The best example thus far has been one by @UCyborg here  --  https://msfn.org/board/topic/183484-polyfill-whats-all-this-then/?do=findComment&comment=1216216

    I have personally not been able to repeat this on an American Water web site but I haven't fully given up yet.

    It is not a trivial process, the average end-user will not have the patience to do this manual process for every web site they encounter.

    I also am attempting via chromefill whereas UCyborg was successful only via palefill. (I have not been able to get American Water to work with non-polyfill NM28 with palefill.)

     

    That was actually the idea that I had suggested / been thinking about a few weeks ago... chromefill applies polyfill automatically, why not run it through something like Babel to transpile it from newer syntax to older "vanilla" JS syntax on the fly?

    It just seems there isn't a tool for that *now* but we could make one, and clearly it does work if done manually. Great work and good to see! The challenge will be automating it.

     

    4 minutes ago, NotHereToPlayGames said:

    UCyborg's process is fairly easy to follow, once you narrow down the problematic script (his test site only has two, American Water's test site has over 200 scripts).

    He narrowed the "??" issue down to this script  --  https://docs.microsoft.com/_themes/docs.theme/master/en-us/_themes/scripts/d48a1159.index-docs.js

    If you open that script and paste the contents into Notepad++ and do a search for "??" (without the quotes), you will find 34 hits.

    Now open this web site ( https://babeljs.io/repl ) and paste the script contents into the left pane (center pane if you include the far left settings pane, keep all of them at their defaults) of Babel.

    Give it a few seconds and the translated script will appear in the right column.

    Copy and paste the right column into a new tab in Notepad++.

    Now do a search for "??" (without the quotes) for the new script - you will now have 0 hits.

     

    So "all of that" was required in order to "magically" convert the polyfill "??" to something that will work in a non-polyfill web browser.

    But you still need to add palefill or chromefill extension depending on Mozilla or Chromium based browser.

     

    Ideally, something like this would be part of one of those extensions.

    I would add it to chromefill myself in a second, if only I knew how. I don't think there's any way to do transpiling on the fly automatically.

    Alternately, perhaps if there is some JavaScript based Babel transpiling to convert the syntax, that could be part of the extension and all the JS could be run through that...

     

    4 minutes ago, NotHereToPlayGames said:

    And you still need Proxomitron Reborn to have your web browser replace the original script with the converted script.

     

    Problem there is going to be this - very few folks here at MSFN seem to be interested in Proxomitron Reborn (I've used it since 2004 (the original, the Reborn is not that old) and I still don't fully understand "everything" that it is capable of doing!).

     

  9. Just now, NotHereToPlayGames said:

    Totally Cool !!!  I thought I was the only one!  I don't have a landline or a cell phone!  Haven't since 2001.

    No cell "phone" here either.. though I think the term "mobile" is better since they are an insult to telephony.

    On the other hand, I have about 10 phones of varying vintages within arm's reach, so I guess I still have a phone problem :(

    In my defense, I do a lot of testing, and that's actually what I'm doing right now, speak of the devil...

  10. 5 minutes ago, UCyborg said:

    How do you people feel about DST? I've read USA is going permanent DST while Europe will continue to change clocks at least until 2026. Initially, it was supposed to end by 2021 or so, but I didn't catch what time would end up permanent.

    I think either two options above are bul***** and vote for permanent standard time. Daylight Stupid Time belongs in the history books.

    I agree. Permanent Standard Time. I'm a morning person and I prefer the "real" time.

    I know some people who refuse to observe DST and they basically live in their own time zone during DST...

  11. 5 hours ago, Destro said:

    lol gas prices were low in USA before Brandon became the resident, it was also an energy independent nation.  If you think gas prices are untenable than don't vote for somone that wants to abolish the oil industry.  Elcectric cars maybe a step in the right direction,

    They're not.

    It's just fossil fuels 2.0.

    5 hours ago, Destro said:

    but its not a reality for the backbone of an economy that depends on oil and for most people around the world. 

    An economy that depends on finite resources is not sustainable and has a finite timeline.

    5 hours ago, Destro said:

    Brandon said he would do this so if you voted for him you got exactly what you wanted.

    Personally, I'm not sure where this "get rid of oil is coming from".

    I don't see nearly enough oil being "gotten rid of". The prices now are due to the supply shock from Russia. I guess the one good thing from all this is higher gas prices...

  12. 11 minutes ago, Mathwiz said:

    In this case, I'd urge you to rethink that position. Dependence on gasoline (or petrol, as some call it) is becoming increasingly untenable in the modern world, for many good reasons.

    I do, however, share the reluctance to get one of these "Google-enabled" cars, just to get an electric model. Can I get an electric car without the spyware, please?

    You're right that fossil fuels are terrible, but electric cars are not really any better.

    Significantly more natural resources and mining go into their manufacturing - lithium batteries is something that has at least penetrated the mainstream a little bit.

    I'm not deluded into thinking that somehow electric cars are more "eco-friendly" to the planet. Cars are terrible for the planet, no matter their fuel source (and to be explicit, the energy sources are terrible, regardless of the type).

    We need fewer cars on the roads, period, not a shift from fossil fuels to electric. It's not even that electricity might be coming from fossil fuels - renewables are again one of these "bright green solutions" that's nothing more than rearranging some deck chairs. There are two evils to choose from here, and to me, at least having a car that would be sensible to me is more important than pretending I'm helping the environment. I don't have one now as I'm in an urban area, and I walk or take the train, but I'd like to move to a more rural area, so that's just practically speaking.

    Point is, you can't have your cake and eat it too... electric cars are just the next environmentally destructive technology. We need to be moving away from these types of things.

    Same reason that I find these concept "dumb mobile devices" really irritating... the technology is fundamentally unsustainable. Throw your mobile phone in the trash and get a landline phone, you'll never need to buy another one. Problem solved ;)

  13. 12 minutes ago, Mathwiz said:

    I should've used scare quotes, as you did ;)

    I agree with you. Nothing made in 2015 should be unusable a mere seven years later. Heck, this thread is in a section of MSFN dedicated to OSes much older than that; yet we manage to keep them going....

     

    I'm with you there...

     

    12 minutes ago, Mathwiz said:

    Yet phones are an even bigger planned-obsolescence racket than PCs. I could go on and on about the hoops I had to jump through to keep a 7-year-old phone operating. It's AT&T-branded, yet AT&T's SIMs won't enable voice over LTE on it, which is needed now that AT&T shut down their 3G network. So I had to switch my AT&T phone to another carrier to use a feature that AT&T built into it in the first place!

     

    It really depends on the phone, or "phone".

    Vintage telephones are a great example of anti-planned obsolescence. You can call from a 2010s AT&T landline phone to a 1930s Western Electric 302, and everything just works.

    Something I really like about analog telephony is the way everything is interoperable and backwards-compatible. You typically don't see that.

     

    Contrast that with mobile telephony, and IP, to a great extent, where different platforms are their owned walled gardens, things are designed to fail after a few years, etc.

    They're complete polar opposites.

     

    12 minutes ago, Mathwiz said:

    But I'm getting way off-topic here, so I'll shut up....

     

  14. 7 hours ago, Mathwiz said:

    Could be deliberate, in order to force use of the "latest" browser versions, for "security" :realmad:

    I feel fortunate that Chase.com still works in Serpent (52 and 55) as long as I use a user agent spoof, and of course don't try to enable "Web Components." On Android, not so lucky; I have a vintage 2015 Android phone

     

    Please... let's not insult our intelligence.

    2015 is not "vintage".

    "Vintage" is my 1957 Western Electric 500 that I use on a regular basis.

    I don't even consider my main PC, from 2009, to be "vintage". "Vintage" in phones is from before most of the people on this forum were born.

     

    7 hours ago, Mathwiz said:

    which still works (even survived AT&Ts shutdown of their 3G network) except for the Chase app. The last Android 6 version of their app has been blocked for many moons. Never mind; I can still use Chrome - oh wait, Google just stopped updating Chrome on Android 6 too, so those days are numbered too. At least I got all the way up to Chrome 99 first (maybe Android 6 can't handle a 3-digit version number :lol: )

    Assuming the phone continues to hold out, my last resort will be Firefox (probably FF 56 with, you guessed it, a UA spoof).

     

  15. 1 minute ago, nicolaasjan said:

    I wonder how MC will be able to bring the add-on site back.

    It think it was on a server owned by MAT... :realmad:

     

    Fortunately I saved all xpi updates earlier for use in my various VM's. :cool:

    Call me paranoid, but this is why I keep copies of installers for things, just so I can be sure about them ;)

    I only have XPI files for the few extensions in New Moon, Mail News, etc. that I'm actually using, but I guess it's good that "they're there", now...

  16. Just now, Jody Thornton said:

    Yeah but you can fetch them on the Reddit thread.  I'm not sure that it's against forum rules.

    Thanks, just found that as well, it wasn't there when I had checked before.

    I'm surprised it all lasted as long as it did. It always felt like it was a day away from falling apart.

  17. 35 minutes ago, Jody Thornton said:

    In fact there are postings of the conversation between Moon-Matt before Matt pulled the plug on the DNS hosting.  I just downloaded the screenshots.

    Grab some popcorn.  

    Hmm, I think you forgot to attach the screenshots?

  18. 17 minutes ago, NotHereToPlayGames said:

    Piece of cake!  Got 'er loaded.

    I think I tried this before but I neglected to test on known URLs and inadvertently dropped it, oops.

    Found it ironic that I need the chromefill in order to download the chromefill (in Chrome-based v69) via GitHub  :lol:

    lol, yeah, it's a constant tug of war with some sites.

    GitHub at least seems to be fully functional once again, thanks to VistaLover's latest contributions.

    StackOverflow seems like it will require on the fly transpiling though :realmad:

  19. 3 hours ago, UCyborg said:

    I put the code of the problematic file of the problematic web app at work in https://babeljs.io/repl and got the modified code, which I saved on the server side and sure enough after reloading it in the browser, it was suddenly compatible once again! If I remove ", not ie 11, not ie_mob 11" from the TARGETS field, then I get the code that also works in Internet Explorer 11. :D

    You'd need to have something like that locally which would process the code before it was handed to browser's JS interpreter.

    Yes, exactly! I think if we could figure how that would work and what it would entail, we could basically unbreak everything and rewind the JS ten years or so. Then you could use a 10-year old browser, no compatibility worries at all!

    Question is, what and how? Does such a tool even exist?

    Presumably there could be an "API" somewhere to do this, like the one you referenced, and you could make an AJAX call with the JS contents of everything and then replace them somehow with the response, but something self-contained would probably perform a LOT better.

  20. 2 hours ago, NotHereToPlayGames said:

    I'm a bit at a loss.  "How" do I use this?  What is the "your extension" being referenced and "how" do I use that also?

    I'm asking specifically towards 360Chrome v11 - I have very limited interest in any browser "newer" than 360Chrome v11.

    Follow the usage instructions at: https://github.com/InterLinked1/chromefill

    You just need to load the extension in developer mode, and then you don't need to do anything.

  21. 8 hours ago, VistaLover said:

    Here's my copy of file "polyfills.js" inside my local fork of your extension:

    var actualCode = `
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis
    // implemented in Chrome 71
    // https://mathiasbynens.be/notes/globalthis
    (function() {
    	if (typeof globalThis === 'object') return;
    	Object.defineProperty(Object.prototype, '__magic__', {
    		get: function() {
    			return this;
    		},
    		configurable: true
    	});
    	__magic__.globalThis = __magic__;
    	delete Object.prototype.__magic__;
    }());
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries
    // implemented in Chrome 73
    // https://stackoverflow.com/a/68655198
    // https://gitlab.com/moongoal/js-polyfill-object.fromentries/-/blob/master/index.js
    // -> https://vanillajstoolkit.com/polyfills/objectfromentries/
    if (!Object.fromEntries) {
    	Object.fromEntries = function (entries) {
    		if (!entries || !entries[Symbol.iterator]) { 
          throw new Error('Object.fromEntries() requires a single iterable argument');
        }
    		let obj = {};
    		for (let [key, value] of entries) {
    			obj[key] = value;
    		}
    		return obj;
    	};
    }
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any
    // implemented in Chrome 85 
    // https://github.com/ungap/promise-any
    // copied from github-wc-polyfill
    if (!('any' in Promise && typeof Promise.any == 'function')) Promise.any = function($) {
      return new Promise(function(D, E, A, L) {
        A = [];
        L = $.map(function($, i) {
          return Promise.resolve($).then(D, function(O) {
            return ((A[i] = O), --L) || E({
              errors: A
            });
          });
        }).length;
      });
    };
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled
    // implemented in Chrome 76
    // https://95yashsharma.medium.com/polyfill-for-promise-allsettled-965f9f2a003
    if (!('allSettled' in Promise && typeof Promise.allSettled == 'function')) Promise.allSettled = function (promises) {
      let mappedPromises = promises.map((p) => {
        return p
          .then((value) => {
            return {
              status: 'fulfilled',
              value,
            };
          })
          .catch((reason) => {
            return {
              status: 'rejected',
              reason,
            };
          });
      });
      return Promise.all(mappedPromises);
    };
    // https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask
    // implemented in Chrome 71
    // https://stackoverflow.com/a/61569775
    (function() {
    'use strict';
    // lazy get globalThis, there might be better ways
    const globalObj = typeof globalThis === "object" ? globalThis :
      typeof global === "object" ? global :
      typeof window === "object" ? window :
      typeof self === 'object' ? self :
      Function('return this')();
    
    if (typeof queueMicrotask !== "function") {
    
      const checkIsCallable = (callback) => {
        if (typeof callback !== "function") {
          throw new TypeError("Failed to execute 'queueMicrotask': the callback provided as parameter 1 is not a function");
        }  
      };
    
      if (typeof Promise === "function" && typeof Promise.resolve === "function") {
        globalObj.queueMicrotask = (callback) => {
          checkIsCallable(callback);
          Promise.resolve()
            .then(() => callback()) // call with no arguments
            // if any error occurs during callback execution,
            // throw it back to globalObj (using setTimeout to get out of Promise chain)
            .catch((err) => setTimeout(() => {throw err;}));
       };
      }
      else if (typeof MutationObserver === "function") {
        globalObj.queueMicrotask = (callback) => {
          checkIsCallable(callback);
          const observer = new MutationObserver(function() {
            callback();
            observer.disconnect();
          });
          const target = document.createElement('div');
          observer.observe(target, {attributes: true});
          target.setAttribute('data-foo', '');
        };
      }
      else if (typeof process === "object" && typeof process.nextTick === "function") {
        globalObj.queueMicrotask = (callback) => {
          checkIsCallable(callback);
          process.nextTick(callback);
        };
      }
      else {
        globalObj.queueMicrotask = (callback) => {
          checkIsCallable(callback);
          setTimeout(callback, 0);
        }
      }
    }
    })();
    
    queueMicrotask(() => console.log('microtask'));
    console.log('sync');
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll
    // implemented in Chrome 85
    // https://vanillajstoolkit.com/polyfills/stringreplaceall/
    if (!String.prototype.replaceAll) {
      String.prototype.replaceAll = function(str, newStr) {
        // If a regex pattern
        if (Object.prototype.toString.call(str).toLowerCase() === '[object regexp]') {
          return this.replace(str, newStr);
        }
        // If a string
        return this.replace(new RegExp(str, 'g'), newStr);
      };
    };
    // https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/replaceChildren
    // implemented in Chrome 86
    // https://github.com/XboxYan/dom-polyfill
    // copied from github-wc-polyfill
    (function() {
      if (Element.prototype.replaceChildren === undefined) {
        Element.prototype.replaceChildren = function(...nodesOrDOMStrings) {
          while (this.lastChild) {
            this.removeChild(this.lastChild)
          }
          if (nodesOrDOMStrings.length) {
            this.append(...nodesOrDOMStrings)
          }
        }
      }
    }());
    `;
    
    var script = document.createElement('script');
    script.textContent = actualCode;
    (document.head||document.documentElement).appendChild(script);
    script.remove();

    As you can see, it's a patchwork of code "borrowed" from you, various polyfill authors and portions from github-wc-polyfill extension, by JustOff; I couldn't be arsed to make a proper fork and publish on GH... FWIW, I use a different (smaller) version of that file for my 360EEv12 (Chromium-78-based) copy (only the polyfills for JS code implemented in Chromium > 78.0). But I fear I'm derailing this thread... :P

    Thanks, I'm trying it out locally, and yeah, I think the ?? and ?. stuff is really getting me, StackOverflow is still broken, but otherwise seems to be working at least as well as before.

    About those last two things that "can't" be polyfilled....

    they CAN be transpiled!

    Take a look: https://javascript.info/polyfills

    Transpilers
    A transpiler is a special piece of software that translates source code to another source code. It can parse (“read and understand”) modern code and rewrite it using older syntax constructs, so that it’ll also work in outdated engines.

    E.g. JavaScript before year 2020 didn’t have the “nullish coalescing operator” ??. So, if a visitor uses an outdated browser, it may fail to understand the code like height = height ?? 100.

    A transpiler would analyze our code and rewrite height ?? 100 into (height !== undefined && height !== null) ? height : 100.

     

    So I think what we really need to do is have this extension auto-transpile this bleeding edge JS into "vanilla JS" that "any" normal browser can run.

    This, in theory, should solve not just the issue but probably a large number.

     

    My understanding is that transpiling something is something the *web developers* are supposed to do before packing their JS into the actual website source, so unlike a polyfill which runs in the browser itself.

    That said, I'm sure it's possible, but not sure how slow it would be if feasible. Thoughts, anyone?

  22. 8 hours ago, VistaLover said:

    Here's my copy of file "polyfills.js" inside my local fork of your extension:

    var actualCode = `
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis
    // implemented in Chrome 71
    // https://mathiasbynens.be/notes/globalthis
    (function() {
    	if (typeof globalThis === 'object') return;
    	Object.defineProperty(Object.prototype, '__magic__', {
    		get: function() {
    			return this;
    		},
    		configurable: true
    	});
    	__magic__.globalThis = __magic__;
    	delete Object.prototype.__magic__;
    }());
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries
    // implemented in Chrome 73
    // https://stackoverflow.com/a/68655198
    // https://gitlab.com/moongoal/js-polyfill-object.fromentries/-/blob/master/index.js
    // -> https://vanillajstoolkit.com/polyfills/objectfromentries/
    if (!Object.fromEntries) {
    	Object.fromEntries = function (entries) {
    		if (!entries || !entries[Symbol.iterator]) { 
          throw new Error('Object.fromEntries() requires a single iterable argument');
        }
    		let obj = {};
    		for (let [key, value] of entries) {
    			obj[key] = value;
    		}
    		return obj;
    	};
    }
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any
    // implemented in Chrome 85 
    // https://github.com/ungap/promise-any
    // copied from github-wc-polyfill
    if (!('any' in Promise && typeof Promise.any == 'function')) Promise.any = function($) {
      return new Promise(function(D, E, A, L) {
        A = [];
        L = $.map(function($, i) {
          return Promise.resolve($).then(D, function(O) {
            return ((A[i] = O), --L) || E({
              errors: A
            });
          });
        }).length;
      });
    };
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled
    // implemented in Chrome 76
    // https://95yashsharma.medium.com/polyfill-for-promise-allsettled-965f9f2a003
    if (!('allSettled' in Promise && typeof Promise.allSettled == 'function')) Promise.allSettled = function (promises) {
      let mappedPromises = promises.map((p) => {
        return p
          .then((value) => {
            return {
              status: 'fulfilled',
              value,
            };
          })
          .catch((reason) => {
            return {
              status: 'rejected',
              reason,
            };
          });
      });
      return Promise.all(mappedPromises);
    };
    // https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask
    // implemented in Chrome 71
    // https://stackoverflow.com/a/61569775
    (function() {
    'use strict';
    // lazy get globalThis, there might be better ways
    const globalObj = typeof globalThis === "object" ? globalThis :
      typeof global === "object" ? global :
      typeof window === "object" ? window :
      typeof self === 'object' ? self :
      Function('return this')();
    
    if (typeof queueMicrotask !== "function") {
    
      const checkIsCallable = (callback) => {
        if (typeof callback !== "function") {
          throw new TypeError("Failed to execute 'queueMicrotask': the callback provided as parameter 1 is not a function");
        }  
      };
    
      if (typeof Promise === "function" && typeof Promise.resolve === "function") {
        globalObj.queueMicrotask = (callback) => {
          checkIsCallable(callback);
          Promise.resolve()
            .then(() => callback()) // call with no arguments
            // if any error occurs during callback execution,
            // throw it back to globalObj (using setTimeout to get out of Promise chain)
            .catch((err) => setTimeout(() => {throw err;}));
       };
      }
      else if (typeof MutationObserver === "function") {
        globalObj.queueMicrotask = (callback) => {
          checkIsCallable(callback);
          const observer = new MutationObserver(function() {
            callback();
            observer.disconnect();
          });
          const target = document.createElement('div');
          observer.observe(target, {attributes: true});
          target.setAttribute('data-foo', '');
        };
      }
      else if (typeof process === "object" && typeof process.nextTick === "function") {
        globalObj.queueMicrotask = (callback) => {
          checkIsCallable(callback);
          process.nextTick(callback);
        };
      }
      else {
        globalObj.queueMicrotask = (callback) => {
          checkIsCallable(callback);
          setTimeout(callback, 0);
        }
      }
    }
    })();
    
    queueMicrotask(() => console.log('microtask'));
    console.log('sync');
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll
    // implemented in Chrome 85
    // https://vanillajstoolkit.com/polyfills/stringreplaceall/
    if (!String.prototype.replaceAll) {
      String.prototype.replaceAll = function(str, newStr) {
        // If a regex pattern
        if (Object.prototype.toString.call(str).toLowerCase() === '[object regexp]') {
          return this.replace(str, newStr);
        }
        // If a string
        return this.replace(new RegExp(str, 'g'), newStr);
      };
    };
    // https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/replaceChildren
    // implemented in Chrome 86
    // https://github.com/XboxYan/dom-polyfill
    // copied from github-wc-polyfill
    (function() {
      if (Element.prototype.replaceChildren === undefined) {
        Element.prototype.replaceChildren = function(...nodesOrDOMStrings) {
          while (this.lastChild) {
            this.removeChild(this.lastChild)
          }
          if (nodesOrDOMStrings.length) {
            this.append(...nodesOrDOMStrings)
          }
        }
      }
    }());
    `;
    
    var script = document.createElement('script');
    script.textContent = actualCode;
    (document.head||document.documentElement).appendChild(script);
    script.remove();

    As you can see, it's a patchwork of code "borrowed" from you, various polyfill authors and portions from github-wc-polyfill extension, by JustOff; I couldn't be arsed to make a proper fork and publish on GH... FWIW, I use a different (smaller) version of that file for my 360EEv12 (Chromium-78-based) copy (only the polyfills for JS code implemented in Chromium > 78.0). But I fear I'm derailing this thread... :P

    All right, I didn't just want to include your additions without your permission/acknowledgement. I take it it's okay to go ahead and add these?

    I can say "incorporated contributions from VistaLover" in the commit message.

  23. 1 minute ago, VistaLover said:

    In my 360EEv11 (Chromium-69-based) copy, to get GitHub (that I use a lot...) fully functional, I had to polyfill:

    globalThis (implemented in Chrome 71)
    Object.fromEntries (implemented in Chrome 73)
    Promise.any (implemented in Chrome 85)
    Promise.allSettled (implemented in Chrome 76)
    queueMicrotask (implemented in Chrome 71)
    String.replaceAll (implemented in Chrome 85)
    replaceChildren (implemented in Chrome 86)

    I'm using a local fork of your original extension, BTW, so many thanks! :thumbup

     

    Ah, nice! Any chance you're able to contribute your additions back? I could probably benefit from that a lot myself!

     

    1 minute ago, VistaLover said:


    However, even those 7 polyfills won't be enough, it seems :realmad: , because, over the last couple of months, those M$ employees :angry: have been trialing ECMAScript2020/2022 syntax with unsupported (by both UXP+Chromium<85) operators (Nullish coalescing, "??", and optional chaining, "?.") which can't be polyfilled; thus, GitHub becomes severely broken, to the point of unusable); at the time of this writing, they have reverted that breaking code, but it's dead certain it'll come back (since it's supported by M$'s sweet child, ChrEdge) ... :angry:

     

    Yup, I've been noticing a lot of that "unexpected syntax ?" type of stuff myself... real shame...

     

    1 minute ago, VistaLover said:

    NM28 is UXP-based, to get GH functional, use any of

    https://github.com/JustOff/github-wc-polyfill

    https://github.com/SeaHOH/github-wc-polyfill

    https://github.com/martok/palefill

    Those only support officially Pale Moon (but NOT v30.0), so to install in NM28 you have to modify maxVersion inside install.rdf; GH+GL break the extension constantly, so make sure you're always on the latest stable/beta build... ;)

    Interesting, it seemed like NM was more broken than Chromium 70, but sounds like with polyfills it can be better than it!

  24. 5 minutes ago, Dave-H said:

    As long as their sites work in the latest versions of Edge and Google Chrome (and Safari for Macs), that's all the authors of a lot of sites care about now.
    :realmad:

    Not even that - but only the *latest* versions of those browsers! (Technically, I'm using "Chrome", but a 3 year old version).

    Maybe this will be a wakeup call to the WWW: stop using useless JS libraries you don't need and write all your damn code yourself. If you can't understand it, and you don't know what it does, and you don't know why you need, then don't use it!!!

    This has never failed to serve me well as a webmaster. And of course, none of my websites randomly break.

    jquery is pretty much the only JS library I ever use, and even then, only on pages that actually "need" JS. Everything else on top of that, I write if I need it. And if I don't need JS, I don't use it.

    It's not "simplistic", it's called "resilient progressive web development".

×
×
  • Create New...