1. 12

    Leaving a job because the tech is old seems very odd to me.

    However, 5 years is an incredibly long time to spend doing any one thing. I certainly wouldn’t stay in one job that long unless it were maybe one that let me change what I was doing every few years without leaving?

    1. 17

      Just to add to your first paragraph: It did seem that the author tried to make suggestions about which tech would be better, but didn’t get any support. It can be quite frustrating to work with legacy code and not getting listened to because your ideas doesn’t have an immediate return on investment (“Yeah, good idea, but we don’t have the time/resources/money to set your plan into action this time either”). Programming is creative, and having ideas repeatedly struck down kills the creativity and joy.

      1. 6

        That’s a very sensible thing to do IMO. If your skills are stagnating and your day-to-day work gives you no opportunity to advance them, then at some point you’ll want to update your skills. Either with something new, or something old that you’re unfamiliar with. Don’t mistake this advice for “chasing the shiny new thing”; rather an acknowledgement that new skills are important to your professional development/expanding your mind.

        1. 2

          I literally cannot stop aquiring new tech skills (or other skills, even!). My job is almost never involved in this.

          I understand that I’m not everyone. But that’s why I said it seems odd to me and not that it’s a bad idea. Maybe it’s a good idea for you. I don’t go to work for the tech (or I would have a very different job!)

        2. 2

          It may seem odd but I got to be in the very same position a couple of months back. I was a contractor for a company that deals with hedge funds, and some financial stuff like that, my excitement over that industry has never been really there though but the renumeration was damn great.

          However, we had to manage such an old codebase this company had built inhouse using Zend Framework 1! At the time, I took the job with the idea we were going to be using recent tech obviously, they had said it’s PHP + recent JS flavours (vuejs, react JS). I tried to trudge on for a while but could just not get productive. I ended up resigning because I felt so bad that I couldn’t deliver the value they sought nor was I bothered to learn outdated tech and have an obsolete skillset.

        1. 1

          This is a very nice write-up, thanks! I might use a very similar setup soon and this would save me some time. I also appreciate how you name downsides to this solution as well as point to sourcehut, which is definitely also a good solution for git hosting.

          1. 11

            I used to use a lot of util alternatives, but now I just stick to the standard ones: find, make, man, vim, grep, xargs, watch, etc.

            You still have to learn them anyway because they’re installed everywhere by default. You can’t always install random tools on a system.

            1. 14

              Not sure I buy this argument.

              Becoming facile with the standard available everywhere tools is a good investment, to be sure, but some of the tools cited offer a huge value add over the standard tools and can do things they can’t.

              1. 2

                In my own usage, I haven’t really noticed too much of a difference. The things I have noticed are that the non-standard tools are sometimes faster and they tend to use more common --flags. entr is a bit unique, but I’ve also been able to replace entr with watch to achieve basically the same result.

                What are some of the huge value adds that I’m missing out on?

                1. 5

                  Utilities like ripgrep and fd natively respecting your .gitignore is a huge feature.

                  1. 5

                    Oh, man. That’s actually the feature that made me leave ripgrep. I personally prefer to not hide a bunch of information by default. Let me filter it. I didn’t even realize it did that at first. I’ve spent hours debugging something only to realize that ripgrep was lying to me. Definitely user error on my part and I eventually found you can disable that behavior. But that made me realize grep suited my needs just fine.

                    1. 3

                      Yep, same here. I think it’s a horrible default and easily the biggest problem I’ve ever encountered with ripgrep.

                      1. 5

                        I find that to be an ok default and for the odd time you don’t want that behaviour there’s --no-ignore-vcs which you can also set in your ripgrep config file

                        1. 1

                          FWIW, the automatic filtering by default is one of the most highly praised features of ripgrep that I’ve heard about. (And that in turn is consistent with similar praise for tools like ack and ag.)

                          If you don’t want any filtering at all, ripgrep will behave like grep with rg -uuu <pattern>.

                          1. 1

                            I absolutely believe that, and I didn’t like it with ack and ag (yeah, I also progressed through all of them).

                            I’m not saying you didn’t do the right thing if most people like it, but it’s not for me. Thanks for ripgrep and please don’t take the above comment as any sort of attack. (and yes, I’m using the form you mentioned).

                            1. 1

                              I didn’t, no problem. Just wanted to defend my choice. :)

                        2. 1

                          Hi, ripgrep author here. Out of curiosity, what made you try ripgrep in the first place? From what I hear, folks usually try it for one or both of performance and its automatic filtering capabilities. It seems like you didn’t like its automatic filtering (and I’ve tried to put that info within the first couple sentences of all doc materials), so that makes me curious what led you to try it in the first place. If you were only searching small corpora, perhaps the performance difference was not noticeable?

                          1. 1

                            In my case it was speed, in particular, replacing vimgrep

                      2. 3

                        watch(1) as far as I know doesn’t do anything with inotify(7), so it’s limited to a simple interval instead of being event based. As others have pointed out, you could use inotifywait(1) and some relatively simple scripts to obtain similar results.

                        That being said, I still use find, grep and others regularly, these are just a little easier to work with on the daily when they’re available. fd in particular has nicer query syntax for the common cases I have.

                        1. 3

                          Yeah, watch doesn’t watch (ha) for file changes, but my goal is to avoid having to rerun commands manually while I work on a file. watch(1) can achieve this goal. Yes, it’s inefficient to rerun the build every -n .1 seconds instead of waiting for file changes, but I end up reaching my goal either way, even if I have to wait 1 second for the build to start.

                          Although, I can definitely see how this could be painful if the command is extremely slow.

                          1. 5

                            I work with Python… so it goes without saying that my tests are already slow, but also many of them are computationally expensive (numpy), so they can take several minutes to complete. Obviously that’s not the same situation for everyone, use what works for you! The whole point of my post is to share tools that others may not be aware of but may find helpful.

                        2. 1

                          What are some of the huge value adds that I’m missing out on?

                          Thinking about this I may have over-promised, but one thing that occurs is vastly reduced cognitive load as well as a lot less straight up typing.

                          For example I personally find being able to simply type: ag "foo" as opposed to: find . -name "*" -exec grep "foo" \; -print

                      3. 5

                        I’m a developer, so it’s super worth it for me to optimize my main workflow. I know the standard tools well enough that I can pretty easily revert back to them if there is one, but some of these don’t have an alternative in the standard *nix toolset. entr(1) in particular has nothing equivalent as far as I know.

                        1. 3

                          How about inotifywait?

                          1. 2

                            entr is built on the same os API, inotify(7). You could probably get inotifywait to act in a similar manner with some scripting, but it does not do the same thing.

                            1. 2

                              That’s all I’ve ever used inotifywait for: watch some files or directories, and run scripts when change events occur. But I didn’t even know about entr. It does look relatively streamlined.

                              1. 1

                                Your script(s) have to implement the behavior that entr(1) implements though, so while it’s technically possible it’s far from a ‘single command’ experience, which I find very nice.

                        2. 1

                          If you have to work on systems with standard tooling a lot and no option to install stuff, fair. But for me, and I think a lot of other devs, it’s pretty feasible to install non-standard tools. I almost never work on another machine than my own. Most people customize their personal machine anyway.

                          One rule I have is that scripts are always written in plain POSIX compliant shell for portability with the standard tools.

                          1. 1

                            I almost never work on another machine than my own.

                            I wonder if this is a side effect of the trends towards infrastructure as code, “cattle not pets”, containerization, etc etc etc.

                            In general I’ve found the same: the most work I do on a remote box is connecting to a running container and doing some smoke testing.

                            1. 3

                              I feel like in the era where shared UNIX hosts were more common, I would just cart binaries around in my home directory – which was often an NFS directory shared amongst many hosts as well.

                        1. 28

                          gRPC is Protocol Buffers running over HTTP/2. It’s a got a “g” at the beginning of the name to remind you that the only time it’s acceptable to use is when you are actually working for Google inside a Google-owned building eating Google-branded food and breathing Google-branded air.

                          Have worked with protobufs, can confirm this is true.

                          1. 5

                            What’s so bad about protobufs?

                            1. 20

                              The code generated is ridiculously complex for what it does. The implementation is ridiculously complex for what it does. The generated code in all languages except C++ (and maybe Java) is unidiomatic, verbose, and fits poorly with the code written in the language. The GRPCv3 code is a regression over GRPCv2, since you can no longer tell if values are present or not: all values are optional, but you can’t tell if they were filled in or not unless you wrap each one of them in their own message.

                              And then there’s GRPC, which takes this complexity to a new level, and adds lots of edge cases and strange failure modes because of the complexity.

                              And to top it off, while they’re a bit faster than json, they’re pretty slow for a binary protocol.

                              1. 6

                                Protobufs certainly has its dusty corners but there is a rationale for dropping required fields.

                                1. 5

                                  My compliant wasn’t about dropping required fields. I agree with that: Required is a pain for compatibility. My complaint was that they broke optional on top of that.

                                  message Foo {
                                        int32 x = 1;
                                   }
                                  

                                  In proto2, you could check if x was set:

                                  if(foo.has_x()) { use(x) }
                                  

                                  In proto3, there’s no has_x(), so an unset x is indistinguishable from x=0. You need to write:

                                  message Integer {
                                      int32 val = 1;
                                  }
                                  
                                  message Foo {
                                      Integer x = 1;
                                  }
                                  

                                  And then check:

                                  if(foo.get_x() != null) { use(foo.get_x().get_val()) }
                                  

                                  Note that in addition to being just plain clunky, and the potential to forget setting ‘val’ within the wrapper message, it’s inefficient – in languages with value types, like C++, Rust, Go, …, you’re now adding an extra allocation.

                                  1. 1

                                    That does seem annoying but they may be re-adding optional in version 3.13.

                                    1. 2

                                      Which is kind of telling…

                              2. 9

                                The footnote links to https://reasonablypolymorphic.com/blog/protos-are-wrong/index.html which gos into that

                                1. 5

                                  Kenton Varda’s response to this rant is worth reading.

                                  1. 9

                                    I stopped reading at

                                    This article appears to be written by a programming language design theorist who, unfortunately, does not understand (or, perhaps, does not value) practical software engineering.

                                    Typical Googler stuff.


                                    The comment in the original article is so on point:

                                    I now consider it to be a serious negative on someone’s resume to have worked at Google.

                                    1. 6

                                      While it is often perfectly valid to opt for a solution which works over one which is elegant, I get the impression that the words like “pragmatic” are increasingly being used as an anti-intellectual “excuse” for not doing something properly and ignoring well studied solutions, simply because they “weren’t invented here”, or are proposed by people who the developer disagrees with or simply doesn’t associate with.

                                      1. 3

                                        Yep.

                                        I come from an environment where “pragmatic” is only used sarcastically, and that’s honestly quite refreshing.

                                        If someone says “the software is pragmatic”, I assume it’s buggy as hell.

                                  2. 4

                                    This article is typical FP hardliner complaining that something isn’t “correct enough” because it doesn’t use a Haskell-like type system. The last section is kind of good, though.

                              1. 8

                                Or, I don’t know, do not use -m at all and it will open text editor for you?

                                1. 4

                                  The use case of scripting commits is the first that comes to mind where you don’t want that, but might want multi-line commits.

                                1. 1

                                  This is really interesting. Do you have any intention (or are you open) to add SQLite as a supported DB?

                                  1. 2

                                    Yeah, working on that next for simple automated tests in particular. It’s got a bunch of odd quirks so it’s taking a bit longer to support than MySQL or Postgres.

                                    1. 1
                                      1. 1

                                        Awesome! Cheers for letting me know!

                                    1. 4

                                      I gave this a go and I really like it. It is pretty much straightforward and I prefer having this type of configuration in Python and not YAML.

                                      As far as I can see it doesn’t read the ~/.ssh/config file?

                                      1. 3

                                        It should read standard SSH config (https://github.com/Fizzadar/pyinfra/tree/master/pyinfra/api/connectors/sshuserclient)! If it’s not working please submit an issue!

                                      1. 2

                                        Perhaps the regression in webcam quality is due to the bezels being thinner on the newer model? To keep the viewing angle the same (somewhere between 50-70⁰ diagonally) in a thinner bezel, the sensor must be proportionally smaller.

                                        1. 3

                                          That’s the technical reason. But the question is: are these slimmer MacBook Pros (post-2016) worth it? Sacrificing battery life, webcam and keyboard quality for a few millimeters?

                                        1. 3

                                          Something that is subjective but puzzles me a lot is it seemed like in 1998-2002 improving the Linux desktop was a huge focus. Since then there’s been a big growth in corporate sponsorship, which has been server focused. But the desktop thing was never corporate, it was just enthusiasts trying to show they can make a better desktop environment and better desktop applications. Somehow that seems to have faded.

                                          It’s interesting that there’s a lot of enthusiast projects on github now, where people try to show they can build a better version of some tool, often in Go or rust. But desktop environments or even GUI programs in general don’t seem like a focus, and I honestly don’t understand why. And it makes sense that without that, people end up exposed to Linux ideas over SSH, or WSL, or through the (not Linux) Mac terminal.

                                          1. 6

                                            I have a feeling a large part of that has to do with the shift towards web-based applications.

                                            1. 6

                                              Mac OS X sucked the oxygen out of the Linux desktop in the early 2000s.

                                              1. 3

                                                Some of it. The rest was killed by Android. Android works on phones, tablets, laptops, and desktops and has a well supported set of GUI toolkits and a large ecosystem and it is Linux. Today, Android is probably the most widely deployed client OS. You can get Microsoft Office for Android. You can get Spotify and Netflix clients for Android. You can get an insane number of games for Android. You can also install a load of open source software via F-Droid or other mechanisms.

                                                The thing that hasn’t taken off as much is the GTK/Qt + X11 (/ Wayland / Mir / this week’s fashionable X11 replacement) stack on the client. If anything, Linux has killed the other open source *NIX systems on the client because it’s the only one that can run the Android stack (Linux-only things like cgroups are tightly woven through the Android runtime with no abstraction layer).

                                              2. 4

                                                Some really important work on free-software desktops has been contributed by corporations in the past couple of decades. Case in point: GNOME accessibility, which was mostly implemented by Sun.

                                                1. 3

                                                  But desktop environments or even GUI programs in general don’t seem like a focus, and I honestly don’t understand why.

                                                  Partly because of the complexity, I believe. It is one thing to write a better grep in Go or Rust and a totally different one to write a GUI application, considering the complexities with cross-platform GUI toolkits, HiDPI support, packaging & distribution etc.

                                                  1. 4

                                                    Partly because of the complexity, I believe.

                                                    It’s certainly more complex, but why did open source culture change? Honestly, the people who started gimp, gnumeric, abiword, koffice, konqueror, wine etc. need to be mildly crazy people who are seeking out a very complex series of challenges. Today it seems like all of the complex parts are either presently corporate sponsored (Chrome, Mozilla, kernel, VirtualBox) or have been largely built with corporate sponsorship and left for the community to maintain (Libreoffice, Eclipse.) The “we don’t need companies for the complex stuff” culture seems to have really faded.

                                                  2. 2

                                                    I see a huge, huge amount of talk about improving the Linux desktop. It seems to be all that people are interested in these days: desktop desktop desktop. Dumbing down the user experience in the hopes it’ll be usable by the developers’ parents, I guess.

                                                    1. 1

                                                      Maybe it’s really just a disconnect. I mean, you’re right that Gnome/KDE development continues, and real developers have just learned to ignore them. My desktop is fvwm and has barely changed in two decades.

                                                    2. 2

                                                      I think the open source desktop environments made a big mistake betting so heavily on Linux. If the Linux kernel doesn’t provide features that KDE or GNOME wants, they need to convince people who are largely paid by companies that sell server products to help them upstream changes. This is difficult. If they’d retained the focus on portability that these projects had at their start, they’d have found it easier to get the features into Free/Net/OpenBSD (who would all love to have some differentiating features for desktop users). At that point, it’s easy to convince the Linux community to accept the features. Instead, they’ve made everything that’s not Linux such a second-class citizen that the idea that GNOME / KDE developers would switch to a different platform is an empty threat.

                                                    1. 1

                                                      This was already posted. Also should have (2015) in the title.

                                                      From 2 years ago: https://lobste.rs/s/z736eo/ideology_talk_by_gary_bernhardt_from

                                                      @alynpost Is this something that should be merged or is that not a thing for such an old post?

                                                      1. 2

                                                        I agree on the (2015) in the title, unfortunately I can’t make any changes to it now, so maybe a moderator could do that?

                                                        This was submitted before, 2 years ago and had no discussion (there’s a link at the bottom). I resubmitted it because its contents is still relevant and I’m happy to see it brought up a bit of a discussion and potentially reached a new audience.

                                                      1. 5

                                                        This is a 20 minute video from 2015 that likely still holds true in its entirety, which is why I’m re-posting it. It points out beliefs related to static vs dynamic type systems.

                                                        1. 3

                                                          Thank you for doing this. It really enjoyed it, especially after reading this article from the frontpage. The voices (all the blog posts and papers we read, the open source projects we use, the marketing materials we drudge through) that speak in the code we write form what the article calls a chorus or this talk calls ideology, affecting the way we think and act, even if we don’t recognize it. While this is true for code, it is also true for the discussions on what the speaker calls the “fluid” of technical ideology: the Orange Site and also here on Lobsters.

                                                          Side note, Žižek started a talk he gave in front of some googlers the same way as this one, using Rumsfeld’s quote and expanding it out to include “unknown knowns.” He is the one who has a film titled “The Pervert’s Guide to Ideology.”

                                                        1. 30

                                                          Not entirely on topic, but related: your website has a banner which says

                                                          By continuing to browse the site, you are agreeing to the use of cookies.

                                                          The EU data protection body recently stated that scrolling does not equal consent, see for instance https://techcrunch.com/2020/05/06/no-cookie-consent-walls-and-no-scrolling-isnt-consent-says-eu-data-protection-body/

                                                          1. 25

                                                            Then again, he is the type who “cares about SEO”.

                                                            1. 3

                                                              Wait, what’s wrong with caring about SEO?

                                                              1. 5

                                                                There was a time were SEO was synonymous with tricking the search engines into featuring your site. The running theme was SEO was a set of dark patterns and practices to boost your ranking without investing in better content.

                                                                For many people SEO still has similar connotations.

                                                                1. 16

                                                                  There was a time …

                                                                  Did that change?

                                                                  1. 0

                                                                    Did that change?

                                                                    Based on my recent efforts at looking into these things from a developer point of view, I would say yes it’s changing.

                                                                  2. 6

                                                                    AFAIK, there’s still considered to be “White hat” and “Black hat” SEO. White hat SEO involves stuff like organizing links and URLs well, including keywords appropriate to what you actually do, writing quality content, and per this article, encouraging links to your domain and paying attention to whether they use nofollow. Generally, stuff that doesn’t go against the spirit of what the search engine is trying to do, tries to get more legitimate users who genuinely want your product to find it and learn about it more easily etc.

                                                                    Black hat SEO involves stuff like spinning up link farms, spamming links across social media and paying for upvotes, adding a bazillion keywords for everything under the sun unrelated to what you’re doing, etc. Generally trying to trick search engines and visitors into doing things against their purposes.

                                                                    It may feel a little dirty at times, but it’s probably tough to get a business going in a crowded market without paying attention to white hat SEO.

                                                                    1. 2

                                                                      It may feel a little dirty at times, but it’s probably tough to get a business going in a crowded market without paying attention to white hat SEO.

                                                                      This is common issue for healthcare sites. If you have bona fide information that’s reviewed and maintained by experts it competes with sites selling counterfeits, outdated information, conspiracy theories, etc. These sites try every trick they can to scam people. If you don’t invest in SEO you are wasting people’s time with bad information in most cases, but some people can be harmed. In the US this can boil down to a freedom of speech discussion, but if you work internationally you have clearer legal obligations to act.

                                                                      Search engines do want to help directly in some cases, but there is still an expectation that the good guys are following what would be considered white hat SEO practices. White hat SEO often has other benefits with accessibility, so I think it’s worth listening.

                                                                      1. 3

                                                                        Yep, this is a bit unfortunately true. IIRC, StackOverflow had to implement SEO practices as, without it, other sites that scraped their content and rehosted it were actually getting higher rankings in Google than SO themselves.

                                                                    2. 3

                                                                      Makes sense. I wish more people (developers in particular) would start questioning these connotations. The present-day advice on how to do SEO right is a lot different from what it used to be.

                                                                      1. 8

                                                                        As the parent said, SEO originally meant “hacking” google search rankings but over time, Google eliminated these hacks one by one, saying the whole time that their goal was to deliver search results that were relevant and useful. However, the way they define “relevant and useful” is primarily:

                                                                        1. How closely the page content matches the serarch query
                                                                        2. How many “reputable sources” link to the page
                                                                        3. How long visitors stay on the page (usually directly related to length)
                                                                        4. How many people click on the link

                                                                        So SEO became less about technical trickery and is now more about human trickery. This resulted in the rise of what I call “blogspam”, i.e. blogs that crank out content with affiliate links and ads peppered throughout. This might not be a bad thing per se, except that most of the time I land on blogspam, I am inundated by pop-up dialogs, cookie warnings, ads and miles of empty content designed to make you Just Keep Scrolling or hook you with an auto-play video. Because both of these things keep you on the page longer, which increases their search rankings.

                                                                        This isn’t always quite so bad for tech-related queries, where StackOverflow and its ilk have cornered nearly every result, but try searching for something generic like “hollandaise sauce recipe” or “how to get rid of aphids” or “brakes on a Prius” and you will drown in an unending sea of blogspam.

                                                                        This has been another episode of “What Grinds bityard’s Gears”

                                                                        1. 1
                                                                          1. How closely the page content matches the serarch query

                                                                          Since you put “relevant and useful” in quotes, I’m assuming you feel that a search query matching the page content is not a good signal of whether a search result is good. I’m curious why you think that?

                                                                          Just Keep Scrolling or hook you with an auto-play video. Because both of these things keep you on the page longer, which increases their search rankings.

                                                                          That’s actually not true. Google made a blog post a while ago mentioning that pop-up dialogs (or anything that reduces content accessibility) reduces search rankings.

                                                                          In any case, while I do agree that not all SEO advice is (or has historically been) good, the blanket statement that all SEO advice is bad is also not correct (or fair). Besides, the black-hat SEO advice is slowly becoming more and more pointless as Google gets smarter at figuring things out.

                                                                          1. 1

                                                                            This isn’t always quite so bad for tech-related queries, where StackOverflow and its ilk have cornered nearly every result, but try searching for something generic like “hollandaise sauce recipe” or “how to get rid of aphids” or “brakes on a Prius” and you will drown in an unending sea of blogspam.

                                                                            I feel the pain, but is this less about SEO and more about how certain people have developed business opportunities? SO has largely replaced expertsexchange in search results, but in a way this was one of the founder’s aims that has been mentioned in various places.

                                                                            The StackExchange network of sites has been trying to expand to cover, your example of “how to get rid of aphids”, but it hasn’t yet been successful. There is inertia with getting these sites off the ground and employing people to write quality questions and answers, but this doesn’t align with the community ethos. Arguably, it would be better for the web since you’d get a better experience when you click through search results. I wish there was an easier answer.

                                                                            I don’t see why there couldn’t be a recipe site with the quality user experience you associate with SO. There are however a lot of entrenched interests and competition. People also have a tendency of sharing copyrighted recipes they’ve copied down from friends or family. Incumbents won’t react like expertsexchange to SO.

                                                                      2. 3

                                                                        SEO is like ads on the internet; in theory it’s a good thing, helps people to find relevant content, helps companies to make more profits. But in reality, it’s just a pissing contest who exploits the user most. If a company made some money by using some shady SEO tricks, then we’ll do it 2x more intensively, so we’ll earn some money too. Who cares that the search engine results will be less accurate?

                                                                        1. 1

                                                                          To be honest, try looking up the modern SEO recommendations (black hat SEO is becoming more and more pointless as Google gets smarter at figuring things out). You’ll be pleasantly surprised.

                                                                    3. 6

                                                                      The funny part is that the only cookie used on this site (that I can see) is the cookie that stores the fact that the user accepted the use of cookies :D

                                                                      Also, the law never forced the display of the “cookie wall” for purely-technical cookies (eg: login and such), but only those aimed at tracking.

                                                                    1. 23

                                                                      Even more of a shame is that Apple doesn’t allow other browser engines. So there is little gain in using Firefox on iOS. That being said I also run Firefox on iOS and prefer its UI to Safari.

                                                                      1. 14

                                                                        While I certainly understand that this is annoying—and I think that Apple should allow other browser engines—it is also a somewhat natural consequence of the iOS security model. JavaScriptCore is one of the few processes that has the com.apple.security.cs.allow-jit entitlement, which allows process memory to be both writable and executable.

                                                                        Now that V8 can function in pure interpreted mode (no JIT), it would be great if Apple allowed Blink to be the backend for Chrome on iOS, but it’s relatively unlikely that this will happen. The performance impact would be noticeable. I’m not sure if SpiderMonkey can work in a W^X situation yet or if it would be feasible for Mozilla to swap out WebKit for Gecko in the first place.

                                                                        I would personally never be comfortable jailbreaking my phone—the security implications are significant and the entire community seems to have a relatively laissez-faire attitude about releasing source code and security in general. Checkra1n is not only closed-source but the binary is obfuscated to make reverse-engineering difficult. Luckily, unc0ver and checkra1n both support the newest versions of iOS (assuming the hardware is supported by checkra1n), so it’s not a requirement to lag behind on security updates anymore.

                                                                        1. 22

                                                                          In my opinion, a security model that cuts this deeply into the ecosystem and customisability deserves only criticism. I don’t want to have such a platform for my personal computing needs. Security is nice, but my needs on my own machine come first. A device that is secure but doesn’t do what I want is useless to me. I need root access to make my machine do what I want because that is the only purpose the machine has: To do what I and only I want. I don’t need a machine that does what someone else wants - they should buy and maintain that machine if it serves them! The von Neumann architecture contains a memory that stores data and instructions. I don’t want to go back into computing stone age before von Neumann just because Apple (or anyone else, for that matter) thinks only they know what’s okay to execute. Without these permissions, modern computing is less exciting than the computers that existed 40 years ago.

                                                                          1. 14

                                                                            I don’t want to have such a platform for my personal computing needs

                                                                            Nobody is making you. Contrary to what you appear to be claiming, it’s okay if some people like stuff you don’t personally enjoy. It’s okay if things you don’t personally want exist.

                                                                            I already have a desktop that runs everything, but that comes with it’s downsides - notably, that it runs everything. I sure as hell don’t want production ssh keys or banking passwords on it.

                                                                            Personally, I quite like the option of a secure device. I know the iphone is more secure - not because I’ve read the source, but because exploit brokers are paying $2m USD for a zero-day that targets the latest version, and I’m not protecting anything worth much more than $2m.

                                                                            1. 12

                                                                              Nobody is making you.

                                                                              That is not entirely true. Due to your readiness to relinquish control of your devices, I have to put up with more and more locked down ecosystems. Rooting gets harder as time goes on, not only on iPhones but also on Android devices. Android now has a quite powerful API to detect root and many popular apps just refuse to work when you have rooted your phone. Additionally, you almost always lose your warranty if you root your device. Vendors only get away with this behaviour because you all tolerate it. I ordered a PinePhone because it seems to me like it is the last bastion of free mobile phone computing, but the situation is actually quite dire, the PinePhone software is in beta version and there really isn’t much choice in open mobile phones at all.

                                                                              Contrary to what you appear to be claiming, it’s okay if some people like stuff you don’t personally enjoy.

                                                                              I make no such claim. I don’t care if you like My Little Pony but I care if you like locked down foreign-controlled computing platforms. Think about the consequences of your actions. You vote with your wallet, and if you vote for more authoritarianism, I will get it too.

                                                                              I know the iphone is more secure

                                                                              Frankly, I don’t see the reason why iOS would be any more secure than a properly maintained Linux or OpenBSD installation. The lockdown is largely security theatre and in Apple’s own interest.

                                                                              1. 4

                                                                                I have to put up with more and more locked down ecosystems

                                                                                Or not - as you’ve ordered a pinephone (more power to you - I’m excited to see how that space plays out).

                                                                                Frankly, I don’t see the reason why iOS would be any more secure than a properly maintained Linux or OpenBSD installation.

                                                                                I’m not nearly expert enough in security to weigh in on that front; however, the relative prices for exploits seem like a pretty damn good proxy for how hard a target something is.

                                                                                Given exploits sell for much more on ios, I’m going to default to ‘they cost more to produce because it is more secure’.

                                                                                This appears (to be mildly uncharitable) to be wishful thinking based on your dislike of lockdown (eg “lockdown is bad, therefore it doesn’t increase security”).

                                                                                if you vote for more authoritarianism, I will get it too

                                                                                Honestly? This is actually quite a powerful argument, and I’ll need to dwell on it awhile. Some entities are centralizing power far too much (apple & cloudflare come to mind) - even if they aren’t evil today, who knows what next year will bring.

                                                                                1. 10

                                                                                  Or not - as you’ve ordered a pinephone

                                                                                  For many people, this isn’t an option. Some governments require you to use an app (iOS or Android only) to access government services. So do some banks. If you have money or pay taxes, you may actually be trapped in one of the vendor-control-over-user-freedom ecosystems.

                                                                                  1. 6

                                                                                    Given exploits sell for much more on ios, I’m going to default to ‘they cost more to produce because it is more secure’.

                                                                                    iOS exploit prices recently fell beneath Android exploit prices.

                                                                                    1. 1

                                                                                      Thanks for pointing that out (well worth considering when I’m next buying a phone).

                                                                                      However, this was in reply to

                                                                                      Frankly, I don’t see the reason why iOS would be any more secure than a properly maintained Linux or OpenBSD installation.

                                                                                      Both android (2.5m) and ios (2m) remain significantly higher than a properly maintained Linux or OpenBSD install - an OpenSSL RCE goes for 250k and a Chrome RCE+LPE goes for 500k (less for other browsers).

                                                                                    2. 3

                                                                                      Given exploits sell for much more on ios, I’m going to default to ‘they cost more to produce because it is more secure’.

                                                                                      I doubt that is the only parameter for the price. Popularity almost certainly another factor as well.

                                                                                      1. 2

                                                                                        You seem to be reflecting on this possibility already, but for those who might read this later and need a concrete example of why the popularity of Cloudflare for example might not be the best for the web at large: https://blog.torproject.org/trouble-cloudflare

                                                                                      2. 3

                                                                                        Frankly, I don’t see the reason why iOS would be any more secure than a properly maintained Linux or OpenBSD installation.

                                                                                        The fact that you have to qualify with “properly maintained” is evidence enough: the former offers a more practical form of security for most people than the latter.

                                                                                        1. 2

                                                                                          OpenBSD would drain your phone battery in about 20 minutes. Same with FreeBSD. They’re not designed to keep the CPU in low power states. Too many drivers and applications cause interrupts and wakeups.

                                                                                        2. 1

                                                                                          So where do you keep production SSH keys if not on a PC? Maybe a Chromebook or iPad?

                                                                                          1. 1

                                                                                            In general I think that’s much safer against getting copied away, yeah.

                                                                                            Unfortunately it’s not quite as practical. The desktop has all sorts of advantages, like a good keyboard, a copy of the source code etc.

                                                                                            The security benefits have to be weighed against the risk of prolonging an outage.

                                                                                        3. 13

                                                                                          The issue that you are ignoring is that Apple is developing security to the lowest denominator. It’s not users like you they are trying to protect. It’s the end user that has no idea they need to be protected. Apple has chosen to deeply embed security to protect those users. If Apple gave us a way to turn off the security. That would be used by bad actors to disable these users, who would then accuse Apple of not protecting them.

                                                                                          So while I do wish that I had more freedom, I do appreciate that I don’t have to deal with the trash ecosystem that is the Google Play store. And in this case I am willing to give up some freedom to not have to worry about getting owned by some random websites or store app.

                                                                                          1. 10

                                                                                            The issue that you are ignoring is that Apple is developing security to the lowest denominator. It’s not users like you they are trying to protect. It’s the end user that has no idea they need to be protected. Apple has chosen to deeply embed security to protect those users. If Apple gave us a way to turn off the security. That would be used by bad actors to disable these users, who would then accuse Apple of not protecting them.

                                                                                            That literally is just Apple Apologist. And “We’re sorry, the user is too stupid to own their hardware that they paid for”. Really now?

                                                                                            Fine. If I had bought an Apple phone, I should be able to go into a Apple store and have them provide me root creds. And guess what? They’ll laugh you right out.

                                                                                            So while I do wish that I had more freedom, I do appreciate that I don’t have to deal with the trash ecosystem that is the Google Play store. And in this case I am willing to give up some freedom to not have to worry about getting owned by some random websites or store app.

                                                                                            And with Android, I can install other app store sources, namely FDroid. Others exist as well. Android devices are more mine… Still, with that pesky Google crap.

                                                                                            The one I’m watching is the Pinephone. Real Linux. I’m root, and end of story.

                                                                                            1. 6

                                                                                              That literally is just Apple Apologist.

                                                                                              Not the person your replying to, but from my experience interviewing with their security engineering and architecture team, that is their perspective. Any off-switch is an off-switch that can be socially engineered.

                                                                                              1. 9

                                                                                                Too true. But that social engineering can occur as complex as a callback from a scam banker on the call with your real banker, and MiTM’ing your conversation, to as something as banal as “can you give me your CC#, expir date, and cvv”

                                                                                                I’m not arguing that disabling protections should be easy. But Apple, with IOS, is saying “its impossible, its not your device, go away”. That’s the root of my argument, that keeping away my full and unfettered access is akin to a rental agreement, and not a proper sale.

                                                                                                1. 2

                                                                                                  A genuine question, because the number of times this argument has been had on the internet probably is comparable to the number of devices Apple has sold:

                                                                                                  Do you honestly believe, at this point, that there is anyone left who is persuadable – either to your viewpoint, or to the viewpoint you think you’re arguing with – and has not yet been persuaded?

                                                                                                  And in a larger sense, do you believe that articles like the one at the top of this thread serve any useful purpose? I ask because it just strikes me as saying “It turns out that what Apple claims they do, and what we all knew they do, is in fact what they do”. As such it does not inform, and nor, it seems, does it persuade.

                                                                                                  1. 1

                                                                                                    Yes I honestly believe, even at this point, it is useful. Because “everyone knows” means “today’s lucky 10000”: see https://xkcd.com/1053/.

                                                                                                    1. 1

                                                                                                      I don’t buy it. Anything involving Apple on a tech forum has been guaranteed repetitive flamewar territory for decades at this point. So the idea that there are mass numbers of people on tech forums who would be encountering this for the very first time in any given thread is not plausible to me (except perhaps for the case where the forum in question is demonstrably growing on the order of hundreds of thousands to millions of new users per day or at most per week, which this site is not).

                                                                                                      Or maybe to go with an analogy: I could believe that someone who’d been driving for years might not know what every single possible warning light on the instrument panel means. I would have a harder time believing a claim like “never heard of a steering wheel” or “no idea what a brake is”. Similarly, I could believe someone who frequents tech forums might encounter certain topics for the first time, and might even do so on a regular basis as well-known reposts make the rounds every so often. I have a very very hard time believing that someone who frequents tech forums would never have encountered a flamewar about Apple and thus would be genuinely naîve about them.

                                                                                                  2. 2

                                                                                                    Think of the phone like a Cisco switch/router: you own the hardware, but the firmware/OS is theirs and you cannot sell or redistribute it. They do not have to give you access or tools to replace the firmware/OS either.

                                                                                                2. 2

                                                                                                  You are so deep in the minority of consumers it’s not even a blip on anyone’s radar

                                                                                                3. 2

                                                                                                  I agree. So many people’s lives are on their phones now, it would be irresponsible not to enforce as rigorous as a security regime as possible.

                                                                                                  1. 6

                                                                                                    But that’s not Apple is selling. Apple is selling hardware. Keyword is “selling”.

                                                                                                    If you want a dumb terminal or a managed end-user device, then it needs to be sold as a rental or managed device, and not a sale.

                                                                                                    1. 10

                                                                                                      If you want a dumb terminal or a managed end-user device, then it needs to be sold as a rental or managed device, and not a sale.

                                                                                                      why? People seem to be happy to purchase the phones and not worry about the operating system at all. I’m sure people would also buy a iPhone subscription - but that’s in the hands of the business analysts from Apple.

                                                                                                      To me it looks like you’re projecting your expectations from soft- and hardware vendors onto other people.

                                                                                                      1. 19

                                                                                                        Prior to software being incorporated into all sorts of things, things you bought were yours.

                                                                                                        If I wanted to use a shovel to shovel dirt, thats my business. Same for cow manure. Same for scooping hot asphalt. And I can also use a shovel for ‘non-shovel-intended’ things, like using it as a prybar. And if the wooden handle broke, I could replace it. And I can sharpen the blade as I choose.

                                                                                                        With software, the stuff we bought is controlled by someone else. Its no longer ours, but instead mediated by a 3rd party, whom usually isn’t in your interests. I look at Tesla cars, Apple phones (and creeping to their laptops), all ranges of IoT crap, John Deere, Sonos speakers and the drm timebomb, and more. InternetOfShit on twitter focuses on the IoT side of things… but this realm dwarfs IoT.

                                                                                                        To me it looks like you’re projecting your expectations from soft- and hardware vendors onto other people.

                                                                                                        No. I’m just tired of having ownership of my stuff being whittled away with software, API, and website lock-in. “Sorry, you bought it but you can’t do X because we didn’t approve it.”. And I would dare-say that most average (non-IT) people aren’t aware of it, UNTIL it bites them in a non-intuitive and terrible way.

                                                                                                        1. 1

                                                                                                          If I wanted to use a shovel to shovel dirt, thats my business. Same for cow manure. Same for scooping hot asphalt. And I can also use a shovel for ‘non-shovel-intended’ things, like using it as a prybar. And if the wooden handle broke, I could replace it. And I can sharpen the blade as I choose.

                                                                                                          Shovels don’t exist in a world where people can use the design flaws in other peoples’ shovels to automate fraud.

                                                                                                          1. 8

                                                                                                            You took the argument I was making in pretty bad faith there.

                                                                                                            The more that software takes over stuff, the less ownership we have in it. My repair-ability is nigh 0 with the further locked down platforms. I’m relegated to running cracks from shady sites in the hopes I can free my hardware/software.

                                                                                                            While fraud is a important thing to stop, locking down platforms only serves to further a monopoly at its root. Fraud is only a secondary effect - captive users locked into a platform is the primary goal. And its no wonder why they don’t want to ‘let’ users have the freedom they should have had.

                                                                                                            1. 2

                                                                                                              People also still fall for all kinds of fraud despite that security model, and malicious apps still get past the app stores review.

                                                                                            2. 7

                                                                                              Yes I know. I really miss my extensions. But having sync is a bliss and at least something, better than nothing.

                                                                                            1. -2

                                                                                              Tag suggestion: “show” instead of “programming”. Also seems like a low-effort post.

                                                                                              1. 19

                                                                                                Added show, but the site won’t let me remove programming.

                                                                                                I certainly spent many hours on this post, so not sure why you think it’s low-effort? :)

                                                                                                1. 5

                                                                                                  We have annual battlestations threads. You just missed the last one. You can, of course, still comment there.

                                                                                                  And I suggest your tags match them: practices

                                                                                                  1. 10

                                                                                                    Thanks! I’ll keep an eye on the 2021 version then, I guess.

                                                                                                    Added a comment to the 2020 thread, too, and updated the tags. Thanks for the hint

                                                                                                  2. 1

                                                                                                    Everyone has a desk and can write about it, not everyone has your knowledge of Objective-C or can write about that.

                                                                                                    1. 18

                                                                                                      But I found it a thoughtful post that not only listed hardware, but also explained why it’s beneficial. It’s a good read.

                                                                                                      1. 8

                                                                                                        true, everyone has a desk but the post also has

                                                                                                        Window manager: i3 It won’t be a surprise that I am using the i3 tiling window manager, which I created in 2009 and still maintain.

                                                                                                        And the projects written in Go, including the router7 or debian code search.

                                                                                                        I would say that the title does a tiny bit disservice to the content in the post itself.

                                                                                                        1. 2

                                                                                                          Being the writer of i3 makes the point even stronger. Imagine the interesting posts he could write about i3 and window managers. Instead we get a post about what he has on his desk.

                                                                                                          How does writing i3 make his desk any more interesting? He didn’t write i3 because his desk was set up a particular way.

                                                                                                          1. 1

                                                                                                            But even then the “content” is just a list of products or programs the author has bought, used or developed. There’s nothing to really be learned or gained from such a list.

                                                                                                            1. 8

                                                                                                              i learned a few things from the post though.

                                                                                                              1. Multiproject management through emacs- org mode.
                                                                                                              2. serialize thoughts by writing them down on a physical notebook
                                                                                                              3. authors reasons for choosing
                                                                                                              • Go
                                                                                                              • Single monitor
                                                                                                              1. 3

                                                                                                                You needed the developer of i3 to tell you that you can write things down in a notebook?

                                                                                                                1. 7

                                                                                                                  i mean, i like learning about people’s workflow. Like i learned about bullet journal from a lobsters thread in 2016 and it was a game changer for me.

                                                                                                                2. 2

                                                                                                                  Let’s be real, you’ve heard all this stuff before and know it well: This isn’t the first time you’ve seen “serialise thoughts by writing them down” or “Go is great because of x”.

                                                                                                                  1. 12

                                                                                                                    If you recognized this as a “one of many” posts then feel free to skip it, but it is certainly not low effort and apparently did interest quite a few of us.

                                                                                                      1. 8

                                                                                                        I found this new ActivityPub based microblog and wanted to share it, despite its early development stage, because it does mention the runyourown.social philosophy and because the author cares about easy deployments, something other projects in this space neglect. There’s more about the approach in the Readme: https://github.com/alexwennerberg/gourami/blob/master/README.md

                                                                                                        1. 25

                                                                                                          Deno is worth checking for people that want JS/TS but don’t want Node’s design flaws. Comes from Node’s original creator.

                                                                                                          TSC must be ported to Rust. If you’re interested in collaborating on this problem, please get in touch.

                                                                                                          For once, I agree with a RIIR.

                                                                                                          1. 7

                                                                                                            I’m excited for this as well. See also: https://github.com/swc-project/swc

                                                                                                            1. 1

                                                                                                              RIIR

                                                                                                              I don’t understand why. Rust does not seems particularly suited for the task.

                                                                                                              1. 2

                                                                                                                For which reasons do you believe that to be the case?

                                                                                                                1. 3

                                                                                                                  A compiler needs to do a lot of symbolic manipulations.

                                                                                                                  More often than not, especially with a non-trivial type system such as typescript one, these implies manipulating directed acyclic graphs. Or even worse, arbitrary directed graphs if the processed language has a strong enough notion of recursion. Reasoning with lifetime and sharing of graphs is notoriously difficult. Even with logic stronger than the borrow model of Rust, such as separation logic. This alone is very annoying. If the graphs are local enough, as is the case with CFGs when doing intra procedural analysis, you can just keep allocating and release everything with when done with the function. But type systems not always lend themselves to local analysis. Then, like C/C++, Rust code tend to be efficient if computations have a regular structure (e.g. traversing arrays), not chasing pointers with hardly predictable lifetimes. Which again, is often the case when doing symbolic/static analysis.

                                                                                                                  So two of “Rust selling points” are not really applicable, quite the opposite.

                                                                                                                  1. 8

                                                                                                                    I firmly believe that Rust today is the best language for compilery tasks, based on two observations:

                                                                                                                    • The language for writing compilers is ML
                                                                                                                    • The language of choice for production-ready compiler implementations is C++

                                                                                                                    Rust, as an ML in C++ clothing, combines the relevant benefit of the two.

                                                                                                                    I specifically disagree that “it’s hard to work with graph data in Rust” criticism is relevant. Even in a GC language, representing complex graph as a literal graph of objects is often inconvenient/inflexible, and you would use arena and indices, just like in Rust.

                                                                                                                    My anecdotal experience tells me that Rust is a more convenient language than Kotlin for compiler front-ends.

                                                                                                                    I think I can get behind an idea that a sort of “idealized ML” would be a better language to implement a compiler in, but I think Rust’s quality of implementation, today, in practice, blows all existing functional languages out of the water.

                                                                                                                    1. 2

                                                                                                                      And if you don’t care about a C++ clothing, you can just use ML. Rust compiler used to be fast when it was written in OCaml. ;)

                                                                                                                      1. 1

                                                                                                                        … and way less features and checks…

                                                                                                                        1. 1

                                                                                                                          About C++ clothing and quality of the implementation :-) For example, Windows support and parallelism are just two major benefits of Rust in comparison to OCaml, which are mostly unrelated to language per se.

                                                                                                                      2. 2

                                                                                                                        Being honest, anything but JS would be an improvement in this task.

                                                                                                                        I’m okay with Rust because being already used in Deno and the community has a considerable inertia.

                                                                                                                        Your points seem reasonable. Would love to see, in general, web-related compilers/transpilers written in more efficient stuff than JS

                                                                                                                        1. 1

                                                                                                                          Working on a compiler in Rust. It doesn’t seem to be an issue.

                                                                                                                  1. 2

                                                                                                                    !$ has been my favorite shell “command” lately. It inserts the last argument of the previous command. So, if I blame a file:

                                                                                                                    git blame this-file
                                                                                                                    

                                                                                                                    And then I want to edit that file:

                                                                                                                    vim !$
                                                                                                                    

                                                                                                                    It’s a decent time saver for me.

                                                                                                                    1. 7

                                                                                                                      Or use Alt-.

                                                                                                                      1. 3

                                                                                                                        I think I have new favorite.

                                                                                                                    1. 13

                                                                                                                      I would never have paid the Windows Tax on my Thinkpad (X395), if I had an alternative. This is an alternative. This is great news.

                                                                                                                      1. 6

                                                                                                                        The article never says that the tax will be deducted though. I’m presuming (and hoping) that they would, seeing as it would be the ethical thing to do, but from a money-making perspective an operating system selector with no price difference would make more sense.

                                                                                                                        Here’s hoping.

                                                                                                                        1. 9

                                                                                                                          I’m assuming lots of people would still prefer that money went to Lenovo instead of Microsoft.

                                                                                                                          1. 3

                                                                                                                            The question in my mind is always whether Microsoft’s contracts with PC vendors require the money to go to them whether or not the customer chooses Windows or something else.

                                                                                                                            1. 1

                                                                                                                              I think they are not allowed that anymore here in the EU.

                                                                                                                          2. 4

                                                                                                                            The article never says that the tax will be deducted though.

                                                                                                                            Presumably, Red Hat is doing this for monetary gain. So if the “tax” went to Red Hat instead of Microsoft, I’d be a happy man indeed.

                                                                                                                            1. 9

                                                                                                                              Lenovo and IBM have been corporate BFFs for a very long time, it’s entirely likely that this is a joint venture with benefits to each party and no actual money changing hands.

                                                                                                                              Anyway it would be weird if RH/IBM got any money for this since Fedora is a community project. They could certainly charge for RHEL but that isn’t mentioned here.

                                                                                                                              1. 2

                                                                                                                                Well, the whole ThinkPad line was born at IBM, I’m not surprised.

                                                                                                                          3. 3

                                                                                                                            Just curious - what is the battery life?

                                                                                                                            1. 2

                                                                                                                              Like your average laptop user, I seldom actually use it in battery, but I do a full cycle (or close to it) on battery once in a while. 5 to 10h depending on usage. Arch Linux with i3 wm.

                                                                                                                              I mostly blame the browser… I’ve got several windows with hundreds of tabs open at all times. Mostly per-topic documentation. Browsers use a lot of cpu time even when not looking at them these days.

                                                                                                                              1. 2

                                                                                                                                Browsers are half the OS these days, from the users perspective. And for your average user, likely not found here among lobsters, it’s way more then half. (In my opinion).

                                                                                                                                But that’s not why I’m replying. I’m curious as to how can you live and why do you live with hundreds of tabs? When’s the last time you opened, say, 74th tab from the right? Did you try to find another workflow or are you happy with what you have?

                                                                                                                                1. 1

                                                                                                                                  I’ve gone through all sorts of workflows, but this is what works for me.

                                                                                                                                  Lots of windows for different topics. Switch windows (which are themselves tabs on i3), switch topics. Most of them are full of references.

                                                                                                                                  I actually do cleanup passes, when I finish something. The windows shrink or fatten as needed.

                                                                                                                                  And of course, I do use an extension to detect/zap dups.

                                                                                                                                  Current tab count is 221.

                                                                                                                                  1. 2

                                                                                                                                    Cool, thanks for the reply. It’s interesting and fascinating, but when you think about it (well, when I read your explanation of it), it’s not that you hold 221 things in your head, you just know the top-level topics, and then as you work on a topic, you can move among tabs.

                                                                                                                                    I still don’t think I could do it. Probably because I don’t have such needs.

                                                                                                                                    1. 2

                                                                                                                                      Organizing tabs used to be easier, too. I remember firefox tab groups, back in the day.

                                                                                                                                      There might be some extension which could help save/restore entire windows full of tabs, rather than keeping all these windows open. Investigating what’s available in tab organization extensions has been on my tasklist for years, but I’ve procrastinated this far.

                                                                                                                          1. 1

                                                                                                                            cool stuff! might have to work this into my normal git workflow, or maybe use it for showing off a repo. Do you have any interest in putting this on any package repository like brew or the AUR?

                                                                                                                            1. 0

                                                                                                                              like brew or the AUR

                                                                                                                              since I don’t use Arch Linux or macOS, no.

                                                                                                                              1. 1

                                                                                                                                Homebrew does work on Linux officially