1. 8

    If you need a freely licensed font, google Noto has you covered. Fedora has it as google-noto-sans-egyptian-hieroglyphs-fonts.noarch, for example

    (this must be a fairly new addition to Noto, since I couldn’t find it last time I ‘researched’ this exact same topic)

    1. 4

      The sans hieroglyphs in the name makes it sound like the censored version of the font.

      1. 5

        sans stands for sans-serif.

        1. 2

          If you don’t know what it actually means

      1. 21

        How ’bout no:

        • obscures meaning (/u/L-P)
        • can’t type them on a normal keyboard
        • can’t display them reliably in terminal emulators
        • not greppable (/u/barakmich)

        It’s an interesting to me that in some bubbles (JavaScript comes to mind) this is perfectly acceptable, while in others (like mine) this wouldn’t fly.

        1. 3
          • can’t type them on a normal keyboard
          • can’t display them reliably in terminal emulators

          I have use custom vim keybindings for entering emojis in mutt within tmux in Gnome Terminal, and it works fine. (But GNU screen glitches with UTF-8)

          • not greppable

          They are with GNU grep:

          $ echo 🍷 | grep "[🍷🐧🍎🏁]"
          🍷
          
        1. 17

          Personal Opinion: No. RFC725 says, HTTP-451 should be used “when a server operator has received a legal demand to deny access to a resource” and “This type of legal demand typically most directly affects the operations of ISPs and search engines.” Sure, there is no explicit mention of the word censorship, but that is what is implied by the RFC and explicitly stated the author of the original proposal.

          The GDPR doesn’t require a website owner to block EU users, just to respect their rights as data subjects. Since they refuse service, a 403 code seems most appropriate (”[403] indicates that the server understood the request but refuses to authorize it.”).

          1. 2

            I agree. If a website operates in a way that violates the GDPR, serving the content to a EU citizen is accompanied by a violation of the GDPR. It is illegal for the website to serve them the content, not because of the content itself, but because of the technical process used to serve the content. With the enactment of the GDPR, the server operator has effectively received a demand to deny access to all resources of the website to EU citizens, as long as the technical process has not changed. But it’s about the process, not about the content. And 451 is about the content.

          1. 2

            There are some real gems in these stories. Travaglia still writes them for The Register about twice a month.

            (I just had a look in my own archive: 645 stories from 1989-2018)

            1. 4

              “Hooray! We have forked an already small community into yet another smaller community because…”

              Well, the “because” doesn’t really matter, even though they make extremely valid points! In an already incredibly fragmented community (how many derivatives of OpenSolaris does this make?) this makes the problem bigger…

              I don’t follow illumos very closely, but are there reasons that community won’t assist in pushing towards solving the concerns that sparked unleashed? Surely illumos is also an operating system that “developers want to use,” no?

              1. 10

                As always, we’re happy to work with people who want to push changes to illumos-gate!

                1. 5

                  xkcd 1095 seems relevant. :^)

                  1. 1

                    Yeah, maybe. :)

                  2. 4

                    If the illumos community were healthy I would agree with you and I wouldn’t have bothered to create this fork. Sadly, I think the illumos community has problems and the people that truly have a lot of say where the project goes either don’t see them or like the status quo.

                    Two years ago when I started Unleashed, I had a dilemma: should I fork illumos or ditch it for one of the BSDs. When I realized that there were other people that were just as unhappy with the (lack of) direction illumos had, making a fork sounded like a good option. That’s how we got here.

                    Now where do we go from here is an open question. It is completely possible that Unleashed will fizzle, at which point I can say that no real harm was done. The illumos community will remain as small as it was two days ago, with major contributors like Delphix bailing on illumos in favor of Linux. If Unleashed takes off and in the process kills off illumos, the overall ecosystem will be better off. There might be a person or two grumpy that they can’t run their emacs binary from 1994, but in my opinion that is a small price to pay.

                    Surely illumos is also an operating system that “developers want to use,” no?

                    That is the reason I considered and ultimately went with a fork instead of bailing on it. The technology in Solaris/OpenSolaris/illumos/Unleashed is great, and I didn’t want to give it up. I wanted to give up the hugely inefficient and ultimately counter-productive contribution process.

                    Happy hacking!

                    1. 4

                      Thanks for taking the time to respond. I know my post probably came off as aggressive, and if I’m honest, it was half intended to be. I think forks are very disruptive, and wish, of course, to minimize these sorts of things when at all possible.

                      When I realized that there were other people that were just as unhappy with the (lack of) direction illumos had, making a fork sounded like a good option.

                      This makes total and reasonable sense. I didn’t mean to imply that you hadn’t thought this through! And appreciate that you used it as a sort of last resort.

                      That is the reason I considered and ultimately went with a fork instead of bailing on it. The technology in Solaris/OpenSolaris/illumos/Unleashed is great, and I didn’t want to give it up. I wanted to give up the hugely inefficient and ultimately counter-productive contribution process.

                      Thanks for doing what you’re doing, and I wish Unleashed success (and maybe either domination or an eventual merge of the communities again)!

                      1. 3

                        Thanks for taking the time to respond.

                        No problem. I really had no choice - someone on the internet was “wrong” ;)

                        I know my post probably came off as aggressive, and if I’m honest, it was half intended to be.

                        The phrasing certainly made me go “urgh, not one of those…” but it sounds like we both agree that forks are disruptive, but you think that it’s a negative thing while I think it is a positive thing. A reasonable difference of opinion.

                        Thanks for doing what you’re doing, and I wish Unleashed success (and maybe either domination or an eventual merge of the communities again)!

                        Thanks, that’s the idea :)

                        1. 2

                          The phrasing certainly made me go “urgh, not one of those…”

                          There’s really nothing I can offer as a legitimate excuse for that. I’m sorry.

                          but you think that it’s a negative thing while I think it is a positive thing. A reasonable difference of opinion.

                          The additional context you’ve provided makes me feel that it probably is the right, and positive choice in this case. I’m not vehemently against forks if there’s a legitimately good reason [and just to be clear, moving on from supporting legacy stuff is the important divergence I’m seeing, as it frees up resources to move faster]. I am against forks that don’t offer some radical divergence in philosophy, though. These are often rooted from deep bikeshedding on topics that don’t matter in the grand scheme of things.

                          Two examples of justified forks in my opinion: @rain1 recently forked filezilla because it was incorporating “unwanted extra nonfree software.” Devuan is a fork of Debian that replaces systemd – a topic that is far beyond bikeshedding at this point, as it’s had (and will continue to have) a drastic effect on the portability of software to other ecosystems.

                          1. 1

                            There’s really nothing I can offer as a legitimate excuse for that. I’m sorry.

                            No worries. Hopefully my initial response didn’t come across as too harsh either. If it did, my apologies.

                            I am against forks that don’t offer some radical divergence in philosophy, though.

                            Agreed. Although sometimes it is hard to tell if there is a justification for the fork.

                            1. 2

                              I am against forks that don’t offer some radical divergence in philosophy, though.

                              Agreed. Although sometimes it is hard to tell if there is a justification for the fork

                              I wonder when we started to need a justification.

                              Why?

                              1. 11

                                I wonder when we started to need a justification.

                                You do you, man. You do you.

                                In my mind, there are two types of forks we’re talking about. One of them is a “fork” on github, where I clone the repo, make some changes, contribute it back to the original author (or maybe not!), and live a happy life. These types of forks are almost always ok. It’s the “You do you, man. You do you.” response.

                                The other “fork” is far more challenging, and far more likely to cause a rift in spacetime. Those are the large, and by all accounts, successful projects that as a result divide a community, and make it difficult for users and would be contributors to find the right thing to use. These projects fork very publicly, and are rather uncomfortable, to be honest.

                                In many cases, these forks occurred because egos were hurt (I wanted it yellow) – a social issue – not a technical issue. In other cases, there’s a large philosophical difference that impacts the general direction of the technology. This may be licensing, whether or not to support obscure platforms, a radical new idea or focus… etc. In all cases, even if there are legitimately great outcomes (OpenBSD comes to mind), there’s a period of confusion and frustration from users who are now forced to choose where to put their effort. They are forced into taking sides, and that’s unfair.

                                1. 1

                                  These are marketing concerns. Market share issues, to be precise.

                                  They are valid for open source projects that are basically marketing tools, but they are pointless for free software that maximizes hackers’ freedom to hack.

                                  Feeling the need to justify a fork, is the first step towards asking permission.
                                  The PATENTS file in projects like Fuchsia’s kernel sources just push for that.

                                  1. 5

                                    Sorry, my friend. Most people don’t share your principles on what a ‘hack,’ or a ‘hacker’ is. More often than not, the people using, and writing software care more about getting the job done quickly, and without frustration, and a fork makes that harder. It doesn’t matter how you classify it.

                                    1. 0

                                      people using, and writing software care more about getting the job done quickly, and without frustration

                                      And this is fine!

                                      But, my friend, you need to understand the tools you use!
                                      If you pick up a free software that is distributed “WITHOUT ANY WARRANTY” just because it’s free of charge, and you completely miss the culture of the people who develop it, you won’t get your job done. Same if you pick an open source software controlled by Google (or whoever) and you fork it to successfully challenge their market share.

                                      In both cases, you’ll face surprises, unexpected costs and frustration.

                                      Understanding the environment you operate in, is strategic to “get the job done”.

                                      Most people don’t share your principles on what a ‘hack,’ or a ‘hacker’ is.

                                      Interesting! Do you have world-wide statistics to prove such claim?

                                      Not that it matters: “principles” stand to “artifacts” like “postulates” stand to “theorems”. How many people accept the postulates/principles is irrelevant.

                                      I know that some people don’t share my principles. And I’m fine with it.
                                      Do you know that some people don’t share your principles?
                                      Are you fine with it?

                                      1. 2

                                        But, my friend, you need to understand the tools you use! If you pick up a free software that is distributed “WITHOUT ANY WARRANTY” just because it’s free of charge, and you completely miss the culture of the people who develop it, you won’t get your job done. Same if you pick an open source software controlled by Google (or whoever) and you fork it to successfully challenge their market share.

                                        In both cases, you’ll face surprises, unexpected costs and frustration

                                        I read this several times and can’t figure out what you’re saying.

                                        Why do I need to understand the culture of a tool I use? As long as it fulfills my technical needs and I know what I’m prohibited to do by law, I can use it to get my job done.

                                        1. 1

                                          Why do I need to understand the culture of a tool I use?

                                          Some example of the issues you might face:

                                          • an security update could be delayed
                                          • an update upstream could break your work in production
                                          • you (or one of your customers) could be sued for patent violation (even if you are not actually violating it)
                                          • the project might contain backdoors and your image could be associated with it

                                          and so on…

                                          You could ignore the culture of tools you get for free, and be lucky.
                                          But in my job, I would call that short-sight and unprofessional.

                                          Software is not like an hammer: even if you take it free of charges, there are strings attached.

                                          1. 2

                                            Some example of the issues you might face…

                                            There are ways around much of these concerns. I have a support contract, or trust in a distribution (say, Canonical for Ubuntu or Red Hat), which provides vuln disclosures, and updates for me to apply. I have a development process that includes QA, and automated CI infrastructure so that breaking changes are caught before production… etc.

                                            But, to the meta point:

                                            But, my friend, you need to understand the tools you use!

                                            Demonstrably this is not at all true. It’s easy to do a survey of 100 people – 10 people even, and ask them if they understand their tools. How are their tools implemented? How does the relational database they store and query data into/from store data on disk? How does the map type work in their favorite language? How does the VM work? How does the ORM work? How does the templating language they use work? How does the image processing library they use work to resize images, or rotate images, or whatever work? How does TensorFlow do all it does?

                                            What you’ll find is that a large portion of engineers have no idea how things work. And they don’t need to know. Their job is to build CRUD apps for people who could care less if something takes a little bit longer. The developer themselves, in many cases, could care less about BTREE indexes vs. HASH indexes, and doesn’t really know the difference. For the amount of data they manipulate, doing full table scans 3 times an hour (because they literally have 3 queries an hour) is completely sane, reasonable, and still puts a smile on the face of the Administrative assistant who no longer has to go to a type writer to type out a bunch of labels. Or, who no longer has to print 10,000 college applications to give to admissions reviewers… or any number of other tasks where even the worst technology choices, recommended by underskilled developers can make a ginormous (and) positive difference on the process.

                                            1. 0

                                              There are ways around much of these concerns.

                                              Sure, but the simplest one is to understand the tools you use.

                                              And actually, trusting Debian (or OpenBSD or whatever) or signing support a contract with Canonical (or Red Hat or Microsoft or whatever) requires the cultural understanding of such people I was talking about.

                                              Demonstrably this is not at all true. […]
                                              …even the worst technology choices, recommended by underskilled developers can make a ginormous (and) positive difference on the process.

                                              Practically you are saying: “everyone can become rich without working: just win the lottery!”. Well, this is not false. Stick on boring low-hanging fruits all your life and you will never face the issues that a professional developer has to consider every day.

                                              What you describe is not to “get the job done”.
                                              People die because of people who work this way.

                                              In Italy we use to say: “even a broken clock can be right twice a day”.
                                              Yes, incompetent developers can occasionally improve the life of someone, but for most of time, they just mess up things beyond repair.

                                              1. 4

                                                Practically you are saying: “everyone can become rich without working: just win the lottery!”. Well, this is not false. Stick on boring low-hanging fruits all your life and you will never face the issues that a professional developer has to consider every day.

                                                What you describe is not to “get the job done”. People die because of people who work this way.

                                                I believe this comment really lacks perspective. What you are saying is the Shamar-style of development is the only correct style of development and anyone not doing it that way is not only doing it wrong but putting people’s lives at risk.

                                                The industry I work in produces a lot of software and consumes a lot of software, however no company in this industry would consider itself a tech company. We have people whose job title is “Software Engineer”. But, for the most part, they make pretty bad technical decisions and are fairly unskilled relative to the engineers at most tech companies. But, they aren’t “trying to get rich without working” or “win the lottery”. They are very hard working. The industry just has a different set of values where the software is incidental to the actual problem the company is solving. A lot of the things you brought up in an earlier post about why one needs to understand the culture of the software they consume doesn’t actually apply in the industry I’m in. Security updates and backdoors are almost never going to be a concern because these systems are not open to the outside. The data they consume is entirely generated and processed inside the walls of the company. In the industry I’m in, we’re actually saving lives too! I mean that literally.

                                                I hate to use this word, but your comment is elitist. Anyone not solving problems how you say is not a professional and just causing damage “beyond repair”. Your comment lacks humility and perspective yet is extremely assertive. It might be worth stepping back and questioning if what you assert so strongly is an ideal, a belief, or reality. Or perhaps it’s a challenge with the language and you don’t realize how assertive your comments sound relative to how assertive you meant them to be. But insisting people not following your development principles are killing people is a pretty strong statement, in any case.

                                                1. 0

                                                  But insisting people not following your development principles are killing people is a pretty strong statement, in any case.

                                                  I was not talking about software development in particular.

                                                  Incompetent engineers build bridges that fell off.
                                                  Incompetent phyisicians do not cure mortal deseases properly. And so on.
                                                  They can get some work done, but it’s lucky, like winning te lottery.

                                                  As for software, I do not means that a competent software developer cannot adopt a cheap half-working solution instead of an expensive “right” one (whatever it means in the context).

                                                  On the contrary!
                                                  I mean that to make a choice you need competence.

                                                  I’m saying that only a competent professional that knows the tools she use can really “get the job done”.
                                                  An incompetent one can be lucky some times, but you cannot trust her products and thus the job is not done.

                                                  Or perhaps it’s a challenge with the language

                                                  Actually, I’m rather surprised by the opposition such a simple and obvious concept is facing. All other craftmen I know (the real ones, not the software ones) agree that it takes years to “own” their tools.

                                                  Probably we have diverged too much from the original topic, and we are facing a deep cultural mismatch.

                                                  In Europe (that, let me say, is not living up to its own values these days) we are used to be very diverse and inclusive (note: it took centuries of wars, rapes, debates, commerce, poetry, science, curiosity and many other contaminations to get here).

                                                  But we do not meld the meaning of words just to include more people.

                                                  We clearly see and state the differences, and happily talk about them.

                                                  And this is not elitism, it’s efficient communication.

                                                  When we say “job” or “done” we convey a precise message.
                                                  And if a bridge fell off and kills someone, we call the engineers who built it liars because the job was not done. At times they even stop being called engineers at all.

                                                  1. 2

                                                    You don’t give an inch, do you? I’ve explicitly said that I work in an industry that does not do software development like you have expressed it should be done and your response is to keep on insisting on it. On top of that, you did this annoying thing where this discussion has clearly been about software development but when I pushed back you move the goal post and start talking about bridges and medicine. It’s extremely challenging and frustrating to communicate with you, I need to work on not doing that. Thanks for the discussion, it was insightful for myself.

                                                2. 3

                                                  Looks like someone got a degree in being right on the Internet! There’s no point in engaging with you, and if there was a feature to block users, I would make use of it.

                                                  1. 0

                                                    I’m sorry about this.

                                                    If you lack arguments to support your assuptions, I can suggest to simply state such assumptions clearly. For example:

                                                    Users and companies are entitled to get work and value from software developers for free, because they are in a rush to get their job done.
                                                    FS and OSS forks hurts this right.

                                                    I would deeply disagree on such premise.
                                                    But I wouldn’t argue against the conclusions.

                                                    1. 2

                                                      Did you just tell me to go fuck myself?

                                                      1. 1

                                                        Ok, this must really be a language problem.

                                                        I cannot find a translation of what I wrote that can be interpreted that way!

                                                        Anyway: No, I’m not telling you to fuck yourself.

                                                        1. 2

                                                          I just spent 30 minutes carefully crafting a response to your absurd notion that everyone must be highly skilled or people will die. But, it’s just not worth it. You’ll find a way to twist it into something it’s not, and yell loudly about how I’m wrong without considering that you may be shortsighted in your assumptions.

                                                          1. 0

                                                            I’m sorry for the time you wasted.

                                                            I do not think that “everyone must be highly skilled or people will die”.

                                                            I think that everyone should be professional in his own job.
                                                            Which, at the bare minimium, means to understand the tools you use.

                                                            you may be shortsighted in your assumptions.

                                                            I woudn’t even engage if I woud not assume this to be possible: there would be nothing to learn.

                        2. 3

                          Question that I have that isn’t clear from the post. Do you intend to maintain enough compat with Illumos that you would be able to get improvements that were done n something like SmartOS? Are you planning on continuing to pulls changes from Illumos? Planning to try contributing changes back? Or is this a hard fork where you don’t imagine there would be cross pollination?

                          1. 4

                            Good questions!

                            1. Source-level compat, yes until it stops to make sense. Binary compat, no.
                            2. I’ll continue git-pull from illumos-gate until it starts to be too cumbersome due to divergence. Once that happens, I’ll probably still take commits from illumos-gate but I’ll be more selective. In addition to illumos-gate, we cherry-pick changes from the illumos downstreams (omnios, illumos-joyent, etc.). This is open source, if those repos have good changes I’d be stupid not to take them because they were authored “outside”.
                            3. I have no plan to get changes back into illumos, however the code is open so others can do it. As an example, Toomas Soome took one of the cleanups in Unleashed and got it into illumos-gate (87bdc12930bfa66277c45510e399f8a01e06c376). He also has a work-in-progress to get our cpio-based boot_archives into illumos, but I don’t know the status of that.

                            Hopefully I covered everything.

                      1. 3

                        I’m using such a script (Perl – yay) for my blog: https://gir.st/genindex (not really a url I’m considering stable)

                        Despite the popularity of markdown and static page generators, I’m writing my posts in plain HTML, and a heading usually looks like <hX id=foo>. then I’m calling above script from within vim to generate the toc.

                        Looking forward to the next challenges!

                        1. 28

                          5 years. Nobody would dare to be that careless when it comes to e.g. oracle’s license agreements, but with the GPL, hardly anyone seems to care.

                          (This isn’t just meant in re: to tesla, but many, many other players as well)

                          1. 5

                            It’s why Im in favor of suing the crap out of them if they dont respond to nice letters and gradual escalation. Very important to have the gradual escalation with clear process and solutions so companies dont worry GPL = massive loss of money. The few hit would be a solid example of what happens to worst offenders. Most of that money donated to FOSS infrastructure, legal defenses, or businesses.

                            1. 4

                              … if they dont respond to nice letters and gradual escalation.

                              This put a huge burden on GPL developers and communities.

                              I think that suing them the crap if they don’t start to comply the day after the first email would be a much more effective approach.

                              For one company that try to comply after 5 years, how many other don’t care?
                              This lenient approach give them nothing to lose!

                              Do these company comply to free software license only if they are totally busted?
                              Fine, so most of them don’t comply at all. So there’s nothing communities can lose by suing them.

                              So sadly, free software communities can only obtain respect for their work by suing violators.

                              IMHO, Software Freedom Conservancy is not protecting free software, but corporate’s investments.

                              1. 3

                                We’re trying to keep the moral high ground here. Plus, reduce the risk of companies avoiding GPL code. They’re already a little afraid of it. It helps to let them know a mistake won’t be an automatic, massive loss. The people doing GPL compliance usually just give them a notice asking them to fix it. I don’t know how often compliance happens but write-ups I’ve seen indicate they had a lot of success just talking to companies.

                                Note that commercial, copyright holders usually give a takedown notice before legal action as well. Right now, those doing it for content are even doing six strikes with ISP’s. I’d say similarly let them ignore a few emails or contacts that we document to show a pattern of not caring. Then, hit them with a law suit.

                              2. 3

                                As I understand, for US, you can sue for either actual damage or statutory damage of $30,000. For example, The Qt Company can sue and recover the price of Qt commercial license, and attorney’s fees. I think for Linux and BusyBox it is entirely possible that the enforcement wins and the court awards small damage, resulting in worse compliance in the future.

                                1. 2

                                  So, in that case, the default commercial license should be something like Oracle’s with actual licenses always being reduced based on traits of the business. In court, you’d cite the non-discounted, Oracle-style licensing of the product with pricing per developer seat, per CPU, per organization, per deployed instance, and per mention of the trademarked name in court documents. Should add up pretty quickly if it’s a big company or a startup. ;)

                                  Nah, in seriousness, I’d be suing under copyright law if possible since a violation is up to $250,000 per count. That’s what the proprietary companies use in combination with patent law. If there’s patents, maybe use that as well. Damages could be pretty high.

                                  “I think for Linux and BusyBox it is entirely possible that the enforcement wins and the court awards small damage, resulting in worse compliance in the future.”

                                  I didn’t think about that. I’d have to make sure the solution addresses it. Alternatively, the response can vary per project.

                                  1. 4

                                    the default commercial license should be…

                                    This remind me of Bruce Perens recommending developers of GPL software to always offer dual license.

                                    1. 2

                                      I didn’t know about that legal angle. Thanks for the link!

                                  2. 1

                                    The “actual demage” is the whole development effort donated by developers of Linux and BusyBox.

                                    Make an estimate, and ask for it.
                                    Indeed, if you don’t want to comply with the GPL you have to buy the copyright from each of the developers or create your own Unix and BusyBox alternative from scratch with comparable effort.

                                    1. 2

                                      While I want this to be true, this strategy is completely untested in the court and if that is the alternative, I fully understand why FSF and SFC are reluctant to pursue such strategy.

                                      1. 2

                                        I fully understand why FSF and SFC are reluctant to pursue such strategy.

                                        Why?

                                        I mean: the gift of developers’ hours under GPL is conditioned to the reciprocity it requires.

                                        Without the reciprocity, that work is not a gift anymore: you either pay for it or comply to the requirements. Still, after license termination, you can just pay.

                                        1. 2

                                          Why? Because it is untested in the court! Or do you have a case number where your strategy worked?

                                          1. 3

                                            Oh… good point!

                                            So it remains untested because… it’s untested!

                                            I guess an exit condition is missing in this loop…

                              1. 4

                                If you like these kind of ‘hidden operators’, but want some that actually work and are (mostly) useful, take a look at the perlsecret documentation.

                                (and don’t forget about C’s “goes to” operator while (i --> 0))

                                1. 6

                                  AntennaPod: podcast app (a little buggy but mostly works)

                                  DNS66: systemwide rootless adblocker

                                  Firefox Klar: Firefox Focus, but free

                                  Silence: texting app

                                  Simple Gallery

                                  Tusky: mastodon client

                                  Unit Converter Ultimate

                                  1. 2

                                    Firefox Klar: Firefox Focus, but free

                                    they are exactly the same. They changed the name to ‘Klar’ (german for ‘clear’) in Germany due to trademark issues (focus.de is a magazine there). It is also not in the main repositories, but in a seperate one that does not build from source.

                                    1. 7

                                      One difference between that two is that Klar have telemetry turned off by default, AFAIK: https://gitlab.com/fdroid/rfp/issues/235

                                    2. 1

                                      If I have root, is DNS66 still better than AdAway?

                                      Also, I’m torn between Tusky and Twidere, if anyone has opinions I’d like to hear them.

                                      1. 4

                                        I’d say AdAway is preferable to DNS66. There’s also Blokada, which works as a pseudo-VPN.

                                    1. 10

                                      The big annoyance was that back in the day, with posting boards and guestbooks being all the rage, (or just a badly made web page) people would open a blink tag and never close it and the browser would render everything after it on the page as blinking.

                                      1. 4

                                        In a similar vein: U+202E “RIGHT-TO-LEFT OVERRIDE”

                                        1. 3

                                          I remember doing that once in 1996. Good times.

                                          1. 2

                                            These days you can annoy everyone with gif images though ;-) Which sadly regularly happens on Github issues of major issues / bugs.

                                            1. 1

                                              But at least it doesn’t have a spillover effect of turning every post that comes after it into an animated gif meme version of itself (as long as no one makes “memification” a feature of markdown, aynway).

                                              1. 3

                                                as long as no one makes “memification” a feature of markdown, aynway

                                                Goes off to register memedown.com and apply to a startup accelerator.

                                          1. 2

                                            Very well executed, kudos to all of you!

                                            (I was tempted to post the extra long longcat meme, but u/liwakura beat me to the “extremely large image joke”)

                                            1. 18

                                              if you feel like you are repeating yourself:

                                              • !! – complete last command (!-2 recalls the second to last command)
                                              • !$ – last argument -”-
                                              • !^ – first argument -”-
                                              • !* – all aguments -”-
                                              • !:1-2 – 1st and 2nd argument -”- (!-2:2 recalls the 2nd argument of the 2nd-to-last command)
                                              • ^old^new – replace the first occurrence of old with new
                                              1. 11

                                                Consider a reputable VPN like Freedome.

                                                This is helping me keep my data private from facebook how?

                                                1. 0

                                                  I’m also a bit confused. How exactly does Facebook track me once I’ve deleted my Facebook account?

                                                  1. 5

                                                    cookies, cookies, cookies. Loads of websites “integrate” with facebook, either for login, or for the big like button, etc. Facebook slurps down oh hey you visited poopydiapers.com, cool beans!

                                                    1. 3

                                                      Thats why you get a browser extension like privacy badger which blocks all the facebook integrations.

                                                      1. 1

                                                        I agree with you.

                                                        I like Cookie Autodelete myself: https://addons.mozilla.org/en-US/firefox/addon/cookie-autodelete/?src=search

                                                        it even does localStorage data now too(mostly)

                                                      2. 2

                                                        Ah I see. I figured it was cookies, but didn’t know you were tracked through facebook integrations without being logged in. Regardless, I’ve got all their addresses mapped to 0.0.0.0 in my hosts file (using this repo). Thanks for the answer to the naive question - my programming background is as a non-CS academic.

                                                      3. 2

                                                        Many web pages include their retargeting js or like button js. Facebook can track the IP and cookies associated with those page loads. A VPN might help against IP tracking, but not the cookies.

                                                    1. 5

                                                      FOSDEM 2018 had a fun talk about that. Horrifying what constitutes a valid email address.

                                                      1. 6

                                                        Oh gahd…I’m all for killing info, but this seems…like an even-worse alternative.

                                                        1. 1

                                                          In my own research operating system I’m planning to use either markdown or something slightly custom (just to structure the all manpages in the same way).

                                                          However, I’m eager to listen about simpler and cleaner alternatives!

                                                          What are you thinking of?

                                                          1. 4

                                                            Ingo Schwarze at least has some strong feelings about why not Markdown, and I agree with the points made.

                                                            Side note: You’re linking to an HTTPS page on GitHub Pages. People who don’t have an exception for GitHub’s GitHub Pages cert will experience an error there.

                                                            1. 4

                                                              The funny thing is that I agree with Schwarze about Markdown as a presentation language.

                                                              And still I can’t find another language that can be consumed both as a plain text (via cat) and as input to produce nicer presentations (as HTML and/or PDF).

                                                              In a perfect world I would hire a programmer to design and develop such language with me.
                                                              But in a perfect world, I could pay the bills programming in C for Jehanne, not in Javascript for banks.
                                                              Maybe in a perfect world we wouldn’t have neither Javascript nor banks (nor blockchains for what it worth)! :-D

                                                              So if you have a better solution to propose I’m really eager to listen. Really!

                                                              My requirements are rather simple: the language for Jehanne’s manual pages must be

                                                              1. easy to read in source form (in UTF-8)
                                                                1.5) semantic enough (maybe though the adoption of conventions) to build index and cross references
                                                              2. precise enough to transform into a nice PDF

                                                              1 and 1.5 are more important than 2.

                                                              The only alternative to a (slighly customized) Markdown (that I know a bit) is AsciiDoc, that unfortunately is designed to be easily written, but not to be easy to read in source form.

                                                              (thanks for the hint about the link… it was a typo… fixed!)

                                                            2. 3

                                                              I have little to no horse in the race of the source format; my nausea is a reaction to the presentation of the rendered form – emacs (even though I’m an emacs user!), HTML, and (worst of all) web browsers.

                                                              I like man pages. In my pager, in my terminal. More terminal, less web.

                                                              1. 1

                                                                I agree so much that in Jehanne you will read manual pages with cat.
                                                                And in a rio window, you won’t even need a pager.

                                                                So my question is about presentation.

                                                              2. 2

                                                                What’s wrong with troff -man?

                                                                1. 1

                                                                  Nothing!

                                                                  But cat is simpler.

                                                                  1. 2

                                                                    So why are you looking for an alternative typesetting language?

                                                                    If you’re using cat, man pages would have to be plain text, no?

                                                                    1. 1

                                                                      Yes, I even thought about simple plain text. And it is still an option!

                                                                      But I guess that one can design a simple typesetting language to be very readable in source form.

                                                                      It’s just a matter of trade offs. Markdown explores this design space.
                                                                      I think we could have something even better and I would actively help in the design anyone who is interested, but Jehanne is a full operating system and it leaves me with no time for this.

                                                                      Still implementing a compiler for such hypotetical language would be the only way to evaluate the trade-offs and to ensure that it is formal enough.

                                                                2. 1

                                                                  Have you considered Perl’s pod?

                                                                  regarding /u/Shamar’s later post:

                                                                  1. debatable, but yes
                                                                    1.5. yes, with L<name>
                                                                  2. yes
                                                                  1. 1

                                                                    Didn’t know it, but to me the rumor / message ratio in source form is to high.

                                                                    The primary consumption of the Jehanne’s manual pages will be through cat of sources.

                                                                    Thus the markup must be minimal so that readers will rapidly learn to ignore it.

                                                                    POD’s markup is simple to learn and use, but definitely not minimal.

                                                                    Slightly extended Markdowns, such as the one of discount, are way more transparent.

                                                                    I could design something better from this point of view, but people should learn it just to write Jehanne’s manpages and I should find a way to leverage existing tools.

                                                                    It’s in no way impossible, but neither a priority nor a funny task.

                                                              1. 1

                                                                Pterosaur used vims clientserver mode to embed vim directly into any text field (and wysiwyg-editor) – sadly, it stopped working years ago :(

                                                                1. 2

                                                                  I wanted to parse <h1>, <h2>, … headers in the HTML output in order to generate a table of contents, like the one at the top of this post.

                                                                  Since I could’t find your script, here’s the one I’m using on my homepage. This perl script expects headings in the style <h2 id=foo>.

                                                                  #!/usr/bin/env perl
                                                                  
                                                                  print "<ul>\n";
                                                                  $depth = 2;
                                                                  while(<>) {
                                                                  	if (/<h([2-3]) +id=["']?(.+?)["']?>(.+?)<\/h\1>/) {
                                                                  		print " "x($1-2)."<ul style=\"padding:0 0 0 1em\">\n" if ($1 > $depth);
                                                                  		print " "x($1-2)."</ul>\n" if ($1 < $depth);
                                                                  		print " "x($1-2)."<li><a href=\"#$2\">$3</a>\n";
                                                                  		$depth = $1;
                                                                  	} elsif (/<h([2-3])>/) {
                                                                  		print STDERR "! No id attribute on line $.: $_";
                                                                  	}
                                                                  }
                                                                  print "</ul>\n";
                                                                  
                                                                  1. 5

                                                                    I plan to work on these things […] A “carrot” for Oil, i.e. a feature that existing shells don’t have. Ideas: [static analysis, app bundles, and crash reports]

                                                                    If you’re looking for ideas, here’s another one that might interest you: nestable string literals, a.k.a. tagged string delimiters, a.k.a. I don’t think this construct has an official name. It’s a rare language feature AFAICT, but solves an annoying and error-prone task that is especially common in shell: quoting, escaping, and multiple escaping.

                                                                    Examples of tagged string delimiters in other languages (I am aware of only two):

                                                                    • Lua’s long brackets let you write string literals (and multiline comments) as [[...]], [=[...]=], [==[…]==]`, and so forth – the number of equals signs in the opening delimiter is counted, and the string ends when the matching closing delimiter is found.

                                                                        --[[ This comments out an assignment to my_lua_string
                                                                        my_lua_string = [==[one [=[inner]=] two]==]
                                                                        ]]
                                                                      
                                                                        -- This is a string delimited with long brackets, that contains several other closing delimiters that are ignored without needing escaping
                                                                        [=[one ]==]'" two]=]
                                                                        --> 'one ]==]'" two'
                                                                      
                                                                        -- Using long brackets with loadstring (Lua's `eval`):
                                                                        f = loadstring([[i = i + "x"]])
                                                                        i = 'a'
                                                                        f()  -- i = 'ix'
                                                                        f()  -- i = 'ixx'
                                                                      
                                                                    • PostgreSQL’s dollar quoting:

                                                                        $$Dianne's horse$$
                                                                        $SomeTag$Dianne's horse$SomeTag$
                                                                      
                                                                        CREATE OR REPLACE
                                                                            FUNCTION increment(i integer) RETURNS integer AS $myAddOne$
                                                                                BEGIN
                                                                                    RETURN i + 1;
                                                                                END;
                                                                            $myAddOne$ LANGUAGE plpgsql;
                                                                      
                                                                    • Heredocs don’t count, because you can’t write them inline.

                                                                    Ways tagged string delimiters would improve the OSH/shell experience:

                                                                    • Tagged string delimiters make it trivial to write any string literal without escaping the contents: you simply choose a delimiter that doesn’t occur in the string.
                                                                    • Tagged delimiters make it easy to nest commands with quoted string arguments inside the quoted string argument of a higher-level command: for example, cp 'my file with.spaces' /etc within sudo sh -c 'multiple; commands; cp "..."' within ssh 'multiple; commands; sudo sh -c "..."'.
                                                                    • Shell’s string-centric nature and interactive usage means is the context in which I frequently quote strings, or pass quoted shell code that contains its own quotes that need escaping, and so on. The example in the previous item is one I have encountered in real life, albeit only once. It would be good to get away from escaping, and wonderful to get away from double escaping.

                                                                    Sorry to dump such a long post on you (although turnabout is fair play :-P), but I thought you might be interested. For my part, I find your OSH project fascinating, and avidly read every post. Thank you for writing such good writeups!

                                                                    1. 5

                                                                      Perl has nestable strings with q{} / qq{} / qx{} as well.

                                                                      print q{foo q{bar}};
                                                                      
                                                                      1. 3

                                                                        Yes I totally agree that shell’s string-centric nature means that this is one of the most important features! I often have HTML snippets in my shell scripts, and I see tons of config file snippets in shell scripts, like /etc/resolv.conf, etc. Not to mention Awk, Perl, and Python snippets.

                                                                        I think of this feature as “multiline strings”. It will subsume here docs, and as you mention you can use one as an argument to a command.

                                                                        It will replace all the variants of here docs: << EOF , << 'EOF' (quoted), <<-EOF (indented), etc.

                                                                        I’m thinking using a variant on Python’s syntax:

                                                                        # operator << takes a string literal, not a filename, like <<< in shell
                                                                        cat << 'normal string' 
                                                                        
                                                                        cat << '''
                                                                        $var is NOT expanded in 3 single quotes, equivalent to quoting 'EOF'
                                                                        '''
                                                                        
                                                                        cat << """
                                                                        $var is expanded in 3 double quotes, like unquoted EOF
                                                                        """
                                                                        

                                                                        I have thought about the “tag” problem too. I originally had a proposal to have some sort of tag, but someone pointed out to me that it’s not necessary for multiple here docs on a line. You can just use the order of the here docs.

                                                                        I guess I have never really had an issue with Python’s multiline strings – e.g. embedding a multiline string in a multiline string! The fact that there are two different types of quotes helps. But I’m open to adding that later if it’s a problem.

                                                                        I plan to write a preview of Oil syntax, as requested on lobste.rs. So I’ll make sure to highlight this part. Unfortunately I have at least 2-3 posts to write before that, so it might not come for awhile.

                                                                        There is also the issue of C escapes, e.g. $'\n' in shell.

                                                                        Thanks for the feedback!

                                                                        1. 1

                                                                          multiline strings with interpolation and also trimming of leading indentation is super handy, the way nix does it is pretty fun to use.

                                                                          1. 1

                                                                            OK interesting, I didn’t know Nix did that. That’s pretty much what I expect Oil to have – the indentation of the closing quote is what you strip off of every line.

                                                                            But ‘’ already means something in both shell and Oil, so it will be ‘’’ and “”” like Python, except that single and double mean what they already do in shell.

                                                                            https://learnxinyminutes.com/docs/nix/

                                                                      1. 7

                                                                        In short, for those who can’t listen to a video right now: They punctured the floppy at a precise location, which causes writes to that location to fail. Then, in a few lines of assembly, check if the write succeeds and start messing with the pirates.

                                                                        Quite neat, actually.

                                                                        1. 1

                                                                          The one thing I hate about programming language specific package managers is that they usually don’t set any standard for what qualifies. Anyone can upload packages and they aren’t vetted. There have been many types of weaknesses – form typo squatting attacks (from our /u/hanno IIRC), to reusing deleted package names just this week.

                                                                          They also aren’t playing along with your distro’s package manager and often encourage fixed-version dependencies (and many dependencies), leading to windows-dll-hell type situations with many versions of the same library installed.

                                                                          “But what if dependencies update and break my stuff?”

                                                                          anyone seen fefe’s talk at 34c3 (german, but simultaneous translation available)? he talks about exactly these kind of antipatterns.