1. 4

    I think it’s a cold shower we FOSS lovers should have when approaching certain proprietary software; it’s not all sunshine and rainbows: http://itvision.altervista.org/why.linux.is.not.ready.for.the.desktop.current.html

    I personally would love to get my hands on a Windows 10 LTSC release.

    1. 4

      That page is the biggest load of FUD I think I’ve ever seen. A lot of the things listed there are simply untrue, or completely miss the whole point.

      ‘Linux’ is not comparable to ‘Windows’. You shouldn’t say ‘there’s one way to do X on Windows but there are five ways to do X on Linux so Windows is better and more consistent’. Look at individual distributions. A distribution is an operating system. Windows is an NT distribution, essentially. Look at some KDE-based distro then make the comparisons.

      Look at this crap:

      Few software titles, inability to run familiar Windows software (some applications which don’t work in Wine - look at the lines which contain the word “regression” - have zero Linux equivalents).

      Questionable patents and legality status. USA Linux users cannot play many popular audio and video formats until they purchase appropriate codecs.

      A small number of native games and few native AAA games for the past six years

      There’s no concept of drivers in Linux

      There’s a lot of hostility in the open source community.

      The USA’s laws are shit, Linux is unpopular, something completely made up, and a complaint about the community. Wow, what a load of fantastic constructive technical issues with Linux!!!!111

      1. 3

        The LTSC build does not support very recent hardware, so if you own an AMD Ryzen 3000 something CPU, then you will have no luck running this version of windows.

      1. 18

        RIP. The last good version of Windows, as opposed to an ad platform strapped to a program loader. So much for “if it’s free, you’re the product”; if you pay for a Windows device, you’re still the product.

        1. 6

          Free upgrade from Win7 is not available, so you have to pay at least $200 for the chance to become a product if you want to keep using Windows on your old device as well.

          1. 6

            Free upgrade from Win7 is not available

            Officially, it isn’t. However, the servers will still happily churn out digital licenses if you do an in-place upgrade with media you can freely download from Microsoft themselves.

            Are you in violation of copyright when doing this? Maybe, pretty hairy question when you think about it. Is Microsoft going to do anything about it? Given they’ve had a few years to, probably not.

            1. 4

              It is important to note this is not “free” it’s extralegal price discrimination. It’s akin to releasing a torrent of your own game on pirate bay to quality control your pirated copy, so that people who are willing to “break the law” can have it for free, but everyone else must pay. The hope being that the people who broke the law to play it are excited enough to talk to others about it. Economics is a complex beast that often has little care for human laws.

              1. 1

                To this point, pirated copies of Windows are probably riddled with pernicious viruses.

                1. 1

                  You usually just install DAZ loader.

            2. 3

              It still is AFAIK - and there are so many loopholes (i.e: Windows 7 keys can be used to activate 10, a11y based free upgrades, etc.) that there’s no real reason to buy a Windows 10 license if you already have a Windows 7 license.

              1. 1

                can’t you keep using Windows 7?

                1. 1

                  so you have to pay at least $200 for the chance to become a product …

                  This is exaggerated, a Windows 10 Pro Retail version costs 100€ on amazon and you can get a valid key for like 3$ on ebay.

                  1. 3

                    A valid key doesn’t necessarily mean a legit one.

                    1. 1

                      Interesting. Why the prices on store.microsoft.com are so much higher?

                  2. 1

                    I don’t understand - can’t most of these ads be trivially removed with a bunch of end user visible settings?

                    1. 4

                      Having to change settings in five or more different places to remove ads from a paid OS is much less trivial than it should be, especially in the face of glaring usability issues that could have benefitted from the organizational resources that were invested in promoting shovelware instead.

                      1. 3

                        Ah the age old fight between the bottom line and merchantability. It’s eternal, at least until money goes away and we transition to some kind of post scarcity [U/Dys]topia :)

                        Honestly, and I know I’m a minority view here, I think Windows 10 is by far the most usable Windows version ever. They’ve actually finally added accessibility features that make it usable to me as a partially blind person.

                        1. 2

                          I’m glad to hear that accessibility has improved significantly with Windows 10, thanks for bringing attention to that. I think there’s a less objectionable middle ground between ubiquitous advertising and Star Trek than what we have right now, but at least this revision of the OS isn’t entirely a regression.

                          1. 1

                            To be clear I totally agree that the ads in Windows 10 are an affront and we should all strenuously oppose it. I’ve personally given them quite a bit of feedback on the topic, specifically around making disabling it all permanently easier.

                            But for me its existence, especially since it can be turned off, doesn’t get in the way of my using the very stable and usable work environment Windows 10 + WSL represents.

                      2. 1

                        The average end user struggles to complete their daily tasks let alone audit every setting screen to remove tracking he or she might not even know exists.

                        1. 1

                          Does the average user care though? In most cases the answer is no.

                          I’ll warrant that the morality of adding such advertisements and tracking to a paid product with a non trivial consumer cost is questionable, but, I suspect we’d need a fairly revolutionary change in the way our industry is regulated to get any traction on changing that.

                          1. 1

                            The average user doesn’t know that they can care, because they’re so numb from having their software change out from under them all the damn time.

                            1. 2

                              Speaking as a personal privacy advocate who has been trying to explain things like software freedom and the importance of being able to create privacy first computing environments, even when you invest huge amounts of time in helping them understand, my anecdotal experience says they really, REALLY could care less.

                    1. 1

                      All the talks of the chaos communication congress are available on media.ccc.de where they can be downloaded as well.

                      1. 2

                        I’m not into Python, but VS Code works good for Golang, so it may also work well for Python?

                        1. 4

                          Did you read the question? The author says that they already tried to use vscode:

                          Have tried vscode with python support but find it less powerful and equally slow as Pycharm

                          Nonetheless, I think that the Python support of VSCode is quite good. The Python Wiki has a list of IDEs where Spyder could be an alternative to Pycharm.

                          1. 1

                            Oh yes, I overlooked this sentence. But in my experience VS Code is quiet fast. Maybe it gets slower when you have a large project? Also you may can disable some addons to speed it up. (f.e. the indexing was producing a lot of load for me until I changed my config to exclude some directories with temporary data)

                          2. 1

                            This is what I would recommend as well. I think most of the good stuff from Pycharm can be emulated in VSCode. My second recommendation would be to learn wither emacs or vim.

                          1. 6

                            An old HP LaserJet 2200dn with double paper trays, I have a few of these around as well as a 2100n. These are fairly sturdy, fast enough, have a power-saving mode (i.e. the fuser turns off after printing) and take 5000-page toner cartridges. As long as you keep Thor away (…I had two of them blow up by lightning strikes, repaired them, they still work…) they’ll keep on printing if you feed them paper and a new cartridge every now and then.

                            1. 1

                              I owned an HP 2605dn color laser printer because those devices were thrown away some years ago. HP forgot to install a filter that caused the lens of the magenta toner to get covered with dust after some months. The fix was very easy, and after attaching a piece of a dust cleaner bag on top of the air inlet the printer worked fine for years. At least until I used a refill toner, after that it died because the cheap toner leaked. My recommendation, do not buy the cheapest refill toner you can get.

                            1. 25

                              Queue theory is so nice for understanding almost everything in our machines. Most of my advice in conversations with async library authors boils down to “use unbuffered channels and enforce a global maximum number of requests that your tcp acceptor pauses for when the number is reached, so that your tcp backlog fills up and your load balancer can do its job and send traffic elsewhere or provide feedback to a scaling system”.

                              One reason I’m very much in-favor of just using fixed size threadpools for rust services instead of any use of async is that it makes that max number of requests just the number of threads you picked, with no need for complex backpressure mechanisms. I feel like async is really only appropriate for load balancers, as far as its use in rust goes. When you’re running real workloads that do stuff on the CPU, context switching costs disappear into the noise, even post meltdown/spectre mitigations that exacerbate their costs (but we’re still better off than in the c10k days).

                              1. 13

                                This is great general advice, not only in Rust. Async should be understood as a niche solution to specific problems, not a default, general-purpose approach.

                                More fundamental truths about queueing, which I find myself returning to over and over: https://apenwarr.ca/log/20170814.

                                1. 1

                                  Thank you for the link, the article is quite dense but the guidelines given there are very helpful!

                                2. 1

                                  Thank you for this explanation. I started working on a tcp client and I couldn’t figure out why/if I should use async. I felt like I should cause I have experience mostly in node.js but it wasn’t making sense (at least right now) with rust.

                                1. 1

                                  I am there and will likely stroll around the whole time. There will be a lot of soldering workshops, e.g. SMD assembly for beginners, and they are very quickly sold out, so if you want to attend some of the workshops try to register today (here c3nav).

                                  edit: formatting

                                  1. 2

                                    I’d be happy to answer any questions you have. We’ll definitely follow up with more blog posts as we go along.

                                    1. 3

                                      Thank you for writing the article.

                                      I have two questions:

                                      1. Why did you decide to migrate all APIs to GraphQL?
                                      2. How do you generate optimal database queries from a GraphQL request? ¹

                                      ¹ I only have superficial knowledge about GraphQL, so my questions could be a bit naïve.

                                      1. 3

                                        Good questions!

                                        First of all, I’ll give a shoutout to Michael Nygard for his documenting architecture decisions blog post. I didn’t have to create my own answer to the question of migrating to GraphQL. I was able to just look up the architecture decision record (from September 2017).

                                        We saw the benefits as:

                                        • Data from GraphQL queries is typed, which can help the front-end operate more reliably on it. Our REST endpoints also have type information, but we aren’t currently exporting this information to the front-end.
                                        • GraphQL queries can collect a variety of data in one request. This should improve performance since the same data might take multiple REST API calls to fetch. Also GraphQL queries can omit unneeded data.
                                        • Performance can also be improved since that web front-end client Apollo does caching, and this can help avoid repeated calls to the backend for data.
                                        • Manually testing GraphQL queries is easier than testing REST APIs because of the built-in query explorer.
                                        • Front-end developers can make some changes to queries without requiring any backend work to provide extra data.

                                        and the drawbacks as:

                                        • It can be harder to debug GraphQL queries when implementing them, since by default errors are handled rather than causing a traceback. We may want to explore improving the debugging story.
                                        • For one-off queries, it may be easier to implement a REST endpoint, because to implement a GraphQL query involves building classes that describe the types of the different parts of the response rather than just describing the signature.
                                        • Our current implementation of GraphQL makes us reliant on Apollo and Graphene. Both libraries have quirks that have to be learned and worked around.

                                        As far as generating optimal database queries, GraphQL server implementations generally have the idea of writing a “resolver” which knows how to look up entities in the database. Since GraphQL’s schema is a graph, that means you could have an entity that’s an “invoice” and you could ask for a specific invoice by ID and request its line items (which are each distinct entities as well). In an RDBMS, there’s a normal 1:many relationship between invoice and line items, and the resolver would be able to collect up all of the line items with a single query.

                                        Generally speaking, you can design your GraphQL schema to make lookups reasonably efficient for whatever kind of database tech you’re using. (If you’re using a graph database, it becomes really natural, I should think. We’re not, though.)

                                        I’ll note that our new GraphQL setup is more complex because of federation. Looking up entities in our datastore doesn’t change, but the queries themselves go through a query planner which distributes parts of the query to different services.

                                    1. 12

                                      It seems like I’m the only here whose $HOME looks like a junkyard.

                                      1. 5

                                        Mine is a junkyard too. It (the /home partition) is also (relatively) small at 15gigs.

                                        Instead I keep a separate partition (/mnt/awal/) all clean and organized, and then symlink/source a few files and directories back into home. I find that this conveniently allows me to separate machine-agnostic things from machine-specific.

                                        1. 3

                                          No, you’re not alone. The only folder I create besides the usual XDG user directories is ~/code, for /bin there is already ~/.local/bin. In my humble opinion, micro managing dotfiles and $HOME subdirectories is plain procrastination (which is not a bad thing per se).

                                          Edit: typo.

                                        1. 3

                                          I think one important thing is missing in this article, namely what RiiR means (it’s rewrite in Rust).

                                          1. 1

                                            The second ‘i’ stands for “it”: Rewrite it in Rust.

                                            It’s a bit of a meme (and not entirely complimentary of the Rust Evangelism Strike Force).

                                          1. 12

                                            Everyone who is interested in make(1) should check out the (superior) mk(1), a successor written by the original author, Andrew Hume, after 20 years of experience and use.

                                            There’s a good paper on it here http://www.vitanuova.com/inferno/papers/mk.html

                                            And there’s more on the cat-v website

                                            1. 7

                                              I’ve been using mk for my personal publishing workflows(and some JavaScript) for the past year or so. There’s a nice golang port of mk if it’s not in your system packages: https://github.com/dcjones/mk

                                              1. 2

                                                There’s also remake which has some nice extras, e.g.

                                                $ remake --tasks
                                                build
                                                fmt
                                                lint
                                                releases
                                                test
                                                test-integration
                                                test-memory
                                                todos
                                                update-version
                                                upload-releases
                                                vet
                                                

                                                Update: typo

                                                1. 2

                                                  Actually there are other more superior successors, called GNU Make and BSD Make. Both are pretty capable, and portable!

                                                  1. 9

                                                    Actually there are other more superior successors

                                                    [citation needed]

                                                    GNU Make is what I was referring to as the older version, it outright imports many of the problems that make(1) has including flaws that encourage bad Makefile usage.

                                                1. 19

                                                  I’m torn on this kind of thing. To be honest, I personally hate writing Go; it takes far more typing and far more boilerplate to get anything done than in literally any other language I use, and for dubious at best benefits. But when it comes to quickly grabbing and modifying someone else’s code, I frequently look for Go versions, because I know I’ll be able to dive in and start making changes extremely quickly.

                                                  I think that’s the real split brained reaction to Go in a nutshell: the restrictions that make me more productive diving into a random codebase slow me way down when I’m working on writing meaningful new code myself. This article is really hitting on that divide. I’m still torn on whether the trade-off is worth it.

                                                  1. 14

                                                    For any nontrivial project, where there are multiple people working on the same codebase over several years, virtually every developer will spend much more time reading other people’s code than writing their own. That’s where Go shines; in that respect it’s the opposite of languages like Python, Perl or Ruby, which are pretty easy to write but much harder to read when working on a large codebase.

                                                    1. 17

                                                      I find Go harder to read. Every for loop must be inspected to know if it’s a map, filter or reduce. Error handling obscuring the real work everywhere. It’s tedious.

                                                      1. 9

                                                        I actually disagree with that, at least in part. On a single codebase, or even a single framework, achieving Go’s level of readability by simply enforcing coding standards is not difficult. Rails is largely in this bucket: give me a random Rails app, and I can usually get oriented in just a minute or two. And Mercurial is good example of project in this bucket: I know exactly where to go to add or change functionality, and I know exactly how to write it to match the surrounding well-enforced coding style. These are high-level languages with rich abstractions.

                                                        Where Go is different is that the style and code layout is generally standard for the entire ecosystem. But I’m not usually jumping between random parts of an ecosystem; I spend the overwhelming majority of my time in just a project or two. So I’m not convinced that giving up so much flexibility for being able to navigate around a language ecosystem is necessarily worth it, compared to just tight linting and consistency within a framework or project.

                                                        [Edit: or a short, better way I could it: I am 100% on board with optimizing for readability to a point, but optimizing for readability at the expense of writability when your target is just one project, or even just one kind of project, will result in a much richer language than when you optimize for any project. I strongly support the first, but am not sure about the second.]

                                                        1. 3

                                                          I mostly agree with the legibility of Go code others write, though I have to say that error handling stuff in particular looks like line noise to me.

                                                          It reminds me of reading C code, where your business logic ends up being intermingled with memory management of all things.

                                                          But at least you know what’s going on on each line in Go (no chance for that in C, esp with fancier macros)

                                                        2. 10

                                                          To me it’s an extraordinarily nice language to get paid to use in a very large codebase with a very large team and substantial delivery pressure. Reviewing pull requests is easy, reading the code is easy, testing it is easy, the artifacts you produce tend to have good performance characteristics especially for a language with GC, there are hardly ever any surprises. There is the boilerplate (although I don’t think it’s any worse than idiomatic corporate Java), and the lack of features, and that is the tradeoff. Whether it’s worth the tradeoff will depend on where you work, imo. I am extremely happy writing it for work where I work now. If I were working for a 5 person startup trying to crank out an MVP for a mostly-CRUD app, it would be a ridiculously inappropriate choice. I don’t think I’ll ever use it for any personal projects (I’d rather use a language I find interesting as a language, something like Rust, or Python, or Haskell, etc), and that is fine also.

                                                          1. 6

                                                            This matches my experience, and I’m conflicted myself. I think I lean towards the Go philosophy, because I’ve historically spent a lot more time doing maintenance than new development. But I also get frustrated whenever I sit down to write something new in Go because it feels just a bit tedious…

                                                            1. 3

                                                              I think there is nothing wrong with the philosophy itself, it’s just that Go is a terrible execution of it – a fact many people are unable to see, because Go just doesn’t have many competitors in the not-super-complex section of programming languages.

                                                            2. 4

                                                              I think we can get some of those benefits in more powerful languages if we restrict coding style to something straightforward for all cases except those where power helps. Tricky to get people to do, though.

                                                              1. 4

                                                                easier if you also mandate that no code can be checked in without review, and that a reviewer citing the style guide always has the last word. that way if you want a style guide exception you have to convince the reviewer, and in my experience the “convincing” usually takes the form of extensive comments explaining your non-straightforward code.

                                                                1. 3

                                                                  I definitely like code review. Using it to reduce non-straightforward code sounds good to me! :)

                                                              2. 0

                                                                … it takes far more typing and far more boilerplate to get anything done than in literally any other language I use,…

                                                                I do not know what languages you usually use but this is exactly the opposite from what I experience when writing Go. The web services and command line tools I wrote in Go are vastly smaller than a comparable Java service and almost as dense as one written in Python.

                                                              1. 3

                                                                I am using IBM Plex for my Desktop and editors/terminals (have used Fantasque Sans Mono before).

                                                                Update: typo

                                                                1. 3
                                                                  1. That rm behaviour sounds like a feature of a snapshotting filesystem.

                                                                  2. External monitors work on macs as well as better than on even Windows. Linux is still a bit of a joke on this front.

                                                                  3. Homebrew?

                                                                  4. Hardware compatibility is not quite as horrible as Linux of 2000, but I agree that Apple is not (and has never) been amazing with this. I haven’t had any trouble though, but I don’t tend to use external hardware that much.

                                                                  5. Technical support… hmm. I’ve submitted a bug report to Apple and soon got a response that my bug report was a duplicate of another and that it was under work and available in the next version. That was an ok experience.

                                                                  6. “It is very difficult to find a laptop with more than two USB ports.” Hilarious bullshit.

                                                                  7. Advocate behaviour. Yeah, countering internet crap with obvious facts means I’m practically fantasizing about zombie Steve in my bed.

                                                                  Said fanboys are condescending elitist hipster latte web site designers.

                                                                  I don’t drink lattes! Nor design web sites!

                                                                  edit I’ve been downmodded -5 for incorrect, -1 troll. Now, I fully understand the troll downmod, but the incorrect mods are … well… incorrect :) I mean, I realize this was under the “linux” tag so most people reading are opinionated, but you can be opinionated without being wrong.

                                                                  1. 6

                                                                    External monitors work on macs as well as better than on even Windows. Linux is still a bit of a joke on this front.

                                                                    OK, how? Since I have a perfectly functional external monitor and I’m using Linux, please be specific.

                                                                    Advocate behaviour. Yeah, countering internet crap with obvious facts means I’m practically fantasizing about zombie Steve in my bed.

                                                                    This is all about perception. It’s also about some people wanting to win, and if they can’t win with facts, they can win by making you out to be ridiculous.

                                                                    1. 3

                                                                      I can answer this. I am assuming external monitor is what laptop users call having more than one monitor. Please ignore this entire post if it is in fact something completely different. I dual boot Win10 and Mint (Ubuntu in green) and I both have major issues with my dual monitor setup. My larger main monitor is plugged into the second port of my graphics card because the smaller one only has dvi. Most software makes the assumption that the main monitor is on port 1 and that the monitor on port 1 is larger and higher resolution.

                                                                      Windows often forgets which monitor an application is displayed in, sometimes in the middle of using that application. Some applications when running in full screen mess with the resolution of the screen buffer of the other monitor making the second monitor unusable while they are running.

                                                                      Linux is way worse. You can’t do anything without ARandR installed and even with that: Almost all applications start in the secondary monitor. Many applications (games) have their maximum resolution settings set at the resolution of the smaller monitor and can not be increased. Running a full screen application in one monitor and a video in the second monitor stutters and lags massively if the resolution of the fullscreen application is higher than the second monitor. Plus all the issues that effect windows. Some streaming video players only fullscreen to what they think is the secondary monitor. Some games switch to what they think is the primary monitor when fullscreened. If a monitor has a fullscreen application running at a non-native resolution, the position of gui interaction boxes and visual gui elements are offset from each other, sometimes by a significant distance.

                                                                      If macs dont have all of these issues then the claim that they handle this better seems reasonable. I put the issues on linux down to game developers (90% of these complaints don’t happen/matter if you aren’t a gamer) and the generally young age of linux gaming support. I am confident in a couple of years the problems will be resolved. I am not confident microsoft will ever resolve any problems with their operating system, and I don’t know anything about apple.

                                                                      1. 2

                                                                        I can answer this. I am assuming external monitor is what laptop users call having more than one monitor.

                                                                        Oh, sorry: That isn’t a Linux thing, that’s an “I use a laptop as my daily system and I forget that desktop machines still exist sometimes” thing. Yes, I have a second monitor hooked up to my laptop.

                                                                        And I don’t have the primary/secondary monitor confusion because of that: My main monitor is the one attached to the case the CPU sits in, so there’s no possibility of confusion there, even for software. My system handles two monitors with different resolutions fine, and my second monitor is even VGA; heck, it’s an Admiralty Overseas Corporation monitor from before the abbreviation AOC had any meaning in the world of national politics. It’s a cheapie picked up at Walmart, not one I carefully selected after looking at a page of which monitors work well with Linux, and it works exactly as well as any cheap VGA monitor.

                                                                        Thanks for your perspective, and I hope everyone gets where I’m coming from, too.

                                                                      2. 3

                                                                        External monitors can be a pain with Linux, especially when you disconnect the cable (e.g. HDMI) when the Laptop is in standby with a closed lid. This works sometimes but often it won’t automatically switch back to the integrated laptop display and you’re left with a blank screen.

                                                                        1. 1

                                                                          OK, how? Since I have a perfectly functional external monitor and I’m using Linux, please be specific.

                                                                          Plugging in a 4K monitor on different desktop environments can be harrowing depending on the Desktop Environment or even version of DE you’re on. Do I have to do weird workarounds to get fractional scaling? Does it only work with native apps? Do I get weird blurry windows or random graphical corruption If I use said fractional scaling? Will I get strange results if only one of the screens is HiDPI? The answer to at least one of these is always “yes” right now. On Mac, I plug in and pick the scaling, even on an eGPU.

                                                                          My second example is using an AMD card to hook up to a 4K TV @ 60hz. No combination of distribution, driver, or EDID hacking could get this to work, even with two different cards at different times (RX 580, Vega 64). The same setup and cards worked fine (4K @ 60hz) on Windows, worked fine in an eGPU enclosure with a Mac mini, worked fine with a connection to the Intel/AMD switchable graphics built in to my MacBook Pro.

                                                                          This last one is probably more NVidia’s fault or Alienware’s fault than anything, but my Alienware’s hdmi port is the only port wired to the discrete GPU directly, and is wonky on Linux, requiring Xorg hacks to get it usable. The thunderbolt, USB-C, and even mini-DisplayPort next to the HDMI port all work, but not the HDMI port unless I make changes to Xorg to the second NVidia Xorg.

                                                                        2. 4

                                                                          That rm behaviour sounds like a feature of a snapshotting filesystem.

                                                                          Perhaps, but macOS has been really opaque since the introduction with APFS when/how macOS makes snapshots. I guess it’s tied somehow to using Time Machine, but other than that I have no clue.

                                                                          Technical support… hmm. I’ve submitted a bug report to Apple and soon got a response that my bug report was a duplicate of another and that it was under work and available in the next version.

                                                                          If you have Apple Care, you could just call them up. I guess for a lot of non-technical folks this is much better than Googling ;).

                                                                          External monitors work on macs as well as better than on even Windows. Linux is still a bit of a joke on this front.

                                                                          I have a 4k monitor that I hook up through Display Port Alt Mode. I have a DisplayPort <-> USB-C adapter. Works fine with my wife’s MacBook Pro 2016. Works fine with my 2018 Linux NUC. Does not work at all (as in literally no signal) on my MacBook Pro 2018. So I had to buy yet another adapter.

                                                                          (In my experience external beamers work great with Macs though, never had a problem.)


                                                                          This blog post started out ok, but the rest was just drivel. macOS has had its problems recently, but comparing it to Linux circa 2000 is just laughable. macOS is something that I’d easily recommend to non-technical friends/colleagues, 2000’s Linux definitely not (though I probably would have at the time, because I was an 17/18-year old fanboy ;)).

                                                                          1. 4

                                                                            This thread (and the article itself) is a shitshow of Apple-haters circlejerk but facts are facts: it is indeed very hard to find any macbook with more than 2 USB ports, reference:

                                                                            https://everymac.com/systems/by_capability/macs-with-usb-firewire.html

                                                                          1. -8

                                                                            I’m shocked (in a good way) people haven’t expressed outrage at 9front’s propaganda. http://9front.org/propaganda/

                                                                            Maybe because it’s blatant satire, so no one could possibly think that they were literal nazis.

                                                                            Unfortunately in today’s social climate humor is becoming less and less acceptable. Anything mocking, outrageous, edgy, or otherwise not-mainstream can make your coworkers feel unsafe or uncomfortable. A react programmer was nearly crucified after he made the OK symbol with his hand during a conference talk.

                                                                            https://twitter.com/ken_wheeler/status/1164934308366340096?lang=en

                                                                            And it was 4chan that started that “OK symbol = white power” troll, specifically to troll everybody into thinking it actually had any kind of white power meaning. It’s like the media can’t help but play right into 4chan’s hands. https://www.bbc.com/news/newsbeat-49837898

                                                                            1. 27

                                                                              4chan is also packed to the rafters with open and unironic white power enthusiasts so it’s not particularly giving your arguments any credence. When you do something ironically enough times that unironic enthusiasts of that thing are more prevalent than the people who do it ironically, then it’s no longer ironic, it’s just that thing.The thing that makes 9Front different is that they also espouse literal opposites as propaganda. It’s like putting skateboarding is a crime on your skateboard.

                                                                              1. 19

                                                                                Can you think of a reason why recycled Nazi propaganda, even as a joke, might cause some people earnest anxiety, in our present moment?

                                                                                1. 11

                                                                                  Which of those images are Nazi propaganda? I can see a V2 launch, but I’m not sure it is propaganda any more than archival footage. I see far more references to the US nuclear program and radiation than anything else (Which I suppose could be offensive to some).

                                                                                  1. 3

                                                                                    For the same reasons a repurposed Jurassic Park screencap might?

                                                                                    1. 4

                                                                                      For the same reasons a repurposed Jurassic Park screencap might?

                                                                                      I don’t understand the reference or implication here, can you spell it out for me?

                                                                                      1. 3
                                                                                        1. 1

                                                                                          Maybe just riffing on Operation Paperclip? Who knows, actually…there’s even a photo from the Alien 3 set, which really sold them to me. Alien 3 is a strange flick.

                                                                                  2. 8

                                                                                    Maybe because it’s blatant satire, so no one could possibly think that they were literal nazis.

                                                                                    I think it’s because there imaginary is all over the place. You’ve got Kennedy, Mao, 30’s Germany, Orwell, movies, etc.

                                                                                    As far as I remember They also had have the communist manifesto somewhere in their source , which I guess ends up worrying other people (and sometimes the same).

                                                                                    Edit: It’s in this directory, under manifesto: https://code.9front.org/hg/plan9front/file/82cc8a9cd294/lib

                                                                                    And it was 4chan that started that “OK symbol = white power” troll, specifically to troll everybody into thinking it actually had any kind of white power meaning. It’s like the media can’t help but play right into 4chan’s hands. https://www.bbc.com/news/newsbeat-49837898

                                                                                    That was particularly mean, because on the one hand it started as satire, but at the same time it became a symbol, because it was satire, making it an actual symbol, beyond satire, masked as satire. Quite honestly, it was executed masterfully, it’s really a surprised it even worked.

                                                                                    1. 1

                                                                                      Quite honestly, it was executed masterfully, it’s really a surprised it even worked.

                                                                                      Heads they win, tails we lose: the more the symbol is used by fascists the more people talk about how it’s a fascist symbol; the more people talk about how it’s a fascist symbol the more cryptofash, fash-lite and fash adjacent people mock the notion that it’s a fascist symbol - thus giving cover to fascists who use it.

                                                                                      Feedback loops, oof.

                                                                                    2. 18

                                                                                      Unfortunately in today’s social climate humor is becoming less and less acceptable. Anything mocking, outrageous, edgy, or otherwise not-mainstream can make your coworkers feel unsafe or uncomfortable.

                                                                                      This is such bullshit and I’m tired of hearing these tired and lazy talking points repeated without question any time the topic comes up.

                                                                                      Humor is not “becoming less and less acceptable.” What is actually happening now is that, at least in the United States, we are slowly starting to be aware as a culture, in fits and starts, that the status quo in place for most of the history of the U.S.–where it was okay to use people in a perceived lower social class as punching bags and call it “humor”–is actually maybe not okay and not a cultural value we want to keep and moreover, not even funny. And in response what we are hearing is a bunch of people getting butthurt about not being able to talk shit about whoever they want without repercussions…and claiming that actually they are just being “edgy” and the rest of us snowflakes can’t take it. It’s the same bullshit as when Rush Limbaugh was complaining about political correctness hampering his ability to say racist shit without getting called on it back in the 90s, and he is still making money, so obviously things haven’t really changed that much…yet.

                                                                                      You know what edgy humor is? Scott Thompson going to Russia during the Sochi Olympics and flaunting his gayness in a place where that could get him arrested or beaten. It’s the Monopoly guy showing up to senate hearings, or, basically anything The Yes Men do. It’s the Satanic Temple unveiling a Baphomet statue at the AR state capitol to make a point about church and state. It’s the Chappelle show’s Frontline Sketch about Clayton Bigsby but, unfortunately, not Dave Chappelle making jokes about trans or gay people or doing racist Chinese accents–that stuff is old and tired.

                                                                                      So maybe if you’re saying shit that makes your co-workers feel unsafe and uncomfortable, you should first ask yourself if you should really be saying shit that makes your co-workers uncomfortable (if it’s not about the work itself) or unsafe, and then consider whether it’s really that important to be able to freely make “edgy” and “outrageous” jokes in a work environment. It’s probably not. I will go out on a limb and say that you’re almost definitely not contributing anything useful if you’re making people feel unsafe, and you should probably be fired.

                                                                                      I don’t think any of this is particularly hard but yet, a lot of folks seem to have trouble figuring it out. Hopefully this helps.

                                                                                      1. 14

                                                                                        Why would you bring this up? At best, it’s off-topic…at worst, it could result in an outrage ball that could result in issues for 9front or the removal of that comedy.

                                                                                        Why?

                                                                                        1. 9

                                                                                          Unfortunately in today’s social climate humor is becoming less and less acceptable.

                                                                                          It’s all fun and games to cry “wolf!” when everybody knows there’s no wolves for hundreds of miles around.

                                                                                          It’s not cool to cry “wolf!” in a dark forest when the howling of wolves is carried clearly on the midnight air.

                                                                                          My point is: if I tell a joke and my audience doesn’t laugh, blaming the Fun Police might soothe my ego, but really I should think about what my audience will find funny before I try again.

                                                                                          1. 4

                                                                                            Are we even looking at the same thing? Can you explain what, exactly, you’re reacting to? (Maybe a screenshot?) All I see is a bunch of random images with their logo on them.

                                                                                            1. 6

                                                                                              Maybe because it’s blatant satire, so no one could possibly think that they were literal nazis.

                                                                                              How could anyone get the impression that they are Nazis from that collection of almost entirely Nazi-less images?

                                                                                              1. 4

                                                                                                Someone started a rumor that the ok sign is white supremacist and then white supremacists started doing it en masse so it’s safe to say it’s officially a white supremacist symbol now. You’re playing into their hands by allowing them to maintain plausible deniability.

                                                                                                1. 5

                                                                                                  How should anyone who lives outside the social media filter bubble know what symbols are used by extremists now and thus are not okay to use anymore? I never heard of this rumor before and do not know anyone who has.

                                                                                                  1. 3

                                                                                                    The user I’m responding to posted a link to the BBC, it’s not just some social media thing.

                                                                                                  2. 4

                                                                                                    Rather than flipping out, why not just claim it back by doing it for the exact opposite reasons? If you don’t they will just do the same thing with a million other symbols… maybe thumbs up is next?

                                                                                                    All that you are doing by perpetuating the idea it is a white supremacist symbol, is losing a little ground.

                                                                                                    The original trolls who started that joke must laugh to themselves every time they see someone mention it seriously like you just did.

                                                                                                    1. 4

                                                                                                      No, the white supremacists who use it as a white supremacist symbol are perpetuating the idea that it’s a white supremacist symbol.

                                                                                                      1. 3

                                                                                                        The point is the same, why allow that? They are just gonna steal thumbs up and the peace sign next. Is there not a counter to that?

                                                                                                        1. 3

                                                                                                          Yeah, the best counter is to organize and smash white supremacy.

                                                                                                          1. 5

                                                                                                            Yeah, but even then, when can we do okay signs again?

                                                                                                            1. 8

                                                                                                              It’s a lot like viking runes, Nazis picked em up for their propaganda, using them doesn’t mean you’re a Nazi but if you see someone with a bunch of them they might be a Nazi. People who have viking heritage and want to have an artifact of their culture avoid the most propagandized ones.

                                                                                                              You can do whatever you want. It is a white supremacist symbol now. If you see someone doing it in a situation that seems overtly racist, they’re probably a white supremacist. If you see someone doing it when someone would say ok, it’s probably not a white supremacy thing.

                                                                                                              1. -2

                                                                                                                Do you actually think this is a question I can answer or are you making some kind of point?

                                                                                                                1. 2

                                                                                                                  It’s a serious question.

                                                                                                                  1. 3

                                                                                                                    I’m a lot more worried about the increased frequency of hate crimes in the last few years than when I’ll be allowed to use a specific hand gesture again to be honest with you.

                                                                                                                    1. 6

                                                                                                                      I’m worried about the rise of hate crimes, for sure. But, I’m also worried about the Internet’s ability to cause irrepairable harm to innocent people. It’s incredibly easy to take some tweet, some forum post, some photo out of context and cast someone as $X because of $Y, and $Z. “They used a certain hand gesture, and wrote a tweet 3 years ago that, if you squint, suggests they support nationalism–they’re a white supremacist!”

                                                                                                                      The downvoted OP linked to a tweet where this seems to have happened. I don’t know anything more than what is in the thread, but guy is bald, used an OK sign for another reason, suddenly he’s the same as Richard Spencer.

                                                                                                                      I don’t want to make light of White Nationalism! Far from it. But, we cannot assume, by default, that everyone is bad, and we seem to be doing that more by default. Of course, this could be, and probably is to some degree, reactionary to the rise in hate crimes…

                                                                                                  1. 3

                                                                                                    In Fedora 32 it is planned to be shipped as a tech preview:

                                                                                                    We are planning major changes for Fedora Workstation 32 though, where we in fact plan to ship Pipewire as a tech preview for both Jack and PulseAudio users. The way it will work is that the system will still default to PulseAudio, but we will provide either a script or a UI option to switch over to Pipewire (and back again).

                                                                                                    blogs.gnome.org/uraeus/2019/09/23/fedora-workstation-31-whats-new

                                                                                                    1. 8

                                                                                                      Please don’t, do as less as possible with shell scripts and keep them short!

                                                                                                      What most shell scripts that I have encountered so far have in common is that they don’t have any tests. As @cup already said, I would choose Python or Go anytime over those “clever” bash hacks because I can make sure that they do what I expect they do and do not break on the slightest change.

                                                                                                      Edit: formatting

                                                                                                      1. -1

                                                                                                        The fact that print ‘foo’ no longer works in python 3 is the most annoying change. There’s no reason for it, and almost 100% of my code would run fine on python 3 if not for it.

                                                                                                        Python is so lucky they won the mindshare war. This upgrade has been a mess.

                                                                                                        1. 36

                                                                                                          Speaking as someone who is going through a long delayed upgrade from 2 to 3 at the moment, if print becoming a function is the biggest issue you will have, you would have no problem just running 2to3 and being done with it.

                                                                                                          But print is probably not the issue. For us, it’s been the distinction between bytes and string (or, that our codebase relied on the lack of distinction in python 2).

                                                                                                          1. 3

                                                                                                            Ah yeah, excellent point. I’ve run into that too, especially with stdout/stdin.

                                                                                                          2. 11

                                                                                                            … almost 100% of my code would run fine on python 3 if not for it.

                                                                                                            Then use 2to3 and continue with Python3.

                                                                                                            1. 5

                                                                                                              Fixing mistakes is often like that. :-/

                                                                                                            1. 13

                                                                                                              Preach. I work at a company that’s heavily invested in SQL across the board, and it is amazing to be able to communicate across company silos in the common language of SQL.

                                                                                                              1. 4

                                                                                                                Exactly this, I tend to write plain SQL nowadays since you eventually have to work around some ORM specific problems in the end. Also, debugging queries that were generated by something like Hibernate is pure pain, plain SQL is clear and you can use whatever special tool your database backend provides, also, writing SQL forces you to think about your database model a bit more thorough.

                                                                                                                1. 5

                                                                                                                  I quite like the way rails’s ActiveRecord lets you incrementally build up and name subqueries.

                                                                                                                  I’ll often re-use a complex named scope by calling .to_sql, then use the resulting string as part of a larger query.

                                                                                                                  That’s something that’s genuinely hard to do in SQL and I wish there were more granular tools for abstraction/re-use within SQL. Yes, I’m aware of with in postgres, and it goes a long way, but IMO it’s far inferior.

                                                                                                                  1. 1

                                                                                                                    Mixing hand-written SQL snippets with ORM queries always makes me very uneasy; how can you be sure the aliases are stable?

                                                                                                                    1. 2

                                                                                                                      I largely wrap them in a subselect, which generates SQL like:

                                                                                                                      select * from my_table where id in (select id from my_table where <complex conditions>)

                                                                                                                      So far, postgres has been clever enough not to turn this into a performance cliff, and because a subselect is allowed to shadow outer names you never get alias conflicts.

                                                                                                                      1. 1

                                                                                                                        For such simple cases that should work. I was thinking more like subqueries where you need to anchor the conditions to the outer queries.

                                                                                                                        1. 1

                                                                                                                          That’s also OK, since you’re the one writing the aliases in the outer query.

                                                                                                                          1. 1

                                                                                                                            I remember doing it the other way around in Rails. So Rails generates the outer query and I write the subquery manually, which requires a WHERE on the outer query.

                                                                                                                  2. 2

                                                                                                                    I’ve discovered that whenever I need an ORM, I can usually accomplish the same functionality with SQL-stored procedures. I’d like to think that this usually gives me more freedom and flexibility than an ORM would provide me with.

                                                                                                                    1. 8

                                                                                                                      I’ve worked on programs where we built up a large collection of stored procedures that basically locked us into that DB vendor. I don’t think I could ever recommend stored procedures again …

                                                                                                                      1. 5

                                                                                                                        That is indeed the main downside of doing things this way. You (often) either get locked in on a specific ORM-vendor, or you get locked in to a specific database vendor.

                                                                                                                        But if you keep the stored procedures as simple as a single transaction with few insert, update or delete statements which acts on multiple tables, (my running example is adding a new contact with n phone numbers) there is not much to be “locked in”.

                                                                                                                        “The pain has to be felt somewhere” applies here.

                                                                                                                        1. 4

                                                                                                                          How do you keep this under version control? I think having them in migrations (which you put in version control) would be fine, but painful; every simple change would mean you need to put the entire procedure in yet another migration file.

                                                                                                                          1. 5

                                                                                                                            (Perhaps this approach is naive, but) I keep my PostgreSQL views and functions in plain (.sql) files, and reload (psql [...] < foo.sql) them on every production deploy. They are defined with DROP IF EXISTS or CREATE OR REPLACE.

                                                                                                                            Meaning to say, they are outside of migrations, which are strictly comprised of schema-changing statements.

                                                                                                                            1. 1

                                                                                                                              Sounds doable. How many functions do you typically have? (wondering about scalability)

                                                                                                                              1. 1

                                                                                                                                I have one mid-sized app which could serve as an example. I ran grep CREATE [...] | wc -l on the files, and it shows 42 CREATEs. This is only going to grow, though, prob at a rate of about 2 or 3 a month.

                                                                                                                            2. 1

                                                                                                                              Essentially one file per procedure in a (sometimes) pretty annoying folder structure.

                                                                                                                              However: Version control is always a problem with relational databases, which is another argument against ORM’s: You should do your research and make the upfront investment to model your data-model correctly before you even start writing code at all.

                                                                                                                            3. 3

                                                                                                                              I’m very happy to be locked in to postgres (or sqlite for that matter) :)

                                                                                                                              1. 2

                                                                                                                                Haha. Was thinking the same thing.

                                                                                                                                FWIW, its not so much about vendor lock in but choosing a set of tools and living with the downsides of that decision.

                                                                                                                            4. 1

                                                                                                                              SQL views are also quite nice to simplify complicated JOIN queries.

                                                                                                                              1. 1

                                                                                                                                SQL views are also quite nice to simplify complicated JOIN queries.

                                                                                                                                That is the main ideas of SQL-views after all. The downside (or sometimes upside) is that for a 1:n-relation, you would either need to multiple queries, or you’d have to return a table with an array-like-type in one column.

                                                                                                                                I don’t like either if I can simply let the DBMS assemble the object and return it through one of multiple return values.

                                                                                                                        1. 1

                                                                                                                          Is Microsoft providing Windows 10 LTSC ISO downloads somewhere? I would love to give it a try in a VirtualBox.