As this works only for people who use browser to watch YouTube, it might be useless for me watching videos as videos should be watched (mpv/smplayer/iina (for mac) and youtube-dl just for URL extraction in my case).

    But it’s also useless for anyone using mobile clients as well. You can say “why do you want to use mobile client app if you already don’t like ads?” and it’s fine. The thing is that official YT client on Android for example, is very “patchable” and there are some forks of it who already lock down the ads. Also there’s a NewPipe which does more or less the same thing I do on my desktop/laptop (mentioned above).

    Going to the conclusion I would like to see that to be offered not in a form of “extensions” (i mean, single bullet you install & forget) but more like public API where you can register (or even better just use it anonymously with these hashed IPs mentioned on the website) and then read/add/vote on “sponsor” data. Adding a support for mpv (which has Lua scripting built in) or NewPipe or even patched YT (both made in Kotlin IIRC) would be just a few lines of HTTP requests.

    1. 1

      Even if I understand the needs and completely get the idea, I’m quite took off by reinventing the wheel put so obviously here.

      The thing does that the same is almost 30 years old. And it’s called DOSKEY, found in default installation of MS-DOS/PC-DOS/FreeDOS and probably WinDOS as well.

      1. 1

        To be fair, I didn’t know about the existence of doskey until you brought it up, and this project was only about 4-5 hours of my life so far. So the reinventing wasn’t obvious for me.

        It’s also worth mentioning that I did something similar for bash, even though it has better advertised aliases, mostly because I got tired of editing my bashrc. This allows me to add bookmarks without opening an editor to do so, which was a big motivation for me both times I’ve touched this type of project.

        Thanks for letting me know about doskey though, it opens up some avenues for customising my cmd.exe shell I had not considered before.

        1. 1

          You might also consider Yori which is a shell replacement (the actual command interpreter, not the “CMD” which is a very unclear term on Windows) not being a port of one of UNIX shells and actually using Windows features, written by some Windows fan (yes, apparently there are some)

      1. 16

        Windows 2000.

        And no, I’m not really joking… maybe a little.

        1. 2

          It’s still the best for me. Great system when you were used to Win95, Win98, WinME before. Ran all the XP software and games but without the online activation hussle of XP when you changed or reinstalled the PC.

          1. 2

            Heh. I was going to say the same thing. I ran Windows 2000 from beta until EOL. It was NT 4 with DirectX.

            But, glad I don’t need to run Windows at all anymore.

          1. 1

            Even when I don’t consider many of these programs “obscure” and use some of them daily, XLennart is the program I truly love from now.

            And yes, I see that AmigaOS button bar screenshot (with MagicWB icons) in XZoom! :D

            1. 4

              I’ll say that once again: this version should be definitely called Blender 3.

              1. 1

                I just hope they paid you after all :)

                (Yes, this might sound weak, but it’s also a very important aspect of security research and disclosure etiquette)

                1. 3

                  They didn’t. I didn’t ask and they didn’t offer. The only thing that was exchanged here was emails back and forth. :)

                1. 1

                  Every editor with cross-platform GUI and TUI at once, scriptable in popular scripting language instead of its own (which is a shame for both vim and emacs) should deserve more love.

                  Too bad it’s not packaged in most repositories.

                  1. 14

                    Amazon Music app, like Zoom, can automatically be launched from web pages without any user interaction. The way this works is through a local web server, accepting HTTP requests from web pages to, for example, instantly launch the Amazon Music app to play a particular song. This bypasses the built-in safety net in browsers that seek confirmation from users before launching an application.

                    What the hell is wrong with this world?

                    1. 22

                      The road to hell is no longer paved with good intentions, it’s paved with convenience

                      1. 3

                        Having a general-purpose computing device cuts both ways…

                      1. 1

                        Unfortunately, restrictive license (probably) does not allow to make modifications to port it to modern systems. Although, probably it’s possible to do a legal port by creating secondary set of source files (written from scratch) that links with original code and offers interop with modern systems, offering user to download original source and to build it with new parts, as long as user is doing it “for personal use”.

                        1. 2

                          You don’t need to do that.

                          All your DPaint-on-modern-platform wishes are already covered by GrafX2: https://gitlab.com/GrafX2/grafX2

                        1. 11

                          Personally I think it’ll be more attractive when they call this version a Blender 3.0.

                          With all of these improvements in renderer or especially an UI, it’s completely a “new product” and might shot people who were against it with strong “thonk”.

                          But people might just miss that whole transformation or call it “meh, yet another blender version, nothing special” in era of version incrementation marketing started by Chrome.

                          So on today’s terms the headline:

                          Blender 2.80 released

                          might not “attract” as much people as:

                          HERE IT IS! THE BLENDER 3.0 WITH LASTER AND SH… OCKINGLY GREAT UI!!!11111oneoneonejeden

                          Don’t get me wrong. This is not what I promote or even appreciate, but it might get them some sort of “new light” in media. It wouldn’t be bad to do the same for The GIMP too, which also get rid of its major issues in last years, but almost no one knows or wants to know about it.

                          1. 5

                            It may be a grim outlook, but my feeling is that there are only two kinds of people: who will read the actual changelog regardless of the version, and those who will never look beyond their proprietary tools.

                            I know nothing about graphics, but when I tried to use Blender Foundation movies and other projects to convince graphics people to look at the projects behind them, the usual response is “yeah, that’s cool, but I’m sure it’s still can’t compete with $proprietaryTool”.

                            1. 4

                              I agree. I think this version deserves the 3.0. Having so many 2.xx releases gets confusing, Blender has been 2.something ever since I tried it for the first time, and that was a really long time ago.

                              Look at Linux for example, they just changed to 3.0 because 2.6.32something was getting messy, and they didn’t even have a reason to.

                              1. 6

                                Wow, this Github thread was painful to read. Thanks for the reference!

                                1. 3

                                  We had the same issue with the palemoon author for publishing PKGBUILDs on the Arch User Repository (since it patched the build process in the PKGBUILD). I personally can’t take such a project serious and wouldn’t recommend anyone to use it.

                                  1. 1

                                    As “upstream” I’d be happy if people came around and showed so much interest in my project that they’d start to package it on their own, even more when they’re more proficient on that platform..

                                    1. 2

                                      On the other hand you’ll get bug reports that you can’t reproduce because people will complain with upstream, not with the packager. And then you’ll need to go hunting for whoever messed up the binary with local patches.

                                      So I can understand projects (which includes Mozilla) expecting such distributors to use a branding that is clearly different from theirs, but the attitude they demonstrated on that issue was completely out of line.

                                  2. 2

                                    ok I was about to reply that we shouldn’t further stamp on somebodies project (see V), but this is painful..

                                    I will not be as educational next time.

                                    1. 2

                                      I “”“love””” what they’ve done to about:mozilla (link to git). Not condescending at all!

                                    1. 2

                                      Keeping in mind that WebExtensions API is now currently supported by both Chromium and Firefox, what’s stopping you from packaging it for Firefox too?

                                      I suppose AMO (addons.mozilla.org) wouldn’t have such restrictive policy to prevent your addon from being shown.

                                      Personally, I would love to see that combined with Sublime/VSCode/Vivaldi-esque navigation over tabs (I have dozens or hundreds open in trees) as quick switcher.

                                      1. 1

                                        Personally, I would love to see that combined with Sublime/VSCode/Vivaldi-esque navigation over tabs (I have dozens or hundreds open in trees) as quick switcher.

                                        Can you please explain it more in details? I think this extension is quite similar to what you described: https://chrome.google.com/webstore/detail/quick-tabs/jnjfeinjfmenlddahdjdmgpbokiacbbb?hl=en

                                        Firefox version is in plans.

                                        Thank you for your feedback.

                                      1. 0

                                        Why do you even need to incorporate external binaries to display your prompt in shell, calling it “simple”?

                                        If you want to do a prompt for Bash, do it in Bash, or even a regular POSIX shell.

                                        If you want to do a prompt in Rust, make a shell in Rust. Many people would seriously appreciate that and I’ll probably throw donations in such project like crazy, especially if it brings these famous Rust performance factors into the world of regular shells.

                                        1. 4

                                          it looks like simple here is giving the wrong idea. by simple, i mean simple design. its a simple design compared to ‘powerline’ and ‘git status’ prompts that you find online.

                                          compiling a 300 line program for your PS1 is certainly not simple, but i have to disagree with you on ‘If you want to do a prompt in Rust, make a shell in Rust’. a shell and its prompt have little to no relation, and its that lack of relation that makes bash beautiful!

                                          1. 1

                                            See ion[0] the shell for Redox. it’s a shell in rust, for an OS written in rust.

                                            0: https://gitlab.redox-os.org/redox-os/ion

                                          1. 0

                                            In the era of clusterfsck of dozens of different platforms, creating a language which can’t easily produce a dependency-free binary which can run on customers machine without any sort of additional effort in runtime bring up (even an “installation”) can’t be called “acceptable”.

                                            The same goes for Python, except its interpreter is by default available on all of three major desktop platforms since last month (thanks Microsoft) at least until next major macOS release (thanks Apple!).

                                            1. 19

                                              While it’s true that Racket can’t produce a single statically-linked binary for your program (assuming that’s what you mean by a dependency-free binary), it can certainly produce a self-contained distribution of your program by packing your program and the Racket runtime into a single executable along with all of its dependencies. This is how I distribute all of my web application and it works out nicely.



                                              1. 2

                                                Do you have any end-to-end examples that you can share of using these tools to build a self-contained web app?

                                                Thanks! either way (the links are a good start!)!

                                                1. 12

                                                  It really doesn’t take much beyond having an app with a main submodule as its entrypoint and then running

                                                  raco exe -o app main.rkt

                                                  followed by

                                                  raco distribute dist app

                                                  Any libraries referenced by any of the modules in the app as well as any files referenced with define-runtime-path will automatically be copied into the distribution and their paths updated for the runtime code (no need for any special configuration files (and, especially, no need for a MANIFEST.in, which, if you’ve ever tried to do this with Python you might know is a horrible experience)).

                                                  For Linux distributions (since I am on macOS), I run the same process inside Docker (in CI) to produce a distribution. Here are my test-app.sh and build-app.sh scripts for one of my applications:

                                                  The raco koyo dist line you see in the second file is just a combination of the two commands (exe and distribute). In fact, if you want to give this a go yourself, then you can use my yet-to-be-fully-documented koyo library to create a basic webapp from a template and then create a distribution for it:

                                                  $ raco pkg install koyo
                                                  $ raco koyo new example  # think "rails new" or "django startproject"
                                                  $ cd example
                                                  $ less README.md  # optional
                                                  $ raco koyo dist
                                                  $ ./dist/bin/example  # to run the app

                                                  Hope that helps!

                                                  P.S.: Here is the implementation for koyo dist and here is the blueprint (template) that is used when you run raco koyo new.

                                                  1. 2

                                                    Thanks, this was just the kind of example I was hoping for.

                                              2. 4

                                                can’t be called “acceptable”.

                                                To you, of course. Even the go nerds moved on to docker for deployments, you should consider it - I use docker for python codebases to manage things without needing to remember the exact invocation of venv, pip, etc.

                                                However, for me raco exe has been more than enough. Have you tried it?


                                                1. 7

                                                  [edit, spell roost correctly]

                                                  I’m not sure which go nerds you’re referring to. Perhaps I’m the exception that proves the rule, or perhaps the go community’s more diverse than you’ve seen. I love the fact that terraform, hugo, direnv, and a big handful of my other tools (large and small) are simple single file executables (ok, terraform is bigger than that, but…). It’s one of the things that attracts me to the language.

                                                  I’m burnt out on solving a problem at build time and then having to solve it again each time I install an application (PERL5LIB, PYTHONPATH, LD_LIBRARY_PATH, sigh…). Thank goodness for Spack for my work deployments.

                                                  I’ve found Docker to be useful in the small (”I use Docker on my laptop to X, Y, and Z.”) and in the big (”We have an IT team that wrangles our Docker hosting servers.”). For the stuff in the middle (”Dammit Jim, I’m a bioinformatician, not a syadmin!”) it turns into a problem on its own.

                                                  If you know how to use venv, pip, and etc to build the Docker image, you could use them to do the deployment (though not for free…). I’ve seen many situations where people didn’t understand the Python tool chain but could hide the mess from review, at least until it came home to roose roost.

                                                  1. 5

                                                    I agree with you. I build lots of tiny, glue-style Go tools (mostly for my coworkers on my ops team), and somebody always ends up contributing a Dockerfile.

                                                    I still prefer

                                                    ./ldap_util --validate user1


                                                    docker run --rm -it ldap_util:latest -e "USER_TO_VALIDATE=user1"
                                                    1. 1

                                                      I just think of docker images as universal server executables, which makes it easier to accept docker as a whole.

                                                    2. 2

                                                      I don’t think it’s bad that they have executables, but installing racket is very simple, and most of your complaints are actually places where python & perl are much worse than racket.

                                                      This all sounds like you haven’t tried racket, and tried to rag on a general complaint where in racket it’s not nearly the same problem, and you haven’t worked with it or researched it.

                                                      1. 1

                                                        I think that you’re replying to my grumpy comments above….

                                                        Most of that grumpiness was meant to be targeted at Docker and the anti-pattern of using it to hide a mess rather than clean the mess up; I’ve spent a lot of time (though it has earned me a fair bit of income) cleaning up problems downstream of Docker solutions. I made a similar comment somewhere else here on Lobste.rs that sums up my feelings; I’ve seen Docker used effectively in the small (e.g. on individual machines) and in the large (sites with savvy teams and resources to invest in keeping everything Docker-related happy) but the middle seems to run into problems.

                                                        Other than the grumpiness above, I really don’t mean to rag on Racket, I’ve seen some neat things built with it (e..g Pollen).

                                                        You’re right that I haven’t spent much time with racket; and big part of that is burnout with installing things that require finding and installing dependencies at “install-time”.

                                                        I’m excited by @bodgans nicely packaged demo of distribute earlier in the thread.

                                                        Are there any examples of tools written in racket (or it’s various sub-languages) that have been packaged up for installation by tools like Homebrew or Spack or …?

                                                1. 6

                                                  You can tell Firefox to use a profile (-profile) and delete that profile when you’re done. Or you can use Firefox’s excellent profile management tools. Or any of the many extensions.

                                                  A custom $HOME that you delete after should work but is pretty hacky.

                                                  1. 4

                                                    Yeah, that whole $HOME remaping is actually getting me off, while Firefox only maintains its profile at ~/.mozilla/firefox/*.profile, no other XDG directories are lost.

                                                  1. 10

                                                    It could be just one-liner:

                                                    firefox --profile $(mktemp -d --suffix=.fx) --new-instance ; rm -r /tmp/*.fx

                                                    1. 14

                                                      I still can’t get over the fact that someone got an idea to refresh HTML document tree 60 times per second and make HTML document viewer render it over and over and call it as “application”.

                                                      It’s so wrong on just too many levels that I don’t even know where to start, and people basically just don’t even notice that.

                                                      1. 11

                                                        But it doesn’t actually work the way? In AJAX apps, DOM is only updated on events (e.g. click, user network data received). You would have to have a timer to actually update it regularly in the background.

                                                        Probably the place it gets close to that is when they hijack the scroll event, which is horrible. But even that’s not changing the DOM if you’re not scrolling.

                                                        FWIW I agree with the premise of the OP, but I don’t think your criticism is accurate.

                                                        1. 7

                                                          It’s not the first time that someone got an idea to build GUIs by just extending existing document-rendering technology…

                                                          1. 9

                                                            DPS is a little bit different, because postscript is a programming language (specifically, a forth dialect with logo/turtle-style pen control). It’s relatively sensible to do widget-drawing with a language optimized for drawing arbitrary line graphics. A web app is more like trying to use dot macros to modify an MS word document at 30fps.

                                                            1. 9

                                                              A web app is more like trying to use dot macros to modify an MS word document at 30fps.

                                                              That reminds me, years ago my dad, who was a chemical engineer in a large company, showed me a simulation he’d gotten as an email attachment from a colleague. It had a pretty decent graphical animation entirely within an Excel spreadsheet. Part of the sheet was a “normal” spreadsheet with the actual formulas, but another part had cells resized to be small and rectangular, and their colors were changed a few times a second by macros, producing a medium-resolution raster-graphics display basically. This was apparently relatively common, because it made the graphical output self-contained within the same spreadsheet that you could mail around.

                                                          2. 7

                                                            I am not actually that offended by this idea, because most GUI applications are enhanced document viewers. But I do think that when your application requires to be run at 60 fps, you should use something else.

                                                            For example: The interoperability problem has already been solved with Java and if you really need something with more performance than that, you’d basically have to resort to lower level code like C/C++.

                                                            But if “a glorified document viewer and/or editor” all your application is, then an web-application will more than suffice.

                                                            1. 3
                                                              1. 5

                                                                Web apps are a cool hack, and I absolutely love the perverse joy one gets from making something impressive using the absolute wrong tools for the job. But, the point of a cool hack is that the idea that somebody would use it seriously or for important tasks is absurd.

                                                              2. 3

                                                                A developer equivalent of https://xkcd.com/763/

                                                                1. 2
                                                                1. 2

                                                                  I don’t quite trust Mozilla in terms of handing off the “blocking” work from me and embedding it into browser with no introspection into how it actually works and almost no configurability except maybe 3 options.

                                                                  I always disable these bells and whistles and instead put µBlock + µMatrix as 3rd party addons which had been made by author who’s strictly focused on this particular topic.

                                                                  1. 2

                                                                    Possibly the strongest WWDC show since ages. Even as a cautious and somewhat skeptical Apple user, I’m so much excited about all of what they delivered this time.

                                                                    And you know, mouse support on iPad!

                                                                    1. 3

                                                                      Instead of having a bulky A4000 for tasks you outlined in the commect, couldn’t you just get a little cute A600 with Vampire 600 V2 accelerator (68080 CPU on gate-array, which is a 68060 with fixed bugs and added pipelines, also RTG graphics card beating any MNT product (or any ZorroIII card, but I’m not trying to advocate it over Mediator PCI + Radeon / Vodoo))?

                                                                      Soundcard can be added on „clock port” and these are cheaper (and newer, as clockport got developers’ attention pretty recently).

                                                                      Of course A4000 is great looking „desktop” machine and I really appreciate it, but currently the only case I would find for it, except some VERY SERIOUS stuff like plugging PowerPC, Mediators, TV cards and so on is to have VideoToaster in it, or other „DraCo-style” setup with few TV/encoding/processing cards, Scala and other video editing software.

                                                                      Not to mention you can just simply plug cheap RTL8319/3C589/Prism2 network card into PCMCIA port in A600, add Roadshow to S:Startup-Sequence and release yourself from the need of any other x86 machine, also releasing your CPU a lot from TCP/IP processing from raw serial port

                                                                      1. 2

                                                                        I have a bunch of other Amigas, I think I have an A600 in the loft, and my A1200, possibly with 2 A500s is somewhere in my conservatory. Of course, I can do things even faster still with a Raspberry Pi, or with WinUAE on my i7 beast.

                                                                        This isn’t about performance though, it’s about youth and love. The A4000 was my dream machine as a kid. It’s not something really for me to own, it’s something for me to take care of, to look after until it’s next owner, probably a museum.

                                                                        I do miss having a clock port on the A4000 - I was hoping to build an i2c interface that I could use with some temperature sensors to do some kind of power management. That’s a project for down the line though.