1. 3

    Is it just me, or am I the only one that likes Gnome 3 - or even just tolerates it? Some stuff but I don’t agree on, but I think it overall tries, which is more than I can say for the rest of the “clone Windows 98” desktop environments.

    1. 1

      Is there any technical information in this link?

      (I am loath to burn a free NYT read on some general-interest fluff).

      1. 3

        It isn’t about Bitcoin at all, thankfully, but it’s basically the extent you have to go through to avoid corporate and government surveillance, including buying a decoy house to fool the DMV.

        1. 1

          Thanks for the summary!

          Edit what’s the name of this person? Being an “evangelist” seems to be in opposition to being virtually untraceable.

          1. 2

            FWIW, the cached URL works, but intro paragraph:

            In October 2017, a SWAT team descended on Jameson Lopp’s house in North Carolina. Someone — it still isn’t clear who — had called the police and falsely claimed that a shooter at the home had killed someone and taken a hostage. After the police left, Mr. Lopp received a call threatening more mayhem if he did not make a large ransom payment in Bitcoin.

            1. 1

              Thanks again for updating! I can’t tell from a URL preview whether the link will dock me a NYT read, which is one reason I don’t like paywalled links.

              I’ve seen Lopp active on Twitter. I guess all these steps were necessary to prevent criminals easily fin him and his family using publicly available information to find, harass them, and demand payment in cryptocurrency.

      1. 1

        Thanks for taking the time to write up these thoughts. My wife and I have been working on healing our relationship with our phones recently. We have a docking station in the living room and are trying to keep them there most of the time when we’re in the house, and also when we are going to bed. This article just inspired me to get the “What do you want to pay attention to?” lock screen, as well as to do a pass on cleaning out unnecessary apps, and putting infrequently used ones in a “Misc” folder on a separate home screen.

        The biggest thing I’ve had to accept is that this is a work in progress. Sometimes I’m going to fail. I’m going to get into arguments on twitter. I’m going to spend too much time on an app for no good reason. There will be times when I’m physically with people, but mentally absent. It’s ok. What’s important is that I recognise it, and try to stop it happening next time.

        Totally agree. Being able to observe the workings of your own mind (mindfulness) is such an important tool, not only for kicking phone-addition, but for so many other areas of mental and emotional health. I recommend mindfulness meditation if you haven’t tried it. Here are some guided audio meditations that I’ve found helpful: https://chrisgermer.com/meditations/

        One small error I noticed:

        Firefox supports add-ons on mobile, such as uBlock Origin.

        When I visit https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/ on Firefox for iOS I get a big red banner that reads “Firefox for iOS does not currently support add-ons.”

        If there’s a way to get this working on iOS I’d love to know!

        1. 2

          If there’s a way to get this working on iOS I’d love to know!

          Since all browsers on iOS use a system web view, you could use the system’s native content blockers, which enforce it for all web viewers, AFAIK.

          1. 2

            Wow, thanks for reading this!

            I’m sorry about iOS. Unfortunately I’m using firefox on Android, which does support add-ons. On iOS you do have access to an equivalent app called Better, which is worth getting if you can afford it.

          1. 2

            macos, fastmail, duck.com, firefox (with google and facebook containers) + uBlock Origin, Privacy Badger. Don’t use much of calendar’ing.

            phone: looking for a e.foundation supporting phone.

            1. 1

              e.foundation looks like yet another android ROM? I would recommend buying a device that doesn’t use android, since android devices typically require piles of out of tree kernel patches for the hardware to work. This makes it very difficult/impossible to support newer mainline kernels, and backporting security updates will become increasingly more difficult.

              1. 2

                If it doesn’t use android, what it is using?

                1. 1

                  SailfishOS? PureOS (with the upcoming Librem5)? Unfortunately there aren’t many options (yet!), but any of those are better than Android, IMHO.

                  Edit: OP is looking for a new phone, which is why one of the options I mentioned is something not out yet..

                  1. 0

                    I don’t know if it is practical to use a non-Android phone at this moment, as most of the apps are not available.

                2. 1

                  e.foundation looks like yet another android ROM?

                  It is.

                  1. 0

                    I’d rather use bad open source like Android than closed source like iOS.

                1. 3

                  I would have gone for Ethernet, personally. I’ve definitely had to do SLIP before, on a laptop where I didn’t have a PCMCIA ethernet card; I set up an NT 4 VM to do it. Once I got the Ethernet card, I decided to use ZModem to transfer the drivers for it over.

                  1. 3

                    I picked up an old ethernet card that was new in box, but it expected Windows for Workgroups. This machine only had the standard home edition of 3.1. I never was able to get the card running, which is unfortunate given the slow speeds of the serial line.

                    1. 1

                      Now that you do have Internet, you could transfer windows 3.11 to the machine.

                  1. 1

                    Wow, I must have a look at F*! Can someone point me to some sample C code generated by the compiler? I’m really curious how readable it is in reality. edit: Hm, also: do I have to use the Low* subset of F* if I want to emit C?

                    And by the way, is a return *((uint32_t *)src); really UB in C when src is an unaligned void*? If yes, then fuck, I really don’t want to ever touch handwritten C or C++ anymore… :/

                    1. 1

                      Yeah, the fact that pointers are so undefined in the C standard is because C ran (and still runs) on machines with far different ideas about pointers; including differentiated between types. You could have a machine with 4-byte word pointers for void and 16-byte byte pointers for char, for example.

                      1. 1

                        I’m pretty sure UBSAN will catch that one… (part of the Clang sanitizer suite.) That issue doesn’t show up as much in C++ because void* is less common. Also I like the C++ casting syntax better than C’s because it’s greppable.

                      1. 2

                        casual reminder than x86 != PC compatible

                        1. 1

                          Thanks for commenting. I’m curious now, what can be considered PC compatible? what is considered a compliant PC?

                          1. 3

                            Well, you have to consider that the statement basically means a system with an x86 processor is not necessarily compatible with an IBM PC and its operating systems or even applications. The biggest platform in Japan, for instance, was the NEC PC-98 - it ran MS-DOS, but it was incompatible with western systems hardware and firmware wise. Likewise, systems like the Sun386i or Nokia Communicator lack hardware and firmware interfaces that appeared on the IBM PC and its descendants in favour of its own.

                            Even though the world has significantly changed and what we consder “PCs” have UEFI et al, the point stands. You can’t really use a normal “PC” operating system on a PS4 even if the system was wide open - you’d have to create a custom kernel aware of its differences.

                            1. 1

                              Thank you very much for your explanation.

                        1. 23

                          It surprised me to learn that “#[cfg(unix)] was historically defined as #[cfg(not(windows))] so that having two configurations of #[cfg(windows)] and #[cfg(unix)] would “technically” cover all the targets.” Rust shouldn’t assume that all OSs in the universe are either Unix or Windows, and Fuchsia is as good a place as any to stop making that assumption.

                          1. 21

                            It used to, it doesn’t any more. Redox (OS written in Rust) support is upstream in Rust and Redox is marked as neither Unix nor Windows, as it should. The proposal here is to do the same to Fuchsia.

                            1. 6

                              Redox has no target_family:

                              I laughed when I saw this. That’s awesome.

                              1. 2

                                If you interpret it as ‘POSIX-compliant’ vs ‘not POSIX-compliant’ it makes plenty of sense. Operating systems either conform to the portable operating system standard or they don’t.

                                1. 12

                                  Why should you do that? There’s a lot more beyond just Unix or even POSIX if you insist on that. Assuming non-POSIX means Windows, Fuchsia, Redox and all the operating systems that have, do and shall exist are “basically the same” is peak *nix-arogance (along with calling it the portable operating system standard).

                                  1. 1

                                    And just because you implement a lot of POSIX doesn’t make you a POSIX system, especially if there’s key differences; i.e, VMS and i, which implement large swathes of POSIX but not fork, for example.

                                    1. -1

                                      peak *nix-arogance (along with calling it the portable operating system standard).

                                      It’s not arrogance any more than it’s arrogance to suggest a C compiler should conform to the C standard. Operating systems should conform to the operating system standard. If they don’t, they’re non-compliant, and that is its own category. That doesn’t mean they’re all the same.

                                      1. 19

                                        C is a particular language and thus can have “the” standard for it. Operating systems are a category of software and POSIX is just one standard for them, it’s not “the” standard. Similar to how there is no standard for “programming languages” in general.

                                        1. 4

                                          That doesn’t mean they’re all the same.

                                          My rust is rusty but from what I see cfg is something like #ifdef __unix__, #ifdef _WIN32, etc. If all the distinctions are “this is unix, so I can assume following behaviour” or “this isn’t unix” then there’s really not a lot you can do in the latter case.

                                          But settings that aside, POSIX has an obvious *nix inclination. If I were to implement a totally different system like CLOSOS or a real-time, embedded OS, requiring it to “conform to ‘the’ operating system standard” would be absurd. What if I don’t want files or byte-stream pipes? What if I don’t want to use fork(2) for process creation? What if I don’t want the shell to be the primary UI/UX? What if I don’t want to use C? – There are so many possibilities what not-POSIX could look like, just like not-the number one has quite a few different variations.

                                          This is all just even more absurd when considering that it obviously hasn’t been an issue to just add more operating systems to cfg. It’s an absolute non-issue.

                                          1. 4

                                            Fuchsia actually checks two of your lists. Fuchsia doesn’t use fork and doesn’t specify ABI in terms of C.

                                      2. 1

                                        The linked article explains that Fuchsia is not POSIX-compliant and it never will be. So it makes sense to mark Fuchsia “not unix”.

                                        1. 1

                                          Yes, if anything the distinction should be ‘unix’ vs ‘not unix’ rather than ‘windows’ vs ‘not windows i.e. unix’.

                                    1. 6

                                      Why should our command lines be restricted to the limitations of a glorified VT100? We could be communicating a command line over far richer interfaces - think Mathematica or Jupyter.

                                      1. 4

                                        Plain text is (probably) the simplest form of human-readable data there is. You need an output device and an input device. Jupyter notebooks require so much going on (like an entire modern web browser), and are you really gaining that much from being able to run code embedded in a document as opposed to running program file.ext? At the end of the day, these “richer” interfaces add complexity relative to how rich they are. Plain text is about as optimised, simple, usable, and malleable as possible.

                                        1. 3

                                          There is also org-mode babel[0] which allows for literate programming much like @calvin wanted but in plain text.

                                          Works across pretty much any programming language(including shell) and are not stuck with only elisp.

                                          0: https://orgmode.org/worg/org-contrib/babel/

                                          1. 3

                                            Ditching VT100 emulation isn’t the same as ditching plain text. I agree that text should continue to be the fundamental format of the terminal, but I would love a modern terminal emulation standard that extends VT100.

                                        1. 1

                                          I hate laptop. pgUP and pgDown keys are very complicated

                                          1. 2

                                            well, thinkpads had a sane keyboard.

                                            1. 1

                                              The new ones aren’t as bad as everyone claims them to be, speaking as someone who owns one.

                                              1. 1

                                                But, the first redesigns after they got purchased were fairly bad? Then they came back to a more nominal setup.

                                                1. 1

                                                  well, it’s a matter of taste i guess. i just really don’t like chiclet keyboards, and why on earth they moved the keys from the top is beyond me: https://cdn.arstechnica.net/wp-content/uploads/2018/03/thinkpad-25-keyboard-comparison-flat.jpg having the brightness controls somewhere i don’t have to look was amazing. fn + space for keyboard light is ok, but i liked bottom left + top right better :)

                                            1. 3

                                              calvin, what is Petiteboot? There’s an intro on that blog that describes it as a POWER thing. Another page saying it’s the project page says “PS3 bootloader.” Then, another page says it’s something layered onto Coreboot. It doesn’t even have a Wikipedia. This thing is in desperate need of a one-stop place for thorough docs on what it does.

                                              These might also be different projects entirely but I feel docs are probably lagging behind what people are building.

                                              1. 6

                                                That’s exactly what it is - when IBM did up OpenPOWER, they recycled the PS3 Linux bootloader (that is, petitboot) and made it the OpenPOWER one. It’s bizarre and I wish they’d use Open Firmware again, but it does have some benefits like being able to reuse Linux drivers.

                                                1. 1

                                                  Ok, thanks for clarification. I had no idea OpenPOWER reused PS3 tech. I’d have expected it to go other way where they had great, high-end stuff they watered down for consumer devices or kept them independent. This is kind of amusing that they reversed it.

                                                  “but it does have some benefits like being able to reuse Linux drivers.”

                                                  That part is why it makes a ton of sense. Compatibility with the FOSS project with the most hardware compatibility. I mean, I’d still favor them clean-slating something awesome that plugs into Linux drivers. If not, they’re at least pulling in the drivers building on existing project.

                                              1. 2

                                                I find the “there’s no design behind the kernel” attitude kind of surprising. Maybe I’m misunderstanding what is meant by that. I guess it’s hard to argue with the fact that it’s gotten Linux this far, but my eye twitches a little bit when I read that.

                                                1. 2

                                                  It is a popular talking point from people like Cantrill, who come from “cathedrals” - they’re used to the entire system, kernel to userland, being designed as a consistent and holistic whole; not so much Linux, which is restricted to the kernel and occasionally struggles to design APIs - see dnotify and epoll.

                                                1. 12
                                                  1. 1

                                                    Oh, I remember that!

                                                    1. 1

                                                      To be fair, the linked post explicitly mentions that author is not using csh for shell scripting, instead for… aesthetic reasons? It’s unclear. They admire Bill Joy though.

                                                    1. 1

                                                      From what I’ve heard, 11.4 was supposed to be Solaris 12, but got changed last minute.

                                                      1. 25

                                                        I’m pretty surprised by the amount of hate for Go in the comments here. I definitely agree with the author. For me the simplicity of Go has been an absolute breath of fresh air. It really feels like a better C.

                                                        C doesn’t have generics and yet you don’t hear people complain about that. Right now if you want a statically typed, garbage collected language, your only real options are Java (JVM languages) or Go. The cross platform support for C# is still pretty poor, and many of the smaller languages just don’t have the library support.

                                                        I just don’t see the lack of generics as an issue right now, but I hope that the new generics proposals for Go2 get it right.

                                                        1. 28

                                                          Generics weren’t really a thing until 1973 with ML. C was released in 1972, so it gets some slack. Generics were pretty well understood for decades before Go came out which is why people go off about it.

                                                          1. 13

                                                            The problem is that many people aren’t advocating Go as a better C, but as better, period. And many other people are denouncing Go as a bad language, period. The result is polarization which shows up as ‘hate’ (I would prefer to call it ‘unmoderated negativity’, because I don’t know (and cannot really imagine) if people actually feel hate).

                                                            It would be much nicer if everyone applied the principles of humanity and charity

                                                            1. 5

                                                              C has the preprocessor, which lets you build things like generic redblack trees. Of course, in go, you have go generate. So I think it comes out about even, but because the two features aren’t identical people don’t really consider them.

                                                              For that matter, c++ templates frequently boil down to tons of duplicated code generation, which then the linker has to sift through. Go’s solution requires a touch more work, but eliminates a lot of eventual waste.

                                                              1. 5

                                                                C Preprocessir and go generate might be about equal in what they can do, but there’s no question that C Preprocessir has a lower barrier to entry for the basic things.

                                                                1. 2

                                                                  Preprocessor a separate language and tool from C, though. It’s not like having the feature built into the language with the compiler being able to understand the context as it applies the feature.

                                                                2. 5

                                                                  I’m not sure that I agree about the C# bit. Why do you say that the cross platform support is poor?

                                                                  1. 10

                                                                    Seriously, it feels bizarre using Mono for about a decade, yet people act like .NET only appeared outside of Windows when .NET Core was busy being born a few years ago.

                                                                  2. 6

                                                                    It really feels like a better C.

                                                                    So… if you ignore the past 30 years of academic research, it’s a good language? How exactly is that impressive?

                                                                    C doesn’t have generics and yet you don’t hear people complain about that.

                                                                    I’ve never used generics, and I’ve never missed ’em.

                                                                    1. 3

                                                                      I more or less begrudgingly agree. Every now and then I find myself wishing for generics or operator overloading in Go (not as often as I would have guessed)… then I remember how refreshing it is to be able to read some unfamiliar Go code and know that I don’t have to wonder what an innocuous looking “+” might be doing.

                                                                      1. 9

                                                                        You can have generics without operator overloading, though. See also: Java 5.

                                                                      2. 0
                                                                        1. 12

                                                                          Not in the sense that anyone cares about. It doesn’t allow for user-defined generic code – the library author has to write the specialized implementations ahead of time, and exhaustively enumerate what types their macro is generic over. This feature exists almost exclusively for the benefit of tgmath.h.

                                                                          C would have been better off without this poorly thought out solution.

                                                                      1. 9

                                                                        If you’d asked me five minutes ago what network filesystem would be the best way to share files between Windows and Linux, 9P would not have been in my top five.

                                                                        Can other 9P clients access WSL environments this way? Can Windows Explorer connect to other 9P hosts?

                                                                        1. 2

                                                                          I’m curious to hear your top 5 (or whatever).

                                                                          1. 1
                                                                            1. SMB (obviously)
                                                                            2. WebDAV
                                                                            3. FTP
                                                                            4. regular HTTP
                                                                            5. SFTP

                                                                            SFTP goes last because unike the others, I don’t think Windows comes with a client by default… although in this crazy WSL era, who knows?

                                                                            1. 5
                                                                              C:\Users\Calvin>sftp
                                                                              usage: sftp [-46aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
                                                                                        [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit]
                                                                                        [-o ssh_option] [-P port] [-R num_requests] [-S program]
                                                                                        [-s subsystem | sftp_server] destination
                                                                              
                                                                               Directory of C:\Windows\system32\openssh
                                                                              
                                                                              2018-09-15  05:09 AM    <DIR>          .
                                                                              2018-09-15  05:09 AM    <DIR>          ..
                                                                              2018-09-15  05:09 AM           322,560 scp.exe
                                                                              2018-09-15  05:09 AM           390,144 sftp.exe
                                                                              2018-09-15  05:09 AM           491,520 ssh-add.exe
                                                                              2018-09-15  05:09 AM           384,512 ssh-agent.exe
                                                                              2018-09-15  05:09 AM           637,952 ssh-keygen.exe
                                                                              2018-09-15  05:09 AM           530,432 ssh-keyscan.exe
                                                                              2018-09-15  05:09 AM           882,688 ssh.exe
                                                                              
                                                                          2. 2

                                                                            I thought you were joking, until I read the link for myself and did a spit-take.

                                                                            Based on the wording in the article and the linked article about socket use, I suspect that unmodified 9p clients won’t be able to directly use this. They might have just added some 9p extensions(like Erlang on Xen to support WSL, or they might have more drastic(but “legal 9p”) modifications like Styx on a Brick

                                                                            Still though, this made my day!

                                                                          1. 3

                                                                            I was an active Amiga developer during the planar vs chunky debate. I was, of course, a staunch planar partisan. One of the big disappointments in my life is that the Amiga never advanced past the AGA chipset or that – indignity! – the AGA chipset didn’t hold a commanding lead over other technologies.

                                                                            (If you want to have your mind blown, read about Copper programming on the Amiga.)

                                                                            1. 1

                                                                              The fact that Hombre existed seems to blow the minds of Amiga partisans. PowerPC Amigas were revisionist - PA-RISC Amiga was (allegedly) the future.

                                                                              1. 1

                                                                                they actually built Hombre devices or was it just a plan?

                                                                                1. 2

                                                                                  There were rumors and one potential prototype but nothing solid, sadly.

                                                                            1. 3

                                                                              Visual Basic for Applications, of course. You are developing a COM application, no? ;)

                                                                              1. 1

                                                                                If it’s a COM application, are Powershell and the JS and VB implementations that Windows Scripting Host provides also options?

                                                                                (Sorry if this is a dumb question, I don’t know a lot about how Windows things relate to one another.)

                                                                                1. 2

                                                                                  A bit of a joke, actually. Active Scripting is also, AFAIK, deprecated. Not sure how PowerShell would work out for application automation though.

                                                                                2. 1

                                                                                  Excel plus VBA were the tools of choice for business-critical applications, err day to day activities, at most Windows shops back when I was in and around them. PowerPoint the key tool for useless activities highlighting useful ones. ’m pretty sure Excel remains as strong. Probably PowerPoint given human nature. I wonder if VBA is still big these days or replaced with something else?

                                                                                  1. 2

                                                                                    I suspect one coud do programming idiomatically on the spreadsheet environment, no need for an external one like VBA. Spreadsheets are just 2D programs and data, after all.

                                                                                    1. 1

                                                                                      Oh yeah, that was true then, too. I was just wondering if there was any extra stuff folks still did with VBA or if it dropped out of popularity.

                                                                                1. 5

                                                                                  Its really not practical to do a chromium rebuild for every small update. Symbol versioning is annoying and Void Linux started to make every package that is build against glibc to depend on glibc>=buildversion because partial updates are allowed but versioned symbols break all the shared library checks.

                                                                                  1. 9

                                                                                    In practice, package builds already do a chromium rebuild for every small update. Developers do incremental builds regardless of the method of linking.

                                                                                    Really, the reason to build Chrome with shared objects is that the linker will fall over when building as a single binary with debug info – it’s already too big for the linker to handle easily. The last time I tried to build Chrome to debug an issue I was having, I didn’t know you had to do some magic to build it in smaller pieces, so the linker crunched on the objects for 45 minutes before falling flat on its face aborting. I think it didn’t like 4 gigabyte debug info sections.

                                                                                    Also, keep in mind that this wiki entry is coming from a Plan 9 perspective. Plan 9 tends to have far smaller binaries than Chromium, and instead of large fat libraries, it tends to make things accessible via file servers. HTTP isn’t done via libcurl, for example, but instead via webfs.

                                                                                    1. 2

                                                                                      That separation also means you can rebuild webfs to fix everything using it without rebuilding them, which is what shared libraries were supposed to help with.

                                                                                    2. 6

                                                                                      Well, I feel like that’s the only way to handle it in Void really.

                                                                                      Anyway, I’d trade disk space for having static linked executables every day. Must be why I love Go so much. But I still understand why it’s used, both for historical and practical reasons. This post showcases the difference between static and dynamic cat but I’m scared of what would happen with something heavy with lots of dependencies. For example qt built statically is about 2/3rd of the size.

                                                                                      1. 4

                                                                                        If the interface has not changed, you technically only need a relink.

                                                                                        1. 3

                                                                                          If you have all the build artifacts laying around

                                                                                          1. 3

                                                                                            Should a distribution then relink X applications pushing hundreds of megabytes of updates or should they start shipping object files and link them on the user system where we would basically imitate shared libraries.

                                                                                            1. 6

                                                                                              One data point: openbsd ships all .o for the kernel, which keeps updates small.

                                                                                              (I don’t think this is actually new. Iirc, old unix systems used to do the same so you could relink a modified kernel without giving away source.)

                                                                                              1. 3

                                                                                                That’s how SunOS worked, at least. The way to relink the kernel after an update also works if you have the source too; it’s the same build scaffolding.

                                                                                                1. 2

                                                                                                  Kernel, but not also every installed port or package

                                                                                                2. 3

                                                                                                  It would be viable to improve both deterministic builds and binary diffs/delta patches for that. With deterministic builds you could make much better diffs (AFAICT) since the layout of the program will be more similar between patches.

                                                                                                  1. 4

                                                                                                    Delta updates would be nice a nice improvement for the “traditional” package managers. Chrome does this for its updates, but instead of just binary diffs, they even disassemble the binary and reassemble it on the client. http://dev.chromium.org/developers/design-documents/software-updates-courgette

                                                                                                    1. 2

                                                                                                      What do you mean by delta updates? What should they do differently than what delta RPMs have been doing until now?

                                                                                                      1. 1

                                                                                                        Yes maybe this, not sure how delta rpms work specifically, do they just diff files in rpms or are those deltas of each binary/file inside of the rpm?

                                                                                                        1. 1

                                                                                                          They ship new/changed files, and I think they also do binary diffs (at least based on what this page says)

                                                                                                  2. 1

                                                                                                    Chrome already ships using binary diffs, so this is a solved problem.

                                                                                                    1. 0

                                                                                                      where we would basically imitate shared libraries.

                                                                                                      Except without the issue of needing to have just one version of that shared library.

                                                                                                      1. 2

                                                                                                        Proper shared libraries are versioned and don’t have this issue.

                                                                                                1. 1

                                                                                                  I was kinda sad we didn’t get Fountainhead instead.