1.  

    I don’t know what he’s talking about with this:

    I haven’t waded into known strengths of Rust like the FFI and the concurrency model!

    Trying to do things concurrently in Rust made me stop trying to use Rust. Having to completely redo the i/o and suddenly having my selection of libraries Balkanized made continuing in Rust for a hobby project not worth it.

    1. 8

      I imagine Bryan Cantrill is in the class of developers who evaluates languages/frameworks/libraries in terms of their readability and maintainability. Probably because a large portion of his career has been doing maintenance programming.

      When measured along those axes balkanized libraries and the occasional refactor hardly matter. Especially when Rust makes those refactoring quite a bit safer than other languages with it’s type system and borrow checker.

      1.  

        I heard thread safety is one of Rust’s selling points. What kind of concurrency issues did you run into?

        1.  

          Presumably he’s referring to the hoops you have to jump through because of Rust’s thread safety guarantees.

          You can’t just use shared mutable state like you otherwise would have, and until recently there were multiple competing (and mutually incompatible) approaches in use.

          1.  

            It has the same problem as C/C++ where I actually have no idea what kind of threading model any given library is going to use. Spawn a thread per request? Thread pool? Some actor framework? Callbacks? If it’s using a framework, which one? Do all my libraries play nice with it?

            I think futures are in the stdlib, but async/await isn’t in stable. The rust book touches on futures, but mostly focuses on implementing your own ThreadPool, and not anything about how to organize futures-using code.

            1.  

              Yep futures in std, and async/await are currently in nightly and will be available in the near term.

        1. 3

          I wonder how much of this is caused by caching. The gap between Inbox and Spreadsheets seems like it could be caused by caching what each is caching to make the UI responsive.

          1. 2

            Yeah I think some web apps cache whole prerendered screens so when you click a new tab it shows instantly

          1. 8

            As an occasional used of notebooks I agree with almost everything he said in those slides. Kind of want to see a recording of the talk now.

            1. 9

              Yea I’d rather see a recording. The slides aren’t really getting the full point across on their own (which means they’re actually good slides and are just an addition visual aid like they should be, vs something you just read point by point while on stage).

              1. 7

                If you look at the speaker notes (if Google Slides lets you) you’ll get the bulk of what I actually said.

                (You’ll still miss out on the two livecoding pieces and my impeccable comedic timing.)

              2. 5

                They did record it and supposedly will put it up on YouTube at some point.

                1. 1

                  I had no idea this stuff existed before this post. Are they actually widely used?

                1. 37

                  The best today list system is one you will actually use. There is no one size fits all system.

                  1. 3

                    This is why you Don’t Implement Your Own Crypto! Come on folks.

                    1. 9

                      Sooo, You know that this is OpenSSH right? I mean someone has to write the Crypto. OpenSSH developers are among those that you might want to trust to do it right. No one is perfect though.

                      1. 6

                        Actually, the code in question was written by Tatu, before openssh was forked.

                        Well, depending on exactly what code you mean. The key encrypting code was technically in OpenSSL (or librsa) I think. The choice to use it was Tatu’s.

                        1. 3

                          Pretty sure this comment was intended as a joke for this reason?

                          1. 2

                            Yeah it kind of was. I guess it was a little obscure though.

                        2. 6

                          Well, hop in a time machine back to 1996 and pick something better off the shelf…

                          1. 1

                            I read the article, and the situation seems related to OpenSSL only. Joel Sing confirmed that commits https://github.com/libressl-portable/openbsd/commit/17b1f1ce28ae8bc5a873951ad6c8aa564b68c0ab and https://github.com/libressl-portable/openbsd/commit/952c1252f58f5f57227f5efaeec0169759c77d72 fixed the issues back in 2017 for LibreSSL. More details by Billy Brumley to the oss-security earlier this year: http://www.openwall.com/lists/oss-security/2018/04/16/3 .

                            In conclusion OpenBSD and Void Linux have this mitigated.

                            1. 4

                              Those commits have nothing to do with the issue in the article.

                          1. 6

                            Most of my code on Github or Bitbucket is recreational code. I have 0 expectation that anyone would want to use any of it. I do like sharing it anyway though.

                            1. 0

                              I’m very happy with vgo after spending years frustrated with buggy, partially-broken third party tools: first glide (no way to upgrade just one package, randomly fails operations) then dep (100+ comment issue on not supporting private repos).

                              This comment from HN sums up my feelings on this post:

                              Go does not exist to raise the profiles of Sam Boyer and Peter Bourgon. Sam wanted to be a Big Man On Campus in the Go community and had to learn the hard way what the D in BDFL means. The state of dep is the same as it was before - an optional tool you might use or might not.

                              Lots of mentions in Peter’s post about things the “dep committee” may or may not have agreed with. Isn’t this the same appeal to authority he is throwing at Russ? When did the “dep committee” become the gatekeepers of Go dependency discussions and solutions? Looks like a self-elected shadow government, except it didn’t have a “commit bit”. Someone should have burst their balloon earlier, that is the only fault here. Russ, you are at fault for leading these people on.

                              Go is better off with Russ’s module work and I personally don’t care if Sam and Peter are disgruntled.

                              1. 14

                                This is an extremely bad faith interpretation of events. Your words have an actual negative effect on people who have tried for a very long time to do the best they could to improve a bad situation.

                                1. 9

                                  had to learn the hard way what the D in BDFL means

                                  Except Go is not (or at least doesn’t market itself as) BDFL-led. The core team has been talking about building and empowering the community for years (at least since Gophercon 2015, with Russ’ talk).

                                  When did the “dep committee” become the gatekeepers of Go dependency discussions and solutions?

                                  They were put in place by / with the blessing of the Go core team, so some authority on the subject was certainly implied.

                                  Go is better off with Russ’s module work

                                  You can certainly prefer Russ’s technical solution, that’s only part of the thing being discussed (and I think it’s fair to say it’s not the heart of the matter).

                                  The rest of your quotes are just mean.

                                  1. -4

                                    People don’t seem to realize that Go is not driven by the community, it’s driven by Google. It’s clear to me that Google doesn’t trust its programmers to use any advanced features, the code is formatted the same (again, don’t trust the programmer), everything is kept in one single repo and there is no versioning [1]. In my opinion, Google only released Go to convince a ton of programmers it’s the New Hotness (TM), get everybody using it so they can cut down on training costs and disappointed engineers looking for resume-worthy tech to work on [2].

                                    So, any proposal for Go that violates Google’s work flow will be rejected [3]. Any proposal that is neutral or even helps Google, will probably be accepted. As far as I’m concerned, Go is a Google-proprietary language to solves problems Google has. The fact that it is available for others to use is intentional on Googles part, but in no way is it “communitty driven.”

                                    [1] Because if you change the signature of a function, it is up to you to change all the call sites at the same time. Because the code is all formatted the same way, there does exist tooling to do this. At Google. Probably no where else.

                                    [2] “What do you mean we got to use this proprietary crap language? I can’t put this on my resume! My skills will stagnate here! I hate you, Google!”

                                    [3] Stonewalled. Politely told no.. But ultimately, it will be rejected.

                                    1. 4

                                      To be fair, don’t trust the programmer, is a pretty good rule to follow when you design a language or API. Not because programmers are bad or incompetent but because they are human and thus predisposed to make mistakes over time.

                                  2. 5

                                    hrm, I actually want to push back against this quite strongly. any BDFL making decisions in the absence of community input will quickly find themselves the BDFL of a project that has no users, or at least one that often makes poor technical choices. Also, framing this disagreement as a personal one where prestige and reputation are at stake rather than as a technical one is a characterization that nobody other than the involved parties can make, certainly not people uninvolved in the project at all. In particular, making character judgements about people you don’t know based on technical blog posts is something I expect from the orange website, but I’d like to think the community here is a bit better.

                                    and as far as that technical disagreement goes, I’ve read through rsc’s rationale and I’m not any more convinced than I was in the beginning that jettisoning a well known package management path (SAT-solver) in favor of a bespoke solution is the correct decision. It is definitely the Golang thing to do, but I don’t know if it’s the best. Time will tell.

                                  1. 20

                                    Kinesis Advantage. I’ve been using them for almost twenty years, and other than some basic remapping, I don’t customize.

                                    1. 2

                                      Ditto, I’m at a solid decade. I cannot recommend them enough.

                                      1. 2

                                        Also Kinesis Advantage for over a decade. On the hardware side I’ve only mapped ESC to where Caps Lock would be. On the OS side I’ve got a customized version of US Dvorak with scandinavian alphabet.

                                        I’d like to try a maltron 3d keyboard with integrated trackball mouse. It’s got better function keys too, and a numpad in the middle where there’s nothing except leds on the kinesis.

                                        1. 2

                                          Me too. I remap a few keys like the largely useless caps-lock and otherwise I don’t program it at all. It made my wrist pain disappear within a couple weeks of usage though.

                                          1. 2

                                            My only “problem” with the Kinesis, and it’s not even my problem, was that the office complained about the volume of the kicks while I was on a call taking notes.

                                            So I switch between the Kinesis and a Apple or Logitech BT keyboard for those occasions.

                                            1. 1

                                              You can turn the clicks off! I think the combo is Prgm-\

                                              1. 2

                                                Yeah, its not that click, it’ the other one from the switches :-)

                                                I can be a heavy typer and for whatever reason, these keys stand out more than I expected to others behind the microphone.

                                            2. 2

                                              I prefer the kinesis freestyle2. I like the ability to move the two halves farther apart (broad shoulders) and the tilt has done wonders for my RSI issues.

                                              1. 2

                                                similar, largely I like that I can put the magic trackpad in between the two halves and have something that feels comparable to using the laptop keyboard. I got rid of my mouse years ago but I’m fairly biased on a trackpad’s potential.

                                                I’ve sometimes thought about buying a microsoft folding keyboard and cutting/rewiring it to serve as a portable setup. Have also thought of making a modified version of the nyquist keyboard to be a bit less ‘minimal’ - https://twitter.com/vivekgani/status/939823701804982273

                                            1. 3

                                              These look modest in size but very definitely not modest in impact.

                                              1. 3

                                                “modest proposal” is an ironic phrase alluding to https://en.wikipedia.org/wiki/A_Modest_Proposal.

                                                1. 2

                                                  A great text!

                                                  I’ve always considered it as the original inspiration for the old propaganda about Communists eating children.

                                                  I wonder to what length one could go writing a similar paper, in Latex, today.

                                                  It’s definitely an hack to try.

                                              1. 2

                                                I’d reply to this, but I’m really busy doing dot products on big piles of vectors… they’re really big vectors…

                                                1. 2

                                                  Computationally, I don’t think they’re that big. Typical vision models have matrix multiplications that are quite small (on the order of 1000x1000 matrices for the huge ones) relative to the problems solved for computational chemistry (a couple of orders of magnitude bigger).

                                                  1. 2

                                                    I’m doing it by hand, and I’m not good at math.

                                                    1. 1

                                                      I guess that’s why you are procrastinating on Lobste.rs then?

                                                1. 6

                                                  I agree with the author that many of the software abstractions all common operating systems use are decades-old relics of a time when designers made decision based around hardware constraints that are for the most part no longer relevant, and it would be good to re-think the relevance of some of these abstractions.

                                                  The devil’s in the details though. What specific abstraction should replace plain text? If I call my plaintext file “config.json” or and check that it is valid JSON, does that effectively solve the problem I wanted to solve by making another abstraction ubiquitous (is parsing text really all that hard on modern hardware?)

                                                  Are the specific terse conventions of UNIX shell commands (ls, cp, etc.) so bad that it’s worth the transition cost? After all, nothing is stopping anyone from writing their own shell where you type whatever you want to do those things, that really is just a product of human inertia - just like the English spelling system, one might point out.

                                                  Is “But the division of work into processes seems very coarse-grained; one widely replicated practice is having each end-user application, on average, correspond to a process” still true anymore, even on desktop computers? Of course the UNIX process abstraction still exists, but plenty of software makes use of multiple threads of execution (IIRC the basic unit of a thread of execution in Linux is the task, which can be configured share arbitrary resources with other tasks, and if you have one or more tasks that happen to share a memory address space you call that a process). And this is ignoring fairly-common computing environments like, say, offloading computation to GPUs to play a video game or do some hardcore math.

                                                  I don’t want to seem overly critical here. I don’t think that the Linux process abstraction is necessarily the best possible abstraction for running a computer program. Maybe there’s a better abstraction out there that would make multithreading and talking to the GPU much easier, and computing as a whole is losing out because most mainstream software developers have to shoehorn these tasks into an inferior abstraction. But this is below the level of abstraction that I personally normally work in as a programmer, so it’s hard for me to judge whether or not this is actually true without a counterexample of a potentially-better abstraction, which the author doesn’t provide.

                                                  The Urbit project also seems relevant to this discussion. They are trying to build a clean-slate computing environment (right now implemented as an ordinary UNIX process however) that has fundamentally different abstractions from UNIX, created for the purpose of making it easy for people to host personal servers. It uses a custom functional programming language (interpreted by a very minimalist interpreter running on actual hardware) as the OS implementation language/application software language, rather than C; it builds a network namespace into the design of the system at a much more fundamental level than any kind of UNIX networking, and has a model of running programs that addresses a lot of the points made in section 5 of this article.

                                                  1. 1

                                                    Urbit is interesting in many of it’s choices. But it is also a long way from stable and polished. I say this as someone who has spent a lot of time getting to understand it and also possesses a galaxy on the network.

                                                    It will be interesting to see if they can stabilize it and make it more ergonomic.

                                                    1. 1

                                                      Urbit is interesting in many of it’s choices. But it is also a long way from stable and polished. I say this as someone who has spent a lot of time getting to understand it and also possesses a galaxy on the network.

                                                      Oh, absolutely, it’s still very much unstable software. I bring it up because it’s an example of a recent OS that actually is substantially different from UNIX/Windows and uses different abstractions and conceptual metaphors for its computing, that you can use (to some limited extent) right now today.

                                                  1. 15

                                                    Tangential comment: I assume Google funded this in some way (either by paying a person to do it or offering money to the open source project). But, AFAIK, Git is not a Google project so I don’t really like that this introduction is coming from their blog as if it’s theirs. Maybe there is the official release somewhere else? Maybe I’m missing something and all this is kosher.

                                                    1. 14

                                                      Most of the Git core team is employed by Google to work on Git. The maintainer Junio Hamano is a Google employee whose job is to work on Git.

                                                      That is why this announcement is happening on the Google blog.

                                                      1. 8

                                                        Git 2.18 is not yet released, so this is more of call for testing. Google-specific part here is that you can test against googlesource.com, because Google deployed v2 enabled server.

                                                        1. 11

                                                          It reads like an official announcement on behalf of the git project though, while not being on a git-related domain, which is what is somewhat surprising. Well, the first sentence does. The rest of the post wouldn’t have raised my eyebrow, but this part also confused me on first read regarding on whose behalf “we” is speaking here (Google? git? both?):

                                                          Today we announce Git protocol version 2, a major update of Git’s wire protocol…

                                                          1. 3

                                                            Google employs many git and mercurial developers. Very few organizations do source control on the scale of Google so it makes sense for them to fund developers of the tools they use.

                                                            1. 10

                                                              Myself, and I don’t think @mjn, are disagreeing that Google does a lot with source control and probably spends a lot of money on supporting git. My concern/issue is that git is not a Google project so it doesn’t quite feel right that, what feels like an official announcements should be on their website.

                                                              1. 3

                                                                A google employee wanted to share some open source work they’d been doing so they used a company blog. That doesn’t seem weird to me.

                                                                edit: I guess it’s worth adding that it wasn’t really announced in this blog post. You could have seen the discussions about this if you followed the git mailing lists.

                                                                1. 6

                                                                  Google could have done a better job in this post explaining the relationship between Google, the author and the git project. One phrase would have made a ton of difference. For example, “I am John Foo, a Google employee and a member of the git core team” (with a link to some sort of proof on the git website)

                                                                  1. 2

                                                                    Well, there is such phrase, but at the end:

                                                                    By Brandon Williams, Git-core Team

                                                        2. 1

                                                          Did you mean Git is not a google project?

                                                          1. 1

                                                            Fixed, thanks.

                                                        1. 3

                                                          I am trying to solve a similar/related problem in a personal project of my own that specifies a grammar and language for generating configurations. It’s very much a work in progress but has what looks like some parallels to this languages goals.

                                                          My attempts that are in no way ready for anyone to use for serious things is at: https://crates.io/crates/ucg and documented at: https://docs.rs/ucg/0.1.0/ucglib/

                                                          1. 4

                                                            I’d also recommend checking out Dhall: https://github.com/dhall-lang/

                                                            1. 1

                                                              I’ve seen dhall and liked some of what it was doing. It’s good to see movement in this space. We don’t really need more configuration languages though. What we need are good ways to manage all the different types of configuration languages we currently have that isn’t a template language.

                                                          1. 32

                                                            But here’s the thing: every language is weird. And every language makes regrettable design choices early on that it has to reckon with. How and when these mistakes are dealt with is a part of the language, too. Just because you disagree with the decisions doesn’t make the language bad.

                                                            The author is free to like JS if they want but I feel like they are trying to rationalize it by drawing an equivalence between bad decisions in JS and all languages. But that is, IMO, very disrespectful to those language authors that have spent a lot of time thinking through the semantics of their language to not be surprising.

                                                            Not all language mistakes are the same, and JS makes some pretty terrible language decisions that are significantly worse than other languages. We don’t need to know the genesis of those mistake to observe that the behaviour is surprising and undesirable.

                                                            It’s OK to like JS and be fine with that but we don’t need to use faulty logic to accomplish that. We don’t need to pretend there are no faults or any faults that exist are equal to every other language’s mistakes.

                                                            1. 5

                                                              It’s even more odd because his defense of Javascript is Typescript. Which is not javascript. Javascript is just a compile target at that point. It’s more like a defense of the NodeJs ecosystem than of Javascript the language.

                                                              1. 0

                                                                TypeScript is “not JavaScript” in the strictest sense, but it’s a rather small superset. It adds… (surprise) static type checking. And not much else. (It can also compile some extra features like decorators… which are proposals for future JavaScript.) The compilation process is mostly just erasing type annotations. The object model, class syntax, async/await, generators, modules etc. is all standard JavaScript.

                                                                1. 3

                                                                  Static Type checking is huge though. It drastically changes the things that bring the most pain for Javascript development. At least it does for me anyway. Downplaying that difference downplays pretty much the biggest complaint from me about JS development.

                                                                  1. 1

                                                                    I don’t think it’s that huge… in fact I’m still not using it. I’m working on mostly-UI apps that don’t have much logic (like, not far off from a lit-html starter example, more added HTML than JS) and I absolutely don’t feel the need for static types.

                                                                    1. 2

                                                                      We are very different obviously. I’ve been doing this a long time and I’ve decided that types make modifying older codebases much much safer to do. And since the vast majority of my work is modifying older codebases I really value a good type system in my languages.

                                                            1. 5
                                                              1. Because all product decision authority rests with the “Product Owner”, Scrum disallows engineers from making any product decisions and reduces them to grovelling to product management for any level of inclusion in product direction.

                                                              i.e. the product has a clear owner, and you build the thing that customers want rather than the thing that engineers want.

                                                              2-3,9, most of 11: true, and these things result in better software.

                                                              This lack of ownership results in: Poor design Lack of motivation (“It isn’t my thing”, “It was broken when I start working on it”)

                                                              That’s the opposite of my experience. Lack of ownership means I don’t need anyone’s permission to improve code I’m working on, and means the design can be evolved by the people actually working on it, leading to better design.

                                                              5-7, 14: not my experience.

                                                              8, 12: don’t do that then.

                                                              Do managers or Product Owners track and estimate every task they engage in

                                                              Track and estimate tasks? No, because those are reactive positions - QA folk or people on support duties this week don’t estimate either. The point of estimating is to be able to make prioritisation decisions, so it only really applies when there’s a

                                                              with little or no say in what they work on?

                                                              Yes? Managers and owners are expected to solve everything people bring to them, they don’t get any chocie.

                                                              Are they required to present burn down charts that show that they are on target to finish?

                                                              No, nor are developers.

                                                              Are they required to do bi-weekly sell-off meeting to justify their activities?

                                                              No, again like QA or support people.

                                                              13, 14: no actual argument to justify those claims, not my experience.

                                                              1. Scrum ignores the fact that any task that has been done before in software does not need to be redone because it can be easily copied and reused. So, by definition, new software tasks are truly new territory and therefore very hard to estimate.

                                                              Disagree. Scrum does everything reasonably possible to acknowledge that estimation is hard: estimating in officially meaningless points, daily standups to give you an assessment point to realise if a task is diverging from its estimate and reasses if need be. At the same time, ultimately you do want some way to have engineering estimates feed into task prioritization decisions - you need some minimal level of estimation to be able to make the “do I do task A or task B or task C this week” decision. Scrum accomplishes that better than anything else I’ve seen.

                                                              1. 6

                                                                i.e. the product has a clear owner, and you build the thing that customers want rather than the thing that engineers want.

                                                                It’s amazing to me how much bellyaching I hear over this. At $DAYJOB I have people coming to me all the time trying to figure out how to get their priorities done vs what the product owners want …why do you have priorities? Are you paid to build a product or to play with your toys?

                                                                1. 3

                                                                  Maybe… don’t look at your colleagues like children who don’t want to do work and would rather play with their toys. Maybe look at them like adults who are invested in the product in their own way. Maybe you’d understand them better then.

                                                                2. 5

                                                                  Disagree. Scrum does everything reasonably possible to acknowledge that estimation is hard: estimating in officially meaningless points

                                                                  In theory this is true. In practice every single time I’ve seen or used scrum the points have devolved into a meaningful value instead. You can shout as loudly as you want that this is not doing scrum right but human nature says that doesn’t matter. We will inevitably assign a real metric to the points before too many sprints happen. We’ll treat them as time to ship, an estimate of effort required, complexity of problem. It’s pretty much inescapable that this will happen.

                                                                  1. 1

                                                                    I don’t disagree as such. The way I look at it is: given that we want to feed some level of engineering cost estimate into the planning process, what’s the cheapest/least damaging form of estimation we can do that will suffice for making prioritisation decisions?

                                                                    From this perspective points are a small, incremental improvement over estimating in terms of e.g. programmer-days: they blunt some of the sting of “I only got 2 days’ worth of work done this week”, they make it a little less awkward that Bob gets 25% more done than Jim. They make it a little harder for a manager to breathe down your neck with “you estimated this as 3 days, it’s now 4 days since you started, why isn’t it done?”

                                                                    They’re not infallible on any of these aspects, but they’re a little better than using a “real” metric directly. The fact that they’re officially meaningless give you a tool to push back with if people start to misuse them.

                                                                    1. 1

                                                                      They make it a little harder for a manager to breathe down your neck with “you estimated this as 3 days, it’s now 4 days since you started, why isn’t it done?”

                                                                      This sound funny to me, because I’m pretty good at estimating long and complex tasks.

                                                                      My average error is around 2%, but the bigger the task the more precise is the estimate.
                                                                      It’s not magic, it’s just that for bigger tasks managers give me more time to explore the matter. And I’m talking about project that requires small (3-7) to medium (10-20) sized teams.

                                                                      What’s funny?

                                                                      Most of managers (that is all non technical ones, except one) prefer a small estimate than a precise one.
                                                                      They fight back a lot. My usual answer is: “Why did you asked me? Write the numbers you like!”

                                                                      In one case, some years ago, one did. Guess what happened?

                                                                      1. 1

                                                                        My average error is around 2%, but the bigger the task the more precise is the estimate. It’s not magic, it’s just that for bigger tasks managers give me more time to explore the matter.

                                                                        Either there’s some “magic” you’re not mentioning, or you’re working in a very strange field for software. As the article puts it:

                                                                        any task that has been done before in software does not need to be redone because it can be easily copied and reused. So, by definition, new software tasks are truly new territory and therefore very hard to estimate.

                                                                        Certainly I’ve watched teams put a lot of time and effort into “exploring” and estimating, and come up with numbers that turned out to be orders of magnitude out. So it’s not as simple for ordinary programmers as just “spend some time on it”.

                                                                        1. 1

                                                                          No magic, really.

                                                                          You just need twenty years of experience in a lot of different projects (with several different stacks), good tools (that I design for my own team) and enough informations.

                                                                          The only “strange” thing is that we work for big banks.

                                                                          1. 1

                                                                            Well, bully for you, but most working programmers don’t have twenty years of experience, and in most fields you never have “enough” information. (I’m not surprised that projects in big banks would be unusually predictable, but that doesn’t help the rest of us).

                                                                1. 2

                                                                  Nice article. Actually the core argument (you should not trust software that you cannot debug and understand) apply as well to so many systems.

                                                                  To me, for example, it’s the main proof that the AI research lacks barely competent programmers.

                                                                  However I’d like to talk about another point that the author touches:

                                                                  Instead of directing resources to the elimination of trust, we should direct our resources to the creation of trust

                                                                  It’s actually my own conclusion that I reached from another perspective: you fix many internet issues (trolls, spam, physhing, fake accounts…) if you remove the anonymity that protect misbehaviors.

                                                                  I know that this is a counter intuitive solution (if it is a solution) but I see nobody even try to explore a pretty large solution space without much reason.

                                                                  The fact is that you cannot really build trust over the internet if you are not sure who you are trusting.

                                                                  And indeed certification authority are expensive trusted parties that are used to remove anonymity from some nodes, just because the infrastructure does not provide it by itself!

                                                                  What do you think about this?

                                                                  1. 2

                                                                    The core argument: you should not trust software that you cannot debug and understand

                                                                    But the core argument is wrong. This is what formal verification does. For example, even if you don’t understand how register allocator works in CompCert, you should trust that CompCert will never make a register allocation mistake. Verification is not trivial, but it is also not meaningless. You need to check formal specification matches your understanding, there is no shortcut there, but you can definitely trust some software without understanding its implementation details.

                                                                    DAO is a good example. DAO was a prodigal contract in the sense of https://arxiv.org/abs/1802.06038. So if you ran the checker authors proposed, one of two things happen: either you find the contract was prodigal, or you find, without understanding the contract in detail, nevertheless it can never leak the fund to arbitrary users. (This example is somewhat defective because it is kind of obvious that the checker was written precisely so that DAO bug can be found. But the principle works.)

                                                                    1. 3

                                                                      This example is somewhat defective because it is kind of obvious that the checker was written precisely so that DAO bug can be found. But the principle works.

                                                                      The principle works in principle, indeed.

                                                                      I’m all for formal verification of simple programming languages.

                                                                      But you not just need whole-program verification (including libraries and runtimes and their interactions), you need to verify the environment: you must ensure that the environment interacting with the program works as specified.

                                                                      Without that formal verification is very useful to automatically detect some bugs, but to my knowledge no formally verified language claim to produce non trivial bug free programs only.

                                                                      Thus the most reliable way to security is still simplicity and competent reviews.

                                                                      Competent reviews are not enough.
                                                                      Simplicity is not enough.
                                                                      Full test coverage is not enough.
                                                                      Whole-program formal verification is not enough.

                                                                      All these things just help to improve trust we put in the programmers.

                                                                      1. 5

                                                                        but to my knowledge no formally verified language claim to produce non trivial bug free programs only.

                                                                        The honest ones only claim to reduce bugs a lot. The imperfection of human knowledge and tools combined with intrinsic complexity means some can slip in there. The closest things to consistently producing non-trivial programs that are bug-free or nearly bug-free were Cleanroom and SPARK Ada. Those are really good defect rates which don’t even represent height of what can be achieved given people often stick to one tool too much instead of combining them. The SPARK developers just added more support for automatically handling floating point, too. That might make it even better for smart contracts.

                                                                      2. 2

                                                                        Most people can’t do formal verification. Those works take to long to replace a lot of existing contracts. The stuff in contracts might be hard to formalize. They also might formalize the wrong thing that analysis or executions might show. Many reasons to keep the code human-verifiable. In high-assurance systems, all of the assurance activities were required for an EAL6-7 certification for exactly that reason. Think checks and balances.

                                                                      3. 2

                                                                        Anonymity does protect misbehavior. However, misbehavior is usually defined by some authority, and in a global arena like the internet one persons misbehavior is another persons moral obligation. Before you can remove anonymity you would first need to standardize the worlds morality. I have serious doubts that you could do such a thing in any reasonable time frame or at all.

                                                                        1. 1

                                                                          First, thanks for responding.

                                                                          one persons misbehavior is another persons moral obligation

                                                                          Most of times, it’s not a matter of morality, as it is for drug dealers, killers, child porn and so on.

                                                                          But I see the risks for minorities, actually.

                                                                          However I don’t see how we could not have anonymous informations inside an indentificable network as we have identificable information in an anonymous network.

                                                                          Before you can remove anonymity you would first need to standardize the worlds morality.

                                                                          Isn’t this what american capitalism has been trying (with an astonishing success) from 1950?

                                                                          Still technically a global shared morality is not required (just like it’s not required in any state): what you need is just a global government.

                                                                          Which is going to happen shortly (on a geopolitical scale).

                                                                          I could bet a coffee it’s a matter of at most 2 hundreds years (probably just a couple of generations).

                                                                          The point is: how many wars and death will happen before? And could a non anonymous network help to make the transition smoother and wiser?

                                                                      1. 4

                                                                        If you look at the success of the internet (beyond just the web) I think it’s safe to say OO, not FP, is the most scalable system building methodology. An important realization that Alan Kay emphasizes here is that OO and FP are not incompatible at all. A formal merging of FP and OO can be seen with the Actor Model by Carl Hewitt

                                                                        In other words, I think FP can supercharge OO and it seems the rock stable and fast systems built with Erlang and friends prove this out.

                                                                        1. 7

                                                                          I think servers have scaled now based on solid messaging protocols that are not OOP in nature. And databases are still relational last i checked.

                                                                          1. 6

                                                                            Alan Kay would say that OOPs foundation is messaging protocols.

                                                                            1. 2

                                                                              precisely ! The whole internet is an objective oriented system. The smallest model of an object is a computer. so what is an object ? Its a computer that can receive and send messages. Systems like erlang have million little computers running on one physical computer for instance.

                                                                              1. 4

                                                                                that’s a real stretch. I might as well claim that REST’s success is entirely because it is really just functional programming as it passes the state along with the function and that it is pretty much just a monad.

                                                                                Also, SQL is still king and no object-oriented database approach has supplanted it.

                                                                            2. 4

                                                                              They use the FSM model. Hardware investigations taught me they’d fit in Mealy and Moore models depending on what subset of protocol is being implemented or how one defines terms. Even most software implementations used FSM’s. Maybe all for legacy implementations given what I’ve seen but there could be exceptions.

                                                                              And, addressing zaphar’s claim, their foundation or at least abstracted form may best be done with Abstract, State Machines described here. Papers on it argue it’s more powerful than Turing model since it operates on mathematical structures instead of strings. Spielmann claims Turing Machines are a subset of ASM’s. So, the Internet was built on FSM model which, if we must pick a foundation, matches the ASM model best even though the protocols and FSM’s themselves predate the model. If a tie-breaker is needed for foundations, ASM’s are also one of most successful ways for non-mathematicians to specify software in terms of ease of use and applicability.

                                                                              1. 3

                                                                                You just made the engineer inside me happy :) FSM are the first thing we learned in engineering school but too often software is just hacked together based on code and not design. FSM form the basis of any protocol/service. eg: TCP, FTP, TLS, SSH, DNS, HTTP, etc.

                                                                                1. 3

                                                                                  The cool thing is those can be implemented and verified at the type level in dependently typed functional languages. See Idris’ ST type. Session types are another example. Thankfully I can see movements in the FSM direction on the front end with stuff like Redux and Elm, but alas it will be a while before these can be checked in the type system.

                                                                            3. 4

                                                                              I don’t think the internet is a good reference model. IMO the internet is largely a collection of “whatever we had at the time” with a sprinkle of “this should work” and huge amounts of duct-tape on top. The internet succeeded despite being build on OO, not because of it. Though I think FP would also have made the internet succeeded in spite of it, not because of it.

                                                                              There is no one true methodology, I think it’s best if you mix the two approaches where it makes sense to get the best of both worlds.

                                                                              1. 1

                                                                                Let me be more specific , by internet i mean TCP/IP and friends , not HTTP and friends.

                                                                                1. 2

                                                                                  Even TCP/IP and friends is a lot of hacks and “//TODO this is a horrible hack but we’ll fix it later”. HTTP is just the brown-colored cream on top of the pie that is the modern internet.

                                                                                  It’s why DNSSEC and IPv6 have seen such little adoption, all the middleboxes someone hacked together once are all still up and running with terrible code and they have to be fully replace to not break either protocol.

                                                                                  I’ve seen enough routers that silently malform TCP packets or (more fun) recalculate the checksum without checking it, making data corruption a daily occurence. Specs aren’t followed, they’re abused.

                                                                                  1. 2

                                                                                    And yet the internet has never shut down since it started running with all its atoms replaced many times over. Billions of devices are connected and the whole system manages to span the entire planet. It just works.

                                                                                    It’s an obviously brilliant and successful design that created tens of trillions of dollars in value. I think you will be hard pressed to find another technology that was this successful and that changed the world to the degree the internet has.

                                                                                    Does it have flaws like the ones outlined? Yes of course. Does it work despite them? Yes!

                                                                                    The brilliance of the internet is that even when specs are not followed, the system keeps on working.

                                                                                    1. 2

                                                                                      I think it’s more in spite of how it was built and not because of it.

                                                                                      And the internet has shut down several times by now, or atleast large parts of it (just google “BGP outage” or “global internet outage”)

                                                                                      It’s not a brilliant design but successful, yes. It’s probably just good enough to succeed.

                                                                                      Not brilliant, it merely works by accident and the accumulated ducttape keeps it going despite some hiccups along the way.

                                                                                      If the internet was truly brilliant it would use a fully meshed overlay network and not rely on protocols like BGP for routing. It would also not have to package everything in Ethernet frames (which are largely useless and could be replace with more efficient protocols)

                                                                            1. 2

                                                                              Although court rulings do not yet exist, legislative texts from countries such as Germany, the UK, or the USA suggest that illegal content such as [child abuse imagery] can make the blockchain illegal to possess for all users.

                                                                              Oh boy, this could be fun…

                                                                              1. 0

                                                                                Oh boy, this could be fun…

                                                                                As a supporter of cryptocurrencies and digital rights, “fun” is not the term I would use.

                                                                                The price of hard drugs, if anything, is inflated thanks to the creation of black markets, so from a valuation standpoint I don’t think crypto fans have much to worry about, but from a freedom and quality-of-life standpoint? Well, if you like the War On Drugs, you’ll probably be rooting for a War On Software too.

                                                                                1. 22

                                                                                  As an opponent of cyptocurrencies and other obviously inefficient solutions to inexistent problems, I would like to stress the word “fun”.

                                                                                  And I highly doubt that there will be any such issue, as with the “war on drugs”. It’s well known that there aways was a racial component to it, and drugs have a slightly more addictive effect than some digital currency that people play around with. There’s just not enough real interest in it, for people to start dealing in black markets or anything on that level, for the sake of abstract “freedoms”.

                                                                                  And regardless, the main point here would be that companies would think twice before jumping onto the bubble, which has been a big driving force behind Bitcoins (volatile) development over the past year or some time. If the crypto enthusiasts can’t lie to eachother anymore that it’s all about buying and selling the currency itself, well, I would be sceptical how long this libertarian wet-dream would last.

                                                                                  1. 0

                                                                                    lie to eachother anymore that it’s all about buying and selling the currency itself, well, I would be sceptical how long this libertarian wet-dream would last.

                                                                                    Any time a disruptive technology appears that poses a threat to people’s egos or to the status quo, there is always a FUD brigade that posts complete, total nonsense.

                                                                                    I’m interested in Bitcoin’s value as a tool for decentralizing financial systems as well as control over digital assets, identities, SSL certificates, etc. Bitcoin is a genuinely interesting and useful invention that is already being used to do things that were impossible before.

                                                                                    But sure, of course, to those threatened by it (for whatever reason), it will remain, like the Internet once was to some, “a libertarian wet-dream”, a “pyramid scheme”, and is “all about buying and selling”.

                                                                                    1. 6

                                                                                      Why is it so hard to understand that some people just don’t think Bitcoin is a good idea? And how come you always have to imply it’s because of a lack of knowledge or some subconscious motivation?

                                                                                      I used to be a big fan, and I still admire it because of it’s openness and decentralised structure. No doubt that it has theoretical potential, but it’s also oversold. Looking at the whole picture, not just the pleasant parts, trying to avoid cognitive biases, I just had to come to the conclusion that it’s not worth it. However interesting it may appear to be, and I’m really sorry that you couldn’t convince me to invest my whole life savings in Bitcoin, but it really just isn’t the right tool for the job. (And I’m not saying this because I’m afraid of it, for whatever reason)

                                                                                      There’s a reason after all why the price of bitcoin is measured relative to the US dollar or the Euro, and not the amount of everyday goods you can purchase with it…

                                                                                      1. 0

                                                                                        Why is it so hard to understand that some people just don’t think Bitcoin is a good idea?

                                                                                        Nobody has said that? I’ve explicitly acknowledged that?

                                                                                        And how come you always have to imply it’s because of a lack of knowledge

                                                                                        Because it has been?

                                                                                        I’m really sorry that you couldn’t convince me to invest my whole life savings in Bitcoin

                                                                                        Again with this nonsense.

                                                                                        To quote myself again: “Nobody’s forcing you to use Bitcoin, lol, by all means, support the existing banking system.”

                                                                                        No doubt that it has theoretical potential

                                                                                        And practical potential. Lots of businesses are already using it to do things that weren’t possible before. I will not link you to them, because that would be to “imply it’s because of a lack of knowledge” on your part.

                                                                                        1. 1

                                                                                          Nobody has said that?

                                                                                          In your previous comment you made multiple implications that any opposition to bitcoin has to be founded on a lack of understanding or “fear”, but it couldn’t be because Bitcoin, blockchains or any other crypto alternative has objective deficiencies, which would make them unattractive.

                                                                                          To quote myself again: “Nobody’s forcing you to use Bitcoin, lol, by all means, support the existing banking system.”

                                                                                          To say this is meaningless. Nobody forces anyone to use Euros, Dollars, or whatever other currency, instead there is a compulsion to do so, because everyone else uses them. And while I conciser it very unlikely that Bitcoin would ever get anywhere near that point, I still want to insist that it isn’t good. This doesn’t mean that I think the existing banking system is great – this isn’t a black and white picture, like the one you are trying to paint.

                                                                                          Lots of businesses are already using it to do things that weren’t possible before.

                                                                                          Please stop being childish and us what has been impossible before the “invention” of bitcoin?

                                                                                          1. 1

                                                                                            blockchains or any other crypto alternative has objective deficiencies

                                                                                            I’m very well aware of their objective deficiencies, but nowhere in this thread have I seen you point one out.

                                                                                            This doesn’t mean that I think the existing banking system is great

                                                                                            No, you’re just implying it’s greater than Bitcoin and then painting your (silly) opinion to be an objective fact.

                                                                                            Please stop being childish and us what has been impossible before the “invention” of bitcoin?

                                                                                            Surely someone as enlightened about this technology as yourself is aware that decentralized immutable ledgers didn’t appear to exist before the creation of Bitcoin’s proof-of-work consensus algorithm?

                                                                                            1. 1

                                                                                              Bitcoin may have won the the hype war but other technological tools for decentralized consensus have existed long before proof of work. Byzantine Generals/Paxos is all about distributed consensus in the face of untruthful members. And the immuable ledger in merkle tree form has been around for a very long time as well.

                                                                                              It does not appear to me that bitcoin is winning due to technical merit. It appears that it is winning due to PR and a critical mass of people wanting to speculate on a digital asset.

                                                                                              1. 1

                                                                                                Call it “hype” or other names if you wish, none of it changes the technical reality of proof-of-work’s achievement.

                                                                                                It does not appear to me that bitcoin is winning due to technical merit.

                                                                                                It is entirely due to technical merit. You need only look at the graveyard of failed attempts.

                                                                                                Neither Paxos nor any of those older generation consensus algorithms have proof-of-work’s properties. They are all centralized consensus algorithms, aka “distributed consensus algorithms”, not decentralized consensus algorithms, and hence they are not capable of providing the strong immutability guarantees that proof-of-work provides, nor are they capable of distributing a token in a randomized, permissionless fashion.

                                                                                                But if you believe I’m full of it by all means create a Paxos Coin and see how far it goes.

                                                                                              2. 0

                                                                                                I’m very well aware of their objective deficiencies, but nowhere in this thread have I seen you point one out.

                                                                                                I’ve mentioned energy usage, which you seem to straight out deny. I’ve pointed out that Bitcoin can’t substitute “real” money, due to it’s volatility. And then you also have it’s tendency to centralize (as one can both in terms of mining power and the richest addresses), it’s processing speed, the lack of any authority to trust, all the “get rich fast”-schemes, etc.

                                                                                                I should clarify, because I have just realized that I accidentally used the word “blockchain” instead of “Bitcoin”, once or twice, that my main issue is Bitcoin and related crypto currencies, especially based on Proof-of-work w/ hashing.

                                                                                                No, you’re just implying it’s greater than Bitcoin and then painting your (silly) opinion to be an objective fact.

                                                                                                It’s only “Greater” in the sense that there is no point to change everything, and that it has a background in very questionable economic theories. I am still no friend of banking or bitcoin. This is a false dichotomy.

                                                                                                Surely someone as enlightened about this technology as yourself is aware that decentralized immutable ledgers didn’t appear to exist before the creation of Bitcoin’s proof-of-work consensus algorithm?

                                                                                                I would very much appreciate it if you wern’t so arrogant, you are really reinforcing the bad image of the bitcoin/blockchain community.

                                                                                                I don’t claim to be an expert, but I know enough to have an more-or-less informed opinion. I know that Bitcoin was the first successful “decentralized append-only list”, or however one want’s to call it (which I still don’t think it as spectacular and innovative as some people push it to be), but we (since I seem to be part of the majority here) still want to know what you meant by this: Lots of businesses are already using it to do things that weren’t possible before. What is possible, now, that just can’t be done in any shape or form before blockchains? All I’ve seen until now, are just decentralized (if at all) alternatives to centralized services. And while in some cases it’s interesting (distributed DNS, for example) I don’t see anything fundamentally groundbreaking about it.

                                                                                                And again, since you seem to be “enlightened about this technology”, I want to hear a serious opinion, and not this frankly insulting and degrading conversation. I’ve changed my mind once, from being an avid supporter to a critic, so maybe you can show me a more nuanced position?

                                                                                      2. [Comment removed by author]

                                                                                        1. 3

                                                                                          ^^ I didn’t say I was supposing anything, especially no “corrupt financial system”. Why is thinking that the environment is worth being saved, always equated with this unrelated argument?

                                                                                          Nor do I deny general dissatisfactions, it’s just that startup-tier “alternatives”, don’t change stuff, but instead repackage to preserve.

                                                                                          1. -2

                                                                                            I didn’t say I was supposing anything, especially no “corrupt financial system”

                                                                                            The entire point of Bitcoin, of which you are “an opponent of”, is fixing the corrupt financial system.

                                                                                            don’t change stuff, but instead repackage to preserve.

                                                                                            A transparent decentralized digital ledger of a fixed quantity token does change stuff, which is why it’s under constant attack.

                                                                                            Why is thinking that the environment is worth being saved, always equated with this unrelated argument?

                                                                                            Please spare us this nonsense which has been beaten to death a million times [1][2].

                                                                                            [1] https://lobste.rs/s/selc7k/bitcoin_energy_consumption_index#c_agchk7

                                                                                            [2] https://coincenter.org/entry/five-myths-about-bitcoin-s-energy-use

                                                                                            1. 11

                                                                                              The entire point of Bitcoin, of which you are “an opponent of”, is fixing the corrupt financial system.

                                                                                              That assumes that bitcoin is fit for the purpose. I don’t believe that it is, and I suspect that zge is on the same page.

                                                                                              1. 0

                                                                                                I suspect that zge is on the same page

                                                                                                Yes, he’s made that clear. I am also skeptical that Bitcoin will be able to single-handedly fix the corruption, but I do think it’s made a significant step in that direction.

                                                                                                From the naysayers, I’m only seeing nonsense, and nothing helpful.

                                                                                              2. 7

                                                                                                Replace the Fed’s stable, efficient pyramid scheme with an unstable, inefficient system with miner rewards distributed like a pyramid scheme? And with financial institutions that get hacked more often?

                                                                                                Nah, Im sticking with regular currency and banks. Just need to fix that at the root like with public-benefit banks, payment services, etc with no or little charge open interchange protocols.

                                                                                                1. -4

                                                                                                  Nobody’s forcing you to use Bitcoin, lol, by all means, support the existing banking system.

                                                                                                  EDIT: Maybe learn what a pyramid scheme is, and what an “open interchange protocol” is. (Why are Bitcoin haters always full of it?)

                                                                                                  1. 6

                                                                                                    What you are bringing to the table right now is derisive comments and insults. Your antagonizing behaviour is not conducive to meaningful debate.

                                                                                                    1. -1

                                                                                                      What you are bringing to the table right now is derisive comments and insults.

                                                                                                      I’m merely refuting untrue statements. There shouldn’t be anything derisive or insulting about that. But you’re welcome to point out something specific I said.

                                                                                                      1. 1

                                                                                                        Maybe learn what a pyramid scheme is, and what an “open interchange protocol” is. (Why are Bitcoin haters always full of it?)

                                                                                                        1. -1
                                                                                                    2. 2

                                                                                                      An interchange protocol (i.e EDI) just lets people exchange goods digitally. Usually keeps the currency, organizations, and contract law of areas of operation of those involved. Swift is main provider for traditional systems with lots of services on top. If just transfers and open, Interledger would be a decent example. Bitcoin gives you transfer but replaces foundation of existing system in way that eliminates its benefits. So, it’s not just an exchange protocol.

                                                                                                      A pyramid scheme generates massive profit for those on top of the hierarchy of payment or control by the design of the scheme. Usually each level gets a fraction less than those above it. The scheme is sustained by bringing more people in with their money who don’t get the benefits they were promised. Bitcoin’s mining is structured like that with the stable currency what’s promised but not delivered. Other classes of fraud involve selling people on investing into something that will go nowhere so the traders and speculators can make piles of money on it. You’re right that calling it a pyramid scheme is nonsense: it’s like a pyramid scheme, gambling ring, and series of pump n dump mini-schemes all combined into one designed to drag out for quite a while as the gamblers and legitimate users all keep putting effort into it hoping it’s something else. At least, that’s what the output of the system looks like when compared to traditional currencies and investment bubbles

                                                                                                      I’m curious how many of you are banking in Bitcoin entirely knowing it’s worth about just a little more or less each day than it was when you put it in there. Just like a stable, competitive currency instead of a media-driven stock or something with a value going all over the place.

                                                                                                      1. 2

                                                                                                        An interchange protocol

                                                                                                        I see you got rid of the “open” part.

                                                                                                        Interledger would be a decent example

                                                                                                        Interledger is great.

                                                                                                        Bitcoin gives you transfer but replaces foundation of existing system in way that eliminates its benefits.

                                                                                                        Unsubstantiated claims don’t impress me.

                                                                                                        Bitcoin’s mining is structured like that with the stable currency what’s promised but not delivered.

                                                                                                        Lies. Show me anywhere in the whitepaper or on Bitcoin.org or in any of Core’s messaging where profits are promised.

                                                                                                        The reality is miners often mine at a loss, and know they will be doing so. The system is designed to reach equilibrium, with the cost of mining approaching the profit derived thereof.

                                                                                                        It is nothing like a pyramid scheme. It is no more a pyramid scheme than companies who mined for gold are a pyramid scheme.

                                                                                                        Again, the word “pyramid scheme” has an established definition, one that does not fit gold or nearly identical assets like bitcoin.

                                                                                                        A pyramid scheme (commonly known as pyramid scams) is a business model that recruits members via a promise of payments or services for enrolling others into the scheme, rather than supplying investments or sale of products or services. As recruiting multiplies, recruiting becomes quickly impossible, and most members are unable to profit; as such, pyramid schemes are unsustainable and often illegal.

                                                                                                        Bitcoin is a decentralized consensus protocol with no leader, it is incapable of being a pyramid scheme.

                                                                                                        If a scammer exists who says “buy _____, it’s going to give you great profits!”, that doesn’t make whatever you put in the blank a pyramid scheme, it just makes that person a scammer.

                                                                                                        Next you’ll probably tell me why Bitcoin is a Ponzi scheme, and I’ll be happy to explain to you why you’re wrong about that too. But you can spare us both the suffering by just reading the definition.

                                                                                          2. 1

                                                                                            Do you think the price of hard drugs would be lower if the market to buy and sell them didn’t exist?

                                                                                            1. 2

                                                                                              if the market to buy and sell them didn’t exist?

                                                                                              Sorry, don’t think I understand the question. The market for such things has always existed, the only difference is its legality.

                                                                                              1. 1

                                                                                                Ah, my mistake, I thought you were saying “the price of hard drugs would be inflated compared to the absence of a black market”, which doesn’t make sense, but I think you were actually saying “the price of hard drugs would be inflated with respect to a legal market”, which is probably true (modulo taxation and the exact rules of how that market is regulated)

                                                                                        1. 2

                                                                                          I don’t really understand the goal of this. OpenBSD is supposed to be used for it’s security (mainly) or simplicity, but what’s the goal of it for machine learning?! I mean, everybody admits that OpenBSD is definitely slower than many linux distributions and ML seem to be an abyss for CPU/RAM resources. Maybe this is just for fun, but it seems like an useless constraints to me…

                                                                                          1. 19

                                                                                            From reading the article I think he had three goals:

                                                                                            • learn about NN
                                                                                            • learn about OpenBSD
                                                                                            • leave the comfy environment of an IDE

                                                                                            It looks like he just picked OpenBSD because he was interested in it, not because it is a good environment for machine learning.

                                                                                            1. 8

                                                                                              If you were doing ML for real, you’d probably be using a GPU/TPU. Or a distributed system (as e.g. in neuroevolution). Which makes OpenBSD a suboptimal choice.

                                                                                              However, if you’re just doing it on the CPU & system RAM, it’s basically all pure compute, so the speed of the operating system does not really play a role (unless you’ve got so many cores that scheduling becomes a problem). The speed of the OS only becomes relevant when you’re heavily involving the kernel (and perhaps the allocator), which you don’t in pure compute.

                                                                                              It’s just for fun.

                                                                                              1. 1

                                                                                                If you were doing ML for real, you’d probably be using a GPU/TPU. Or a distributed system (as e.g. in neuroevolution). Which makes OpenBSD a suboptimal choice.

                                                                                                I think this is a serious misconception about machine learning. The majority of machine-learning applications probably can run on a single PC (potentially your laptop if it has enough RAM).

                                                                                                1. 1

                                                                                                  The majority of machine-learning applications in use today? No doubt, they are constrained by the resources that we have today. The pressure to go bigger and deeper is there and deep networks have shown so much promise. Training overnight, or for days or even weeks is no fun. And yet the fact that we even can train such deep networks at all within such a “reasonable” timeframe is what drives the current AI hype cycle.

                                                                                                  If you have an useful source from which I can learn why the majority of machine-learning applications are not constrained by performance, I’d be interested.

                                                                                              2. 3

                                                                                                He is obsessed with efficiency. At work he doesn’t use them to be efficient and on holiday he is cramming everything together to be efficient (at learning/fun).

                                                                                                1. 1

                                                                                                  If it’s for a corporation I presume it’s so he can hack it up without having to share source.

                                                                                                  1. 1

                                                                                                    This both highly pessimistic and also wrong. He did it for fun not for work or to open source. Purely personal coding for pleasure.

                                                                                                    1. 2

                                                                                                      It’s not pessimistic, it’s what a lot of people hack on BSD for and its honestly part of what the license was designed for. The fact that you clarified that it’s not to open source means he might have a quiet closed source ambition for it. It’s not unreasonable to presume because he picked the platform which legally permits a behavior, that it might contribute to why he picked it.

                                                                                                      1. 1

                                                                                                        Except that he wasn’t hacking on BSD. He was using it as a dev platform but he didn’t modify it. He was hacking on neural network implementations from whitepapers so he could learn about them. BSD was filling the role of Operating System and nothing more.

                                                                                                        1. 1

                                                                                                          Ah that clarifies a lot. He’s just using it as his os. I normally would RTFA but facebook. I wasn’t trying to paint them in a negative light though yes definitely from a more OSS passionate perspective that would be negative.

                                                                                                1. 1

                                                                                                  I’ve been playing too much Monster Hunter World. I hear Bazel and I go oh god not again. This might be an interesting one to add dotnet core support though.

                                                                                                  1. 1

                                                                                                    Support for dotnet core is already in progress and is partially usable: https://github.com/bazelbuild/rules_dotnet

                                                                                                    I’m the maintainer although my time to contribute lately has been limited. I don’t do as much .Net as I used to these days. I’ll happily accept patches from anyone who wants to help get it across the finish line.