1. 15

    As a junior developer doing my best to learn as much as I can, both technically and in terms of engineering maturity, I’d love to hear what some of the veterans here have found useful in their own careers for getting the most out of their jobs, projects, and time.

    Anything from specific techniques as in this post to general mindset and approach would be most welcome.

    1. 33

      Several essentials have made a disproportionate benefit on my career. In no order:

      • find a job with lots of flexibility and challenging work
      • find a job where your coworkers continuously improve themselves as much (or more) than you
      • start writing a monthly blog of things you learn and have strong opinions on
      • learn to be political (it’ll help you stay with good challenging work). Being political isn’t slimy, it is wise. Be confident in this.
      • read programming books/blogs and develop a strong philosophy
      • start a habit of programming to learn for 15 minutes a day, every day
      • come to terms with the fact that you will see a diminishing return on new programing skills, and an increasing return on “doing the correct/fastest thing” skills. (e.g. knowing what to work on, knowing what corners to cut, knowing how to communicate with business people so you only solve their problems and not just chase their imagined solutions, etc). Lean into this, and practice this skill as often as you can.

      These have had an immense effect on my abilities. They’ve helped me navigate away from burnout and cultivated a strong intrinsic motivation that has lasted over ten years.

      1. 5

        Thank you for these suggestions!

        Would you mind expanding on the ‘be political’ point? Do you mean to be involved in the ‘organizational politics’ where you work? Or in terms of advocating for your own advancement, ensuring that you properly get credit for what you work on, etc?

        1. 13

          Being political is all about everything that happens outside the editor. Working with people, “managing up”, figuring out the “real requirements’, those are all political.

          Being political is always ensuring you do one-on-ones, because employees who do them are more likely to get higher raises. It’s understanding that marketing is often reality, and you are your only marketing department.

          This doesn’t mean put anyone else down, but be your best you, and make sure decision makers know it.

          1. 12

            Basically, politics means having visibility in the company and making sure you’re managing your reputation and image.

            A few more random bits:

      2. 14

        One thing that I’ve applied in my career is that saying, “never be the smartest person in the room.” When things get too easy/routine, I try to switch roles. I’ve been lucky enough to work at a small company that grew very big, so I had the opportunity to work on a variety of things; backend services, desktop clients, mobile clients, embedded libraries. I was very scared every time I asked, because I felt like I was in over my head. I guess change is always a bit scary. But every time, it put some fun back into my job, and I learned a lot from working with people with entirely different skill sets and expertise.

        1. 11

          I don’t have much experience either but to me the best choice that I felt in the last year was stop worrying about how good a programmer I was and focus on how to enjoy life.

          We have one life don’t let anxieties come into play, even if you intellectually think working more should help you.

          1. 8

            This isn’t exactly what you’re asking for, but, something to consider. Someone who knows how to code reasonably well and something else are more valuable than someone who just codes. You become less interchangeable, and therefore less replaceable. There’s tons of work that people who purely code don’t want to do, but find very valuable. For me, that’s documentation. I got my current job because people love having docs, but hate writing docs. I’ve never found myself without multiple options every time I’ve ever looked for work. I know someone else who did this, but it was “be fluent In Japanese.” Japanese companies love people who are bilingual with English. It made his resume stand out.

            1. 1

              . I got my current job because people love having docs, but hate writing docs.

              Your greatest skill in my eyes is how you interact with people online as a community lead. You have a great style for it. Docs are certainly important, too. I’d have guessed they hired you for the first set of skills rather than docs, though. So, that’s a surprise for me. Did you use one to pivot into the other or what?

              1. 7

                Thanks. It’s been a long road; I used to be a pretty major asshole to be honest.

                My job description is 100% docs. The community stuff is just a thing I do. It’s not a part of my deliverables at all. I’ve just been commenting on the internet for a very long time; I had a five digit slashdot ID, etc etc. Writing comments on tech-oriented forums is just a part of who I am at this point.

                1. 2

                  Wow. Double unexpected. Thanks for the details. :)

            2. 7

              Four things:

              1. People will remember you for your big projects (whether successful or not) as well as tiny projects that scratch an itch. Make room for the tiny fixes that are bothering everyone; the resulting lift in mood will energize the whole team. I once had a very senior engineer tell me my entire business trip to Paris was worth it because I made a one-line git fix to a CI system that was bothering the team out there. A cron job I wrote in an afternoon at an internship ended up dwarfing my ‘real’ project in terms of usefulness to the company and won me extra contract work after the internship ended.

              2. Pay attention to the people who are effective at ‘leaving their work at work.’ The people best able to handle the persistent, creeping stress of knowledge work are the ones who transform as soon as the workday is done. It’s helpful to see this in person, especially seeing a deeply frustrated person stand up and cheerfully go “okay! That’ll have to wait for tomorrow.” Trust that your subconscious will take care of any lingering hard problems, and learn to be okay leaving a work in progress to enjoy yourself.

              3. Having a variety of backgrounds is extremely useful for an engineering team. I studied electrical engineering in college and the resulting knowledge of probability and signal processing helped me in environments where the rest of the team had a more traditional CS background. This applies to backgrounds in fields outside engineering as well: art, history, literature, etc will give you different perspectives and abilities that you can use to your advantage. I once saw a presentation about using art critique principles to guide your code reviews. Inspiration can come from anywhere; the more viewpoints you have in your toolbelt the better.

              4. Learn about the concept of the ‘asshole filter’ (safe for work). In a nutshell, if you give people who violate your boundaries special treatment (e.g. a coworker who texts you on your vacation to fix a noncritical problem gets their problem fixed) then you are training people to violate your boundaries. You need to make sure that people who do things ‘the right way’ (in this case, waiting for when you get back or finding someone else to fix it) get priority, so that over time people you train people to respect you and your boundaries.

              1. 3

                I once saw a presentation about using art critique principles to guide your code reviews. Inspiration can come from anywhere; the more viewpoints you have in your toolbelt the better.

                The methodology from that talk is here: http://codecrit.com/methodology.html

                I would change “If the code doesn’t work, we shouldn’t be reviewing it”. There is a place for code review of not-done work, of the form “this is the direction I’m starting to go in…what do you think”. This can save a lot of wasted effort.

              2. 3

                The biggest mistake I see junior (and senior) developers make is key mashing. Slow down, understand a problem, untangle the dependent systems, and don’t just guess at what the problem is. Read the code, understand it. Read the code of the underlying systems that you’re interacting with, and understand it. Only then, make an attempt at fixing the bug.

                Stabs in the dark are easy. They may even work around problems. But clean, correct, and easy to understand fixes require understanding.

                1. 3

                  Another thing that helps is the willingness to dig into something you’re obsessed with even if it is deemed not super important by everyone around you. eg. if you find a library / language / project you find fun and seem to get obsessed with, that’s great, keep going at it and don’t let the existential “should i be here” or other “is everyone around me doing this too / recommending this” questions slow you down. You’ll probably get on some interesting adventures.

                  1. 3

                    Never pass up a chance to be social with your team/other coworkers. Those relationships you build can benefit you as much as your work output.

                    (This doesn’t mean you compromise your values in any way, of course. But the social element is vitally important!)

                  1. 9

                    Never use “typedef struct foo FOO”

                    My C-fu is pretty weak, occasionally write it in hobby code, but I’ve seen it done in projects from Suckless and code from the Vis editor, which are my references for ‘good c code’. Why do they recommend against it?

                    1. 7

                      Linus spells out the Linux approach in these emails.

                      The short version is: don’t use a type abstraction where you don’t need one, nothing is wrong with typing ‘struct xxx’.

                      One of the emails in the link, on where typedefs are useful:

                       (a) totally opaque objects (where the typedef is actively used to _hide_
                           what the object is).
                      
                           Example: "pte_t" etc opaque objects that you can only access using
                           the proper accessor functions.
                      
                           NOTE! Opaqueness and "accessor functions" are not good in themselves.
                           The reason we have them for things like pte_t etc is that there
                           really is absolutely _zero_ portably accessible information there.
                      
                      1. 3

                        Thanks, makes sense. Kudos for Linus for emphasizing tend. I

                    1. 3

                      An excellent demonstration of the power of infinite “double” jumps.

                      1. 6

                        Link to GitHub repo for anyone else that blocks/ avoids twitter.

                        1. 4

                          historical pffff :-)

                          A great game. There’s a neat android port and “browserhack” to play on the web. For the uninitiated, I recommend reading a few spoilers (nethackwiki), but try not to go too deep!

                          1. 3

                            Games like this are more fun to me hand in hand with heaps of spoilers. Asymmetric information games are just frustrating to me. I want the death to be my fault, rather than just the element of surprise.

                            1. 2

                              I’m split on this. On the one hand, the really interesting part of strategy games tends to be at the efficiency frontier, that is, the difference between good and excellent, and much less so going from clueless to decent.

                              On the other hand, it is cool that the game can teach you about itself through your failures (where answering a question is just trying it in the game and seeing what happens), and that optimizing this learning process itself is part of the strategy [1].

                              In reality, I tend to learn a bunch from watching others play then enjoy the fine tuning process.

                              [1] roguelike games tend to force this kind of meta learning anyway, in systems like potion and scroll discovery being randomized each run, so you need to develop a way to learn, not just learn it once. Genre tends to be abused, but if there were going to be a useful definition of roguelike, it would be built around this meta learning.

                              1. 1

                                That’s why DCSS is so good :) No ridiculous secret information, just you and your tactics.

                            1. 7

                              The merits of minimalism aside, brutalism was a blight on architecture for decades, a cult of ugliness, and produced buildings which still ruin cities to this day. The examples of brutalism inspired web design in the article are highly aesthetic by comparison.

                              Also, I appreciated the Nine Inch Nails reference.

                              1. 4

                                This article was posted on lobste.rs a while ago and it really opened my eyes to the point you’ve stated about brutalism. Here was the discussion around it.

                                1. 4

                                  I dunno. I find brutalist architecture quite aesthetically pleasing.

                                  1. 5

                                    Brutalist buildings in good repair are treasures.

                                    1. 4

                                      By what measure? Taste/distaste for brutalist architecture is highly opinionated in my experience.

                                      1. 1

                                        By the measure of my subjective experience, of course :)

                                        1. 2

                                          At least you’re honest about it. :)

                                  1. 4

                                    Then things got really weird.

                                    If you thought it was unbelievable up to that point in the story, it’s almost unfathomable after this statement. It’s truly a bizarre and amazing tale.

                                    1. 2

                                      It sort of makes me sad though.

                                      They invested all that effort and intelligence to save a large corporate from it’s stupidity.

                                      It would have been kinder to all humanity if they didn’t reward such stupid.

                                      1. 6

                                        If the software being completed and shipped did good for people, then “it would have been kinder if they didn’t reward such stupidity” isn’t an obvious fact.

                                        Do you really think Apple not shipping this particular program would have hurt them in such a way that they would have learned how to be “not stupid” (in whatever way you’re meaning those words)? And would it have overcome the educational benefit of the software they created?

                                        1. 2

                                          Nah, I think you’re reading in some kind of loyalty to their ex-employer that I don’t see in this. They weren’t trying to save Apple from being stupid. They were just deeply devoted to building a thing that they loved, and saw an opportunity to hijack a distribution channel to make it available to the world at a scale not otherwise possible. The former is such a common story in software that it’s hardly worth telling on its own. The latter (and their amazing success at it) is what makes this such a great tale.

                                          Remember, all this is taking place in the early nineties. Open source as we know it wasn’t a thing yet. If the local corporate bureaucracy had been more effective at kicking them out, they probably could have finished the product and distributed it as shareware… but it couldn’t have had a tiny fraction of the user base that bundling with system software gave them. Personally, as one of those users, I’m grateful for their courage. Graphing Calculator beat the hell out of a TI-84, which was my other visible option as a starving student.

                                          1. 1

                                            No, I didn’t read as loyalty to employer, but rather clueless employer, in the long run, benefiting hugely from efforts and intelligence they actively didn’t deserve, thus reinforcing bad behaviour.

                                            Remember, all this is taking place in the early nineties. Open source as we know it wasn’t a thing yet.

                                            According my memory, you are wrong. Very wrong.

                                            Hmm. Let’s see if it is just my memory…

                                            https://www.gnu.org/gnu/gnu-history.html

                                            But my comments are not only coming from the Open Source perspective, but rather from the world is not just one man one vote.

                                            We get the world we vote for, and pay for, and work for.

                                            Often we only pause to think about what sort of world we are voting for, when the most important choice is about what sort of world we are working for.

                                            Edit to add: If they had climb aboard the Open Source train at the time, it would have picked up steam sooner, and had less resistance from the corporate world.

                                            In a kind of silly contest… Gee, I wish I was so starving as to be able to afford an Apple in those days. Those things were Expensive. All I could afford was a Taiwanese PC 286 clone. Open source was life to me in those days. ;-)

                                            1. 1

                                              I guess that’s what I get for saying “we”. If you were using GNU/Linux for personal use in the early nineties, good for you… but surely you must admit that you were ahead of the curve. Anyway, porting their half-finished PowerPC code to a hobbyist PC version of a mainframe OS, one without even a GUI (X was first ported to linux in ’92) would have made zero sense at the time. I would be very surprised if they even considered it.

                                              I completely agree about how important it is to work in accordance with your values. But, I think that’s what the protagonists in this story were doing! I don’t understand what you see as “bad behaviour”. I see it as dedicated self-sacrifice and hackerly subversion deployed to finish a project despite (and amidst!) dysfunctional management. But there’s definitely a Cult of Mac aspect to it too, and maybe that’s what you object to?

                                              And silly-contest move: I was using the school’s Macs, of course. Like most of their intended user base, no doubt. Never could have afforded one of those machines myself, but sure was happy to have them available!

                                              1. 3

                                                There was free software for ms-dos, and graphing programs for ms-dos in those days.

                                                The early gui’s were very underwhelming in terms of functionality added for resources and effort consumed. I literally cried when I saw the first “Hello World” programs for gui’s. They were an immense leap backwards.

                                                I think the engineers were great, following their passion. But I think the corporate culture was indulging in a lot of bad behaviour.

                                                Unfortunately the engineers efforts rewarded the corporate stupidity, enabling the corporate culture to flourish and inflict more stupidity on the planet.

                                                ie. Their efforts got schools spending money on very very closed platforms like macs instead of the more open (and more powerful and cheaper) platforms available at the time. Thus slowing the development of open platforms.

                                      1. 4

                                        I really thought the article was going to go for the opposite line of argumentation, since it is usually developers who want to simplify (I guess “Web Developers” are different in this respect?), and they’re not the ones who have to be told to do so.

                                        1. 5

                                          Yeah, though I praised the article it does omit the minor detail that web developers are hardly working alone. It’s not as though we are solely responsible for the design and functionality of these large websites. Deadlines, budgets, and project managers are real.

                                          1. 2

                                            This is speculation because I haven’t tried both methods, but wouldn’t the development approach she suggests be way cheaper and quicker than making a single page JavaScript application where you’re reinventing basic browser navigation and form functionality from scratch? Now the problem of managers wanting to do the newest coolest thing and forcing the team to make a single page app is another conversation (though the article certainly provides arguments that you could make to a manager in such a situation).

                                            1. 2

                                              I don’t think most developers using the new technologies like React are re-inventing the wheel - they’re using packages where the wheel re-invention has been already done by someone else. I think that’s a lot of what draws people to React - there are well-tested animation libraries, routing libraries, state management libraries etc all there ready to use, and because React is component-based they typically play fairly well with each other, in my experience.

                                              That’s React, though, I can’t speak to Angular, Vue, Ember etc… and I wouldn’t really advocate the React ecosystem (ie w/ Redux or MobX, react-router etc…) for basic informational or limited-interactivity websites [0], because it does take some up-front effort to understand and integrate those libraries, and sometimes they’re just a React-ified layer on top of some browser-native functionality that you could probably just use directly, and which might be accessible to more people.

                                              In general I think it’s significantly more work to build a website that’s fully functional on devices without Javascript, while also delivering an excellent modern experience for the majority with JS, and that’s fully accessible in both cases. I think that’s probably why we don’t do it.

                                              Edit: To directly address your question - delivering a complex application entirely based on server-side rendering for everyone is probably a non-starter, as has been for a while. The responsiveness is just not there, and the app architecture becomes potentially much more complex, because you can’t make a request from the website for just the piece of data you need. You also need to put your state management on the server, which means modeling it outside of its domain. For complex applications this is just a lot of work, and is probably the reason we don’t tend to do it this way any more.

                                              This is where I find people do conflate things a little bit, too. React was developed by Facebook, to solve Facebook’s problems - surely one of the worlds most complex web applications (which is nonetheless accessible to virtually everyone). There are a lot of people working on web applications of lesser, but still significant, complexity, who really benefit from the React ecosystem. But if you’re build (say) the BBC News page which almost no state, and limited interactivity, you really don’t need it. But that’s not who it was made for, either, so I think it’s unfair to criticise React itself and call it a bad piece of technology, which a lot of people seem to enjoy doing.

                                              [0] I might advocate Gatsby though, as a way to give the developer the React development experience and the user a very fast, very compliant experience.

                                        1. 2

                                          On the WaveFunctionCollapse page sgreben links, this paper is referenced which formalizes WFC (and the OP) as a constraint satisfaction problem (more rigorously than in the linked article as well).

                                          Cool find Yogthos and sgreben, thanks for sharing.

                                          1. 2

                                            Would you consider breaking the podcasts down into categories, or expanding on what areas, topics, and expertise each offers? Otherwise it’s just a big list of sometimes descriptive names.

                                            Edit: which I would contribute to, but I don’t listen to tech podcasts at this point, so at best I could just copy/paste whatever their website says. If you’re a long time listener, your summary is much more valuable, and really the core value here in my approximatarion.

                                            1. 3

                                              This is a good idea. Developer Tea (the podcast I host) isn’t for everyone. Many developers don’t like it because it leans more towards talking about peopleware over software.

                                              1. 1

                                                I think this makes sense, I would add some description and categorization to the podcasts I know about. Need help from community on the others.Please feel free to raise a PR

                                              1. 11

                                                This problem is largely solved by “Jump To” in an IDE (or fancy editor). This sort of thing is why I no longer do real work in languages without these niceties. I just don’t have the patience for it any more.

                                                1. 5

                                                  Code reviews and online examples can suffer though - I have a very hard time reading unfamiliar Haskell and Agda code on Github where definitions aren’t either explicitly imported in an import list or given a qualified name. But perhaps that’s an argument for better online tooling…

                                                  1. 2

                                                    That’s a good point, although I agree that better tooling is probably the answer, particularly since fully-qualified imports still mean you’re stuck tracking down docs and such in code review with most of the existing tools.

                                                    1. 1

                                                      I have to admit, I fully agree with brendan here. Fully qualified imports really do increase readability to any new, or even old code.

                                                      I don’t think better tooling is the best approach, I find explicit versus implicit generally explicit ends up being clearer.

                                                      A possible middle ground is allow ONE unqualified import only as (if i remember right, only skimmed docs) purescript does. That would at least remove ambiguity as to where something could be coming from.

                                                    2. 1

                                                      Haskell’s Haddock supports hyperlinked source and so does Agda.

                                                    3. 4

                                                      you don’t even need that much; I find vim’s split-window feature is perfectly usable if I want to read the code where something is defined, or look at both the current code and the top of a file simultaneously. whereas on the flip side I know if no good way to eliminate the visual clutter caused by fully qualified names everywhere.

                                                      1. 4

                                                        You also can generate ctags and use them in vim ;)

                                                        1. 1

                                                          true :) I used to do that more often in my c++ days; somehow I lost the habit now that I’m doing python at work and ocaml at home, even though ctags would probably help with both of those.

                                                        2. 3

                                                          this doesn’t solve the “import all names” problem that you hit in languages like Python where some people do import * or you are importing something that was already re-exported from another location. You end up with busy work that an IDE could handle with a name lookup

                                                          Though I agree that once you find the definition, split windows is a pretty nice way to operate

                                                          1. 1

                                                            I too find the result to be cluttered. But I also find new programming languages/syntaxes to be strange and chaotic in the same way. Once I use the language long enough, I am no longer overwhelmed. My hypothesis is that the eye will adapt to fully qualified names everywhere in the same way.

                                                          2. 1

                                                            I came here to say just this: with a sufficiently smart editor (vim, ide, or otherwise) this problem goes away almost entirely.

                                                            That said, I think there are some arguments to be made for always-qualified imports

                                                            1. 6

                                                              I think it can be a cultural thing as well. I never enjoy typing datetime.datetime but don’t mind collections.namedtuple. itertools.ifilter is annoying though. Redundant words or information looks and reads bad.

                                                              When the culture is to assume qualified imports, then the library will always be used to provide context, and that can be quite nice.

                                                              When resolving a qualified name is the same syntax as a method call, that can look bad quickly. Python very much suffers from this problem. Think of Clojure stylebanespace syntax as an alternative.

                                                            2. 1

                                                              Does “Jump To” actually jump you to the import declaration or the function definition? I’ve never used an IDE. My guess is that an IDE would largely eliminate manual identification of the function’s origin. So that’s useful! But I’m not convinced that this would be faster than reading the module name inline in plain text. No keystroke or mouse click required to get the information. I guess the argument for using an IDE to solve this problem is something like the IDE places the information close at hand while also enabling a less verbose code style. That’s a reasonable argument. At some point the conversation becomes purely a debate about the pros and cons of IDEs. Then I would say that it’s nice to have code that doesn’t incur a dependency on a code editor.

                                                              1. 2

                                                                You can jump to the declaration in most IDEs (provided there is support for the language). In many you can also view the documentation for a symbol inline, no need to go searching in most cases. I agree with you that this really just changes the debate to one about tooling. However, since many people (myself included) prefer the readability of unqualified imports, tooling support is important to at least think about. For example, I work in Dart a lot at work, the Dart community tends toward unqualified imports because, at least in part, I think, pretty much everyone who writes Dart code uses either an IDE or an editor plugin with IDE-like features.

                                                            1. 5

                                                              I like several bits of this and dislike several other bits, but one thing that stands out to me is the seemingly continual refusal to place responsibility on the people consuming and using tech:

                                                              When software encourages us to take photos that are square instead of rectangular, or to put an always-on microphone in our living rooms, or to be reachable by our bosses at any moment, it changes our behaviors, and it changes our lives.

                                                              Users volunteer for this. Most of the people taken advantage of by tech do so by sleepwalking, like lemmings, into the grim meathook future some of us create to monetize them. Nobody holds a gun to their head and says “Put Amazon Echo in your house or you get shot by the Bezostruppen.” Nobody says “Hey you should totally enter a multiyear contract for this smartphone that will bleed you dry and spy on you instead of using a cheapo burnerphone or else we will put you in jail.” There is no national law that says “Cititzen, you must participate in the two-minutes hate on Twitter or else your voting privileges will be revoked.”

                                                              There is no end of the trouble we get into if we ignore the actions, the real actions, that got us here.

                                                              1. 11

                                                                Interestingly, lemmings don’t actually walk to their death as their environment typically only contains lakes they can swim across. Put them in front of an ocean though…

                                                                Which is actually the perfect metaphor. Put people into environments they are unfamiliar with, maladapated to, and unable to even ask the right questions and it isn’t all that surprising that they won’t ultimately act in their interests.

                                                                But I guess we can blame the people who software hurts for being hurt by that software, which they couldn’t hope to understand without deep study.

                                                                1. 4

                                                                  When there is minimal consumer choice, it’s hard to blame consumers for making the wrong choice. Robust consumer choice would be something close to feature-by-feature optionality: smartphones without spy powers, or only with photo spy powers, for example. In point of fact, even a smartphone with a hardware keyboard is a non-option nowadays.

                                                                  This is in due in no small part to the limits and strengths of mass manufacturing: if everyone buys the smartphone that’s good for 51% of the people, we all enjoy a better phone for less money – but that puts the power of feature selection out of consumers’ hands. They get the phone that the designers designed: take it or leave it.

                                                                  The responsibility – moral and otherwise – for those features rests squarely with those who made the phone, not those who bought it.

                                                                  1. 4

                                                                    Nobody says “Hey you should totally enter a multiyear contract for this smartphone that will bleed you dry and spy on you instead of using a cheapo burnerphone or else we will put you in jail.”

                                                                    No, sure. But (to take just this example) the contract and the undeniable benefits of the smartphone, obviously without any reference to any potential downsides, are what’s advertised, sold, heavily pushed, to the extent that many won’t even realise there’s an alternative - and when availability of the features and capabilities provided are normalised to the extent that getting by without them involves significant extra effort, then in the majority sections of world outside of “people who understand, and can either afford or have to spend significant parts of their time understanding, technology”, that’s effectively all that exists.

                                                                    1. 1

                                                                      Exactly. Ill add this is true even when the constraints between two solutions are similar enough that the safer/quality/free-er one requires no sacrifice or less. Getting people to switch from texts to IM… important since texts were a downgrade from IM (esp with delays)… was hard despite equivalent usability, better thing being free, better thing having more features (optional though), some being private, and so on.

                                                                      An uphill battle even when supplier went above and beyond expectations making a better product for them. Usually laziness or apathy was reason when other factors were eliminated.

                                                                    1. 8

                                                                      Sort of an aside discussion, but the author’s choice to distribute the code as a Docker image: is that becoming a thing now?

                                                                      I’m notorious among my peers for installing and trying everything under the sun, and usually having to blow out and reinstall my computer about once a year (usually coinciding with Apple’s release of an updated MacOS). Maybe I’m late to the party, but Docker images are a much cleaner way of distributing projects in a working environment, are they not?

                                                                      1. 13

                                                                        This feels like the kind of thing I’d be grumpy about if I were any older; software distribution is one of our oldest and therefore most-studied problems. Java tried to solve it with a universal runtime. Package managers try to solve it with an army of maintainers who manage dependencies. Giving up on all that and bundling the entirety of latex and all its dependencies (one of the intermediate images is 3 point 23 fucking gigs!) just to distribute a 279 line style file and make it easier to use feels… kind of excessive?

                                                                        That said, I’m not old and grumpy and this is awesome. I kind of hope that this becomes a thing, it’s easy to install and easy to remove (and know that you’ve left no traces on your system) and this image will presumably be usable for a very long time.

                                                                        EDIT: I wrote the above comment while I was waiting for the image to finish downloading. It’s now finished and the final image takes up 5.63GB of my disk space. I don’t mind for this one-off package but would certainly mind if this method of distribution started catching on. Maybe we should just all use nix?

                                                                        1. 3

                                                                          I wrote the above comment while I was waiting for the image to finish downloading. It’s now finished and the final image takes up 5.63GB of my disk space. I don’t mind for this one-off package but would certainly mind if this method of distribution started catching on. Maybe we should just all use nix?

                                                                          Docker has some mechanisms for sharing significant parts of those images… at least if they’re created from the same base. The problem obviously is that people are free to do whatever, so that sharing is far from optimal.

                                                                          1. 1

                                                                            Agreed, I assumed this was going to be something like a 200 python script with maybe 2 or 3 dependencies.

                                                                          2. 4

                                                                            A docker image is the new curl|sh install method.

                                                                            Basically ignore any concerns about security, updates, ‘I want this shit now Ma.’

                                                                            1. 4

                                                                              A random docker image is less likely to fuck up your home dir, though.

                                                                              1. 2

                                                                                I’ve spent a lot more time working with the shell than Docker. I find this Docker image a lot easier to understand and verify than various things I’ve been told to curl | sh.

                                                                                1. 1

                                                                                  Couldn’t you just download and verify a script with curl -o filename.sh http://domain.name/filename.sh? How does a random Docker image end up being easier to verify? With a script you can just read through it, and verify what it does. With a Docker image you basically have to trust an image from 2014 of an entire operating system.

                                                                                  This honestly looks like one of the worst candidates for a Docker image. You have a tiny plaintext file which is all this is installing, and you are being told to download a multi gigabyte blob. I can understand why some people recommend using Docker for development, and running things and places you might not have control of the entire system, it here just seems unnecessary here.

                                                                                  1. 1

                                                                                    I don’t see how it’s installing just a style. It’s installing TeX, which is a big hairy package.

                                                                                    When I pull down the install for rustup, I end up with a 360 line shell script, which isn’t super easy to verify. For haskell’s stack, it’s 720. I swear I’ve seen 1500 before.

                                                                                2. 1

                                                                                  Agree re security (you could get hacked) but at least it won’t accidentally wipe your hard drive while trying to uninstall (as has happened a few timed I’m aware of).

                                                                                3. 3

                                                                                  In this case especially, as the instructions to install and configure are pretty painful:

                                                                                  https://github.com/Jubobs/gitdags

                                                                                  Oh, there are none. But there is this:

                                                                                  http://chrisfreeman.github.io/gitdags_install.html

                                                                                  As an aside, the Docker image has a couple of features I’m quite proud of (in a small way).

                                                                                  1. The default command of the container outputs help text.

                                                                                  2. If the convert_images.sh script spots a Makefile, it runs it, eg:

                                                                                  https://github.com/ianmiell/gitdags/blob/master/examples/Makefile

                                                                                  which reduces build time significantly if you have a lot of images.

                                                                                  1. 4

                                                                                    Just scrolling through that second link gives me anxiety; oh my god this is going to go wrong in fifty different ways. Getting it all together in a configured package (docker image) was pretty smart.

                                                                                    1. 3

                                                                                      I don’t know… Looking at the second link, the install instructions are actually fairly simple if you have TeX and the dependencies installed. Even if you don’t, like it’s just a LaTeX distribution, the tikz package, and the xcolor-solarized package.

                                                                                      In which case the instructions are only:

                                                                                      $ cd ${LATEX_ROOT}/texmf/tex/latex && git clone https://github.com/Jubobs/gitdags.git
                                                                                      $ kpsewhich gitdags.sty   # Check to see if gitdags.sty can be seen by TeX
                                                                                      

                                                                                      I feel like an entire Docker container is a little overkill. Might be an OK way to try the software, especially if you don’t have a TeX distribution installed, but it wouldn’t be a good way to actually use it.

                                                                                      1. 1

                                                                                        From the link:

                                                                                        ‘First, do NOT use apt-get to install. The best is to install TexLive from the Tex Users Groug (TUG).’

                                                                                        1. 1

                                                                                          Yeah like I said, the instructions are fairly simple if you have a TeX distribution Installed. If that version does happened to be from a distribution, I’m sure it works anyways - he did say the best way.

                                                                                          If you don’t happen to have TeX installed, it’s not that complicated to install it from manually from TUG anyways.

                                                                                        2. 1

                                                                                          Looking at the second link, the install instructions are actually fairly simple if you have TeX and the dependencies installed

                                                                                          Yeah, I already have TeX on my system, so I don’t really see what the problem is.

                                                                                        3. 1

                                                                                          The default command of the container outputs help text.

                                                                                          I haven’t seen that before; for a “packaging” container (rather than an “app deployment” container) it’s a nice touch I’ll be copying, thanks :-)

                                                                                        4. 2

                                                                                          I’ve used this very package with nix on OS X, I think a docker image is… a bit over the top personally. It wasn’t that bad to install and setup compared to any other latex package.

                                                                                        1. 22

                                                                                          The tl;dr for those unfamiliar with the situation:

                                                                                          • In Elm, there is no FFI. Instead, you can communicate with Javascript through the use of a pub/sub system similar to making requests to an external server, known as ports.
                                                                                          • The user in question was using an intentionally undocumented underyling system to write JS code that isn’t type-checked
                                                                                          • In the next release of 0.19, the way this system works is changed, and restricted further. This leads user to be concerned about their continued use of Elm
                                                                                          1. 3

                                                                                            Mayve it’s just not clear to me, but is there an actual problem here, or just “I can’t do it exactly how I want to so I’m going to stomp my feet and threaten to leave”?

                                                                                            Does the OP want something that would circumvent all of the static benefits of using Elm? Is the message passing system inadequate?

                                                                                            1. 14

                                                                                              is there an actual problem here

                                                                                              I believe the actual problem is a communication problem: the user has read some bit and pieces, and started to be concerned about the way they are currently using Elm might not work going forward. That’s a very legitimate concern to have! However, based on what they said, their problem is actually completely solvable right now in Elm without the method they used to bypass Elm’s safety, via ports. Also, the undocumented API they used (“Native” code) led to this situation.

                                                                                              Does the OP want something that would circumvent all of the static benefits of using Elm?

                                                                                              My understanding is yes, that’s what they want: but in standard XY problem fashion, the real concern they have is becoming blocked by upstream bug fixes not being merged as often as they’d like. This is something we’re actively looking into improving in Elm going forward.

                                                                                              Is the message passing system inadequate?

                                                                                              There are some aspects of it which are inadequate, for sure. Ports require that all the code that use them be async in both Elm and JS. This can be a problem if you need sync code in your view function, for example. However, that’s entirely possible to work around.

                                                                                              1. 10

                                                                                                Last I checked the creator of Elm literally did not allow any libraries to be published to the central repository without his personal approval if they used the JS interop system.

                                                                                                1. 5

                                                                                                  While technically true, this doesn’t really paint the whole picture.

                                                                                                  You can publish any Elm part of a package that uses ports. What you can’t do is publish the ports exposed themselves. There’s a good reason for that: to avoid name collisions on ports. So, what you do is:

                                                                                                  • Publish the Elm parts as a package.
                                                                                                  • Publish the JS parts as a package.
                                                                                                  • Instruct on how to connect the two.

                                                                                                  It’s straight-forward to do things in this manner.

                                                                                                  1. 3

                                                                                                    Thanks for the context. While I still think it’s problematic from a social perspective to have a benevolent dictator who acts as a personal gatekeeper for what is and isn’t allowed to be published, from a technical perspective it doesn’t seem so bad.

                                                                                                2. 6

                                                                                                  The message passing system is absolutely inadequate for some things (e.g., for replacing Math library functions, or for, as in this case, replacing the native websocket module). These can not be implemented async, and therefore not with ports.

                                                                                                  See this quote from the author:

                                                                                                  We also have some synchronous functions JS functions that we need to call that we will not rewrite in Elm. Sorry but we can’t upgrade to the official 0.19.

                                                                                                  For these things, you need to use JS to do it yourself, and in the latest version, there’s a whitelist restricting which people can create such JS modules. This whitelist is restricted to the elm team.

                                                                                                  As result, people are considering forking the compiler, or moving away entirely.

                                                                                                  1. 3

                                                                                                    , replacing the native websocket module

                                                                                                    This is not accurate: ports are perfect for replacing the websocket module. The reason why the original poster mentioned websockets is because they wanted to patch the library themselves. However, using ports instead would’ve worked just fine. That’s how the existing library is modelled, after all.

                                                                                                  2. 5

                                                                                                    Here is the exact reason the user expressed as to why they’ll have to use a fork of either Elm or rewrite the extension they rely on:

                                                                                                    Our production application relies on a fork of elm-lang/websocket which has some features and bugfixes that haven’t been merged into core yet for almost two years (https://github.com/elm-lang/websocket/pull/12, https://github.com/elm-lang/websocket/pull/18, https://github.com/elm-lang/websocket/pull/19).

                                                                                                    If what I’ve read is correct, we won’t be able to switch to Elm 0.19 until Evan decides to merge those changes, which might take years judging from the fact that there has been no official reply to any PRs of that package that have been open since 2 years (https://github.com/elm-lang/websocket/pull/12).

                                                                                                    It’s basically out of their hands as a user who didn’t create and doesn’t maintain the extension that their production app came to rely on so they’re already using a fork. That situation was not ideal but they had an easy path forward with the fork. They are now worried that that easy path forward has come to a dead end because the original package doesn’t seem to be maintained well enough for them to think that this will be remedied soon and they will have to do a lot of work, one way or another, to upgrade Elm ≥ 0.19. It might be an amount of work that their team will just port the app to something else entirely.

                                                                                                    1. 3

                                                                                                      There are libraries like elm-websockets the OP had to fork and use their forked version because their bug fix PRs have not been merged in 2 years. So the issue of not having releases for years (instead working on the next major release only it seems) and now planning to even disallow this work around for the lack of releases.

                                                                                                  1. 8

                                                                                                    Is anyone aware of the kind of “slow and subtle” niches the author hopes for? Any slow and simple and modern design philosophies, techniques, tutorials, communities, etc?

                                                                                                    1. 16

                                                                                                      I’ve been doing simple web development on the side off and on. I’ve heard of the handmade network. I also like the how the Go community tends to build things, from an operational standpoint. You have the big things, like Docker, Kubernetes, and Mattermost which are big corporate things, but then you have smaller things, like linx, Hugo, or the various things built on boltdb.

                                                                                                      I’d start by removing “modern” as a hard requirement and look at how older, stable tech works.

                                                                                                      Any community where web development has mostly been in one place over the last 7 years probably has a lot of the basics covered already, and isn’t likely to be piling on the complexity in droves. My experiments in doing websites in Erlang (as opposed to Elixir) suggest that is one place where things seem to move slower. I suspect the Python web development is similar.

                                                                                                      Learn some old, mature tools, like make, bash, python, awk, graphviz or TCL/tk, and use them when you have task that fits them

                                                                                                      Build websites with as little JS as possible, just to see how far you can take forms and pages. Take time to evaluate how it works out over time, how the maintenance holds up, and so on.

                                                                                                      You might see what sorts of things the modern stacks are trying to compensate for, or realize that there is an easier way to solve a certain set of problems. Mining the past for ideas allows you too get a notion of the fundamental vs incidental complexity

                                                                                                      1. 5

                                                                                                        I’d start by removing “modern” as a hard requirement and look at how older, stable tech works.

                                                                                                        “Modern” means having options anyway.

                                                                                                        Back in the Old Days, large computers were the only option. They were great for large institutions with large problems or, at least, large endowments to effectively allow young programmers to build games on them, but if you wanted a small computer for something like process control or home office work or similar, you didn’t have that option. Vacuum tubes, and then discrete transistors, only got so small.

                                                                                                        ICs allowed us to make small computers, but they also allowed us to make big computers more efficient, because some problems require big computers, large amounts of compute concentrated in one location to grind away at a task, or large amounts of RAM or storage to handle huge amounts of data, or both.

                                                                                                        Similarly with graphics: We’ve gone from having command lines as the only option to having command lines coexisting with GUIs, each allowing the other to do what it does.

                                                                                                        Do some older practices get replaced? Yes, particularly in hardware. Nobody but a hobbyist would build a computer out of vacuum tubes these days. Cardstock is no longer a valid input mechanism. CRTs are no longer RAM. But progress is more about having options.

                                                                                                        1. 8

                                                                                                          To be fair, I’m not against using modern tech, just that if you want something simpler, sometimes older stuff is where it’s at. Not always, of course, but by comparing the old against the new, one can find where real progress has been made, and where something might just be the fad of the year.

                                                                                                          React, for example, seems to be acknowledged as a real improvement in the state of SPA in JS. It is certainly unlike most things that came before it on the JS side of things, though it seems kinda similar to IMGUI, and some people have drawn similarities to old Win32 code.

                                                                                                          1. 2

                                                                                                            Thanks, I’ll check these out.

                                                                                                          2. 3

                                                                                                            I’ve heard of the handmade network.

                                                                                                            What does “handmade” mean? I read their manifesto, but I have no idea what criteria would be used to define which software falls under their umbrella. Is metafont handmade? Linux? The front page of Google? What about wordpress the software (and not the innumerable wordpress blogs)? All of these were created by a large amount of human effort over years of development. What would disqualify one of the other?

                                                                                                            1. 2

                                                                                                              The way I’ve understood is as a loose analogue for “artisnal”. Projects that can be created by a small team, rather than massive one. But I don’t speak for the group, so YMMV.

                                                                                                        1. -4

                                                                                                          Some aphorisms apply:

                                                                                                          1. It’s a poor craftsman that blames his tools.
                                                                                                          2. Be the change that you wish to see in the world.
                                                                                                          1. 20

                                                                                                            Fair warning, this is a rant.

                                                                                                            It’s a poor craftsman that blames his tools.

                                                                                                            This aphorism is the reason I quit HN all those years ago. It is absolute trash. A much improved version is “A craftsman takes responsibility for the tools they use.” This is still irrelevant to the article that was posted, but it has a chance of being useful in some discussion happening somewhere, probably (but if I were to bet on it, I wouldn’t).

                                                                                                            What if you’re being forced to use bad tools? What if your tools are actively sabotaging your ability to work? What if your tools really are the biggest source of pain and distraction? What if not using the tool will be held against you? What if not using the tool will get you fired? What if the tool genuinely does the opposite of what it claims to do?

                                                                                                            What if you’re sitting down to really think about the impact your tools have on your work, and seeing one of them come up severely short? Is that blaming [their] tools? Or should we all just put up with whatever we’re handed, because it is always on us as craftspeople to take on the full burden of bad tools—even when there is no good reason—and just slog through it as our lives unhappily waste away?

                                                                                                            I wish people would be more honest with this whole “a poor craftsperson” thing and just say “I think you’re bad and that it’s your fault,” or even “quit your bitching”. It’s still a lowest tier comment, but at least it’s direct.

                                                                                                            And yes, I’m going to continue to use gender neutral words because I want to…

                                                                                                            Be the change that you wish to see in the world.

                                                                                                            Yeah, that’s why he’s writing about it.

                                                                                                            Some aphorisms apply

                                                                                                            These ones don’t, but it’s easy to miss that when you don’t attempt to justify the application of those aphorisms.

                                                                                                            The article is a) an analysis of the ways slack can decrease organizational productivity, even circumventing individual countermeasures, and b) a call to action to change the culture that embraces slack.

                                                                                                            Neither of your aphorisms meaningfully interact with the two (clearly expressed) core ideas of the article, in any way.

                                                                                                            1. 2

                                                                                                              Thank you for this. You’re spot-on.

                                                                                                              The craftsman metaphor is terrible, when applied to programming. It says “his tools”. In the workplace, you don’t use your tools; you’re forced to use their tools.

                                                                                                              Slack (as often used) is terrible, and Jira is worse. These have become tools of managerial surveillance; they are tooled used against, not by, workers.

                                                                                                              1. -2

                                                                                                                Maybe a poor craftsman blames his manager.

                                                                                                              2. 0

                                                                                                                I used the first aphorism correctly, and I am also aware that a lot of people are triggered by it.*

                                                                                                                If the tools suck don’t use them. If they’re valuable but flawed be constructive? It doesn’t have the same ring to it. Slack has a place, what’s the alternative? IRC? A directory with everyone’s phone numbers in it? There’s no ‘turn off notifications’ button for your manager taps you on the shoulder twice an hour.

                                                                                                                The article didn’t read as a call to action to me as much as a long poorly formatted ramble by someone who was having a adverse reaction to their current work environment.

                                                                                                                It’s a flawed workplace culture… Are they blaming someone else’s tools? Is that better?

                                                                                                                Which gets into the second aphorism. I think the author should talk to his manager/coworkers or quit instead of writing passive aggressive blog posts.

                                                                                                                If I’m really going to lengths to make myself absolutely clear. By talk I don’t mean go on crusade against the tools, they fail to present any alternatives in the post! (Besides use email for everything, maybe they’re too young to remember how difficult that was.)

                                                                                                                *Maybe I was hoping to get a rise out of someone. Plato was fond of the Dialectic, maybe I am too.

                                                                                                                1. 1

                                                                                                                  If the tools suck don’t use them.

                                                                                                                  You really seem to have not read the post you’re replying to:

                                                                                                                  What if you’re being forced to use bad tools? What if your tools are actively sabotaging your ability to work? What if your tools really are the biggest source of pain and distraction? What if not using the tool will be held against you? What if not using the tool will get you fired? What if the tool genuinely does the opposite of what it claims to do?

                                                                                                                  That addresses your ~first aphorism~ really quite neatly. They’re blaming someone else’s tools, sure, because they’re to blame. Rejecting reality because you have a pithy quote that suggests you should is not productive.

                                                                                                                  I think the author should talk to his manager/coworkers or quit instead of writing passive aggressive blog posts.

                                                                                                                  Who’s to say they’re not doing that too? Writing a post like this has value as well; it lets a wider community reflect on it, submit comments (there have been some useful ones here, this thread notwithstanding), and possibly come up with some mitigations or thoughts on how future tools could do better. This is not a new concept.

                                                                                                                  “Be the change you want to see in the world” is great when you’re all-powerful, but that’s almost never the case in real life.

                                                                                                                  and I am also aware that a lot of people are triggered by it.*

                                                                                                                  christ man, get back to HN

                                                                                                                  1. 1

                                                                                                                    I have never been on HN… That’s a personal attack, it’s toxic, you shouldn’t do it, I shouldn’t get into the mud with you by responding.

                                                                                                                    Nobody is being forced to do anything here. A good crafts-laborer would realize this. It’s an apt aphorism. It’s not a dangerous idea to suggest that a worker can determine the conditions under which he works…

                                                                                                                    Just because I used an aphorism and that’s something that trolls do doesn’t mean I’m a troll. I didn’t expect to get any upvotes for an unpopular opinion voiced in an unpopular way, but I also didn’t expect so much hostility!

                                                                                                                    1. 5

                                                                                                                      I am honestly interested in the mechanism by which a craftsperson could determine the conditions under which they work, assuming a standard capitalist employee-employer relationship.

                                                                                                                      If we all tend to agree a person needs to work in order to make a living, I find this might be possible if you’re “your own boss”. Even then you probably have clients, and they tend to demand their own sets of tools and processes you need to adjust to. This isn’t only a matter of IT: my dad worked in a car repair shop, and they really didn’t have a choice with regards to the diagnostic hardware and software they could use, nor the hardware they used to do the actual repairs (it’s mostly proprietary, and dependent on the manufacturer).

                                                                                                                      Of course, you can always quit and find another job with better tooling; IT people today are severely privileged since jobs are abundant and we’re in very high demand. It’s certainly not unreasonable to expect this won’t be the case forever, and actually discussing problems with the tooling (and management, and processes, and …) seems like a good thing to do if you want to improve your working environment.

                                                                                                                      1. 1

                                                                                                                        My mechanisms are the same as yours. Employers by and large are people too. My grandfather was an auto mechanic too, and he had his side projects just like I do.

                                                                                                                        I think the only point we actually disagree on is whether this blog post is constructive.

                                                                                                                      2. 3

                                                                                                                        That’s a personal attack, it’s toxic, you shouldn’t do it, I shouldn’t get into the mud with you by responding.

                                                                                                                        Your flippant use of the word “triggered” is what’s toxic.

                                                                                                                        It’s not a dangerous idea to suggest that a worker can determine the conditions under which he works…

                                                                                                                        No, just dangerously wrong.

                                                                                                                        1. 0

                                                                                                                          Discussing triggers big and small is important. I can’t think of another way to put it, but being triggered by the use of the word triggered isn’t a mentally safe place to be.

                                                                                                              1. 3

                                                                                                                The full 1.0 PDF is linked on this page for free if that piques your interest.

                                                                                                                1. 5

                                                                                                                  After scanning the book and checking out a number of entries, I’m a little bit disappointed. The tagline is ‘Sharing the History of Computer Role-Playing Games’, and there is some of that, but all of the entries I read are essentially reviews. On the website, the list of entries is linked in the navbar as ‘Review Index’, so maybe I shouldn’t have been surprised.

                                                                                                                  If you’re looking for a summary of what the considered games offer in the tone and style of modern game reviews, you’ll like the book.

                                                                                                                  If you’re looking to understand the historical evolution of game design in this space, there isn’t as much present as you might hope for.

                                                                                                                  If you’re looking to understand the core design of historical games you probably haven’t played, this really isn’t where you’ll find that.

                                                                                                                  Edit:

                                                                                                                  It has been bugging me and finally clicked. The difference is between reviewing the content of the game and its deeper design.

                                                                                                                  A point like “There are many story and optional missions, all presented by great voice acting” (taken from the Dawn of War II review) only makes sense as a review of the content, which is ultimately about giving an up/down, play/pass opinion.

                                                                                                                  Here is a bit more, from the next paragraph:

                                                                                                                  Your units all gain experience as they battle, allowing you to customize their skills and equip them with the Diablo-like loot you find. This aspect of DoW2 is extremely satisfying – there’s a lot of freedom in how to build your squad so their abilities complement each other, and finding items such as Terminator armors and Power Swords will have any 40k fan grinning.

                                                                                                                  Notice how each of these points makes most sense answering the question “would you enjoy playing this game”. You gain XP and customization, there is loot progression, the 40k lore is good. Do you like those things? Then you’ll like this game.

                                                                                                                  The missions are called “rather repetitive” in the next paragraph, which is absolutely true, but the crucial why question at the heart of a design review is missing.

                                                                                                                  I played a lot of Dawn of War II, so allow me:

                                                                                                                  The core tension of each mission is “can you kill the things on the map”. All the objectives ultimately reduce to this question, and there are few meaningful degrees of success, so execution rarely matters. The enemies all present more or less the same challenges, both strategically of your choices and mechanically of your skill. Progression is through XP and gear, but it all shakes out numerically to be your stats vs the enemy’s, which are always stay close together.

                                                                                                                  The only real variable then is how badass your Spacemarines are. Coolness is the biggest factor is gear progression: for the mission everything has been building up to you finally get to equip a squad with terminator armor. For the next major milestone, you get storm hammers and storm shields for your assault squad. A power fist. A plasma cannon. A holy relic mounted on your commander’s back. Unlocking the breadth of the Blood Ravens codex is the driving force of the campaign, and using it to ensure victory in beautifully rendered battles in the core appeal.

                                                                                                                  1. 5

                                                                                                                    I think Matt Barton’s 5 part history of CRPGs from 2007 does what you were hoping this book would do. I don’t know if he wound up publishing it elsewhere, but the Gamasutra pages were crawled by the Wayback Machine. Here is part 1: http://web.archive.org/web/20070302065824/http://www.gamasutra.com/features/20070223a/barton_01.shtml

                                                                                                                    I was transfixed by this when it came out. I remember printing out the pages so that I could read them on the subway. (No, there was not a WAP version of Gamasutra!)

                                                                                                                    1. 3

                                                                                                                      Yeah, that’s a fair point. I wasn’t really expecting an integrated historical treatment, since the entries were written separately by different people, which isn’t a method that works for tracing development of features and design influences. But even as separately written, standlone per-game entries, it’s true that they’re written more for someone who wants review-style advice on which historical CRPGs they might find worth pulling up in an emulator, vs. design analysis like your example. I’ll still skim it, but yeah, I’d personally prefer writing more along the lines of what you were looking for.

                                                                                                                    2. 1

                                                                                                                      Some of the links in that PDF need to be updated, for example the one for Grid Cartographer takes you just to page telling you that it has moved to http://gridcartographer.com

                                                                                                                    1. -2

                                                                                                                      authors of popular databases who discuss their sexist ideas openly, neo-reactionaries leading functional programming conferences.

                                                                                                                      How dare people discuss controversial and offensive ideas openly? They should be forced underground so those ideas can fester without any external contradiction or moderation.

                                                                                                                      And of course people with weird, icky politics should be censored from purely technical events. Who knows what kind of whacky fascist programming paradigms they might force on us otherwise?

                                                                                                                      1. 29

                                                                                                                        This is an incredibly bad faith excerpt to take out of context. The author was discussing doubts they had about attending the Recurse Center, and:

                                                                                                                        A bigger part was the mission itself: “to get dramatically better at programming”. Did I even want to get better at programming?

                                                                                                                        A lot of bad things in the world have been created by programmers: software for operating drones that bomb civilians, data-mining that violates privacy, companies that “disrupt” by dropping vast amounts of capital in to a market without any intention of building a sustainable business. A lot of bad people love programming: open source thought leaders who harbor deeply racist views, authors of popular databases who discuss their sexist ideas openly, neo-reactionaries leading functional programming conferences. The norms of programmer culture still revolve around using needless complexity as a cloak of wizardry.

                                                                                                                        As @vyodaiken says, you’re demonstrating the toxic behavior the author is wary of.

                                                                                                                        1. 5

                                                                                                                          This is such a misguided fear (even though the author says it wasn’t realized in reality anyway) - lot’s of bad people love mathematics, science and music too, it’s no reason to question the value of those pursuits.

                                                                                                                          1. 13

                                                                                                                            That’s the nature of fear. I don’t know how to interpret your comment except as a criticism for the author talking about something she honestly felt, then talking more about it later when the fear wasn’t realized. How is this a problem?

                                                                                                                            Tons of people worry about the impact of their work and whether they are on a path that is ultimately doing more good than harm for the world. Is the author not allowed to worry about that too? Is she not allowed to talk about it?

                                                                                                                            I’m trying to give you the benefit of the doubt, but I don’t understand what else your comment could be saying.

                                                                                                                            1. 0

                                                                                                                              It is more about me being puzzled by the train of thought. I understand wondering if programming is worthwhile, but I don’t understand how the actions of others have any relevance at all.

                                                                                                                              edit: I guess you could make the case harm is an inevitable outcome of programming.

                                                                                                                            2. 4

                                                                                                                              A misguided fear? The Recourse Center has designed social rules to prevent behavior we know is endemic in technical (and business) forums. The author appreciated the results of those rules. But she’s “misguided” ! In what way? Is it your contention that there is not an endemic toxic culture in tech forums? Are all those women just making it up? Is Yarvin’s hobby of smirking racism something we are obligated to ignore? How do you get to decide the validity of what other people experience?

                                                                                                                              1. 2

                                                                                                                                Misguided that the actions of others has bearing on your own personal value that can be derived.

                                                                                                                                1. 2

                                                                                                                                  It has a bearing on whether I want to put up with it

                                                                                                                            3. 2

                                                                                                                              I wasn’t responding to that part of the article; I was responding to the part of the article I had an opinion on. What is your rule for when people are allowed to respond to things? Do they have to fully agree or disagree with the entire article first?

                                                                                                                            4. 17

                                                                                                                              And of course people with weird, icky politics should be censored from purely technical events. Who knows what kind of whacky fascist programming paradigms they might force on us otherwise?

                                                                                                                              How dare women suggest tech and especially programming is a potentially hostile environment one might not want to enter! Preposterous. It is just “locker room talk” for programmers! Either learn to deal with it or stay out of our tree house, you icky girl!

                                                                                                                              Why? Why would you focus on that sentence in a post full of great sentences about positive aspects of the Recurse Center?

                                                                                                                              1. 19

                                                                                                                                Reminds me of a quote from Lean Out

                                                                                                                                Women in tech are the canary in the coal mine. Normally when the canary in the coal mine starts dying you know the environment is toxic and you should get the hell out. Instead, the tech industry is looking at the canary, wondering why it can’t breathe, saying “Lean in, canary. Lean in!” When one canary dies they get a new one because getting more canaries is how you fix the lack of canaries, right? Except the problem is that there isn’t enough oxygen in the coal mine, not that there are too few canaries.

                                                                                                                                (from Sunny Allen’s essay What We Don’t Say)

                                                                                                                                1. 6

                                                                                                                                  Lot’s of people have a knee jerk reaction because a lot of this stuff sounds like “remove undesirables from society/jobs/conferences”, and puts the power of who is undesirable into the hands of some questionable people.

                                                                                                                                  It wasn’t the point of the post though, so i agree with you.

                                                                                                                                  1. 8

                                                                                                                                    Got another Lean Out quote for you cause they’re just so damn relevant. This one from Sexism in Tech by Katy Levinson.

                                                                                                                                    In the least three years, I was asked not to use the words “sexism” or “racism” when speaking on a diversity panel because it might make the audience uncomfortable.

                                                                                                                                    Which throws into especially stark relief wyager’s comment that sparked all of this discussion, since “both sides”[1] are equally worried about censorship. But one group actually gets to say racist, sexist, discriminatory stuff and remain in charge. The other can hardly speak on panels and post on their blogs without the whole world jumping down their throats.

                                                                                                                                    So yeah, the knee jerk reaction you mention rings a little shallow to me.

                                                                                                                                    [1] I know, “both sides” is highly misleading, but it captures the duality on display here.

                                                                                                                                    1. 5

                                                                                                                                      The other can hardly speak on panels and post on their blogs without the whole world jumping down their throats.

                                                                                                                                      You mean like how people tried to ban Moldbug (presumably who the OP was talking about) from LambdaConf?

                                                                                                                                      1. 4

                                                                                                                                        With something akin to backchanneling over weird views on a blog totally unrelated to his behavior in conferences, too. Another I cited previously was Opalgate where a guy that didn’t agree with trans people on Twitter got hit by a storm of folks in his project wanting him ejected. They didn’t contribute anything to it like he regularly did but did demand it adopt all their political positions after ejecting its main contributor. The venom was intense with much talk of things like burning bridges and them trying to set him up to look like he supported child molestors or something.

                                                                                                                                        And these are supposedly the oppressed people who have to worry about “the whole world jumping down on their throats.” The people who eject any folks who disagree with their beliefs from their own projects, conferences, and this thread. You and their other targets don’t look very powerful and oppressive from my vantage point. They were wielding more power in each of these circumstances.

                                                                                                                                        1. 5

                                                                                                                                          You want people who Yarvin declares are inferior to politely accept his views? Why should they?

                                                                                                                                          1. 6

                                                                                                                                            We separate things based on context. In conferences, he had caused no trouble at that point. The reports at the time said he just went to give talks and be helpful. On his blog or personal life, he says or does things I don’t agree with. More than many others but still same thing: many people disagreeing with many things. I’d rather have him at the conference because I don’t ban people I disagree with. If he misbehaves at conferences, then we deal with him.

                                                                                                                                            My opponents have a different view. They think everyone should believe/do certain things and not believe/do other things. They should be compatible with those in every forum. If they aren’t in even one place, they are to be shamed in or ejected from every place. He was just one example of that behavior. He was an easy target since his crazy views wouldn’t bring lots of sympathy. In the Opal example, the project had been welcoming and nice to everyone with the violation being a maintainer’s actions on Twitter. Nothing stopped people from participating in the project and no evils were done in it. The maintainer did violate a rule of their politics in one public forum, though. So, an entire group of them hit that project, ordered the ejection of that member, ordered total compliance with their beliefs, trolled the hell out of them, and of course offered nothing to the project in code or other support.

                                                                                                                                            I’d rather stop that kind of stuff. It’s just domination rather than anything moral or productive. We can either let a small group of people enforce their arbitrary views on everyone with no discussion or dissent allowed like they desire. Alternatively, we accept everyone under rules the various groups have a consensus on where good things we agree on are encouraged and bad things are prohibited. That maximizes the overall good and productive things we do. That’s my stance. It’s also what we usually do at Lobsters. It’s also what most successful companies and democratic governments do. What my opponents who eject people at conferences ask for is more akin to a dictatorship or theocracy since discussion/dissent is considered evil to be punished.

                                                                                                                                            1. 7

                                                                                                                                              I have somewhat similar thoughts as you, but here’s a thought experiment for you that might help put some things in perspective. Let’s say you are running a conference. You are invested in it and hope for it to succeed, and you have some or all power in determining who is invited to speak. After the CFP ends, you like Foobar’s talk and invite them. Sometime later, you post the list of speakers. To your surprise, a lot of people are upset about Foobar’s invitation because Foobar maintains a very controversial blog that makes a lot of people uncomfortable.

                                                                                                                                              You decide to stick to your guns. You definitely appreciate that Foobar expresses controversial views and understand that it makes a lot of other people uncomfortable, but you determine that since Foobar’s controversial views are not related to the conference topic, and therefore, they should still be allowed to speak. So you communicate this to all the would-be conference goers and other invited speakers.

                                                                                                                                              I think this is all pretty reasonable actually, although I do understand why some might object to this type of decision making on ethical grounds. But here’s the kicker. At this point, you hear back from N of the invited speakers and M of the people that would otherwise buy tickets. All of them feel strongly enough that they refuse to attend your conference.

                                                                                                                                              So here’s the question: how big does N and/or M need to be for you to retract your invite to Foobar? Are you so ethical as to allow the conference to fail? Or are you so pragmatic as to let it succeed? Perhaps a little of both?

                                                                                                                                              I think the point of this thought experiment is to demonstrate that morals/ethics aren’t necessarily the only thing at stake here. In particular, you could even be in violent agreement with Foobar but still rescind their invitation for practical reasons alone because you want the conference to succeed. I personally don’t have a strong answer to my thought experiment either, so this isn’t a “gotcha” by any means and probably more of a rhetorical proposition than anything else.

                                                                                                                                              1. 2

                                                                                                                                                (Sorry for delay. I was getting overwhelmed between work, email, and foums exploding. Trying to reply to everyone.)

                                                                                                                                                Alright, before the thought experiment, I’ll note that the situation with that conference was a bit different per initial reports I read. The conference wasn’t experiencing a huge loss hinging on accepting or taking such people. Many people liked the presenters’ talks. Instead, a handful of political activists worked behind the scenes convince the people running it to eject a person they didn’t like regardless of what the conference thought. They probably said a lot of the same kinds of things, too, since an organizer would be receptive to them. This kind of behavior is a major reason I’m holding the line resisting the political or meta stuff such people want to work with.

                                                                                                                                                Alright, now to your exploration which is more than reasonable: it’s something I’ve worried about myself.

                                                                                                                                                “At this point, you hear back from N of the invited speakers and M of the people that would otherwise buy tickets. All of them feel strongly enough that they refuse to attend your conference.

                                                                                                                                                It really comes down to the philosophy of the organizers I guess. There’s a few routes they might take:

                                                                                                                                                1. Ideological. Do what’s perceived as right regardless. In this case, they should include their politics in their marketing to give clear signal of what’s expected. They should block or eject anyone not compatible even if the talk fails. The example you gave is one where the talk could fail. On other end, certain conferences in highly-liberal areas might fail if not doing enough to address their concerns like inclusive language.

                                                                                                                                                2. Impact and/or financial success. This philosophy says do what it takes to succeed financially or just in terms of conference activity. Nothing else matters. You gave one example where a conference might have to eject folks controversial among highly-liberal people to get attendees. I’ll also note this same rule would justify reinforcing ills of society like racism or sexism at conferences under “don’t rock the boat” concept. Lecturing or politicizing typical bunch of Silicon Valley or enterprise developers, esp the privileged males, will only irritate them with lost sales. This priority is a double-edged sword.

                                                                                                                                                3. In the middle. The great thing about real life is most stuff is a spectrum with tradeoffs. That’s the hard thing but also good here. An example is an organizer might set ground rules that reduce bad behavior instead of force politics front and center. Another example is ignoring diversity or bad behavior on the sales team at conferences or in meetings for enterprise segment to drive up sales since buyers often want to know their partners are “like them” or some crap. Whereas, the backend, developers or community side, can be really diverse without the haters even knowing they’re supporting an organization that heavily invests in developming minority talent. This is one of my hypothetical schemes rather than something I’ve observed outside Fortune 500 trick of having immigrants doing lots of work in background.

                                                                                                                                                So, I see some possibilities here where the conference organizers’ priorities seem to be the biggest factor in whether they should accept or block someone. They might block some but not others depending on level of extremism. They might rule exclusively on behavior instead of beliefs. The crowd they’re serving might like behaviors like sexism or hate it with serving the crowd being morally context-sensitive.

                                                                                                                                                I write off top of my head for honesty. I wrote that before I got to your last paragraph. I was about to say I don’t really have an answer for you past the conditional framing above. Too dependent on circumstances or whose in control. Seems you didn’t have one either, though. It is a very important consideration, though, since conferences are usually created to accomplish specific things instead of brag they were compatible with ideology of a person or group. Most of them anyway.

                                                                                                                                              2. 5

                                                                                                                                                My opponents have a different view. They think everyone should believe/do certain things and not believe/do other things. They should be compatible with those in every forum.

                                                                                                                                                It is possible that there is a belief, or set of beliefs, which are sufficiently sociopathic that they disqualify people who hold them from a platform in any context? Is there some value for X that if someone publicly and explicitly said “X” you would refuse to support them in any way?

                                                                                                                                                I hope it’s uncontroversial that the answer to both of those questions should be “yes”. In making that affirmation we’ve established that the set of things exists. Now the discussion shifts to which things belong in the set. Reasonable people can make reasonable arguments for this or that belief. I think it’s completely understandable that Moldbug’s feudalist racism would cross the threshold for a lot of reasonable people.

                                                                                                                                                Put more succinctly: a society isn’t obligated to give a platform to the intolerant in deference to the abstract right of free expression. Rather the opposite: a society is made better through a vigorous assault on intolerance, in whatever form it blossoms.

                                                                                                                                                1. 3

                                                                                                                                                  You might separate things by context but I don’t. People are not compartments. You might think other people should separate by context and not consider that e.g X is a holocaust denier when X speaks on functional programming. Great but don’t dare demand I do the same. That would be super presumptuous. BTW you appear to believe some organized group is after you. I’m unaware of any such group.

                                                                                                                                                  1. 1

                                                                                                                                                    e.g X is a holocaust denier when X speaks on functional programming. Great but don’t dare demand I do the same.

                                                                                                                                                    I always challenge people who say that to list all of their political beliefs on the major topics that provoke controversy somewhere to link in their profile. We’ll just link it before any comment they make so the person replying can see the entire political spectrum of who they’re talking to plus what they’re saying in that moment as one thing. Then, like you said, they can want to interact with that person in their entirety or ignore all value they may have contributed over one thing they didn’t like. I think we should heed Richelieu’s warning instead.

                                                                                                                                                    “BTW you appear to believe some organized group is after you. I’m unaware of any such group.”

                                                                                                                                                    I just cited a few. The Yarvin thing was a small group of political activists trying to get rid of someone they didn’t like in a shady way. The Opal scandal was Ehmke’s posse pummeling that project on Github with no problems within it. Ehmke’s been in quite a few of these with an openly-stated mission to force her brand of politics (“social justice”) in every forum using her Code of Conduct as leverage. Two people involved in those actions are active in this forum with both voting for a similar CoC here. Ehmke later griped about the hate she and her white-hating buddies receive online and at Github saying it was because she’s trans rather than shoving her politics down the throats of everyone she meets. I particularly loved how they bragged about hiring “token, white people” on their team. Nobody could even joke about that if they said black. Anyway, I called Ehmke out on that submission for trying to pretend her politics had nothing to do with it. Then, some organized group was after me with the community at least being more impressive in how that was handled than most forums those kind of people hit.

                                                                                                                                                    (Edit to emphasive these are loosely-organized, small groups that know how to say the right things hitting people not usually expecting it or knowing how to react. They create PR nightmares with passive-aggressive sophistry, basically.)

                                                                                                                                                    So, yeah, there’s definitely organized groups doing the exact thing I’m worried about with some here that have done it on previous forums. They always prop up the rules they use as leverage by saying they’re just trying to stop discrimination or hate speech but (a) they get to define what is or isn’t and (b) their own actions are quite discriminatory against other groups with inconsistent enforcement. Even minority members that disagree with them get hit as happened on HN same week where I got slowbanned for quoting women disagreeing with women. Give them an inch in a new place, they’ll take a mile. I’m not giving them an inch.

                                                                                                                                                    Note: There’s plenty of similar stuff happening at college campuses across the states, too. A lot of folks doing this sort of thing come out of them. Hard to combat since dissenting speech is considered hate speech or otherwise put down.

                                                                                                                                                    1. 7

                                                                                                                                                      That’s not a challenge, it is an example of sealioning. I don’t have any obligation to provide you with an algorithm or to be consistent or to satisfy your sense of what’s right. My right to not read Pound’s poetry because he was a fascist or to read Celine’s early work because it is so eloquent even though he became a fascist, or to refuse to attend a conference where Yarvin speaks or to prefer the rules of Recourse center doesn’t depend on your stamp of approval. Sophie didn’t make any demands of you. On the contrary, you are demanding that she not express opinions that make you uncomfortable. Get over yourself. Go explain why Yarvin’s work is so damn great that you don’t care that he’s a smirking racist or cheer for the pseudo-science of the Google Manifesto all you want. You have the right to speak. You do not have the right to demand others approve or refrain from criticizing or even shunning you.

                                                                                                                                                      1. 1

                                                                                                                                                        I applaud your patience with this guy, who really just seems to be one of those crappy Damore-Dudes, end of story.

                                                                                                                                      2. -1

                                                                                                                                        Why would you focus on that sentence

                                                                                                                                        Because I didn’t have anything to say about the other ones. Do you think I’m obligated to address every sentence in an article if I want to address any of them?

                                                                                                                                      3. 7

                                                                                                                                        The fact that we almost know who she was talking about proves that they can currently discuss these ideas openly mostly fine.

                                                                                                                                        So these people express their opinions, and others are like “well now I don’t want to talk to them”. If you(*) want to barrage people with your unpopular opinions, people will stop wanting to hang out with you .

                                                                                                                                        I understand the fear of being shut out of social events like conferences. But they’re social events, so if you make yourself unliked… No amount of rulemaking will solve that, I think.

                                                                                                                                        The bad faith logical inverse if your argument is “everyone should be friends with everyone. No matter how much disagreement with social issues are present, someone should always be allowed to be present. This includes allowing to bully other members of the community without repurcussions ever.”

                                                                                                                                        It’s the bad faith interpretation, but one that some people will make.

                                                                                                                                        (*) Impersonal you

                                                                                                                                        1. 5

                                                                                                                                          “So these people express their opinions, and others are like “well now I don’t want to talk to them”. “

                                                                                                                                          These people express opinions but want anyone disagreeing to shut up. That’s been present in replies on most threads here where people did. Allowing only one side to speak while defining any disagreement as an attack or hate is political domination.

                                                                                                                                          “This includes allowing to bully other members of the community without repurcussions ever.””

                                                                                                                                          There’s the word games your side is famous for. vyodaiken did it earlier redefining a rhetorical disagreement as an attack on one side but not the rhetoric of the other side that painted everyone without qualification with negative labels. In your case, the people whose politics I oppose here regularly define any disagreement as hate speech, offensive, bullying, behaviors not to be tolerated, and so on. Not all of them do but many do. You all redefine the words from the neutral, tolerable thing they are (eg disagreement or political bickering) to a new word we all have a consensus against (eg bullying, hate speech). Then, you’re arguments for action focus on the new word with its meaning whereas what was actually going on is a lesser offense which wouldn’t be justified.

                                                                                                                                          So, what people supporting Sophie actually want is anyone on their side able to express their opinions without disagreement and without repurcussions ever. Whereas, anyone disagreeing with it is automatically labeled as something far worse, dismissed immediately, and for some ejected if allowed by rules. That’s always worth fighting against even if wyager’s parody was as poor a wording strategy as Sophie’s own overly-broad, only-negative portrayal of programmers.

                                                                                                                                          1. 3

                                                                                                                                            She never advocated censorship. She never said “most programmers” or “all programmers”. So your response is obviously not directed at her words but at something else.

                                                                                                                                            1. 2

                                                                                                                                              as Sophie’s own overly-broad, only-negative portrayal of programmers.

                                                                                                                                              Again, this is an opinion unsupported by the data. The examples were specific, and real. The concerns are non-trivial, and real. You’re making something about you that isn’t about you.

                                                                                                                                              1. 0

                                                                                                                                                That’s always worth fighting against even if wyager’s parody was as poor a wording strategy as Sophie’s own overly-broad, only-negative portrayal of programmers.

                                                                                                                                                wyager is arguing that people with bad values should be allowed space in public or in others’ private spaces, which is a bad value. Majority supremacists, patriarchal maximalists, authoritarians, etc. should not be allowed safe spaces, and should never be accommodated.

                                                                                                                                                From your characterizations of the author’s post and how they portrayed programmers, it’s clear you’ve either not read it and are arguing from ignorance, or you have read it and are arguing in bad faith, since the passage is clearly contextualized as part of explaining an internal struggle about how best to grow as a human being.

                                                                                                                                                1. 4

                                                                                                                                                  From your characterizations of the author’s post and how they portrayed programmers, it’s clear you’ve either not read it and are arguing from ignorance, or you have read it and are arguing in bad faith

                                                                                                                                                  I’ve read it. Part of learning a field and growing as a human being is a fair assessment of what’s going on in it good and bad. Author’s concerns in that section solely focus on the bad… the worst of it actually… with the people side being like talking points out of one part of a political debate. Outside of those, I usually see a wide range of claims about programmers, jobs, effects on world, etc. Author is setting up false, strictly-negative premises in either ignorance or bad faith, maybe even unintentionally due to bias, then struggling to work from within the moral straight-jacket she put on. Totally unnecessary if starting from a more accurate worldview that includes the positive and neutral people and programs.

                                                                                                                                                  Note that I liked all the stuff about RC in the article. I enjoyed the article right up to that point. I just mentally deleted that part so I could just think about the rest which was most important parts. As in, more corroboration and anecdotal evidence in favor of RC visits. Then, the debate started.

                                                                                                                                                  1. 1

                                                                                                                                                    Note that I liked all the stuff about RC in the article. I enjoyed the article right up to that point. I just mentally deleted that part so I could just think about the rest which was most important parts.

                                                                                                                                                    I feel like you’re attempting to speak in good faith, so I’m going to do the same.

                                                                                                                                                    This point I’ve highlighted here, that you “just mentally deleted that part”, is an example of privilege in action*. You have never had your life or well-being threatened by people or organizations like the ones the author calls out, and you have never had to be concerned with whether or not they were active or influential in the spaces you inhabited. Other people are not so lucky, and have learned from difficult experience that they need to be aware of their surroundings and who might be in them, or else they may be injured or otherwise harmed.

                                                                                                                                                    Some people, especially those who come from outside the main software development industries, have heard only that IT/tech has a huge problem with sexism and toxic masculine culture. Some people are members of the marginalized groups whose well-being is directly threatened by the personal values of community leaders of some of the popular software communities, as named by the author of the post. The Recurse Center attracts a lot of people from diverse and non-technical backgrounds, and many of those people share the concerns that the author had, and would appreciate having them explicitly dispelled with regards to RC, as the author did.

                                                                                                                                                    So the least that those with privilege, like you and I have, can do, is not make it harder for those less fortunate to engage with the playground we have (programming) that also gives us power and status. It’s bad form to raise barriers against those with a harder lot in life than we have. These kinds of messages, from “the other side” as it were to those people who might be afraid of what they’ll find when they get there, are super important. And it’s not about you, or me, or anyone here, unless they’re part of the problem. It’s for other people like the author or who might be thinking about getting into a tech career by applying to RC, but who have heard the industry has some problems.

                                                                                                                                                    *) note that you have this privilege, even if you are not privileged in other ways (eg, you were born into a poor family, etc.). life is complicated.

                                                                                                                                                    1. 1

                                                                                                                                                      Since you’re being in good faith, do read this next like I’m just bluntly saying something instead of losing my shit or being loud. ;)

                                                                                                                                                      “You have never had your life or well-being threatened by people or organizations like the ones the author calls out, and you have never had to be concerned with whether or not they were active or influential in the spaces you inhabited. “

                                                                                                                                                      You’re assuming I don’t understand the concept because I’m presumably white male. My first school experience was being attacked or mocked because I was a “nerd.” All but a few people excluded us which happened varying degrees whole time in school. That included “minorities.” They all do to nerds what they claim others do to them, including violence by alpha males but not police. They might interrogate or arrest them if something happened involving computers if said nerd is known programmer or hacker.

                                                                                                                                                      Next, I was white in a black-run, mostly-black school where they added to mockery or exclusion the fact that we were shouted down if disagreeing with any issue (especially racial) plus randomly attacked. I doubt most of these people talking about their minority concerns have been held down on a bus while black people take turns beating them with the smirking driver not reporting it. Attempts like that were too common for me until I learned kickboxing and paranoid vigilance, esp wide turns around corners. Still had to dodge fights due to rule white people can’t be allowed to win against black people either at all or too much. Varied. My friends and brothers who went to other black schools endured the same where just bending over a water fountain could be too much vulnerability. I avoided bathroom stalls, too, after seeing what that led to.

                                                                                                                                                      I also got to be a man in places run by women who favored women. Essentially, whoever stayed in their good graces talking about what they talked about, being an insider, laughing at anti-male jokes, and so on had more privileges in those places. That would benefit grades, get more work hours, increase odds of promotion, even get some guys laid with those opposing sexism shamed. Unlike women on average, it’s been a while since I dealt with that but happening again in my current company. Highly-political, card-playing woman took over a specific department I was almost transfered to. After exit-interviewing her ex-employees, I blocked transfer fast before expected changes happened: she hired mostly black folks like her (esp exploitable youth), promoted only the older black women exactly like her kissing up instead of mix of races/genders who outperformed them, and politics over performance further destroyed that departments’ numbers with them saying nonsense about why. Current team is good with mix of straight/gay/lesbian, white/black, and liberal/moderate/redneck. Usually fun, interesting group with occasional in-fighting due to differences all apologize for after.

                                                                                                                                                      That covers structural racism and sexism which the type of politics I fight denies even exists for whites or men despite supporting data. We get no help. What about “neo-reacitonary?” Well, I am an outspoken liberal and Union man who defends decent Muslims and calls out police corruption on the side in the rural South deep in Trump, meth, and capitalist country. Interesting enough, one insult they fling at me here is probable Hillary supporter while people I argue with on liberal forums assume I’m a right-winger. Biases… Being outspoken in rural spots led me to have to negotiate with people intent on beating or killing me right there if I got too many words wrong. Rare people but non-passive outsiders will run into them. Most online “activists” on social media talk about threats which I find are folks talking shit online or with prank calls that don’t on these issues result in hospitalizations or anything almost ever. Just irritating trolling by jerks shielded by anonymity. Pales in comparison to what even a trip for groceries can cost a white person in impoverished areas in or around Memphis, TN. The First 48 was banned from there over too much stuff to cover. Some police are gang members, too, so gotta act in a way to reduce risk of their attention.

                                                                                                                                                      Since you admitted it, you might have privilege of growing up as or hanging with white people that didn’t face racism, sexism, or drug heads’ threats on regular basis. Lot of us in poor areas, minority-controlled areas, areas of opposing politics, isolated areas… these are some where many say they have similar experiences to me. We find it strange people “speaking for oppressed” as they might say ignore existence of probably millions of us due to skin color or gender. Especially rural whites given their high rates of both drug addiction and suicide, too. My friends and family have had to fight those.

                                                                                                                                                      Alright, what about someone like Sophie or I who are concerned with environments where we might be facing racists or sexists that hate our group? Well, I agree with you entirely that it can be reassuring to see someone bringing that up saying it doesn’t happen at a specific location. Going from an all-black school to a mixed school where they didn’t hate us was… it was heaven. We had fun together! Likewise, groups with fair/excellent women or being around civil Southerners who only get X-ist if explicitly talking politics. I’d definitely want to know every place or group where I could avoid groups I mentioned first in favor of others if that was best I could hope for.

                                                                                                                                                      That said, remember how it started was exclusively portraying the field based on worst of the worst. I don’t do that. Since we’re at that point, I’ll tell you the violent people I met were single digit percentage of each area, the negative bias was huge, there were coping mechanisms to get me past some of it, there were neutral/decent people, and some were so fair or good they inspired me to be more skilled or tough. If I talk about a field, I try not to throw them under the bus entirely or I take the counterpoint I had coming for screwing up due to emotion winning or whatever. You’ll see that in programming with C or PHP languages where I’m a strong opponent but don’t pretend they’re 100% bad even if many developers do damage. Likewise, following my politics, I’m still getting along with and exchanging tips with specific Lobsters who were strongly opposing me in prior political debates.

                                                                                                                                                      So, what she was doing isn’t the only way to respond. It was a weaker, overly-broad, politically-charged claim that got low-value reactions followed by a whole battle that distracted from her main points. She set her post up to fail to quite a degree. I’d have told her to be more fair and accurate since bringing politics in is putting a spotlight and a metaphorical scope on you. The negative responses left over would have to be haters or themselves prioritizing some politics. Easy to dismiss when they have little to no ground to stand on. Those of us in minority positions unfairly have to be careful about our claims since they’ll get more scrutiny and attack.

                                                                                                                                                      Since she probably made up her mind, I just mentally deleted it like I trained myself to do when saying something to that person won’t change their views IRL. Focus on good, shrug off perceived bad if not an intentional attack, and go on from there. It’s how we integrate and survive down here in our powder keg of diversity. Works fine, too, with most of us getting along well enough. :)

                                                                                                                                                      “These kinds of messages, from “the other side” as it were to those people who might be afraid of what they’ll find when they get there, are super important.”

                                                                                                                                                      This I disagree on if they’re aiming to affect policy or law anywhere. I’ve already seen it happen in many places with ultra-liberal universities being good examples. In those, allowing it to go too far without participation shifted power to those groups. Those groups built on their politics and power until they regularly belittle whites or males in various ways. They also try to silence disagreement on political issues saying it’s not about them. Well, if we stand to lose anything (even rep or jobs) by decree, then it is about us and we should at least weigh in. I don’t gripe about the reasonable stuff where each person has a view they can state, chance at the job, etc. I’m usually backing it.

                                                                                                                                                  2. 2

                                                                                                                                                    I’m sure all the people hit with the bad value hammer will disappear into the ether once you get your (apparently unauthoritarian) way.

                                                                                                                                                    1. 1

                                                                                                                                                      Your false equivalence, that being intolerant of intolerance and hatred, is also cowardly stated using passive aggressive style, as well as sarcasm. That is, you are acting like a coward, lest I be accused of not speaking my point forcefully enough.

                                                                                                                                                      1. 0

                                                                                                                                                        I find passive aggressive sarcasm allows for remarkable concision, but whatever. I don’t respect you and your group as the arbiters of good and bad values and all people like you have done is make me care substantially less about being labeled a patriarchal maximalist or whatever you’d like. Many people I know feel similarly. We’re not going to leave the field if you succeed in banning us from the recurse center

                                                                                                                                                        1. 0

                                                                                                                                                          Hey, have fun hanging out with Nazis, then.

                                                                                                                                                          1. 0

                                                                                                                                                            Enjoy weilding whatever power that label still has while it has any at all.

                                                                                                                                                            1. 2

                                                                                                                                                              I don’t want to wield power. I want to not be around assholes. Are you really saying you’d rather hang out with white supremacists and gamergater pigs, than take a stand and say, “Those values are not welcome?” How is this even a question?

                                                                                                                                              2. 12

                                                                                                                                                Great illustration of what she wanted to avoid.

                                                                                                                                                1. 8

                                                                                                                                                  I don’t get why people don’t want to talk about this? I don’t necessarily agree with wyager, but this type of discourse is pretty healthy IMO. It’s precisely why I prefer this site to HN, because that comment would surely have been censored by the moderators.

                                                                                                                                                  1. 5

                                                                                                                                                    It’s also completely off topic in the context, which is about using programming for good, and it’s really obnoxiously phrased to boot. Which does matter.

                                                                                                                                                    1. 6

                                                                                                                                                      In your opinion it is obnoxious, I didn’t find it so bad, but maybe that is just me.

                                                                                                                                                      1. 16

                                                                                                                                                        Obnoxious is a bit subjective, but his comment is destructive (as opposed to constructive), and that’s an objective observation.

                                                                                                                                                        How dare people discuss controversial and offensive ideas openly?

                                                                                                                                                        This is sarcastic and demeaning.

                                                                                                                                                        They should be forced underground so those ideas can fester without any external contradiction or moderation.

                                                                                                                                                        Sarcastic and a strawman.

                                                                                                                                                        And of course people with weird, icky politics should be censored from purely technical events.

                                                                                                                                                        Sarcastic and a strawman.

                                                                                                                                                        Who knows what kind of whacky fascist programming paradigms they might force on us otherwise?

                                                                                                                                                        Sarcastic and a strawman.

                                                                                                                                                        Here is a what a more honest, direct version of the post would be:

                                                                                                                                                        I think people should be allowed to express controversial and offensive ideas openly. Otherwise, they’re pushed underground where they fester, instead of being brought out into the light where they are exposed to moderation and contradiction.

                                                                                                                                                        But that wasn’t the comment we got, and for good reason. The more direct version wouldn’t be posted because it is immediately obvious that it isn’t related to this topic. The response to it might be

                                                                                                                                                        The author is just talking about what makes her uncomfortable in most programming community spaces, and why the Recurse center was so valuable for her. She isn’t making an argument or saying you need to feel the same way.

                                                                                                                                                        Thus it is clear that the comment, even in a less caustic form, isn’t particularly relevant. I mean, look at the originally quoted snippet in wyager’s post: it’s just a list of facts.

                                                                                                                                                        1. 0

                                                                                                                                                          “controversial and offensive” is a fluid social contract that changes with audience and context. The big problem is nobody can ever agree on what is controversial and offensive. At the same time people’s nuanced opinions are routinely caricatured as the most extreme version (in both directions, and I’m guilty of it too) then paraded on social media to people with no context.

                                                                                                                                                          1. 3

                                                                                                                                                            I try my best to avoid the words controversial and offensive. Constructive and destructive are less weighed down with baggage and relativity (though there is always room for people to mess with words). Constructive moves the conversation forward. Destructive moves it backwards.

                                                                                                                                                            At the same time people’s nuanced opinions are routinely caricatured as the most extreme version […] then paraded on social media.

                                                                                                                                                            Yeah, I’m a bit detached from it since I don’t use Twitter or Facebook, this being a primary reason. It’s a good example of destructive conversation. Nobody ever learns from it, nothing really improves.

                                                                                                                                                          2. -5

                                                                                                                                                            I’m very sorry I didn’t use the exact rhetorical style you were hoping for. In the future I will avoid using sarcasm and any other rhetorical technique that you don’t like is “destructive”.

                                                                                                                                                            1. 5

                                                                                                                                                              God forbid you say what you mean.

                                                                                                                                                              Come off it, you know it isn’t about what I happen to prefer. If you don’t know better, then you should.

                                                                                                                                                        2. 3

                                                                                                                                                          Hm, I suppose it did completely derail this thread

                                                                                                                                                      2. 10

                                                                                                                                                        I doubt it. She’s making political points in the post instead of just talking about good things at Recurse Center. She’s putting it front and center in people’s minds as they read. Anyone reading it deserves to respond to that. That automatically means a thread might get political. It’s definitely her intention.

                                                                                                                                                        Predictably, someone responded to it with thread turning to the tangent. Ive had enough politics for the week, though. So, just pointing out the obvious that statements like hers with accusations against a bunch of programmers or political statements will definitely get a reaction. She couldve got the points across without that but wanted it political.

                                                                                                                                                        1. 10

                                                                                                                                                          She’s not allowed to talk about politics? She makes a fairly common point: she finds the environment around programming often unpleasant or hostile and she wanted to avoid that. So she did. Many people, including myself, are put off by people who sound like that Google Memo person or worse and try to avoid it. If that makes other people uncomfortable, that’s too bad.

                                                                                                                                                          1. 8

                                                                                                                                                            wyager is allowed to counter her politics if she is going to bring it up. It’s not “what she was trying to avoid.” It’s what she or anyone else should expect saying what she did. All Im saying.

                                                                                                                                                            Your initial comment read like one should be able to make negative, political characterizations of programmers with no reply expected.

                                                                                                                                                            1. 10

                                                                                                                                                              I guess for me it’s not who’s “allowed” to “counter” things or not, but is this actually a useful discussion? The comment reads to me as a wordy way of saying “I disagree with your politics”, which, ok, but what does that add? When I read the original post I could already guess some people would disagree, sure. A person doesn’t have to reply to every in-passing comment they disagree with on the internet. It wasn’t even the main point of the post!

                                                                                                                                                              I’ve noticed more discussions here lately being sort of tangential sniping threads. I posted an article a few weeks ago and the entire discussion was a thread about whether people like PDFs. Ok, fine, but I posted a research paper, and the fact that you don’t like PDFs isn’t really on-topic, novel, or interesting. And then there was one last week where someone didn’t like that the title of an article ended with a question mark. I think we could use less of that kind of thing.

                                                                                                                                                              1. 2

                                                                                                                                                                I’ve noticed more discussions here lately being sort of tangential sniping threads. I posted an article a few weeks ago and the entire discussion was a thread about whether people like PDFs.

                                                                                                                                                                I agree with this. It happens in political threads so much I voted against politics in meta. I can’t overemphasize that since, yet again, one disagreement with a political point in a submission created another situation like this. I basically just represent the dissenting side if they’re getting dogpiled or call out double standards when people pretend it’s about logic or civility rather than politics.

                                                                                                                                                                I totally agree, though, about the sniping thing with me preferring some kind of rule against it if not politics in general. Maybe in addition to. It should make for a quality improvement. I’m still fine with tangents, though, so long as they’re adding insight to a discussion like the meta stuff I try to do connecting sub-fields.

                                                                                                                                                              2. 7

                                                                                                                                                                But he didn’t counter her politics, he attacked her. She didn’t call for suppressing anyone’s speech. She simply said she found a certain common mode of speech in tech, a mode I find offensive too, to be unpleasant and wanted to avoid it. There is no sensible way to take issue with that.

                                                                                                                                                                1. 7

                                                                                                                                                                  She said this about programming:

                                                                                                                                                                  “A lot of bad things in the world have been created by programmers: software for operating drones that bomb civilians, data-mining that violates privacy, companies that “disrupt” by dropping vast amounts of capital in to a market without any intention of building a sustainable business. A lot of bad people love programming: open source thought leaders who harbor deeply racist views, authors of popular databases who discuss their sexist ideas openly, neo-reactionaries leading functional programming conferences. “

                                                                                                                                                                  She painted a picture of programming as if it was mostly bad things done by bad people. She painted the picture that people going to thought leaders, doing database work, or getting involved in functional programming were only going to be dealing with the worst. You’d think the profession was one of most horrible ever invented reading that stuff. Don’t ask that she properly qualify that: take her word for it without any of your own comments or reactions. She is attacking most programmers with a programmer, @wyager, reacting to that statement.

                                                                                                                                                                  When a man here said something similarly negative about tech industry, several of us countered him pointing out how he was vastly overstating the problem projecting the worst groups onto the average or majority in a way that was unfair to them. Like her, he exclusively considered the bad things and people in tech when judging the field instead of the vast amount of decent or productive things programmers have done many of whom were OK people. We also suggested maybe he avoid the worst if we couldn’t get rid of them since they were ultimately unnecessary to interact with being a drop in the bucket of the many people and resources out there. I don’t remember all these people being there supporting his view shocked anyone disagreed with him. This one was a woman with different set of politics. Let’s see what happened.

                                                                                                                                                                  So, wyager responds with a political comment that looks very motivated by emotion lacking qualifiers, consideration to others, or evidence much like Sophie’s. While Sophie’s ad hominem is allowed to stand, you imply his rhetoric shouldn’t be present at all. @jules deconstructs his aiming for purely logical or information content with some strawman which was not done to Sophie’s (or most here with similar viewpoints). @mjn said it was not adding anything new which was true about Sophie’s (or most here with similar viewpoints). These replies are exclusively given to people whose politics each person disagrees with but not people doing same things whose politics each agrees with. They’re held to a lesser standard. So, rather than it being what it appears, these comments aren’t really about addressing civility, information vs rhetorical content, and so on. You all mostly ignore those attributes for comments supporting your type of views while downvoting for opposite naturally leads to dominance of your side in those threads. As in, it’s political maneuvering by folks of one type of views against another rather than quality assurance with any consistency.

                                                                                                                                                                  Here’s a few where those writing thought wyager and others disagreeing were supposed to nod saying it makes sense with what happens next being too ironic and obvious:

                                                                                                                                                                  “How dare women suggest tech and especially programming is a potentially hostile environment one might not want to enter!” (fwg) (my emphasis added)

                                                                                                                                                                  “But one group actually gets to say racist, sexist, discriminatory stuff and remain in charge. The other can hardly speak on panels and post on their blogs without the whole world jumping down their throats.” (jules) (emphasis added)

                                                                                                                                                                  “I’m not allowed to respond about politics?” (wyager)

                                                                                                                                                                  “I missed the part where anyone asked for you to be deprived of that right.” (vyodaiken)

                                                                                                                                                                  You must have missed yourself and the others basically telling him to shut up, the downvotes adding up by a vocal minority, and wyager’s thread collapsing into oblivion where it isn’t seen unless we expand it. Quite unlike most low-info-content, political comments here that are in favor of view’s like Sophie’s not disappearing. Doesn’t look like Sophie or other women with her views would be facing the “hostile environment” with “censorship” and people “deprived” of the right to speak. That contrived scenario is instead what people that agree with her were doing to others who express themselves in a similarly low-evidence, rhetorical way like Sophie or some of their crowd, but with different views. Some of these talk about how everyone is out to get people on their side of spectrum in the same thread where they disappear their opponents’ claims. As opposed to just disagreeing or discussing. Then, they defend the low-quality, repetitive, rhetorical statements of people like Sophie on the same threads since they agree with their views.

                                                                                                                                                                  Gotta love politically-motivated double standards for discourse that exclusively benefit one side. Also, people talking about how folks on their side have a lot to worry about as sub-threads their opponents make sink and disappear with some clicks. That’s just too rich in reality distortion.

                                                                                                                                                                  1. 6

                                                                                                                                                                    She painted a picture of programming as if it was mostly bad things done by bad people . . . You’d think the profession was one of most horrible ever invented reading that stuff.

                                                                                                                                                                    This is not a reasonable conclusion to draw from the passage you quoted.

                                                                                                                                                                    1. 6

                                                                                                                                                                      You are completely inverting what is happening. Sophie Haskins wrote her opinion. A lot of people here are apparently very angry and want her to shut up. They position their arguments as if she argued for censorship which is a lie and are attempting to shout her down. If you disagree with her opinions, you could say: “My experience is that most programmers are nice” or “It doesn’t matter to me if people who have interesting technical ideas are racists” or otherwise - you know - disagree. But you are not doing that. Instead you are offended that she expressed her opinion and are inventing this whole oppressive regime that wants to suppress your opinions. There is a difference between freedom of speech and impunity. If people want to express racist opinions, for example, they don’t have a right to have other people applaud or pass over in silence or even listen to them. This is exactly the issue of the Google Memo. Its author is free to proclaim all sorts of men’s rights and racist claptrap on his own time, but he has no right to either have his coworkers refrain from reacting to it or have his employer decide that offensive speech in the workplace is ok. The toxic atmosphere of many tech forums is a reality. You should make an effort to understand what Sophie Haskins actually wrote instead of leading a Crusade for the right to be socially acceptable while denigrating others.

                                                                                                                                                                      1. 2

                                                                                                                                                                        “You are completely inverting what is happening. Sophie Haskins wrote her opinion.”

                                                                                                                                                                        Her opinion did not happen in isolation. You yourself mentioned that along with some other people. She is part of a group of people that are concerned with and speaking out about bad actors in tech. That’s all I’m certain about right now. Instead of being fair as you expect of me, she paints an exclusively-negative picture of tech’s contributions and the kind of people in it. As she wonders/worries aloud, what she describes is pretty far from reality of a diverse field with all kinds of people in it that mostly don’t do horrible stuff. Majority just support businesses that provide some value to consumers in the economy. Many are also volunteers in FOSS on code or communities. Many other writers whose work was submitted, including about every woman, had a more balanced view in their writing. The exceptions were those all-in on a specific brand of politics that frames tech in terms of race and gender. She writes more like them.

                                                                                                                                                                        “Instead you are offended”

                                                                                                                                                                        I’m neither offended, nor did I reply to her. I countered you, not her. I discussed other things as people brought them up. People like her trash-talking whole fields is something people do all the time in many ways. I don’t get offended so much as roll my eyes just to maintain peace of mind if nothing else. Whereas, people expecting nobody to reply to or counter a false, negative claim does concern me. That’s allowing one side to discuss but suppressing another in a place where that can define community norms. I often get involved when that happens. All I was doing initially before other claims appeared.

                                                                                                                                                                        Now, you’re talking about racism, denigration, etc that we shouldn’t tolerate. The first to do that was Sophie in her unfair characterization of the field. If you think that’s unfair perception, then you can test if that kind of comment is acceptable to people with opposing views in this thread by going to any forum where they’re dominant submitting this version of Sophie’s claims: a white male is concerned about about going to a workplace, conference, or CompSci courses at specific colleges because “there are some bad programmers” who “hate men” behind filesystem development, “hate whites” organizating at major colleges, and support “radical views” leading community teams of major projects. Each of these people exist in the field with groups of people backing them who will shout down or eject opponents within their area of influence. So, the person you’ll ghost-write as is a non-radical, friendly, white male who is concerned about getting into programming should they run into those people they’ve read about. They just worded it like Sophie did in their context.

                                                                                                                                                                        What do you think would happen? We can guess based on prior replies to claims like that. Detractors would show up in large numbers immediately citing evidence showing most people aren’t like what he worries about. They’d say he shouldn’t denigrate entire groups like women or non-whites based on behavior of a small amount. Some would say racism against whites or sexist against men are impossible based on their redefinitions of those words that make it maybe impossible. Others would say it’s unrealistic worrying to point he should know better or even distracts from “real” problems (i.e. their worries). Probably some evil, political intent since only a X-ist would say it. If he said that wasn’t his intention, they’d force him to be clear on a version they were cool with. They’d tell him he should phrase his writing more appropriately so others who are different feel safe in that space. That he must think in terms of how people might read that. The person would be dismissed as a racist, sexist idiot as they dogpiled him like many others have.

                                                                                                                                                                        When this woman did it, we’re supposed to assume the best with no concerns about larger implications of what she’s saying in terms of what’s in her head or perception of what she writes. Countering it on just incorrectness like we’d do anything else is now not just dismissing bad ideas or statements: it’s “toxic behavior” that needs to be stamped out. Nah, someone said some political BS on the Internet with disagreement of various quality following. Something we do for any kind of claim here. She doesn’t deserve special treatment or defense of her poor arguments/methods any more than a male does.

                                                                                                                                                                        To males, you usually have quick, small rebuttals of ideas you disagree with (esp on tech) where you didn’t do a full exploration of everything they might be thinking before you countered. It’s pretty clear you do a quick take on what they might mean, compare it to your own beliefs, and fire an efficient response. Most people do that most of the time I’d guess. You’re doing the opposite here. Whereas, I’m treating her equally to anyone else by protecting dissent and countering her overly-negative claims like I already did to a man who did the same thing before. Like I’ve done to a lot of people’s claims here and everywhere else. Clearly a political bias in action on other side if expecting her claims to get a level of acceptance or no critique that’s not expected of men here or for other topics. I say they all get treated the same from agreement to critiques or we don’t discuss that stuff at all.

                                                                                                                                                                        I’ve said enough for this part of this thread as both our views are plenty clear.

                                                                                                                                                                      2. 2

                                                                                                                                                                        She painted a picture of programming as if it was mostly bad things done by bad people. She painted the picture that people going to thought leaders, doing database work, or getting involved in functional programming were only going to be dealing with the worst. You’d think the profession was one of most horrible ever invented reading that stuff. Don’t ask that she properly qualify that: take her word for it without any of your own comments or reactions. She is attacking most programmers with a programmer,

                                                                                                                                                                        This conclusion is bonkers.

                                                                                                                                                                  2. 2

                                                                                                                                                                    She’s not allowed to talk about politics?

                                                                                                                                                                    I’m not allowed to respond about politics?

                                                                                                                                                                    1. 3

                                                                                                                                                                      I missed the part where anyone asked for you to be deprived of that right.

                                                                                                                                                                  3. 2

                                                                                                                                                                    I doubt it. She’s making political points in the post instead of just talking about good things at Recurse Center. She’s putting it front and center in people’s minds as they read.

                                                                                                                                                                    Those “political points” are some of the more important “good things” about the Recurse Center.

                                                                                                                                                                  4. -5

                                                                                                                                                                    is there a latin phrase for “does your mom know you’re gay?”

                                                                                                                                                                1. 16

                                                                                                                                                                  Software has become easier…in certain ways.

                                                                                                                                                                  I think this is worth reflecting on a bit.

                                                                                                                                                                  In the late 90’s when I installed Linux for the first time, this was back when setting up X11 had a big warning that if you got your monitor refresh rate wrong you could damage it, I managed to install the OS, build my own kernel, and get the whole graphics stack running, and connect to the internet…without using the internet. I only had one computer and it was busy being barely functional while I was doing this. I then went on to write Hello World in C, which required putting a few lines into a .c file and using gcc to compile it. Pretty straight forward.

                                                                                                                                                                  I recently started trying to make a frontend project using TypeScript, React, and BlueprintJS. Discounting the hours I spent trying to figure out which frameworks to even use, I could not have accomplished my Hello World without around 1000 dependencies in NPM and stackoverflow. While I’m getting there, I’ve found the experience really challenging. Error messages are bad. Components make all sorts of silly assumptions. Even just how things fit together is really challenging to discover.

                                                                                                                                                                  I’m not saying installing Linux that first time was easy but I don’t feel that things are easier now. The author tries to say that business logic grows very complex. But this doesn’t match my experience. Instead I find that the complexity is just getting things to work because every framework is huge. Most Hadoop jobs I see are dead simple but they are 3000 lines of junk to get the ten frameworks one needs to count words to play well together. I’ve spent more hours just trying to get a Java dependency to work in my system than writing the code for that feature I’m using the dependency for.

                                                                                                                                                                  I think the author is right in that many developers today just do things where the reason isn’t backed by any kind of evidence or even makes sense after a few minutes of thought. Microservices are like this. I’ve seen a lot of places go hog-in on microservices without appreciating that their system is simple enough that maybe they could get away with 2 or 3 big services, or even one if they really wanted, and dramatically underappreciate the cost of microservices. Microservices have created an entire industry of solutions to fix a problem that many people impose on themselves for no particularly good reason.

                                                                                                                                                                  What I’m saying is that we need to head back in the direction of simplicity and start actually creating things in a simpler way, instead of just constantly talking about simplicity. Maybe we can lean on more integrated tech stacks to provide out of the box patterns and tools to allow software developers to create software more efficiently.

                                                                                                                                                                  I don’t think the author gives an operationally useful definition of simplicity. It sounds like they want a big platform that has all sorts of complicated stuff integrated into it, an idea that I don’t think is very simple. A more “integrated tech stack” usually just means you push all of the complexity into one place rather than reduce it. While a bit extreme for me, I think it’s unfortunate that Handmade hasn’t picked up more steam.

                                                                                                                                                                  I think it’s important to note, as well, that IME, a lot of software complexity is out of ignorance. Many developers just don’t know what simplicity is or how to achieve it. If you’re a JavaScript developer all of the examples you’ll run across are huge. Angular 2 installs 947 dependencies on a blank project. React installed 200 something. Maybe Go is the best example today of simplicity? Maybe all developers need to go through a six month course where they solve all problems with UNIX pipes.

                                                                                                                                                                  1. 3

                                                                                                                                                                    I agree with your assesment, I think there are a couple of different factors at play.

                                                                                                                                                                    To be fair, package systems, dependency management, dll hell has been a problem for a loooong time. One of the axis this difficulty splits on is richness of the standard library. For example, c programs on linux have libc linked in at runtime which offers a fair bit of functionality but requires a lot libs for anything else. Go programs compile a significant runtime library into the final exe that includes a whole lot of functionality. Go has a very rich library built in. Javascript has near zero standard library, and no real module system. Hence npm and dependency hell++.

                                                                                                                                                                    One thing that stands out to me today is how prevalent network backed package managers have become; maven, npm, heck debian and yum too. I also attempted to install linux back in the day, but I failed, because without a network connection, I coulnd’t use anything or research anything not on the disks I had available. Today, with a network connection you have access to all the dependencies and information you need. Most all languages and platforms have dependency managers and repositories available. In other words, (some) things are so much easier now.

                                                                                                                                                                    Which all contributes to the eternal september we find ourselves in today. The barrier to entry is a lot lower, which is a good thing. Every year there are more and more fresh/green developers, and fewer and fewer old experienced developers. Those of us who fought to do anything in the old days are growing few and fewer. The new generation didnt’ suffer like we did, and that’s ok. I think they suffer in different ways, as your lament about web development shows. The reality is, a lot of the cruft in javascript land is solving real problems, as much as I hate to admit it.

                                                                                                                                                                    It all brings to mind this quote from Alan Kay (~2004):

                                                                                                                                                                    Computing spread out much, much faster than educating unsophisticated people can happen. In the last 25 years or so, we actually got something like a pop culture, similar to what happened when television came on the scene and some of its inventors thought it would be a way of getting Shakespeare to the masses. But they forgot that you have to be more sophisticated and have more perspective to understand Shakespeare. What television was able to do was to capture people as they were. So I think the lack of a real computer science today, and the lack of real software engineering today, is partly due to this pop culture.

                                                                                                                                                                    1. 2

                                                                                                                                                                      FWIW, I agree with the overall gist of your post. However…

                                                                                                                                                                      Angular 2 installs 947 dependencies on a blank project. React installed 200 something.

                                                                                                                                                                      The @angular/core library has one hard dependency on tslib. React has a total of 16 direct and indirect dependencies. If you use a starter kit or one of the cli tools, they will install many more, but that’s because they’re depending on entire compiler ecosystems.

                                                                                                                                                                      1. 2

                                                                                                                                                                        I’ve seen a lot of places go hog-in on microservices without appreciating that their system is simple enough that maybe they could get away with 2 or 3 big services, or even one if they really wanted, and dramatically underappreciate the cost of microservices. Microservices have created an entire industry of solutions to fix a problem that many people impose on themselves for no particularly good reason.

                                                                                                                                                                        I can’t read this without hearing “I want to work on cool things” over and over. That’s what everyone says, right? I want a job where I can work on cool things. And every chance that’s presented to shoehorn in a cool solution to an otherwise simple problem is taken. Isn’t this exactly what we saw with “big data”? Where a company’s “big data” could fit onto an couple of expensive hard drives, but everyone wanted to use Hadoop or write their own distributed code? Hell, I fell into this trap all the time a few years ago.

                                                                                                                                                                        Another aspect of this is that we as programmers are really, really bad at estimating how efficient an approach is and how demanding a problem is. It’s why wise performance people (alliteration^2!) always shout at you “if you haven’t profiled it then you don’t know how fast it is!” And they’re right. And of course they’re right. What we work with, as you’ve noted, is horrendously complicated. But it sure feels great to stand back and say “well, a microservices approach would be a great fit here, and help us tackle our volume/latency/whatever requirements (that haven’t been measured), because partitioning the problem is more efficient (an unestablished claim), and our service will be more reliable (if it’s engineered correctly, maybe, again unestablished)”.

                                                                                                                                                                        Because acting like we know is just so much fun. I submit that this should be the definition of an “architecture astronaut”.

                                                                                                                                                                        Maybe “mechanical sympathy” exists, but if it does, it is hard won intuition born out of experience and lots and lots and lots of experimentation and measurement.

                                                                                                                                                                        Hell, I could set @peter off on a rant about this for—literally—hours.

                                                                                                                                                                      1. 18

                                                                                                                                                                        Some feedback:

                                                                                                                                                                        I have seen many oil shell posts, but still don’t know what the heck the actual OIL language looks like.

                                                                                                                                                                        1. 4

                                                                                                                                                                          OK thanks, maybe I should link these at the very top of the “A Glimpse of Oil”:

                                                                                                                                                                          http://www.oilshell.org/blog/tags.html?tag=osh-to-oil#osh-to-oil

                                                                                                                                                                          They are linked somewhere in the middle, which is probably easy to miss.

                                                                                                                                                                          It’s sort of on purpose, since Oil isn’t implemented yet, as I mention in the intro. But I think those posts give a decent idea of what it looks like (let me know if you disagree).

                                                                                                                                                                          1. 7

                                                                                                                                                                            I’ve seen your posts and hat around and never really understood what Oil was really about, but this link is really wonderful. The comparison to shell, the simplifications, the 4 different languages of shell vs the two of Oil, it all really clicked. Really cool project.

                                                                                                                                                                            1. 3

                                                                                                                                                                              I agree with the others. Until I see what’s your vision for the language, I’m not motivated to get involved.

                                                                                                                                                                              The only example you give contains “if test -z $[which mke2fs]”, which can’t be what you’re aiming at.

                                                                                                                                                                              IMHO If you really want Oil to be easy to use, you should take as much syntax from Python or Javascript as you can. And use similar semantics too.

                                                                                                                                                                              1. 11

                                                                                                                                                                                I’m willing to be convinced that a new syntax would be better for shell programming.

                                                                                                                                                                                I’m not very confident that moving towards an existing non-shell scripting language will get us there.

                                                                                                                                                                                The problem I have with writing shell programs in some non-shell language is that I expect to keep using the same syntax on the command line as I do in scripts I save to disk, and non-shell languages don’t have the things that make that pleasant. For example, a non-shell language has a fixed list of “words” it knows about, and using anything not on that list is a syntax error. That’s great in Python, where such a word is almost certainly a spelling error, but in a shell, most words are program names and I don’t want my shell constantly groveling through every directory in my $PATH so it knows all my program names before I try to use them.

                                                                                                                                                                                I’ve also never seen a non-shell language of any type with piping and command substitution as elegant as bash and zsh, but I’m willing to be convinced. I’m afraid, though, anyone in the “Real Language” mindset would make constructions such as diff <(./prog1 -a -b) <(./prog1 -a -c) substantially more verbose, losing one of the main reasons we have powerful shells to begin with.

                                                                                                                                                                                1. 3

                                                                                                                                                                                  Yes it has to be a hybrid. I talk a little about “command vs expression” mode in the post. I guess you’ll have to wait and see, but I’m aware of this and it’s very much a central design issue.

                                                                                                                                                                                  Of course “bare words” behave in Oil just as they do in bash, e.g.

                                                                                                                                                                                  echo hi
                                                                                                                                                                                  ls /
                                                                                                                                                                                  

                                                                                                                                                                                  I will not make you type

                                                                                                                                                                                  run(["echo", "hi"])
                                                                                                                                                                                  

                                                                                                                                                                                  :-)

                                                                                                                                                                                  One of the reasons I reimplemented bash from scratch is to be aware of all the syntactic issues. Process substitution should continue to work. In fact I’ve been contemplating this “one line” rule / sublanguage – that is, essentially anything that is one line in shell will continue to work.

                                                                                                                                                                                  Also, OSH and Oil will likely be composed, and OSH already implements the syntax you are familiar with. This is future work so I don’t want to promise anything specific, but I think it’s possible to get the best of both worlds – familiar syntax for interactive use and clean syntax for maintainable programs.

                                                                                                                                                                                  1. 1

                                                                                                                                                                                    For example, a non-shell language has a fixed list of “words” it knows about, and using anything not on that list is a syntax error. That’s great in Python, where such a word is almost certainly a spelling error, but in a shell, most words are program names and I don’t want my shell constantly groveling through every directory in my $PATH so it knows all my program names before I try to use them.

                                                                                                                                                                                    tclsh is an interesting example of not having this problem.

                                                                                                                                                                                    I’m afraid, though, anyone in the “Real Language” mindset would make constructions such as diff <(./prog1 -a -b) <(./prog1 -a -c) substantially more verbose, losing one of the main reasons we have powerful shells to begin with.

                                                                                                                                                                                    You get constructs that look like this in pipey libraries for functional languages (the likes of fs2 or conduit), though they’re controversial.

                                                                                                                                                                                    1. 1

                                                                                                                                                                                      Well put. There’s also loads of muscle memory built up that is hard to leave behind. That point keeps me off of fish; I like almost everything else about it, but I don’t see why it can’t have a separate bash-like syntax.

                                                                                                                                                                                    2. 2

                                                                                                                                                                                      OK that’s fair. I’m on the fence about outside contributions – some people have contributed, but I think most projects have more users and more “bones” before getting major contributions. I’m really looking for people to test OSH on real shell scripts, not necessarily adopt it or contribute. (although if you can figure out the code, I applaud you and encourage your contributions :) )

                                                                                                                                                                                      As I mention in the post, the OSH language is implemented (it runs real shell scripts), but Oil isn’t.

                                                                                                                                                                                      There will be a different way to test if a string is empty, but for the auto-conversions, if you have [ -z foo ], it will become test -z foo. The auto-conversion is going to make your script RUN, not make it idiomatic.

                                                                                                                                                                                      As far as appearance, you can definitely think of Oil as a hybrid between shell and Python/JavaScript.

                                                                                                                                                                                      I can probably write up a cheatsheet for those curious. I haven’t really done so because it feels like promising something that’s not there. But since I’ve written so many blog posts, it might be worth showing something in the style of:

                                                                                                                                                                                      https://learnxinyminutes.com/docs/bash/

                                                                                                                                                                                  2. 0

                                                                                                                                                                                    Yes and I don’t think I’ll care about it until I do. It could look like APL for all we know.