Threads for voldyman

  1. 13

    What the colleague was proposing sounds like premature abstraction. I see this quite often, mostly with junior and medior programmers but sometimes in seniors too (hell, I still catch myself doing it) - they start inventing all kinds of abstractions and patterns “in case this code needs to change”. But the thing is, you never know how the code will change. The things you make configurable might actually never change, and the things you baked in as assumptions might change several times.

    I find it’s best to write the code to be as straightforward as possible, so it’s easy to understand. Easy to understand code is easier to change too, because you’ll have an easier time figuring out the repercussions of your changes. Code that is factored in a way that makes it easy to understand and modify in various dimensions while still being efficient is the mark of a true craftsman.

    As you get more experienced, you’ll notice the kinds of things that tend to change a lot (data models, database layouts etc) and you’ll develop a style that favors “premature abstraction” for these kinds of things. If you’re lucky, your past experience affects the future work too and you’ll be right on the money with your abstractions. They were still a bit premature in a way, but because you’re working in a similar context you see the same patterns over and over and you and your colleague will thank your prescience that allowed the easy changes.

    However, be wary of carrying over these abstractions to other kinds of work, as your hard-won experience will actually betray you. For example, people working on frameworks and libraries tend to favor decoupling database code so that it can work on multiple databases. This is often the right thing to do for libraries, but in end-products it just makes code needlessly complex and slow - there it makes more sense to maximally leverage the features of the database you chose in the first place.

    1. 6

      I agree with all sjamaan has written. Also, I want to add:

      What the colleague was proposing sounds like premature abstraction.

      I call that YAGNI.

      I was going to joke by starting my comment as “I stopped reading at ‘My initial proposal was to add a class…’”. I was a heavy Python class user (inherited from University Java class, and the Python community), now that I have seen how much pain it is, and how much easier it is to work and debug with simple data types and functions (possibly passing function as arguments to do inversion of control).

      I did not write “you do not need classes or disjoint types, and anything beyond dict and list is overkill”. My current approach is to start new code as simple as possible but not simpler. To be able to grasp that, I learned standard Scheme that does not have OOP builtin.

      I quote the great last sentence of the previous comment that is my approach to build “abstractions” on top of SQL databases:

      in end-products it just makes code needlessly complex and slow - [in end products] it makes more sense to maximally leverage the features of the database you chose in the first place.

      1. 1

        The story is slightly editorialized to (hopefully) by applicable to a larger audience. The actual language being used doesn’t even have classes. In general I agree that OOP is a tool to use sparingly.

        1. 1

          (opinion) OOP is a great tool for API discovery

          I’ve not found it useful for much else tbh.

      2. 4

        I agree that what my colleague proposed was premature abstraction, at least from my perspective. But as you note, oftentimes experience will favor certain premature abstractions. This colleague was also at a high senior level (at least in title), so I like to give benefit of the doubt that they know what they are doing.

        What is interesting is that “code as straightforward as possible” also suffers from ambiguity. From your comments, I believe you and I agree on what that looks like, but someone from a different background may completely disagree. My colleague might argue that their proposal was very straightforward! The absolutely fascinating bit is that “decoupled code” and “code that is simple” is something we all know as the goal, but the true definitions of what these mean are not actually defined.

        I thought it was just so utterly strange that two entirely different approaches can both be justified with the same reasoning – and is there any way to “prove” that one approach is more correct than the other? Or are we just basing it all on our personal background experience?

        1. 4

          I don’t think you can “prove” that one approach is better/more correct than the other, because that’s highly subjective. Everybody will be bringing in different baggage. My gut says that “straightforwardness” as I call it should be measurable - the less indirections, classes, methods and conditionals you have, the more straightforward the code is.

          But even this relatively objective measure can be perverted, I’m sure, because programmers are just so damn good at that. Just think “code golf” to reduce the LOC count - that doesn’t necessarily make it more readable/straightforward.

          1. 3

            I lean towards agreeing that “proving” one approach over the other is impossible. Then I guess the question is, if everyone has different, subjective, ideas of what “straightforward code” and “decoupled code” is, does it even make sense to have “straightforward and decoupled code” as the north star for software engineering? If none of us agree on where that north star is in the sky, we’re all going in different directions with entirely different maps of the world.

            This is mostly just a philosophical question, one which I find myself considering. The engineer/scientist in me truly wants to define what good code looks like, but if its fundamentally a problem about people then that is clearly impossible.

            1. 3

              It’s a very good question indeed. I think maybe it’s much less important as to where your particular north star is than to have a consistent vision of where that star should be in a given team/project. That way, you get a consistent codebase that perhaps some onlookers find horrible and badly engineered, but everyone on the team agrees is a joy to maintain.

              At least in my own experience, in a team where people are aligned on a certain style of engineering, you get a codebase that has an internal coherency. If different parts are done by people with different viewpoints, you get a Frankenstein monster that has no sense of identity. I’ve seen this happen, and it can be very difficult to reconcile this without somehow “enforcing” one view on those that disagree. And even talking about it can be difficult, because it’s something that’s very difficult to adequately put into words.

              I think this is something that “style guides” try to do but fail at miserably because they’re only focused on the superficial syntactical details. But choosing (for example) whether to use interfaces or callbacks in a codebase goes much more deeply than that. And to make matters worse, there may be cases where there’s a good technical reason to deviate from the common convention.

              1. 2

                That is a good point, perhaps the only thing that does matter is what the team agrees on. Being aligned on the north star is certainly important, but where the north star is might not be. Definitely something I’m going to need to spend some time mulling over.

                Then there is the question of whether a particular north star will “dominate” so to speak. For instance, complex abstractions are oftentimes difficult to replace while more straightforward approaches are oftentimes easier. The paradox is that straightforward code is usually refactored until it is complicated and difficult to change, while complicated code remains complicated. Does a team or project’s north star inevitably drift towards complicated over time? My instinct says yes, which I feel has some interesting consequences.

                1. 1

                  Does a team or project’s north star inevitably drift towards complicated over time? My instinct says yes, which I feel has some interesting consequences.

                  hm, I’d have to agree that, in general, products tend to become more complicated due to the pressures from changing requirements, and the code follows suit. With one caveat: I’ve seen some refactorings that made needlessly complicated code much clearer (but possibly more abstract and complex to understand from scratch). Sometimes all it takes is some time away from the code to realise how it can be made simpler by finding the right abstraction for that particular part of the code. And sometimes it takes multiple iterations of refactorings in which one realises that eventually entire parts can simply be dropped.

                  1. 2

                    As an aside, I think the fact that products will grow more complex over time is a great reason not to start out making things complex right away. That complexity will probably be in different places than you expect, just like performance bottlenecks will be in different places than you expect. So premature abstraction is like premature optimization in that sense, and also in the sense that it is silly to design code in a way that you know will be slow/difficult to adapt to changing requirements - it just takes a lot of experience to see where to apply optimization and abstraction ahead of time.

              2. 1

                In the long term this can be measured in money: how much product earns and how much it costs to support it. Earnings incorporate values like customer satisfaction. Spends can tell about team velocity and maybe even employee churn.

        1. 7

          The author suggestion of keeping higher level modules lighter is expressed as “Push complexity downwards” in the excellent book A Philosophy of Software Design.

          One challenge I’ve found is that maintaining the “lightness” aspect of a module is not enforceable, especially when you have many people/teams working on it. And keeping everything “decoupled” using the indirection is painful to understand and maintain.

          I’ve started following Go’s approach, create boundaries between code that needs to evolve separately and expose a simple and generic API. Within the boundary, keep the code simple and don’t think too much about coupling.

          (side note: not shilling for a book, i genuinely found is useful especially since it’s not prescriptive)

          1. 4

            I never understand this “can’t maintaim a db server” position. apt install db-server uogrades happen same way as all your other dependencies anyway?

            1. 19

              Ongoing maintenance: backups, replication & failover, in place upgrades (aiui converting ask the on-disk tuples across major versions has historically been painful for people), rebooting the pg box because it got a kernel update and dealing with downtime.

              Incidentally fwiw Debian is my last favourite place to run pg because I’ve been bitten by bugs in the maintainer scripts Debian adds to it.

              The DBaaS solutions to these things are just “put credit card in, probably never think about it again” unless your needs are extremely stringent.

              1. 4

                migrating data between servers is a pain though. I am lazy and want a truly 12 factor app.

              1. 3

                Is there an up to date review of this OS? ArsTechnica style?

                1. 2

                  The DistroWatch page on Elementary OS has links to several reviews of 5.0 and 5.1, there may be something for you there. The people who maintain that DistroWatch are truly community treasures.

                  1. 1

                    I don’t think so.

                  1. 11


                    • Writing a talk on embedded search engines for static websites (sometimes called ‘full text search engines’)
                    • Building a demo with Go and Wasm for the above
                    • Setting up (or, trying out) Netlify CMS for a family website – so people that aren’t me can edit it


                    • Playing Portal 1/2 and maybe INSIDE with my wife
                    • Running in the cold!
                    1. 1

                      Can you give more details about the full text search engine?

                      Running in the cold!

                      (╬ ಠ益ಠ)

                      1. 3

                        I’m looking into projects like tinysearch, Stork, lunr.js, elasticlunr.js, minisearch, flexsearch, etc. They have different capabilities ranging from:

                        • Full word matching only
                        • Partial word matching
                        • Fuzzy search
                        • Wildcard matching
                        • Boolean opterators

                        I’ll be implementing an inverted index and seeing what else I’m capable of adding to it over the course of a few days. It will be written in Go but since I’m aiming to target tinygo as a compiler (to shrink the Wasm binary size) there are some restrictions.

                        1. 1

                          Interesting, I’ve been using and contributing to Bluge which can do offline indexing too.

                          But if you are implementing yourself then it should be even more fun!

                          I’ve been toying with the idea of implementing a ngram index over roaringbitmaps for front-end search, looking forward to reading/watching what you do!

                    1. 6

                      Over the weekend i finished integrating CoreData with a reminder/todo app I am writing for myself.

                      This week I’ll try to add reminders support to the app.

                      side note: learning iOS development with Swift UI is pretty painful, the docs are incomplete, all the posts are from different versions of the API and i don’t have the patience sit and read all docs to find what I need.

                      1. 2

                        CoreData, although very versatile and powerful, seems overly complex for simple apps that just need a basic, secure data store. Especially if you’re building an Apple Watch app. Actually was very discouraging when I was trying to whip up a quick PoC of an idea a few weeks ago. What’s your take?

                        Also, I loved Swift when it first came out. But after revisiting it years later…has it become a bloated language or what. So many decorations and ways to do the same thing…I feel like I’m in a Party City (I don’t like shopping for party stuff).

                        1. 2

                          I agree with both of your points, CoreData is complicated but the value it provided me is high. I think once i had the Objective-C style delegate listening for updates, then i didn’t have to touch it again.

                          Swift is too bloated or Swift UI uses too much, i was confused with @State, @StateObject and the million combine annotations.

                          I am more of a Go style engineer, i like thing simple and my brain can’t handle too much bloat. Minor things like trying to discover which package provides which struct is a PITA. (is @Published from SwiftUI import or Combine…)

                          But after a day and a half of struggling, looking for examples, i think i finally get it enough to not want to rm -rf the project and move on. I might spend a few days lightly reading the docs for both swift ui & combine after finishing the project if they are not deprecated by then….. feels like i am in js land all over again.

                          1. 3

                            As a go engineer who has tried a few weekends of swift, my experience was very similar. Especially about incomplete docs and outdated examples. I really feel like the barrier to becoming fluent & productive is unnecessarily high, perhaps if i could dedicate a few weeks to nothing but iOS dev i could get somewhere.

                      1. 2

                        this is great! I really prefer the more compact index section in godoc(s).(org|io).

                        I tried making the function name bolder since scanning though the list is difficult, will try to send a patch if i find something useful

                        1. 2

                          Trying to build typesense locally, struggling with rocksdb builds (the project uses a 2 year old version).

                          to make it more fun, i am not using docker and building it on my Apple Silicon macbook.

                          1. 32

                            Well written article and an enjoyable read. Only part I disagree with is your stance on “early exit”, it turns out that this is the tiny hill i’m willing to die on, one I was unaware I cared about until now. I think this is primarily because if I read code that has a return within an if block then anything after that block is inferred else.

                            I could become pedantic and retort that all control flow is a goto at the end of the day but I wont, because that would be silly and this was a genuinely good read, thank you for sharing.

                            1. 18

                              I also was surprised how much I disagreed about the early exit.

                              When I originally learned programming, I was told that multiple returns were bad and you should restructure your code to only return once, at the end. After learning go (which has a strong culture of return early and use returns for error handling), I tend to favor early returns even in languages that don’t use returns for error handling.

                              The thought process I’ve adopted is that any if/return pair is adding invariants, eg if I’m at this point in the program, these previous statements must be true (or they would have exited early). If you squint at it, you’re partway to pre/post-conditions like in Eiffel/Design By Contract.

                              1. 3

                                When I originally learned programming, I was told that multiple returns were bad and you should restructure your code to only return once, at the end.

                                Ah, so functional programming </sarcasm>

                                1. 2

                                  Pure functional programming is all about early returns, if anything. There’s just no return keyword. When everything is an expression, you can’t store now and return later.

                                  1. 1

                                    In a pure functional language the whole function is a single expression – I fsil to see how it is “all about early returns”? Certainly you can simulate imperitive return or raise using various tricks, but ultimately there is always just one expression and that is what gets returned, anything else is syntactic sugar.

                                    1. 4

                                      Conditionals and pattern matching are expressions. This means you’d have to put effort to avoid an early return.

                                      Consider a function that converts boolean values to string in the canonical structured style with a single return.

                                      function bool_to_string(x) {
                                        var res
                                        if(x) { res = "true" } else { res = "false" }
                                        return x

                                      In a functional style it’s most naturally written like this:

                                      bool_to_string x = if x then "true" else "false"

                                      We could put an extra effort to store the return value of if x then "true" else "false" but it looks like obviously useless effort:

                                      bool_to_string x =
                                        let res = if x then "true" else "false" in
                                2. 3

                                  I had a similar experience, from “only one return” to “return early” And I think it depends on the domain and language you are using too.

                                  One project I worked on was initially written in C and then moved to C++ and started by people who mostly wrote java. There is a common pattern in C to use goto near the return statement to free memory when you exist (think of it as a defer in go but written by hand), and since goto‘s are the hallmark of bad programmers and returning early was not an option the dev’s came up with an ingenious pattern

                                  int result = -1;
                                  do {
                                    if (!condition) {
                                    result = 1;
                                  } while (false)
                                  return result;

                                  it took a while to decipher why it was there but then become common place because your promotions were heavily influenced by your “coding capability”

                                3. 3

                                  Strongly agree with you.

                                  I first came upon early returns as a recommended style in Go, under the name of “line of sight” (the article makes a good case for its benefits), and have since become a huge advocate, and use it in other languages as well.

                                  Knowing all your if-indented code represents a “non-standard” case makes the code really easy to scan and interpret. Aside from leading to flatter code, it leads to semantically uniform code.

                                  1. 2

                                    I think early exit is OK in the sense of basically guards against invalid inputs and your language lacks the ability to express it in other says - you know, C. (Probably the same for freeing resources at the end, since you don’t have finally or defer.)

                                    1. 1

                                      +1 on early exits. They’re clarifying: the first thing I do in many functions is check various corner cases and then early exit from them, freeing up my thought process for everything afterwards. Knowing that those corner cases no longer apply means I don’t have to worry that someone — and “someone” might even just be me, in the future — adds some code that doesn’t handle the corner cases well after the terminating } of the else block (or de-indent, or insert syntax here for closing an else block).

                                    1. 13

                                      oof, it’s been a long time since my last post

                                      New country, new OS, ….


                                      Work Laptop: MacOS Catalina Personal Laptop: MacOS Big Sur (MacBook Pro 13” M1)

                                      1. 5

                                        Whoa! That’s a nice view! Having windows on three sides must provide you with a good amount of light!

                                        1. 1

                                          They do! Echo is a problem though, I haven’t found a way to reduce it without covering the windows

                                        2. 2

                                          I envy that view, beautiful!

                                          1. 1

                                            What was the old country and the new country, if I may ask?

                                            1. 3

                                              I went from India -> US -> Canada

                                              I didn’t know how much I would like it here, it’s been surprisingly awesome!

                                              1. 1

                                                Is that Vancouver?

                                                1. 4


                                                  edit: should’ve lied, getting too close to being doxx’d

                                          1. 2

                                            This weekend I’ll try to add a scorer to the text search engine bluge so that documents with terms closer to each other are ranked higher.

                                            1. 7

                                              I just use NetNewsWire locally on my phone. Anything I want to read elsewhere I throw in Instapaper. I just got tired of trying to find the right combo of aggregator and client, especially since I had to use so many different platforms. Going local has really simplified the system for me.

                                              1. 2

                                                I have NNW on my phone and laptop, with similar, but not identical, subscription lists. I don’t want to bother with a third-party, so I just read most things twice (helps with retention).

                                                1. 2

                                                  I have a similar setup, NetNewsWire on phone and laptop and feedly for sync

                                                1. 2

                                                  Setting up home office in the apartment I recently moved to. Trying to find ways to reduce echo, among other things.

                                                  1. 8

                                                    Inviting (via cold email) a few engineers and professors to be a guest of my podcast. Otherwise it’s just going to be a bunch of Dropboxers ranting about internal systems for the next ten episodes. Have a <10% response rate so far :-(

                                                    If anyone works in distributed systems and is interested in talking about their systems, fun outage stories, etc. please reach out!

                                                    1. 5

                                                      Keep in mind that 10% response rate on cold emails is not as bad as you make it sound.

                                                      1. 2

                                                        Just finished the first episode, subscribed :)

                                                      1. 45

                                                        Setting aside feelings one way or the other, posting this because the default behavior changing is bound to bite somebody in the next month or two. If anybody knows what minor version is going to start doing this, post here so we can know what to check git --version against. It appears this is landing prior to git 3.0.

                                                        Quoting from the mailing list discussion:

                                                        So we need to make sure existing users know that they can add:
                                                            defaultBranch = master
                                                         to their ~/.gitconfig if they want the legacy behavior

                                                        In case you need to support legacy scripts or muscle memory.

                                                        git config --global init.defaultBranch master may also work, but haven’t tried it on my machine.

                                                        1. 19

                                                          [init] defaultBranch = master

                                                          Adding this to my gitconfig now to avoid future issues…

                                                          1. 16

                                                            Wait, I thought that init.defaultBranch was the compromise, to avoid renaming the default branch in Git, while still allowing those who feel uncompfortable by it to avoid it as much as possible?

                                                            Are there any statistics or scientific attempts to qualify how much of a problem this is? It’s probably my fault, but I find it hard to imagine that if someone is in the need for version control, will learn all the basics up until the point where they see the word “master”and give up, not because of direct racism, but racism by association.

                                                            Non-technical issues like these are never easy, but there should at least be some discission where one position is designated as the morally superior before a word is said.

                                                            1. 27

                                                              main is shorter, simple, and has no negative connotations whatsoever. This is an easy thing to do and it makes people feel welcome

                                                              1. 25

                                                                Semi-serious question: How do we know that? I’m going to guess that the people who decieded to use “master” in version control systems didn’t do this out of mallace, but just because the phrase seemed appropriate. So how can we be sure that main won’t eventually fall our of favour? I remember that at the beginning of 2015 Elementary OS wanted to release a new version called “Isis”, afaik in reference to the egyptian god, but then the terror group in ISIS gaiend power and a more or less inncoent name became very controversial.

                                                                And does “shorter” and “simpler” even matter? Almost everyone uses autocompletion in some form or another, and it’s not something you use as often as “git commit”.

                                                                1. 17

                                                                  If we knew the future the world would be a better place ;) In the absence of perfect prescience, we will have to be guided by the voices of today.

                                                                  1. 7

                                                                    Ok, fair enough, but let’s twist the question again: How do we know that everyone has a seat at the table? What if there is a language or a culture where main has a different meaning (a simple but unoffensive example is in Germany, where Main is a river)? Apparently there were no black people, or people “decendents of slavery” to be exact (because not all back people were slaves) were present when the term “master” came into use, to correct this issue early on. But then on the other hand, if I remember correctly, make still uses tabs instead of general indentation, beacuse Stuart Feldman didn’t want to disrupt his userbase of at most a few dozen users.

                                                                    1. 7

                                                                      Of course, given that “git” itself is an offensive term in the UK, I insist that the whole project must be immediately renamed.

                                                                      1. 6

                                                                        false equivalence bad-faith troll

                                                                        1. 1

                                                                          Ok, but it is a swear word and you would be chastised for saying it in a learning environment.

                                                                          Much like “GIMP” doesn’t belong in polite conversation.

                                                                      2. 2

                                                                        What are you hoping to achieve with this thought experiment?

                                                                        1. 8

                                                                          I intend to show that the argument is internally inconsistent. We cannot simultaniously assume a kind of standpoint theory, by which there is always a posibility that a term is (objectivly) wrong, but at the same time be able to suggest an (objective) replacment for a (subjective) offense.

                                                                          A simpler understanding, that does not run into these problems is that offense is determined by intent, not by the nature or the etomology of a word.

                                                                          At the same time, I don’t think that people advocating for this change are arguing on this level. Any reference to this logic is handwaving, but the motivation appears to be something else, which I would either guess to be some kind of at best false pragmatism or at worse opportunism.

                                                                          1. 2

                                                                            (I apologize if I misinterpret your comment, English is not my first language and I am trying to understand your comment)

                                                                            a group X used a terminology to undermine/subjugate a group Y in the past, the group X is much smaller now but it still exists.

                                                                            the change happening here is removing that specific terminology because group Y today is reminded of the past treatment.

                                                                            and is your argument is that, since we don’t know that the new terminology wasn’t used to undermine any group in the past, the change is fruitless as we might need to change it again?

                                                                            or that since the terminology was also used in other contexts by people not in group X, it should be okay to continue using it?

                                                                            As I am neither a member of group X or group Y, my opinion is that if the change results in more people being comfortable using tool, we should definitely do it.

                                                                            1. 4

                                                                              First of all, and I don’t know why this has to be said: Slavery didn’t exist because it was called slavery, it existed because the society reproduced the conditions under which people were slaves.

                                                                              and is your argument is that, since we don’t know that the new terminology wasn’t used to undermine any group in the past, the change is fruitless as we might need to change it again?

                                                                              or that since the terminology was also used in other contexts by people not in group X, it should be okay to continue using it?

                                                                              I explained the further in a sibling comment, that on the terms of the argumentation, it is imposible to say that main is better than master, because perspectives cannot be compared or have any common point of reference. Since this discussion is not based on any hard evidence, we cannot derive any emperical conclusion like “this will make more people comfortable”, since we are talking about idealized, aggregated perspectives, produced by a worldview that has ever increasing problems to explain anything that is happening, hence the focus on such things like “master/main”.

                                                                          2. 6

                                                                            I find it not to be only a “thought experiment”. The questions are on point. No data (if any, I would like to see it) to back up claims that people are offended by these words results in such major changes for everyone. At least that needs to be pointed out.

                                                                            1. 3

                                                                              OP is leaning back in their armchair imagining the theoretical universe in which the broader German community is coping with the upsetting rivered associations with “main” as the new default git branch. I suggest they apply their philosophical leanings to the actual real world in which it turns out a sizeable community of real live humans prefer to dispose of master/slave language where possible in discussions with their terminal.

                                                                              1. 6

                                                                                Please re-read my comment, the “main” example was just to give an example due to limited perspectives, we cannot know what our actions or decisions mean from other perspectives. I explicity said it was harmless, but if you want something better, consider @caleb’s example.

                                                                                I suggest they apply their philosophical leanings to the actual real world in which it turns out a sizeable community of real live humans prefer to dispose of master/slave language where possible in discussions with their terminal.

                                                                                How can you know that? Where are the statistics? Where are the polls? How did we figure this out? When did we figure this out? This is just postulated, and nobody goes into it. And I have a hunch that this is because if you were to actually find out what most people belive, that it would not be what you want to think they do. But that’s just by unprooven hypothesis.

                                                                                1. 2

                                                                                  I’m not going to debate you because you’re displaying a preference for thought experiment over an engagement in reality, which not only suggests a closed mind, but also that you simply don’t have sympathy for the real issue at hand. @caleb’s “example” is a much less veiled form of the same type of trolling you’re unwilling to let go of.

                                                                                  You wish to model reality, but no modeling is required to understand this issue. We’re here because we’re here. This is a real conversation which is taking place in the real world for several years now. You’re attempting to place the burden of proof of the existence and size of a community on that exact community itself, which is existentially large and significant enough to make the issue stick broadly across numerous open source projects, GitHub, and now the git project itself.

                                                                                  This is just completely illogical. If you want to go do your own research and develop some set of quantitative metrics in an attempt to quantize a complex social issue which is unfolding as we speak, then go ahead and do so. It’s not going to change what’s happening.

                                                                                  1. 5

                                                                                    As already stated, I just want to explain why the position is incoherent, and as everyone knows, ex falso, quod libet. You have already dismissed everyone who is questioning it as a troll, declare the issue as obviously setteled and then proceed to moralize it by claiming those who don’t agree have no sympathy for the real issue at hand – but of course, we are have a closed mind. I am honestly disgusted by this kind of behaviour, this dishonesty and the smug superiority you emit. Please stop and consider what you are doing, and why you feel the need to behave the way you do.

                                                                                    1. 2

                                                                                      You wish to model reality, but no modeling is required to understand this issue. We’re here because we’re here. This is a real conversation which is taking place in the real world for several years now. You’re attempting to place the burden of proof of the existence and size of a community on that exact community itself, which is existentially large and significant enough to make the issue stick broadly across numerous open source projects, GitHub, and now the git project itself.

                                                                                      This could be accomplished by a small group of PR professionals who don’t actually care about racism, but recognize a potential upside for their company while the cost of changing a default is distributed throughout the open source community.

                                                                                      The real story here is that GitHub made the change unilaterally, and git followed suit. One might consider the depth of anti-racist feeling that would drive a company to make this change while continuing to partner with ICE, DOD, and police departments around the country.

                                                                          3. 7

                                                                            i was there when we named elementary OS Isis and i was also there when we named it Freya.

                                                                            from what i remember, no one was concerned about optimizing the name, we were more concerned about not hurting people who themselves or their families had been impacted by Isis.

                                                                            I am 110% proud of our decision.

                                                                            (taking the elementary OS dev hat off)

                                                                            I found main to be a better choice, i am used to using mainline at work now (because of perforce legacy repos) and don’t even notice a difference.

                                                                            1. 2

                                                                              So how can we be sure that main won’t eventually fall our of favour

                                                                              Then we just change it again?

                                                                              1. 3

                                                                                But considering that the same would apply again, ad infinitium, we cannot say we will ever find a good name. And at then, what is the point? Either we go on forever renaming every time someone complains, at technical expense, or we claim that this renaming is more important than others, because one offended group is more important than others, which I don’t think that the people arguing for this want to argue.

                                                                                1. 5

                                                                                  we cannot say we will ever find a good name

                                                                                  I don’t think anyone is claiming that main will be the perfect name forever. If at some point in the future main becomes offensive, then we could change it again. I haven’t found any evidence that would lead me to believe that git would be changing the branch name on a monthly or yearly basis, so I don’t think there is a high cost here.

                                                                                  forever renaming every time someone complains, at technical expense

                                                                                  Uh, we work in software. Everything changes all the time at technical expense. Updating your dependencies could break your app (even if the API doesn’t change), products get deprecated, new products get created. I don’t see this much backlash against Apple changing their CPU architecture and that’s gonna cause a lot more trouble than this change.

                                                                                  But that makes sense because the real issue here is ideology, wokes vs anti-wokes. We’re just pretending it’s technical. I think it’s fine to argue the ideological issue. I don’t think people are automatically racist for not liking the change. I just don’t think the technical argument holds much water.

                                                                                  1. 1

                                                                                    I don’t know how Apple is going to handle the migration, but I suppose they have tooling to make it easier, the kind of tooling Git lacks.

                                                                                    Those conversations might also be more private.

                                                                                    As for tech expenses, you’re correct in that everything comes at an expense.

                                                                                    Is it therefore justified to impose more of it on others?

                                                                                    Maybe that’s an important ideological question as well?

                                                                                    This doesn’t have to be all about how git has a master branch to signify “the master copy”.

                                                                                    See also: how master hosts usually perform more work than slave hosts (to counter American slavery connotations) or how offensive “blanket exception handling” and “collaborators” should be (in cultures treated with “less thought” than American slavery).

                                                                              2. 1

                                                                                Changing it alone is more welcoming than any harm from the word itself.

                                                                                1. 1

                                                                                  This I don’t get. Could you explain what you mean?

                                                                              3. 36

                                                                                Master is more precise, traditional, doesn’t break anything, and has no negative connotation in this context, or most other contexts.

                                                                                Main does not make me feel welcome, it makes me feel like I’m being forced to bend the knee to a mob that can’t or willfully choose to not understand English. It makes me embarrassed to be in this field. Admitting that feeling means I deserve to feel bad anyway though, so whatever.

                                                                                1. 12

                                                                                  Tradition should not hold back progress. There are more descriptive names out there. For example allow/deny is better than black/whitelist, parent/child is better than master/slave. I understand people are resistant to change and humans are creatures of habit (energy conservation) but this is a simple name change where there’s more advantages than not and people will get over it after a few weeks.

                                                                                  1. 22

                                                                                    parent/child is better than master/slave

                                                                                    Not if it brings up memories of child abuse.

                                                                                    1. 4

                                                                                      Sorry about your child abuse, or are you simply virtue signaling? If you feel strongly about it then you can message the maintainers of the software you use to alter the names, otherwise why bring up a “whataboutism” argument.

                                                                                      1. 7

                                                                                        That you consider it valid shows the futility of choosing names to please everybody.

                                                                                        The master slave relationship is not the same as the primary secondary relationship, nor the parent child relationship. Sometimes master slave actually describes the subject matter.

                                                                                        And sometimes the master copy of some source code should live on the master branch. Many people only commit to master when they are certain of their work, while they use another branch as their main branch. Kind of presumptuous, calling the default branch the main branch, isn’t it.

                                                                                    2. 17

                                                                                      Sure, but it should hold this back.

                                                                                      1. 1

                                                                                        Sure, but it should hold this back.

                                                                                        Not when there are demonstrably better names that are not, traditionally, associated with one-sided power dynamics, it shouldn’t.

                                                                                        If “main” makes you feel less welcome, then there’s something wrong with your capacity for feeling.

                                                                                        1. 9

                                                                                          Hold on, it’s not possible to win an argument about inclusiveness by saying that the other person is broken. Or even pretend that there is only one way to view things. We have to learn to communicate better and see the other person’s point of view.

                                                                                          1. 1

                                                                                            No, @yawpitch is quite on-point. This isn’t about “winning an argument”. Those with any decent capacity for nuance, critical thought, and self-reflection will note that “main” draws fewer negative associations than “master”. Those with unconfronted reactionary cultural/emotional anger stemming from the strawman “woke mob” fantasy will come up with a contorted bad-faith “arguments” a such as “the word ‘main’ makes me feel unwelcome”. You gotta call bullshit when you see it.

                                                                                            1. 4

                                                                                              Maybe. Or it’s also an opportunity to learn. People can have different points of view, and still, be good people. <3

                                                                                            2. 0

                                                                                              First off, this isn’t an argument about inclusiveness, it’s at best a debate about semantics, and since there’s no cognizable or remotely valid viewpoint that can distinguish “master” in the “traditional” sense being described above from its root association with human bondage, it’s not even a very sensible debate. No such valid viewpoint, with no pretense involved, exists: the word has several long-standing definitional meanings and the one involved here is fundamentally and absolutely inseparable from the notion of master / slave dynamics by which it derives any meaning whatsoever to the cause of version control. To try and empathize with any countering point of view is absurd … it’s a word, its meaning is simply a fact, and that fact is not open to meaningful and intellectually honest dispute, without descending into the interminable Hell of “alternative facts”.

                                                                                              The semantic dispute thus settled the only question, then, is is the community, right now, okay with that semantic baggage being carried further forward, or is the community prepared to make a break from that historical association? Personally I’d say that’s also a moot point … it’s been de facto settled by Github and the very reason the patch detailed above exists is because the network pressures of the downstream are driving an upstream change because YES the community is ready to not be exclusive any longer.

                                                                                              What remains is for individuals who are not comfortable with that linguistic and cultural evolution to, frankly, grow up and un-break themselves of their lack of empathy … the point of view of the “tradition” argument has been heard to death, it does not need more empathy heaped upon it.

                                                                                              I stand by my point: if you – and I’m using the most generally inclusive meaning of “you” here – feel that you’re somehow more included by “master” and less included by “main” then something is deeply and dangerously flawed with your emotional apparatus. The only colorable arguments against this minor default change are inertial, as in you either don’t want to invest the time required to update existing repos or you don’t want to engage in the effort needed to reprogram some muscle memory for future ones. Those are the available arguments. They’re just not very good ones.

                                                                                              1. 7

                                                                                                Maybe OP doesn’t know everything you do. Git is being used all over the world, in different types of cultures, and this seems like an American problem at heart. If they feel like this change is being trusted upon them, and on top of that they get vilified when they want to talk about it, it’s not really helpful to generate a common understanding. It doesn’t mean that they are broken, they just have a different context from you.

                                                                                                I feel like a better line of discussion would be to give out concrete instances where this word has been a problem. Or actually, even ask why OP feels like they do.

                                                                                                1. 4

                                                                                                  OP made their context quite clear with their phrasing:

                                                                                                  Master is more precise

                                                                                                  … only when understood as an explicit reference to master/ slave dynamics …


                                                                                                  … which is automatically a claim of being “inside” the dominant cultural context …

                                                                                                  doesn’t break anything

                                                                                                  … privileges the idea that the status quo isn’t already broken, which it is if you find the master / slave connotation at all problematic …

                                                                                                  and has no negative connotation in this context

                                                                                                  … no negative connotation to OP; the phraseology has an extremely negative connotation to me, and I am most certainly not alone: you keep suggesting I need to apply more empathy to someone who’s denying my very existence…

                                                                                                  or most other contexts.

                                                                                                  … can someone please enumerate the many and varied contexts in which master / slave has no negative connotation from the perspective of anyone who has been a slave, or whose family history was affected by slavery. I can affirm that I’ve personally got a great many friends in a great many contexts – including well outside of America – who see the problem with “master” as default.

                                                                                                  I don’t need to understand why OP feels like they do … I need only identify that the feeling itself is unworthy of consideration in the political choice at hand… it is impossible for any rational being that both understands English and is armed with minimal historical context to see “main” as more exclusionary and historically problematic than “master”, hence we need not engage with any such view that happens to be espoused at all, except to point out its obvious and manifest flaws.

                                                                                                  1. 3

                                                                                                    I guess I didn’t get notifications for this continuing discussion. I’m on mobile and also don’t really care to keep this going, but I do want to clarify that I mean more precise in the sense of “master recording” or “master copy”, as in the source of truth from which copies are derived.

                                                                                                    I can’t tell if you already read it that way, and believe that usage to itself be derived from slavery, or just think I’m directly defending the master/slave dynamic.

                                                                                                    1. 3

                                                                                                      Both of those usages — arguably they’re the same usage — rely in their entirety on the master / slave semantic for their meaning. Indeed no semantic value can be extracted from either without knowing that relationship exists, at least implicitly. A replication master makes no sense without duplication slaves, and that’s exactly what we called them in the bygone days of glass / nickel masters in optical pressing and tape in replication farms. Even before tape and indeed wax cylinders the master mold of foundry and pottery days was there to be used to direct the toil of those making exact copies, as it were, slavishly, with no independent freedom allowed in the work. They’re utterly inextricable from the historical institution they took as their model.

                                                                                                      As I’ve said before there’s is not now, nor ever can be, any legitimate argument to be made that separates usage in version control from the historical idea of the privileged master and the slave(s) that follow.

                                                                                                    2. 0

                                                                                                      it is impossible for any rational being that both understands English and is armed with minimal historical context to see “main” as more exclusionary and historically problematic than “master”, hence we need not engage with any such view that happens to be espoused at all, except to point out its obvious and manifest flaws.

                                                                                                      I’m totally with you, though based on the extent of some of the involved philosophical gymnastics into symbology, original intent, and sociology on the “other side” thrown in the face of the simple actual sizeable live human community looking to stop promoting “master” I’ve gotta conclude that these folks are ultimately motivated by a certain emotional bias…

                                                                                          2. 7

                                                                                            In many uses of master/slave in computer related things, it is actually a poor analogy. Often a “master” does all the work with the “slave” sitting idle waiting to step in only if needed, Other terms like prime and replica can be a better fit anyway. parent/child has a connotation of the parent spawning the child which works for, e.g. processes but not in other cases. In the case of git, there isn’t even a corresponding “slave” concept, only “branches” - In my mind, I wouldn’t even connect that use of the term master to slavery, but I’m not American. In any case, the subversion term “trunk” was better to begin with.

                                                                                            1. 4

                                                                                              Trunk is a good term. I can understand a change to Trunk.

                                                                                              In the book 1984, a major plot point is the reduction of language to reduce the complexities of expressable thought. Words meaning only one thing, like master only meaning “of a slave,” is an example of this language reduction.

                                                                                              1. 3

                                                                                                The master name in git was derived from master/slave terminology, see

                                                                                                The name trunk like in SVN is ok but I still think calling it main is better overall because of it’s shortness and detachment from it’s controversial origin.

                                                                                                1. 3

                                                                                                  Saw, am very not convinced by his sources that it is master slave, even in bitkeeper.

                                                                                                  Trunk is much better than main. One is descriptive.

                                                                                              2. 1

                                                                                                Principal/agent makes a lot more sense than parent/child for workflows.

                                                                                                1. 2

                                                                                                  Not bad, certainly makes sense under certain delegation workflow contexts.

                                                                                              3. 1

                                                                                                Master is not more precise.

                                                                                              4. 15

                                                                                                As we’ve seen, you can never make people feel welcome–you can only make it more or less costly to join.

                                                                                                1. 14

                                                                                                  the spanish main was the site of centuries of brutal colonialism

                                                                                            1. 2
                                                                                              • Continue reading Relevant Searches
                                                                                              • Visit apartments for my move in December
                                                                                              • Play with MVCC data structures
                                                                                              1. 2

                                                                                                I’ve been using a paper notebooks, switched a notepad instead. (with a uniball air pen)

                                                                                                I tried many apps, on my mac & on my ipad but I’ve found that i only consistently take notes and keep them updated if they are visible in the right context.

                                                                                                For things that need to be looked up, i have a folder with spreadsheets and documents.

                                                                                                1. 7

                                                                                                  Season 3 of Dark comes out on Saturday (in the US at least), so I’ll be parked in front of the TV for several hours.

                                                                                                  I’ll probably get a round of disc golf in on Sunday. Do we have any European disc golfers here? If so, what’s it like in your area?

                                                                                                  1. 2

                                                                                                    Some cities have some hidden in parks. I have seen some at least in Brussels, Louvain-la-Neuve and Amsterdam. Done it a few time for fun but it is pretty rare hobby around here.

                                                                                                    1. 1

                                                                                                      Are you me (from another dimension/time :))? This is exactly what I’m doing this weekend: watching Dark and playing disc golf!

                                                                                                      Do we have any European disc golfers here?

                                                                                                      Yes, I’m a disc golfer from Europe. What exactly do you want to know, how is it now due to COVID or more in general?

                                                                                                      1. 1

                                                                                                        I was just curious what the scene is like in other countries e.g. how popular is it, are there many courses near you, etc.

                                                                                                        I’ve seen that Sweden and Finland have a huge number of courses, but I don’t know much about the rest of Europe.

                                                                                                        1. 1

                                                                                                          how popular is it, are there many courses near you, etc.

                                                                                                          I can tell you only for Croatia.

                                                                                                          Not very popular here, we have around 40 players on our tournaments (more active players than that, but noting to write home about).
                                                                                                          I have a course about 40 minute drive away from me, and then the next one is 3 hours away :D

                                                                                                          1. 1

                                                                                                            That’s interesting. I live in a small college town and even here there are 5 courses near me, and a handful more in Indianapolis (~1hr away).

                                                                                                            1. 1

                                                                                                              there are 5 courses near me

                                                                                                              We have 5 courses in the whole country!

                                                                                                              Four of which are relatively close to each other (maybe half an hour between each; all ~3 hours away from me), and one is near me. There are some talks about some new courses, but nothing happened yet.

                                                                                                      2. 1

                                                                                                        Totally forgot about the new Dark season, thanks for the reminder!

                                                                                                        1. 1

                                                                                                          I am doing the same on Saturday, rewatched dark a few weeks ago to catch up.

                                                                                                          A second watch of the show was surprisingly illuminating.

                                                                                                          1. 1

                                                                                                            I did my rewatch last weekend. A second watch is definitely interesting!

                                                                                                        1. -2

                                                                                                          Tag suggestion: “show” instead of “programming”. Also seems like a low-effort post.

                                                                                                          1. 19

                                                                                                            Added show, but the site won’t let me remove programming.

                                                                                                            I certainly spent many hours on this post, so not sure why you think it’s low-effort? :)

                                                                                                            1. 5

                                                                                                              We have annual battlestations threads. You just missed the last one. You can, of course, still comment there.

                                                                                                              And I suggest your tags match them: practices

                                                                                                              1. 10

                                                                                                                Thanks! I’ll keep an eye on the 2021 version then, I guess.

                                                                                                                Added a comment to the 2020 thread, too, and updated the tags. Thanks for the hint

                                                                                                              2. 1

                                                                                                                Everyone has a desk and can write about it, not everyone has your knowledge of Objective-C or can write about that.

                                                                                                                1. 18

                                                                                                                  But I found it a thoughtful post that not only listed hardware, but also explained why it’s beneficial. It’s a good read.

                                                                                                                  1. 8

                                                                                                                    true, everyone has a desk but the post also has

                                                                                                                    Window manager: i3 It won’t be a surprise that I am using the i3 tiling window manager, which I created in 2009 and still maintain.

                                                                                                                    And the projects written in Go, including the router7 or debian code search.

                                                                                                                    I would say that the title does a tiny bit disservice to the content in the post itself.

                                                                                                                    1. 2

                                                                                                                      Being the writer of i3 makes the point even stronger. Imagine the interesting posts he could write about i3 and window managers. Instead we get a post about what he has on his desk.

                                                                                                                      How does writing i3 make his desk any more interesting? He didn’t write i3 because his desk was set up a particular way.

                                                                                                                      1. 1

                                                                                                                        But even then the “content” is just a list of products or programs the author has bought, used or developed. There’s nothing to really be learned or gained from such a list.

                                                                                                                        1. 8

                                                                                                                          i learned a few things from the post though.

                                                                                                                          1. Multiproject management through emacs- org mode.
                                                                                                                          2. serialize thoughts by writing them down on a physical notebook
                                                                                                                          3. authors reasons for choosing
                                                                                                                          • Go
                                                                                                                          • Single monitor
                                                                                                                          1. 3

                                                                                                                            You needed the developer of i3 to tell you that you can write things down in a notebook?

                                                                                                                            1. 7

                                                                                                                              i mean, i like learning about people’s workflow. Like i learned about bullet journal from a lobsters thread in 2016 and it was a game changer for me.

                                                                                                                            2. 2

                                                                                                                              Let’s be real, you’ve heard all this stuff before and know it well: This isn’t the first time you’ve seen “serialise thoughts by writing them down” or “Go is great because of x”.

                                                                                                                              1. 12

                                                                                                                                If you recognized this as a “one of many” posts then feel free to skip it, but it is certainly not low effort and apparently did interest quite a few of us.

                                                                                                                  1. 3

                                                                                                                    I recently learned that solving a problem requires bread-first effort, asking how can i get a working solution as soon as possible. Once that is ready, find the bottleneck, fix that in a bread first way.

                                                                                                                    Keep a notebook where you start with what you want to do and what are the necessary tasks, it’s ok to deviate but always keep the bigger picture in mind.

                                                                                                                    1. 4

                                                                                                                      Once that is ready, find the bottleneck, fix that in a bread first way.

                                                                                                                      I definitely approve of eating bread before doing work. It’s hard to concentrate on an empty stomach.

                                                                                                                      (You meant breadth-first. Sorry for making your response the butt of the bread joke.)

                                                                                                                      1. 5

                                                                                                                        you found my typo, dough! You can Loaf at me all you want.