1. 3

    I love AoC! I’m doing it in Rust for my second year in a row, and prior to that I used it to learn me an Elixir. (Edit: https://github.com/gamache/advent2018 if you wanna heckle me)

    AoC hits such a sweet spot between the dryness of Project Euler where you’re solving ten-word math problems and the showoff problems in Google Foobar where you’re mostly reading math.stackexchange and journal articles that came out under three years ago.

    1. 2

      Datum: About two years ago I got a Thinkpad T450 with a dock for about $500. Unfortunately the BSDs haven’t been a good fit – OpenBSD is great other than wifi, and FreeBSD is kind of a mess. I’ve been happy with Antergos Linux lately. I’m considering replacing it with an X220 or something like that.

      1. 1

        And now I’ve gone and bought myself an i7 X220 for $150 shipped. We’ll see how this goes!

      1. 5

        Is there a reason not to use something like kerl to install a more modern version of Erlang? v19 is two years old and there have been some significant performance boosts in the interim.

        1. 2

          I’ve had good results with asdf, but I haven’t tried it out on OpenBSD yet.

          1. 6

            For what it’s worth, asdf just uses kerl for it’s erlang builds.

        1. 2

          Hi! Appcues makes software that delivers on a promise I can believe in. Our official mission is to help teams build products their users love, and our niche is letting growth teams build and iterate on user experience flows without heaping shitwork on the engineering team.

          The tech is built with ES6/7 (React mostly) on the web, Swift on the handset, and Elixir behind the curtain, with lots of persistence layers (DynamoDB, Postgres, Firebase, Redis, S3, Fastly, SQS, etc) and a heap of AWS and CloudFormation. We solve product problems, and we get to solve engineering problems on the way.

          We are around 70 people in Boston. Seventeen of us are engineers. We’re more of a “get shit done” office than a “Nerf gun war on Razor scooters” establishment. Open floor plan in a classic brick-and-hardwood warehouse, so it’s a volume war between customer calls and Cherry MX Blues. Good sunlight, abundant lunch options.

          The type of engineers who are most successful here are self-directed and want to own things.

          We’re looking for frontend, backend, and ops/automation engineers. Message me if you’d like to talk!

          1. 7

            The “facade pattern”, and honestly all classic Gang of Four design patterns, carry baggage that I like to think I’ve let go of in my transition into the world of functional programming.

            It is baggage if you hang onto it and apply it wrongly. It is useful knowledge if you find yourself re-discovering it in another guise. The important part of the GoF patterns is not their implementation, but what possibilities the designs themselves afford. Those aesthetics come in handy regardless of paradigm!

            1. 3

              I rant about this a lot afk. I feel like GoF is not the most appropriate material for most college students, because the value of the patterns really pops out once you’ve solved one of those problems two or three times[, poorly]. The book is a mixed bag in terms of patterns that exist regardless of language vs. patterns that exist to overcome the limitations of some languages, but that mostly means a bunch of languages absorbed those patterns at the core level.

              Everything sounds so grandiose once it lands in a textbook, but the facade pattern in particular is amenable to a two- or three-sentence explanation with a tl;dr of “Don’t worry about splitting things up if that makes life easier for you – just do this to put everything together at the end.”

            1. 5

              The amount of pearl-clutching in this Twitter thread is barely short of astounding. People have some quaint assumptions about how software services collect and use usage data that originates inside the platform. What service wouldn’t want to measure how people use it? What company Spotify’s size got there without measuring things?

              1. 6

                Spotify’s discovery weekly playlist, trending charts, song/album-based radio, daily genre-based playlists, “popular in this location” charts, artist suggestions, playlist auto-extend - all of these would not be possible without data collection. And these are actually things I use and help me find music from around the world I wouldn’t otherwise. The main thing is that there be enforcement inside Spotify that none of the employees are peeking at the data of a particular user. We need regular inspections and certifications for this sort of a thing. I’m fine with anonymized data analysis. (And de-anonymization falls under “not being able to access the data of a particular user”.)

                1. 4

                  You must be a creator! Please don’t disdain the consumers’ responses. Just… observe. This is important.

                  To my eye, a good outcome of these GDPR Data Extracts will be that consumers/users demand control of their devices!

                  I’ve been trying to tell people for years what it means, what actually happens, when they use ‘free’ services every waking moment. They use them casually, and excitedly, and while in mourning, and on that day they fell in love.

                  Spotify knows when you’re drunk. (Well, they might, if they figured out how to extract that.)

                  Google knows when you’re aroused (Well, they might, if they figured out how to extract that)–and if you use their communication services, or Android, they might even put two and two together and figure out if you have a crush on any specific person in your contacts list…

                  Don’t get me started on politics!

                  I remember, about exactly twenty years ago, I got in the habit of running tcpdump constantly, and through that I identified which programs would talk on the network. In those days, my system didn’t generate a constant stream of traffic when it was idle, so it was easy. I was offended to see some apps “phone home” when there was clearly no benefit to me, the user. Since I had full control of my PC in 1998, I could block it, intercept it, delete the app, hexedit the app, whatever I liked.

                  You know what I mean? It’s one thing for Spotify to tell their app to tell your phone to send all that data. It’s a whole different thing that your phone DID it and does not offer you an audit mechanism!

                  1. 2

                    On the other hand some consumers give their data knowing that it’s an exchange for features they want.

                    Many people like FB’s targeted ads!

                1. 1

                  Please use video files that play in all browsers :’)

                  1. 4

                    Apple chooses to not support WebM (eight years and counting!), and you choose to use Safari. Better alternatives exist.

                    1. 2

                      It is and always has been the responsibility of the developer to test cross-browser compatibility. Users have reasons for their choices, and if a webpage is broken they will simply leave. Fortunately, this is one of the easy cases: the HTML standard has a built-in way to ensure the presence of a compatible video format.

                  1. 22

                    After writing Go for 5 years, I’d recommend Rust for C developers. It’s more complicated than Go for sure, but also has more to offer. The lack of garbage collection and support of generics are definitely a plus compared to Go.

                    Go is a better language for junior devs, but I wouldn’t call C programmers junior. They should be able to digest Rust’s complexity.

                    1. 9

                      They should be able to digest Rust’s complexity.

                      Non trivial amount of C programmers are still doing C to avoid additional complexity. Not everyone wants a kitchen & sink programming language.

                      1. 6

                        Rust can definitely get overly complex if the developers show no constraint (i.e. type golf), but the control afforded by manual memory management makes up for it, IMHO. Unless it’s a one-run project, performance will eventually matter, and fixing bad allocation practices after the fact is a lot harder than doing it right from the beginning.

                        1. 1

                          Couldn’t they just start with a C-like subset of Rust adding from there to their arsenal what extra features they like? It’s what I was going to recommend to those trying it for safety-critical use since they likely know C.

                          1. 9

                            I think it’s rather difficult to write rust in a C like manner. This contrasts with go, where you can basically write C code and move the type declarations around and end up with somewhat unidiomatic but working go.

                            1. 3

                              I think C++ as a better C works because you still have libc besides the STL, etc. The Rust standard library uses generics, traits, etc. quite heavily and type parameters and lifetime parameters tend to percolate to downstream users.

                              Though I think a lot of value in Rust is in concepts that may initially add some complexity, such the borrow checker rules.

                              1. 3

                                The problem with C++ is its complexity at the language level. I have little hope of teams of people porting various tools for static analysis, verification, and refactoring to it that C and Java already have. Certifying compilers either. C itself is a rough language but smaller. The massive bandwagon behind it caused lots of tooling to be built, esp FOSS. So, I now push for low-level stuff either safer C or something that ties into C’s ecosystem.

                              2. 4

                                You could argue the same for C++ (start with C and add extra features). Complexity comes with the whole ecosystem from platform support (OS, arch), compiler complexity (and hence subtle difference in feature implementations) to the language itself (C++ templates, rust macros). It’s challenging to limit oneself to a very specific subset on a single person project, it’s exponentially harder for larger teams to agree on a subset and adhere to it. I guess I just want a safer C not a new C++ replacement which seems to be the target for newer languages (like D & Rust).

                                1. 4

                                  It’s challenging to limit oneself to a very specific subset on a single person project, it’s exponentially harder for larger teams to agree on a subset and adhere to it.

                                  I see your overall point. It could be tricky. It would probably stay niche. I will note that, in the C and Java worlds, there’s tools that check source code for compliance with coding standards. That could work for a Rust subset as well.

                                  “I guess I just want a safer C not a new C++ replacement which seems to be the target for newer languages (like D & Rust).”

                                  I can’t remember if I asked you what you thought about Cyclone. So, I’m curious about that plus what you or other C programmers would change about such a proposal.

                                  I was thinking something like it with Rust’s affine types and/or reference counting when borrow-checking sucks too much with performance acceptable. Also, unsafe stuff if necessary with the module prefixed with that like Wirth would do. Some kind of module system or linking types to avoid linker errors, too. Seemless use of existing C libraries. Then, an interpreter or REPL for the productivity boost. Extracts to C to use its optimizing and certifying compilers. I’m unsure of what I’d default with on error handling and concurrency. First round at error handling might be error codes since I saw a design for statically checking their correct usage.

                                  1. 3

                                    I can’t remember if I asked you what you thought about Cyclone. So, I’m curious about that plus what you or other C programmers would change about such a proposal.

                                    I looked at it in the past and it felt like a language built on top of C similar to what a checker tool with annotations would do. It felt geared too much towards research versus use and the site itself states:

                                    Cyclone is no longer supported; the core research project has finished and the developers have moved on to other things. (Several of Cyclone’s ideas have made their way into Rust.) Cyclone’s code can be made to work with some effort, but it will not build out of the box on modern (64 bit) platforms).

                                    However if I had to change Cyclone I would at least drop exceptions from it.

                                    I am keeping an eye on zig and that’s closest to how I imagine a potentially successful C replacement - assuming it takes up enough community drive and gets some people developing interesting software with it.

                                    That’s something Go had nailed down really well. The whole standard library (especially their crypto and http libs) being implemented from scratch in Go instead of being bindings were a strong value signal.

                                    1. 2

                                      re dropping exceptions. Dropping exceptions makes sense. Is there another way of error handling that’s safer or better than C’s that you think might be adoptable in a new, C-like language?

                                      re Zig. It’s an interesting language. I’m watching it at a distance for ideas.

                                      re standard library of X in X. Yeah, I agree. I’ve been noticing that pattern with Myrddin, too. They’ve been doing a lot within the language despite how new it is.

                                      1. 4

                                        Dropping exceptions makes sense. Is there another way of error handling that’s safer or better than C’s that you think might be adoptable in a new, C-like language?

                                        Yes, I think Zig actually does that pretty well: https://andrewkelley.me/post/intro-to-zig.html#error-type

                                        edit: snippet from the zig homepage:

                                        A fresh take on error handling that resembles what well-written C error handling looks like, minus the boilerplate and verbosity.

                                        1. 2

                                          Thanks for the link and tips!

                            2. 7

                              Short build/edit/run cycles are appreciated by junior and senior developers alike. Go currently has superior compilation times.

                              1. 10

                                Junior and senior developers also enjoy language features such as map, reduce, filter, and generics. Not to mention deterministic memory allocation, soft realtime, forced error checking, zero-cost abstractions, and (of course) memory safety.

                                1. 3

                                  Junior and senior developers also enjoy language features such as map, reduce, filter, and generics.

                                  Those are great!

                                  deterministic memory allocation, soft realtime, forced error checking, zero-cost abstractions, and (of course) memory safety.

                                  Where are you finding juniors who care about this stuff? (no, really - I would like to know what kind of education got them there).

                                  1. 8

                                    I cared about those things, as a junior. I am not sure why juniors wouldn’t care, although I suppose it depends on what kind of software they’re interested in writing. It’s hard to get away with not caring, for a lot of things. Regarding education, I am self-taught, FWIW.

                                  2. 1

                                    Map, reduce and filter are easily implemented in Go. Managing memory manually, while keeping the GC running, is fully possible. Turning off the GC is also possible. Soft realtime is achievable, depending on your definition of soft realtime.

                                    1. 1

                                      Map, reduce and filter are easily implemented in Go

                                      How? Type safe versions of these, that is, without interface{} and hacky codegen solutions?

                                      1. 1

                                        Here are typesafe examples for Map, Filter etc: https://gobyexample.com/collection-functions

                                        Implementing one Map function per type is often good enough. There is some duplication of code, but the required functionality is present. There are many theoretical needs that don’t always show up in practice.

                                        Also, using go generate (which comes with the compiler), generic versions are achievable too. For example like this: https://github.com/kulshekhar/fungen

                                        1. 9

                                          When people say “type safe map/filter/reduce/fold” or “map, reduce, filter, and generics” they are generally referring to the ability to define those functions in a way that is polymorphic, type safe, transparently handled by the compiler and doesn’t sacrifice runtime overhead compared to their monomorphic analogs.

                                          Whether you believe such facilities are useful or not is a completely different and orthogonal question. But no, they are certainly not achievable in Go and this is not a controversial claim. It is by design.

                                          1. 1

                                            Yes, I agree, Go does not have the combination of type safety and generics, unless you consider code generation.

                                            The implementation of generics in C++ also works by generating the code per required type.

                                            1. 5

                                              The implementation of generics in C++ also works by generating the code per required type.

                                              But they are not really comparable. In C++, when a library defines a generic type or function, it will work with any conforming data type. Since the Go compiler does not know about generics, with go generate one can only generate ‘monomorphized’ types for a set of predefined data types that are defined an upstream package. If you want different monomorphized types, you have to import the generic definitions and run go generate for your specific types.

                                              unless you consider code generation

                                              By that definition, any language is a generic language, there’s always Bourne shell/make/sed for code generation ;).

                                              1. 1

                                                That is true, and I agree that go does not have support for proper generics and that this can be a problem when creating libraries.

                                              2. 3

                                                That’s why I said “transparently handled by the compiler.” ;-)

                                                1. 0

                                                  I see your point, but “go generate” is provided by the go compiler, by default. I guess it doesn’t qualify as transparent since you have to type “go generate” or place that command in a build file of some sort?

                                                  1. 1

                                                    Yes. And for the reasons mentioned by @iswrong.

                                                    My larger point here really isn’t a technicality. My point is that communication is hard and not everyone spells out every point is precise detail, but it’s usually possible to infer the meaning based on context.

                                                    1. -1

                                                      I think the even larger point is that for a wide range of applications, “proper” and “transparent” generics might not even be needed in the first place. It would help, yes, but the Go community currently thrives without it, with no lack of results to show for.

                                                      1. 1

                                                        I mean, I’ve written Go code nearly daily since before it was 1.0. I don’t need to argue with you about whether generics are “needed,” which is a pretty slimy way to phrase this.

                                                        Seems to me like you’re trying to pick a fight. I already said upthread that the description of generics is different from the desire for them.

                                                        1. -2

                                                          You were the first to change the subject to you and me instead of sticking to the topic at hand. Downvoting as troll.

                                    2. 1

                                      By superior, I guess you meant shorter?

                                      1. 2

                                        Compiling a very large go project with a cold cache might take a minute (sub-second once the cache is warm).

                                        Compiling a fairly small rust app with a warm cache has taken me over a minute (I think it’s a little better than that now).

                                        1. 1

                                          Yes, and superior to Rust in that regard. Also the strict requirement to not have unused dependencies contributes to counteract dependency rot, for larger projects.

                                    1. 6

                                      This is only the “new” stuff. An older trove (with arguably better material) is here: http://bofh.bjash.com/

                                      1. 18

                                        IANAL, but Massachusetts (where I live) has a Right To Repair law in place, under which manufacturers (e.g., Bosch) are legally required to make official repair manuals, materials, etc. available to consumers for a reasonable cost. If Bosch sells their e-bikes in Mass, chances are they’re on the hook for this.

                                        EDIT: Never mind, motorized bicycles do not count as motor vehicles in MA. The Right to Repair Act does not apply here.

                                        1. 8

                                          I’d like to see a right to repair law applied to almost everything. It’s horrifying how many devices get thrown away because they had a faulty switch or old battery.

                                          1. 3

                                            I would like to see that in EU as well…

                                            1. 1

                                              I thought the right to repair is already well established in the EU.

                                              1. 1

                                                Is it? It didn’t notice it being voted on yet.

                                                1. 2

                                                  I could be wrong, but I remember back when there was issue with farmers in America not being able to repair their equipment that they were getting hold of firmware updates from Europe so that they could do so - something about the European ones not having code that banned third party repair.

                                          1. 12

                                            Say what you will about the Ruby community, but I’ve never seen them fly into a moral panic over a tiny syntax improvement to an inelegant and semi-common construct.

                                            The person-years and energy spent bikeshedding PEP 572 are just astoundingly silly.

                                            1. 7

                                              Say what you will about the Ruby community, but I’ve never seen them fly into a moral panic over a tiny syntax improvement to an inelegant and semi-common construct.

                                              Try suggesting someone use “folks” instead of “guys” sometime…

                                              1. 13

                                                I switched to folks and do you know how satisfying of a word it is to say? “Hey folks? How’s it going folks? Listen up folks!” I love it.

                                                On the other hand the interns weren’t too keen on “kiddos.”

                                                1. 6

                                                  I’ve gotten used to saying “’sup, nerds” or “what are you nerds up to?”

                                                  1. 5

                                                    A man/woman (or nerd, I guess) after my own heart! This has been my go-to for a while, until one time I walked into my wife’s work (a local CPA / tax service) and said, “What up, nerds?” It didn’t go over so well and apparently I offended some people – I guess “nerd” isn’t so endearing outside of tech?

                                                    Thankfully, I don’t think I learned anything from the encounter.

                                                    1. 3

                                                      It’s not endearing within tech to anyone over 40.

                                                      1. 2

                                                        I generally only use it in a technical setting – so within my CS friend group from college, other programmers at work, etc… whenever it’s clear that yes, I am definitely not trying to insult people because I too am a nerd.

                                                2. 1

                                                  as @lmm notes above, a minimalist, consistent syntax is an important part of python’s value proposition. in ruby’s case, adding syntactic improvements is aligned with their value proposition of expressiveness and “programmer joy”, so it’s far less controversial to do something like this.

                                                1. 33

                                                  This “there are no full stack devs” meme is horseshit. I’ll accept that keeping up with web frontend (especially JS) is very challenging lately, and requires a substantial investment of time. But I have experience doing every single one of the “impossible” list of skills, even having used most of these skills at the same company. We’re not unicorns, we just have more than five years in the field.

                                                  My take on it is that full-stack development is really only relevant on very small teams (1-5 devs), and that specialization happens from there, and that’s a good thing. Looking for full-stack devs on a team that’s bigger than this is usually the result of lazy resource planning. But when you don’t have a lot of hands on keyboards, full-stack or “T-shaped” developers are a great asset.

                                                  1. 15

                                                    I find it pretty funny to see this article on Lobsters, a site where I personally exercise every skill in the “impossible” list.

                                                    (OK, except for a front-end framework because we don’t need one, though I’ve worked with React.)

                                                    1. 9

                                                      Agreed. I’m really sick of this meme too. There are a LOT of apps/sites out there that are small, simple, and serve a limited audience very well. Not every app needs tons of developers. It’s really insulting to us full-stack people who take pride in keeping those apps running, to imply or outright say we must be bad at our jobs.

                                                      1. 5

                                                        It is rare for me to hear a dev say what they work on is ‘simple,’ even if it is. I’ve felt that a lot of programming in industry is somewhat simple with mountains of incidental complexity brought on by inexperience, poor practices, bad languages and paradigms, and unrelenting schedules. But devs seem unable to separate these things from one another, so it feels taboo to say something like that.

                                                        1. 3

                                                          At least half of what we all do is data shoveling. Simple doesn’t mean easy though, it just means uncomplicated. Digging a six foot hole is simple.

                                                      2. 5

                                                        “Keeping up with the frontend” is a bit rough, right?

                                                        Like, the products we work on don’t magically fall apart every time a new framework comes out–we do this to ourselves.

                                                        1. 2

                                                          I’ve done all those things as well, and web isn’t really my field. I really thought this would be something along the lines of what @technomancy said, in which case I would not yet qualify. And I fully agree with @hwayne’s comment, and simply consider myself a generalist.

                                                          1. 2

                                                            Agreed. There definitely are full stack developers, and while they need to have irons in a lot of dumpster fires to remain up to date on all of the fads, the collection of moving parts is fairly small really: some database knowledge, some SOA knowledge, and some presentation knowledge.

                                                            I think there’s some nuance missing in your “full-stack development is for small teams” idea: I agree with that part of it, but the part that growing the team means adding specialisation seems to imply that growing a team is natural and inevitable, so that small generalist teams evolve into large specialist teams. Either is a way to staff a software team, software teams have probably succeeded or failed using either approach, and a well-performing small team of generalists will probably continue to deliver successfully without adding some specialists. A well-performing large team of specialists will probably continue to deliver successfully, too.

                                                            1. -3

                                                              This “there are no full stack devs” meme is horseshit.

                                                              Saying it’s horseshit is, itself, horseshit unless you have a syllabus which, when mastered, will make someone a full-stack developer.

                                                              Until then, it’s equivalent to being “Cool”:

                                                              What makes someone “Cool”? Being “Cool”.

                                                              OK… who’s “Cool”? Not you…

                                                              1. 4

                                                                There’s no single syllabus; it all depends on the business requirements, which drive decisions about the software stack. If you can solve every problem encountered with that software stack, congratulations – to that business, you are a full-stack developer.

                                                            1. 11

                                                              You’re not a full-stack developer until you design your own instruction architecture and written a compiler for it.

                                                              1. 5

                                                                This is why I hate the meme: it turns a web developer into a “full-stack” developer when former made sense but later conflicts with previous meaning of software stack. It was the whole setup. They watered the term down much like crypto is cryptocurrencies instead of cryptography.

                                                                True full-stack developers include Chuck Moore, Niklaus Wirth, and the folks that did NAND2Tetris.

                                                                1. 4

                                                                  I think taking “full-stack” to mean “well-versed in all relevant technologies the engineering team will be customizing” is a lot less prone to strawman attacks.

                                                                  1. 3

                                                                    I don’t think it even needs to include “well-versed”. “Okay at using them” is good enough for me.

                                                                    1. 2

                                                                      There are plenty of ways to convey that idea without the whole “denying the existence of over half the levels of abstraction you build upon” part.

                                                                    2. 3

                                                                      With all due respect to Wirth and Moore, who have both done amazing work, have either of them spent time in the last decade building with modern web technologies? Otherwise we can’t call them full stack developers ;)

                                                                      1. 1

                                                                        Damnit, you got me! Lmao. Ok, pre-Web, full-stack developers. (pauses) That should be OK.

                                                                        Now, we need some full-stack developers with Web. I’d start with people who have done hardware and at least RTOS projects. Then, look to see if they’ve done the web stuff.

                                                                  1. 33

                                                                    While I think a website like this would make sense in a few years, right now I think GDPR is complicated, confusing, and scary enough to a lot of companies that they are going to make mistakes. I’d rather help them do it better than mock them.

                                                                    1. 15

                                                                      As one of the thousands of engineers who had to figure out how to shoehorn a six-month compliance project into a lean team’s packed roadmap, I concur. This wasn’t easy, not even at a company that respects user data to begin with. Lots of the jokes I’ve seen about GDPR right now just lessen my opinion of the teller.

                                                                      1. 23

                                                                        On the other hand, we’ve all had literally more than 2 years to work on said six-month compliance project, and the fact that so many companies try to push on until the very end to start working on it is the actual problem here IMO.

                                                                        1. 4

                                                                          Not from my point of view – who cares if companies just woke up to GDPR two weeks ago, if I don’t use them for data processing? None of my actual pain came from that. But I definitely spent a lot of time working on GDPR when I’d rather have been building product, other deadlines slipped, things moved from To-Do to Backlog to Icebox because of this. We’re ready for GDPR, but that stung.

                                                                          1. 3

                                                                            I was essentially trying to put “People like you don’t get to complain about it being hard to fit something into a certain time period when they had literally 4 times that amount of time to do it.” ^__^

                                                                            1. 3

                                                                              Well, if people like you (who didn’t even do the work) get to complain, then so do I! If someone tells me they’re gonna punch me in the face, then they punch me in the face, I still got punched in the face.

                                                                              1. 4

                                                                                I did our GDPR planning and work, and I’m so glad to see it in effect. The industry is finally gaining some standards. Sometimes it’s time to own-up that you care more about your own bottom-line than doing the right thing, if you complain about having to give up a “rather have been building product” attitude.

                                                                                1. 1

                                                                                  Sometimes if you don’t build a product, GDPR compliance becomes irrelevant because you never get a company off the ground. As a one-person platform team until last September, I don’t regret how I prioritized it.

                                                                                2. 6

                                                                                  Well, if people like you (who didn’t even do the work) get to complain, then so do I!

                                                                                  I actually did do the work. But either way, complaining about it being a pain overall is just fine, because it is. On the other hand, explicitly complaining that because you had to do it in 6 months you had issues fitting it in, had other deadlines slip, and had to essentially kill other to-do’s is a very different thing. If you’d used the extra 18 months, I bet you’d have had much less issues with other deadlines.

                                                                                  If someone tells me they’re gonna punch me in the face, then they punch me in the face, I still got punched in the face.

                                                                                  This analogy doesn’t even make sense in context…

                                                                                  1. 6

                                                                                    If you’d used the extra 18 months, I bet you’d have had much less issues with other deadlines.

                                                                                    I’ll totally remember this for next time.

                                                                        2. 25

                                                                          Well, I agree in general, but this article specifically highlights some cases of just plain being mean to your users. I’m okay with mocking those.

                                                                          1. 7

                                                                            I disagree. GDPR is expensive to get wrong so the companies aren’t sure what to expect. They are likely being conservative to protect themselves.

                                                                            1. 7

                                                                              They were not conservative in tracking users, and spending for tracking and spying on users was not expensive?

                                                                              As a user I don’t care about the woes of companies. They forced the lawmakers to create these laws, as they were operating a surveilance capitalism. They deserve the pain, the costs, and the fear.

                                                                              1. 1

                                                                                and spending for tracking and spying on users was not expensive?

                                                                                Tracking users is very cheap, that’s why everyone can and does do it. It’s just bits.

                                                                                As a user I don’t care about the woes of companies.

                                                                                Feel free not to use them, then. What I am saying is that GDPR is a new, large and expansive, law with a lot of unknowns. Even the regulators don’t really know what the ramifications will be. I’m not saying to let companies not adhere to the law, I’m just saying on the first day the world would probably benefit more from helping the companies comply rather than mocking them.

                                                                                EDIT:

                                                                                To be specific, I think companies like FB, Google, Amazon, etc should be expected to entirely comply with the law on day one. It’s smaller companies that are living on thinner margins that can’t necessarily afford the legal help those can that I’d want to support rather than mock.

                                                                          2. 10

                                                                            It’s not like the GDPR was announced yesterday. It goes live tomorrow after a two year onboarding period.

                                                                            If they haven’t got their act in order after two years, it’s reasonable to name and shame.

                                                                          1. 4

                                                                            Elixir is an obvious alternative. However, maybe another option is a language close to Erlang that compiles to it or its bytecode that just fixes issues like this. Esp syntax.

                                                                            1. 4

                                                                              My feeling is that Elixir is exactly this. While it brings a bit of runtime, you’re close enough to the Erlang VM to be able to do pretty much everything you can do in Erlang.

                                                                              If you ignore the standard library etc. and just focus on the language, it does pretty much what you describe: Fix the shortcomings regarding pattern matching, variable naming, …

                                                                              1. 4

                                                                                I’m not aware of an Elixir runtime other than the Erlang VM. At runtime, Elixir code is just Erlang code.

                                                                                1. 2

                                                                                  Runtime is likely the wrong word. I was getting at the small pieces of code they’re running in the Erlang VM (elixir_sup and its children). Of course, Elixir modules just boil down to normal Erlang modules.

                                                                            1. 7

                                                                              Massive kudos to this guy for not putting up with this SJW madness. I wish him all the best!

                                                                              We at suckless are heavily opposed to code of conducts and discriminatory organizations of any shape or form.

                                                                              1. 11

                                                                                Suckless takes a similarly principled stand against runtime config files.

                                                                                1. 8

                                                                                  How does suckless oppose discrimination?

                                                                                  1. 13

                                                                                    It’s very simple. Any non-technological matters during software development move the software away from its ideal form. Thus, to make your software suck less, you only take the best developers no matter what race, gender, heritage, etc. these persons have.

                                                                                    We do not believe in equal status (i.e. e.g. forcibly obtaining a 50/50 gender ratio), as this immediately leads to discrimination. We do however strongly believe in equal rights, naturally. You also naturally cannot have both.

                                                                                    1. 94

                                                                                      Any non-technological matters during software development move the software away from its ideal form.

                                                                                      Suckless makes a window manager: a part of a computer that human beings, with all their rich and varying abilities and perspectives, interact with constantly. Your choices of defaults and customization options have direct impact on those humans.

                                                                                      For example, color schemes determine whether color-blind people are able to quickly scan active vs inactive options and understand information hierarchy. Font sizes and contrast ratios can make the interface readable, difficult, or completely unusable for visually impaired people. The sizes of click targets, double-click timeouts, and drag thresholds impact usability for those with motor difficulties. Default choices of interface, configuration, and documentation language embed the project in a particular English-speaking context, and the extent to which your team supports internationalization can limit, or expand, your user base.

                                                                                      With limited time and resources, you will have to make tradeoffs in your code, documentation, and community about which people your software is supportive and hostile towards. These are inherently political decisions which cannot be avoided. This is not to say that your particular choices are wrong. It’s just you are already engaged in “non-technical”, political work, because you, like everyone else here, are making a tool for human beings. The choice to minimize the thought you put into those decisions does not erase the decisions themselves.

                                                                                      At the community development level, your intentional and forced choices around language, schedule, pronouns, and even technical terminology can make contributors from varying backgrounds feel welcome or unwelcome, or render the community inaccessible entirely. These too are political choices. Your post above is one of them.

                                                                                      There is, unfortunately, no such thing as a truly neutral stance on inclusion. Consider: you wish to take only the best developers, and yet your post has already discouraged good engineers from working on your project. Doubtless it has encouraged other engineers (who may be quite skilled!) with a similar political view to your own; those who believe, for instance, that current minority representation in tech is justified, representing the best engineers available, and that efforts to change those ratios are inherently discriminatory and unjust.

                                                                                      Policies have impact. Consider yours.

                                                                                      1. 7

                                                                                        I don’t know if that was your goal, but this is one of the best arguments for positive discrimination I’ve read. Thanks for posting it, and also thanks for noting that all decisions have some inherent politics whether we like it or not.

                                                                                        Unfortunately there is simply no solution: positive discrimination is opposed to meritocracy. Forced ratios are definitely an unethical tool, as they are a form of discrimination. However, this unethical tool brings us to a greater good, which is a final product that incorporates diversity on its design and accommodates more users, which is a desirable goal on itself, for the reasons you explained.

                                                                                        1. 4

                                                                                          color schemes determine whether color-blind people are able to quickly scan active vs inactive options and understand information hierarchy. Font sizes and contrast ratios can make the interface readable, difficult, or completely unusable for visually impaired people. The sizes of click targets, double-click timeouts, and drag thresholds

                                                                                          Let me see if I understand what you’re saying. Are you claiming that when color schemes, font sizes and drag thresholds are chosen that that is a political decision? I think that many people would find that quite a remarkable claim.

                                                                                          1. 3

                                                                                            It’s impossible to not be political. You can be “the status quo is great and I don’t want to discuss it”, but that’s political. The open source “movement” started off political - with a strong point of view on how software economics should be changed. In particular, if you say a CoC that bans people from being abusive is unacceptable, you are making a political statement and a moral statement.

                                                                                            1. 3

                                                                                              It’s impossible to not be political

                                                                                              Could I ask you to clarify in what sense you are using the word “political”?

                                                                                              Merriam-Webster (for example) suggests several different meanings that capture ranges of activity of quite different sizes. For example, I’m sure it’s possible to act in a way which does not impinge upon “the art or science of government” but perhaps every (public) action impinges upon “the total complex of relations between people living in society”.

                                                                                              In what sense did you use that term?

                                                                                              1. 4

                                                                                                Let’s start off with a note about honesty. FRIGN begins by telling us “We do not believe in equal status (i.e. e.g. forcibly obtaining a 50/50 gender ratio)” as if someone was proposing the use of force to produce a 50/50 gender ratio - and we all know that wasn’t proposed by anyone. There’s no way to discuss this properly if people are going to raise false issues like that. What comment’s like FRIGN’s indicate is an unwillingness to have an open and honest conversation. The same bogus rhetoric is at the heart of Damore’s memo: he claims to be in favor of equal rights and just against mythical demand for 50/50 gender equality so that he can oppose obviously ineffective affirmative action programs at Google where 80% of technical staff are male (Damore’s misappropriation of science is similarly based on an objection to a position that nobody ever argued.).

                                                                                                The next point is that some people are objecting that a CoC and a minority outreach program are “political”. That’s true, but it involves the use of the more general meaning of “political” which the Collins dictionary provides as “the complex or aggregate of relationships of people in society, esp those relationships involving authority or power”. If we are using that definition, of course a CoC and a minority outreach program are political, but opposition to a CoC and a minority outreach program fits the definition as well. If you have an opinion one way or another, your opinion is political. You can’t sensibly use this wide definition of political to label the effort to adopt a CoC and to recruit more minorities and then turn around and claim your opposition to those is somehow not political. So that’s what I mean by “it is impossible to not be political”. The question is a political question and those who try to claim the high ground of being objective, disinterested, non-political for their side of the question are not being straightforward (perhaps it’s just that they are not being straightforward with themselves).

                                                                                                1. 3

                                                                                                  I agree that a CoC, a minority outreach program, and opposition to a CoC all impinge upon “the complex or aggregate of relationships of people in society, esp those relationships involving authority or power”.

                                                                                                  Would you also agree that there is a popular ideological political movement in favour of CoCs (some combination of the feminist, civil rights and social justice movements)? Perhaps there is also a popular ideological movement against CoCs (some combination of MRAs and the alt right). Are you also claiming that if one claims a “neutral” stance on CoCs one is de facto supporting one of these ideologies?

                                                                                                  1. 3

                                                                                                    I’m not sure it is possible to have a neutral stance. In fact, I doubt it.

                                                                                                    1. 1

                                                                                                      Interesting! Do you also doubt it is possible to take any action that is neutral with regard to a political ideology?

                                                                                                      1. 3

                                                                                                        You are introducing something different. I don’t think you have to line up with one “side” or another, but you can’t avoid being a participant.

                                                                                                        1. 1

                                                                                                          You said “It’s impossible to not be political” so I’m trying to understand what you mean by that. So far I’m not clear whether you think every action is political. I’d appreciate it if you’d clarify your position.

                                                                                                          1. 2

                                                                                                            I’m making a very concrete assertion, which I sense does not fit into your schema. My assertion is that there is no neutrality on workplace equality and inclusion for anyone involved in the workplace. Anyone who, for example, participates in an open source development effort has a position on whether efforts should be made to make it more inclusive even if that position is “this is not important enough for me to express an opinion.”

                                                                                                            1. 1

                                                                                                              Thank you for clarifying. When you originally said “It’s impossible to not be political” I got the wrong impression.

                                                                                                              Do you also hold the same point of view when it comes to roughly comparable statements in other spheres? For example ‘Anyone who eats has a position on vegetarianism even if that position is “this is not important enough for me to express an opinion.”’?

                                                                                          2. 1

                                                                                            You’ve been quoted by LWN: https://lwn.net/Articles/753709/

                                                                                          3. 11

                                                                                            AKA shut up and hack? :)

                                                                                            1. 1

                                                                                              The suckless development process has no non-technical discussions?

                                                                                              How are the best developers identified?

                                                                                              1. 8

                                                                                                just curious, why would you need to identify the best developers? Wouldn’t the quality of their code speak for that?

                                                                                                1. 5

                                                                                                  I also fail to see what the reasoning is. Just send your code, get the non technical discussions out.

                                                                                                  1. -1

                                                                                                    Apparently, quoting @FRIGN from above, “to make your software suck less.”

                                                                                                  2. 8

                                                                                                    How are the best developers identified?

                                                                                                    I think this is a totally reasonable question, and one I’d like to see the answer too–if for no other reason than it might help those of us on other projects find more objective metrics to help track progress with.

                                                                                                    Do you all at suckless use something like:

                                                                                                    • defect rate
                                                                                                    • lines of code/feature shipped
                                                                                                    • execution time
                                                                                                    • space in memory, space in storage

                                                                                                    Like, what metrics do you use?

                                                                                                    1. 7

                                                                                                      You know, suckless is not a big company and the metrics that can be applied are more of a heuristic. A good developer is somebody who e.g. supplies a patch with a bug report, provides feedback to commits, makes contributions to the projects, thinks his commits through and doesn’t break stuff too often and does not personally identify with their code (i.e. is not butthurt when it’s not merged).

                                                                                                      What needs to be stressed here is that the metric “lines of code” is completely off. There are horrible programmers who spit out lots of code and excellent ones who over time drop more lines than they add. Especially the latter group is very present among us and thus the LOC-metric will only give false results. Same with execution time, you find that when not enough time is spent on a problem you end up solving it wrong, in the worst case having to start all over.

                                                                                                2. 5

                                                                                                  By being very diverse and doing fackelmärsche of course. https://suckless.org/conferences/2017/

                                                                                                  1. 3

                                                                                                    @FRIGN What’s the purpose of this “torchlight hike” in the context of producing code that sucks less? Don’t you see that the activities you choose to have during your conferences are a cultural stance, and because of that, can be perceived as exclusive by programmers that don’t recognize themselves in these activities?

                                                                                                    1. 0

                                                                                                      I get your point, but must honestly say that your argument sadly aligns with the ever-excluding and self-segregating destructful nature of cultural marxism. By eating food together at the conferences, do we exclude anorexics that might otherwise be willing to attend such a conference? I don’t drink any alcohol and never have. Still, it was not a problem when we went to a local Braukeller and some people drank alcohol and others like myself didn’t.

                                                                                                      The fundamental point I think is that one can never fully and analytically claim that a certain process is completely unaffected by something else. If we dive down into these details we would then move on and say that the different choice of clothings, hairstyle, means of travel and means of accomodation all affect the coding process at suckless. This can be taken further and further with no limit, as we all know about the butterfly effect. At some point it is just not measurable any more.

                                                                                                      If you ask me, this is a gross overstretching of what I said. There are quite a lot of people who do not attend the conferences but still work together with us on projects during that time. What really matters is that we e.g. do not ignore patches from these people or give them less relevance than those of others. To pick the example up: The torchlight hike did not affect any coding decision in a direct way, but it really bonded the team further together and was a very nice memory of this conference that I and the others are very fond of from what I’ve heard. On top of that, during the hike we were able to philosophize about some new projects of which some have become a reality. The net-gain of this event thus was positive.

                                                                                                      In classical philosophy, there are two main trains of thought when it comes to evaluating actions: Deontology and Teleology. Deontology measures the action itself and its ethical value, completely ignoring the higher goal in the process. Teleology is the opposite, evaluating actions only by their means to reach a goal, completely ignoring the value of the action itself. The best approach obviously should be inbetween. However, there is a much more important lesson that can be taken from here: When evaluating a decision, one needs to realize what they are measuring and what is unimportant for a decision. What I meant is that to reach the goal of software perfection, the gender and other factors of the submitters do not matter. So even though we here at suckless have a goal, we are not teleologists, as we just ignore the factors that do not matter for coding.

                                                                                                      It is an ethical question which norms you apply to a decision.

                                                                                                      If we look at organizations like Outreachy, one might be mistaken to think that they are deontologists, striving to improve processes. However, after closer inspection it becomes clear that this is not the case and they are actually working towards a certain goal, increasing the number of trans and minority people in such communities. No matter how you think about this goal, it makes one thing clear: When you are working towards such a goal and also do not ignore irrelevant factors in your norms (and they in fact do by not ignoring e.g. race and gender), you quickly end up discriminating against people.

                                                                                                      I hope this clears this up a bit, but as a short sentence, what can be taken from here is: When discussing ethical matters, it’s always important to make clear which norms are applied.

                                                                                                      1. 2

                                                                                                        fackelmärsche

                                                                                                        I’m not going to wade into anything else on this, but I’d like to just take a second and let you know that, while you may not mean it in this way the phrase “cultural marxism” is very, very often used as a stand in for “jews”. Some links for the record:

                                                                                                        https://www.splcenter.org/fighting-hate/intelligence-report/2003/cultural-marxism-catching

                                                                                                        https://newrepublic.com/article/144317/trumps-racism-myth-cultural-marxism https://www.smh.com.au/world/cultural-marxism--the-ultimate-postfactual-dog-whistle-20171102-gzd7lq.html

                                                                                                        1. 3

                                                                                                          It’s not my fault that some idiots don’t understand this term or it’s critical analysis. Cultural marxism, as the term implies, is the classical theory of marxism applied to culture. It has nothing to do with jews directly, it’s just an idea. If you know any better term to describe it, please let me know.

                                                                                                          Anyway, in the philosophical realms it’s known as ‘Critical Theory’, which originated in the Frankfurt School. However, nobody knows this term.

                                                                                                          Unless a better term is found, I disregard your argument and won’t accept your attempt to limit language of perfectly acceptable words to describe an idea. At the end of the day, terminology must be found that adequately describes what a certain idea is, and I see no reason why this should be wrong.

                                                                                                          Regarding the torch hike: Yes, marching with torches was abused by the NSDAP as a means of political rallying. However, at least in Germany, it is a much older and deeper-reaching tradition that dates back hundreds of years.

                                                                                                          1. 0

                                                                                                            You have amply demonstrated that you don’t know anything about the topic. You could start with the decent Wikipedia article. https://en.wikipedia.org/wiki/Frankfurt_School

                                                                                                          2. 2

                                                                                                            wow, uh, kind of a weird red flag that pointing this out is getting seriously downvoted. I picked these links pretty quickly, and anybody who comes behind and reads this and wonders how serious this is, do yourself a favor and image search and see how many memes have the star of david, greedy merchant, world strangling octopus or any of a number of openly anti-semitic imagery. Its not hidden, its not coy. If you’re tossing “cultural marxism” around you’re either willfully ignoring this or blatantly playing along. Its not a thing in the world. There are no leftists (at all) who call themselves “cultural marxists”, and in fact there is a sizeable faction of marxists who are openly disdainful of any marxism that eschews political struggle. The new republic article linked above goes into this, Perry Andersons “Considerations on Western Marxism”, a well known, well regarded text across a number of marxist subsects, is explicitly based on this. Anyway, enjoy contributing to a climate of increasing hostility toward jews. good stuff.

                                                                                                            edit: have some fun with this https://www.google.com/search?q=cultural+marxism&client=firefox-b&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjz2tWrhvnaAhUJ7YMKHVgcCccQ_AUIDCgD&biw=1247&bih=510#imgrc=_

                                                                                                            1. 1

                                                                                                              The term ‘Cultural Marxism’ describes very well what it is, and not all leftists are cultural marxists. The classical theory of marxism, roughly spoken, is to think of society as being split in two camps, the Proletariat and the Bourgeoisie, eternally involved in a struggle, where the former is discriminated against and oppresed by the latter.

                                                                                                              Cultural Marxism applies these ideas to society. In the Frankfurt School it was called ‘Critical Theory’, calling people out to question everything that was deemed a cultural norm. What is essentially lead to was to find oppressors and oppressed, and we reached the point where e.g. the patriarchy oppressed against women, white people against minorities, christians against muslims and other religions and so forth. You get the idea. Before you go again rallying about how I target jews or something please take a note that up to this point in this comment, I have just described what cultural marxism is and have not evaluated or criticized it in any way, because this here is the wrong platform for that.

                                                                                                              What you should keep in mind is that the nature of cultural marxism is to never be in a stable position. There will always be the hunt for the next oppressor and oppressed, which in the long run will destroy this entire movement from the inside. It was a friendly advice from my side to you not to endulge in this separatory logic, but of course I understand your reasoning to the fullest.

                                                                                                              Just as a side note: I did not see you getting ‘seriously’ downvoted. What do you mean?

                                                                                                              1. 2

                                                                                                                It’s uncommon to find such a well-put explanation; thanks for that.

                                                                                                                There will always be the hunt for the next oppressor and oppressed, which in the long run will destroy this entire movement from the inside.

                                                                                                                If the movement runs out of good targets (and falls apart because they can’t agree on new ones), wouldn’t that imply that it will self-destruct only after it succeeds in its goals? That doesn’t sound like a bad thing.

                                                                                                                1. 1

                                                                                                                  I’m glad you liked my explanation. :)

                                                                                                                  That is a very interesting idea, thanks for bringing this thought up! It’s a matter dependent on many different factors, I suppose. It might fall apart due to not being able to agree on new targets or when everybody has become a target, but it is a very theoretical question which one of these outcomes applies here.

                                                                                                                2. 1

                                                                                                                  Did you actually read any of the links I posted? Specifically the New Republic and SPLC links? I don’t know how else to say this and you pretty much side stepped what I said the first time so I’ll try to reiterate it: There is no such thing as “Cultural Marxism”. At all. Its not a descriptive category that any marxist actually self applies or applies to other marxists. I’m fully aware of the Frankfurt School, Adorno, Horkheimer, etc. I’ve read some of them and many, many of their contemporaries from Germany, people like Karl Mannheim. I read marxist publications everyday, from here in the states and from Europe. I’m a member of an explicitly marxist political party here in the states. I can’t emphasize this enough, “cultural marxism” isn’t real and is roughly on par with “FEMA camps”, “HARRP rays” and shape shifting lizard jews, meaning; its a far far right wing paranoid fantasy used to wall off people from other people and an actual understanding of the material conditions of their world. I also didn’t say, specifically in fact pointing out that I wasn’t saying this, that you were “targeting jews”. That being said, if you use a phrase that has its origins in anti-semitic polemics, is used explicitly and over-whelmingly by anti-semites, than that is on you. (Did you take a look at the linked image search? Does that sort of thing not give you pause?) To say that you “just described what cultural marxism is” is also inaccurate, you absolutely used it in a descriptive way

                                                                                                                  I get your point, but must honestly say that your argument sadly aligns with the ever-excluding and self->segregating destructful nature of cultural marxism.

                                                                                                                  White supremacist organizing is experiencing an enormous upsurge, not only here in the states but in Europe as well. From Le Pen to AfD to SVO in Austria and on and on. These people are not interested in polite conversation and they’re not using “cultural marxism” as a category to illuminate political opponents, its meant to denigrate and isolate, ironically given thats exactly what Neo Nazis and white supremacists here in the states accuse left wingers and “SJWs” of doing.

                                                                                                                  I appreciate that you’re discussing this peacefully but I’m going to bow out of this thread unless you’re interested enough to take some time and read the links

                                                                                                                  FWIW these also dismantle the trope and point out pretty much exactly what I’m saying around anti-semitism: https://www.vice.com/en_us/article/78mnny/unwrapping-the-conspiracy-theory-that-drives-the-alt-right https://www.theguardian.com/commentisfree/2016/feb/22/chris-uhlmann-should-mind-his-language-on-cultural-marxism

                                                                                                                  1. 2

                                                                                                                    I took some more time to read it up and from what I could see, I found that indeed cultural marxism has become more of a political slogan rather than a normal theoretical term in the USA.

                                                                                                                    Here in Germany the term “Kulturmarxismus” is much less politically charged from what I can see and thus I was surprised to get this response after I just had “translated” this term into English. It might be a lesson to first get some background on how this might be perceived internationally, however, it is a gigantic task for every term that might come around to you.

                                                                                                                    So to reiterate my question, what term could be better used instead? :)

                                                                                                                    1. 1

                                                                                                                      interesting that it has a different grounding/connotation in Germany, but then again I’m not surprised since thats where its supposed to have originated from. I’ll reread your other posts and come up with a response thats fair. Thanks for taking the time to read those links.

                                                                                                                  2. 1

                                                                                                                    Generally people who use “cultural marxism” as a pejorative are sloganeering. The idea of an “eternal struggle” is completely foreign to any kind of marxism which is based on a theory that classes come out of the historical process and disappear due the historical process. Marxism claims that the proletariat and bourgeosie are temporary divisions that arise from a certain type of economic organization. Whatever one thinks of that idea, your characterization of Marxism is like describing baseball as a game involving pucks and ice. Your summary of “cultural marxism” is even worse. Maybe take a class or read a decent book.

                                                                                                      2. 17

                                                                                                        I’m not going to remove this because you’re making a public statement for suckless, but please don’t characterize positions you disagree with as madness. That kind of hyperbole generally just leads to unproductive fights.

                                                                                                        1. 9

                                                                                                          Please don’t remove anything unless it’s particularly vulgar…

                                                                                                          1. -1

                                                                                                            Removing differing viewpoints? It is precisely this kind of behavior that maddens people who complain about SJW, who (the SJW) seem unable to take any discussion beyond calling their opponent’s position “evil”, “alt-right”, “neo-nazi”, or, if they are exceptionally well-spoken, “mad”.

                                                                                                            1. 14

                                                                                                              No, removing abuse and hyperbole that acts as flamebait regardless of the political opinions expressed. So far I’ve removed one post and hope not to remove more.

                                                                                                              1. 2

                                                                                                                It’s hard for me to see a reason to remove things when we have the voting system in place, neither are perfect but one is at your sole discretion whereas the other is the aggregate opinion of the users.

                                                                                                                1. 21

                                                                                                                  Voting isn’t a replacement of moderation. It helps highlight and reward good comments and it can punish bad comments, but it’s not sufficient for running a community. I’m trying to head off places where people give up on argument and just try to hurt or tar the people they disagree with because it doesn’t lead to a good community. Lobsters is a very good place for discussing computing and I haven’t seen that in communities this size with hands-off moderation (but I’d love counter-examples to learn from!) From a quick query, we’ve had comments from 727 unique users in the last 30 days and there’s around 15k unique IPs in the logs per weekday, so people are constantly interacting with the others who don’t know their background, don’t share history, can’t recognize in-jokes, simply don’t have reason to trust when messages are ambiguous, let alone provocative. Friendly teasing like “ah yeah, you would think that” or “lol php sucks” that’s rewarding bonding in a small, familiar group hurts in a big one because even if the recipient gets the joke and laughs along or brushes it off as harmless, it’s read by thousands of people who don’t or can’t.

                                                                                                                  1. 2

                                                                                                                    Lobsters is a very good place for discussing computing and I haven’t seen that in communities this size with hands-off moderation

                                                                                                                    I support your position on sub-topic but even my Trial you linked to shows a bit otherwise on just this point. This site has more flexible, hands-off moderation than many I’ve seen with this much political dispute. Even in that link, we saw an amount of honest, civility, and compromise I don’t usually see. There’s been quite a bit better results in this thread than usual elsewhere. There seems to be enough community closeness despite our size that people are recognizing each others positions a bit. Instead of comments, you can actually see it by what’s not said more since it’s prior ground we’ve covered. The others are learning as discussion furthers. Then, there’s the stuff we don’t want which seems to be basically what those individuals are intending in a way that has nothing to do with site’s size.

                                                                                                                    So, I support you getting rid of just pure abuse, trolling, sockpuppeting, etc. I don’t think we’ve hit the full weaknesses and limited vision of large sites yet despite our increase in comments and views. We’re still doing a lot better than average. We’re still doing it with minimal intervention on things like politics relative to what I’ve seen elsewhere. I think we can keep at current moderation strategy for now because of that. For now.

                                                                                                                    Just wanted to say that in the middle of all this.

                                                                                                                    1. 0

                                                                                                                      Voting isn’t a replacement of moderation. It helps highlight and reward good comments and it can punish bad comments, but it’s not sufficient for running a community.

                                                                                                                      I’m not sure if I see why it’s not a good replacement. To me, I see voting as distributed moderation and the “real” moderation is automatically hiding (not removing) comments when they fall below a threshold.

                                                                                                                      I’m trying to head off places where people give up on argument and just try to hurt or tar the people they disagree with because it doesn’t lead to a good community.

                                                                                                                      I think this method relies on an accurate crystal ball where you can foresee people’s actions and to an extent, the reactions of the people reading the comments.

                                                                                                                      I’d have to question what you mean by “a good community”, it seems like it’s just a place where everyone agrees with what you agree with and those that disagree aren’t heard because it risks offending those that do agree.

                                                                                                                      I think the best discussions on here are because we have many people with wide and varied opinions and backgrounds. The good comes from understanding what someone else is saying, not excluding them from the discussion. The only places I see that warranted is where someone has said something purposely and undeniably vile.

                                                                                                                      1. 8

                                                                                                                        The automatic hiding of low-scoring comments is also a “sole discretion” thing; jcs added it and I tweaked it a few months ago. The codebase enforces a lot of one moderator’s ideas of what’s good for a community in a hands-off way and the desire to do that motivated its creation.

                                                                                                                        I strongly agree that a community where everyone agrees with the moderator would be bad one, even if I am that moderator. It’s tremendously rewarding to understand why other people see things differently, if for no other reason than the selfish reason that one can’t correct learn or correct mistakes if one never sees things one doesn’t already agree with.

                                                                                                                        I think the crystal ball for foreseeing problems is experience, from many years of reading and participating in communities as they thrive or fail. I think it’s possible to recognize and intervene earlier than the really vile stuff because I’ve seen it work and I’ve seen its absence fail. I keep asking for examples of excellent large communities without active moderators because I haven’t seen those, and after a couple decades and a few hundred communities I see the anthropic principle at work: they don’t exist because they self-destruct, sink into constant vileness, or add moderation. At best they have maintain with signal-to-noise ratios far below that of Lobsters where the thoughtful commentary is crowded out by trolling, running jokes, ignorance, and plan low-quality comments because it doesn’t seem worth anyone’s while to care when posting.

                                                                                                                        But moderation is not a panacea in and of itself. Without good experience, judgment, and temper a bad moderator swiftly destroys a community, and this is a very common way communities fail. If it helps any, the author of the comment I removed agrees that it wasn’t done to suppress their opinion.

                                                                                                                        1. 1

                                                                                                                          The benefit I see from moderation being part of the codebase is that it’s public, predictable and repeatable (it terms of reliability). When you take moderation decisions into your own discretion many of these virtues are lost.

                                                                                                                          As for experience, I think that’s tricky because it can easily lead you to making the same mistake twice. It’s also made of your personal experiences and you’re using that to curate the discussion of other people, I would caution that it’s another method of controlling dialog (perhaps subconsciously) to what you find acceptable, not necessarily what’s best for everyone.

                                                                                                                          1. 3

                                                                                                                            The benefit I see from moderation being part of the codebase is that it’s public, predictable and repeatable (it terms of reliability). When you take moderation decisions into your own discretion many of these virtues are lost.

                                                                                                                            Most of them go into the Moderation Log. I’ve been watching it since the jcs days since it’s what folks are supposed to do in a transparent, accountable system. Gotta put effort in. I haven’t seen much of anything that bothered me. The bans and deletes I’ve been able to follow @pushcx doing were trolling, alleged sockpuppeting, and vicious flamewaring. Some I couldn’t see where I’d rather the resource go off the front page rather getting deleted so someone looking at logs could see it for whatever it was. Nonetheless, his actions in the thread about me, the general admining, and what I’ve seen in moderation have been mostly good. A few really good like highlighting the best examples of good character on the site. I think he’s the only one I’ve seen do that on a forum in a while.

                                                                                                                            You have little to worry about with him in my opinion at the moment. Do keep an eye on the comments and log if you’re concerned. Scrape them into version storage if concerned about deletions. What goes on here is pretty public. Relax or worry as much as you want. I’m more relaxed than worried. :)

                                                                                                                            1. 3

                                                                                                                              Yeah, I agree on the pitfalls of experience. As SeanTAllen noted in a separate branch of this thread a minute ago, there’s “but you didn’t say” and other wiggle room; I think that’s where automatic moderation falls down and human judgment is required. Voting has its own downsides like fads, groupthink, using them to disagree (which is all over this thread), in-jokes, a drifting definition of topicality, all the parallels to the behaviors of political rhetoric, etc. Lobsters has never been voting only and I don’t see a compelling reason to change that. jcs’s involvement in the site was steadily declining so I’m certainly more actively moderating, but I don’t see that as a change in character. I guess what it comes down to is that I agree with you about what successful communities do and don’t look like, but I haven’t seen one that works on the model you’ve outlined and I don’t see that kind of fundamental change as a risk worth taking.

                                                                                                                  2. 1

                                                                                                                    So FRIGN writes to oppose “SWJ madness”, and you chime in to complain that “SWJ” calls opponents “mad”. Are you calling FRIGN “SWJ” or what? It’s kind of hard to discern your point in that cloud of grievance.

                                                                                                                    1. 1

                                                                                                                      “SJW” for “social justice warrior.”

                                                                                                                      @COCK is sarcastically non-replying because you typo’ed.

                                                                                                                      1. 2

                                                                                                                        Not exactly, I was sarcastically non-replying because I assumed he was intentionally misunderstanding me. I assumed this because I didn’t see any ambiguity in my answer. On later inspection I noticed the ambiguity so I gave an actual reply:

                                                                                                                        https://lobste.rs/s/nf3xgg/i_am_leaving_llvm#c_yzwuux

                                                                                                                        1. 1

                                                                                                                          The interesting thing is how people agreeing with Mr. cock pile on the insults against the people who they complain are insulting them by forcing them to sign on to codes of conduct which prohibit insults. It’s almost as if there was a good reason for those codes.

                                                                                                                          1. 1

                                                                                                                            I doubt the irony is lost on anyone supporting a CoC.

                                                                                                                        2. -1

                                                                                                                          Yes, I’m calling FRIGN a “SWJ”.

                                                                                                                          1. -1

                                                                                                                            Yes, well, one sympathizes with your plight.

                                                                                                                            1. 2

                                                                                                                              Ah now I see the ambiguity: “people who complain about SJW, who…” the “who” referred to the “SJW”, not the “people”

                                                                                                                        3. 1

                                                                                                                          The only comment that was removed was against FRIGN point of view. Nobody is removing differing point of view, just enforcing civil discussion.

                                                                                                                      2. 4

                                                                                                                        It’s responses like yours that really make the case for codes of conduct.

                                                                                                                        1. 2

                                                                                                                          Are you speaking for the group or is that your own opinion? Knowing that the group aligns itself with that position would certainly make me not interested in working with it or contributing.

                                                                                                                          1. 6

                                                                                                                            To be fair, suckless is not well-organised enough to be a group that can have a single opinion to be spoken for.

                                                                                                                            That said, FRIGN is a prominent contributor and I from what I’ve seen most contributors are heavily on the side of “the code will speak for itself”.

                                                                                                                        1. 1

                                                                                                                          Why oh why did they have to call it “bionic”…were they trying to increase general nomenclature confusion?

                                                                                                                          https://en.wikipedia.org/wiki/Bionic_%28software%29

                                                                                                                          1. 4

                                                                                                                            All the names that are actual words are already taken by someone somewhere. Naming something these days with a word is a guaranteed collision.

                                                                                                                            1. 1

                                                                                                                              See also Apple’s A11 Bionic processor (the one that’s in the iPhone X)

                                                                                                                              1. -1

                                                                                                                                Increasing general nomenclature confusion is kind of all the Ubuntu release code-names are good for, yes.

                                                                                                                              1. -3

                                                                                                                                The authors obviously don’t know anything about R.

                                                                                                                                1. 3
                                                                                                                                  1. 0

                                                                                                                                    What is the difference between array and vector languages? Vector languages operate on slices of arrays (which might be called array languages).

                                                                                                                                    1. 1

                                                                                                                                      I’ve always heard the terms used interchangeably.

                                                                                                                                1. 8

                                                                                                                                  What sort of new problems doesn’t increasing Ruby’s performance 3x open up for Ruby? As a non-Rubyist, Ruby is so slow a 3x improvement is still too slow, to me.

                                                                                                                                  1. 16

                                                                                                                                    That’s fair, but Ruby’s performance is on par with Python’s (or better in at least some benchmarks, actually), which is plenty good enough for many, many people. So for those using Ruby, that’d still be an incredibly welcome improvement.

                                                                                                                                    That said, I’m curious when you last tried Ruby. It’s definitely still an order of magnitude slower than most compiled languages, no question, but the new GC that landed around 2.2, and the bytecode based VM that landed around 1.9 or so, have made a huge, very noticable difference in places I’ve used Ruby. It’s been enough that I’ve kept reaching for it over e.g. Go in quite a few instances.

                                                                                                                                    1. 3

                                                                                                                                      Ok, but that’s not really answering my question. Is this performance push just to get some benchmark numbers higher or is it opening new opportunities for Ruby? Certainly people aren’t going to be replacing their big data jobs with Ruby with a meager 3x improvement. People aren’t going to be writing video games in pure Ruby or doing high frequency trading.

                                                                                                                                      1. 9

                                                                                                                                        Is this performance push just to get some benchmark numbers higher or is it opening new opportunities for Ruby?

                                                                                                                                        Performance concerns aren’t even at the top of my list of “why I wouldn’t write new software in Ruby”; I’m more concerned with long-term maintainability due to the dynamicity making static analysis more or less a lost cause.

                                                                                                                                        In the interview he talks a bit about the possibility of gathering type data from running code, but without breaking existing code I’m having a hard time imagining a solution that would be reliable.

                                                                                                                                        1. 5

                                                                                                                                          I’m also skeptical. Ruby users, for a while, seemed to revel in meta-programming and run-time code generation, which greatly hinders static analysis.

                                                                                                                                        2. 6

                                                                                                                                          Well, I think that a 3x improvement would at least help push the bar for “Ruby is too slow for me, I’ll rewrite it in X-compile-language” further away.

                                                                                                                                          1. 5

                                                                                                                                            That’s what I was trying to convey also. Ruby’s strength is that it’s a very expressive language, but its speed at one point made it an effective no-go for classes of work. (Hell, I remember writing a site in Django instead of Rails for performance reasons.) The speed improvements so far have really just kept it relevant, to be honest, by getting it back to and somewhat exceeding Python; a further 3x would mean I could start looking at it over things like C# for what I might call mildly performance demanding stuff (e.g. maybe daemons with nontrivial but not excessive workloads).

                                                                                                                                      2. 8

                                                                                                                                        The upcoming support for guilds is much more exciting in terms of addressing new problems than single-threaded execution improvements, IMHO.

                                                                                                                                        A less humble opinion of mine is that guilds are too little, too late, and still too primitive to have a transformative effect on Ruby and its ecosystem. I think too many devs (like me) are now accustomed to more advanced/higher-level concurrency abstractions, and guilds feel like a slightly safer way of revisiting the mid-90’s.

                                                                                                                                        1. 2

                                                                                                                                          It’s used a whole lot in web dev so 3x faster will make a lot of websites faster.

                                                                                                                                          1. 1

                                                                                                                                            I think it just helps people who have already invested in Ruby justify their continued investment. I wouldn’t expect a ton of new users at this point unless they develop another “rails”.

                                                                                                                                            1. 1

                                                                                                                                              What are your favorite languages?

                                                                                                                                              1. 2

                                                                                                                                                I try to spend as much time in Ocaml as I can, currently.

                                                                                                                                                1. 1

                                                                                                                                                  Wow…I’ve never heard of anyone using that. :)

                                                                                                                                                  Taking a look now - it does look pretty cool.

                                                                                                                                            1. 8

                                                                                                                                              “Not only that, any code examples in rustdoc are treated like tests and get executed during compilation!”

                                                                                                                                              This is brilliant. First time I’ve heard of it. ZeD on Hacker News said Python can do it, too, with seangransee offering this example.

                                                                                                                                              Aside from a good idea, it looks like it should also be a new requirement for high-assurance systems where all examples of system usage are executable. It’s often implicit where you’re already supposed to have both tests of all functions and consistency with documentation. At the least, it could be an extra check on these.

                                                                                                                                              1. 14

                                                                                                                                                I’m over the moon about doctests. Elixir has them too, that’s where I saw the light. In the past, I’ve gone to annoying lengths to ensure that code examples in documentation don’t go stale; it’s a great feeling to have first-class support for that workflow.

                                                                                                                                                1. 2

                                                                                                                                                  I’ve found that in Elixir having both doctests and normal tests is quite handy–one as a quick sanity check and a way of demonstrating an API, and the other as a full way of confirming behavior. The use of tags to turn on and off different sets of tests is also not well supported (to my knowledge) with doctests.

                                                                                                                                                  1. 3

                                                                                                                                                    AFAIK turning Elixir doctests on and off is not supported. That bothers me just a bit, because there are times when I’d like to show some non-testable code (e.g., demonstrating a request to an external network service) in the exact same syntax that my doctests use (iex>, etc).

                                                                                                                                                2. 5

                                                                                                                                                  I think the first place I saw that was R, where it’s used pervasively in the package repository (CRAN). In fact the output of example REPL sessions is generated by running the code, so besides being used as tests that are flagged if they fail to run entirely, it also keeps the examples up to date with minor changes to output format, etc., which can otherwise get out of date even when the code continues to work.

                                                                                                                                                  1. 4
                                                                                                                                                    1. 4

                                                                                                                                                      I’ve found that in practice I write far fewer testable Go examples than I do in Rust code. In Rust, I just drop into Markdown, write the code, and I’m done. It’s incredibly low friction.

                                                                                                                                                    2. 2

                                                                                                                                                      D achieves the same the other way round. Instead of treating documentation like code, D has unit test code blocks and can treat them as documentation. This makes it easier for the tooling, since syntax highlighting etc applies to the unit tests as well.

                                                                                                                                                      This is not a really critical difference, but if you design a new language, I would suggest the D approach as slightly better.

                                                                                                                                                      1. 2

                                                                                                                                                        I’ve generated documentation from tests before (in Ruby’s rspec). Just thinking about it, isn’t D’s approach prone to the same weakness as the comments that they use to generate the docs? That is, when you use comments or non-executable code (in my case it was string descriptors) to generate docs, they can get out of date with the actual code, whereas if you write tests inside documentation, the docs may grow stale but the tests will break.