1. 18

    Semi-random side note: Jackson said on twitter that he was really annoyed with this headline: https://twitter.com/ummjackson/status/949313665139802112

    1. 3

      Thanks. It’s far better to read the original source with all its nuance than to bother with an article that cherry-picks it and presents it as news. This is especially true when the original source is nothing more than three short paragraphs.

    1. 30

      All of them:

      The fact that they exist at all. The build spec should be part of the language, so you get a real programming language and anyone with a compiler can build any library.

      All of them:

      The fact that they waste so much effort on incremental builds when the compilers should really be so fast that you don’t need them. You should never have to make clean because it miscompiled, and the easiest way to achieve that is to build everything every time. But our compilers are way too slow for that.

      Virtually all of them:

      The build systems that do incremental builds almost universally get them wrong.

      If I start on branch A, check out branch B, then switch back to branch A, none of my files have changed, so none of them should be rebuilt. Most build systems look at file modified times and rebuild half the codebase at this point.

      Codebases easily fit in RAM and we have hash functions that can saturate memory bandwidth, just hash everything and use that figure out what needs rebuilding. Hash all the headers and source files, all the command line arguments, compiler binaries, everything. It takes less than 1 second.

      Virtually all of them:

      Making me write a build spec in something that isn’t a normal good programming language. The build logic for my game looks like this:

      if we're on Windows, build the server and all the libraries it needs
      if we're on OpenBSD, don't build anything else
      build the game and all the libraries it needs
      if this is a release build, exit
      build experimental binaries and the asset compiler
      if this PC has the release signing key, build the sign tool
      

      with debug/asan/optdebug/release builds all going in separate folders. Most build systems need insane contortions to express something like that, if they can do it at all,

      My build system is a Lua script that outputs a Makefile (and could easily output a ninja/vcxproj/etc). The control flow looks exactly like what I just described.

      1. 15

        The fact that they exist at all. The build spec should be part of the language, so you get a real programming language and anyone with a compiler can build any library.

        I disagree. Making the build system part of the language takes away too much flexibility. Consider the build systems in XCode, plain Makefiles, CMake, MSVC++, etc. Which one is the correct one to standardize on? None of them because they’re all targeting different use cases.

        Keeping the build system separate also decouples it from the language, and allows projects using multiple languages to be built with a single build system. It also allows the build system to be swapped out for a better one.

        Codebases easily fit in RAM …

        Yours might, but many don’t and even if most do now, there’s a very good chance they didn’t when the projects started years and years ago.

        Making me write a build spec in something that isn’t a normal good programming language.

        It depends on what you mean by “normal good programming language”. Scons uses Python, and there’s nothing stopping you from using it. I personally don’t mind the syntax of Makefiles, but it really boils down to personal preference.

        1. 2

          Minor comment is that the codebase doesn’t need to fit into ram for you to hash it. You only need to store the current state of the hash function and can handle files X bytes at a time.

        2. 14

          When I looked at this thread, I promised myself “don’t talk about Nix” but here I am, talking about Nix.

          Nix puts no effort in to incremental builds. In fact, it doesn’t support them at all! Nix uses the hashing mechanism you described and a not terrible language to describe build steps.

          1. 11

            The build spec should be part of the language, so you get a real programming language and anyone with a compiler can build any library.

            I’m not sure if I would agree with this. Wouldn’t it just make compilers more complex, bigger and error prone (“anti-unix”, if one may)? I mean, in some cases I do appriciate it, like with go’s model of go build, go get, go fmt, … but I wouldn’t mind if I had to use a build system either. My main issue is the apparent nonstandard-ness between for example go’s build system and rust’s via cargo (it might be similar, I haven’t really ever used rust). I would want to be able to expect similar, if not the same structure, for the same commands, but this isn’t necessarily given if every compiler reimplements the same stuff all over again.

            Who knows, maybe you’re right and the actual goal should be create a common compiler system, that interfaces to particular language definitions (isn’t LLVM something like this?), so that one can type compile prog.go, compile prog.c and compile prog.rs and know to expect the same structure. Would certainly make it easier to create new languages…

            1. 2

              I can’t say what the parent meant, but my thought is that a blessed way to lay things out and build should ship with the primary tooling for the language, but should be implemented and designed with extensibility/reusability in mind, so that you can build new tools on top of it.

              The idea that compilation shouldn’t be a special snowflake process for each language is also good. It’s a big problem space, and there may well not be one solution that works for every language (compare javascript to just about anything else out there), but the amount of duplication is staggering.

              1. 1

                Considering how big compilers/stdlibs are already, adding a build system on top would not make that much of a difference.

                The big win is that you can download any piece of software and build it, or download a library and just add it to your codebase. Compare with C/C++ where adding a library is often more difficult than writing the code yourself, because you have to figure out their (often insane) build system and integrate it with your own, or figure it out then ditch it and replace it with yours

              2. 8

                +1 to all of these, but especially the point about the annoyance of having to learn and use another, usually ad-hoc programming language, to define the build system. That’s the thing I dislike the most about things like CMake: anything even mildly complex ends up becoming a disaster of having to deal with the messy, poorly-documented CMake language.

                1. 3

                  Incremental build support goes hand in hand with things like caching type information, extremely useful for IDE support.

                  I still think we can get way better at speeding up compilation times (even if there’s always the edge cases), but incremental builds are a decent target to making compilation a bit more durable in my opinion.

                  Function hashing is also just part of the story, since you have things like inlining in C and languages like Python allow for order-dependent behavior that goes beyond code equality. Though I really think we can do way better on this point.

                  A bit ironically, a sort of unified incremental build protocol would let compilers avoid incremental builds and allow for build systems to handle it instead.

                  1. 2

                    I have been compiling Chromium a lot lately. That’s 77000 mostly C++ (and a few C) files. I can’t imagine going through all those files and hashing them would be fast. Recompiling everything any time anything changes would probably also be way too slow, even if Clang was fast and didn’t compile three files per second average.

                    1. 4

                      Hashing file contents should be disk-io-bound; a couple of seconds, at most.

                      1. 3

                        You could always do a hybrid approach: do the hash check only for files that have a more-recent modified timestamp.

                      2. 1

                        Do you use xmake or something else? It definitely has a lot of these if cascades.

                        1. 1

                          It’s a plain Lua script that does host detection and converts lines like bin( "asdf", { "obj1", "obj2", ... }, { "lib1", "lib2", ... } ) into make rules.

                        2. 1

                          Codebases easily fit in RAM and we have hash functions that can saturate memory bandwidth, just hash everything and use that figure out what needs rebuilding. Hash all the headers and source files, all the command line arguments, compiler binaries, everything. It takes less than 1 second.

                          Unless your build system is a daemon, it’d have to traverse the entire tree and hash every relevant file on every build. Coming back to a non-trivial codebase after the kernel stopped caching files in your codebase will waste a lot of file reads, which are typically slow on an HDD. Assuming everything is on an SSD is questionable.

                        1. 2

                          I cracked the first password with “AATFDAFD”. The second disk had password “HGFIHD” and the third had “AAJMAKAY”. Apparently random strings were popular passwords back then.

                          I suspect these are acronyms or something similar rather than random strings. The last one, for example: it ends in AKAY… as in A. Kay, as in Alan Kay? It’s hard to tell what the first part of the password was since the first two characters were lost.

                          1. 3

                            Author response:

                            I should mention that I didn’t want to leak someone’s actual password (even if it’s 40 years old), so I perturbed the passwords slightly. The real password doesn’t exactly end in AKAY, so it’s not Alan Kay. (Apologies for throwing cold water on your clever idea.)

                            1. 1

                              When I first read it (before realizing the author slightly messed them up) I figured AATFDAFD was just easy to type with your left hand on a QWERTY keyboard - a mechanical rather than logical password. Try it!

                              But now I see from Doug Wyatt’s comment that it is an inside joke.

                            1. 1

                              Neat article. I’m going to add “midnight always happens once per day” to my mental list of “falsehoods programmers believe about time”.

                              1. 4

                                Chollet’s arguments read like pop sci handwaving while Yudkowsky’s rebuttal is pleasantly rigorous.

                                On a related note, I often observe two huge cognitive failures around big issues like climate change or AI.

                                One is in assessing possibilities and risks. AI explosion may not be probable but the risk is that it’s possible, and the potential negative consequences are huge, so caution is definitely warranted. Yet many people hasten to deny the possibility altogether by using weak or totally irrational justifications.

                                The other is a failure to grasp non-linear effects or insistence on linear behaviour contrary to evidence (eg Chollet seems to be asserting that progress can only ever be linear, without really substantiating).

                                1. 6

                                  climate change is a much bigger threat, because it’s super risky and super likely (certain, even).

                                  Apart from that, I’m not very convinced by the rebuttal. I still don’t believe in exponential curves in nature (the GDP? recent notion, moving target, not even clear what it measures). Progress in science becomes slower whenever a field matures; good luck making breakthroughs in areas of maths that are 2 centuries old. It should be the same for an hypothetical self-improving AI: it’s smarter, but making something even smarter is also much more difficult, so in the end it’s all about diminishing returns.

                                  1. 2

                                    Totally agree about climate change. What I was trying to say is: even if one takes the position that the worst effects of climate change have very low probability (contrary to established science), the consequences are so grave that action has to be taken regardless. But this obvious conclusion is lost on many people for some bizarre reason.

                                    It’s a similar story with AI. As soon as we establish that there is a possibility of superintelligent self-improving AI, we have to understand that there are huge risks associated with that, and have to proceed with caution rather than burying heads in sand.

                                    To your points:

                                    • I think the important thing is not to be convinced by the proponents of intelligence explosion, but rather to recognise that nobody has proof that it’s impossible.
                                    • We don’t need to find exponential processes in nature, because we’re not talking about a naturally occurring process (and it wouldn’t prove anything one way or another, anyway).
                                    • Progress in science, I believe, is pretty much impossible to measure, and I’m not sure that it has much relation to self-improving intelligence.

                                    Somewhat tangential to this discussion: for the purposes of assessing the risk of AI, it’s useful to take a broader perspective and realise that AI, in fact, doesn’t need to exceed human intelligence or be an autonomous agent to cause a lot of problems. In this context, arguments about the possibility of intelligence explosion are a distraction.

                                    1. 1

                                      As soon as we establish that there is a possibility of superintelligent self-improving AI, we have to understand that there are huge risks associated with that, and have to proceed with caution rather than burying heads in sand.

                                      That’s like calling for planetary defences against an alien invasion because the discovery of unicellular life on Mars is imminent.

                                      We don’t have strong AI. The pattern matching we call “AI” right now is nowhere near that, yet we are supposed to believe that the qualitative jump is imminent. I’ll go with the voice of reason on this one.

                                      1. 2

                                        This piece on when technological developments are worth worrying about was a nice read on the issue. Not sure I’m convinced, but it’s at least taking seriously the question of whether anyone should care yet.

                                        1. 1

                                          But how do you determine what the voice of reason is? There are many reasonable people advising caution it seems. Are you sure you’re not going with comforting beliefs rather than reason?

                                          1. 1

                                            But how do you determine what the voice of reason is?

                                            By the amount of changes of past mechanisms needed to fulfil the prophesied future and my own knowledge of medicine and software engineering.

                                            1. 1

                                              It’s not quite clear to me why expertise in medicine or software engineering is relevant to forming a reasoned position on intelligence explosion. (Let me know?)

                                              I guess you might instead be referring to expertise in machine learning, AI, and neuroscience, in which case I’d love to learn your reasoning for why it’s impossible for intelligence explosion to occur (as long as it’s more substantial than reasoning by analogy, historical or otherwise).

                                    2. 2

                                      Got a link to the rebuttal?

                                    1. 5

                                      I feel bad saying this (I really do), but I can’t help shake the feeling that the true motive of the author was to market his game via this story.

                                      The world is filled to overflowing with failed business ventures. I’m not sure this one is particularly different or insightful or noteworthy.

                                      1. 4

                                        I actually found this perspective pretty interesting – the bar for success seemed really low. 300 sales to survive, 700 to stay in business? That’s what, between $1500 and $3500 after Steam’s cut and before taxes? In that light it’s actually kind of depressing how hard it is to even make a splash.

                                        1. 1

                                          the bar for success seemed really low. 300 sales to survive, 700 to stay in business?

                                          For a single-person business that seems reasonable. Compare with the “Manabi line”.

                                          In that light it’s actually kind of depressing how hard it is to even make a splash.

                                          There are just so many games out there though. Average sales are always going to equal number of users * number of games per user / number of games on sale. And there are so many people who want to make games.

                                        2. 3

                                          As I talked about above, I do think it’s worth talking about these kinds of situations. There are a lot of young people interested in games who would love to get into game development, there are a lot of colleges advertising their game-making programs and talking about how it’s such a great and fun career, and there’s a lot of attention given to the successful stories in indie development. Failure stories like these get told a lot less often, even though they’re likely the more typical scenario. If we don’t talk about them, we don’t give the people considering doing indie game development a clear picture of the risk involved.

                                          As for the marketing aspect, I can’t say whether that was his primary motive, but well, hey, I’m sure it doesn’t hurt.

                                        1. 4

                                          This is why I personally stopped focusing on game development. As a hobby it’s great, but it’s very hard to make a stable career as an indie. Technical skills don’t differentiate you anymore with the explosion of great free game-making tools either. What really sets you apart is your ability to market your game, and that’s not my core skill set.

                                          Remember: for every story you read like this, there are dozens, maybe hundreds of others that you don’t. Almost nobody gives interviews to the “losers” in the indie market.

                                          1. 2

                                            The problem is that the game sucks.

                                            The key to a good game is actually arts and game design, not technical aspect, unless you are doing something completely game-changing like quake did.

                                            Why did he choose the grid-system ala eye of the beholder? I’m pretty sure this choice derived from table-top dnd back in the day and that choice is because it makes it easier to realise the mechanics of the game with pen and paper. It’s just awkward on a pc.

                                            Besides that, what is to differentiate this game from other roguelike dungeon crawling games for which there are many really good ones? The fact that monsters can also pick up items? wow. such inspired.

                                            What really sets you apart is your ability to market your game

                                            I have to disagree here. Game discovery is at an all time high and I think there has been no better time than now for the better games to rise to the top. Gamers are so connected via social media, reddit, youtube etc that if your game is actually good people will find out.

                                            1. 4

                                              I mean, I’m not going to argue that the game was great. To be honest, I didn’t even research the game itself.

                                              But this is a story I’ve seen multiple times now, and even been a part of personally (though to a less tragic extent, since I was too hesitant to jump in with both feet the way this guy did). A game can’t just be good, it has to be great, in a unique way, in order to stand out.

                                              The point I was trying to make when talking about the technical aspects is that back around 10 years ago, when a game like World of Goo was considered to be the pinnacle of the indie game scene, there were very few good game-making tools available, especially free ones. You pretty much had to either write your own engine, or buy one from the smaller market of game-making tools available for you. And most of those tools only did 2D games. This meant that indie games back in the day tended to have to roll a lot more of their own technology, and that created a much higher barrier to entry.

                                              These days, with the proliferation of great game-making tools, most of them free, that aspect is a lot easier. Don’t get me wrong, I think this is a good thing overall, since it allows a lot more people to make games and has led to a Cambrian explosion of new mechanics, new ideas, and even new genres. But on the developer’s side, that makes it much harder to stand out above the noise.

                                              And sure, discovery and discussion is easier. But mediums like that are awash with a lot of noise as well. Steam alone had 837 games last month. Why should people talk about yours?

                                              Marketing isn’t just advertisements and press releases, it’s fundamentally about answering the question I just asked. Understanding the market, and making something unique that it’ll stand out, is also good marketing. But with so much stuff available, doing that is hard.

                                              The point is that indie game development is risky business, and that the risk is far beyond what people might expect. Even just selling a few hundred or few thousand copies, in order to break even, can be difficult. You could easily come out with a game and have it sell next-to-nothing.

                                              That’s ultimately the moral that people should be taking from stories like this. They’re cautionary tales that don’t get told nearly often enough.

                                          1. 2

                                            Why does the option have a -unknown-unknown suffix?

                                            1. 14

                                              Compilers often consider their target as a triplet in the form machine-vendor-os, such as x86-pc-linux, which would describe a compiler targeting x86 IBM compatible machines running Linux. In the case of webasm, the machine target is webasm, but the vendor/OS are irrelevant and not known at compile time.

                                              1. 3

                                                Thanks for the clear explanation :)

                                                1. 2

                                                  The Rumsfeld of platforms?

                                              1. 3

                                                Pretty cool, but the error message could be worded a little more clearly for the application developer.

                                                1. 3

                                                  This may be due to my familiarity with pthreads and C++ mutexes, but this error honestly was lucid for me. Could you give me an idea what you wish the error would say?

                                                  1. 7

                                                    pthread_mutex_destroy on mutex with waiters!

                                                    Random sampling of thoughts that a novice might think about this:

                                                    • “What is pthread_mutex_destroy? I’m not calling that in my code.”
                                                    • “What’s a ‘waiter’? It sounds like I’m in a restaurant.”
                                                    • “That pthread thing is “on mutex”? What does it mean by “on mutex”? (I know it means “called on a mutex”, but it omits enough words to not only be unclear about this but to also be grammatically incorrect.)
                                                    • “What do I even do about this message? Is it even a bad thing?”

                                                    Here’s a sample error message that would get it across much more clearly:

                                                    Warning: program terminated while a mutex was still locked.

                                                    Or, if the error message isn’t limited to program termination:

                                                    Warning: a mutex was destroyed while it was still locked.

                                                    You could also add some informational text to tell the programmer what to look for:

                                                    Please ensure that all mutexes are unlocked before they are destroyed.

                                                    I know when you’re programming, and you’re deep in the context of a particular system like pthreads, it’s really easy to just throw an error message into stderr that relies heavily on the specific keywords for that context. But the people who’ll see that message won’t necessarily have that context. They could be seeing it somewhere else entirely, working on a far higher level system. It’s worth keeping that in mind.

                                                    1. 8

                                                      “What’s a ‘waiter’? It sounds like I’m in a restaurant.”

                                                      That’s a reach. If you’re programming with mutexes, you know what “waiting on a mutex” is, and “waiters” is pretty obvious from that.

                                                      “That pthread thing is “on mutex”? What does it mean by “on mutex”? (I know it means “called on a mutex”, but it omits enough words to not only be unclear about this but to also be grammatically incorrect.)

                                                      I think error-message-ese, like headline-ese, is a distinct enough form of expression to have its own rules, given how much priority is given to brevity in error messages.

                                                      “What do I even do about this message? Is it even a bad thing?”

                                                      In the spirit of the above: In error-message-ese, an exclamation point means it’s a bad thing, or at least highly unusual.

                                                    2. 3

                                                      I find the specific wording a tiny bit confusing because in the specific example given in the article here, no thread is actually blocked waiting on the lock when it’s destroyed - one holds it, but none are blocked.

                                                      Totally a nitpick though.

                                                  1. 10

                                                    While I’m kind of indifferent to the language itself, those detailed error messages and the --explain command-line flag make me salivate. More programming languages should try to strive for that level of detail where possible.

                                                    1. 2

                                                      But the rise of VR has lead to the resurgence of forward rendering and of MSAA.

                                                      Why is deferred rendering bad for VR?

                                                      1. 2

                                                        Sorry for the late reply, but I didn’t know the answer to this at the time!

                                                        It’s bad because writing high res G-buffers at 90Hz uses a ton of memory bandwidth, and apparently AA is a must for VR, so you also have to run a post processing AA algorithm on top of that which eats even more bandwidth.

                                                        So memory bandwidth ends up being the bottleneck, and switching to a single pass (or barely deferred like a depth pre-pass) forward renderer with MSAA makes you go faster.

                                                      1. 2

                                                        A more interesting question is that of password reset. Does one store a random password that’s e-mailed (and/or texted—though this might incur additional cost to the operator) to the user? The details matter: can one reset a password when the temporary one has already been issued? For how long is the temporary one valid? Can the existing one still be used? If the existing one is used, is the temporary one wiped out? Should there be intermediary “security questions” before issuance of a temporary token (as per the OSAWP recommendation)?

                                                          1. 1

                                                            Also an excellent article, you should submit it separately!

                                                        1. 15

                                                          I never quite understood the appeal of pulling all nighters. After about 9 PM, I’m done for the day and don’t try to write code anymore, because I know I’m gonna bugger it up big time if I try. Same rule for studying for exams - if I really need to cram, I’ll sleep now, and wake up early later to study for it.

                                                          1. 24

                                                            Different people have different cycles. Personally, I’m usually mostly useless before 3 PM and often at my most focused between 7 PM and midnight.

                                                            1. 6

                                                              Sometimes, you go on a roll. I never did it on a regular basis - but I find myself working in cycles - very intense for a week or so, then coast for a few days, then back. In the intense part, sometimes, it’s good to give in and keep coding until the part is done.

                                                              1. 21

                                                                I’ve found that it’s helpful for me to stop at a point where I know what the next step is. It makes ramping back up the next day easier, and helps maintain steady progress. If I stop when I finish something, it somehow makes it harder to get back into the groove the next time I start up. This is -especially- the case over weekends.

                                                                1. 5

                                                                  Me too, but I’ve learned to watch for when I get simultaneously too tired to think and too far “in the zone” to stop. It’s sort of like berserker mode. The next day I look at what I was doing for the last hour and it’s like “oh, instead of trying to scratch through the door with bare hands, I could have just turned the knob”.

                                                                2. 5

                                                                  I’m not a fan of working crazy hours but actually I’m often really productive if I eat dinner and start working around 7pm.

                                                                  Maybe it’s the lack of external interruptions, I don’t know.

                                                                  1. 3

                                                                    until about 9pm i’m done for the day, then if i don’t stop myself i could code until ~3am

                                                                  1. 6

                                                                    Erm, so I disable priv ports. I start a web server on port 80. Little Timmy comes along and starts a web server on port 80. What happens now?

                                                                    1. 3

                                                                      Timmy’s call to bind() fails, because the port is already in use by you.

                                                                      1. 4

                                                                        Then how is this actually useful for running multiple web servers on the same box? Wouldn’t it end up in a free-for-all, with the first user who starts up their Wordpress install getting port 80, while the rest have to contend with another, non-standard port?

                                                                        1. 12

                                                                          What *nix really needs is the ability to assign users ownership to IP addresses. With IPv6 you could assign every machine a /96 and then map all UIDs onto IP space.

                                                                          This is probably a better idea than even getting rid of privileged ports. You can bind to a privileged port if you have rw access to the IP.

                                                                          The real issue here is that Unix has no permissions scheme for IPs the way it does for files, etc.

                                                                          1. 5

                                                                            Its not so very much code to write a simple daemon that watches a directory of UNIX sockets, then binds to the port of the same name, forwarding all traffic. Like UNIX programming 101 homework easy. One can certainly argue its a hack, but its possible and its been possible for 20 years if that’s what people wanted. No kernel changes required.

                                                                            I think theres a corollary to necessity is the mother of all invention. If it hasn’t been invented, its not necessary. To oversimplify a bit.

                                                                        2. 2

                                                                          Sounds like Timmy needs a VM, so now I’m unclear on exactly how we’ve solved the energy crisis.

                                                                          1. [Comment removed by author]

                                                                            1. 2

                                                                              Well, what happens when I grab 10.0.0.2 too? And .3 and .4?

                                                                              There needs to be an address broker at some level, and I’m not convinced it’s impossible for that broker to be nginx.conf proxying a dozen different IPs to a dozen different unix sockets. There’s a fairly obvious solution to the problem that doesn’t involve redesigning everything.

                                                                              So why then does AWS offer VMs instead of jamming a hundred users onto a single Linux image? Well, what if I want to run FreeBSD? VM offers a nice abstraction to allow me run a different operating system entirely. Now maybe this is an argument for exokernels and rump kernels and so forth, but I didn’t really see that being proposed.

                                                                              1. [Comment removed by author]

                                                                                1. 6

                                                                                  OK, sorry, didn’t mean to be argumentative. But it’s a really long article, so I could only keep some of it in my head, and it got a lot of upvotes, so I’m trying to mine out what the insights are. But don’t feel personally obligated to explain. :)

                                                                                  There seemed to be a metapoint that things are inefficient because we’re using some old design from another era and it’s obsolete. But I didn’t see much discussion of why we can’t keep the design we have and use the tools we have in a slightly better way. Like nginx.conf to multiplex. Shared web hosting used to be a thing, right?

                                                                                  1. 4

                                                                                    I feel the metapoint was the opposite. The author wanted to go back to the old way things were done, but simply allow users to have their own IP address in the same way they have their own home directory.

                                                                                    You can already add many IP addresses to a single machine in BSD and Linux. In Linux (don’t know about BSD), you can even create virtual sub-interfaces that have their own info, but reside on the same physical interface. The author wanted unix permissions on interfaces too, rwx = read write bind. So your hypothetical user Timmy user would have /home/timmy and eth0:timmy, with rwx on /home/timmy, and r-x on eth0:timmy. They would be able to read their IP, MAC, etc, and bind to it, but not change it.

                                                                                    1. 2

                                                                                      Shared web hosting used to be a thing. I think people have realised that hosting a website means running code, one way or another, and traditional unix was never really suited to the idea that there would be multiple people organizing code on the same machine: multiple users yes, but unix is very much single-administrator.

                                                                                      More concretely, library packaging/versioning sucks: it’s astonishingly difficult to simply have multiple versions of a shared library installed and have different executables use the versions they specify. Very few (OS-native) packaging systems support installing a package per-user at all. Even something like running your website under a specific version of python is hard on shared hosting. And OS-level packaging really hasn’t caught up with the Cambrian explosion of ways to do data storage: people have realised that traditional square-tables-and-SQL has a lot of deficiencies but right now that translates into everyone and their dog writing their own storage engine. No doubt it will shake out and consolidate eventually, but for now an account on the system MySQL doesn’t cut it but the system has no mechanism in place for offering the user persistence-service-of-the-week.

                                                                                      Personal view: traditional unix shared too much - when resources were very tight and security not very important it made sense to optimize for efficiency over isolation, but now the opposite is true. I see unikernels on a hypervisor as, in many ways, processes-on-a-shared-OS done right, and something like Qubes - isolation by default, sharing and communication only when explicitly asked for, and legacy compatibility via VMs - as the way forward.

                                                                                      1. 1

                                                                                        Isn’t this exactly the problem solved by virtualenv and such? I’ve never found it especially difficult to install my own software. There was a big nullprogram post about doing exactly this recently.

                                                                                        There are some challenges for sure, but I get the sense that people just threw their hands in the air, decided to docker everything, and allowed the situation to decay.

                                                                                        1. 1

                                                                                          virtualenv has never worked great: a lot of Python libraries are bindings to system C libraries and depend on those being installed at the correct version. And there’s a bunch of minor package-specific fiddling because running in virtualenv is slightly different from running on native python.

                                                                                          People reached for the sledgehammer of docker because it solved their problem, because fundamentally its UX is a lot nicer than virtualenv’s. Inefficient but reliable beats hand-tuning.

                                                                                      2. [Comment removed by author]

                                                                                        1. 1

                                                                                          You can’t quite use namespaces that way. Net namespaces are attached to a process group, not a user. But doing something like I described would truly assign one IP address to a user. That user would have that IP address always. They would ssh to it, everything they started would bind to it by default, and so on. It would be their home IP in the same way their home directory is theirs.

                                                                                          1. 1

                                                                                            Docker is mentioned as also bloat because of image for each container.

                                                                                            Container and layer sprawl can be real. I can’t deny that :)

                                                                                            But you have two options to mitigate that:

                                                                                            1. Build your dockerfile FROM scratch and copy in static binaries. If you’re doing C, or Go, this works very well

                                                                                            2. Pick a common root - Alpine Linux (FROM alpine) is popular since it is fairly small. Once that is fetched, any container that references it will reuse it - so your twenty containers will not all go download the same Linux system.

                                                                                  2. 1

                                                                                    They have different ip addresses, There must be some way to use multiple addresses on the same linux install and if there isnt it would be easy to add.

                                                                                2. 2

                                                                                  From the article: network service multi-tenancy. What does that even mean? Good question. I think that in his ideal world we’d be using network namespaces and we’d assign more ips per machine.

                                                                                  Honestly it sounds like despite his concerns about container overhead, his proposal is basically to use containers/namespaces. Not sure why he thinks they are “bloated”.

                                                                                  1. 3

                                                                                    A few numbers would certainly make the overhead argument more concrete. Every VM has its own kernel and init and libc. So that’s a few dozen megabytes? But a drop in the bucket compared to the hundreds of megabytes used by my clojure web app. So if I’m provisioning my super server with lots of user accounts, I can get away with giving each user 960MB instead of 1024MB like I would for a VM? Is that roughly the kind of savings we’re talking about?

                                                                                1. 1

                                                                                  Are there any projects that wrap Win32 so you don’t get any Windows.h pollution? (And provide nice RAII types for everything?)

                                                                                  1. 1

                                                                                    MFC does a lot of what you’re asking, and has been supported by Microsoft since the 90s.

                                                                                    1. 1

                                                                                      CNoThanks :)

                                                                                  1. 7

                                                                                    Noticably absent from the discussion in the paper are things that “expert” programmers have to deal with: diffs, large codebases, and remote editing. This seems egregious given that one of their goals is to help both beginners and experts.

                                                                                    I fear that the furor over syntax errors is much overblown. I can’t say that syntax has been a problem for me, as an “expert”, for many years.

                                                                                    1. 5

                                                                                      How much of a problem is syntax for beginners, for that matter? I guess it can be weird and frustrating that you need a semicolon here and not there, but is it so different from English? For 12 years or more, I had to write papers knowing you added a comma here and not there, and if you got it wrong that’s minus a point. At least the compiler is kind enough to provide feedback before turning in your assignment!

                                                                                      I guess this could be an argument for a better English (good luck with that!), but the point is arbitrary syntax isn’t really insurmountable. It just feels weird when it’s made explicit instead of being given a dozen years to learn via osmosis.

                                                                                      1. 5

                                                                                        It isn a massive problem. I took a course on CS education, and the professor who taught it said that she structured one of her courses in two halves: the first had students do a series of programming assignments in Scratch, the second had them do the same assignments over again in Python. The first half gets them thinking computationally, and the second half puts them through the ringer of dealing with syntax. Students struggled just as much with the second half of the course as in the first.

                                                                                        1. 1

                                                                                          I guess the second half will be able to understand duff devices faster, if that really matters… ^_^

                                                                                          1. 2

                                                                                            To be clear, it was the semester that was split in half, not the student body. Every student did every assignment in both languages.

                                                                                          2. 1

                                                                                            I have seen people struggle just as much with the exact same problems (after not too long) even without any changes, and not only in context of programming. So it may be not about the syntax, but about not having built any reusable understanding yet.

                                                                                            1. 1

                                                                                              Dumb typo that I can no longer edit: the first sentence should say “It is a massive problem.”

                                                                                            2. 4

                                                                                              Speaking from anecdotal evidence, and also as a member of the research team who wrote this paper (though I’m not an author on this one) - syntax causes enough of a problem for beginners that people have looked for ways to mitigate those problems. (As much as people sometimes like to think academics invent the very problems they then set out to solve, and as much as that may even be somewhat true in some cases, this particular issue keeps cropping up in CS Ed research precisely because it’s been an ongoing problem).

                                                                                              I’ve personally taught classes where students struggled with the placement of semicolons and issues such as matching brackets. Frame-based editing as presented in the paper isn’t the only solution to this kind of problem, of course, but so far it looks to be promising. (Time well tell if it has an actual impact in CS Ed generally speaking, of course; quite often these things don’t leave the “research” phase, for whatever reason).

                                                                                              If we can allow students who struggle with syntax to make more progress, it improves their motivation. It also, generally speaking, makes learning easier by reducing cognitive load - you don’t need to worry so much both about getting the syntax right and getting the semantics right.

                                                                                              I completely agree that making syntax instruction more explicit could well be another approach that reduces the syntax problem. The main drawback of that approach alone is that focussing just on syntax means there is a phase where the students aren’t actually able to write a complete program - they just know how to formally identify parts of the syntax - and this affects motivation; similar to teaching English by rote-learning of the grammar rules versus practical application (writing stories etc).

                                                                                              1. 3

                                                                                                I will admit that my phrasing sounds very harsh. I actually think this work is interesting and probably would help with programming pedagogy (in fact, I bet I could get my wife to try it out!). But I really wish these kinds of papers would stop claiming it could help “expert” programmers.

                                                                                                Us experts live and work in systems where visual editing of the kind proposed just isn’t going to work. We search and index everything in plain text. There are huge codebases that cannot be converted to something like this. And frankly, it’s not going to compete at an efficiency level in existing huge systems even if you could convert them.

                                                                                                Therein lies the rub: block/frame/structural editing is not of much use in systems not built around them. And what we have – which is a lot – is not built around them. (This does suggest that future research should be looking at bridging the interface gap.)

                                                                                                Does that mean this kind of stuff is junk? No. I don’t think so. But I don’t see acknowledgement of this situation in stuff I read. That’s what rubs me the wrong way.

                                                                                                1. 2

                                                                                                  Fair enough. The paper is quick to point out the advantages (for “experts”) and doesn’t consider the disadvantages, which may be considerable, or at least doesn’t explore the other problems that need to be solved before a “frame-based” editing paradigm could feasibly replace a text-based one. Part of that is just because it’s not the main focus of the paper - we are CS Education researchers (though those that know me will know I have many and varied CS interests outside that particular sub-field) - and I think if you read it carefully you’ll see that it’s not actually claiming that an instant leap to frame-based editing is viable - but it’s a valid point that this paper should probably have included included at least some discussion of the other problems that would arise after making such a transition, considering it happily touts the potential benefits.

                                                                                                2. 1

                                                                                                  Thanks for perspective.

                                                                                                3. 3

                                                                                                  How much of a problem is syntax for beginners, for that matter?

                                                                                                  If you believe CHI conferences, it’s a huge problem. The paper goes on at great length about how many syntax issues frame editing solves, citing the studies where it is a problem (of which there many). I’ve yet to dig into them, but really, who is in these sample groups? I wonder.

                                                                                                  1. 3

                                                                                                    (Apologies in advance for not actually reading all the research. So much easier to do armchair critiquing.)

                                                                                                    Is there an assumption that everybody needs to learn programming in some abbreviated time frame, like two weeks? Like if I needed to learn Japanese in two weeks and found it frustrating, does that mean Japanese needs to change to be easier? After all, everybody should visit Japan and Japan should want everybody to visit (just like we want everybody to program, right) so it’s time to make some changes.

                                                                                                    Like a great many people who have successfully learned programming, I don’t recall having trouble with syntax. But I wanted to learn to program. I can imagine the idiosyncrasies of computer languages to be quite frustrating if one is forced to learn programming. And by forced, I think we can include “I want to learn programming because everybody says I need to learn it.”

                                                                                                    The little bits of research I’m familiar with are often motivated by the idea that in the future everybody will need to know programming. Therefore we must teach it. But are we pushing on a string? If people really needed to know programming, I doubt we’d be able to stop them from learning.

                                                                                                    ECOMMENT2LONG.

                                                                                                    1. 5

                                                                                                      As an addendum, it seems the same “workforce readiness” experts saying stuff like “managers expect 67% of new jobs in 2025 to require some degree of programming skill” are the same as the people 30 years ago saying 67% of office jobs require “computer fluency” which was defined as knowing the keystrokes to do a mail merge in WordPerfect. And thus we had classes teaching us how to do mail merge, which were as boring and mindless as one might imagine. And here we are today, and who the fuck still does mail merge? Not 67% of the people in any office I’ve ever worked in.

                                                                                                      1. 5

                                                                                                        If people really needed to know programming, I doubt we’d be able to stop them from learning.

                                                                                                        People need to know programming for the same reason people need to know arithmetic or how laws get made: because other people already know those things, and many of those other people are quite happy to use that information to exploit people who don’t know those things. Consider how much of an advantage payday loan sharks have over people who haven’t internalised the mechanics of compound interest, or how much of an advantage organisations with professional lobbyists have over other organisations, and compare that to how much of an advantage Google and Facebook have over people who don’t understand data-mining and automated data processing in general.

                                                                                                        People really need to know programming, but it’s the kind of need that’s most obvious in retrospect, when it’s too late to do anything about.

                                                                                                        1. 3

                                                                                                          hmm. i’d argue two points.

                                                                                                          1. there are a great many programmers who know all about semicolons, but don’t seem to know about the perils of google and facebook. presumably including all the semicolon pushers at google and facebook. so programming doesn’t seem sufficient to ward off that threat.

                                                                                                          2. I know lots of people who don’t program but nevertheless won’t touch facebook. so programming doesn’t seem necessary either.

                                                                                                          The point about compound interest is an interesting one, but despite many years of math education, we never really focused on how not to get cheated. Much like I know all about Bernoulli’s principle and the ideal gas law, but none of that knowledge does me much good in deciding whether the auto mechanic is telling me the truth or not.

                                                                                                          If you wanted to demonstrate to somebody that facebook is dangerous, how much big data mongotensorflowgraph are you going to make them do? Because you can spend months on filesystems and network protocols and all sorts of stuff without touching any of that. If our goal really is to make people aware of the perils of facebook, starting with introductory programming seems like a really long way to get there.

                                                                                                          1. 1

                                                                                                            I think knowing those perils is not due to technical debt, but rather coming with the culture acquired along the way.

                                                                                                            egg: Moving from remote access to computers, to personnal computer, to personnal computers consuming online services that user do not own anymore (including smartphones).

                                                                                                            But those without any knowledge of the internals of these services still react to the absence of control over personnal data.

                                                                                                        2. 4

                                                                                                          I have a slightly unconventional way to disagree with you on this.

                                                                                                          The goal of learning programming shouldn’t be to get a job programming, just like the goal of learning reading and arithmetic isn’t getting a job reading and doing arithmetic. It’s just table stakes for participating in society and being a useful citizen.

                                                                                                          With that goal in mind, saying, “we’re able to teach all who want to learn” is just not good enough. We need to teach people who don’t know they need to learn, long before they can judge the question for themselves. We need to brainwash kids into learning to program the way we brainwash them into learning to read.

                                                                                                          And for that level of penetration, yes syntax is absolutely a problem. The issue is not that kids need to learn all of programming in the first two weeks. The issue is that they need to make enough progress in the first two weeks to feel encouraged to continue. Too many people give up way too early today.

                                                                                                          Today society dodders along with a miniscule percentage of people knowing to program, who then become a priestly over-class. If our goal is merely to maintain that status quo, yes you’re right, the great filter of syntax is irrelevant. But we should be aiming higher.


                                                                                                          My qualifications: I’ve been teaching programming for over 2 years on the side. I’m up to 4 students at this point, and I’ve taught three times that number in this time. I’ve consciously tried to teach a diverse variety of students. One of my current students is over 50, for example. The above link from 2 years ago presents some early experiences in the benefits of eliminating syntax from my teaching. I should do a follow-up at some point, but bottomline: the syntax section has remained unrefuted since then, and I feel a lot more confident holding that opinion.

                                                                                                          1. 4

                                                                                                            I think I disagree that we are, or soon will be, at a point where knowing C or rust or whatever turns one into a techno priest overlord. Do we actually want a society where programming ability is required to participate? That sounds terrible.

                                                                                                            But given that premise, yes, I can see the argument that learning should be transparent and effortless.

                                                                                                            1. 1

                                                                                                              Thanks for highlighting the crux of our difference.

                                                                                                              Minor quibble: I want to distinguish between over-class and overlord. I’m not claiming programmers have direct power over non-programmers (by their own individual agency), but that they get the bulk of the rewards in society, and exert indirect power by their technological choices (without necessarily having individual agency over these choices).

                                                                                                            2. 2

                                                                                                              The issue is not that kids need to learn all of programming in the first two weeks. The issue is that they need to make enough progress in the first two weeks to feel encouraged to continue.

                                                                                                              For me personally, the syntax part is exactly what provided that motivation! I took something like a 3-week after-school programming course when I was fairly young, which was not long enough to learn to do anything non-trivial, but was long enough that I felt some sense of accomplishment having learned to “speak” an esoteric formal language in a way that the computer would accept. I didn’t have any concept of what I’d want to program a computer to do anyway, so for me the motivating part was simply being able to master the syntax of how to tell a computer to perform some trivial arbitrary task, like drawing a simple spiral.

                                                                                                              Two caveats: 1) I became a computer scientist later, so am probably not a representative random person (although the cause/effect here isn’t obvious), and 2) the language we used was Logo, which does have syntax, but lets you get started with a fairly small amount, and provides satisfying visual results when you get it right.

                                                                                                              1. 2

                                                                                                                I’d be interested in your take on my Mu link above. Mu was conceived to make functions concrete the way that Logo succeeded in making individual instructions concrete.

                                                                                                                1. 2

                                                                                                                  There are some interesting bits here. One thing that immediately stands out to me (though apologies if you already know this) is that the next-ingredient syntax in place of formal function parameters is how Perl traditionally does things. You don’t declare formal parameters on a subroutine, you just use shift to get the next one (behind the scenes this is because parameters are passed in a magic implicit array, and shift with no arguments pulls an argument off that implicit array, but someone writing a subroutine doesn’t need to know that).

                                                                                                                  For me personally, I find keyword parameters a clearer way of matching up the caller and callee sites than positional parameters of any type, but I haven’t thought it through deeply.

                                                                                                              2. 1

                                                                                                                The issue is not that kids need to learn all of programming in the first two weeks. The issue is that they need to make enough progress in the first two weeks to feel encouraged to continue.

                                                                                                                This exactly. Well said.

                                                                                                              3. 1

                                                                                                                That, and where can the average person apply programming? It’s not like an iPad has a scripting environment on tap and your silos-of-data apps eagerly exposing APIs for them.

                                                                                                            3. 1

                                                                                                              How much of a problem is syntax for beginners, for that matter?

                                                                                                              I can’t speak for other languages, but I’ve watched some beginners learn C. I’ve also read some of the tutorials they read. One thing I’ve noticed is that syntax as such is rarely discussed, and the focus is on semantics; what they learn of syntax comes through examples, and these aren’t very thorough. At worst, no names for syntactic structures (statement, expression, block, declarator, etc.) are given. At best, some of these are mentioned by name, but the student is still left to his own devices to infer the exact form from code snippets. And they draw wrong conclusions.

                                                                                                              And so we have beginners who get very confused about where to place a semicolon, or where (and how) to use the comma. You see the comma in parameter lists and declarations of multiple variables. But in other contexts it becomes the comma operator, which is something entirely different. You see semicolons after struct definitions that do not define variables, but none after function bodies or other blocks. In for loops, you may see both commas and semicolons… Even the ampersand and asterisk often end up being confusing because their syntactic role in different contexts isn’t explicitly spelled out. I think this is one of the reason many people seem to think pointers are difficult, and so they just end up inserting asterisks or ampersands until the compiler acceps the code.

                                                                                                              With that type of teaching/learning we also have a large number of fairly experienced C programmers who do not understand the declarator syntax, and cannot read and write pointers to arrays or function pointers…

                                                                                                              Of course none if it is hard, but there’s plenty of rules the student may have to figure out and memorize.

                                                                                                              1. 1

                                                                                                                How much of a problem is syntax for beginners, for that matter?

                                                                                                                I would say, “it’s a hurdle”. I mean, obviously, it must be! It’s something you have to learn. It’s something many people struggle with. But I don’t think it’s a large hurdle. Our brains have a rather large portion of their mass dedicated to mastering syntax- we all master syntax of at least one language. Programming languages are simpler than natural languages, more consistent than natural languages- but also far more punishing in terms of errors.

                                                                                                                Humans are good at working with syntax. I’d argue that our parsers are bad at dealing with errors, and by that I mean- they express errors in syntax badly in many cases.

                                                                                                            1. 1

                                                                                                              Thank goodness. This updated behaviour is a lot more sensible.

                                                                                                              1. 12

                                                                                                                I’m sure I’m gonna get flamed to death for this, but I’m against this law. Intelligence services need to collect intelligence and conduct espionage against our nation’s enemies.

                                                                                                                In order to do that, they need to have tools. Exploits are tools.

                                                                                                                1. 15

                                                                                                                  I’m in favour of disarmament and to stop seeing the world as being full of “enemies”.

                                                                                                                  There’s no reason why governments should be holding secrets, if we are to believe that governments are there by consent of the governed. How can we consent to things we don’t know about?

                                                                                                                  1. 4

                                                                                                                    Most of the countries in the West have spy agencies or people collecting competitive intelligence. They still compete even if peacefully. They’re not going to stop. If a country gives up its tools/techniques, then the others just get free wins on them. So, the country must keep doing that stuff to stay competitive and protect its citizens’ interests.

                                                                                                                    1. 8

                                                                                                                      So, who are those enemies? Germans? Mexicans? Russians? The Arab world? The whole world? I’m Mexican. Am I one of your enemies?

                                                                                                                      Why does the US have such a large army and why must this army be maintained? What would happen to the use without its army? What would the enemies do? Steal all their jobs? Invade the homeland? Drop a nuke on them? Destroy their intranets, ransom their data?

                                                                                                                      1. 3

                                                                                                                        The enemies mainly try to compete with us economically by stealing our IP or attempting to scheme in international negotiations or contacts. One part of government routinely catches contract rigging with help of spy agencies. They also steal military secrets. Some turn computers into bots to facilitate real life and online crime. Some want to straight up disrupt our infrastructure randomly or at key points for political reasons.

                                                                                                                        These are the enemies Im talking about. They and US have been duking it out long time with some before Internet. Gotta stay ahead. In your country, Id worry about the cartels that are such a strong threat to government that even Mexican military can stop them. Their gangs are disrupting US, too, esp on West side.

                                                                                                                        1. 5

                                                                                                                          The enemies mainly try to compete with us economically

                                                                                                                          Slightly tangential, but regarding international relations I sometimes wonder if “American interests” isn’t actually euphemism for “the interests of American corporations”, which is not really the same thing as “the interests of Americans”.

                                                                                                                          1. 3

                                                                                                                            BINGO! You’re thinking in the right direction. I thought that initially but it’s more complex. Americans like all their content on TV (esp celebrities & artists), free services, and plentiful goods made by cheap labor here (illegal immigrants) and elsewhere (low-cost labor offshore). The vote with their wallet on these things and their political votes usually don’t care since the elected officials will continue it. So, they keep benefiting from those forms of corruption that the electorate keeps going. I think we might be able to say those are the interests of actual Americans instead of just corporations since it benefits Americans, they support it financially, and don’t want it to change.

                                                                                                                            Then, there’s all the other stuff that’s solely about rewarding a special interest or corporation that paid politicians good money. You can usually tell in any country if the citizens are losing something, a tiny few are gaining something, the citizens didn’t ask for that, and the few paid off the people moving stuff around on the ledger. The fundamental mechanism of corruption. The Goldman Sachs response to the 2008 financial crisis (after creating it) is one of best examples in U.S. history: a trillion dollars no questions asked with criminal immunity negotiated by a regulator that was ex-CEO. It doesn’t get better than that for bad folks.

                                                                                                                            1. 2

                                                                                                                              Spoiler alert: Politicians’ constituents are actually corporations, not citizens.

                                                                                                                        2. 2

                                                                                                                          You can apply this competitive frame to almost anything, with the result that things become worse for everyone. You say “they’re not going to stop,” but competing nations have implemented policies that make them less competitive, such as labor protections. There’s no reason government transparency couldn’t gain traction in a similar way, especially if the U.S. took the lead.

                                                                                                                          1. 1

                                                                                                                            If a country gives up its tools/techniques, then the others just get free wins on them.

                                                                                                                            The whole point of requiring disclosures is to improve our own defensive capabilities. Others don’t get “free wins” if the disclosures lead to patches and increased security.

                                                                                                                            1. 1

                                                                                                                              I see your goal but don’t buy the method to achieve it. There’s simply too many vulnerabilities in these systems for it to be a meaningful difference. The attack crews of nation-states always have vulnerabilities in popular products. That’s despite bug hunters regularly disclosing vulnerabilities for patches. So, one side disclosing what it finds won’t meaningfully increase security if it’s a large system constantly in flux in unsafe language made by vendor who doesn’t care about security. The problem is the vendor’s development model. That’s what you fix with law. Then, we can talk about the benefit of disclosure.

                                                                                                                              Even then, if disclosure is mandated, groups like NSA will request an exemption on national security grounds, not look for bugs in the first place since they can’t use them, or lie about not hoarding them with criminal immunity as always. I mean, we’re talking about rogue-ish, spy agencies here.

                                                                                                                          2. 3

                                                                                                                            Way back when, when I was in college, there was a guy going around on a bike, grabbing girls butts, then riding away. This being college, the Serial Groper was cause for widespread panic. Something needed to be done, and so the police increased night patrols in the target areas.

                                                                                                                            Now in a completely transparent society, this would have meant publicly posting “Tuesday night officer Jim will patrol up and down Maple street, and on Wednesday night he will patrol Cherry st, and etc.” After all, as an affected citizen, don’t I have the right to know what the police are up to? We surely don’t want secret police patrols.

                                                                                                                            Of course, such disclosure makes it easy for the groper to avoid arrest. Just the price of a free society, no?

                                                                                                                            1. [Comment removed by author]

                                                                                                                              1. 2

                                                                                                                                The premise was that a government should have no secrets. Not some secrets, no secrets. There’s a reasonable discussion one can have regarding which secrets there should be, but that’s difficult from a starting position of absolutely no secrets.

                                                                                                                                1. [Comment removed by author]

                                                                                                                                  1. 3

                                                                                                                                    Sorry, the point wasn’t to draw such a direct comparison, but to establish a baseline that complete transparency is often counterproductive. Maybe I’m jaded from previous debates with people who insisted that every government document and email be made public immediately. The example was meant to be trivial and obvious, so as to avoid further side debate. (Was going to use bank robbery, but didn’t want to debate the ethics of the bank system, etc.)

                                                                                                                                    1. 1

                                                                                                                                      You framed it as a sexual harassment issue

                                                                                                                                      The parent to his remark said governments should have no secrets at all. That there was no reason for them to. The framing of “no secrets” with a sexual harassment issue is correct in that he illustrates secrets have their place to stop harm to citizens. It was also an easy to understand example for about any type of person reading. Whether we should have secrets that are mass exploitable with ease to cause same harm to everyone is another point of discussion that you’re bringing up. It wouldn’t fit his framing but that’s not what he was responding to.

                                                                                                                                  2. 2

                                                                                                                                    Please try to refrain from posting in this way. You had some good points but it is hard to see them past your hysterics.

                                                                                                                                    1. [Comment removed by author]

                                                                                                                                      1. 1

                                                                                                                                        Being triggered is no excuse for acting dickish–in such cases, removing yourself from the offending stimulus is usually the best option.

                                                                                                                                    2. 1

                                                                                                                                      Not trying to absolve the NSA (they couldn’t protect their tools, they definitely have responsibility), but Microsoft sells their OS with an expectation of security and it failed.

                                                                                                                                      In a different universe the NSA would have reported this to MSFT before the leak, and this wouldn’t have happened. We should aim for that. But there’s also another universe in which MSFT is more careful.

                                                                                                                                      It is absolutely not an inevitability that there are worm-generating bugs in Windows. We build skyscrapers that don’t fall over all the time.

                                                                                                                                      We should work on getting the NSA to get awful exploits like this fixed fast. We should have higher standards for OS issues. We should have people be able to stay updated on security releases. We should attack all angles to make this not happen again. A lot of things aligned for this to happen.

                                                                                                                                      1. 1

                                                                                                                                        It is absolutely not an inevitability that there are worm-generating bugs in Windows. We build skyscrapers that don’t fall over all the time.

                                                                                                                                        Based on past data, I can conclude that making an OS that does not have bugs is much harder than building a skyscrapers that don’t fall over.

                                                                                                                                        1. 1

                                                                                                                                          If you keep the TCB small, it cost several million over a few years for the TCB w/ the rest done in Design-by-Contract in safish language for 10-50% more. The very first one, GEMSOS, cost $15 million with the most primitive tools with R&D costs included (aka cost of partly inventing INFOSEC). seL4 was just over $2 million. A small team at Microsoft did VerveOS. Another small team did ExpressOS using same tools. These two were safe rather than secure but design/code safety is a prerequisite knocking out most code injection. Hypervisor from DeepSpec was 10+ people over a few years.

                                                                                                                                          We occasionally have to deal with new classes of vulnerabilities that are totally unrelated to existing, root causes. Hard to recall when that required total rewrites rather than a fix outside of the software. It’s hard to do a secure TCB but skyscrapers are way harder. Apathy is what stops these big companies. I mean, Microsoft could license VerveOS or Midori to those interested in building on advantages they already had. They could use that stuff internally more than they do. They just don’t care and pay politicians good money to protect their financial security. :)

                                                                                                                                      2. 1

                                                                                                                                        but exploits like used in WCRY that are wormable, FUCK NO! This is putting everyone at risk.

                                                                                                                                        Although I see the point Ted was making, the wormable nature of this exploit does make the comparison meaningless. The actual comparison to these vulnerabilities would be, say, a self-destruct button that could wreck hospitals, banks, military, or logistics. Or some subset of their operation. There’s a phone number to call to get someone to push it without asking questions. The intelligence agencies have the number, say it’s useful, and their uses justify not pulling the plug on that line or disabling that button. Now, some people have the number. They’re using it for evil.

                                                                                                                                        And so on and so forth.

                                                                                                                                      3. 0

                                                                                                                                        In a free society the girls would just carry firearms and defend themselves from physical violation with necessary force.

                                                                                                                                        What has happened instead that self-defense was outsourced to a third party who is extremely ineffective and inefficient, so it became impossible for them to work without being given MORE POWER by having the ability to now not only have monopoly on violence but also asymmetric advantage on information. So the solution to the failure of government is once again more government in a run away cycle.

                                                                                                                                        As the government gains more power, the sociopaths make their way to the top of the pyramid and we end up with comrade Stalin or dear leader.

                                                                                                                                        In the free society scenario, not only was there no need for secret, the girls would want to advertise the fact that some of them walk around with firearms with which they will defend themselves when necessary.

                                                                                                                                        1. 7

                                                                                                                                          To be clear, you’re saying that the preferred response to someone grabbing your ass without your consent is to shoot, and probably kill, the person doing it?

                                                                                                                                          1. 2

                                                                                                                                            I like how you glossed over the phrase “necessary force” to go straight to “preferred response… is to shoot.” That’s not what LibertarianLlama said. Either you’ve seen that commenter say they prefer all small crimes resulting in killing the criminal or you’re assuming a pro-gun stance has a preference for killing. Regardless, most gun owners I know are taught to use gun as deterrence by warning an attacker, optionally a warning shot depending on what risk defender wants to take, and lethal use only if absolutely necessary. Many also carry pepper spray, stay out of risky situations, and so on to reduce odds of them having to kill people. Most people with guns, whether they like them or carry them out of necessity, don’t want to experience the risk of a violent encounter.

                                                                                                                                            At least, that’s my experience reading surveys of gun owners across U.S. and listening to over a hundred of them in the South where people love guns. It’s something good to have but terrible to have to use. Due to the high occurrence of robbery and rape in our area, our family teaches everyone self-defense and proper use of weapons. Almost every one of us have defended ourself from an attacker. A proper defense we see as a necessity because we can’t trust people to always be good to us. Human nature…

                                                                                                                                            1. 3

                                                                                                                                              Fair enough. My brain did admittedly jump to the assumption that “defending themselves with necessary force” involved actually using the weapon he suggested they carry, instead of just threatening to use it against him.

                                                                                                                                              There’s an argument to be made, though, that a gun may actually be less effective compared to, say, a non-lethal weapon such as the pepper spray you describe or a tazer, in a situation such as the one we’re talking about (where the criminal was awful but mostly non-violent). After all, if you’re so hesitant to use your weapon, your threats hold a lot less weight. And even you seem to agree that actually using the gun against him, would be a disproportionate use of force, and a court making a self-defence ruling would probably agree.

                                                                                                                                              1. 1

                                                                                                                                                Oh yeah. I encorage carrying a non-lethal for that reason. Also, in some cases, even shouting what they did aloud when they do it can be punishment or deterrent enough via shaming. Still good to have a lethal in the uncommon case that they escalate to violence with pepper spray not stopping them (they grab person) or among 5% (1 out of 20) immune to it. Some number like that anyway…

                                                                                                                                                1. 1

                                                                                                                                                  After all, if you’re so hesitant to use your weapon, your threats hold a lot less weight.

                                                                                                                                                  This is such a perverse argument. So what you are saying is that criminals are more likely to attack you when you are carrying a rifle than when you carry a stick because the criminals will think that you won’t use your firearm because you will be hesitant?

                                                                                                                                                  1. 1

                                                                                                                                                    Not a stick (nice strawman there), but something like a tazer and or can of pepper spray.

                                                                                                                                                    And the answer is yes, in some cases. Not everyone is a badass who can convincingly threaten to fearlessly take a human life. To paint a stereotypical example, a trembling, inexperienced 18-year-old girl can easily be a more convincing threat with a tazer or other effective non-lethal weapon than shakily attempting to point a gun at someone.

                                                                                                                                                    (On a sidenote, the gun also escalates the level of violence far beyond that of the initial confrontation, which has its own problems. But I’d rather not get into that whole can of worms right now.)

                                                                                                                                        2. 1

                                                                                                                                          This is an ideal we should all work towards, but from where I sit human nature as it exists today makes such an ideal impossible to realize.

                                                                                                                                        3. 8

                                                                                                                                          It’s that or backdoors. If backdoors, they’re going to up their power and/or violence. Vulnerability hoarding is the lesser evil. It’s barely unethical, too, given market votes against strong security almost every time, suppliers dont give a damn, and government doesnt either due to bribes, internal politics, & lockin.

                                                                                                                                          1. 2

                                                                                                                                            I totally agree. Backdoors weaken the armor for everyone, friend and foe alike.

                                                                                                                                            1. 2

                                                                                                                                              Yeah, but if you rely on exploits then you are betting on “our team” finding more exploits or quicker than “the other team”.
                                                                                                                                              On the otherhand if you implement backdoors then you need to:
                                                                                                                                              a) have the power to compel companies to add them and give you access, what happens when it is an over seas company?
                                                                                                                                              b) ensure “the other team” isn’t given access or steals access to the backdoors.

                                                                                                                                            2. [Comment from banned user removed]

                                                                                                                                              1. 2

                                                                                                                                                Ok, so did we just win on net neutrality given most Americans don’t want FCC trading them for a few companies? Or did the powerful few overrule the apathetic or powerless masses? And what about Patriot Act, software liability, etc? What I see in reality rather than fantasy world you’re describing is a bunch of conflicting interests we have to work through to get a compromise on what we want.

                                                                                                                                                Im picking the choice that allows them to operate on the careless or apathetic but market, academics, or FOSS can continue to make strong security. As Schneier is doing recently, we can then continue to argue against increased laws by showing they have what they need right now. Then, people wanting SIGINT and people wanting security can continue receiving both.

                                                                                                                                                1. 1

                                                                                                                                                  Do you disagree that we all live in a society in which the rule of law and some kind of government is probably a necessity?

                                                                                                                                                  If you do, then having some kind of intelligence service and conducting espionage against other such entities is a fact of life. This isn’t about the choices you and I make personally, it’s about the opinions we hold and the way we think our society should be run.

                                                                                                                                              2. [Comment from banned user removed]

                                                                                                                                                1. 7

                                                                                                                                                  I would argue that choosing to deny the pragmatic fact that the intelligence community is an important part of maintaining national security is also insane. So I guess we can all wander off to the loony bin together, eh ? :)

                                                                                                                                                  1. 4

                                                                                                                                                    I’m pretty sure people are choosing to learn the wrong things from wannacry by ignoring the inconvenient parts of the timeline. The NSA did tell MS about it, and MS did issue a patch, and then there were news stories about how important the patch was because it fixed a serious vulnerability, and still the hospitals decided not to patch.

                                                                                                                                                    It’s hard to see how any disclosure policy would have changed that. The NSA had their hand forced, but the patch was nevertheless out for two months. If the NSA had decided to disclose the vuln in 2014 out of the goodness of their hearts, does anybody think that the hospitals response would be any different?

                                                                                                                                                    1. 1

                                                                                                                                                      and still the hospitals decided not to patch.

                                                                                                                                                      It’s hard to see how any disclosure policy would have changed that.

                                                                                                                                                      The problem is clearly that they were not forced to patch by something external. Regulations or court liability are historically what accomplishes this. I lean toward former because latter becomes lawyers playground. Look at healthcare suits in the U.S. right now. All kinds of people rolling around in money-making schemes. Maybe the socialists might have it better with court-based liability for damages done if people are less sue-happy over there. I hear we’re the top place for such bullshit but I’m not sure.

                                                                                                                                                      1. 3

                                                                                                                                                        I guess the bitcoin ransom is something external forcing them to patch. Though the fine is pretty low to have much effect on a large institution, clearly the libertarian free market has provided an essential service that the statists can’t effect with all their enslaving and thieving. Another victory for crymetocurrencies! /s

                                                                                                                                                        1. 1

                                                                                                                                                          You may be facetious but honestly sometimes people just have to get burned.

                                                                                                                                                          1. 1

                                                                                                                                                            Lol. Great example of where liability on market or criminal side ain’t exactly beneficial. Loved your original comment btw. I gotta drop it on a libertarian crowd at some point. They’ll probably just start talking Social Darwinism or something, though.

                                                                                                                                                      2. 3

                                                                                                                                                        You’re argument also supports banning software such as Windows in all such critical cases unless they can demonstrate either no vulnerabilities or strong posture of security w/ easy way to update or recover. These kinds of systems existed under DOD regulations before. Some still exist in niche sectors. However, telling intelligence agencies not to do it means it will still get done by non-cooperative agencies, black hats, and so on. The root problem is there’s no requirement to eliminate or liability for preventable defects in software. That’s should be the focus.

                                                                                                                                                        1. 3

                                                                                                                                                          There is far more risk to our nation as a result of these exploits than to any enemies of ours

                                                                                                                                                          This isn’t even remotely true. They use the same systems we do, just look at this heatmap about the same vulnerability you are talking about. Having known many intelligence people over the years I guarantee you that those people were not just sitting on an exploit for years, they were using it. I’m far from the patriot type at all, but I view this more as arms stockpiling than anything else.

                                                                                                                                                          Also the moment you allow yourself to start name calling there is a good chance that your guilty of an Ad Hominem fallacy. It does not strengthen an argument or encourage meaningful discussion. It also lowers the quality of the threads here.

                                                                                                                                                      1. 8

                                                                                                                                                        Directly. Especially on mobile where the Dropbox link kicks me out to the Dropbox app instead of letting me read it in the browser.

                                                                                                                                                        1. 2

                                                                                                                                                          Mobile browsers should really ask before kicking you out to an app (or, even worse, the app store), and should really have a way to tell a site to screw off with its attempts to redirect you. Soundcloud is the worst; it’s impossible to listen to soundcloud links on mobile safari (as far as I can tell). I don’t want to have to download and log into their shitty app just so I can listen to a few song links a month.

                                                                                                                                                          1. 1

                                                                                                                                                            Is there really no mobile browser that lets you do that? Desktop Firefox has addons to spoof your user-agent in desktop firefox; does mobile firefox not take the same addons?

                                                                                                                                                        1. 2

                                                                                                                                                          All of this probably because some jackass decided to use OAuth+FB instead of putting on their big kid pants and deciding to own their own user system.

                                                                                                                                                          1. 2

                                                                                                                                                            That seems like a naive view. Minimizing sign-up friction helps get people on your platform faster, which can be helpful for a company. I’m not saying it’s good for the world but using FB for signups can be a very rational intelligent decision if you’re optimizing for your own financial longevity.

                                                                                                                                                            1. 2

                                                                                                                                                              Sure, as long as that is not your only option. Otherwise you are only share-cropping on FB.

                                                                                                                                                              1. 1

                                                                                                                                                                One way that seems to side-step this, is to allow FB login. Once this is done, use the data scraped from FB to auto-populate another account that’s unique to the website in question.

                                                                                                                                                                It also means, if Facebook ever deletes/suspends the user, the user can still login via existing credentials. In effect, using Facebook to jump-start your own website.

                                                                                                                                                              2. 2

                                                                                                                                                                Well, if they’re tying their success to dependence on someone else, then I guess it’s for their own longevity up to the point where they can get bought, at least. Which makes sense from a purely short-(maybe medium-)term self-interest perspective. But … does literally no-one, anywhere, ever, try to balance their own financial longevity against what’s good for the world, even if only from the perspective of enlightened long-term self-interest?

                                                                                                                                                                1. 1

                                                                                                                                                                  You’re saying slightly conflicting things, I think. Talking about long-term but there is no reason a company couldn’t add non-facebook signup in the long-term. In the short-term, making it possible for 2 billion people to easily sign up for your product could help quite a bit. Limited time/person power/etc.

                                                                                                                                                                  1. 2

                                                                                                                                                                    Fair point, maybe not conflicting, but perhaps inconclusive. Although having 2 billion people sign up for your product straight away might cause more problems than a young company could handle ;-)

                                                                                                                                                                    My point though, really, is just that it seems a shame that more people don’t try to accommodate or balance with what’s good for the world at any stage - and I think the reality is that if they don’t do it from the get-go, then the likelihood they’ll try to start later down the line, once they’re already invested in systems that don’t, seems even lower.

                                                                                                                                                                2. 2

                                                                                                                                                                  Minimizing sign-up friction helps get people on your platform faster, which can be helpful for a company.

                                                                                                                                                                  Sure, but remember that according to the article, they already owned their own user system. The acquirer decided to break that.

                                                                                                                                                                  1. 1

                                                                                                                                                                    Then offer a choice: login with Facebook, Google, or another 3rd-party login system, or register an account with their system. Presto: low-friction signup for those that want it, and privacy-aware signup for those that care.