1. 7

    What do people use for blocking ads on Nyxt? I don’t use many plugins but ublock origin is an important one.

    1. 5

      I briefly tried out qutebrowser and luakit a while back and this was a big problem. They both had ad blockers but nothing nearly as good as ublock origin, so I’m back on Firefox.

      1. 2

        Same issue for me. blocker-mode on Nyxt is good enough for general use, but not for ad-heavy parts of the Web of Lies.The github issue on blocking talks about upcoming support for webextensions, aimed at running uBlock Origin. But I’d rather see a uBlock-compatible extension in Lisp.

      2. 3

        I use an /etc/hosts based blocklist and it suits me well. Although it’s not perfect it does the job good enough without interfering with my browser at all.

        1. 1

          If you want a more ready-to-go solution than pihole:

          I use nextdns.io as a DNS provider and enabled all the builtin blocklists. I can then selectively add some domains to the Allowlist when i see something not working correctly. Eg Google photos CDN, then i toggle it off as well after done. This works pretty well, and across all devices, browsers etc., no addon needed per browser etc just change the DNS server on each device. You can also use their app, but i prefer the manual DNS server config.

          The free plan allows upto 300K per month DNS queries i believe, and they also show you analytics. For eg. on my phone(android) roughly 53% are blocked(ads) versus only 7% on a laptop. It was pretty evident how much a spy device a phone is! So i don’t mind paying a few dollars when i exceed 300K, which doesn’t seem anytime soon.

          1. 1

            This solution isn’t too bad, but I also like ublock origin for being about to do things like remove ads from Youtube videos. I also have some custom filter lists that I need to occasionally turn off to use websites, and that really needs to be a one-click operation for me.

            Still a great idea for my phone, so I’ll give it a shot!

        1. 2

          Honest question, how much of a community is there around F#? I have trouble finding active communities or standout projects written in the language. Many of the git repos for what look like core projects only have mild activity. We can compare F# to something like Clojure or Scala but those all have thriving communities that are distinct and really help propel the language forward. Where are those communities for F#?

          1. 74

            Thanks for all the work you and many others have done over the years! This is a much better online community than many others and much of that is due to the often invisible work all y’all do!

            1. 18

              Agreed! Thank you to @pushcx! (Next to Christine I haven’t seen any new mods, yet?)

            1. 3

              This raises a lot of questions. How are they able to verify correctness with these snippets? Do people need to manually verify them? How do invalid/incorrect snippets get pruned? If a person utilizes a snippet are they more likely to create errors? (I.e., since they are using generated code they might not be familiar with the edge cases and be more likely to use it incorrectly.)

              Interesting concept nonetheless.

              1. 5

                From the faq at the bottom of the page, they make no guarantees around correctness. Like any other autocomplete you should verify the code before moving on.

                1. 1

                  They make no guarantees, but surely they aren’t just throwing stuff out into the world, right?

                2. 2

                  It’s hard to say until they talk more about it (and I’ll bet some sort of paper is forthcoming). I’ll bet they have some sort of AST parser (or perhaps they use the language runtime itself directly) offering a “syntactically valid” check, and they use that to guide training. A pure deep learning approach to enforcing a constraint like syntactic validity would be to create a Generative Adversarial Network and use an AST parser or runtime as an oracle. But there’s multiple ways to skin the cat here, so it’s hard to say without more information about the methodology.

                  1. 1

                    I want to believe they have this, but I suspect they might have something closer to a filter where some text is generated and then shrunk into a code block. I would really like to know more details about how it works.

                    1. 1

                      I would have no doubts about them using a GAN with an oracle if it was a useful way to construct a model. GitHub partnered with OpenAI, and OpenAI did make GPT-3, so I don’t see why they wouldn’t reach for something as “basic” as a GAN. I mean, you can setup a basic GAN in almost all of the common tensor libraries in Python or ML libraries in Julia pretty simply.

                1. 14

                  Some of these aren’t weird. Like some are literally what IEEE 754 spec says to do with floating point numbers. One thing that’s only obvious in retrospect is that programming languages are also pieces of software with their own engineering trade-offs. When you decide what “+” means you really have to decide that for all the possible ways it can be used in the language. Javascript decided “+” is well-defined for strings and numbers along with everything that can be coerced into a string or number. The rest is a consequence of that decision.

                  1. 47

                    Matthias Felleisen is in many ways a missing stair of the Racket community. I have memories of giving a seminar talk in my department when he was visiting and he grilled me fairly harshly. It was decidedly weird since most of his questions were off-topic and some of the related work he referenced had nothing to do with the topic. Later when he was giving generic research advice I found him more pleasant. If you don’t know Matthias, he has an attitude to him very much like a stern high-school principal. Like the article says, none of this a giant secret. Students were warned about Matthias before they were suppose to meet with him. You can watch online talks by him and see for yourself.

                    Now let me get back to my Scheme workshop submission :)

                    1. 61

                      If you need to warn students about a professor’s behaviour, it sounds to me as if he isn’t fit for the job.

                      1. 9

                        I disagree. It is very easy to make the above statement. There is an impulse within all of us to put down a smart asshole.

                        Speaking as a former student of his, I have seen both sides of the man. He can be mean, surely. I would prefer if he were not, and I don’t condone the behavior. But the fact is, his temper flares.

                        His temper is a hazard I (personally) am willing to weather in exchange for learning from someone with his level of passion, dedication to teaching, dedication to research, experience both in academia and industry, breadth and depth of knowledge, first-hand history, et cetera.

                        I think a warning is in fact proper. Let the students decide for themselves on an individual basis, what they are willing to put up with in exchange for what. There must be a place in society where an abrasive yet competent personality can flourish, without causing undue harm to others.

                        1. 9

                          That’s fine right up until someone can’t avoid his class because of scheduling or degree requirements.

                      2. 1

                        You can watch online talks by him and see for yourself.

                        It’d be great to see some examples.

                        1. 1

                          I didn’t do much digging since I have no interest in hunting down some 2 minute clip of Matthias being rude to a student. But these two were the first two links for his name on YouTube and I think give a fair impression of what he can be like in person. I don’t think it’s hard to imagine this guy telling people off.

                          1. https://www.youtube.com/watch?v=XTl7Jn_kmio
                          2. https://www.youtube.com/watch?v=cq5m9Ve9ZYs
                      1. 26

                        I know Matthias F. I know Matthew B. I know RMS. And other people. I respect their accomplishments. I also know that people can be very difficult. As one friend puts it, some people have a user interface that is broken. I also know that the greater one’s distance from a person, the more likely the depiction of a person can be distorted, showing for example one dimension but not others. As with everything in society these days, I yearn for a way for people to work things out. I don’t want anyone to be ostracized. I don’t want anyone to not feel welcome. This is a very difficult problem, but we must work on it. It is good to talk about these issues, but I want the discussion to be fair. I’m all for inclusiveness, but not at the cost of exclusion.

                        1. 57

                          This is a classic response to someone calling out people that misbehave. “Bob is not that bad, once you get to know him”. But that’s beside the point!

                          If Bob is pushing other people down through his behavior, it is right to criticize his behavior, and maybe also remove responsibility from Bob, no matter how nice he “really” is.

                          1. 25

                            This is a classic response to someone calling out people that misbehave

                            Not to mention that “I’m all for inclusiveness, but not at the cost of exclusion” is an impossible situation to begin with: https://en.wikipedia.org/wiki/Paradox_of_tolerance

                            That shit just does not work, as proven time and time again. People looking the other way and making excuses for abusive behavior is how we got to this situation of people being driven out in the first place.

                            1. 8

                              1000% agreed. This is part and parcel of the technology community having gone mainstream a while ago. The fallacies we used to indulge in to excuse bad behavior are showing themselves to be more and more ugly as we bring them into the light.

                              1. 4

                                Diversity tends to shine light where it needs it the most.

                            2. 8

                              I am ranting a bit, and I hope it does not come across as directed at you. I do not mean it that way. I’m a couple of levels down in this thread and it seems like somehow we’ve gone off the rails regarding what the topic is.

                              I don’t care if Bob is a good person or not. I care if we’re all being invited to judge him publicly and decide whether he’s good or not. I don’t participate in these activities and I don’t tolerate others that do. Of course, other people are free to do whatever they’d like. My point is that the one unyielding rule I’ve found regardless of context is that productive teams cannot carry on this way with the public story-telling back-and-forth. It’s corrosive. That observation is completely orthogonal to what kinds of behavior I’d tolerate in a team, which, frankly, is nobody’s business but mine and the teams I join. (They also tend to change from situation-to-situation. People aren’t statues, and standards aren’t the Ten Commandments. Situation matters.)

                              1. 27

                                You speak as though Butterick’s comments are taking place in a vacuum, or worse, are arising unprompted. But please remember that the only reason he feels it necessary to write this piece is that his life has been disrupted, he has suffered poor behavior, and now he has had to withdraw from a community that he had dedicated significant resources to.

                                I know you haven’t raised the specter of ‘cancel culture’, but phrasing like ‘we are all being invited to judge him publicly’ speak to a similar enough view of the proceedings; and the fallacy operating with both this critique as well as larger complaints about ‘cancel culture’ is this: you and I come to this post from a null position. This is understandable; we, and the vast majority of readers, are not members of this particular community and have no experience with its members. And from our position of no experience, it seems we are being invited to judge someone we don’t know. That feels icky and unnecessary.

                                But Butterick is not asking us to judge someone. I don’t think he cares particularly that we, who have no stake in this, walk away with a solid negative judgment of the personal qualities of another person. What he cares is to provide an account of his experience, because: in light of a widespread taboo against airing dirty laundry, if you didn’t know about his experience, his conduct is confusing and probably not very flattering. Here’s someone who dedicated themselves to a language and a community: wrote code, wrote books about it. And ‘suddenly’ (to an observer), he drops off the map. This represents a loss of social capital, probably a loss of real livelihood, and raises questions about him and his fitness to this kind of work.

                                In light of that experience (again, one that is centered around Matthew Butterick and his desire to manage his own reputation and professional prospects, as opposed to a desire to manage your view of a third party), you can hopefully understand why he feels the need to give an account of what he has actually been experiencing, even though that includes the unpleasant work of publicizing the shittiness of another person.

                                I will wager with you that, oh, 95 out of 100 of those folks who have publicized the toxicity of leaders, bosses and executives over the last little while have been motivated similarly. In other words, I wager that they too definitely would have preferred to conduct themselves exactly as you prefer: to keep their personal experience private, to settle things through private channels, and to negotiate via their existing personal relationships. Unfortunately, toxic people (abusers, whatever you want to call them) are usually toxic because they have a position, personality, and skill set that neutralizes exactly that approach.

                                In conclusion: I invite you to reread that article from the perspective of its author. From the perspective of the uninitiated reader, it would seem to be about some other figure who we don’t know from Adam. But I don’t think it is.

                                1. 18

                                  I don’t care if Bob is a good person or not.

                                  If he’s in your team, you should. The whole problem here exists because people are going out of their way to ‘not participate’ in judging a bad person as bad. If you don’t root out assholes, you’re complicit to their behaviour.

                                  Come on, there’s a few witness statements in this thread, in this small corner of the internet, that corroborate the story. People are being warned against his antics. No one that goes “I’m surprised and have only had positive experiences with him”. Even the positive ones are hedging. That’s damning evidence.

                                  1. 3

                                    I want to add here that we’re talking about good/bad along some specific axis. People have many traits and can be good in many ways, while bad in others. The context here is that someone is e.g. bad for the community.

                                  2. 7

                                    If this had been a team in an organization or business, I would agree with you. Airing private laundry publicly is not constructive.

                                    But this is an open source project, where transparency and being public are important factors.

                                    If someone is pushing other people down through their behavior, repeatedly, it’s balanced that they also receive criticism and possibly removal of responsibility, publicly, IMO.

                                    1. 5

                                      Perhaps I’m wrong when it comes to FOSS. I don’t know. I’ve been wrong many times before :)

                                      I know that open source is much more like running a charity or a minimum-wage restaurant: each person’s spirit and morale have to be very high for them to stay dedicated over any length of time.

                                      I’m happy to see various open source teams publicly announce their team norms. Folks can then either select in or out depending on how those standards make them feel.

                                      But trying to take interpersonal human communication, an emergent behavior involving perhaps millions of years of evolution, and digitizing it? That doesn’t sound workable to me.

                                      As a personal example, I’ve been online since the net came up. I try as hard as I can to be a nice person online and understand other people’s viewpoints. But I don’t doubt for a moment that either through chance encounters or cherry-picking I could be made out to be a horrible monster. People change, and little slices here and there of printed text can tell us but very little.

                                      This doesn’t work for me, even in an open source environment. Even with clear and written boundaries, too much here is random, subjective, and prone to personality conflicts. For some people, their personalities just don’t mesh with one another. I’m trying, but I just can’t see this as a useful thing for people who actually care about writing good code that helps others. I’m trying, and I’m open to being wrong, but so far I’m not getting anywhere near changing my mind on this. Apologies.

                                      1. 14

                                        But I don’t doubt for a moment that either through chance encounters or cherry-picking I could be made out to be a horrible monster.

                                        Read thru this whole thread. Of the five people (so far) recounting first-hand experience with this person, 100% of them say that their experience is consistent with the story in the post. I have a hard time to believe that’s due to cherry-picking.

                                        1. 3

                                          Read thru this whole thread. Of the five people (so far) recounting first-hand experience with this person, 100% of them say that their experience is consistent with the story in the post.

                                          Also read through the HN thread which contains first-hand reports (neilv, rebelshrug, …) saying otherwise.

                                          1. 19

                                            Toxic people aren’t toxic to everybody all the time.

                                            1. 16

                                              My childhood bully wasn’t a bully to everyone, either. He had great friends who supported him, and his behavior. There is literally an example of this, right now, in US Politics; but the example is as old as humanity.

                                              This doesn’t make the bullying behavior right, and it doesn’t make the person speaking up about the bullying wrong. The bully, however, is almost always in the wrong.

                                              1. 1

                                                With childhood bullies (which by the way no one in education cares to fully address), there is generally no ambiguity as to the harmfulness of the aggressor’s intent. Thus, that analogy breaks down here, where it is not clear as to where exactly lies this anecdotal accusation in the spectrum from it being a subjective taking-offense to being an intended harm (giving-offense). Some people, for instance, would interpret the below stern behavior (and it is possible to be stern without being offensive), as reviewed by someone from ratemyprofessors.com, to be “bullying”,

                                                I hated [Matthias’s] guts while in his class, but in retrospect he’s almost certainly the best teacher I’ve ever had. As somebody said above, this guy is absolutely brilliant. He will kick your butt, but it’s all for your own good in the end. He seems to really care about teaching, and it shows.

                                                (Have you ever seen a victim describe their childhood bully this way?)

                                                Besides, bullying behaviour is not uncommon among people who are not normally characterized as ‘bullies’ - inasmuch as they are covert. Example here. I used to work for a company (based on San Francisco, incidentally) where this sort of behaviour was not uncommon.

                                                The Racket core team, and people who closely work with Matthias, would be in a better position than us passerby’s (who know nothing but a few anecdotes) to fairly assess the facts of the matter.

                                                1. 8

                                                  The Racket core team, and people who closely work with Matthias, would be in a better position than us passerby’s (who know nothing but a few anecdotes) to fairly assess the facts of the matter.

                                                  What facts are you disputing, exactly? In nearly every case of human-to-human problem it boils down to a proverbial “he-said, she-said” type argument. The “facts” here are, for sure, a one sided account of how Matthias’ actions made people feel. I’m certainly not in a position to assess this. But, I can acknowledge that there are many people who feel this way after interactions with Matthias and decide for myself whether or not I want to risk seeing this behavior first hand, or avoid it. (FWIW, I stopped contributing to Racket. Not because of Matthias directly, but there is definitely something in the air in that community, that I’ve never been able to articulate)

                                                  Butterick did not write a hit piece. People are, and will interpret it as that. His piece answered the question “Why did I leave the Racket Community?” and I think he fairly presented his side of things. I also trust him based on previous knowledge of him from years past. Matthias, if he feels so inclined, or other members of the Racket community should certainly present their side of the “argument” here, but that should never discount Butterick’s feelings, or reasoning for this. Butterick feels he was wronged, presented reasons for why he feels that way, and took actions he deemed necessary, resulting in him no longer contributing to the community (a great loss, honestly). Any interpretation beyond that, or other anecdotes are your responsibility to consider if you feel like it, or ignore if you don’t.

                                                  As a community, I hope that the discussion being had here is a wake up call. People are actively being discouraged from collaborating on the Racket project as a result of behavior stemming from it (I don’t think it’s only Matthias’ fault, fwiw). My guess is that nothing will change, and Racket will never ever meet its full potential outside of academia. This has never seemed to be a goal anyway, though, there has been mention of it, and it is certainly the case that members of the community would like this to change.

                                                  1. 0

                                                    Matthias, if he feels so inclined, or other members of the Racket community should certainly present their side of the “argument” here, but that should never discount Butterick’s feelings, or reasoning for this. Butterick feels he was wronged, presented reasons for why he feels that way, and took actions he deemed necessary, resulting in him no longer contributing to the community (a great loss, honestly). Any interpretation beyond that, or other anecdotes are your responsibility to consider if you feel like it, or ignore if you don’t.

                                                    Exactly my point. Butterick feels he was wronged; this much we know as facts of the matter (and there is no need to put the word in scare-quotes; I’m using it in its dictionary definition sense). What we don’t know, as facts, is whether Matthias is a ‘bully’ (your word) or, whether how Butterick feels is a result of “Matthias’ fault” (also, your words). The feelings of Butterick, you or me alone do not automatically establish Matthias to be ‘bully’ (as opposed to merely being stern, for instance). You are entitled to your opinion, of course … but whether that is in line with the facts of the matter or not (so as to use as a basis to make any genuinely positive changes in the Racket community) is a different thing entirely.

                                                    1. 7

                                                      Matthias is a ‘bully’ (your word) or, whether how Butterick feels is a result of “Matthias’ fault” (also, your words).

                                                      The actions of Matthias, and the inactions of the Racket Core Team (“Everyone just shrugged and moved on. I was encour­aged to do the same.”) are literally the reasons cited for Butterick’s moving on.

                                                      The feelings of Butterick, you or me alone do not automatically establish Matthias to be ‘bully’ (as opposed to merely being stern, for instance).

                                                      Right. But, the collective feelings of others, can certainly establish a pattern that we can look at. An Elementary school administrator might look past one isolated incident, of kid A pushing around kid B as almost hearsay. But, if kid B, kid C, kid D, kid E, kid F, and then a number of anonymous comment cards talk about being pushed around by kid A, it’s a bit harder to ignore, don’t you think? Even if that kid is top in his class, and in retrospect, “great at helping their fellow students succeed” – is the behavior somehow more excusable?

                                                      Anyway, as kid Z in this fictional Elementary school, if I hear of all of these accounts, I’m going to be cautious about interacting with kid A.

                                                      Incidentally, this is why a prosecution in a court system attempts to establish “patterns” of abuse in crimes against other humans. It’s a lot easier for a jury to believe an accuser’s side of the events when there’s a pattern of the same / similar behavior.

                                                      1. 6

                                                        The feelings of Butterick, you or me alone do not automatically establish Matthias to be ‘bully’ (as opposed to merely being stern, for instance). You are entitled to your opinion, of course … but whether that is in line with the facts of the matter or not

                                                        Felleisen has published an apology where he basically admitted to the bullying (as much as bullies ever do, anyway), so the facts aren’t in dispute.

                                                    2. 2

                                                      (Have you ever seen a victim describe their childhood bully this way?)

                                                      I didn’t address this before, but have you heard of Stockholm Syndrome?

                                                      1. 2

                                                        I didn’t address this before, but have you heard of Stockholm Syndrome?

                                                        At that link

                                                        1. 2

                                                          There’s no consensus on what “Stockholm Syndrome” is, but I bet you knew exactly what I was referring to when I wrote it…

                                                        2. 2

                                                          Your own link immediately notes that the research on Stockholm syndrome existing is severely lacking— and that the situation for which it is named does not match up with the purported effects.

                                                          I know of several educators that made me react similarly to the reviewer: I honestly believe compassion is a better way to teach 100% of the time, but the ‘tough on students’ facade is effective for them too, so what do I know.

                                                          1. 3

                                                            No. Stockholm Syndrome does not directly apply to the situation, in so much as students are not being held captive by their teachers (under most circumstances!). The reason for bringing this up is that it is a related phenomenon (victim is apologetic / empathetic after trauma), however dubious it actually is.

                                                            Relatedly: do you dismiss the cycle of domestic abuse, too?

                                                            1. 3

                                                              I don’t think it’s even a related phenomenon. I think the simplest solution is most likely. The student didn’t like his teaching style at the time, but when he looked back he saw that it was effective for him. There’s no trauma or brainwashing involved. This has happened to me many times before in many different contexts, some interpersonal, some personal.

                                                              I’m not dismissing the existence of trauma bonding and PTSD, which I think is what you might have meant by Stockholm Syndrome. These are both serious, real things. I just thought that Stockholm Syndrome was a poor choice of armchair diagnosis, considering its dubious origins.

                                                              1. 3

                                                                Keep in mind that the original discussion was about bullying, and that the answer to @srid’s direct question of “have you seen a victim describe their childhood bully this way?” Is what I was replying to, directly.

                                                                The answer, is yes. Yes I have. Childhood bullies are great examples of situations in which there is often an eventual “the bully toughened me up,” in retrospect, and “I respect them, have empathy, etc, etc, etc.”

                                                                This entire pattern of having empathy for abusers, and reminded me of “Stockholm Syndrome,” in which a similar pattern is purported.

                                                                1. 1

                                                                  Oh I see, sorry. I thought you were saying the student was displaying signs of Stockholm syndrome. I haven’t really heard that line about bullies in real life ever, although I have seen it a lot in media (there was a whole anti-bullying craze, which might be where some of the ‘have empathy for bullies!’ rhetoric comes from). It’s a hazy line between ‘tough but wants the best out of you’ and ‘just an inconsiderate asshole’ that I think a lot of people cross without knowing. It’s probably better to not do the whole ‘tough but fair’ thing in the first place.

                                                          2. 1

                                                            This was exactly what leapt into my head when I read that paragraph.

                                              2. 7

                                                This is a very prominent figure in a public community. I just don’t want when people meet one of the authors of the Little Schemer to find a gigantic asshole. It makes the community look bad, and Matthias is more than capable of acting better. The other author, Dan Friedman, I should stress is one of the kindest, sweetest, thoughtful researchers I have ever met.

                                                1. 7

                                                  This is a very prominent figure in a public community. I just don’t want when people meet one of the authors of the Little Schemer to find a gigantic asshole.

                                                  I’m not really a Scheme person; I played around with it for a bit several years ago and found it fun in insightful, but ultimate also found it hard to build actual actual programs in, so not really practical for me.

                                                  The Little Schemer, however, is easily my favourite programming book. It’s just fun, almost cheerful, and also quite good at actually teaching Scheme. A lot of books that try to be “fun” usually aren’t very good at actually teaching stuff, and books that are good at teaching stuff are usually a bit of a dry affair. Combing both effectively (and in such an unique way) is rare.

                                                  Programming books are not the best way to gauge the author’s personality, but it’s just so contrary to the impression I got from the book that I had to triple-check that this was really the same Matthias Felleisen and wasn’t somehow a confusing two people with similar names.

                                                  People are complex I guess 🤷

                                                  1. 5

                                                    I think the style of presentation of the Little books is Friedman’s, as he’s written several other books in the series with other people like The Little Prover, The Reasoned Schemer and The Little Typer.

                                                  2. 4

                                                    The other author, Dan Friedman, I should stress is one of the kindest, sweetest, thoughtful researchers I have ever met.

                                                    I never met him personally, but he must be quite the guy. They held a conference in honor of him on his sixtieth birthday. Fun fact: the conference was colloquially known as DanFest.

                                            1. 8

                                              I kind of want a new tag for urbit just so I don’t need to see the political fight every single time it comes up.

                                              1. 15

                                                It’d be cool if we had a community notm to avoid politics when discussing tech, but there is a sizable contingent of Lobsters here who cannot function that way and prioritize their desire to talk about politics over talking about the tech.

                                                1. 12

                                                  Lots of projects have creators with shitty opinions, but few of those projects represent and implement those opinions. Urbit is tech that implements a political view, and to consider the tech separately from the politics is as inane as considering the politics separately from the tech.

                                                  1. 12

                                                    The politics of Urbit have been discussed many times over. There’s literally nothing new to talk about there. The tech, however, is ever evolving. Why not talk about that instead? Surely technical perspectives should be prioritized, at least here on Lobsters.

                                                    1. 12

                                                      The tech is “ever-evolving” I guess, but this article is a survey of the Urbit landscape, not a changelog.

                                                      Anyway: go ahead, talk about the tech. But in this project’s case, the tech and the politics are deliberately tangled, so don’t be surprised or disappointed when the politics of the project come up for discussion too.

                                                    2. 11

                                                      An interesting and enlightening discussion around Urbit’s politics would talk about what those politics are, how they have influenced the tech behind Urbit, and finally to what degree Urbit represents a successful realization of those politics. This is similar to how we evaluate deeply political technology projects like Project Cybersyn.

                                                      This is emphatically not the style of discussion we get here. Instead, people do the shallow (and perhaps even lazy) thing and make uninteresting (and often unsubstantiated and incoherent) moral claims, and then you just get a bunch of Lobsters clacking angrily at each other while high on self-righteousness. It’s all so tiresome.

                                                      1. 5

                                                        Such a discussion would be granting the project a legitimacy that it hasn’t earned and doesn’t deserve.

                                                        1. 3

                                                          When was the last time Lobsters talked about Cybersyn? When I searched I see a handful of posts with a handful of comments. That’s not really a discussion. So I don’t know where this deep evaluation is happening.

                                                          1. 5

                                                            I found this in my DB of all submissions to lobste.rs, it got 6 upvotes and 1 comment:

                                                            https://www.jacobinmag.com/2015/04/allende-chile-beer-medina-cybersyn/

                                                            Interestingly it’s one of six submissions from Jacobin, the last one was in Nov 2018.

                                                            Including this one, 23 submissions have “urbit” in their title.

                                                            1. 3

                                                              So I don’t know where this deep evaluation is happening.

                                                              That would be my point–it ain’t happening here, because in the vast majority of lobsters (quite probably myself included) are incapable of objective, dispassionate policy discussion.

                                                              1. 9

                                                                because in the vast majority of lobsters (quite probably myself included) are incapable of objective, dispassionate policy discussion.

                                                                “Objective, dispassionate policy discussion” isn’t some Platonic ideal that’s fit for all subject matter. When the topic is an elaborate prank schemed up by some Neoreactionary narcissist, the appropriate response is manifestly not a contemplative survey of its politics or positions.

                                                                1. 5

                                                                  I’m also reasonably sure political discussion is somewhat off-topic here. Further, if a technical topic is sufficiently politicised I think the technical discussion itself becomes off-topic since no one can reliably talk about it in a neutral way that doesn’t in some ways refer back to the political context of the work.

                                                              2. 2

                                                                I don’t disagree that some (lots) of the political disussion that ensues after an Urbit posting is shallow, lazy, tiresome, content-free drivel. But the reason it doesn’t belong here isn’t because politics don’t belong in Lobste.rs discussions.

                                                                1. 3

                                                                  The politics of urbit itself match your descriptors. Pointing that out as an FYI may be a simple observation, but that doesn’t make it unimportant.

                                                                  People can still ignore those threads and discuss urbits’s whacky-ass tech as is currently the top post. Nobody is preventing that discussion from occurring.

                                                              3. 3

                                                                I never understood the “He’s right wing so these are the choices he made” argument. (oversimplified? Yes. But I’m OK with that.) The first time I read it, sure, interesting, engaging. The second time, I tried again, and again it seemed there was a massive cultural gap between what people thought and what I could understand. Third time, similar… and then I stopped caring. Urbit seemed to not be going anywhere, and caring about a random person’s political opinions because he happened to be a tech author seemed like a waste of time.

                                                                An 18 second sketch that illustrates what this all seems like to me: https://www.youtube.com/watch?v=79GNnfDrgWM

                                                              4. 5

                                                                You’re active on all political discussion I’ve seen here in recent memory, including sharing your own politics opinions. I chime in on this stuff too because it interests me. Why pretend to be above it? Clearly people want to discuss the tech implications of politically-adjacent stuff like this. It’s not virtuous to remove extra-technical context from the forum, it just makes the discussion less informed.

                                                                1. 1

                                                                  I don’t understand your point. People want to flame about politics, not talk about the tech related aspects, or I’d have fewer problems with the chatter.

                                                                  1. 3

                                                                    I’m not understanding how your pushback here relates to my point. But to respond - there’s plenty of tech discussion here by the people who want to be having it. I don’t see the political threads preventing people from engaging. The top two threads are about technical details. I don’t suppose that anyone extra would have jumped into the techy bits had nobody commented on the extra-techy bits. The site is designed to accommodate multiple threads of discussion. So the whole ‘politics distracts from the technical discussion’ is not something I’m buying in this case.

                                                            1. 7

                                                              If one thing from urbit could escape that project and be used elsewhere, I’d like it to be their monosyllabic pronunciation for ASCII symbols: https://urbit.org/docs/hoon/hoon-school/hoon-syntax/#reading-hoon-aloud

                                                              I think this would be really nice to have as a shared language with other programmers, though there are some symbols that already have short names in no need of replacement.

                                                              1. 6

                                                                I think Talon voice is a better precedent as highlighted in speaking code

                                                              1. 3

                                                                Previously on Lobsters, we explored the idea that causation and correlation are distinct. Here, the distinctness goes in the opposite direction from the typical slogan, but it’s still valid: Causation does not imply correlation!

                                                                1. 1

                                                                  Oh hey, so glad that you’ve posted this here.

                                                                  First of all, I find the point on the author writing about their own research vs other people’s research to be quite interesting.

                                                                  It sounds like you’d actually recommend the book. Unfortunately, this sentiment was buried in the post

                                                                  The simplest answer to this question is that the book really is wonderful, it just has this one little mistake. Noise is indeed an important subject, and three authors who don’t understand correlation and causation can still write an excellent book on the topic.

                                                                  So… I feel like I don’t understand what is meant by “causation”. I feel like I use it in the sense of “force causes acceleration” or “speed of light causes increase in energy to convert into mass.” Reading your post, I feel like there’s another way of looking at it.

                                                                  For example, “You can also get causation without correlation from a non-monotonic relationship.” - I would love to understand what that means.

                                                                  Thanks, again, for the post and sharing it here.

                                                                  • Cheers
                                                                  1. 1

                                                                    I’m hesitant to recommend paying for dead trees, but it doesn’t sound like a bad book to have on a shelf.

                                                                    I think of causality using physics. If we have two events X and Y, and all observers agree that X happened before Y, then X caused Y; X is one of Y’s many causes. The goal of many scientists is to look for statistical evidence which can point them towards possible causes for observed phenomena, but such statistics can only point vaguely.

                                                                    1. 1

                                                                      I like to think of causation as if you forced the causes to happen, would you still get the effects? Like we might say that a thermometer correlates with the temperature in a room, but you can intervene to make a thermometer show another temperature and it wouldn’t change the temperature of the room.

                                                                      By contrast if you intervened and made a room colder, the thermometer would change. In the sense we can say the temperature of the room causes the thermometer to change.

                                                                    1. 1

                                                                      One thing I’m curious about is what’s the standard workflow if you want to run multiple versions of a particular package? For example, if I want to test the some code safely compiles on multiple versions of the GHC compiler.

                                                                      1. 2

                                                                        I am just getting started on guix but afaict the answer to your question is going to use that packages are first class (they are just guile records you can pass around) so you can make a function that takes a GHC compiler and returns your package and then map it over the versions of GHC you want to test.

                                                                        You can then use https://www.guixwl.org/ to run the test pipeline for each package (or whatever, just thought it was cheeky to point at this).

                                                                        1. 2

                                                                          It really does still hold up.

                                                                          1. 9

                                                                            Just as a heads-up, papers we love does not love the areas of Computer Science equally. There is a lot more coverage of Programming Languages and Systems papers compared to say Machine Learning and Theory.

                                                                            1. 7

                                                                              Very true, the SF chapter was kind of notorious for having a lot of FAANG folks involved and the papers tended to skew heavily towards distributed systems. I can’t say I really have an issue with that, seeing as that’s what people wanted to read, but PWL does definitely have a bit of a bias.

                                                                              1. 7

                                                                                PWL organizer here. Every chapter is left to its own devices to run itself, so yeah, the local organizers have a lot of sway in picking speakers. If you dig through the repository you can find a lot of interesting papers spanning many topics.

                                                                                @zxtx - PRs welcome for more Machine Learning and Theory papers.

                                                                          1. 6

                                                                            As a reminder, freedom from competition is not one of the core freedoms of any FSF/GNU manifesto. Nor is suppression of competition a pragmatic goal of the Open Source movement.

                                                                            Yet all of these re-licensings have in common that their main and obvious goal – more or less openly admitted in this post – is to ensure that a core person or team get to have freedom from competition, by imposing burdens on potential competitors that put them at too much of an effective disadvantage.

                                                                            No amount of talking about “freedoms for our community” or “open source will always be at the core of who we are” can get around this. Nor can it change the fact that when these relicensings happen, people who previously were participants in an open project effectively become unpaid interns working on improving the “open source” company’s product.

                                                                            1. 24

                                                                              A reminder that GNU is not open source but free software, that open source was a word used commonly at the time and redefined to mean something new and that the point of the GNU license has been and always will be freedom of the end user, not the person who owns the machine or source code.

                                                                              The amount of revisionism from people who want to make money off the backs of software others made would be disappointing if not completely expected. In todays world the AGPL is the minimal license that any software which pretends to care about users freedom should be.

                                                                              1. 4

                                                                                … [and] that the point of the GNU license has been and always will be freedom of the end user

                                                                                … where “end user” is narrowly defined. I’m not opposed to the FSF’s project, but it is very rooted in a specific context.

                                                                                1. 2

                                                                                  In todays world the AGPL is the minimal license that any software which pretends to care about users freedom should be.

                                                                                  Maybe the issue is that none of the participants really care about the end user. To me it sounds more like tool vendors who want to make money off selling support for software tooling to companies. Nothing wrong with that, but the incentives are slightly different.

                                                                                  One (unintended?) consequence of removing monetary considerations from FLOSS software is that a signal path is removed. If you make software for pay, and you’re losing money, you can check what your paying customers are unhappy about and adjust from that.

                                                                                  A user’s preference for Free Software as opposed to Open Source software is much less pronounced. In fact, I’d argue that the vast majority of users don’t even know the difference (as evinced by the comment I’m replying to). This leaves the next level - producing FLOSS software but charging for consulting and support (as suggested by the FSF). And then the signal is there - companies using FLOSS software and who might be prepared to pay for these services avoid GPL licenses and prefer permissive ones.

                                                                                  1. 2

                                                                                    A reminder that GNU is not open source but free software

                                                                                    A reminder that the very first sentence of my comment began by pointing out:

                                                                                    freedom from competition is not one of the core freedoms of any FSF/GNU manifesto.

                                                                                    Meanwhile:

                                                                                    The amount of revisionism from people who want to make money off the backs of software others made would be disappointing if not completely expected.

                                                                                    A reminder that the essentially ideal software business, as advocated by the Free Software Foundation, Richard Stallman, and the Free Software movement, consists of selling the effort of software, which includes not just new greenfield development projects, but also maintenance and improvement of existing software which, yes, often will have been written by others (since in the ideal Free Software world, a recipient of software always has the freedom to perform or contract out such maintenance and improvement).

                                                                                    And a reminder that this wave of recent relicensings is entirely about ensuring that the VC-backed SaaS startup of the original authors of (insert project name) get to monetize the work of everyone who contributed under the prior more-Free license, while nobody else does.

                                                                                    In todays world the AGPL is the minimal license that any software which pretends to care about users freedom should be.

                                                                                    A further reminder that if you check my history, I do not personally consider the AGPL to be a Free Software license, and point out at every opportunity that it only is considered one by the FSF due to a combination of fiat (rather than adherence to principle) and an explicit AGPL-specific exception clause added to the GPLv3. The plain GPL does not allow passing on less freedom to downstream recipients than you yourself received from upstream. The AGPL requires that you pass on less freedom in certain circumstances. The moment that principle of conservation of freedom is compromised, the entirety of the Free Software moral position is not merely compromised, but utterly collapses beyond repair.

                                                                                    1. 16

                                                                                      I do not personally consider the AGPL to be a Free Software license

                                                                                      Any further discussion is moot, and anything you’ve said has been pedantry at best and pointless at worst.

                                                                                      I am reminded of the discussions in the 90s as to why the GPLv2 was not free software and why the only real free software license was the MIT license for exactly the same reasons you state here.

                                                                                      Those discussions were pointless then, and this is pointless now.

                                                                                      1. 1

                                                                                        Free Software does not mean “Free as in freedom from competition”. This relicensing is clearly being done, like all the others in this recent wave of relicensings, to make it more difficult for others to compete with a specific SaaS business. The tool used to accomplish it in this case is AGPL + a CLA, which ensures that the original SaaS business can continue to monetize the work of those who contributed back, but nobody else can.

                                                                                        You at first seemed to think that that last bit was a bad thing. Have you changed your mind in the past few hours? Does it change your mind now if you remember that Grafana itself started out as a fork of another project?

                                                                                        There is no high and lofty principle of freedom being fought for here. It’s about using copyright to squash the ability of others to compete, which is the antithesis of Free Software. And it’s using the AGPL to do this, not as some abstract hypothetical FUD you can reflexively dismiss, but as the actual thing that’s actually happening in the actual case at hand. This is why people have concerns about the AGPL, because of how often in the real world we really see it really being used for the real purpose of protecting a business’ monopoly over a software project.

                                                                                  2. 7

                                                                                    This seems to help me, as a user, get contributions from other users upstream.

                                                                                    If I use grafana on Amazon’s hosted product, I’m paying them to change or improve it, but then lose those changes to Amazon. I would like to pay for a product, like grafana, but not lose improvements. This seems like it fixes that situation while still allowing me to choose my preferred grafana vendor.

                                                                                    1. 3

                                                                                      The AGPL does not protect you against the original author, or against the original author prioritizing their business model over your needs.

                                                                                      All of these recent relicensings have in common that the original author(s) (really, their VC backers) are prioritizing their business model over your needs.

                                                                                      1. 4

                                                                                        This criticism doesn’t make sense since nothing stops the authors from changing the license at any point as is. The GPL and the AGPL were always about dealing with the free-rider problem where people want to extend off existing software but not contribute the changes back. It that breaks your business model, too bad, you aren’t entitled to the work of the authors.

                                                                                        It sucks if you were a contributor and you expected the software to stay on the Apache license. If you were in that boat, I’d hope you could comply with the new license without too much trouble.

                                                                                        1. 1

                                                                                          Could you please state were in the GPL it states you have to contribute changes back? I don’t think that’s actually in the license.

                                                                                          1. 1

                                                                                            You don’t have to contribute the changes back, you have to make the source code of the software available if you distribute it later. I was more stating motivation than a license clause.

                                                                                          2. 1

                                                                                            It that breaks your business model, too bad, you aren’t entitled to the work of the authors.

                                                                                            But the authors are claiming to be entitled to the work of others. People who are genuinely concerned about a free-rider problem don’t talk about the need to protect their business and go to anticompetitive licensing with CLA for “participants” in the project.

                                                                                            1. 1

                                                                                              They are not entitled. Those people freely contributed it. And if they did so under an expectation that the more permissive license would stay, the option always exists to fork at the commit before the license changes over.

                                                                                      2. 5

                                                                                        As a reminder, freedom from competition is not one of the core freedoms of any FSF/GNU manifesto. Nor is suppression of competition a pragmatic goal of the Open Source movement.

                                                                                        So what?

                                                                                        “Open source” and “free” are neither precisely defined nor inherently good. Their value isn’t self evident, it’s a function of the positive effects they have on real human beings. And not abstract or theoretical effect in some model of reality, but real and observable effect in reality as it exists. Does freedom from competition in this specific circumstance have a net positive effect for human beings? I think you can at least argue that the answer is yes. If you don’t agree, let’s have that debate, but let’s have it on the merits, the FSF/GNU definitional stuff is just semantic noise.

                                                                                        1. 2

                                                                                          I think “open source” and “free” are well-defined by the OSI and the FSF, respectively.

                                                                                          1. 2

                                                                                            Do you believe those definitions are what most people mean when they use the terms?

                                                                                            1. 2

                                                                                              …yes?

                                                                                              1. 1

                                                                                                I’m surprised by that. I think very few people are aware of, much less mean to convey, the specificity in the OSI’s and FSF’s definitions of “open source” and “free” when they use those terms.

                                                                                          2. 1

                                                                                            If you don’t agree, let’s have that debate, but let’s have it on the merits, the FSF/GNU definitional stuff is just semantic noise.

                                                                                            When a relicensing whose goal is to use copyright to maintain a monopoly or monopoly-like position on commercial exploitation of a piece of software wraps itself in a cloak of high idealist language about “freedom” and “openness”, arguing about the “semantic noise” of “the… definitional stuff” is a perfectly valid response.

                                                                                            1. 2

                                                                                              When a relicensing whose goal is to use copyright to maintain a monopoly or monopoly-like position on commercial exploitation of a piece of software…

                                                                                              …for which they are they principal authors and sole maintainers…

                                                                                              wraps itself in a cloak of high idealist language about “freedom” and “openness”, arguing about the “semantic noise” of “the… definitional stuff” is a perfectly valid response.

                                                                                              OK. They claim

                                                                                              AGPLv3 is an OSI-approved license that meets all criteria for Free and Open Source Software.

                                                                                              Is that not true?

                                                                                              1. 1

                                                                                                for which they are they principal authors and sole maintainers

                                                                                                Let me state the argument, as clearly as I can, in order not to get dragged off into derailments like this.

                                                                                                Yes, copyright law allows this. Yes, that is a fact.

                                                                                                However, the blog post uses the language of the Free Software and Open Source movements, which tend to look beyond the mere minimal test of “does copyright law allow this”. The Free Software movement, for example, is founded on the idea that using one’s copyright in software to control what others may do with the software, for the purpose of creating and maintaining a monopoly on commercial exploitation of the software, is morally evil. Yet that is the effect of this relicensing: attempting to create a de facto commercial monopoly over the software, by controlling what others may and may not do with the software, via copyright.

                                                                                                Yes, the AGPL is considered a Free Software license by the FSF. However, I do not see a way to reconcile the practical effects of this use of the AGPL with the ideals the FSF alleges Free Software should involve.

                                                                                                Therefore I criticize the post and the relicensing on grounds that they appropriate language and ideals to which they do not live up and which, in fact, are antithetical to at least one such set of appropriated ideals.

                                                                                                Do you have a counterargument to this criticism?

                                                                                                1. 1

                                                                                                  Do you have a counterargument to this criticism?

                                                                                                  By your own acknowledgement, they’re abiding the letter of the law, so to speak; your criticism is that they’re violating the spirit of it, by appropriating language inappropriately? I mean, I guess my counterargument would be that this is an expression of your opinion, and therefore unfalsifiable, so 🤷

                                                                                                  1. 1

                                                                                                    By your own acknowledgement, they’re abiding the letter of the law

                                                                                                    So your position is that anything which is legally permitted is morally good and should not be criticized?

                                                                                        1. 1

                                                                                          This article is 110 pages and thus I’m commenting before having read it. Forgive me!

                                                                                          I’m curious about the practical implications of the hygiene problem. Certainly in an age without gensym, unwanted capture would be an ever present menace (though I have heard from programmers in lisps that lack gensym for technical reasons who aver that, even there, it’s been sufficient to choose really hard-to-collide symbols, and that they have never really suffered from unwanted capture).

                                                                                          But in a modern, unhygienic language, like Common Lisp, the unanimous verdict is: ‘just use gensym.’ This is a solved problem, in other words. The learning curve is a little steeper, of course, as the macro student needs to learn about macros and also learn to recognize when they’re introducing symbols; but they do, and it’s never an issue again.

                                                                                          When I was first learning lisps, this seemed awfully cavalier to me and I was very thankful for hygiene. In fact, doing most of my first macro programming in Elixir, I was thoroughly reliant on hygiene even outside of Lisp.

                                                                                          However: I’ve since then devoted much of my time to macros in an unhygienic lisp and I have to say I’m seeing the CLispers’ point. Just use gensym!

                                                                                          In fact, not only am I perfectly happy with gensym, but at this point in my steady progress off the path of hygiene, it’s not just the guardrails on expressive power—which is usually the complaint you hear about hygienic systems—that bothers me about Scheme’s macros. It’s actually the cognitive overhead of the name spacing and execution environments inherent to hygienic systems that I find troubling. I have much more trouble understanding what is happening to symbols as they move through the different evaluation layers! Far from feeling safer, the additional (apparent) complexity makes me feel less steady and sure of what I’m writing.

                                                                                          All this to say: can it be that simple as ‘just use gensym’? The history and progress on the hygiene problem has been pursued and celebrated for decades (and it is fascinating; I will read this paper!). Have they been tilting at windmills? Should they have just used gensym twenty years ago and moved on to actual problems? Or is there more to what these people have built?

                                                                                          1. 2

                                                                                            I have heard from programmers in lisps that lack gensym for technical reasons who aver that, even there, it’s been sufficient to choose really hard-to-collide symbols, and that they have never really suffered from unwanted capture

                                                                                            Even without gensym, you can build macros that don’t leak any symbols at all. The linked article gives an example, defining or as (effectively):

                                                                                            (defmacro or (&rest args)
                                                                                              (if (null args)
                                                                                                nil
                                                                                                `((lambda (v r)
                                                                                                    (if v v (r)))
                                                                                                  ,(car args)
                                                                                                  (lambda () (or ,@(cdr args))))))
                                                                                            
                                                                                            1. 2

                                                                                              The problem is it can be very unintuitive where to use gensym. And there is cognitive overhead in using it. It’s in some sense a version of the problem that C preprocessor macros have. To use them safely you just have to wrap everything in parentheses, but then you have to remember to do so in just the right way to avoid hard-to-debug surprises.

                                                                                              This might not seem like a big deal but when doing something like symbolic expression substitution, I found hygenic macros really good to prevent a large class of errors.

                                                                                              1. 2

                                                                                                When you get to macros that generate macros it becomes very difficult to keep track of what captures what. There are also (admittedly rare) cases where a macro is intended to be unhygienic (captures a certain symbol) which doesn’t compose well with another macro which happens to use the same symbol under the hood, for example a function name it calls in the expansion that has the same name as the captured symbol.

                                                                                                For example, let’s have a loop that unhygienically matches a next keyword for continuing. Then, you use another macro that expands to a call to a function next from its own namespace. This would unintentionally get captured if you just have gensym.

                                                                                                Maintaining proper hygiene solves this problem.

                                                                                                1. 3

                                                                                                  Another example:

                                                                                                  (let ((next ...))
                                                                                                    (macro-that-expands-to-loop))
                                                                                                  

                                                                                                  In this situation, the loop macro in the expansion should not capture this next, because it’s an implementation detail that that other macro uses the loop macro.

                                                                                              1. 1

                                                                                                I always thought transpiler is a better word for what compilers as all a compiler does is translate code from one language into another. But they are interchangable. It does get at the marketing question, are we obligated to give things descriptive names even if the definitions are fairly unambiguous?

                                                                                                1. 11

                                                                                                  I tried several things so far. It looks like it’s a lot of it because I tried all this over a span of 15-20 years or so.

                                                                                                  • Text files. Worked great until I had to add schematics & co. Figured I need a wiki.
                                                                                                  • DidiWiki, I think? I liked it because it was small and self-contained. I hated the in-browser editor though.
                                                                                                  • Gitit ( https://github.com/jgm/gitit ). I loved it because it’s self-contained and Git-managed – I can write everything from a real text editor, not some in-browser thing. Unfortunately, it drags a ton of Haskell-related dependencies. I don’t use Haskell, and don’t really care about it. As soon as one of them isn’t packaged by whatever distribution I’m using, it’s bad.
                                                                                                  • Mediawiki. Brief experiment – hated it. Spent quite some time migrating data from gitit to it. Editor sucks. There were a bunch of WYSIWYG editor add-ons – like all in-browser WYSIWYG editors, all of them were really terrible. Not self-contained, I had to care after a pretty complex stack. I revisited it a few years later when containers supposedly helped solve that. Throwing containers at it only made it worse – I had to debug both whatever broke inside the container and Docker. (I admit that, to this day, I have no idea how people manage to use Docker productively. I’m just not smart enough for such a smart tool).
                                                                                                  • Brief experiment with a homebrew static site generator. Cool but I was lazy and build times ended up longer and longer because I just didn’t want to deal with it.
                                                                                                  • werc ( http://werc.cat-v.org/ ). This one’s actually great but I eventually stoped using plan9port and various things started to be hard to fix
                                                                                                  • Homebrew werc clone. I wanted better Markdown support, and “real” directory listings, including files with various quirky names which for some reason broke werc. Spent an afternoon trying to fix werc but my rc foo wasn’t exactly top notch after two years of not using it. Got tired of it and spent another afternoon writing some bare Python CGI that implements the subset of werc’s functionality that I care about.

                                                                                                  I’ve been using the last thing for about 3 years now and I don’t see myself switching any time soon.

                                                                                                  It’s an uncommon setup but I ended up with it because:

                                                                                                  • I want to be able to easily grep through text files, not use some in-browser search function. I have 20 years of notes and reference material there, the only way I can find something is by grepping an otherwise well-organized directory structure.
                                                                                                  • I have a lot of mixed media to organize – it’s not just text, it’s also thousands of PDFs (datasheet, reference manuals etc.), schematics, images, ebooks, whatever. Without a “real” file structure behind it, this quickly becomes unmanageable.
                                                                                                  • Some of the materials I organize are really long – e.g. 50-80 pages of notes on some subject. Editing that in a browser is hell.

                                                                                                  Edit: ah, worth pointing out. A lot of this is obtained by distilling notes that I take on paper, but a lot of that doesn’t lend itself easily to wikifying, so I have a bunch of old-fashioned folders around. These are mostly on non-technical subjects, but there’s a bunch of tech stuff in there, too. However, I do go through them periodically and sometimes throw away some of the stuff that I definitely suspect I won’t care about, not even for nostalgia.

                                                                                                  1. 4

                                                                                                    didiwiki → tiddlywiki https://tiddlywiki.com/ – i used this for a while as a precursor to evernote

                                                                                                    1. 3

                                                                                                      I have almost finished building a static version of gitit that basically doesn’t require caring about having Haskell on your system. The binary is nearly 200 MB but then you don’t need to worry about having GHC in whatever environment you launch it.

                                                                                                      1. 2

                                                                                                        That would be the second best thing after sliced bread, topped only by tattie scones!

                                                                                                        Edit: actually I think in the revised hierarchy of things, the correct term is “the best thing after tattie scones”

                                                                                                        1. 2

                                                                                                          Yes! I am genuinely curious still why so many people tried gitit back in 2012 and then abandoned it. Including its own author. It compares very well even in 2020 with most wiki software and has way less lock-in.

                                                                                                          1. 5

                                                                                                            The Haskell thing was the biggest problem for me, I think. It had a lot of dependencies. Some versions of said dependencies were mutually incompatible. Some of them weren’t packaged by every distro and I had to install them by hand. Plus, at the end of the day, I had like half a gigabyte of Haskell-related stuff that I never used for anything (I played with Haskell at some point in the mid noughties but we just didn’t get along…) and filled my screen (and bandwidth) every time I ran pacman.

                                                                                                            (Edit: for anyone reading, please remember this was almost ten years ago. There are a lot of smart people in the Haskell community, I expect some things are better nowadays)

                                                                                                            Then some of the dependencies (or gitit itself? I don’t remember) became unmaintained, too, and it became pretty clear that there’s a good chance none of this will be around in another ten years or so. I figured Mediawiki would be around for as long as Wikipedia will be around so that might be a better choice.

                                                                                                            1. 1

                                                                                                              Update:

                                                                                                              So I found out that you can use environmental variables to change where gitit looks for static files.

                                                                                                              https://github.com/JustusAdam/gitit/blob/master/unix-proxy.sh

                                                                                                              So using that script combined with adding -static flags to the cabal file made it possible to deploy a binary tarball to friends that seems to work at least on x86-64 linux. If you are still interested I can PM you this tarball.

                                                                                                              https://www.reddit.com/r/haskell/comments/9on8gi/is_there_an_easy_way_to_compile_static_binaries/

                                                                                                              1. 1

                                                                                                                By any chance, which OS did you use to host Gitit?

                                                                                                                1. 2

                                                                                                                  I used it between ~2011 and 2015, I think, so… Debian at first, then Arch Linux, I think?

                                                                                                        2. 1

                                                                                                          Please share the werc clone if you would be so kind

                                                                                                          1. 2

                                                                                                            It’s a little quirky and has a bunch of hardcoded things that probably make it useless for others, but I’ll see if I can find some time to clean it up.

                                                                                                            That being said, it’s a completely trivial, 200-line CGI script that basically:

                                                                                                            • Translates the URL into a local path, makes sure said path is not /etc/passwd or something similarly harmful, and then:
                                                                                                            • If the path is a directory:
                                                                                                              • If it can’t find a file called index.md or index.html, it generates a “clean” directory listing
                                                                                                              • If it finds a file called index.md, it runs it through markdown and gets out a blob of HTML
                                                                                                              • If it finds a file called index.html, it just takes that blob of HTML
                                                                                                              • It then scans the directory for files and folders with names other than index.md and index.html, and builds the sidebar
                                                                                                              • And finally it concatenates this with the blob of HTML above and drops it out
                                                                                                            • If the path is an .html file, it just builds the sidebar links (as above) and renders that + the HTML
                                                                                                            • If the path is an .md file, it builds the sidebar links (as above) and renders that + whatever it gets by running the file through markdown
                                                                                                            • If it’s anything else, it just lets you download it

                                                                                                            It probably takes less time to write one from scratch than to figure out how to use my 200 lines of poor-taste, uncomented Python.

                                                                                                            1. 1

                                                                                                              I understand this is not a work of art. My interest was piqued because we seem to have investigated similar alternatives including Gitit, and I thought it might be interesting to see what you came up with.

                                                                                                        1. 3

                                                                                                          I use a personal wiki and with a few patches find it highly effective.

                                                                                                          1. 1

                                                                                                            Hey just curious, Do you have your own instance of wiki? I would love to check it out

                                                                                                            1. 1

                                                                                                              I use gitit.

                                                                                                              https://github.com/jgm/gitit

                                                                                                              Most of my patches are quality of life things like allowing spaces in categories or making the search case insensitive.

                                                                                                              Oh and I use this theme https://github.com/t13a/gitit-bootstrap-theme with some minor tweaks so I can edit on my phone.

                                                                                                          1. 16

                                                                                                            People like me have been saying this for quite some time. You could use traditional non-linear optimization techniques here to do even better than what the author’s simple random search does, for example gradient descent.

                                                                                                            My old boss at uni used to point out that neural networks are just another form of interpolation, but far harder to reason about. People get wowed by metaphors like “neural networks” and “genetic algorithms” and waste lots of time on methods that are often outperformed by polynomial regression.

                                                                                                            1. 12

                                                                                                              Most of ML techniques boil down to gradient descent at some point, even neural networks.

                                                                                                              Youtuber 3blue1brown has an excellent video on that: https://www.youtube.com/watch?v=IHZwWFHWa-w .

                                                                                                              1. 3

                                                                                                                Yep, any decent NN training algorithm will seek a minimum. And GAs are just very terrible optimization algorithms.

                                                                                                                1. 1

                                                                                                                  I’d say that only a few ML algorithms ultimately pan out as something like gradient descent. Scalable gradient descent is a new thing thanks to the advent of differentiable programming. Previously, you’d have to hand-write the gradients which often would involve investment into alternative methods of optimization. Cheap, fast, scalable gradients are often “good enough” to curtail some of the other effort.

                                                                                                                  An additional issue is that often times the gradients just aren’t available, even with autodiff. In this circumstance, you have to do something else more creative and end up with other kinds of iterative algorithms.

                                                                                                                  It’s all optimization somehow or another under the hood, but gradients are a real special case that just happens to have discovered a big boost in scalability lately.

                                                                                                                2. 6

                                                                                                                  A large part of ML engineering is about evaluating model fit. Given that linear models and generalized linear models can be constructed in a few lines of code using most popular statistical frameworks [1], I see no reason for ML engineers not to reach for a few lines of a GLM, evaluate fit, and conclude that the fit is fine and move on. In practice for more complicated situations, decision trees and random forests are also quite popular. DL methods also take quite a bit of compute and engineer time to train, so in reality most folks I know reach for DL methods only after exhausting other options.

                                                                                                                  [1]: https://www.statsmodels.org/stable/examples/index.html#generalized-linear-models is one I tend to reach for when I’m not in the mood for a Bayesian model.

                                                                                                                  1. 1

                                                                                                                    Didn’t know about generalized linear models, thanks for the tip

                                                                                                                  2. 5

                                                                                                                    For a two parameter model being optimized over a pretty nonlinear space like a hand-drawn track I think random search is a great choice. It’s probably close to optimal and very trivial to implement whereas gradient descent would require at least a few more steps.

                                                                                                                    1. 3

                                                                                                                      Hill climbing with random restart would likely outperform it. But not a bad method for this problem, no.

                                                                                                                    2. 1

                                                                                                                      I suppose people typically use neural networks for their huge model capacity, instead of for the efficiency of the optimization method (i.e. backward propagation). While neural networks are just another form of interpolation, they allow us to express much more detailed structures than (low-order) polynomials.

                                                                                                                      1. 4

                                                                                                                        There is some evidence that this overparameterisation in neural network models is actually allowing you to get something that looks like fancier optimisation methods[1] as well as it’s a form of regularisation[2].

                                                                                                                        1. http://www.offconvex.org/2018/03/02/acceleration-overparameterization/
                                                                                                                        2. http://www.offconvex.org/2019/10/03/NTK/
                                                                                                                        1. 2

                                                                                                                          The linked works are really interesting. Here is a previous article with a similar view: https://lobste.rs/s/qzbfzc/why_deep_learning_works_even_though_it

                                                                                                                        2. 1

                                                                                                                          neural networks […] allow us to express much more detailed structures than (low-order) polynomials

                                                                                                                          Not really. A neural network and a polynomial regression using the same number of parameters should perform roughly as well. There is some “wiggle room” for NNs to be better or PR to be better depending on the problem domain. Signal compression has notably used sinusodial regression since forever.

                                                                                                                          1. 2

                                                                                                                            A neural network and a polynomial regression using the same number of parameters should perform roughly as well.

                                                                                                                            That’s interesting. I have rarely seen polynomial models with more than 5 parameters in the wild, but neural networks easily contain millions of parameters. Do you have any reading material and/or war stories about such high-order polynomial regressions to share?

                                                                                                                            1. 3

                                                                                                                              This post and the associated paper made the rounds a while ago. For a linear model of a system with 1,000 variables, you’re looking at 1,002,001 parameters. Most of these can likely be zero while still providing a decent fit. NNs can’t really do that sort of stuff.

                                                                                                                      1. 9

                                                                                                                        I’d argue the author’s solution is technically also machine learning just a way simpler method.

                                                                                                                        Part of me wants to write an article with machine learning methods in the spirit of Evolution of a Haskell Programmer

                                                                                                                        1. 4

                                                                                                                          Please do, I’d love to read it and learn. :-)