1. 1

    TL;DR: Exposing hard disk plates to open air isn’t a great idea.

    1. 5

      Well, no, but I found it interesting that damping vibration could get a failed disk limping along enough to salvage most of it.

      1. 2

        Thank you for the advice but this really misses the point of the article which is quite short anyway.

      1. 3

        FWIW, previous discussions on the subject last year and two years ago.

        1. 4

          Replying to the previous comment “I’m curious what lobsters would come up with if given, say, only 5 sentences to describe a reasonable code of ethics”:

          Most things I could think of can fall under one generalized rule: “Don’t enter into conflicts of interest with your users.” That covers data silos, monopoly abuse, dark patterns, proprietary formats as a way to lock out competition, and addictive gamification. In fact, I would rather use the other four sentences to carve out exceptions to that rule, such as commercialization and limited liability. If your interest is aligned, the remaining rules in the ACM post would rather be considered “good practice” rather than an ethical obligation. They only become relevant in an ethical sense as your interest diverges from the user’s interest.

          1. 2

            Interesting, but it is practical? If you carve out an exception for commercialization, then how do you prevent conflict of interest?

            Maybe many of the ethical rules can be summarized as “Act as if you haven’t entered into conflicts of interest with your users”.

            1. 1

              Interesting, but it is practical? If you carve out an exception for commercialization, then how do you prevent conflict of interest?

              I just mean there’s an inherent interest in that your users want a lower price, and you want a higher price. I think as long as you limit this to the general price of the software package, there’s nothing wrong with it. Once you start doing things like asking a high price to export their data, it begins to be skeevy.

        1. 10

          One of the common complaints about Lisp is that there are no libraries in the ecosystem. As you see, five libraries are used just in this example for such things as encoding, compression, getting Unix time, and socket connections.

          Wait are they really making an argument of “we used a library for getting the current time, and also for sockets” as if that’s a good thing?

          1. 16

            Lisp is older than network sockets. Maybe it intends to outlast them? ;)

            More seriously, Lisp is known for high-level abstraction and is perhaps even more general than what we usually call a general purpose language. I could see any concrete domain of data sources and effects as an optional addition.

            In the real world, physics constants are in the standard library. In mathematics, they’re a third party package.

            1. 12

              Lisp is older than network sockets.

              Older than time, too.

              1. 1

                Common Lisp is not older than network sockets, so the point is moot I think.

                1. 1

                  I don’t think so. It seems to me that it was far from obvious in 1994 that Berkeley sockets would win to such an extent and not be replaced by some superior abstraction. Not to mention that the standard had been in the works for a decade at that point.

              2. 5

                Because when the next big thing comes out it’ll be implemented as just another library, and won’t result in ecosystem upheval. I’m looking at you, Python, Perl, and Ruby.

                1. 4

                  Why should those things be in the stdlib?

                  1. 4

                    I think that there are reasons to not have a high-level library for manipulating time (since semantics of time are Complicated, and moving it out of stdlib and into a library means you can iterate faster). But I think sockets should be in the stdlib so all your code can have a common vocabulary.

                    1. 5

                      reasons to not have a high-level library for manipulating time

                      I actually agree with this; it’s extraordinarily difficult to do this correctly. You only have to look to Java for an example where you have the built-in Date class (absolute pants-on-head disaster), the built-in Calendar which was meant to replace it but was still very bad, then the 3rd-party Joda library which was quite good but not perfect, followed by the built-in Instant in Java 8 which was designed by the author of Joda and fixed the final few quirks in it.

                      However, “a function to get the number of seconds elapsed since epoch” is not at all high-level and does not require decades of iteration to get right.

                      1. 7

                        Common Lisp has (some) date and time support in the standard library. It just doesn’t use Unix time, so if you need to interact with things that use the Unix convention, you either need to do the conversion back and forth, or just use a library which implements the Unix convention. Unix date and time format is not at all universal, and it had its own share of problems back when the last version of the Common Lisp standard was published (1994).

                        It’s sort of the same thing with sockets. Just like, say, C or C++, there’s no support for Berkeley sockets in the standard library. There is some history to how and why the scope of the Common Lisp standard is the way that it is (it’s worth noting that, like C or C++ and unlike Python or Go, the Common Lisp standard was really meant to support independent implementation by vendors, rather than to formalize a reference implementation) but, besides the fact that sockets were arguably out of scope, it’s only one of the many networking abstractions that platforms on which Common Lisp runs support(ed).

                        We could argue that in 2021 it’s probably safe to say that BSD sockets and Unix timestamps have won and they might as well get imported in the standard library. But whether that’s a good idea or not, the sockets and Unix time libraries that already exist are really good enough even without the “standard library” seal of approval – which, considering that the last version of the standard is basically older than Spice Girls, doesn’t mean much anyway. Plus who’s going to publish another version of the Common Lisp standard?

                        To defend the author’s wording: their remark is worth putting into its own context – Common Lisp had a pretty difficult transition from large commercial packages to free, open source implementations like SBCL. Large Lisp vendors gave you a full on CL environment that was sort of on-par with a hosted version of a Lisp machine’s environment. So you got not just the interpreter and a fancy IDE and whatever, you also got a GUI toolkit and various glue layer libraries (like, say, socket libraries :-P). FOSS versions didn’t come with all these goodies and it took a while for FOSS alternatives to come up. But that was like 20+ years ago.

                        1. 2

                          However, “a function to get the number of seconds elapsed since epoch” is not at all high-level and does not require decades of iteration to get right.

                          GET-UNIVERSAL-TIME is in the standard. It returns a universal time, which is the number of seconds since midnight, 1 January 1900.

                          1. 2

                            Any language could ignore an existing standard and introduce their own version with its own flaws and quirks, but only Common Lispers would go so far as to call the result “universal”.

                          2. 1

                            However, “a function to get the number of seconds elapsed since epoch” is not at all high-level and does not require decades of iteration to get right.

                            Actually, it doesn’t support leap seconds so in that case the value repeats.

                          3. 1

                            Yeah but getting the current unix time is not Complicated, it’s just a call to the OS that returns a number.

                            1. 6

                              What if you’re not running on Unix? Or indeed, on a system that has a concept of epoch? Note that the CL standard has its own epoch, unrelated (AFAIK) to OS epoch.

                              Bear in mind that Common Lisp as a standard, and a language, is designed to be portable by better standards than “any flavour of Unix” or “every version of Windows since XP” ;-)

                              1. 1

                                Sure, but it’s possible they were using that library elsewhere for good reasons.

                            2. 3

                              In general, I really appreciate having a single known-good library promoted to stdlib (the way golang does). Of course, there’s the danger that you standardise something broken (I am also a ruby dev, and quite a bit of the ruby stdlib was full of footguns until more-recent versions).

                              1. 1

                                Effectively that’s what happened though. The libraries for threading, sockets etc converged to de facto standards.

                          1. 4

                            The article is full of Ada jargon and is thus difficult to fully understand, but I found it interesting nonetheless.

                            1. 1

                              I baffled to see (again!) the magician metaphor that hindered and still hinder progress in Python and Django in particular.

                              1. 2

                                Where was it used before?

                                1. 2

                                  It is common with Django to hear the following:

                                  • How it works?
                                  • Magic!

                                  Same for PyPy, or anything beyond rendering <a> inside <div> with string concatenation..

                                  1. 11

                                    That’s not how the article is using the magician metaphor, though

                                    1. 4

                                      People said I did the impossible, but that’s wrong: I merely did something so boring that nobody else had been willing to do it.

                                      The point is that it is not magic.

                                      1. 3

                                        Where have you heard that about Django? I haven’t heard Django described as magic since magic removal (pre-1.0).

                                        1. 2

                                          PyPy is not magic, for what it’s worth. It is big; a full understanding of how PyPy works usually requires covering some of what RPython is and JITs.

                                      2. 1

                                        I agree that the “magic” attitude is not great, and part of what makes Flask great is that you can always look under the hood and see what it’s actually doing. The __new__ stuff Django pulls off with models can seem like “magic” until you dig for a while and realize that it’s just putting the models in a dictionary and iterating through the subclass’ attributes to see what columns it should generate for the database schema.

                                      1. 9

                                        When you get tied up in developing software for testing, and in design patterns and best practice, all your enthusiasm is lost and you loose precious energy that could have been spend creatively coming up with better and more efficient ways to deal with the problems you’re facing.

                                        Couldn’t disagree more, and I wonder if the original poster is doing test-after or test-first. If you’re bing “frantic” about tests, you’re probably doing it wrong:

                                        The attitude I see is that testing is like eating your vegetables, you know it’s supposed to be good for you and you do it, grudgingly, but it really is rather annoying and the benefits are more something you know intellectually.

                                        For me with MPWTest, TDD is also still intellectually a Good Thing™, but also viscerally fun, less like vegetables and more like tasty snacks, except that those snacks are not just yummy, but also healthy. It helps me stay in the flow and get things done.

                                        From: MPWTest: Reducing Test Friction by Going Beyond the xUnit Model

                                        Back to the original post:

                                        The method I use is a rigorously usage of inserted breaks, where you halt the application at specific places during runtime and then check that the values and data is correct, all the time.

                                        Please…don’t. There’s nothing rigorous about this. And it’s manual. What do programmers do with manual tasks? They automate them. And it’s only done during original development. What happens during refactoring? How do I even know what values are correct?

                                        Really, please write a test instead. And write it first, as specification. Make sure the test is red. Then write just enough code to make the test pass. Feel free to check in at this point. Then refactor, keeping the test green. It’s a fantastic flow.

                                        1. 8

                                          Please…don’t. There’s nothing rigorous about this. And it’s manual. What do programmers do with manual tasks? They automate them. And it’s only done during original development. What happens during refactoring? How do I even know what values are correct?

                                          Really, please write a test instead. And write it first, as specification. Make sure the test is red. Then write just enough code to make the test pass. Feel free to check in at this point. Then refactor, keeping the test green. It’s a fantastic flow.

                                          Or if you don’t want to do TDD, replace as much as possible your breaks with assertions checking your invariants instead of losing time and energy doing it yourself.

                                        1. 6

                                          I downloaded the demo and never managed to beat the tutorial level. 😞

                                          I’m really not a bad developer though.

                                          1. 3

                                            So we won’t get “Ten essays on Factorio” from you then?

                                            1. 1

                                              I’ve played the tutorial at some point: it was hard, even though I was experienced. The analogy with development is only felt during regular open play, over several hours. Me, I’ve learned to reassess my relationship with technical debt: I tend to want the perfect thing, and I can write (or design) that perfect thing. But that takes time, which could be used instead to produce more things.

                                              Lesson learned: even code that’s not good enough can be good enough for now. It should be replaced when it ceases to be, and no sooner. (Note: that’s my lesson. Tactical tornadoes should instead learn to replace code as soon as it ceases to be good enough. In general, it’s hard to assess when the time is right.)

                                            1. 1

                                              I too have said my goodbyes to minikube. Although in my case it was not so much minikube’s fault. I was on Windows 10 Home and minikube was working fine for me. Then I upgraded to Windows 10 Pro. In Pro when you have Hyper-V enabled, then VirtualBox works extremely slowly if at all. You have to disable Hyper-V for VirtualBox to work. But I upgraded because I wanted WSL2 and this requires Hyper-V (or so I understand; if it does not maybe my decision to upgrade was in error).

                                              Yes, you can have minikube work with the docker driver, but it just does not feel the same. So since I upgraded to Pro dropped minikube and started using the Kubernetes distribution that comes with Docker Desktop. It is OK for me most of the time.

                                              And when I want to experiment with different versions of Kubernetes, I launch a machine with multipass and use RKE (within the VM) for example. The issue I am facing with Multipass is that I have to delete c:\windows\system32\drivers\etc\hosts.ics from time to time.

                                              Kind and microk8s could be alternatives too, but I have not used them.

                                              1. 2

                                                But I upgraded because I wanted WSL2 and this requires Hyper-V (or so I understand; if it does not maybe my decision to upgrade was in error).

                                                FWIW, I can confirm that you don’t need Pro to use WSL2. In my understanding, when you activate WSL2 in Home, some parts of Hyper-V get installed but you can’t use it yourself to boot a VM.

                                                However that’s indeed enough to cause problems with VirtualBox. A recent VBox update was supposed to fix this, but I haven’t tried yet.

                                              1. 4

                                                TL;DR: no, they’re not.

                                                As such, it is quite sad, but I am also not sure why you submitted this link. Is there something new since 2018?

                                                1. 1

                                                  I was hoping for some kind of retrospective, maybe I should have done an Ask Lobste.rs….

                                                1. 1

                                                  Has anyone who uses CAD software on a daily basis ever expressed the desire for something like this?

                                                  This seems like “let’s solve a program with a programming language that nobody was asking us to solve with a programming language.”

                                                  1. 1

                                                    Why is this question relevant? People use software not only because they like it, but also because they know nothing else… I would even argue that software is only used because of the Stockholm syndrom.

                                                    I think mechanical engineering is currently in a local maximum of progress/efficiency and deep shift needs to happen to escape it

                                                    1. 1

                                                      Have you ever spoken to a mechanical engineer? This sounds like classic “im a programmer therefore I’m a genius who knows how everything needs to be done with a computer”

                                                      The day you meet a career mechanical engineer who has any interest in learning to code just to do their day job, let me know.

                                                      1. 4

                                                        I am a mechanical engineer and I‘m still working in the field, just not as a mechanical engineer anymore. I‘ve also done CAD modeling for some time. Therefore I‘ve talked to a lot of them, still do. Sorry, for not pointing that out earlier :D

                                                        I‘m seeing the effects of what I described every day. Software from large vendors with an unnecessary high learning curve (to sell training), no or bad interfaces to the competitors software (to vendor lock you) and no easy way to automate tasks. Software development is so far ahead in their tooling (mainly because they write their own I think).

                                                        You could say you just met an mechanical engineer who codes and at least in my opinion I profit from that on a daily basis. You are correct that there is low willingness to learn to code properly in mechanical engineering. I see this changing and I think it needs to change, may be no by modeling through code though. I think its a great thought experiment nonetheless.

                                                    2. 1

                                                      Has anyone who uses CAD software on a daily basis ever expressed the desire for something like this?

                                                      The user request will be in terms of the domain but a programming language may be a possible solution.
                                                      “I’m building a lot of objects that have the same structure but different sizes or colors.”

                                                      1. 0

                                                        So you’ve never used professional mechanical CAD software, clearly.

                                                        This is something that comes up often, and it’s a problem that has been taken care of. What makes you think nobody has thought of this before you?

                                                        1. 2

                                                          So perhaps you could share a bit of that knowledge with us non-mechanical engineers?

                                                    1. 6

                                                      I will be publishing a few more posts about Self, notably about the module system and the UI framework Morphic. It might annoy people who are not interested, so maybe it would be good to add a “self” tag.

                                                      1. 5

                                                        Thanks for your post, I will gladly read the follow-ups.

                                                        If you’re going to publish often and are afraid some people might get annoyed, my suggestion would be to rather make the RSS feed more visible on your website. This way, people interested will subscribe (I did).

                                                        1. 2

                                                          Thank you, I will work on doing that.

                                                        1. 1

                                                          This is the default force push method in Fork.

                                                          1. 2

                                                            What’s Fork?

                                                            1. 2
                                                          1. 9

                                                            Excellent post. While it is supposedly a non-dispassionate text, it is in fact much more reasonable than some reactions I have seen on lobsters and elsewhere.

                                                            1. 6

                                                              As much as I like Org and the redesign of its website, I don’t think that it’s on-topic without at least an article relating the work done.

                                                              1. 3

                                                                This is the closes I could find for that: https://orgmode.org/list/87ft61l19p.fsf@bzg.fr/T/#mb63281a4a4fcc120742484caa5b6c9276fbf0e91

                                                                Is it possible to replace the link?

                                                                1. 2

                                                                  “Hi Everyone, just a quick note from me: Regarding the intermediate state, there are a few teething issues that have appeared when deploying the site on orgmode.org.* If we could hold off from announcing this on some of the more high-traffic forums till these get sorted out that would be appreciated :) We want people to get the best possible first impression of the revamp after all. Timothy.”

                                                                  1. 1

                                                                    Further down the page:

                                                                    These issues have now been fixed! Go wild :P

                                                                    Also, you probably meant to reply to @zge’s comment, not its parent.

                                                                1. 1

                                                                  Defer was unique to Go but Swift has since adopted it as well, although it is subtly different.

                                                                  1. 8

                                                                    defer wasn’t unique to Go even when it was introduced given that D has had scope(exit) for longer.

                                                                    1. 1

                                                                      Not arguing, just reminded of a gotcha people should know: go’s defer is not scope exit, it’s function exit.

                                                                    2. 4

                                                                      GCC has __cleanup__ attribute for ages.

                                                                      1. 2

                                                                        ZIg also has defer, and errdefer, which I haven’t seen elsewhere.

                                                                        1. 4

                                                                          And unlike Go, Zig gets the scoping of defer correct.

                                                                          1. 2

                                                                            Sorry to mention D again in this thread, but scope(failure) is pretty much similar to errdefer.

                                                                        1. 6

                                                                          Smalltalk is an easy answer. :-)

                                                                          In Smalltalk, you can replace the contents of any method in any class of the system. Obviously, you’d better not be wrong.

                                                                          1. 2

                                                                            Almost, but not quite: certain methods are actually opcodes (in ST80, arithmetic, ifTrue, and a couple of others), and modern smalltalks will open-code them, so overriding the method will do nothing unless the primitive fails. Even the ST80 blue book interpreter handles ifTrue directly in the bytecode, and the 32 “special” messages with their own opcodes result in directly calling a primitive without message lookup. Now, you’re not likely to want to override integer addition or Object>>class, but it still bothers me that you can’t.

                                                                          1. 2

                                                                            The people doing Emacs were sitting in labs at MIT with what were essentially fibre-channel links to the host, in contemporary terms. They were working on a PDP-10, which was a huge machine by comparison, with infinitely fast screens.

                                                                            So they could have funny commands with the screen shimmering and all that, and meanwhile, I’m sitting at home in sort of World War II surplus housing at Berkeley with a modem and a terminal that can just barely get the cursor off the bottom line.

                                                                            While the ITS case is true, the Multics team did get redisplay for Multics Emacs working over 300 baud links. There’s a really nice writeup at https://multicians.org/mepap.html

                                                                            1. 1

                                                                              https://multicians.org/mepap

                                                                              The links 404, is there a typo in there or is the site down?

                                                                              1. 1
                                                                                1. 1

                                                                                  Yep, fixed it in the comment. Thank you.

                                                                            1. 5

                                                                              Sorry if this is the wrong forum for this question, but what would it take for Plan 9 to become a viable option on servers or desktops today? It seems like many people are enthusiastic about the concepts it is built on and its potential, and have been for years, yet it seems as elusive as the GNU Hurd. Technically it may still be under development, but I’ve never encountered a machine, virtually or in person, that is running Plan 9.

                                                                              Why isn’t Plan 9 more popular? Is it an organizational problem, where there is no clear leader (person, corporation, or non-profit) pushing Plan 9 forward? Are there too many competing “forks” diluting what development effort exists? Is it a lack of good documentation/tutorials helping people get started developing Plan 9? Is there some licensing issue? Is it lack of hardware support, making it impossible to run on modern hardware? (Then why not run it in a virtual machine / emulator, as Redox OS does while it’s being developed?) Is it a lack of software written for it, or lack of a killer app that makes people want to run it instead of BSD or any other niche OS? Is it a sheer lack of publicity, so that fewer people are aware of its existence than I think? Is Plan 9 actually obsolete, so that people who really look at its design give up and go do something else with their time?

                                                                              1. 12

                                                                                I think there are a few factors:

                                                                                • The developers have very strong opinions. On things like obsessive adherence to the Unix philosophy (check the source for the plan 9 coreutils), syntax highlighting, mouse use, and so on. The nature of the system seems to make a lot of those opinions much harder to disagree with than other systems. Read the mailing lists or cat-v to get an idea of what I mean. I don’t think that this is a bad thing, but it is polarising.
                                                                                • The mouse is central. This stems from above, but I think it’s an issue in itself. A lot of the people who are likely to be interested are also likely to be invested in programs such as Vim or Emacs, and telling these people that they have no choice but to use a mouse isn’t going to go down well. Also, the prevalence of laptops these days means that people are less likely to always be able to use a mouse in the efficient way that is required. Furthermore, the mouse should be three buttoned, and modern mouses rarely are, the scroll wheel not working as a suitable alternative.
                                                                                • It works best together. Plan 9 is designed as a distributed operating system, and comes into its own when used on more than just a single personal machine. The fact no one uses it makes it hard for this to be achieved - a chicken and egg situation.
                                                                                • It’s ugly. Personally I quite like the aesthetic, but it does look like it’s from the 90s, and that’s going to turn a lot of people off. The interface is spartan, and many of its programs don’t come with easy ways to change the colour schemes to what the user might prefer.
                                                                                • There isn’t a good browser. I hate that I need these as much as the next person, but unfortunately it’s the case.

                                                                                These are the main things that have stopped me from using the system, and I’ve wanted to make it my main OS on a couple of occasions. Some people have switched, but others have moved to modern systems, bringing the killer apps with them.

                                                                                That’s the situation as I’ve experienced it anyway.

                                                                                [edit - just a heads up, apologies if this sounds a bit rushed, I wrote it once and then accidentally C-w’d my tab at the last moment (damn browsers!) and my thought process was a bit scattered the second time around.]

                                                                                1. 1

                                                                                  Sorry to pick out this one thing, but why won’t the scroll wheel work as a 3rd button? Can’t you just push it without scrolling?

                                                                                  1. 2

                                                                                    The scroll wheel does work as a 3rd button. I wouldn’t call it unsuitable, it’s just that it is less ergonomic than a real middle button.

                                                                                    1. 1

                                                                                      You can, but that’s not really what it’s between designed for. Maybe you do and it works for you, but I find it frustrating because it feels like a wheel, not a button. Even when I disable scrolling with it, it feels like a wheel which is broken so that’s even worse. I used to have a three button mouse and it just felt better (in that regard, it also had a ball so was worse in that regard).

                                                                                  2. 9

                                                                                    @twee answered in detail why Plan 9 as a whole doesn’t get much adoption. But a lot of pieces of Plan 9 have been inspirational to other more popular OSes, and as a research OS, I think that counts as success for Plan 9. Obvious examples are UTF-8, which is everywhere, and the /proc filesystem on Linux that gives “everything is just a file” access to all sorts of kernel internals. A less obvious one is the 9p file server protocol, which made a recent appearance in Windows Subsystem for Linux of all places!

                                                                                    1. 4

                                                                                      Drivers are a huge obstacle for every alternative OS. Even on Linux, the situation is rough.

                                                                                      The ubiquity of virtualization software (and somewhat consistent virtual hardware drivers) has been a boon to alt-OS usage and popularity.

                                                                                      1. 4

                                                                                        Plan 9 was and still is a beautiful experiment, an example of a research OS developed coherently, with a clear vision, while having a surprisingly decent userspace. However, it’s dangerous to confuse its aesthetic beauty and conceptual simplicity with actual utility for end users. The reason for existence for operating systems is to provide a hardware abstraction layer and to run end-user applications. It turns out that it’s possible to run the world on something as bloated and messy as Linux, and even, gasp, Windows. As long as the OS does not fall apart (like Windows 98) and has drivers for its target hardware, it’s good enough. Plan 9 clearly steered too much into the “pure aesthetics” territory without being an order of magnitude improvement for end users.

                                                                                        Already in mid-90s Plan 9 started to get out of touch with the mainstream OSes and it had not found a niche where it was a winner. The other comments mentioned already the archaic UI and the mouse-centric workflow that requires the middle button–it is opinionated and rather hostile to most workflows of both power and casual users. As for the organizational problems: a successful OS needs backing of at least one big corp (OpenBSD is the most successful OS that I still consider being actually community-driven).

                                                                                        To be honest, I prefer Plan 9 to stay in history in its clear form, as a myth of a perfect operating system, instead of watching it becoming something like what Linux is becoming today under the pressure of needs of big enterprises.

                                                                                      1. 3

                                                                                        I am unhappy about this existing at all. Personally, I don’t have a twitter account, and I would not want one nor do I like the idea of anything I do or say appearing in there.

                                                                                        You don’t have my permission to post any of the content I do contribute on Twitter. I explicitly ask you to cease and desist.

                                                                                        1. 6

                                                                                          I agree with what pushcx said, but in fairness OP’s bot is only posting links to Lobsters stories (just like Lobsters’ official account) and not any of our content.I believe that you are overreacting :-)