1. 7

    I think the pushback is valid but I still like the idea that by default values shouldn’t change. If you want real immutability, we’re stuck with the library options which actually work great, but I think there’s no harm in “overuse” of const, other than it seems to annoy the op, and others.

    1. 1

      The author does claim that there is harm in the overuse of const. His argument is in Section 5 and basically says that when you use const for things that happen to be immutable, instead of things that are intended to be immutable, then you’re loosing the potential communication benefits from const.

      I think the author would agree that default values shouldn’t change, but const doesn’t guarantee immutability, just not reassignment.

      1. 1

        The authors argument here, though, is basically “We all know what const means but it doesn’t mean what I think it should do”. I don’t know of any JS engineers who use const and are confused that it doesn’t guarantee the immutability of every aspect of the variable. I do agree that emphasis on const is overrated.

        I actually have more time for the unmade argument that there’s too much focus on “this should be const” rather than “does this need to be let, can we find a way to not do that?”

    1. 1

      As Thompson put it:

      Since assignment is about twice as frequent as equality testing in typical programs, it’s appropriate that the operator be half as long.

      Great!

      Now… what about === and !== (in Javascript)?

      1. 1

        I think js thought it was doing you a favor by doing type comparisons with double equals. That’s what it implies to me, anyway.

      1. 2

        Very cool. I wonder if once WebAssembly matures will browser let it interact with the DOM directly instead of through a JS API.

        1. 3

          Yes, that’s in the works as one of the most desired feature, it’s called the “host bindings proposal.”

          1. 1

            Thank you for the name. I hadn’t ever heard anyone ever give the specific proposal name before. It’s much appreciated.

            1. 1

              No problem! One related bit of info: originally, it was thought that GC support would have to come first, but with host bindings, GC isn’t necessary. So that upped the possible timeline quite a bit!

          2. 1

            See also wasm-bindgen. Should ve mentioned in the blog post.

          1. 5

            Is there a single Fuchsia user yet? When does that happen? Is this targeted at IOT? (I’ve heard that thrown around as a reason for its existence) or is this a take on what computers could be if you stripped away all the legacy?

            1. 17

              or is this a take on what computers could be if you stripped away all the legacy?

              I think that’s the technical ambition.
              A worth ambition, I would add, since I pursuit it too (if in a completely different direction).

              But the political reason is pretty obvious: to build a GPL-free system that can get rid of Linus & friends.
              Under Google’s own control.

              1. 2

                I’m a pretty heavy GPL advocate, but this at least is open source.

                1. 6

                  Sadly this doesn’t mean much.

                  Beyond my own experience with open source operating systems developed by Google employees, I’ve seen in the past that a liberal license means nothing when it comes to the power of such large companies.

                  They have plenty of ways to discourage developers from using the freedoms that the license provides.

                  The careful wording in the PATENTS file is probably one of these.

                  Another could be unusual build infrastructure or huge build times (as in the case of Chromium).

                  Indeed I do not remember any abandoned project from such companies that was later taken from a community (like in the case of open office, for example), but I’m happy to be corrected in this regard.

                  1. 4

                    I take your point regarding the reality that all such agreements rely on parties, particularly the more powerful ones, acting in good faith, and stories like the one you link about HarveyOS certainly should discourage contributing to non-GPLed (or similarly Freely licensed) projects. Or, one may engage with them that way by presuming that your contributions will be appropriated and unremarked. The ability to simply choose to fork the project initially and never give back, though, is something that somewhat mitigates that in the case of BSD, even as it goes against the FSF pro-sharing ethos.

                    I’m not going to get into the patent release; I acknowledge your point but don’t think using that vector is likely. Same, I guess, with the technical discouragements like the build time in Chromium, because that’s extremely legit as a critique of the consequential impacts of that software. I do not think there’s an abstract philosophical defense against any of the points you raise, in the context of an FSF philosophy.

                    But as long as we’re getting consequentialist here, there are reasons to believe that the interests of Google and the People are aligned on this project. I think their ambition is to have a Zircon-based OS running on devices from the scale of phones and watches on up to a datacenter-sized supercomputer, seamlessly participating in distributed computation, and the only way to achieve that is to make it as ubiquitous as possible. In order to do that, it needs to be developer-friendly, because as an operating system, it needs to appeal to people like us (technical users, developers, etc.), whereas something like Chromium doesn’t. Regarding my thesis about their ambition, from https://fuchsia.googlesource.com/docs/+/master/the-book/life_of_an_open.md (emphasis added here):

                    Once the message has been transmitted from the client’s side of the channel, it lives in the server’s side of the channel, waiting to be read. The server is identified by “whoever holds the handle to the other end of the channel” – it may live in the same (or a different) process as the client, use the same (or a different) runtime than the client, and be written in the same (or a different language) than the client. By using an agreed-upon wire-format, the interprocess dependencies are bottlenecked at the thin communication layer that occurs over channels.

                    I have seen good operating systems be BSD-licensed (for example, *BSD). I’m pretty stoked about this project.

                    1. 8

                      Well, from a technical point of view, I’m pretty sure it will be a great piece of software.
                      And given how primitive are the mainstream operating systems right now, any piece of research is welcome for me.

                      But I do not think that “the interests of Google and the People are aligned on this project”.
                      I trust the Fuchsia developers’ skills, but Google is a huge corporation: its interests evolve independently from any ethical consideration, and its open source software is always a strategical marketing tool.

                      Take Chromium, for example: it’s a great software that pushed the web forward (and JavaScript abuse with it, but this is another story), but its main purpose was to defeat Microsoft.
                      I was naively fooled to think that the creation of Google Chrome Frame was a sort of philanthropic effort to helps those people who were stuck to IE. It was not.
                      Indeed IE still sucks and many people are still forced to use it, but Google abandoned GCF when they won the war they cared about.

                      While I still think that Microsoft purposely tried to slowdown the web for its own interests, Google was not better, just smarter: Google was able to dress its marketing strategies as philanthropic gifts, for years.

                      Now they are doing the same with Fuchsia.

                      If they will success, they will spread an os that is just “formerly” open source, but they will lead the development both technically and politically. And you will see a lot of effort from other companies too to make this happen. Just like such companies invest in LLVM, another great piece of software that is designed to defeat the most important piece of code controlled by the Free Software Foundation: GCC.

                      As of today, indeed, I don’t think big companies are scared by the “virality” of the GPL.

                      They are much, much more scared by the message it carries: programming is a powerful political act. Probably one of the most powerful.

                      Had this realization to mix with the consciousness of how primitive is our field, they would completely loose control of their programmers (that they already try to keep under strict control with various methods).

                      So just like Microsoft did not really understand what was happening with Chrome, now everybody looks at Fuchsia just for its technical design.

                      But don’t get fooled, the enemy now is the true hacker’s culture that people like Richard Stallman, Linus Torvalds and Theo de Raadt, despite their differences (or maybe exactly for their differences), represent.

                      1. 3

                        I can’t argue with you, and even wrote similarly last year: https://blog.joeardent.net/2017/01/say-no-to-corporate-friendly-licenses/

                        1. 1

                          Nice read.

                          We live in a world where a group of eight people have control of more economic means than the poorest four billion people, and the power disparity between our corporate masters and regular humans is unimaginably vast. There’s very little that you or I can do, but we do have one ace up our sleeves: we write software, and software increases our leverage. So don’t give that leverage to the leviathans trying to commoditize you.

                          I really think that we, as hackers, should deeply reflect on the power that we have.

                          And on the responsibility that comes with it.

                      2. 2

                        I’ve been interested in distributed, capability-based systems for a while, since EROS/CoyotOS in the early 2000s, and Zircon/Fuschia seem like the best shot at embodying the spirit of those systems, as in, eg, http://www.capros.org/overview.html

                      3. 1

                        How do huge build times restrict developers’ freedoms? Does Gentoo suffer the same fate?

                        1. 2

                          Well, in 2015 I was asked by one of our customers (a large multinational bank) to evaluate the fork Google Chrome Frame when Google retired its support.
                          They used it over IE8 for their intranet (a pretty secure environment, AFAICT) and just wanted someone to call in case of functional bugs for a couple of years.
                          The budget they were ready to pay for this request was pretty high, and the technical skill of my team were (and are) pretty amazing.

                          If I remember correctly, it took 3 days to get the build complete on my desktop.

                          Managers were already pretty scared by the risks (that for the first time in their lives, they were over-estimating), so when I said this, they incredibly decided to refuse such opportunity.

                          Explaining that we just needed another server for the continuous build, was not enough.

                          This despite the Chromium license.

                          1. 2

                            It sucks that you lost a customer and I don’t want to get into the details of your build setup, but maybe the long build times are just inherent to a large C++ application? I understand your argument that a company with deep pockets can afford to work on more complex software faster, but was compiling Chromium that much slower than a comparable non-profit project like Firefox?

                            1. 1

                              Also, I was implicitly (sorry) replying to your comparison with Gentoo.

                              While maybe the Gentoo team have a continuous build setup comparable to that of Google, few people need to fork Gentoo because they have been locked in.
                              And even those who do, would not build it frequently as a whole.

                              Forking a single complex application is a completely different matter.

                              1. 0

                                It sucks that you lost a customer

                                Well… it’s still one of our best customers!
                                But we lost a pretty interesting work (both economically and technically).

                                I don’t want to get into the details of your build setup

                                Frankly I do not remember much. It was the first and last time I had to build Google Chrome Frame.
                                But I remember it was not an easy task: I remember an unusual number of WTF (why the hell they did it so?)

                                I understand your argument that a company with deep pockets can afford to work on more complex software faster, but was compiling Chromium that much slower than a comparable non-profit project like Firefox?

                                Honestly, I didn’t try.
                                But as far as I can read, there is still a huge factor, between Firefox and Chrome.

                                The point however is that people should realize that Open Source from big companies is just marketing.

                                At best, they do not really care about external developers (as opposite to Free Software).

                                Sometimes they just look for minions that work for free for them.

                                At worst, they are fooling developers to give up their freedom (and power).
                                And they are pretty good at this: I’ve talked with many smart developers that were not aware of how much they were working against their own long term interests.

                                Note that the problem is not the license and while I value collaboration over competition, alternatives are always a good thing. The problem is who controls the projects for real.

                                1. 2

                                  I am familiar with the high level of WTF for building Chromium (and AOSP too, right?).

                                  Do you think it has anything to do with this? https://lobste.rs/s/mbufwv/some_software_cannot_be_used_at_google

                                  make is GPL. So is autoconf. Etc?

                                  1. 1

                                    Maybe. Frankly I cannot say.

                                    I build my OS with a few disposable Go scripts. I will replace Go with a simpler general purpose language asap, but I will not use GNU Make or Autoconf (nor cmake or worse shits) because I want to see how far you can follow a minimalist approach.

                                    However building Jeanne, from source to the first drawterm connection, requires just a handful of commands documented in the README.

                                    And Jehanne is pure research.

                                    But I think that if I were going to write a Free Software browser, I would use the most battle tested and well known tools, exactly to minimize WTFs.

                                    In practice, it depends on what you want to do.

                                    If your goal is to create a distributed system that replace current computing techniques from the ground up, you probably do not care much with compatibility: your gift to the world is the brave innovation that breaks every conventions.

                                    On the other hand, if you want to create a Free Software for the current world you should focus on that and maximize for developer’s friendliness.

                                    But what if you want to spread a new browser to break a monopoly while keeping the full control of that software?

                                    Open source to the rescue!

                    2. 8

                      I think, like many of Google’s other “extra” projects, it’s mainly a hedge. It makes sure they can’t be boxed in in the future if something unfavorable happens with Linux, just like Android was created mainly to ensure they wouldn’t ever be at the mercy of other mobile OS makers choosing to switch away from the Google ecosystem. Like Android, if it turns out to be a pretty good OS that becomes massively popular, that’s a bonus for them. If it turns out to be a disaster, they can abandon it, it’s pocket change for them.

                      1. 4

                        My guess is that Google found that both ChromeOS and Android aren’t enough for business users, and are going all in on developing an alternative to Windows and macOS. Instead of .NET/C#, or Cocoa/Obj-C, you have Flutter/dart.

                        I’d expect a series of notebooks, eventually, that are similar, hardware wise to Chromebook Pixel, running Fuschia, that can be members of the “Google Apps domain controller” but have a traditional set of applications that don’t just run in a browser.

                        1. 4

                          If you look on YouTube, you’ll see people actually running the graphical/desktop Fuchsia, either in VMs or on Google hardware. A lot of stuff is broken, but it gives you an idea of what the graphical environment will eventually look like.

                          1. 1

                            The plan to strip away all the legacy from unix was apparently numbered nine, which fell off with its parent company.

                            It’s good that google is carrying it over with a bucket of bright paint. Namespace is great. FIDL is really just two letter more than fd. I really hope google will carry it through. No one want a plan b.

                            Once Fuchsia achieves acme, I will be happy to run it in qemu.

                          1. 22

                            Comments really aren’t a “code smell.”

                            1. 16

                              Nothing stinks quite like uncommented complicated code.

                              1. 7

                                Exactly! Margaret Hamilton’s code itself, whom the author cites, is full of comments. Possibly more comments than source code. Which, if you’re sending a ship with the processing power of a toothbrush to the Moon, is a great idea.

                                1. 10

                                  This code is not readable on it’s own, if it was possible to use variable and function names most of those comments could be removed. It’s also quite likely that every detail of the program was decided before writing the code. In a modern codebase things are always evolving and comments can get left behind.

                                  1. 5

                                    This is my fear with comments. I code in a team of 2, so we don’t really comment stuff. I know it’s bad, but I’m a team of two, we kind of know the whole code anyway.

                                    We also don’t write tests. We’re bad people.

                                    1. 4

                                      Oh man, save yourself some pain and write unit tests. You don’t need 100% test coverage, even non-zero coverage of basic functionality will save you so much time. If you don’t know how to use test frameworks then you don’t have to bother, just write one big main file with a function per test you want to do, and call them all in main. That’s basically what test frameworks are, so if you need a low barrier to entry then don’t bother learning one yet, just do something. If you program in a language with a REPL you can literally just save the stuff you use to manually test into a file so you don’t have to type it more than once.

                                      I personally couldn’t develop without unit tests. You can test the application and do something that hits the code path you just changed, which is time consuming and tedious, especially to do repeatedly, or you can write a little bit of code that calls the code and run it with zero effort every time all the time for the rest of forever. Even a small sanity test of the happy path is better than nothing, you can at least check your code doesn’t blatantly fuck up with normal input and save yourself the round trip through the application.

                                      If I had to code without unit tests I’d quit. And I have worked on teams that didn’t want to unit test, so I had out-of-tree tests I wrote for myself. The amount of bugs I fixed a couple hours after someone else committed was mind boggling.

                                      1. 4

                                        How do you even develop without unit tests?

                                        I’d avoid this kind of shaming, especially since the commenter has already noted (in a self-deprecating manner) that they’re aware of the stigma associated with not using tests.

                                        If the intent is to encourage the use of tests, I would put your last paragraph first and focus on how it would help GP.

                                        1. 3

                                          Revised, thank you for the feedback. 😊

                                        2. 2

                                          Depends on the language and coding style though. I wrote a 25000 line game in C++ without a single test, and I never had a regression. I obviously had occasional bugs in new code, but they’re unavoidable either way. Now my preferred language is Haskell, and I feel the need for tests even less. I generally prefer correct-by-construction to correct-by-our-tests-pass. My purpose isn’t to discredit tests though, just that not every codebase has as much need for them.

                                          1. 2

                                            I’m just self taught and kind of out of my depth on it. I had a dev friend who did integration tests, and they were really brittle and slowed us down a lot. Are unit tests not as bad at slowing down a small team of two devs who are both self taught? We’re good / mediocre / we build good stuff (I consider ourselves hackers) but we don’t have a ton of time.

                                            1. 1

                                              Unit tests don’t have to slow things down like integration tests. In your situation, I’d wait until the next bug comes up, then instead of fixing the bug immediately, I’d write a test that reproduces the bug. Usually doing that helps narrow down where the bug is, and after fixing it, the test passes and (here’s the cool part) you will never see that bug again

                                              1. 1

                                                That’s what i was told about integration tests, but I had to set up all these extra dependencies so that the integration tests continued to work every time we added an external service… we’d have to mock it or shit would break.

                                                I’m assuming since Unit tests don’t run like that, they don’t have external dependencies like that? You’d mock on a component by component basis, and wouldn’t have to mock unrelated shit just to keep them running… hmm… maybe i will.

                                                Any unit testing video series I could watch as a noob to get started you’d recommend? Or anything like that?

                                            2. 1

                                              I second saving yourself pain with writing tests! I’ve avoided lots of rakes with a handful of tests

                                          2. 2

                                            What makes everybody think that the programmers who change code so that it no longer matches the comments they just used to understand it will somehow write code so clear you don’t need comments to understand it?

                                            1. 1

                                              Often people write code like total = price * 1.10 #This is tax which can be rewritten as total = price * TAX A lot of comments like that can be removed by just putting them in the actual code.

                                              1. 2

                                                I’m not suggesting it can’t be done I’m suggesting it won’t be done

                                          3. 4

                                            I’ll also correct the article to say a team did the code and review per the reports I read. She describes it here in “Apollo Beginnings” as a team with a lot of freedom and management backing with unusual requirement to get software right the first time. Unfortunately, a rare environment to work in.

                                          4. 5

                                            You can’t write test coverage for a comment. You can’t have your compiler warn you that a comment is inaccurate.

                                            If you have no tests, and your code is full of dead paths, you can’t even percieve the risk posed by an errant, out of date, or unintentionally misleading comment.

                                            Sometimes they’re necessary. But the best default advice to a ‘mediocre’ developer is to write better code, not add more comments.

                                            1. 5

                                              You can’t write test coverage for a comment. You can’t have your compiler warn you that a comment is inaccurate.

                                              https://docs.python.org/3/library/doctest.html

                                              If you have no tests, and your code is full of dead paths, you can’t even percieve the risk posed by an errant, out of date, or unintentionally misleading comment.

                                              If you have no tests or comments you have no way of knowing whether your code is actually matching your spec, anyway.

                                              Sometimes they’re necessary. But the best default advice to a ‘mediocre’ developer is to write better code, not add more comments.

                                              That’s like saying that the best default advice to a ‘mediocre’ developer is to write less buggy code, not add unit tests.

                                              1. 2

                                                doctest is great for testing comments that include code, but nothing else… If a comment says “Framework X is expecting variable foo in JSON format inside the array bar.” I would be inclined to believe it at first and then test the hypothesis that the comment is wrong. That’s the danger of comments.

                                                1. 1

                                                  A couple of times today I caught myself committing deleted or changed lines without deleting or changing the associated comment. Luckily I could go back and fix things so that the comments weren’t complete nonsense. Sometimes though they escape detection.

                                              2. 2

                                                Once the code is cleaned as much as possible and still is hard to understand, or if something is tricky, comments help a lot!

                                                I guess the author talked about comments that could be removed by making the code cleaner.

                                                Maybe it depends on what motivates one to add comments, there might be good reasons as well.

                                                1. 2

                                                  True.

                                                  But Comments that are wrong or out of date stink like dead rats.

                                                  I view asserts as “executable comments” that are never out of date. Sometimes they are wrong… but testing will tell you that.

                                                  If a plain comment is wrong… nothing will tell you except a very long, very Bad Day at work.

                                                  1. 7

                                                    But Comments that are wrong or out of date stink like dead rats.

                                                    Valuable comments are something along the lines of “this looks weird, but I did it because of [historical reason that is likely to be forgotten] even though [other implementation] looks like the more obvious solution at first glance; it wouldn’t have worked because [rationale].”

                                                    The longer I spend working with old codebases, the more I’ve come to treasure such comments. But comments that just explain what the code is doing rather than why are suspect.

                                                  1. 5

                                                    I think I’m going to write a bunch of graphql stuff into our rails code in hopes of simplifying our react front end. We do redux and I’m just sick of all the boilerplate. Hoping graphql plus Apollo means we save a lot more frontend time.

                                                    1. 3

                                                      IIRC the proposal isn’t very popular in the EU parliament/commission at all and it only got proposed by Axel Voss after it failed in front of the german government because his own party doesn’t support it (to my knowledge).

                                                      I’m fairly certain this won’t go through…

                                                      1. 1

                                                        I hope you’re right! 🤞

                                                      1. 2

                                                        I feel like this is being blown way out of proportion. Mastodon is open source under the AGPL. Hiveway’s fork immediately changed all intellectual property (the logo, the name) because I would assume those are trademarked (see Firefox forks: Iceweasel, Waterfox, etc).

                                                        Forking an open source project to make your own is par for the course. As long as the project gets licensed under the AGPL, I see absolutely no problem with this.

                                                        1. 4

                                                          I think the bigger issue here is how far the Hiveway people have gone to ensure that all connection with the original Mastodon project, including the authorship of individual commits, was removed. Does that violate the AGPL? I have no idea, IANAL etc, though I suspect it does. But, even if it doesn’t, that is a deeply shitty thing to do.

                                                          1. 1

                                                            including the authorship of individual commits, was removed.

                                                            If that’s the case, then this is the part that should be highlighted. I, too, would question how the AGPL would affect this. IANAL either, but I think that removal of the .git directory from a fork would be an interesting topic of discussion for AGPL cohesion. Personally, I believe that since it’s part of the project and just a bunch of files, it’d be completely valid to remove it as long as you keep previous attribution to the parent project - otherwise removing any arbitrary files from the project could be a potential violation.

                                                            EDIT: of course after typing up this comment I realize that removing a LICENSE/COPYING file and all attribution of the previous license would also be a violation. Hmmmm, this is definitely not simple.

                                                          2. 3

                                                            Just because it’s technically legal doesn’t mean it’s not a shitty thing to do.

                                                            1. 2

                                                              I still don’t see how this is shitty. If you’re going to put your source code on the web with a license to copy it, then you absolutely must expect someone to take it and make it their own. I personally see them removing indication of Mastodon as a way of keeping themselves away from legal trouble involving trademarks.

                                                              1. 2

                                                                Intercal is right. It’s eye-roll inducing for sure, like of course some ico-idiot is going to make a quick buck off of mastodon, but who cares? The investors are the ones getting scammed. And they’re the ones not paying attention anyway.

                                                          1. 9

                                                            I’ve come to realize how much perspectives shift when people have kids. Finding time that is most likely to be uninterrupted outside of work is kinda limited. Also, nobody’s going to give you back your play time once the kids have grown old.

                                                            1. 4

                                                              It’s so true. I don’t code, or even play video games anymore, because I try to be a good husband and father first. I can do all that other crap later once the kids are old. 😃

                                                            1. 1

                                                              I wish i could combine these visualizations with Heap’s auto tracking.

                                                              1. 4

                                                                Hanging out in Mountain View for a few days. (maybe more depending on how things go!) Anyone want to attempt a ghetto lobsters drinkup?

                                                                1. 4

                                                                  Working on getting Vagrant up so I can teach a coding class a lot easier. Also Vidpresso, my f/t gig.

                                                                  1. 3

                                                                    How does using vagrant specifically make teaching the class easier? Or is it just sandboxing and using any virtual machine would give you the same benefits?

                                                                    Do you have a bunch of custom stuff running on your machine, which would make teaching tricky?

                                                                    1. 3

                                                                      As someone who has taught a few programming classes without Vagrant, it’s a nightmare. Many people are first time developers. They have no backups, so you don’t want to accidentally brick their computer. Using a VM allows you to configure everything ahead of time and be sure that things are going to work, regardless of the laptop your students bring in.

                                                                      1. 1

                                                                        Windows is the actual answer.

                                                                        Imagine you’ve never used computers before ever. And then you want to learn to code. And you want to learn with the newest tools. OK, get a bunch of unix knowledge before you get started!

                                                                        Yeah, Vagrant really helps since I can set it all up beforehand, vagrant up, and you’re done.

                                                                        1. 1

                                                                          Wouldn’t a full virtual machine, desktop and all, be better? It gives everyone the same desktop environment, same editors/IDEs, same everything, instead of just command line tools. It has a much higher cost in memory and processing power, but it makes everyone the same.

                                                                          1. 2

                                                                            There’s a distinct line between “hard to install” and “not my environment” that I’m trying to walk. Sublime text is cross platform, so it’s fine imo for us to start there. Vagrant will handle the server stuff, our students will develop on their own machines, etc.

                                                                            I’m not a teacher at a college, I’m just doing it at a local startup coworking space.

                                                                    1. 5

                                                                      I would recommend this as a good intro, but it crashed halfway through. Good idea, though.

                                                                      1. 1

                                                                        Do you have any follow up resources? Where is the original paper / implementation?

                                                                        1. 1
                                                                          1. 1

                                                                            When I googled, all I found was:

                                                                            https://www.dropbox.com/s/k5u21zgj7oww1eq/Screenshot%202014-01-06%2011.14.07.png

                                                                            Personalization fail? Either way, thx!

                                                                            1. 1

                                                                              You’re right. Surprisingly ungoogleable, given how popular this paper has been lately. Or maybe I’m just in a bubble. :) Posted the fan site as an article link so others will see it.

                                                                        2. 1

                                                                          It crashed on me too. I tried again and it just crashed somewhere else. :/