1. 5

    How about solaris, so it covers all possibilities?

    1. 9

      solaris today means oracle solaris. illumos as a project and as a community stand for very different things even if the code history is shared.

      Sometimes terms such as solarish or SunOS (after uname) are used to mean both, the closed version and it’s open source descendants, but I’m not sure how meaningful such a tag would be.

      1.  

        Isn’t Solaris dead?

        1.  

          No, Oracle just released a new version like, a week ago. Plus you’d cover any other Solaris forks that exist.

          1.  

            Wouldn’t OpenIndiana or OpenSolaris be a better name?

            Oracle fired pretty much all Solaris and SPARC engineers in 2017.

            As far as I know any work on Solaris is limited to maintenance, and no new features are planned.

            1.  

              illumos is the community continuation of OpenSolaris. OpenIndiana is one of the illumos distributions, but there are others like SmartOS, OmniOS and Tribblix.

              1.  

                I mean, it seems like naming the linux tag ubuntu to me. Cover all branches with the parent.

                1. 5

                  There’s been almost 10 years of divergence between Illumos and (Open)Solaris. I think it would be more like having a 4.4BSD tag to cover all of {Net,Free,Open,Dragonfly}BSD.

                  1.  

                    Mhh, I thought that my naming ideas were more inclusive, because Solaris in my mind refers to the proprietary product, while e.g. OpenSolaris covers all the descendants from the open source project.

                    1.  

                      While we descended from OpenSolaris, that name doesn’t really refer to anything anymore. We (illumos) have been a wholly separate thing for around a decade now.

          1. 10

            I find it a little disappointing that most of the reactions here are wrapped around the axle on the particulars of true, rather than the (imo) more interesting examination of how complexity creeps into our software design and what that means.

            Also, I wonder if people think that they might have something to learn or gain from someone who has a lot experience in our field and has created successful projects! (Note I’m not making an argument from authority – I’m not saying he’s correct or not, just that we might read it charitably and reflect that he might have something valuable to say before reacting strongly!)

            1. 12

              If he had something valuable to say, one would hope that his experience would have led him to offer an example of it. Instead we got this, which is essentially “old man yells at cloud.”

            1. 4

              Scratch will be the only programming language required for a computer science degree. Text-based programming languages will be deprecated because they are “ugly to look at.”

              Good lord, it’s too real.

              1. 2

                Maybe a dumb questions, but in semver what is the point of the third digit? A change is either backwards compatible, or it is not. To me that means only the first two digits do anything useful? What am I missing?

                It seems like the openbsd libc is versioned as major.minor for the same reason.

                1. 9

                  Minor version is backwards compatible. Patch level is both forwards and backwards compatible.

                  1. 2

                    Thanks! I somehow didn’t know this for years until I wrote a blog post airing my ignorance.

                  2. 1

                    PATCH version when you make backwards-compatible bug fixes See: https://semver.org

                    1. 1

                      I still don’t understand what the purpose of the PATCH version is? If minor versions are backwards compatible, what is the point of adding a third version number?

                      1. 3

                        They want a difference between new functionality (that doesn’t break anything) and a bug fix.

                        I.e. if it was only X.Y, then when you add a new function, but don’t break anything.. do you change Y or do you change X? If you change X, then you are saying I broke stuff, so clearly changing X for a new feature is a bad idea. So you change Y, but if you look at just the Y change, you don’t know if it was a bug-fix, or if it was some new function/feature they added. You have to go read the changelog/release notes, etc. to find out.

                        with the 3 levels, you know if a new feature was added or if it was only a bug fix.

                        Clearly just X.Y is enough. But the semver people clearly wanted that differentiation, they wanted to be able to , by looking only at the version #, know if there was a new feature added or not.

                        1. 1

                          To show that there was any change at all.

                          Imagine you don’t use sha1’s or git, this would show that there was a new release.

                          1. 1

                            But why can’t you just increment the minor version in that case? a bug fix is also backwards compatible.

                            1. 5

                              Imagine you have authored a library, and have released two versions of it, 1.2.0 and 1.3.0. You find out there’s a security vulnerability. What do you do?

                              You could release 1.4.0 to fix it. But, maybe you haven’t finished what you planned to be in 1.4.0 yet. Maybe that’s acceptable, maybe not.

                              Some users using 1.2.0 may want the security fix, but also do not want to upgrade to 1.3.0 yet for various reasons. Maybe they only upgrade so often. Maybe they have another library that requires 1.2.0 explicitly, through poor constraints or for some other reason.

                              In this scenario, releasing a 1.2.1 and a 1.3.1, containing the fixes for each release, is an option.

                              1. 2

                                It sort of makes sense but if minor versions were truly backwards compatible I can’t see a reason why you would ever want to hold back. Minor and patch seem to me to be the concept just one has a higher risk level.

                                1. 4

                                  Perhaps a better definition is library minor version changes may expose functionality to end users you did not intend as an application author.

                                  1. 2

                                    I think it’s exactly a risk management decision. More change means more risk, even if it was intended to be benign.

                                    1. 2

                                      Without the patch version it makes it much harder to plan future versions and the features included in those versions. For example, if I define a milestone saying that 1.4.0 will have new feature X, but I have to put a bug fix release out for 1.3.0, it makes more sense that the bug fix is 1.3.1 rather than 1.4.0 so I can continue to refer to the planned version as 1.4.0 and don’t have to change everything which refers to that version.

                            2. 1

                              I remember seeing a talk by Rich Hickey where he criticized the use of semantic versioning as fundamentally flawed. I don’t remember his exact arguments, but have sem ver proponents grappled effectively with them? Should the Go team be wary of adopting sem ver? Have they considered alternatives?

                              1. 3

                                I didn’t watch the talk yet, but my understanding of his argument was “never break backwards compatibility.” This is basically the same as new major versions, but instead requiring you to give a new name for a new major version. I don’t inherently disagree, but it doesn’t really seem like some grand deathblow to the idea of semver to me.

                                1. 1

                                  IME, semver itself is fundamentally flawed because humans are the deciders of the new version number and we are bad at it. I don’t know how many times I’ve gotten into a discussion with someone where they didn’t want to increase the major because they thought high major’s looked bad. Maybe at some point it can be automated, but I’ve had plenty of minor version updates that were not backwards compatible, same for patch versions. Or, what’s happened to me in Rust multiple times, is the minor version of a package incremented but the new feature depends on a newer version of the compiler, so it is backwards breaking in terms of compiling. I like the idea of a versioning scheme that lets you tell the chronology of versions but I’ve found semver to work right up until it doesn’t and it’s always a pain. I advocate pinning all deps in a project.

                                  1. 2

                                    It’s impossible for computers to automate. For one, semver doesn’t define what “breaking” means. For two, the only way that a computer could fully understand if something is breaking or not would be to encode all behavior in the type system. Most languages aren’t equipped to do that.

                                    Elm has tools to do at least a minimal kind of check here. Rust has one too, though not widely as used.

                                    . I advocate pinning all deps in a project.

                                    That’s what lockfiles give you, without the downsides of doing it manually.

                          1. 8

                            Personally I trust Russ Cox’s judgement… though I could see how people who worked on ‘dep’ would be furious. Go has a reputation for taking community direction with a grain of salt. The go team certainly is not afraid to do unpopular things in the goal of simplicity.

                            1. 7

                              I am reminded of this comment from Russ, which I think explains rather a lot: https://news.ycombinator.com/item?id=4535977

                                1. 1

                                  vgo is certainly different than dep, and in some ways it’s simpler, but in other ways it pushes a lot more complexity on the user. I think on balance it’s got to be a wash, at least for now.

                                  1. 2

                                    What are the complexities pushed onto the users?

                                1. 0

                                  This is true. It’s a pathetic replacement for documentation. Confluence sucks but at least it works.

                                  That said, Slack isn’t innately evil. It’s just how people use it that’s the problem. Skype or Hipchat could be just as toxic. I don’t blame the tool; I blame people, and the fact that software engineers lack the backbone to stand up against the increasing crapflood of surveillance and nonsense inflicted upon them. If you have to work under “Agile Scrum” and aren’t talking to a union right now, then you’re a punk– in the prison sense of the word.

                                  Now, Jira is the devil. I can’t come up with a single product I hate more. It was OK as a bug-tracker, but now that Spreadsheet Eichmanns are using it as an all-purpose panopticon, it deserves to die in a fire.

                                  Back when I came up, if you asked someone to do something, it usually got done; but if you CC’d that person’s boss while asking, that was almost cause for a fistfight– as it ought to be, because it’s a shitty move, and people who play that passive-aggressive game deserve to be brought right. But Jira has normalized that behavior: it’s essentially a machine for sending emails not just to someone’s boss, but to the whole company.

                                  1. 1

                                    I have no particular love for any Atlassian products, but… Jira, out of the box, is really just a bug tracker. One with enough structure and features that you might be able to manage the development of a large body of software with several concurrent release trains.

                                  1. 9

                                    I still can’t believe Go punted on providing a way to turn an enum value into a string without code generation. What a spectacular waste of an opportunity to do a better C.

                                    1. 4

                                      Dismissive comments like this are not constructive and do not belong in any environment that encourages the evolution of opinion. If you have a strong opinion about something (e.g. code-generation) then back up that opinion with a strong argument.

                                      1. 2

                                        please, not this discussion again.

                                      1. 3

                                        i remember mr. poettering saying that bsds aren’t relevant anymore in 2011: https://bsd.slashdot.org/story/11/07/16/0020243/lennart-poettering-bsd-isnt-relevant-anymore

                                        guess they are still here.

                                        1. 2

                                          “Lennart explains that he thinks BSD support is holding back a lot of Free Software development”

                                          I can think of something else which is holding back a lot of Free Software development.

                                          1. 1

                                            Poettering’s approach to software development seems to make it clear that he doesn’t see any value in the continued existence of the BSDs. I think that they are an important part of the larger open *Nix world/ecosystem and that Linux benefits from their existence so long as there remains some degree of compatibility. I will say that I think the BSDs’ use of a permissive rather than reciprocal licence I think had been bad for them in the long run.

                                            1. 1

                                              I don’t think that it’s not about the *Nix world/ecosystem or that Poettering just doesn’t care about BSDs. His attitude seems to be more like that people and distros not wanting to buy in on systemd and/or pulseaudio or in general his software or designs are irrelevant - or approaches that aren’t compatible with his. I think the wrong statements he made leading to uselessd disproving them and OpenRC disproving a lot of them as well made that clear.

                                              Now people have different opinions about systemd, but from my experience projects ignoring the rest of the world tend to turn out bad on multiple levels. Other than that portability often (not always) is an indicator for code quality as well.

                                              But going a bit off topic. What I want to say is that even though BSDs are mentioned the statement also targets every distribution not relying on systemd. It’s just that most of them aren’t exactly “mainstream”, which is why I think they are ignored and not mentioned.

                                          1. 7

                                            You can eliminate a lot of error handling by asking what you want to have happen under particular conditions, i.e., what’s the goal? Can it be met in another way?

                                            The reason libraries deal with error propagation issues is because they don’t know the context of their use. They don’t know what is supposed to happen when an “error” occurs.

                                            1. 2

                                              Right. There are few things more frustrating as a library consumer than one which calls fprintf(3C), or worse, exit(2) on your behalf when it encounters something unexpected.

                                            1. 10

                                              Some of us miss native desktop applications that worked well. It’s tragic that desktop platforms are utterly non-interoperable and require near-complete duplication of every app. But at the same time not everyone is satisfied with the solution of “build them all as electron apps starting with a cross-platform browser base plus web technology for the UI”. I can sympathize with app developers who in no way want to sign up to build for 2 or 3 platforms, but I feel like berating dissatisfied users is unjust here. Try comparing a high quality native macOS app like Fantastical with literally any other approach to calendar software: electron, web, java, whatever. Native works great, everything else is unbearable.

                                              1. 8

                                                I think people are just tired of seeing posts like Electron is cancer every other day. Electron is here, people use it, and it solves a real problem. It would be much more productive to talk about how it can be improved in terms of performance and resource usage at this point.

                                                1. 3

                                                  One wonders if it really can be improved all that much. It seems like the basic model has a lot of overhead that’s pretty much baked in.

                                                  1. 2

                                                    There’s a huge opening in the space for something Electron-like, which doesn’t have the “actual browser” overhead. I’m certain this is a research / marketing / exposure problem more than a technical one (in that there has to be something that would work better we just don’t know about because it’s sitting unloved in a repo with 3 watchers somewhere.)

                                                    Cheers!

                                                    1. 2

                                                      There’s a huge opening in the space for something Electron-like, which doesn’t have the “actual browser” overhead.

                                                      Is there? Electron’s popularity seems like it’s heavily dependent on the proposition “re-use your HTML/CSS and JS from your web app’s front-end” rather than on “here’s a cross-platform app runtime”. We’ve had the latter forever, and they’ve never been that popular.

                                                      I don’t know if there’s any space for anything to deliver the former while claiming it doesn’t have “actual browser” overhead.

                                                      1. 1

                                                        “re-use your HTML/CSS and JS from your web app’s front-end”

                                                        But that’s not what’s happening here at all - we’re talking about an application that’s written from the ground up for this platform, and will never ever be used in a web-app front end. So, toss out the “web-app” part, and you’re left with HTML/DOM as a tree-based metaphor for UI layout, and a javascript runtime that can push that tree around.

                                                        I don’t know if there’s any space for anything to deliver the former while claiming it doesn’t have “actual browser” overhead.

                                                        There’s a lot more to “actual browser” than a JS runtime, DOM and canvas: does an application platform need to support all the media codecs and image formats, including all the DRM stuff? Does it need always on, compiled in built-in OpenGL contexts and networking and legacy CSS support, etc.?

                                                        I’d argue that “re-use your HTML/CSS/JS skills and understanding” is the thing that makes Electron popular, more so than “re-use your existing front end code”, and we might get a lot further pushing on that while jettisoning webkit than arguing that everything needs to be siloed to the App Store (or Windows Marketplace, or whatever).

                                                        1. 2

                                                          But that’s not what’s happening here at all - we’re talking about an application that’s written from the ground up for this platform, and will never ever be used in a web-app front end. So, toss out the “web-app” part, and you’re left with HTML/DOM as a tree-based metaphor for UI layout, and a javascript runtime that can push that tree around.

                                                          Huh? We’re talking about people complaining that Electron apps are slow, clunky, non-native feeling piles of crap.

                                                          Sure, there are a couple of outliers like Atom and VSCode that went that way for from-scratch development, but most of the worst offenders that people complain about are apps like Slack, Todoist, Twitch – massive power, CPU, and RAM sucks for tiny amounts of functionality that are barely more than app-ized versions of a browser tab.

                                                          “Electron is fine if you ignore all of the bad apps using it” is a terribly uncompelling argument.

                                                          1. 1

                                                            Huh? We’re talking about people complaining that Electron apps are slow, clunky, non-native feeling piles of crap.

                                                            Sure, there are a couple of outliers like Atom and VSCode that went that way for from-scratch development, but most of the worst offenders that people complain about are apps like Slack, Todoist, Twitch – massive power, CPU, and RAM sucks for tiny amounts of functionality that are barely more than app-ized versions of a browser tab.

                                                            “Electron is fine if you ignore all of the bad apps using it” is a terribly uncompelling argument.

                                                            A couple things:

                                                            1. Literally no one in this thread up til now has mentioned any of Slack/Twitch/Todoist.
                                                            2. “Electron is bad because some teams don’t expend the effort to make good apps” is not my favorite argument.

                                                            I think it’s disingenous to say “there can be no value to this platform because people write bad apps with it.”

                                                            There are plenty of pretty good or better apps, as you say: Discord, VSCode, Atom with caveats.

                                                            And there are plenty of bad apps that are native: I mean, how many shitty apps are in the Windows Marketplace? Those are all written “native”. How full is the App Store of desktop apps that are poorly designed and implemented, despite being written in Swift?

                                                            Is the web bad because lots of people write web apps that don’t work very well?

                                                            I’m trying to make the case that there’s value to Electron, despite (or possibly due to!) it’s “not-nativeness”, not defending applications which, I agree, don’t really justify their own existence.

                                                            Tools don’t kill people.

                                                          2. 1

                                                            we’re talking about an application that’s written from the ground up for this platform, and will never ever be used in a web-app front end.

                                                            I’m really not an expert in the matter, just genuinely curious from my ignorance: why not? If it is HTML/CSS/JS code and it’s already working, why not just uploading it as a webapp as well? I always wondered why there is no such thing as an Atom webapp. Is it because it would take too long to load? The logic and frontend are already there.

                                                            1. 2

                                                              I’m referring to Atom, Hyper, Visual Studio Code, etc. here specifically.

                                                              I don’t think there’s any problem with bringing your front end to desktop via something like Electron. I do it at work with CEFSharp in Windows to support a USB peripheral in our frontend.

                                                              If it is HTML/CSS/JS code and it’s already working, why not just uploading it as a webapp as well?

                                                              I think the goal with the web platform is that you could - see APIs for device access, workers, etc. At the moment, platforms like Electron exist to allow native access to things you couldn’t have otherwise, that feels like a implementation detail to me, and may not be the case forever.

                                                              no such thing as an Atom webapp

                                                              https://aws.amazon.com/cloud9/

                                                              These things exist, the browser is just a not great place for them currently, because of the restrictions we have to put on things for security, performance, etc. But getting to that point is one view of forward progress, and one that I ascribe to.

                                                      2. 1

                                                        I can think of a number of things that could be done off top of my head. For example, the runtime could be modularized. This would allow only loading parts that are relevant to a specific application. Another thing that can be done is to share the runtime between applications. I’m sure there are plenty of other things that can be done. At the same time, a lot can be done in applications themselves. The recent post on Atom development blog documents a slew of optimizations and improvements.

                                                    2. 4

                                                      It’s tragic that desktop platforms are utterly non-interoperable and require near-complete duplication of every app.

                                                      It’s a necessarily sacrifice if you want apps that are and feel truly native that belong on the platform; a cross-platform Qt or (worse) Swing app is better than Electron, but still inferior to the app with a UI designed specifically for the platform and its ideals, HIG, etc.

                                                      1. 1

                                                        If we were talking about, say, a watch vs a VR system, then I understand “the necessary sacrifice” - the two platforms hardly have anything in common in terms of user interface. But desktops? Most people probably can’t even tell the difference between them! The desktop platforms are extremely close to each other in terms of UI, so I agree that it’s tragic to keep writing the same thing over and over.

                                                        I think it’s an example of insane inefficiency inherent in a system based on competition (in this case, between OS vendors), but that’s a whole different rabbit hole.

                                                        1. 2

                                                          I am not a UX person and spend most of my time in a Terminal, Emacs and Firefox, but I don’t think modern GUIs on Linux (Gnome), OS X and Windows are too common. All of them have windows and a bunch of similar widgets, but the conventions what goes where can be quite different. That most people can’t tell, does not mean much because most people can’t tell the difference between a native app and an electron one either. They just feel the difference if you put them on another platform. Just look how disoriented many pro users are if you give them a machine with one of the other major systems.

                                                          1. 1

                                                            I run Window Maker. I love focus-follows-mouse, where a window can be focused without being on top, which is anathema to MacOS (or macOS or whatever the not-iOS is called this week) and not possible in Windows, either. My point is, there are enough little things (except focus-follows-mouse is hardly little if that’s what you’re used to) which you can’t paper over and say “good enough” if you want it to be good enough.

                                                        2. 2

                                                          It’s tragic that desktop platforms are utterly non-interoperable and require near-complete duplication of every app.

                                                          There is a huge middle ground between shipping a web browser and duplicating code. Unfortunately that requires people to acknowledge something they’ve spent alot of time working to ignore.

                                                          Basically c is very cross platform. This is heresy but true. I’m actually curious: can anyone name a platform where python or javascript run where c doesn’t run?

                                                          UI libraries don’t need to be 100% of your app. If you hire a couple software engineers they can show you how to create business logic interfaces that are separate from the core services provided by the app. Most of your app does not have to be UI toolkit specific logic for displaying buttons and windows.

                                                          Source: was on a team that shipped cross platform caching/network filesystem. It was a few years back, but the portion of our code that had to vary between linux/osx/windows was not that big. Also writing in c opened the door for shared business logic (api client code) on osx/linux/windows/ios/android.

                                                          Electron works because the web technologies have a low bar to entry. That’s not always a bad thing. I’m not trying to be a troll and say web developers aren’t real developers, but in my experience, as someone who started out as a web developer, there’s alot of really bad ones because you start your path with a bit of html and some copy-pasted javascript from the web.

                                                          1. 1

                                                            There’s nothing heretical about saying C is cross-platform. It’s also too much work for too little gain when it comes to GUI applications most of the time. C is a systems programming language, for software which must run at machine speed and/or interface with low-level machine components. Writing the UI in C is a bad move unless it’s absolutely forced on you by speed constraints.

                                                          2. 1

                                                            It’s tragic that desktop platforms are utterly non-interoperable and require near-complete duplication of every app.

                                                            ++ Yes!

                                                            Try comparing a high quality native macOS app like Fantastical with literally any other approach to calendar software: electron, web, java, whatever. Native works great, everything else is unbearable.

                                                            Wait, what? I think there’s two different things here. Is Fantastical a great app because it’s written in native Cocoa and ObjC (or Swift), or is it great because it’s been well designed, well implemented, meets your specific user needs, etc? Are those things orthoganal?

                                                            I think it’s easy to shit on poorly made Electron apps, but I think the promise of crossplatform UI - especially for tools like Atom or Hyper, where “native feeling” UI is less of a goal - is much too great to allow us to be thrown back to “only Windows users get this”, even if it is “only OS X users get this” now.

                                                            It’s a tricky balancing act, but as a desktop Linux user with no plans to go back, I hope that we don’t give up on it just because it takes more work.

                                                            Cheers!


                                                            PS: Thanks for the invite, cross posted my email response if that’s ok :)

                                                            1. 2

                                                              Wait, what? I think there’s two different things here. Is Fantastical a great app because it’s written in native Cocoa and ObjC (or Swift), or is it great because it’s been well designed, well implemented, meets your specific user needs, etc? Are those things orthoganal?

                                                              My personal view is that nothing is truly well designed if it doesn’t play well and fit in with other applications on the system. Fantastical is very well designed, and an integral part of that great design is that it effortlessly fits in with everything else on the platform.

                                                              “Great design” and “native” aren’t orthogonal; the latter is a necessary-but-not-sufficient part of the former.

                                                              1. 1

                                                                “Great design” and “native” aren’t orthogonal; the latter is a necessary-but-not-sufficient part of the former.

                                                                Have to agree to disagree here, I guess. I definitely can believe that there can be well-designed, not-native application experinces, but I think that depends on the success and ‘well-designed-ness’ of the platform you’re talking about.

                                                                As part of necessary background context, I run Linux on my laptop, with a WM (i3) rather than a full desktop manager, because I really didn’t like the design and cohesiveness of Gnome and KDE the last time I tried a full suite. Many, many apps that could have been well designed if they weren’t pushed into a framework that didn’t fit them.

                                                                I look at Tomboy vs. Evernote as a good example. Tomboy is certainly well integrated, and feels very native in a Gnome desktop, and yet if put next to each other, Evernote is going to get the “well-designed” cred, despite not feeling native on really any platform it’s on.

                                                                Sublime Text isn’t “native” to any of the platforms it runs on either.

                                                                Anyway, I feel like I’m losing the thread of discussion, and I don’t want to turn this into “App A is better than App B”, so I’ll say that I think I understand a lot of the concerns people have with Electron-like platforms better than I did before, and thank you for the conversation.

                                                                Cheers!

                                                          1. 3

                                                            There’s a cool flag that makes it so you don’t have to reap the process, too, which is nice because reaping children is another really stupid idea.

                                                            I… is it? It doesn’t seem a wholly unreasonable way to arrange to get the exit status (or other termination details) of your child processes.

                                                            1. 4

                                                              Author here. I originally expanded on this in my first draft, but cut it out to balance complaints with solutions better. In my opinion, waiting on your children is fine if you can afford to block, and if not you have to set up SIGCHLD handlers, which is a non-trivial amount of code and involves signal handling, which is a mess in its own right and can easily be done incorrectly. Or you can use non-blocking waitpid, but that wasn’t a thing until recently. In all of these cases, if the parent doesn’t do its job well, your process table is littered with a bunch of annoying dead entries.

                                                            1. 9

                                                              I bring my laptop to meetings in case I need to make note of things I’ve promised to do, or take minutes, etc. I don’t use it to do other work during the meeting because that would, in fact, be a distraction and I should have just stayed at my desk instead.

                                                              I was pleasantly surprised that this article is at least restrained in its suggested applicability. It focuses on the author’s preferences as a narrative of personal experience, unlike most of the rest of the preachy articles in this space. It ends with a recommendation, but doesn’t push a number of questionable studies to suggest you are wrong if you disagree.

                                                              Different tools work for different people, and the “no laptops in meetings or lectures” crowd don’t often make room for this subjectivity.

                                                              1. 3

                                                                If there’s a designated note-taker at the meeting then that person can just note action-items in their notes and send them out at the end, saving you the trouble. If that person is you then of course you will need your laptop :)

                                                                1. 2

                                                                  Minutes are great! I’m still going to bring my own laptop in case I want to make my own notes, though. It’s really no trouble at all!

                                                                  The frustrating part about this whole debate when it happens is that people are trying to inflict their own personal mores onto others. If you want to use pen and paper, and that works for you, that’s great. I’m an adult, I know that I am happy typing my thoughts into a text file, and I refuse to be subject to other people’s taste.

                                                                  There is, after all, literally no accounting for it!

                                                                  1. 4

                                                                    I think the reason people (including me) have strong opinions about whether or not other people at a meeting are using laptops during the meeting is because when somebody is speaking and other people are looking at the screens instead of at the speaker then the speaker can easily feel like they’re not being paid attention.

                                                                    1. 3

                                                                      That problem goes way back. My solution was always the same: encourage the speaker not to do that. Better if they have little attachment to audience during the delivery to prevent worries from screwing them up. Introspect later.

                                                                      1. 1

                                                                        I’m not sure I follow. Making eye contact with audience during presentations is a highly recommended technique. You appear to be suggesting not doing this. Am I correct?

                                                                        1. 2

                                                                          No, Im saying you do your part in the presentation but dont really pay too much attention to audience reaction till later. Stay detached. What they’re doing is on them.

                                                                          1. 3

                                                                            That’s asking a lot of the speaker. This is quite hard to do.

                                                                            1. 3

                                                                              Also, unless the speaker is on a strict script, it’s inadvisable. Reading and reacting to the audience’s reaction to your presentation is essential.

                                                                              1. 3

                                                                                Just ignore the ones that are not actively listening, focus on the one that clearly are. If none of them are actively listening, you should probably rethink the purpose of the meeting.

                                                                                1. 1

                                                                                  Your original statement is about a speaker so affected by the audience that they worry about whether people with laptops are paying attention to them. That person can’t focus due to their worries or assumptions during the presentation. I said they should worry and assume less to focus just on delivering the content. If you think that’s too much, I wonder what your alternatives would be at that point.

                                                                                  There are two that come to mind. One is asking the person to put away their laptop. That can create conflict plus disrupt any positive thing they’re doing. The other is that the speaker who can’t speak easily with a distraction present will then analyze their audience in real-time, try to determine what they’re thinking about the content as the content is delivered, and continuously adapt their presentation based on that. It just seems like a lot more work and stress on that particular, easily-worried presenter than the basic technique of being detached from an audience for delivering pre-made content. Save that energy for any Q&A or discussion later.

                                                                                  Note: The detachment technique also has high ROI. You work hard to learn it. You then benefit from it repeatedly during rest of life and career maintaining it just doing it occasionally.

                                                                            2. 1

                                                                              That depends on the type of the meeting.

                                                                              If it is only about information transfer, then I agree. However speaking in front of a group of people is one of the worst ways to transfer information, so the meeting of a whole should be discussed.

                                                                              If the meeting is about deciding things, then as a speaker I feel it necessary to “connect” with my audience. The heart of a meeting should not be information but prioritization and valuation. I want to get a feel which aspects are important to which people. If people are distracted with note keeping the process becomes less efficient.

                                                                            3. 3

                                                                              There are myriad other things that can be a distraction; e.g., having exterior windows with a nice view, or glass walls in a busy office, or other sources of stress in life that cause us to zone out even if not looking away.

                                                                              We’re all adults, and we bear responsibility for our own attentiveness. I think it’s better to directly attack what seems to be the real problem: your colleagues paying attention, or not, for whatever reason.

                                                                              1. 4

                                                                                for whatever reason.

                                                                                That reason being, here, a laptop. For what it’s worth, I feel the same way about phones and tablets in meetings.

                                                                                There have been studies on this.

                                                                              2. 2

                                                                                Also, everybody who uses a laptop at a meeting is goofing off. If @jclulow is the exception to that, they should be pissed at everyone else making it so presenters and meeting organizers need to ban laptops to hold their audience’s attention, not the presenters making the only reasonable choice.

                                                                                1. 1

                                                                                  That implies jclulow should be doing something to get a crowd to change their behavior. That’s hard work if it succeeds at all. Also, seems like victim-blaming a little bit.

                                                                                  I’d still rather test your initial claim about everyone using them to goof off before expecting people like jclulow to do anything. I’d like some studies as @friendlysock posted on the matter with some numbers showing what percentage were goofing off along with how often. If barely at all, it wouldn’t be a concern to me. I’m also interested in whether the meetings were seen as useless formalities on top of what the company’s culture is (esp on multitasking). In the former, the meeting shouldn’t be happening at all, it should be shorter, or that person shouldn’t be there. In the latter, company that encourages workers to juggle multiple tasks at once shouldn’t be surprised if they’re doing it at meetings.

                                                                                  There’s possibly data to use in academia: management students running surveys and studies mention often meetings in their work. I don’t know what the data quality is like, though.

                                                                              3. 1

                                                                                people are trying to inflict their own personal mores onto others

                                                                                At the close of the article, I’m very careful not to be prescriptive. I bolded the I in the list at the end in order to emphasize that this is my behavior and this behavior has benefitted me and those whose meetings I attend. The prescriptive elements of that list are preparation items.

                                                                                I found through experimentation that not having my laptop in meetings works best for me because it forces me to be prepared moreso than being able to pull out my laptop in a pinch. Spending a minute or more mid-meeting getting the projector to work, flashing a high-resolution screen, or passing around a 5 pound laptop are major disruptors to the flow of a meeting. Meeting presentation orchestration is an art form!

                                                                                I want people to do what works best for them. Even more, I want people to try different habits to see if something new benefits them.

                                                                                1. 2

                                                                                  At the close of the article, I’m very careful not to be prescriptive. I want people to do what works best for them.

                                                                                  Yes, that was great! Sorry, I had tried to make clear that I was impressed with this in my original comment. Thanks for writing a constructive article.

                                                                            4. 1

                                                                              I worked at a company where meeting culture was as such that only one person brought a laptop for meetings (for projecting stuff, etc.). I now work at a company where everyone brings a laptop to meetings. I must say, meeting culture is better at the company I now work at. Primarily because those people who are bored by a meeting can “opt out” and do other stuff, rather than participating in the meeting with meaningless contributions.

                                                                              Opting out of meetings is usually not always possible, because sometimes you don’t know if your presence is needed or not. Maybe if people were better at making agendas, it would be easier to make that call.

                                                                            1. 5

                                                                              People bring laptops to meetings?

                                                                              I joke, I am in meetings with people and their laptops everyday. Notepad and pen/pencil is all I’ve ever brought to one. Its extremely obvious to me as to why you shouldn’t have your laptop out on the table as a meeting goes on.

                                                                              1. 7

                                                                                If I cannot bring my laptop to your meeting to take notes, I’m not coming. I find writing by hand tedious, and I don’t have any need to add the management of paper notes to my life.

                                                                                If I can’t use my laptop to take notes at your meeting, then it’s extremely obvious as to why I won’t be in attendance.

                                                                                1. 6

                                                                                  Thank you for your input. I’ll be sure to no longer invite you to my meetings.

                                                                              1. 10

                                                                                Cool that you went and did this! I built @technomancy’s atreus a while back, but don’t actually use it. I should, though…

                                                                                1. 3

                                                                                  Thanks - that’s a very cool looking keyboard!

                                                                                  1. 1

                                                                                    Why don’t you use it?

                                                                                    1. 4

                                                                                      The reason I don’t use it is simply because I don’t want to become dependent on it. @technomancy travels everywhere with his, and sets it up on top of his laptop keyboard. I could try that, I suppose, but it seems like a habit that’d be very hard to get into. Above all, I don’t have pain from regular laptop keyboards, so the increased ergonomics haven’t pushed me into it by necessity.

                                                                                      But, now that I’m saying this, I really should give it more of a chance, and try it again… There’s no reason not to, for sure.

                                                                                      1. 3

                                                                                        I don’t think learning a new keyboard will prevent you from using your laptop keyboard.

                                                                                        I switch freely between a maltron 3d and a thinkpad keyboard. The biggest challenge is learning the new keyboard in the first place (about 2 months for the maltron)

                                                                                        1. 1

                                                                                          You’re right, it doesn’t stop me from using a different keyboard. I spend enough time away from my desk, though, that I feel I’d have to bring it with to ever get comfortable with it.

                                                                                  1. 2

                                                                                    It’s fascinating to read about some of the classical architectures that are quite different from the ones we mostly use today. This caught my eye…

                                                                                    Machines worth keeping an eye on are the iAPX-432

                                                                                    … and reminded me of a blog post (by @bcantrill) about the 432 from almost a decade ago, which refers to a paper about the 432 from ~1988.

                                                                                    1. 2

                                                                                      They fixed a lot of it with i960. Just the RISC + object additions + high availability would make an interesting CPU for high-assurance systems. It ended up in the F-35. The modern take on capability-secure CPU’s with intent for practical adoption is Cambridge’s CHERI which runs FreeBSD already. Best interim project, aside from peer reviewing and pentesting their scheme, is to replace the MIPS CPU in there with a flexible RISC-V core for an ASIC. Then, with a UNIX protected at CPU level, there will be many fewer attacks to mitigate with main problem being a performance hit. Then, we can just go back to throwing hardware at our problems. :)

                                                                                    1. 17

                                                                                      If only json had allowed trailing commas in lists and maps.

                                                                                      1. 9

                                                                                        And /* comments! */

                                                                                        1. 3

                                                                                          And 0x... hex notation…

                                                                                          1. 3

                                                                                            Please no. If you want structured configs, use yaml. JSON is not supposed to contain junk, it’s a wire format.

                                                                                            1. 4

                                                                                              But YAML is an incredibly complex and truth be told, rather surprising format. Every time I get it, I convert it to JSON and go on with my life. The tooling and support for JSON is a lot better, I think YAMLs place is on the sidelines of history.

                                                                                              1. 4

                                                                                                it’s a wire format

                                                                                                If it’s a wire format not designed to be easily read by humans, why use a textual representation instead of binary?

                                                                                                If it’s a wire format designed to be easily read by humans, why not add convenience for said humans?

                                                                                                1. 1

                                                                                                  Things don’t have to be black and white, and they don’t even have to be specifically designed to be something. I can’t know what Douglas Crockford was thinking when he proposed JSON, but the fact is that since then it did become popular as a data interchange format. It means it was good enough and better than the alternatives at the time. And is still has its niche despite a wide choice of alternatives along the spectrum.

                                                                                                  What I’m saying is that adding comments is not essential a sure-fire way to make it better. It’s a trade-off, with a glaring disadvantage of being backwards incompatible. Which warrants my “please no”.

                                                                                              2. 1

                                                                                                http://hjson.org/ is handy for human-edited config files.

                                                                                                1. 1
                                                                                                2. 5

                                                                                                  The solutions exist!

                                                                                                  https://github.com/json5/json5

                                                                                                  I don’t know why it’s not more popular, especially among go people.

                                                                                                  There is also http://json-schema.org/

                                                                                                  1. 3

                                                                                                    I had to do a bunch of message validation in a node.js app a while ago. Although as Tim Bray says the spec’s pretty impenetrable and the various libraries inconsistent, once I’d got my head round JSON Schema and settled on ajv as a validator, it really helped out. Super easy to dynamically generate per message-type handler functions from the schema.

                                                                                                    1. 2

                                                                                                      One rather serious problem with json5 is its lack of unicode.

                                                                                                    2. 3

                                                                                                      I think this only show that JSON has chosen tradeoff that make it more geared to be edited by software, but has the advantage of being human editable/readable for debugging. JSON as config is not appropriate. There is so many more appropriate format (toml, yaml or even ini come to mind), why would you pick the one that doesn’t allows comments and nice sugar such as trailing commas or multiline string. I like how kubernetes does use YAML as its configuration files, but seems to work internally with JSON.

                                                                                                      1. 8

                                                                                                        IMO YAML is not human-friendly, being whitespace-sensitive. TOML isn’t great for nesting entries.

                                                                                                        Sad that JSON made an effort to be human-friendly but missed that last 5% that everyone wants. Now we have a dozen JSON supersets which add varying levels of complexity on top.

                                                                                                        1. 11

                                                                                                          “anything whitespace sensitive is not human friendly” is a pretty dubious claim

                                                                                                          1. 5

                                                                                                            Solution: XML.

                                                                                                            Not even being ironic here. It has everything you’d want.

                                                                                                            1. 5

                                                                                                              And a metric ton of stuff you do not want! (Not to mention…what humans find XML friendly?)

                                                                                                              This endless cycle of reinvention of S-expressions with slightly different syntax depresses me. (And yeah, I did it too.)

                                                                                                              1. -5

                                                                                                                Triggered.

                                                                                                                1. 13

                                                                                                                  Keep this shit off lobsters.

                                                                                                        1. 7

                                                                                                          So, why isn’t Theo called on his rants more often?

                                                                                                          We even have a nice little epithet ready-made: DeRants.

                                                                                                          1. 3

                                                                                                            I think people who aren’t up for that particular brand of interaction just avoid the project – which is probably how he likes it!

                                                                                                            I was using OpenBSD for pf and relayd for a few years, but I didn’t participate in the mailing list.

                                                                                                            1. 3

                                                                                                              Because it happens much less often than you or anyone else believes.

                                                                                                              I’m participating in all the project related mailing lists daily - it’s easier to find someone completely not related to the project doing a rant on our list than it is to find Theo finally pushed into replying.

                                                                                                              1. 2

                                                                                                                I’m an infrequent reader of the OpenBSD lists (I normally read them weekly), but a quick scan of December’s posts by Theo has 4-5 posts that are rather abrasive (at least to my probably over-sensitive eyes).

                                                                                                                For example: 1 2 3 4

                                                                                                                1. 1

                                                                                                                  Now go through the emails from the same time-period looking out for Rupert Gallagher ie. in the SSD TRIM thread - note you won’t be able to on marc.info as he uses protonmail. That’s a person not related to the project, Theo just stands out to you as he is a known person and people trigger him with emails like the one quoted below:

                                                                                                                  Date: Wed, 06 Dec 2017 03:15:57 -0500
                                                                                                                  From: Rupert Gallagher
                                                                                                                  To: Mike Burns
                                                                                                                  Cc:
                                                                                                                  Subject: Re: TRIM on SSD

                                                                                                                  I know well that article, because it is several years old with no updates.

                                                                                                                  Those working on ffs should do what they are supposed to do. Lack of money? Setup a stickers sale or a kickstarter, get the money and just fucking do it.

                                                                                                                  Sent from ProtonMail Mobile

                                                                                                                  edit: removed emails from the headers, no point feeding spam bot crawlers.

                                                                                                                  1. 2

                                                                                                                    I don’t disagree that there are plenty of abrasive posts from others on -misc (probably more so than on any other list I’m subscribed to… well other than cypherpunks, but that’s another story…). I can’t help but think that the tone of some of Theo’s posts has encouraged others to post in a similar vein.

                                                                                                                    Yes, I know “shut up and show me the code”, but surely newbies need to start somewhere?

                                                                                                                    1. 1

                                                                                                                      Is that a deliberate feature of Proton Mail or a happy accident? I fail to see how a service like Proton Mail can work for a mailing list scenario, surely the mail is sent in plain text as per normal?

                                                                                                                      1. 1

                                                                                                                        Well you can read it and pass it through a base64 decoder. It’s just something the marc.info mail archive software is not able to handle and the user decided not to disable that in his protonmail settings. It’s not for security.

                                                                                                              1. 12

                                                                                                                I’m a big fan of having data in files, where you can look at their contents or replace or alter them in a pinch to solve a problem. Where the operating system can be at least somewhat aware of the structure of the data, so that we can observe and instrument an application with OS-level tools without needing to trust whatever debugging facilities are able to run inside the process itself. There are lots of occasions where I want to make use of facilities provided by another process alongside, e.g., cron or rsyslogd. Once you have at least two thoroughly different programs in the mix, the whole “fat binary” approach doesn’t really help anyway.

                                                                                                                I really don’t buy the “everything must be in the one binary!” approach at all, regardless of how trendy it is in Go and Rust at the moment. If it works for you, I suppose that’s great – but some of us will continue along the less windswept and interesting path of incrementally improving the systems that already work very well for us and countless others.

                                                                                                                1. 2

                                                                                                                  I could build into a “fat binary” a FUSE-like filesystem and you could integrate it like same, so I’d like to understand your objection better. Is it convenience, taste, … or operational need.

                                                                                                                  A long time ago I had to move a comprehensive system from OS/360 under MVS, and a variant running under Multics … to an early UNIX system. There were tons of dependencies on different OS features/capabilities not then present on UNIX. Eventually found that all of them were distractions, some quite costly, that I remedied with a “fat binary”, because that was the only thing possible at the time.

                                                                                                                  The experience left me wary of arbitrary OS abstractions that in the end did not pass muster. I intentionally left out shared libraries from an OS I did, because it did not benefit enough for the added complexity that it added.

                                                                                                                  1. 11

                                                                                                                    Why would I want to reinvent the file system that I already have, which works just fine, inside a program?

                                                                                                                    I understand that shared libraries are a minefield of nuance and are difficult to get right, which is why they often get left out of new projects (e.g., Go) in the early years. Even Go seems to be getting some sort of nascent shared library support, though: see plugins.

                                                                                                                    On an established system where we’re already able to use them to great effect, I really see no reason to stop. As with the file system: we’ve built it already, and it works, and we’ll keep improving it. I’m really not at all worried about some hypothetical future in which we’re all suddenly forced to throw out the baby, the bath water, and the bath itself.

                                                                                                                    1. 2

                                                                                                                      Not to mention the security implications. If there’s a security problem in a library, you can update that library. For Rust/Go apps, you need to update the dependency and recompile and redistribute that application.

                                                                                                                      There was a researcher at Ruxcon years ago who was studying embedded libraries in C/C++ projects. An excellent example is Firefox, which doesn’t link to a lot of system libraries, but has its own embedded JPEG and PNG decoders. FF is kinda insane because it’s pretty much it’s own little operating system in a lot of ways.

                                                                                                                      1. 2

                                                                                                                        It’s a tough balance to strike sometimes. If you’re trying to ship software that will run on lots of systems, but you need to depend on things which don’t really promise a stable interface, sometimes you have no choice but to bundle a private copy.

                                                                                                                      2. 1

                                                                                                                        You misunderstand. No reinvention is required, one can redirect the kernel to perform the filesystem within an embedded object that is part of an existing container, namely the executable. And this was a “for example” to deal with your need for “data in files” call out. Please don’t obsess on the leaves instead of the forest being discussed.

                                                                                                                        The direction being argued here is why do we have some much crap in OS/kernel in the first place. Understand that many just make use of what happens to be there, that’s fine, we all need to get shit done.

                                                                                                                        But shared objects create contention for multi-threaded, multi-core systems - they add complexity and reduce the benefits of parallelism and fault-tolerance. So if one aspires to 100x cores/threads/parallelism … we don’t want to spend resource uselessly for abstractions that subtract for little/no gain.

                                                                                                                        So back to what I asked you - what are the objections to “everything in the existing container” other than “that’s not what I do right now”? I don’t find all the overhead for additional containers justified by that.

                                                                                                                        1. 10

                                                                                                                          I don’t “misunderstand”, I just think you’re talking out of your hat.

                                                                                                                          What do you mean shared objects create contention? Once the initial relocation is performed, subsequent calls to functions are generally just calls. It’s not like there’s a mutex in the path of every call to a shared library.

                                                                                                                          Also, the idea that you can just “redirect the kernel” to store all your files inside an ELF object seems like a stretch at best. What if you need to append to or modify one of those files? Why take on the complexity of something like FUSE to paper over the deficiency of requiring everything to be jammed into the executable, when you could have otherwise just called fopen()?

                                                                                                                          It’s true that operating systems are larger and more complicated than they used to be, but that’s because they used to be bloody awful. They used to panic instead of failing a system call. They used to need to operate on machines that had a single processor and I/O bus, and a flat memory architecture. Machines now are hugely more complicated themselves, and modern operating systems reflect our best efforts to provide a substrate for a wide variety of applications.

                                                                                                                          I’d rather continue to improve on all of the work done already, where we already have some amazing tools and a lot of accumulated experience, rather than pretend that reinventing everything is a good engineering decision.

                                                                                                                          1. 2

                                                                                                                            At work, I wrote a program in using Lua. To simplify the installation of the program, I embedded all the Lua modules (both written in C and Lua) into the executable. All I had to do then was extend the normal Lua method of loading modules to include looking inside the executable for them (not hard to do—Lua has hooks for doing just that). That way, we only have one file to install in production, instead of a dozen or so. I don’t need the ability to modify those files, so in this case, it works.

                                                                                                                            You got me about the shared libraries though.

                                                                                                                            1. 3

                                                                                                                              Yup, do this with statically linked modules and an interpreter (not Lua but similar). Works great, for all the same reasons.

                                                                                                                            2. 1

                                                                                                                              Do you understand the term “shared”? That means multiple processes/threads “share” it. As opposed to a “shared nothing” environment, which is entirely impermeable.

                                                                                                                              In a true shared library system, the same library file is mmap’ed content in all the MMU’s of all using processes/threads. Sure the data is copy on modify, but all the support for the shared abstraction involves hardware/software to maintain this abstraction, which isn’t for free. And yes you can have re-entrent sitations with libraries, like I/O and event handing, where you do need to have the code able to anticipate these issues.

                                                                                                                              Many of the early multicore systems had tons of esoteric bugs of this sort, which is why we had global locks to “safe” the programming environment.

                                                                                                                              The kernel has virtual filesystem interfaces that express the semantics of a filesystem implementation, where you can redirect the functionality elsewhere (other hosts via RPC, user processes via library reflection/exception). With it one can embed the content of a filesystem inside an executable container in various ways. And I didn’t say ELF either. (Note that one can shortcut content transfer various ways so its even faster than going through the kernel.)

                                                                                                                              Your argument is presumptive that something is being “papered over” - it’s actually more optimal because there is less code for the common case of the subsystem being within the address space for the references needed by the microservice it is implementing. In net far simpler than what is being done today.

                                                                                                                              Operating systems have a much larger scope of what they have to contend with, that’s why they all tend to “bit rot”, because everyone wants to keep their bit of crap in it, human nature.

                                                                                                                              I didn’t ask what you liked, I asked to defend the need for something. You act as if I’m stealing your dog or something. I doubt you have a clue to anything I’m talking about, and just want to keep obfuscating the discussion so as to hide you lack of understanding of why you use containers, because … you just use them.

                                                                                                                              FIne. Use them. But you don’t know why, and you don’t want to do anything but distract from this fact by focusing on a red herring that was served up as a means to start a discussion. Die on that hill if you must, but you still aren’t responsive to my inquiry.

                                                                                                                              1. 15

                                                                                                                                Hello person relatively new to lobste.rs, just a comment on your how you communicate:

                                                                                                                                In this thread you seem to make a vague and poorly specified claim, like put a FUSE filesystem in your binary or same thing about how the named shared objects means they are shared so things have to be more complicated and error prone. I believe that your vague comments do not help the discussion. While I do not think @jclulow is doing himself a service by responding to you, I to assumed you meant an ELF binary with some crazy FUSE setup.

                                                                                                                                It’s really hard for me to tell if you have a good idea or are just being contrarian given that you aren’t being more specific in your proposal. We’re left making assumptions about what you mean (which is actually our fault) but rather than clarify how our assumptions are incorrect you are seeming to use it as a way to be smug. In particular:

                                                                                                                                Do you understand the term “shared”? That means multiple processes/threads “share” it. As opposed to a “shared nothing” environment, which is entirely impermeable.

                                                                                                                                and

                                                                                                                                Please don’t obsess on the leaves instead of the forest being discussed.

                                                                                                                                I think this discussion would be much more productive if you could specify what you are proposing. I’m quite interested in it finding out.

                                                                                                                                Feel free to completely disregard this comment if you think it’s full of shit.

                                                                                                                                1. 3

                                                                                                                                  Even if there is less code running using this method, that does not make the code less potentially buggy. Any OS you’ll likely deploy on will have more tested and proven code than what you or your small team can produce.

                                                                                                                                  Less depedance on third parties can be good, but up to a certain to a certain point.

                                                                                                                                  I believe, by the way, that Docker at least shares the filesystem layers between similar containers. Not sure how well that works, and if then binaries are also still shared in memory.

                                                                                                                                  1. -1

                                                                                                                                    But then we have dependencies between containers? Don’t we want containers to be idempotent?

                                                                                                                            3. 0

                                                                                                                              Why would I want to reinvent the file system that I already have, which works just fine, inside a program?

                                                                                                                              Why don’t we put sqlite into the kernel?

                                                                                                                              Invention is not the issue. You would use well known libraries in your program instead of developing stuff yourself.

                                                                                                                              I picked sqlite as an example, because it considers itself a competitor to the open syscall and thus related the file systems. Similarly compression and encryption is file system related. Why can’t my kernel treat zip files as directories? Instead some GUIs reinvented that while bash/zsh cannot do that.

                                                                                                                              1. 2

                                                                                                                                Could you elaborate on what your response means? The proposed solution is to build a fat binary that includes a file system in it and to use FUSE to interact with this fat binary. What does that have to do with sqlite in the kernel? To me, the FUSE suggestion seems like a huge hack to get around using kernel primitives for no particularly good reason other than one can, as far as I can tell. I’m not even really sure what it would mean to start editing the binary given one’s usual expectations on binaries.

                                                                                                                                1. 0

                                                                                                                                  It is a balancing act, what should be put where. Sometimes it makes sense to put the file system into the binary. Sometimes to put the file system into the kernel. Sometimes to put the file system into a daemon (microkernels). For example I have heard that some databases run directly on block devices because using the file system is slower.

                                                                                                                                  Jclulow is “a big fan of having data in files” because the default tools of the operating system can then be used to inspect and change the data. To pursue that way means we should extend the capabilities of the OS, for example by putting sqlite into the kernel. Then default tools of the operating system can then be used to inspect and change the data. I now think that zip file support is actually the better example. You could use ls, grep, find, and awk on zip file contents. It seems to be available via FUSE. It does not seem to be a popular option though. Why? Genuine question but I guess there are good reasons.

                                                                                                                                  I do not consider the Unix philosophy that great and it seems to be underlying this discussion (Just use simple files!). Unix likes to compose via files, pipes, and processes (leading to containers). Others prefer to compose via data types, functions, and libraries (leading to fat binaries). I do not see inherent advantages in either of the approaches.

                                                                                                                                  1. 3

                                                                                                                                    I don’t see the connection to the Unix philosophy here. In Windows it’s common for executables and their configurations to be separate as well. I’m trying to understand exactly what is being proposed but struggling. Are you saying that when I build nginx, the nginx executable has all of the resources it will use including config, and any code for dynamic content it will generate?

                                                                                                                                    1. 1

                                                                                                                                      Please describe what you mean by “UNIX philosphy”?

                                                                                                                          1. 4

                                                                                                                            I remember watching this as a kid, and it was great!

                                                                                                                            I also remember it for introducing me to the bizarre cover of Take 5 that they use as the theme music.

                                                                                                                            1. 4

                                                                                                                              This looks pretty cool! How does it work under medium to heavy load? I’d like to set it up as an online service for a small community of ~100 users.

                                                                                                                              Thanks for sharing!

                                                                                                                              PS: I feel bad that every good post from @tedu just end up discussing his SSL cert choice..

                                                                                                                              1. 3

                                                                                                                                I don’t know if I’d want to set this up for unsuspecting users. I can be a little heavy handed with my aesthetic choices. :) Generally though it’s pretty fast. I have nothing like benchmarks, though. Over the past week, I couldn’t tell when I was using the proxy or not except when visiting particular sites.

                                                                                                                                I’d look into proxy auto config, too, where you write a little javascript file that tells the browser when to use the proxy based on hostname.

                                                                                                                                1. 1

                                                                                                                                  I just tested it locally. It works rather well indeed! Navbars get in the way a lot though.. This is definitely not something you want to force onto your users indeed. But that could be a service, eg, “use proxy strip.your.domain:8090 for cleaner content”. And then users are free to use it or not.

                                                                                                                                  The code’s pretty easy to modify (eg, add input boxes, new domains/tld, …), so really, thanks for this!

                                                                                                                                2. 1

                                                                                                                                  ~100 users is not meant to be medium to heavy load

                                                                                                                                  1. 1

                                                                                                                                    It’s not much, but you’ll agree that “Can this software support ridiculous load?” would be a stupid question

                                                                                                                                  2. 1

                                                                                                                                    I’m reasonably confident he was able to determine in advance that discussion of the resultant tedium would be an unavoidable result of this particular performance art.

                                                                                                                                    1. 9

                                                                                                                                      But now the mods will delete tedious comments, so all is well.