Worth looking at the line count dependency and/or how coreutils actually counts lines if youre like me of the past and just assume you loop over bytes counting \n.
ergodox-ez / blank keycaps / current dvorak configuration
Another ergodox with dvorak here. The ability to type without having to squeeze your wrists together greatly increases comfort imho. I like the straight (vertically-staggered) columns from a comfort perspective as well.
On the ergodox ez and very happy with it. I built one back before the ez with clear switches but I actually prefer the brown switches in my ex.
The comment on how Swift make prototyping harder by forcing developers to express correct types is spot-on, and would apply to other strongly typed languages. One could argue that you should solve the problem on paper first and sketch out the types before writing the implementation, but I find it a good example of how dynamic languages shift our expectations in terms of programming ergonomics.
I’d be very curious to hear what situations you’ve encountered where you were prototyping a solution that you understood well enough to turn into code, but not precisely enough to know its types? I’ve personally found that I can’t write a single line of code – in any language, static or dynamic – without first answering basic questions for myself about what kinds of data will be flowing through it. What questions do you find the language is forcing you answer up-front that you would otherwise be able to defer?
When I have no idea where I’m going I sometimes just start writing some part of the code I can already foresee, but with no clue how anything around it (or even that part itself) will end up looking in the final analysis. I have no data structures and overall no control flow in mind, only a vague idea of what the point of the code is.
Then with lax checking it’s much easier to get to where I can run the code – even though only a fraction of it even does anything at all. E.g. I might have some function calls where half the parameters are missing because I didn’t write the code to compute those values yet, but it doesn’t matter: either that part of the code doesn’t even run, or it does but I only care about what happens before execution gets to the point of crashing. Because I want to run the stuff I already have so I can test hypotheses.
In several contemporary dynamic languages, I don’t have to spend any time stubbing out missing bits like that because the compiler will just let things like that fly. I don’t need the compiler telling me that that code is broken… I already know that. I mean I haven’t even written it yet, how could it be right.
And then I discover what it is that I even wanted to do in the first place as I try to fill in the parts that I discover are missing as I try to fill in the parts that I discover are missing as I try to fill in the parts that I discover are missing… etc. Structures turn out to repeat as the code grows, or bits need to cross-connect, so I discover abstractions suggesting themselves, and I gradually learn what the code wants to look like.
The more coherent the code has to be to compile, the more time I have to spend stubbing out dummy parts for pieces of the code I don’t even yet know will end up being part of the final structure of the code or not.
It would of course be exceedingly helpful to be able to say “now check this whole thing for coherence please” at the end of the process. But along the way it’s a serious hindrance.
(This is not a design process to use for everything. It’s bottom-up to the extreme. It’s great for breaking into new terrain though… at least for me. I’m terrible at top-downing my way into things I don’t already understand.)
That’s very interesting! If I’ve understood you correctly, your prototyping approach seems to allow you to smoothly transform non-executable sketches into executable programs, by using the same syntax for both. So instead of sketching ideas for your program on a napkin, or on a whiteboard, or in a scratch plaintext file, you can do that exploration using a notation which is both familiar to you and easy to adapt into an actual running program. Would it be correct to say that by the time you actually run a piece of code, you have a relatively clear idea of what types of data are flowing through it, or at least the parts of it that are actually operational? And that the parts of your program whose types you’re less confident about are also the parts you aren’t quite ready to execute yet?
If so, then I think our processes are actually quite similar. I mainly program in languages with very strict type systems, but when I first try to solve a problem I often start with a handwritten sketch or plaintext pseudocode. Now that I think about it, I realize that I often subconsciously try to keep the notation of those sketches as close as possible to what the eventual executable code might look like, so that I’ll be able to easily adapt it when the time comes. But either way, we’re both bypassing any kind of correctness checking until we actually know what it is we’re doing, and only once we reach a certain level of confidence do we actually run or (if the language supports it) typecheck our solution.
Let me know if I’ve missed something about your process, but I think I understand the idea of using dynamic languages for prototyping much more clearly now. What always confused me is that the runtime semantics and static types (whether automatically checked or not) of a program seem so tightly coupled that it would be nearly impossible to figure one out without the other, but you seem to be suggesting that when you’re not sure about the types in a section of your program, you’re probably not sure about it’s exact runtime semantics either, and you’re keeping it around as more of a working outline than an actual program to be immediately run. So even in that early phase, types and semantics are still “coupled,” but only in the sense that they’re both incomplete!
If I’ve understood you correctly, your prototyping approach seems to allow you to smoothly transform non-executable sketches into executable programs, by using the same syntax for both.
Yup.
Would it be correct to say that by the time you actually run a piece of code, you have a relatively clear idea of what types of data are flowing through it, or at least the parts of it that are actually operational?
Well… it depends. For the parts that are most fully written out, yes. For the parts that aren’t, no. Neither of which are relevant when it comes to type checking, of course. But at the margins there is this grey area where I have some data structures but I only know half of what they look like. And at least one or two of them shift shape completely as the code solidifies and I discover the actual access patterns.
If so, then I think our processes are actually quite similar.
Sounds like it. I’d wonder if the different ergonomics don’t still lead to rather different focus in execution (what to flesh out first etc.) so that dynamic vs static still has a defining impact on the outcome. But it sure sounds like there is a deep equivalence, at least on one level.
Now that I think about it, I realize that I often subconsciously try to keep the notation of those sketches as close as possible to what the eventual executable code might look like
Seems natural, no? 😊 The code is ultimately what you’re trying to get to, so it makes sense to keep the eventual translation distance small from the get-go.
So even in that early phase, types and semantics are still “coupled,” but only in the sense that they’re both incomplete!
I had never thought about it this way, but that sounds right to me as well.
You didn’t ask me but I’ll answer anyway because I’d like your advice! I am currently prototyping a data processing pipeline. Raw sensor data comes in at one end then is processed by a number of different functions, each of which annotates the data with its results, before emitting the final blob of data plus annotations to the rest of the system. As a concrete example, if the sensor data were an image, one of the annotations might be bounding boxes around objects detected in the image, another might be some statistics, etc.
At this stage in the design, we don’t know what all the stages in the pipeline will need to be. We would like to be able to insert new functions at any stage in the pipeline. We would also like to be able to rearrange the stages. Maybe we will reuse some of these functions in other pipelines too.
One way to program this is the “just use a map” style promoted by Clojure. Here every function takes a map, adds its results to the map as new fields, then passes on the map to the next function. So each function will accept data that it doesn’t recognize and just pass it on. This makes everything nicely composable and permits the easy refactoring we want.
How would this work in a statically typed system? If the pipeline consists of three functions A, B then C, doesn’t B have to be typed such that it only accepts the output of A and produces the input of C? What happens when we add another function between B and C? Or switch the order so A comes last?
What would the types look like anyway? Each function needs to output its input plus a bit more: in an OOP language, this quickly becomes a mess of nested objects. Can Haskell do better?
Since I cannot actually use Clojure for this project, I’d welcome any advice on doing this in a statically typed language!
In my experience statically typed languages are generally very good at expressing these kinds of systems. Very often, you can express composable pipelines without any purpose-built framework at all, just using ordinary functions! You can write your entire pipeline as a function calling out to many sub-functions, passing just the relevant resources through each function’s arguments and return values. This approach requires you to explicitly specify your pipeline’s dependency graph, which in my experience is actually extremely valuable because it allows you to understand the structure of your program at a glance. The simplicity of this approach makes it easy to maintain and guarantees perfect type safety.
That said, based on your response to @danidiaz, it sounds like you might be doing heavier data processing than a single thread running on a single machine will be able to handle? In that case, depending on the exact kind of processing you’re doing, it’s still possible that you can implement some lightweight parallelism at the function call level without departing too much from modeling your pipeline as an ordinary sequence of function calls. Ordinary (pure) functions are also highly reusable and don’t impose any strong architectural constraints on your system, so you can always scale to a more heavily multi-threaded or distributed environment later without having to re-implement your individual pipeline stages.
If you do have to run your system across multiple processes or even multiple machines, then it is definitely harder to express a solution in a type-safe way. Most type systems don’t currently work very well across process or machine boundaries, and a large part of this difficulty stems from that it is inherently challenging to statically verify the coherence of a system whose constituent components might be independently recompiled and replaced while the system is running. I’m not sure how your idiomatic Clojure solution would cope with this scenario either, though, so I’d be curious to learn more about exactly what the requirements of this system are. These kinds of questions often turn out to be highly dependent on subtle details, so I’d be interested to hear more about your problem domain.
You can write your entire pipeline as a function calling out to many sub-functions, passing just the relevant resources through each function’s arguments and return values.
That’s basically what Cleanroom does it its “box structures” that decompose into more concrete boxes. Just functional decomposition. It has semi-formal specifications to go with it plus a limited set of human-verifiable, control-flow primitives. The result is getting things right is a lot easier.
Thank you. Just to emphasize, we are talking about prototyping here. The system I am building is being built to explore possibilities, to find out what the final system should look like. By the time we build the final system, we will have much stricter requirements.
I am working on an embedded system. We have limited processing capability on the device itself. We’d like to do as much processing as we can close to the sensors but, we think, we will probably need to off load some of the work to remote systems (e.g. the “cloud”). We also haven’t fixed precisely what on-board processing capability we will have. Maybe it will turn out to be more cost-effective to have a slightly more powerful on-board processor, or maybe it will be helpful to have two independent processors, or maybe lots of really cheap processors, or maybe we should off-load almost everything. I work in upstream research so nothing is set in stone yet.
Furthermore, we don’t know precisely what processing we will need to do in order to achieve our goals. Sorry for being vague about “processing” and “goals” here but I can’t tell you exactly what we’re trying to do. I need to be able pull apart our data processing pipeline, rearrange stages, add stages, remove stages, etc.
We aren’t using Clojure. I just happen to have been binge watching Rich Hickey videos recently and some of his examples struck a chord with me. We are using C++, which I am finding extremely tedious. Mind you, I’ve been finding C++ tedious for about twenty years now :)
Here every function takes a map, adds its results to the map as new fields, then passes on the map to the next function.
Naive question: why should functions bother with returning the original map? Why not return only their own results? Could not the original map be kept as a reference somewhere, say, in a let binding?
If your functions pass through information they don’t recognize - i.e. accept a map and return the same map but with additional fields - then what is to be done is completely decoupled from where it is done. You can trivially move part of the pipeline to a different thread, process or across a network to a different machine.
You’re absolutely right though, if everything is in a single thread then you can achieve the same thing by adding results to a local scope.
At the prototyping stage, I think it’s helpful not to commit too early to a particular thread/process/node design.
I may be too far removed from my time with dynlangs but I’ve always liked just changing a type and being able to very rapidly find all places it matters when things stop compiling and get highlighted in my editor.
The comment on how Swift make prototyping harder by forcing developers to express correct types is spot-on, and would apply to other strongly typed languages
Quick bit of notation: “strongly typed” is a subjective term. Generally people use it to mean “statically typed with no implicit type coercion”, but that’s not universal. People often refer to both C and Python as strongly typed, despite one having implicit coercion and the other not having static types.
Also known as McNamara’s fallacy.
https://en.wikipedia.org/wiki/McNamara_fallacy
TBH mathwashing doesn’t seem like a very good name.
The advice i’ve seen around the lesswrong people give is to take the time and do all the math you reasonably can, but if despite all the calculations you still feel like it’s telling you to do the wrong thing, just do the right thing anyway. That doing the math is important for influencing that gut feeling, but you shouldn’t ignore it. Hadn’t known there was a name for doing the opposite though.
Well I’d say it’s more descriptive than “artificial intelligence”, given we usually speak of cybernetics instead.
Do you have an alternative term to propose?
The perception of rampant deletionism didn’t do any favors for a lot of folks who had, say, put a lot of effort into covering works of literature, film, anime, manga, or other things like obscure historical events this probably had a chilling effect.
Additionally, community just seemed really…I don’t know…silly and officious. The amount of seriousness which Wiki folk seemed to take themselves, coupled with occasionally blatant lack of expertise in editing or moderating, say, technical articles, might make one think twice before contributing.
Well, Wikipedia is a serious business. It is the foremost social verifier of our time. (If you don’t want to click, I quoted the relevant passage below.)
So: a social verifier is an institution, authority, Web 2.0 server, etc, etc, which collects and distributes information that its users trust. Wikipedia is a social verifier. So is the Catholic Church. So is the New York Times. So is UC Berkeley… So is the scientific peer-review system. And so on.
I was never a contributor but the deletionism thing would make me think twice for sure. Not about if my content was notable but about if I wanted to help Wikipedia.
7:00 - 7:20 Light alarm gradually fades to on. Wake up, in a fugue state.
7:20 - 8:35 Gentle voice reminder of who I am and that I enjoy being alive plays every fifteen minutes.
8:30 - 9:30 Get ready for work, including 30 minutes of light meditation in the shower.
10:00 - 10:30 Arrive at work, make coffee, review notes from yesterday, review today’s calendar to make sure it’s physically possible, write today’s to-do list.
10:30 - 11:30 Maybe meetings, maybe code. On a bad day, email.
11:30 - 12:00 Lunch.
12:00 - 17:30 Mix of meetings and code, fading towards email at the end of the day.
17:30 - 18:00 Leave notes for tomorrow.
18:30 - 20:00 Social media, food, dissociation, video games.
20:00 - 22:00 Work on activism and other extracurriculars.
It gives me the information that, in the fugue state, I am lacking. This makes it possible for me to find the necessary memories. This a phenomenon that I experience as part of general dissociative identity disorder and dissociative amnesia stuff.
It also has a very mild, carefully-chosen hypnotic effect which results in a slight mood boost.
I think of it as my stage1 initrd.
I’ve always wanted an alarm app where I can dictate messages to it to play in the morning. I could use myself saying don’t forget you need to do something, or don’t forget you’re trying to fix your sleep schedule, don’t sleep all day.
I briefly considered interpreting “how does it really work” to be about the technical aspect, but decided to focus on what I think is the more interesting part. But yeah anyway I used Tasker on Android for it. I don’t think that would work for what you want, but maybe one of the voice assistants will grow that functionality someday.
The distribution of programming talent is likely normal, but what about their output?
The ‘10X programmer’ is relatively common, maybe 1 standard deviation from the median? And you don’t have to get very far to the left of the curve to find people who are 0.1X or -1.0X programmers.
Still a good article! I think this confusion is the smallest part of what he’s trying to say.
That’s an interesting backdoor you tried to open to sneak the 10x programmer back into not being a myth.
They exist, though. So, more like the model that excludes them is broken front and center. Accurate position is most people aren’t 10x’ers or even need to be that I can tell. Team players with consistency are more valuable in the long run. That should be majority with some strong, technical talent sprinkled in.
Is there evidence to support that? As you know, measuring programmer productivity is notoriously difficult, and I haven’t seen any studies to confirm the 10x difference. I agree with @SeanTAllen, it’s more like an instance of the hero myth.
EDIT: here are some interesting comments by a guy who researched the literature on the subject: https://medium.com/make-better-software/the-10x-programmer-and-other-myths-61f3b314ad39
Just think back to school or college where people got the same training. Some seemed natural at the stuff running circles around others for whatever reason, right? And some people score way higher than others on parts of math, CompSci, or IQ tests seemingly not even trying compared to those that put in much effort to only underperform.
People that are super-high performers from the start exist. If they and the others study equally, the gap might shrink or widen but should widen if wanting strong generalists since they’re better at foundational skills or thinking style. I don’t know if the 10 applies (probably not). The concept of gifted folks making easy work of problems most others struggle is something Ive seen a ton of in real life.
Why would they not exist in programming when they exist in everything else would be the more accurate question.
There’s no question that there is difference in intellectual ability. However, I think that it’s highly questionable that it translates into 10x (or whatever-x) differences in productivity.
Partly it’s because only a small portion of programming is about raw intellectual power. A lot of it is just grinding through documentation and integration issues.
Partly it’s because there are complex interactions with other people that constrain a person. Simple example: at one of my jobs people complained a lot about C++ templates because they couldn’t understand them.
Finally, it’s also because the domain a person applies themselves to places other constraints. Can’t get too clever if you have to stay within the confines of a web framework, for example.
I guess there are specific contexts where high productivity could be realised: one person creating something from scratch, or a group of highly talented people who work well together. But those would be exceptional situations, while under the vast majority of circumstances it’s counterproductive to expect or hope for 10x productivity from anyone.
I agree with all of that. I think the multipliers kick in on particular tasks which may or may not produce a net benefit overall given conflicting requirements. Your example of one person being too clever with some code for others to read is an example of that.
I think the 10x is often realized by just understanding the requirements better. For example, maybe the 2 week long solution isn’t really necessary because the 40 lines you can write in the afternoon are all the requirement really required.
There’s no question that there is difference in intellectual ability. However, I think that it’s highly questionable that it translates into 10x (or whatever-x) differences in productivity.
It does not simply depends on how you measure, it depends on what you measure.
And it may be more than “raw intellectual power”. For me it’s usually experience.
As a passionate programmer, I’ve faced more problems and more bugs than my colleagues.
So it often happens that I solve in minutes problems that they have struggled for hours (or even days).
This has two side effects:
Both of this force me to face more problems and bugs… and so on.
Also such experience make me well versed at architectural design of large applications: I’m usually able to avoid issues and predict with an high precision the time required for a task.
However measuring overall productivity is another thing:
So when it’s a matter of solving problems by programming, I’m approach the 10x productivity of the myth despite not being particularly intelligent, but overall it really depends on the environment.
This is a good exposition of what a 10x-er might be and jives with my thoughts. Some developers can “do the hard stuff” with little or no guidance. Some developers just can’t, no matter how much coaching and guidance are provided.
For illustration, I base this on one tenure I had as a team lead, where the team worked on some “algorithmically complex” tasks. I had on my team people who were hired on and excelled at the work. I had other developers who struggled. Most got up to an adequate level eventually (6 months or so). One in particular never did. I worked with this person for a year, teaching and guiding, and they just didn’t get it. This particular developer was good at other things though like trouble shooting and interfacing with customers in more of a support role. But the ones who flew kept on flying. They owned it, knew it inside and out.
It’s odd to me that anyone disputes the fact there are more capable developers out there. Sure “productivety” is one measure, and not a good proxy for ability. I personally don’t equate 10x with being productive, that clearly makes no sense. Also I think Fred Brookes Mythical Man Month is the authoritative source on this. I never see it cited in these discussions.
There may not be any 10x developers, but I’m increasingly convinced that there are many 0x (or maybe epsilon-x) developers.
I used to think that, but I’m no longer sure. I’ve seen multiple instances of what I considered absolutely horrible programmers taking the helm, and I fully expected those businesses to fold in a short period of time as a result - but they didn’t! From my point of view, it’s horrible -10x code, but for the business owner, it’s just fine because the business keeps going and features get added. So how do we even measure success or failure, let alone assign quantifiers like 0x?
Oh, I don’t mean code quality, I mean productivity. I know some devs that can work on the same simple task for weeks, miss the deadline, and be move on to a different task that they also don’t finish.
Even if the code they wrote was amazing, they don’t ship enough progress to be of much help.
That’s interesting. I’ve encountered developers who were slow but not ones who would produce nothing at all.
I’ve encountered it, though it was unrelated to their skill. Depressive episodes, for example, can really block someone. So can burnout, or outside stresses.
Perhaps there are devs who cannot ship code at all, but I’ve only encountered unshipping devs that were in a bad state.
You’re defining programming ability by if a business succeeds though. There are plenty of other instances where programming is not done for the sake of business, though.
That’s true. But my point is that it makes no sense to assign quantifiers to programmer output without actually being able to measure it. In business, you could at least use financials as a proxy measure (obviously not a great one).
Anecdotally, I’m routinely stunned by how productive maintainers of open source frameworks can be. They’re certainly many times more productive than I am. (Maybe that just means I’m a 0.1x programmer, though!)
I’m sure that’s the case sometimes. But are they productive because they have more sense of agency? Because they don’t have to deal with office politics? Because they just really enjoy working on it (as opposed to a day job)? There are so many possible reasons. Makes it hard to establish how and what to measure to determine productivity.
I don’t get why people feel the need to pretend talent is a myth or that 10x programmers are a myth. It’s way more than 10x. I don’t get why so many obviously talented people need to pretend they’re mediocre.
edit: does anyone do this in any other field? Do people deny einstein, mozart, michaelangelo, shakespear, or newton? LeBron James?
Deny what exactly? That LeBron James exists? What is LeBron James a 10x of? Is that Athelete? Basketball player? What is the scale here?
A 10x programmer. I’ve never met one. I know people who are very productive within their area of expertise. I’ve never met someone who I can drop into any area and they are boom 10x more productive and if you say “10x programmer” that’s what you are saying.
This of course presumes that we can manage to define what the scale is. We can’t as an industry define what productive is. Is it lines of code? Story points completed? Features shipped?
Context is a huge factor in productivity. It’s not fair to subtract it out.
I bet you’re a lot more then 10X better then I am at working on Pony… Any metric you want. I don’t write much C since college, I bet you’re more then 10X better then me in any C project.
You were coding before I was born, and as far as I can tell are near the top of your field. I’ve been coding most of my life, I’m good at it, the difference is there though. I know enough to be able to read your code and tell that you’re significantly more skilled then I am. I bet you’re only a factor of 2 or 3 better at general programming then I am. (Here I am boasting)
In my areas of expertise, I could win some of that back and probably (but I’m not so sure) outperform you. I’ve only been learning strategies for handling concurrency for 4 years? Every program (certainly every program with a user interface) has to deal with concurrency, your skill in that sub-domain alone could outweigh my familiarity in any environment.
There are tons of programmers out there who can not deal with any amount of concurrency at all in their most familiar environment. There are bugs that they will encounter which they can not possibly fix until they remedy that deficiency, and that’s one piece of a larger puzzle. I know that the right support structure of more experienced engineers (and tooling) can solve this, I don’t think that kind of support is the norm in the industry.
If we could test our programming aptitudes as we popped out of the womb, all bets are off. This makes me think that “10X programmer” is ill-defined? Maybe we’re not talking about the same thing at all.
No I agree with you. Context is important. As is having a scale. All the conversations I see are “10x exists” and then no accounting for context or defining a scale.
While I’m not very familiar with composers, I can tell you that basketball players (LeBron) can and do have measurements. Newton created fundamental laws and integral theories, Shakespeare’s works continue to be read.
We do acknowledge the groundbreaking work of folks like Ken Ritchie, Ken Iverson, Alan Kay, and other computing pioneers, but I doubt “Alice 10xer” at a tech startup will have her work influence software engineers hundreds of years later, so bar that sort of influence, there are not enough metrics or studies to show that an engineer is 10x more than another in anything.
The ‘10X programmer’ is relatively common, maybe 1 standard deviation from the median? And you don’t have to get very far to the left of the curve to find people who are 0.1X or -1.0X programmers.
So, it’s fairly complicated because people who will be 10X in one context are 1X or even -1X in others. This is why programming has so many tech wars, e.g. about programming languages and methodologies. Everyone’s trying to change the context to one where they are the top performers.
There are also feedback loops in this game. Become known as a high performer, and you get new-code projects where you can achieve 200 LoC per day. Be seen as a “regular” programmer, and you do thankless maintenance where one ticket takes three days.
I’ve been a 10X programmer, and I’ve been less-than-10X. I didn’t regress; the context changed out of my favor. Developers scale badly and most multi-developer projects have a trailblazer and N-1 followers. Even if the talent levels are equal, a power-law distribution of contributions (or perceived contributions) will emerge.
I’m glad you acknowledge that there’s room for a 10X or more then 10X gap in productivity. It surprises me how many people claim that there is no difference in productivity among developers. (Why bother practicing and reading blog posts? It won’t make you better!)
I’m more interested in exactly what it takes to turn a median (1X by definition) developer into an exceptional developer.
I don’t buy the trail-blazer and N-1 followers argument because I’ve witnessed massive success (by any metric) cleaning up the non-functioning, non-requirements meeting (but potentially marketable!) untested messes that an unskilled ‘trailblazer’ leaves in their (slowly moving) wake. Do you think it’s all context or are there other forces at work?
And yet lots of advices in that article are memes popular amongst growth hacking ninjas and top VC bloggers:
“comments are code smell”
“use quality checks” with “complex heuristic algorithms”
I’m strongly against this. Usually these are checks like “cyclomatic complexity”, and locally in each method, despite it’s intended for whole loosely defined “chunk of code”. For example, Rubocop has it turned on by default and forbids nested if’s even if logic is clear. It encourages (or even forces) creation of false abstractions by splitting code chunks to methods or even classes, which leads to classical spaghetti code (with method calls instead of gotos). Counting ifs is not “complex heuristic algorithm”, it’s dumb bureaucracy.
“use docker”
Bundling operating system with program to fix library linking issues is huge increase of complexity and this article tells to reduce complexity. I think Docker is usable for clusters only, it’s not designed for provisioning development environments.
I used to thing this way since I think I was molded by the ruby world, but I’m much happier now that I just use if’s when I need them and let my functions be 200 lines long if I have 200 lines of work to do. I don’t know why I used to be so averse to it, but now I use a lot of just raw scopes with comments rather than pulling code out into functions.
var data
{ // get data
...
data = x
}
Rather than making a getData function that will never be used anywhere else to satisfy some need for short functions.
I hope I won’t ever have to read your code. Function shape communicates intent.
EDIT: Name, arity, argument and return value types. Even the body of the function can be easily glanced. Does it loop? Does it branch? Does it handle any failures?
Your description have reminded me of a Haskell code base I have tried to understand recently. One with rather long functions with many local variables and nested functions without clear scope delimitation. The author freely mixed data processing with the domain logic (your getData example), which obscured the meaning by lots and lots of tiny details.
I would say that programs should be broken into small units of understanding. Not necessarily for reuse, but mostly to eliminate the amount of context one needs to take into account.
For myself, I think the value of pulling code into functions is to make the inputs and outputs clear. Just scoping a block of code in a function doesn’t limit what that scope can access and, IMO, can make it harder to understand. Functions enforce this. I find value in that.
I go back and forth on it but I think it’s general fairly clear from the way I lay things out what the hypothetical return value you would be, and I think it’s nice to just be able to read a whole function and understand it entirely without jumping to function definitions. If you’re not interested in that detail, it’s also not hard to just skip over a block.
I think I like having the details mordae is complaining about available, and won’t bother to split it out unless one of these sub-blocks feels overwhelming. I’m not against functions or anything, but I do think splitting things out is overvalued. These blocks are already in a function that has a shape, it’s just a nice intermediate level of structure between chopping it up and just dumping the code straight into the body.
I call my coding style the “Bear of Very Little Brain” coding style.
Give me a big hairy bundle of spaghetti to maintain and I do this…
Why? It removes insane amounts of error checking complexity, that is untested, untestable and unused.
One thing I’ve been doing that I find simplifies things a lot in my head is separating a program out until multiple subprograms that get executed by a driver program. The guarantees of the operating system are pretty well understood so you know how that subprogram can affect the caller. Testing usually becomes synthesizing something over stdio. qmail is probably the most famous program to do this, beyond being standard unix practice. Yeah, there is a cost in terms of serialization but, IMO, it’s much easier to catch and handle serialization bugs than all the other possible bugs that can happen by existing in the same memory space, and the serialization cost is really not all that expensive for most problems I’m solving right now.
On a random tangential rant, one thing that I think Java really screwed up for a whole generation of programmers is the desire to jam everything into the JVM. The JVM has much less useful constraints imposed on it than the operating system (or at least a UNIX-like operating system), and it allows for a whole bunch of bad states that just don’t happen if one has memory isolation. I like to see the OS as the development environment, not as something that embarrassingly needs to be hidden away at all costs. And I know some people will say you lose the portability of your application if you do that, but I’d say most Java applications are running on two OS: MacOS and Linux, and those are close enough to not be a problem.
A colleague and I have long friendly flame wars over the vim vs emacs, bash vs ruby. (I’m on the emacs / ruby side)….
But one thing I noticed about my ruby code vs his bash code was his stuff was implicitly decomposed into hundreds of processes, and hence implicitly parallelized by the shell and OS.
There are many many things I dislike about the *shells, but this is a pattern I really need to adapt much much more in my ruby code.
I know why I went “all in one process” originally. There was a fairly high “wake the interpreter” cost in early versions of ruby, but there are patterns (most typically pipelines) and ways of countering that.
but this is a pattern I really need to adapt much much more in my ruby code.
I think it will be harder to do right than it may appear at first glance. The beauty of the OS with processes is that you get memory isolation which makes a lot of failure cases easier to handle. But yeah, it’s great just to be able to pop in a call to gnu-parallel to turn a single core script into one that can saturate all the cores on a server.
A long time ago I briefly thought I was a genius when I did something like this until I found out I basically reinvented CGI.
It depends on the usecase, of course, but something like CGI works pretty well for low-traffic problems. I do wish more data pipeline frameworks were really more about gluing programs together. One miserable thing about Hadoop is one has little choice but to push as much as possible into the JVM. I haven’t had a chance to use it much but something like Joyent’s Manta is much more along the lines of how I wish data pipeline frameworks worked.
It’s always valuable to reduce cognitive load where possible. The whole premise behind layers of abstraction is this. So I think anything where your processes and tools prevent mistakes is valuable. Especially if you’re working in a context where mistakes might cost human lives.
Anything that is not referenced anywhere gets deleted. Version Control is where dead code is stored.
That, or any time I realize a coworker or otherwise made a commit where code is commented out.
I really like what I’ve seen from zig and started trying to build it last night (currently fighting with a cmake issue building llvm and clang). I played with it months ago and just decided to again now that I have some time. This post looks really thorough and I look forward to going through it all in more depth once I’ve got the compiler built. It seems like exactly the kind of post a young language needs. Thanks.
There are various ORMs/mappers, but most advice you’ll find (and what I’ll say, also) is to not use them. Wrap a database connection in a struct that has methods to do what you want. Something I’ve found conditionally useful are generators to write the function to populate a struct from a database row.
The community will also say to not use web frameworks, and again I’d agree. The stdlib http package provides a stable foundation for what you want to do. You’ll have more luck looking for packages that do what specific thing you want, rather than thinking in terms of frameworks.
All that said, some coworkers like echo but I can’t for the life of me understand why. Any web-oriented package shouldn’t need to give a shit if it’s hooked up to a tty or not.
The problem is that when you do search and filtering on various conditions (like in a shop) you don’t want to resort to sql string stitching, I wasn’t able to find anything nice when I looked at the docs, for example in gorm:
db.Where("name = ? AND age >= ?", "jinzhu", "22") - I expect that when you have 20 conditions with different operators and data types you will end up having a bad time.
I’m at a small scale but I just write the query entirely and or do string concatenation. I’m having a fine time though. I just use sqlx.
sqlx
https://godoc.org/github.com/jmoiron/sqlx#In is pretty useful when you need it.
I admit I don’t understand how to use that from the doc string. Could you show a simple example or elaborate?
It’s useful for queries using the IN keyword, like this:
query, params, errIn := sqlx.In("SELECT column1 FROM table WHERE something IN (?);", some_slice)
// if errIn != nil...
rows, errQuery := db.Query(query, params...)
We built something in house that is very similar in spirit to sqlx but adds a bunch of helpers.
https://github.com/Masterminds/squirrel (which kallax uses) seems somewhat akin to the SQLAlchemy expression API. (And yeah, to me, that’s a great part of SQLAlchemy; I’ve hardly used its ORM in comparison.)
I went from Python + heavy use of the SQLAlchemy expression API to Go and got by OK with just stdlib, but part of that was that the work in Go had far less complicated queries most of the time. So, not the best comparison maybe.
I support the advice to not use mappers like ORMs, but I also agree with what you said. The middle ground seems to be query builders.
If you use Postgres as your DBMS by any chance, I advise you to make sure that the query abstraction layer of your choice doesn’t do query parameterization by string interleaving but utilizes PQexecParams underneath instead.
I haven’t used it but I think Dropbox built a library for that. https://godoc.org/github.com/dropbox/godropbox/database/sqlbuilder
[Comment removed by author]
Can anyone show me a laptop that doesn’t lose to a macbook in any of these categories?
Personally I like the Dell XPS 13 and 15. The 4K screens are really amazing to see in person. You can configure with an i7 processor, optional fingerprint reader, fast SSDs up to 1TB, up to 32GB RAM, touch/non-touch display options, up to 97Wh battery in the ~4.5lb model or 56Wh in the 4lb if you want to go lighter (benchmarks). For ports, it has an SD card slot, 2 USB-A 3.0 with PowerShare, 1 HDMI, and a Thunderbolt 3 (including power in/out).
I feel they compete in several of the categories and are worth checking out in person somewhere (Frys, etc) if you’re in the market. Just earlier today someone posted a link to this guy’s experience spending a year away from MacOS and he winds up with an XPS 15, which he mostly likes.
I went from a 2011 macbook pro 15” to a thinkpad 460p running kubuntu, its not as flush as the macbook but it beats performance & price for me. Form factor, I should’ve got a 15” again but thats my choice. Fit & finish on the macbook is better but then I can easily remove my battery and get to all the internals of the laptop, so I prefer the thinkpad.
I can try, though I am not sure what “fit and finish” means or how to measure it.
Ignoring that, I would offer up both the Dell XPS 13 or Lenovo X1 Carbon.
There are reasons to pick one over the other, but for me it was the X1 Carbon for having matte screen.
Fit and finish covers build quality and aesthetics. According to this page it’s an automotive term.
The new Huawei Matebook X?
How about the ASUS ZenBook Pro? I don’t have experience with it, but superficially it’s got very similar form factor and design to a MacBook. Aluminum uni-body and all. And being not-Apple, you obviously get better performance for the price.
Thinkpad P71. Well, except for the form factor (I’d rather get stronger arms than have to compromise on other factors), it beats the Macbook Pro on all fronts.
I’ve run Linux on a Macbook because my employer wouldn’t give me anything else. Reason was: effort of IT team vs my effort of running Linux.
But pretty sure my effort was extensive compared to what their effort would have been :)
[Comment removed by author]
Yeah, but then you’re stuck with the clunky old macOS rather than a nice modern UI like StumpWM, dwm or i3.
16:10 screen, wide-gamut display, correct ppi (X1C is too low, and the high-res Dells too high).
The last ThinkPad (of which I have many) to have a 16:10 screen was T410, which is now 8 years old.
Personally, there’s no other modern laptop I’d rather use, regardless of operating system. To me nothing is more important than a good and proper screen.
If anybody comes up with a laptop that has a 4:3 screen, I’ll reconsider.
Doesn’t the pixelbook have a nice tall aspect ratio? Ignoring linux compatibility and the fact that it’s a chromebook, I feel like you’d like the hardware.
It does, but tragically it’s ruined by a glossy finish on the screen. I bought one for the aspect ratio and brightness but almost threw it out the window several times in frustration before giving it away.
I don’t think many people buy new Apple hardware with the intention of immediately wiping it and installing Linux.
My MBP, for example, is running OSX because I need it (or Windows) to use Capture One photo software. When I upgrade to a new machine I’m going to put Linux on the old one and use it for everything else. I did the same thing with my iMac years ago.
I personally still think the build quality of Apple laptops are better than the alternatives. The trackpad in my old MBP, for example, still feels better than the trackpads I’ve used on newer machines from other brands. The performance and specs are less important to me as long as it’s “fast enough” and the build is solid.
All that said, I’m not buying any more Apple products because their software quality has completely gone down the toilet the last few years.
In this case I didn’t really have a choice. I had tried asking for a PC before I started this job; but they tried to get me in really fast and provisioned a Mac without even asking me. My boss made up some bullshit about how you have to have them for developers laptops as the PCs the company bought didn’t have the specs (16GB of ram and such). I’m really glad I got Linux booting on it and not have to use it in VMWare (which does limit your max ram to 12GB and doesn’t give you access to the logical HT cores).
But yea if it was my personal laptop, I wouldn’t even bother buying a mac to being with. My recent HP had everything supported on it with the latest Ubuntu or on Gentoo with a stock kernel tree right out of the box.
I got given a macbook so I had no choice what laptop to use so I installed linux on it and it works well enough.
Point zero is arguable. Is it never permissible to write code that hurts others? Well, that’s the same question as whether self-defense is ever justified, or whether the existence of weapons is ever justified, or whether the existence of a military is ever justified. Not being a pacifist, I cannot agree to it as it stands, and being a pragmatist, I suggest you punt the issue as being outside of what this oath should try to make all programmers everywhere agree on.
I suggest you punt the issue as being outside of what this oath should try to make all programmers everywhere agree on.
If you want something everybody agree upon, write an ode to motherhood.
But being a pragmatist, I wouldn’t suggest to make an oath that “all programmers everywhere agree on”.
Such an oath would be meaningless, thus useless and pointless.
If we need an oath (and I think that our profession is still too primitive to get one) it must have a meaning.
The Hippocratic Oath indeed was not politically neutral.
It didn’t contain the primum non nocere rule. It was much more!
It imposed to generations of doctors an ethical and political conduct through practical prescriptions.
And, as the husband of a doctor, I can assure you that it’s still taken seriously!
From my understanding of human nature I would say that doctors who put patient before profit would have done so without an oath, and those that put profit before patient do so, naturally, regardless of the oath.
Well in Italy a doctor that violates his oath can be punished by the Orders of Doctors, up to the ban which forbid him the practice.
And such ban is legally enforced.
That’s why a oath must have a meaning: to enable an ethical comittee to evaluate and judge when bad things happen!
And note that even the family of the doctor is legally bound by her Oath!
A list of carefully crafted unenforceable intentions and unfalsifiable statements worth nothing.
There is a difference between being sued by a customer and being banned from an association of peers for your ethical misconduct.
In particular if such ban will prevent you to practice your job for the rest of your life!
This put a positive pressure to doctors in Italy to thinks about the ethical conseguence of their act.
It doesn’t prevent bad behaviours from criminals just like the law doesn’t.
But it prevents a careless conformism, and force good people to reason about aspect of their profession they would ignore otherwise.
Also, sometimes it makes generational difference evident: as it happens when my wife and her father discuss of some therapies side effects or about their costs and so on.
However as I said our profession is still too primitive to synthesise an Oath.
The simple fact we are afraid of a meaningful one, is a proof of that.
In India a common practice is to order a huge panel of tests for a patient. The tests cost a lot of money and are often done at specified vendors. In the United States this particular practice is slightly less common but there are well documented problems of doctors prescribing therapeutics from particular vendors. It’s possible that in Italy the Hippocratic Oath vastly reduces such misconduct, while in India and the US it doesn’t, but I am skeptical, again from my observations of human nature.
Italian doctors are not saints.
They have their issue with the economics of the profession (which actually are not part of their oath afaik).
But just like you judge a programmer upon their skills, you can do that with doctors.
But the fact is that it is common to listen very skilled doctors talking not just about technical aspects of their work, but about ethical concerns of their actions. Actually its more common they spend time about this than about new therapies that are discussed or shared very rapidly.
At least it’s commont if you spend time with several of them outside their work hours.
Its much less common to listen programmers talking about ethics. Actually most of us care more about tha next JS framework to try, then about the final effect of our work!
Talking about hackers ethics, or even just about the difference between free software and open source makes a lot of us feel uncomfortable or even upset.
This lack of social responsibility is due to our naive interpretation of our role in the society.
It let us code addictive dopamine based games and then go home and spend time with our families as if we hadn’t harmed anyone.
Any good person working as a competent architect to build a dangerous bridge would struggle about the people that could die because of him.
We don’t.
We are not bad. We are just ignorant.
Isn’t this a clear sign of the primitiveness of our profession? How can we produce an oath now?
I suspect we are at an impasse.
I believe that ethics is something that requires many decades of education and guidance to develop and that this is absorbed from social mores (which we codify as laws and codes of conduct and what not) and that an oath, while nice, is very far from a major mover in making an individual ethical. Self regulation sounds nice, oaths make for nice ceremonies, but it’s all superficial.
Your belief is that oaths are very important and govern individual behavior and are therefore central.
However, I will make one note: Your remark “They have their issue with the economics of the profession (which actually are not part of their oath afaik).” surprises me. In most things, medicine especially, but also the legal and law-enforcement professions, economic incentives are a big part of un-ethical behavior and oaths are directed in large part at this.
The medical oath is supposed to guide doctors so that they look not to the profits of drug and testing companies (which give them kickbacks) or to hospital ordained surgical and diagnostic quotas (which also reflect economic incentives back to them) but to the safety and wellbeing of their patients who can be hurt when unnecessary treatment is inflicted on them.
In fact, your different interpretation of the oath reminds me that an oath, like anything else that is ceremonial and traditional, is so open to interpretation that it is basically useless.
Perhaps the real significance of a professional oath is its ceremonial and public aspect. I think that what @Shamar has been saying is that someone under such an oath – sworn before an organized body of peers with some jurisdiction over them – feels bound by their peers appraisal of their ethical conduct, more than just their own. In other words, codified social mores.
Yes, in part it is.
Like ethics and morality in general, like any other normative behaviour, a ritual is designed to benefit the community and thus is enforced by peers. It was true in Neanderthal tribes and it is true now.
A neutral and business friendly oath would be useless.
If it can be enforced by managers, the reproach from peers is pointless.
Your belief is that oaths are very important and govern individual behavior and are therefore central.
No.
Let’s explain this in another way you might understand.
Let’s measure the ratio between ethical topics and technical topics in the dialogues that the members of a community engage in their free time. I can observe this in two well defined communities, the community of programmers and the community of doctors.
Put the frequency of these ratios in a graph. You will get something like a gaussian.
Then compare the two graphs.
The community with an Oath will have an higher average and higher deviation.
Doctors are more conscious of the ethical implication of their work than Programmers.
Obviously, you can cluster both Doctors and Programers according to some feature (their specializations for example) and you will see different graphs with different deviations.
For example, according to my observations, the Free Software hackers discuss more about ethics than Open Source communities. Both are deeply concerned with technical aspects, but Open Source communities feel unconfortable with ethical considerations even when they have practical and legal effects.
The same happens with different groups of doctors.
And both communities may expose different graph at different age groups.
Still the difference exists.
Your remark “They have their issue with the economics of the profession (which actually are not part of their oath afaik).” surprises me.
@kghose let’s make an example, just to explain the difference in practice, with the sort of economical issues I’m talking about.
Two weeks ago my family and I were with my father-in-law for launch.
The father of my wife got a phone call from a patient with flu, that was asking the permission to go back to work despite being still sick. After some questions and answer about the course of the desease, the my father-in-law accepted.
Knowing the patient, after the call, my wife objected.
Her father stated that the patient need to work and his company need him back for a day (I do not know why… that was what the patient said). As a doctor, he cared about the patient life wholefully, not just the flu.
My wife (which is a family doctor just like her father) stated that no matter how bad the company wanted him back, the patient had to stay at home. Not just to recover from the flu. To avoid spreading the flu to collegues!
The dialogue became a bit harsh, actually, but always respectful. It took half of the launch. It stopped thanks to our daughters, that were a bit scared and confused (and bored).
To me, instead, it was extremely interesting.
Both of them implicitly referred to their Oath (it was not even needed to name Hippocrate, it was evident in their dialogue).
Their Oath is not neutral. It is a serious thing to them. It has practical effects.
It has Political effects.
Indeed because of it, they have issues with the economics of their behaviour.
The question is precisely whether weapons do more harm than not having weapons, and I’m saying that question is too big for this oath to tackle. Doctors can lead with “First, do no harm” because, first, they’re usually focused on treating a single patient more than building a tool with broad utility, and, second, biological warfare is universally banned and reviled, so doctors can’t participate in the offensive aspect of warfare.
I suspect all questions are too big to be tackled by oaths and all.ambiguity will be resolved by doing what I think makes sense (which is also how I resolve things without oaths).
I don’t think they’re bad points or principles but I don’t care for oaths.
This is a good point that I hadn’t considered. What about something like this:
I will only undertake honest and moral work. I will stand firm against any requirement that causes unnecessary harm.
Obviously the necessity of the harm is in the eye of the beholder, but that’s a pretty deep philosophical rabbit hole.
Is it never permissible to write code that hurts others?
I belive that you’ve phrased it inadequatly. It should rather be something along the lines of “those who take this oath, promise (which in the end really isn’t that much) not to work on software that causes harm” – after all there’s no coercion to take this oath, it’s just something, certain people want to do, because they belive in the values and ideals it’s written by. Personally, I’d even find it wierd if an oath were not to include this, if only for symbolic reasons, even if everyone who signed it were to cause “harm” on a daily basis. Most people aren’t naive Christians, in the nietzschian sense, and know when to promise and lie, after all, regardless of what the categorical imperative, utilitarian analysis or anything elese says.
That being said, there is still a certain naïve hopefulness, I belive in those who (quite literally) commit themselves to these theses. How is one to really quantify harm. Is writing an open source library that ends up being used by the NSA good or bad? Is discovering a security hole in some particularly widespread software, and (maybe a bit stupidly) telling the developers about it in a public mailing list, whereby hackers and other malicious agents get the opportunity to about it, while it remains unpatched, good or bad? What about inventing TCP/IP? Certainly the basis for creation one of humanities greates network of resources and information, doesn’t seem bad or harmful, in itself, but what about the other side of the coin it’s also the basis of one of the greatest surveillance projects ever (one that the Gestapo or the KGB could have only have dreamed about – and all of that under the guise of “freedom” and/or practical necessity). Or what about Facebook and other social networks, which by influencing what who gets to see, become some of the greatest factors in the modern political process, while also creating addictions by carefully studying human psychological profiles? I take this, for reasons I’ve sketched here not to be an absolute life-or-death commitment, but a practical ideals one lives by in their immediate life, to try and stop what one can stop, where real harm is obvious, since the literal interpretation just seems to be to stupid or void of meaning to be taken seriously. And when one looks at it this way, I belive that it is understandable why it should be included. One must never forget that words (and their absence no less) always say more that just what each word by itself would tell us.
Personally, I’d even find it wierd if an oath were not to include this, if only for symbolic reasons, even if everyone who signed it were to cause “harm” on a daily basis.
It’s weird to me only if taken by people working for monopolistic incumbents, those built on surveillance with history of unethical behavior, stuff supporting police states, maybe games designed mostly to be addictive, and so on. Such workers would be contributing to many forms of damage. Such contributions contradict their stated oaths, pledges and so on.
I agree. I’d argue that weapons are a necessary evil. I personally hope to finish my career never having put my hand to the creation of such things, but I recognize the necessity of their existence, and for those who feel that they can morally sanction their own work, I don’t feel qualified to tell them different.
If we alienate the people who write code for weapons, we can’t work with them to improve our skills, or (arguably more importantly) theirs.
authors of popular databases who discuss their sexist ideas openly, neo-reactionaries leading functional programming conferences.
How dare people discuss controversial and offensive ideas openly? They should be forced underground so those ideas can fester without any external contradiction or moderation.
And of course people with weird, icky politics should be censored from purely technical events. Who knows what kind of whacky fascist programming paradigms they might force on us otherwise?
This is an incredibly bad faith excerpt to take out of context. The author was discussing doubts they had about attending the Recurse Center, and:
A bigger part was the mission itself: “to get dramatically better at programming”. Did I even want to get better at programming?
A lot of bad things in the world have been created by programmers: software for operating drones that bomb civilians, data-mining that violates privacy, companies that “disrupt” by dropping vast amounts of capital in to a market without any intention of building a sustainable business. A lot of bad people love programming: open source thought leaders who harbor deeply racist views, authors of popular databases who discuss their sexist ideas openly, neo-reactionaries leading functional programming conferences. The norms of programmer culture still revolve around using needless complexity as a cloak of wizardry.
As @vyodaiken says, you’re demonstrating the toxic behavior the author is wary of.
This is such a misguided fear (even though the author says it wasn’t realized in reality anyway) - lot’s of bad people love mathematics, science and music too, it’s no reason to question the value of those pursuits.
That’s the nature of fear. I don’t know how to interpret your comment except as a criticism for the author talking about something she honestly felt, then talking more about it later when the fear wasn’t realized. How is this a problem?
Tons of people worry about the impact of their work and whether they are on a path that is ultimately doing more good than harm for the world. Is the author not allowed to worry about that too? Is she not allowed to talk about it?
I’m trying to give you the benefit of the doubt, but I don’t understand what else your comment could be saying.
It is more about me being puzzled by the train of thought. I understand wondering if programming is worthwhile, but I don’t understand how the actions of others have any relevance at all.
edit: I guess you could make the case harm is an inevitable outcome of programming.
A misguided fear? The Recourse Center has designed social rules to prevent behavior we know is endemic in technical (and business) forums. The author appreciated the results of those rules. But she’s “misguided” ! In what way? Is it your contention that there is not an endemic toxic culture in tech forums? Are all those women just making it up? Is Yarvin’s hobby of smirking racism something we are obligated to ignore? How do you get to decide the validity of what other people experience?
I wasn’t responding to that part of the article; I was responding to the part of the article I had an opinion on. What is your rule for when people are allowed to respond to things? Do they have to fully agree or disagree with the entire article first?
And of course people with weird, icky politics should be censored from purely technical events. Who knows what kind of whacky fascist programming paradigms they might force on us otherwise?
How dare women suggest tech and especially programming is a potentially hostile environment one might not want to enter! Preposterous. It is just “locker room talk” for programmers! Either learn to deal with it or stay out of our tree house, you icky girl!
Why? Why would you focus on that sentence in a post full of great sentences about positive aspects of the Recurse Center?
Reminds me of a quote from Lean Out
Women in tech are the canary in the coal mine. Normally when the canary in the coal mine starts dying you know the environment is toxic and you should get the hell out. Instead, the tech industry is looking at the canary, wondering why it can’t breathe, saying “Lean in, canary. Lean in!” When one canary dies they get a new one because getting more canaries is how you fix the lack of canaries, right? Except the problem is that there isn’t enough oxygen in the coal mine, not that there are too few canaries.
(from Sunny Allen’s essay What We Don’t Say)
Lot’s of people have a knee jerk reaction because a lot of this stuff sounds like “remove undesirables from society/jobs/conferences”, and puts the power of who is undesirable into the hands of some questionable people.
It wasn’t the point of the post though, so i agree with you.
Got another Lean Out quote for you cause they’re just so damn relevant. This one from Sexism in Tech by Katy Levinson.
In the least three years, I was asked not to use the words “sexism” or “racism” when speaking on a diversity panel because it might make the audience uncomfortable.
Which throws into especially stark relief wyager’s comment that sparked all of this discussion, since “both sides”[1] are equally worried about censorship. But one group actually gets to say racist, sexist, discriminatory stuff and remain in charge. The other can hardly speak on panels and post on their blogs without the whole world jumping down their throats.
So yeah, the knee jerk reaction you mention rings a little shallow to me.
–
[1] I know, “both sides” is highly misleading, but it captures the duality on display here.
The other can hardly speak on panels and post on their blogs without the whole world jumping down their throats.
You mean like how people tried to ban Moldbug (presumably who the OP was talking about) from LambdaConf?
With something akin to backchanneling over weird views on a blog totally unrelated to his behavior in conferences, too. Another I cited previously was Opalgate where a guy that didn’t agree with trans people on Twitter got hit by a storm of folks in his project wanting him ejected. They didn’t contribute anything to it like he regularly did but did demand it adopt all their political positions after ejecting its main contributor. The venom was intense with much talk of things like burning bridges and them trying to set him up to look like he supported child molestors or something.
And these are supposedly the oppressed people who have to worry about “the whole world jumping down on their throats.” The people who eject any folks who disagree with their beliefs from their own projects, conferences, and this thread. You and their other targets don’t look very powerful and oppressive from my vantage point. They were wielding more power in each of these circumstances.
We separate things based on context. In conferences, he had caused no trouble at that point. The reports at the time said he just went to give talks and be helpful. On his blog or personal life, he says or does things I don’t agree with. More than many others but still same thing: many people disagreeing with many things. I’d rather have him at the conference because I don’t ban people I disagree with. If he misbehaves at conferences, then we deal with him.
My opponents have a different view. They think everyone should believe/do certain things and not believe/do other things. They should be compatible with those in every forum. If they aren’t in even one place, they are to be shamed in or ejected from every place. He was just one example of that behavior. He was an easy target since his crazy views wouldn’t bring lots of sympathy. In the Opal example, the project had been welcoming and nice to everyone with the violation being a maintainer’s actions on Twitter. Nothing stopped people from participating in the project and no evils were done in it. The maintainer did violate a rule of their politics in one public forum, though. So, an entire group of them hit that project, ordered the ejection of that member, ordered total compliance with their beliefs, trolled the hell out of them, and of course offered nothing to the project in code or other support.
I’d rather stop that kind of stuff. It’s just domination rather than anything moral or productive. We can either let a small group of people enforce their arbitrary views on everyone with no discussion or dissent allowed like they desire. Alternatively, we accept everyone under rules the various groups have a consensus on where good things we agree on are encouraged and bad things are prohibited. That maximizes the overall good and productive things we do. That’s my stance. It’s also what we usually do at Lobsters. It’s also what most successful companies and democratic governments do. What my opponents who eject people at conferences ask for is more akin to a dictatorship or theocracy since discussion/dissent is considered evil to be punished.
I have somewhat similar thoughts as you, but here’s a thought experiment for you that might help put some things in perspective. Let’s say you are running a conference. You are invested in it and hope for it to succeed, and you have some or all power in determining who is invited to speak. After the CFP ends, you like Foobar’s talk and invite them. Sometime later, you post the list of speakers. To your surprise, a lot of people are upset about Foobar’s invitation because Foobar maintains a very controversial blog that makes a lot of people uncomfortable.
You decide to stick to your guns. You definitely appreciate that Foobar expresses controversial views and understand that it makes a lot of other people uncomfortable, but you determine that since Foobar’s controversial views are not related to the conference topic, and therefore, they should still be allowed to speak. So you communicate this to all the would-be conference goers and other invited speakers.
I think this is all pretty reasonable actually, although I do understand why some might object to this type of decision making on ethical grounds. But here’s the kicker. At this point, you hear back from N of the invited speakers and M of the people that would otherwise buy tickets. All of them feel strongly enough that they refuse to attend your conference.
So here’s the question: how big does N and/or M need to be for you to retract your invite to Foobar? Are you so ethical as to allow the conference to fail? Or are you so pragmatic as to let it succeed? Perhaps a little of both?
I think the point of this thought experiment is to demonstrate that morals/ethics aren’t necessarily the only thing at stake here. In particular, you could even be in violent agreement with Foobar but still rescind their invitation for practical reasons alone because you want the conference to succeed. I personally don’t have a strong answer to my thought experiment either, so this isn’t a “gotcha” by any means and probably more of a rhetorical proposition than anything else.
(Sorry for delay. I was getting overwhelmed between work, email, and foums exploding. Trying to reply to everyone.)
Alright, before the thought experiment, I’ll note that the situation with that conference was a bit different per initial reports I read. The conference wasn’t experiencing a huge loss hinging on accepting or taking such people. Many people liked the presenters’ talks. Instead, a handful of political activists worked behind the scenes convince the people running it to eject a person they didn’t like regardless of what the conference thought. They probably said a lot of the same kinds of things, too, since an organizer would be receptive to them. This kind of behavior is a major reason I’m holding the line resisting the political or meta stuff such people want to work with.
Alright, now to your exploration which is more than reasonable: it’s something I’ve worried about myself.
“At this point, you hear back from N of the invited speakers and M of the people that would otherwise buy tickets. All of them feel strongly enough that they refuse to attend your conference.
It really comes down to the philosophy of the organizers I guess. There’s a few routes they might take:
Ideological. Do what’s perceived as right regardless. In this case, they should include their politics in their marketing to give clear signal of what’s expected. They should block or eject anyone not compatible even if the talk fails. The example you gave is one where the talk could fail. On other end, certain conferences in highly-liberal areas might fail if not doing enough to address their concerns like inclusive language.
Impact and/or financial success. This philosophy says do what it takes to succeed financially or just in terms of conference activity. Nothing else matters. You gave one example where a conference might have to eject folks controversial among highly-liberal people to get attendees. I’ll also note this same rule would justify reinforcing ills of society like racism or sexism at conferences under “don’t rock the boat” concept. Lecturing or politicizing typical bunch of Silicon Valley or enterprise developers, esp the privileged males, will only irritate them with lost sales. This priority is a double-edged sword.
In the middle. The great thing about real life is most stuff is a spectrum with tradeoffs. That’s the hard thing but also good here. An example is an organizer might set ground rules that reduce bad behavior instead of force politics front and center. Another example is ignoring diversity or bad behavior on the sales team at conferences or in meetings for enterprise segment to drive up sales since buyers often want to know their partners are “like them” or some crap. Whereas, the backend, developers or community side, can be really diverse without the haters even knowing they’re supporting an organization that heavily invests in developming minority talent. This is one of my hypothetical schemes rather than something I’ve observed outside Fortune 500 trick of having immigrants doing lots of work in background.
So, I see some possibilities here where the conference organizers’ priorities seem to be the biggest factor in whether they should accept or block someone. They might block some but not others depending on level of extremism. They might rule exclusively on behavior instead of beliefs. The crowd they’re serving might like behaviors like sexism or hate it with serving the crowd being morally context-sensitive.
I write off top of my head for honesty. I wrote that before I got to your last paragraph. I was about to say I don’t really have an answer for you past the conditional framing above. Too dependent on circumstances or whose in control. Seems you didn’t have one either, though. It is a very important consideration, though, since conferences are usually created to accomplish specific things instead of brag they were compatible with ideology of a person or group. Most of them anyway.
My opponents have a different view. They think everyone should believe/do certain things and not believe/do other things. They should be compatible with those in every forum.
It is possible that there is a belief, or set of beliefs, which are sufficiently sociopathic that they disqualify people who hold them from a platform in any context? Is there some value for X that if someone publicly and explicitly said “X” you would refuse to support them in any way?
I hope it’s uncontroversial that the answer to both of those questions should be “yes”. In making that affirmation we’ve established that the set of things exists. Now the discussion shifts to which things belong in the set. Reasonable people can make reasonable arguments for this or that belief. I think it’s completely understandable that Moldbug’s feudalist racism would cross the threshold for a lot of reasonable people.
Put more succinctly: a society isn’t obligated to give a platform to the intolerant in deference to the abstract right of free expression. Rather the opposite: a society is made better through a vigorous assault on intolerance, in whatever form it blossoms.
You might separate things by context but I don’t. People are not compartments. You might think other people should separate by context and not consider that e.g X is a holocaust denier when X speaks on functional programming. Great but don’t dare demand I do the same. That would be super presumptuous. BTW you appear to believe some organized group is after you. I’m unaware of any such group.
e.g X is a holocaust denier when X speaks on functional programming. Great but don’t dare demand I do the same.
I always challenge people who say that to list all of their political beliefs on the major topics that provoke controversy somewhere to link in their profile. We’ll just link it before any comment they make so the person replying can see the entire political spectrum of who they’re talking to plus what they’re saying in that moment as one thing. Then, like you said, they can want to interact with that person in their entirety or ignore all value they may have contributed over one thing they didn’t like. I think we should heed Richelieu’s warning instead.
“BTW you appear to believe some organized group is after you. I’m unaware of any such group.”
I just cited a few. The Yarvin thing was a small group of political activists trying to get rid of someone they didn’t like in a shady way. The Opal scandal was Ehmke’s posse pummeling that project on Github with no problems within it. Ehmke’s been in quite a few of these with an openly-stated mission to force her brand of politics (“social justice”) in every forum using her Code of Conduct as leverage. Two people involved in those actions are active in this forum with both voting for a similar CoC here. Ehmke later griped about the hate she and her white-hating buddies receive online and at Github saying it was because she’s trans rather than shoving her politics down the throats of everyone she meets. I particularly loved how they bragged about hiring “token, white people” on their team. Nobody could even joke about that if they said black. Anyway, I called Ehmke out on that submission for trying to pretend her politics had nothing to do with it. Then, some organized group was after me with the community at least being more impressive in how that was handled than most forums those kind of people hit.
(Edit to emphasive these are loosely-organized, small groups that know how to say the right things hitting people not usually expecting it or knowing how to react. They create PR nightmares with passive-aggressive sophistry, basically.)
So, yeah, there’s definitely organized groups doing the exact thing I’m worried about with some here that have done it on previous forums. They always prop up the rules they use as leverage by saying they’re just trying to stop discrimination or hate speech but (a) they get to define what is or isn’t and (b) their own actions are quite discriminatory against other groups with inconsistent enforcement. Even minority members that disagree with them get hit as happened on HN same week where I got slowbanned for quoting women disagreeing with women. Give them an inch in a new place, they’ll take a mile. I’m not giving them an inch.
Note: There’s plenty of similar stuff happening at college campuses across the states, too. A lot of folks doing this sort of thing come out of them. Hard to combat since dissenting speech is considered hate speech or otherwise put down.
That’s not a challenge, it is an example of sealioning. I don’t have any obligation to provide you with an algorithm or to be consistent or to satisfy your sense of what’s right. My right to not read Pound’s poetry because he was a fascist or to read Celine’s early work because it is so eloquent even though he became a fascist, or to refuse to attend a conference where Yarvin speaks or to prefer the rules of Recourse center doesn’t depend on your stamp of approval. Sophie didn’t make any demands of you. On the contrary, you are demanding that she not express opinions that make you uncomfortable. Get over yourself. Go explain why Yarvin’s work is so damn great that you don’t care that he’s a smirking racist or cheer for the pseudo-science of the Google Manifesto all you want. You have the right to speak. You do not have the right to demand others approve or refrain from criticizing or even shunning you.
I applaud your patience with this guy, who really just seems to be one of those crappy Damore-Dudes, end of story.
Why would you focus on that sentence
Because I didn’t have anything to say about the other ones. Do you think I’m obligated to address every sentence in an article if I want to address any of them?
The fact that we almost know who she was talking about proves that they can currently discuss these ideas openly mostly fine.
So these people express their opinions, and others are like “well now I don’t want to talk to them”. If you(*) want to barrage people with your unpopular opinions, people will stop wanting to hang out with you .
I understand the fear of being shut out of social events like conferences. But they’re social events, so if you make yourself unliked… No amount of rulemaking will solve that, I think.
The bad faith logical inverse if your argument is “everyone should be friends with everyone. No matter how much disagreement with social issues are present, someone should always be allowed to be present. This includes allowing to bully other members of the community without repurcussions ever.”
It’s the bad faith interpretation, but one that some people will make.
(*) Impersonal you
“So these people express their opinions, and others are like “well now I don’t want to talk to them”. “
These people express opinions but want anyone disagreeing to shut up. That’s been present in replies on most threads here where people did. Allowing only one side to speak while defining any disagreement as an attack or hate is political domination.
“This includes allowing to bully other members of the community without repurcussions ever.””
There’s the word games your side is famous for. vyodaiken did it earlier redefining a rhetorical disagreement as an attack on one side but not the rhetoric of the other side that painted everyone without qualification with negative labels. In your case, the people whose politics I oppose here regularly define any disagreement as hate speech, offensive, bullying, behaviors not to be tolerated, and so on. Not all of them do but many do. You all redefine the words from the neutral, tolerable thing they are (eg disagreement or political bickering) to a new word we all have a consensus against (eg bullying, hate speech). Then, you’re arguments for action focus on the new word with its meaning whereas what was actually going on is a lesser offense which wouldn’t be justified.
So, what people supporting Sophie actually want is anyone on their side able to express their opinions without disagreement and without repurcussions ever. Whereas, anyone disagreeing with it is automatically labeled as something far worse, dismissed immediately, and for some ejected if allowed by rules. That’s always worth fighting against even if wyager’s parody was as poor a wording strategy as Sophie’s own overly-broad, only-negative portrayal of programmers.
She never advocated censorship. She never said “most programmers” or “all programmers”. So your response is obviously not directed at her words but at something else.
as Sophie’s own overly-broad, only-negative portrayal of programmers.
Again, this is an opinion unsupported by the data. The examples were specific, and real. The concerns are non-trivial, and real. You’re making something about you that isn’t about you.
That’s always worth fighting against even if wyager’s parody was as poor a wording strategy as Sophie’s own overly-broad, only-negative portrayal of programmers.
wyager is arguing that people with bad values should be allowed space in public or in others’ private spaces, which is a bad value. Majority supremacists, patriarchal maximalists, authoritarians, etc. should not be allowed safe spaces, and should never be accommodated.
From your characterizations of the author’s post and how they portrayed programmers, it’s clear you’ve either not read it and are arguing from ignorance, or you have read it and are arguing in bad faith, since the passage is clearly contextualized as part of explaining an internal struggle about how best to grow as a human being.
From your characterizations of the author’s post and how they portrayed programmers, it’s clear you’ve either not read it and are arguing from ignorance, or you have read it and are arguing in bad faith
I’ve read it. Part of learning a field and growing as a human being is a fair assessment of what’s going on in it good and bad. Author’s concerns in that section solely focus on the bad… the worst of it actually… with the people side being like talking points out of one part of a political debate. Outside of those, I usually see a wide range of claims about programmers, jobs, effects on world, etc. Author is setting up false, strictly-negative premises in either ignorance or bad faith, maybe even unintentionally due to bias, then struggling to work from within the moral straight-jacket she put on. Totally unnecessary if starting from a more accurate worldview that includes the positive and neutral people and programs.
Note that I liked all the stuff about RC in the article. I enjoyed the article right up to that point. I just mentally deleted that part so I could just think about the rest which was most important parts. As in, more corroboration and anecdotal evidence in favor of RC visits. Then, the debate started.
Note that I liked all the stuff about RC in the article. I enjoyed the article right up to that point. I just mentally deleted that part so I could just think about the rest which was most important parts.
I feel like you’re attempting to speak in good faith, so I’m going to do the same.
This point I’ve highlighted here, that you “just mentally deleted that part”, is an example of privilege in action*. You have never had your life or well-being threatened by people or organizations like the ones the author calls out, and you have never had to be concerned with whether or not they were active or influential in the spaces you inhabited. Other people are not so lucky, and have learned from difficult experience that they need to be aware of their surroundings and who might be in them, or else they may be injured or otherwise harmed.
Some people, especially those who come from outside the main software development industries, have heard only that IT/tech has a huge problem with sexism and toxic masculine culture. Some people are members of the marginalized groups whose well-being is directly threatened by the personal values of community leaders of some of the popular software communities, as named by the author of the post. The Recurse Center attracts a lot of people from diverse and non-technical backgrounds, and many of those people share the concerns that the author had, and would appreciate having them explicitly dispelled with regards to RC, as the author did.
So the least that those with privilege, like you and I have, can do, is not make it harder for those less fortunate to engage with the playground we have (programming) that also gives us power and status. It’s bad form to raise barriers against those with a harder lot in life than we have. These kinds of messages, from “the other side” as it were to those people who might be afraid of what they’ll find when they get there, are super important. And it’s not about you, or me, or anyone here, unless they’re part of the problem. It’s for other people like the author or who might be thinking about getting into a tech career by applying to RC, but who have heard the industry has some problems.
*) note that you have this privilege, even if you are not privileged in other ways (eg, you were born into a poor family, etc.). life is complicated.
Since you’re being in good faith, do read this next like I’m just bluntly saying something instead of losing my shit or being loud. ;)
“You have never had your life or well-being threatened by people or organizations like the ones the author calls out, and you have never had to be concerned with whether or not they were active or influential in the spaces you inhabited. “
You’re assuming I don’t understand the concept because I’m presumably white male. My first school experience was being attacked or mocked because I was a “nerd.” All but a few people excluded us which happened varying degrees whole time in school. That included “minorities.” They all do to nerds what they claim others do to them, including violence by alpha males but not police. They might interrogate or arrest them if something happened involving computers if said nerd is known programmer or hacker.
Next, I was white in a black-run, mostly-black school where they added to mockery or exclusion the fact that we were shouted down if disagreeing with any issue (especially racial) plus randomly attacked. I doubt most of these people talking about their minority concerns have been held down on a bus while black people take turns beating them with the smirking driver not reporting it. Attempts like that were too common for me until I learned kickboxing and paranoid vigilance, esp wide turns around corners. Still had to dodge fights due to rule white people can’t be allowed to win against black people either at all or too much. Varied. My friends and brothers who went to other black schools endured the same where just bending over a water fountain could be too much vulnerability. I avoided bathroom stalls, too, after seeing what that led to.
I also got to be a man in places run by women who favored women. Essentially, whoever stayed in their good graces talking about what they talked about, being an insider, laughing at anti-male jokes, and so on had more privileges in those places. That would benefit grades, get more work hours, increase odds of promotion, even get some guys laid with those opposing sexism shamed. Unlike women on average, it’s been a while since I dealt with that but happening again in my current company. Highly-political, card-playing woman took over a specific department I was almost transfered to. After exit-interviewing her ex-employees, I blocked transfer fast before expected changes happened: she hired mostly black folks like her (esp exploitable youth), promoted only the older black women exactly like her kissing up instead of mix of races/genders who outperformed them, and politics over performance further destroyed that departments’ numbers with them saying nonsense about why. Current team is good with mix of straight/gay/lesbian, white/black, and liberal/moderate/redneck. Usually fun, interesting group with occasional in-fighting due to differences all apologize for after.
That covers structural racism and sexism which the type of politics I fight denies even exists for whites or men despite supporting data. We get no help. What about “neo-reacitonary?” Well, I am an outspoken liberal and Union man who defends decent Muslims and calls out police corruption on the side in the rural South deep in Trump, meth, and capitalist country. Interesting enough, one insult they fling at me here is probable Hillary supporter while people I argue with on liberal forums assume I’m a right-winger. Biases… Being outspoken in rural spots led me to have to negotiate with people intent on beating or killing me right there if I got too many words wrong. Rare people but non-passive outsiders will run into them. Most online “activists” on social media talk about threats which I find are folks talking shit online or with prank calls that don’t on these issues result in hospitalizations or anything almost ever. Just irritating trolling by jerks shielded by anonymity. Pales in comparison to what even a trip for groceries can cost a white person in impoverished areas in or around Memphis, TN. The First 48 was banned from there over too much stuff to cover. Some police are gang members, too, so gotta act in a way to reduce risk of their attention.
Since you admitted it, you might have privilege of growing up as or hanging with white people that didn’t face racism, sexism, or drug heads’ threats on regular basis. Lot of us in poor areas, minority-controlled areas, areas of opposing politics, isolated areas… these are some where many say they have similar experiences to me. We find it strange people “speaking for oppressed” as they might say ignore existence of probably millions of us due to skin color or gender. Especially rural whites given their high rates of both drug addiction and suicide, too. My friends and family have had to fight those.
Alright, what about someone like Sophie or I who are concerned with environments where we might be facing racists or sexists that hate our group? Well, I agree with you entirely that it can be reassuring to see someone bringing that up saying it doesn’t happen at a specific location. Going from an all-black school to a mixed school where they didn’t hate us was… it was heaven. We had fun together! Likewise, groups with fair/excellent women or being around civil Southerners who only get X-ist if explicitly talking politics. I’d definitely want to know every place or group where I could avoid groups I mentioned first in favor of others if that was best I could hope for.
That said, remember how it started was exclusively portraying the field based on worst of the worst. I don’t do that. Since we’re at that point, I’ll tell you the violent people I met were single digit percentage of each area, the negative bias was huge, there were coping mechanisms to get me past some of it, there were neutral/decent people, and some were so fair or good they inspired me to be more skilled or tough. If I talk about a field, I try not to throw them under the bus entirely or I take the counterpoint I had coming for screwing up due to emotion winning or whatever. You’ll see that in programming with C or PHP languages where I’m a strong opponent but don’t pretend they’re 100% bad even if many developers do damage. Likewise, following my politics, I’m still getting along with and exchanging tips with specific Lobsters who were strongly opposing me in prior political debates.
So, what she was doing isn’t the only way to respond. It was a weaker, overly-broad, politically-charged claim that got low-value reactions followed by a whole battle that distracted from her main points. She set her post up to fail to quite a degree. I’d have told her to be more fair and accurate since bringing politics in is putting a spotlight and a metaphorical scope on you. The negative responses left over would have to be haters or themselves prioritizing some politics. Easy to dismiss when they have little to no ground to stand on. Those of us in minority positions unfairly have to be careful about our claims since they’ll get more scrutiny and attack.
Since she probably made up her mind, I just mentally deleted it like I trained myself to do when saying something to that person won’t change their views IRL. Focus on good, shrug off perceived bad if not an intentional attack, and go on from there. It’s how we integrate and survive down here in our powder keg of diversity. Works fine, too, with most of us getting along well enough. :)
“These kinds of messages, from “the other side” as it were to those people who might be afraid of what they’ll find when they get there, are super important.”
This I disagree on if they’re aiming to affect policy or law anywhere. I’ve already seen it happen in many places with ultra-liberal universities being good examples. In those, allowing it to go too far without participation shifted power to those groups. Those groups built on their politics and power until they regularly belittle whites or males in various ways. They also try to silence disagreement on political issues saying it’s not about them. Well, if we stand to lose anything (even rep or jobs) by decree, then it is about us and we should at least weigh in. I don’t gripe about the reasonable stuff where each person has a view they can state, chance at the job, etc. I’m usually backing it.
I’m sure all the people hit with the bad value hammer will disappear into the ether once you get your (apparently unauthoritarian) way.
Your false equivalence, that being intolerant of intolerance and hatred, is also cowardly stated using passive aggressive style, as well as sarcasm. That is, you are acting like a coward, lest I be accused of not speaking my point forcefully enough.
I find passive aggressive sarcasm allows for remarkable concision, but whatever. I don’t respect you and your group as the arbiters of good and bad values and all people like you have done is make me care substantially less about being labeled a patriarchal maximalist or whatever you’d like. Many people I know feel similarly. We’re not going to leave the field if you succeed in banning us from the recurse center
I don’t want to wield power. I want to not be around assholes. Are you really saying you’d rather hang out with white supremacists and gamergater pigs, than take a stand and say, “Those values are not welcome?” How is this even a question?
I don’t get why people don’t want to talk about this? I don’t necessarily agree with wyager, but this type of discourse is pretty healthy IMO. It’s precisely why I prefer this site to HN, because that comment would surely have been censored by the moderators.
It’s also completely off topic in the context, which is about using programming for good, and it’s really obnoxiously phrased to boot. Which does matter.
Obnoxious is a bit subjective, but his comment is destructive (as opposed to constructive), and that’s an objective observation.
How dare people discuss controversial and offensive ideas openly?
This is sarcastic and demeaning.
They should be forced underground so those ideas can fester without any external contradiction or moderation.
Sarcastic and a strawman.
And of course people with weird, icky politics should be censored from purely technical events.
Sarcastic and a strawman.
Who knows what kind of whacky fascist programming paradigms they might force on us otherwise?
Sarcastic and a strawman.
Here is a what a more honest, direct version of the post would be:
I think people should be allowed to express controversial and offensive ideas openly. Otherwise, they’re pushed underground where they fester, instead of being brought out into the light where they are exposed to moderation and contradiction.
But that wasn’t the comment we got, and for good reason. The more direct version wouldn’t be posted because it is immediately obvious that it isn’t related to this topic. The response to it might be
The author is just talking about what makes her uncomfortable in most programming community spaces, and why the Recurse center was so valuable for her. She isn’t making an argument or saying you need to feel the same way.
Thus it is clear that the comment, even in a less caustic form, isn’t particularly relevant. I mean, look at the originally quoted snippet in wyager’s post: it’s just a list of facts.
“controversial and offensive” is a fluid social contract that changes with audience and context. The big problem is nobody can ever agree on what is controversial and offensive. At the same time people’s nuanced opinions are routinely caricatured as the most extreme version (in both directions, and I’m guilty of it too) then paraded on social media to people with no context.
I try my best to avoid the words controversial and offensive. Constructive and destructive are less weighed down with baggage and relativity (though there is always room for people to mess with words). Constructive moves the conversation forward. Destructive moves it backwards.
At the same time people’s nuanced opinions are routinely caricatured as the most extreme version […] then paraded on social media.
Yeah, I’m a bit detached from it since I don’t use Twitter or Facebook, this being a primary reason. It’s a good example of destructive conversation. Nobody ever learns from it, nothing really improves.
I’m very sorry I didn’t use the exact rhetorical style you were hoping for. In the future I will avoid using sarcasm and any other rhetorical technique that you don’t like is “destructive”.
God forbid you say what you mean.
Come off it, you know it isn’t about what I happen to prefer. If you don’t know better, then you should.
I doubt it. She’s making political points in the post instead of just talking about good things at Recurse Center. She’s putting it front and center in people’s minds as they read. Anyone reading it deserves to respond to that. That automatically means a thread might get political. It’s definitely her intention.
Predictably, someone responded to it with thread turning to the tangent. Ive had enough politics for the week, though. So, just pointing out the obvious that statements like hers with accusations against a bunch of programmers or political statements will definitely get a reaction. She couldve got the points across without that but wanted it political.
She’s not allowed to talk about politics? She makes a fairly common point: she finds the environment around programming often unpleasant or hostile and she wanted to avoid that. So she did. Many people, including myself, are put off by people who sound like that Google Memo person or worse and try to avoid it. If that makes other people uncomfortable, that’s too bad.
wyager is allowed to counter her politics if she is going to bring it up. It’s not “what she was trying to avoid.” It’s what she or anyone else should expect saying what she did. All Im saying.
Your initial comment read like one should be able to make negative, political characterizations of programmers with no reply expected.
I guess for me it’s not who’s “allowed” to “counter” things or not, but is this actually a useful discussion? The comment reads to me as a wordy way of saying “I disagree with your politics”, which, ok, but what does that add? When I read the original post I could already guess some people would disagree, sure. A person doesn’t have to reply to every in-passing comment they disagree with on the internet. It wasn’t even the main point of the post!
I’ve noticed more discussions here lately being sort of tangential sniping threads. I posted an article a few weeks ago and the entire discussion was a thread about whether people like PDFs. Ok, fine, but I posted a research paper, and the fact that you don’t like PDFs isn’t really on-topic, novel, or interesting. And then there was one last week where someone didn’t like that the title of an article ended with a question mark. I think we could use less of that kind of thing.
I’ve noticed more discussions here lately being sort of tangential sniping threads. I posted an article a few weeks ago and the entire discussion was a thread about whether people like PDFs.
I agree with this. It happens in political threads so much I voted against politics in meta. I can’t overemphasize that since, yet again, one disagreement with a political point in a submission created another situation like this. I basically just represent the dissenting side if they’re getting dogpiled or call out double standards when people pretend it’s about logic or civility rather than politics.
I totally agree, though, about the sniping thing with me preferring some kind of rule against it if not politics in general. Maybe in addition to. It should make for a quality improvement. I’m still fine with tangents, though, so long as they’re adding insight to a discussion like the meta stuff I try to do connecting sub-fields.
But he didn’t counter her politics, he attacked her. She didn’t call for suppressing anyone’s speech. She simply said she found a certain common mode of speech in tech, a mode I find offensive too, to be unpleasant and wanted to avoid it. There is no sensible way to take issue with that.
She said this about programming:
“A lot of bad things in the world have been created by programmers: software for operating drones that bomb civilians, data-mining that violates privacy, companies that “disrupt” by dropping vast amounts of capital in to a market without any intention of building a sustainable business. A lot of bad people love programming: open source thought leaders who harbor deeply racist views, authors of popular databases who discuss their sexist ideas openly, neo-reactionaries leading functional programming conferences. “
She painted a picture of programming as if it was mostly bad things done by bad people. She painted the picture that people going to thought leaders, doing database work, or getting involved in functional programming were only going to be dealing with the worst. You’d think the profession was one of most horrible ever invented reading that stuff. Don’t ask that she properly qualify that: take her word for it without any of your own comments or reactions. She is attacking most programmers with a programmer, @wyager, reacting to that statement.
When a man here said something similarly negative about tech industry, several of us countered him pointing out how he was vastly overstating the problem projecting the worst groups onto the average or majority in a way that was unfair to them. Like her, he exclusively considered the bad things and people in tech when judging the field instead of the vast amount of decent or productive things programmers have done many of whom were OK people. We also suggested maybe he avoid the worst if we couldn’t get rid of them since they were ultimately unnecessary to interact with being a drop in the bucket of the many people and resources out there. I don’t remember all these people being there supporting his view shocked anyone disagreed with him. This one was a woman with different set of politics. Let’s see what happened.
So, wyager responds with a political comment that looks very motivated by emotion lacking qualifiers, consideration to others, or evidence much like Sophie’s. While Sophie’s ad hominem is allowed to stand, you imply his rhetoric shouldn’t be present at all. @jules deconstructs his aiming for purely logical or information content with some strawman which was not done to Sophie’s (or most here with similar viewpoints). @mjn said it was not adding anything new which was true about Sophie’s (or most here with similar viewpoints). These replies are exclusively given to people whose politics each person disagrees with but not people doing same things whose politics each agrees with. They’re held to a lesser standard. So, rather than it being what it appears, these comments aren’t really about addressing civility, information vs rhetorical content, and so on. You all mostly ignore those attributes for comments supporting your type of views while downvoting for opposite naturally leads to dominance of your side in those threads. As in, it’s political maneuvering by folks of one type of views against another rather than quality assurance with any consistency.
Here’s a few where those writing thought wyager and others disagreeing were supposed to nod saying it makes sense with what happens next being too ironic and obvious:
“How dare women suggest tech and especially programming is a potentially hostile environment one might not want to enter!” (fwg) (my emphasis added)
“But one group actually gets to say racist, sexist, discriminatory stuff and remain in charge. The other can hardly speak on panels and post on their blogs without the whole world jumping down their throats.” (jules) (emphasis added)
“I’m not allowed to respond about politics?” (wyager)
“I missed the part where anyone asked for you to be deprived of that right.” (vyodaiken)
You must have missed yourself and the others basically telling him to shut up, the downvotes adding up by a vocal minority, and wyager’s thread collapsing into oblivion where it isn’t seen unless we expand it. Quite unlike most low-info-content, political comments here that are in favor of view’s like Sophie’s not disappearing. Doesn’t look like Sophie or other women with her views would be facing the “hostile environment” with “censorship” and people “deprived” of the right to speak. That contrived scenario is instead what people that agree with her were doing to others who express themselves in a similarly low-evidence, rhetorical way like Sophie or some of their crowd, but with different views. Some of these talk about how everyone is out to get people on their side of spectrum in the same thread where they disappear their opponents’ claims. As opposed to just disagreeing or discussing. Then, they defend the low-quality, repetitive, rhetorical statements of people like Sophie on the same threads since they agree with their views.
Gotta love politically-motivated double standards for discourse that exclusively benefit one side. Also, people talking about how folks on their side have a lot to worry about as sub-threads their opponents make sink and disappear with some clicks. That’s just too rich in reality distortion.
She painted a picture of programming as if it was mostly bad things done by bad people . . . You’d think the profession was one of most horrible ever invented reading that stuff.
This is not a reasonable conclusion to draw from the passage you quoted.
You are completely inverting what is happening. Sophie Haskins wrote her opinion. A lot of people here are apparently very angry and want her to shut up. They position their arguments as if she argued for censorship which is a lie and are attempting to shout her down. If you disagree with her opinions, you could say: “My experience is that most programmers are nice” or “It doesn’t matter to me if people who have interesting technical ideas are racists” or otherwise - you know - disagree. But you are not doing that. Instead you are offended that she expressed her opinion and are inventing this whole oppressive regime that wants to suppress your opinions. There is a difference between freedom of speech and impunity. If people want to express racist opinions, for example, they don’t have a right to have other people applaud or pass over in silence or even listen to them. This is exactly the issue of the Google Memo. Its author is free to proclaim all sorts of men’s rights and racist claptrap on his own time, but he has no right to either have his coworkers refrain from reacting to it or have his employer decide that offensive speech in the workplace is ok. The toxic atmosphere of many tech forums is a reality. You should make an effort to understand what Sophie Haskins actually wrote instead of leading a Crusade for the right to be socially acceptable while denigrating others.
“You are completely inverting what is happening. Sophie Haskins wrote her opinion.”
Her opinion did not happen in isolation. You yourself mentioned that along with some other people. She is part of a group of people that are concerned with and speaking out about bad actors in tech. That’s all I’m certain about right now. Instead of being fair as you expect of me, she paints an exclusively-negative picture of tech’s contributions and the kind of people in it. As she wonders/worries aloud, what she describes is pretty far from reality of a diverse field with all kinds of people in it that mostly don’t do horrible stuff. Majority just support businesses that provide some value to consumers in the economy. Many are also volunteers in FOSS on code or communities. Many other writers whose work was submitted, including about every woman, had a more balanced view in their writing. The exceptions were those all-in on a specific brand of politics that frames tech in terms of race and gender. She writes more like them.
“Instead you are offended”
I’m neither offended, nor did I reply to her. I countered you, not her. I discussed other things as people brought them up. People like her trash-talking whole fields is something people do all the time in many ways. I don’t get offended so much as roll my eyes just to maintain peace of mind if nothing else. Whereas, people expecting nobody to reply to or counter a false, negative claim does concern me. That’s allowing one side to discuss but suppressing another in a place where that can define community norms. I often get involved when that happens. All I was doing initially before other claims appeared.
Now, you’re talking about racism, denigration, etc that we shouldn’t tolerate. The first to do that was Sophie in her unfair characterization of the field. If you think that’s unfair perception, then you can test if that kind of comment is acceptable to people with opposing views in this thread by going to any forum where they’re dominant submitting this version of Sophie’s claims: a white male is concerned about about going to a workplace, conference, or CompSci courses at specific colleges because “there are some bad programmers” who “hate men” behind filesystem development, “hate whites” organizating at major colleges, and support “radical views” leading community teams of major projects. Each of these people exist in the field with groups of people backing them who will shout down or eject opponents within their area of influence. So, the person you’ll ghost-write as is a non-radical, friendly, white male who is concerned about getting into programming should they run into those people they’ve read about. They just worded it like Sophie did in their context.
What do you think would happen? We can guess based on prior replies to claims like that. Detractors would show up in large numbers immediately citing evidence showing most people aren’t like what he worries about. They’d say he shouldn’t denigrate entire groups like women or non-whites based on behavior of a small amount. Some would say racism against whites or sexist against men are impossible based on their redefinitions of those words that make it maybe impossible. Others would say it’s unrealistic worrying to point he should know better or even distracts from “real” problems (i.e. their worries). Probably some evil, political intent since only a X-ist would say it. If he said that wasn’t his intention, they’d force him to be clear on a version they were cool with. They’d tell him he should phrase his writing more appropriately so others who are different feel safe in that space. That he must think in terms of how people might read that. The person would be dismissed as a racist, sexist idiot as they dogpiled him like many others have.
When this woman did it, we’re supposed to assume the best with no concerns about larger implications of what she’s saying in terms of what’s in her head or perception of what she writes. Countering it on just incorrectness like we’d do anything else is now not just dismissing bad ideas or statements: it’s “toxic behavior” that needs to be stamped out. Nah, someone said some political BS on the Internet with disagreement of various quality following. Something we do for any kind of claim here. She doesn’t deserve special treatment or defense of her poor arguments/methods any more than a male does.
To males, you usually have quick, small rebuttals of ideas you disagree with (esp on tech) where you didn’t do a full exploration of everything they might be thinking before you countered. It’s pretty clear you do a quick take on what they might mean, compare it to your own beliefs, and fire an efficient response. Most people do that most of the time I’d guess. You’re doing the opposite here. Whereas, I’m treating her equally to anyone else by protecting dissent and countering her overly-negative claims like I already did to a man who did the same thing before. Like I’ve done to a lot of people’s claims here and everywhere else. Clearly a political bias in action on other side if expecting her claims to get a level of acceptance or no critique that’s not expected of men here or for other topics. I say they all get treated the same from agreement to critiques or we don’t discuss that stuff at all.
I’ve said enough for this part of this thread as both our views are plenty clear.
She painted a picture of programming as if it was mostly bad things done by bad people. She painted the picture that people going to thought leaders, doing database work, or getting involved in functional programming were only going to be dealing with the worst. You’d think the profession was one of most horrible ever invented reading that stuff. Don’t ask that she properly qualify that: take her word for it without any of your own comments or reactions. She is attacking most programmers with a programmer,
This conclusion is bonkers.
I doubt it. She’s making political points in the post instead of just talking about good things at Recurse Center. She’s putting it front and center in people’s minds as they read.
Those “political points” are some of the more important “good things” about the Recurse Center.
A solid list, with one question mark.
Lynn Conway started life as a man. does this mean he/then her achievements give equally credited to men/women?
Thank you . I want to live in a world where this is just taken as a given. Lets start with our little world here people.
What is the goal of creating a list of women in CS? If it’s to demonstrate to young girls that they can enter the field, it seems unproductive to include someone who grew up experiencing life as a man.
If the goal of creating the list is some kind of contest, then it’s counterproductive for entirely different reasons.
someone who grew up experiencing life as a man
Do you know any trans women who have said they grew up experiencing life as a man? I know quite a few and none of them have expressed anything like this, and my own experience was certainly not like that.
However, if you mean that we were treated like men, with the privilege it brings in many areas, then yes, that became even more obvious to me the moment I came out.
Regardless, trans folks need role models too, and we don’t get a lot of respectful representation.
$ curl https://www.hillelwayne.com/post/important-women-in-cs/ | grep girl | wc -l
0
The motivation for the post are clearly layed out in the first paragraph:
I’m tired of hearing about Grace Hopper, Margaret Hamilton, and Ada Lovelace. Can’t we think of someone else for once?
It’s a pretty pure writeup for the sake of being a list you can refer to.
On your statement about “girls”. It’s quite bad to assume a list of women is just for kids, it’s also bad to assume trans women can’t be examples to (possibly themselves trans) girls.
That’s not a motivation, that’s a tagline.
The primary reason I would refer to a list like this is if I was demonstrating to a young woman considering CS that, perhaps despite appearances, many women have historically made major contributions to the field. I’m not sure what else I would need something like this for.
I don’t see why it’s bad to assume that. It feels like it would be a pretty serious turn off to me if I we’re looking for successful women and found people who were men into adulthood. I find it hard to imagine that I’m unique in that feeling. I’m sure it feels good for trans people but I’d that’s your goal admit the trade-off rather than just telling people they’re women and not transwomen.
You can berate people for not considering trans-women to be the same as born women but it will likely just keep them quiet rather than convince them to be inspired.
people who were men into adulthood
Now I’m curious what your criteria are, if not self-identification. When did this person cease to be a man, to you?
When they changed their name?
When they changed their legal gender?
When they started hormones?
When they changed their presentation?
When they got surgery?
What about trans people who do none of that? E.g. I’ve changed my name and legal gender (only because governments insist on putting it in passports and whatnot,) because I had the means to do so and it bothered me enough that I did, is that enough? What about trans people who don’t have the means, option, or desire to do so?
When biologist say that there’s not one parameter that overrides the others when it comes to determining sex¹, and that it makes more sense to just go by a person’s gender identity if you for whatever reason must label them as male/female, why is that same gender identity not enough to determine someone’s own gender?
If it’s to demonstrate to young girls that they can enter the field, it seems unproductive to include someone who grew up experiencing life as a man.
This is a misunderstanding of transexuality. She grew up experiencing life as a woman, but also as a woman housed in a foreign-feeling body and facing a tendency by others to mistake her gender.
Does that mean she faced a different childhood from many other women? Sure. But she also shared many of the disadvantages they faced, frequently to a much stronger degree. Women face difficulty if they present as “femme” in this field, but it is much more intense if they present as femme AND people mis-bucket them into the “male” mental box.
If they identified as a woman at the time of accomplishment, it seems quite reasonable that it’d count. For future work, just think about it in terms of trans-woman extends base class woman or at least implements the woman interface.
In any event, your comment is quite off-topic. Rehashing this sort of stuff is an exercise that while interesting is better kept literally anywhere else on the internet–if you have questions of this variety, please seek enlightenment via private message with somebody you think may be helpful on the matter, and don’t derail here.
The point of this is not to give more achievements to women… It’s to showcase people who were most likely marginalized.
[Comment removed by author]
[Comment removed by author]
Depends on where a person is on political spectrum. I’d probably note they’re trans if targeting a wide audience, not if a liberal one, and leave person off if a right-leaning one.
Interesting question. I think it may be met with hostility, as it brings to mind the contradiction inherent in both claiming that sex/gender is arbitrary or constructed and also intentionally emphasizing the achievements of one gender. Based on the subset of my social circle that engages in this kind of thing, these activities are usually highly correlated. Picking one or the other seems to get people labeled as, respectively, some slang variation of “nerd”, or a “TERF”.
Can we please not for once? Every time anything similar to this comes up the thread turns into a pissfight over Gender Studies 101. Let’s just celebrate Conway’s contributions and not get into an argument about whether she “counts”.
Much as I sympathize, transgender is controversial enough that merely putting a trans person on a list that claims all its members are a specific gender will generate reactions like that due to a huge chunk of the population not recognizing the gender claim. That will always happen unless the audience totally agrees. So, one will always have to choose between not mentioning them to avoid noise or including them combating noise.
I would like to live in a world where trangender isnt controversial and we dont have to waste energy discussing this. Can lobsters be that world please ?
Perhaps this is why we get accused of pushing some kind of agenda or bringing politics into things, by merely existing/being visible around people who find us ”controversial” or start questioning whether our gender is legit or what have you. I usually stay out of such discussions, but sometimes feel the need to respond to claims about trans folks that I feel come from a place of ignorance rather than bigotry or malice, but most of the time I’m proven wrong and they aren’t really interested in the science or whatever they claim, they just want an excuse to say hateful things about us. I’ve had a better than average experience on this website, when it comes to responses.
I cant speak for everyone on the side that denies trans identity. Just my group I guess. For us and partly for others, the root of the problem is there is a status quo with massive evidence and inertia about how we categorize gender that a small segment are countering in a more subjective way. We dont think the counters carry the weight of status quo. We also prefer objective criteria about anything involving biology or human categorization where possible. I know you’ve heard the details so I spare you that
That means there will be people objecting every time a case comes up. If it seems mean, remember that there’s leftists who will be quick to counter anything they think shouldn’t be tolerated on a forum (eg language policing) on their principles. For me, Im just courteous with the pronouns and such since it has no real effect on me in most circumstances: I can default on kindness until forced to be more specific by a question or debate happening. Trans people are still people to me. So, I avoid bringing this stuff up much as possible.
The dont-rock-the-boat, kinder approach wouldve been for person rejecting the gender claim to just ignore talking about the person he or she didnt think was a woman to focus on others. The thread wouldve stayed on topic. Positive things would be said about about deserving people. And so on. Someone had to stir shit up, though. (Sighs)
And I agree Lobsters have handled these things much better than other places. I usually like this community even on the days it’s irritating. Relatively at least. ;)
For us and partly for others, the root of the problem is there is a status quo with massive evidence and inertia about how we categorize gender that a small segment are countering in a more subjective way.
I know you’re a cool dude and would be more than happy to discuss this with you in private, but I think we all mostly agree that this is now pretty outside the realm of tech, so continuing to discuss it publicly would be getting off topic :) I’ll DM you?
I was just answering a question at this point as I had nothing else to say. Personally, Id rather the political topics stay off Lobsters as I voted in community guidelines thread. This tangent couldnt end sooner given how off topic and conflict-creating it is.
Here’s something for you to try I did earlier. Just click the minus next to Derek’s comment. This whole thread instantly looks the way it should have in first place. :)
I find the idea that everyone who disagrees with these things should avoid rocking the boat extremely disconcerting. It feels like a duty to rock it on behalf of those who agree but are too polite or afraid for their jobs or reputations to state their actual opinions, to normalize speaking honestly about uncomfortable topics.
I mean, I also think it’s on topic to debate the political point made by the list.
I agree with those points. It’s why I’m in the sub-thread. The disagreement is a practical one a few others are noting:
“I mean, I also think it’s on topic to debate the political point made by the list.”
I agree. I told someone that in private plus said it here in this thread. Whether we want to bring it up, though, should depend on what the goal is. My goal is the site stays focused on interesting, preferably-deep topics with pleasant experience with minimal noise. There’s political debates and flamewars available all over the Internet with the experience that’s typical of Lobsters being a rarity. So, I’d just have not brought it up here.
When someone did, the early response was a mix of people saying it’s off-topic/unnecessary (my side) and a group decreeing their political views as undeniable truth or standards for the forum. Aside from no consensus on those views, prior metas on these things showed that even those people believed our standards would be defined by what we spoke for and against with silence itself being a vote for something. So, a few of us with different views on political angle, who still opposed the comment, had to speak to ensure the totality of the community was represented. It’s necessary as long as (a) we do politics here and (b) any group intends to make its politics a standard or enforeable rule. Countering that political maneuvering was all I was doing except for a larger comment where I just answered someone’s question.
Well, that plus reinforcing I’m against these political angles being on the site period like I vote in metas. You can easily test my hypothesis/preference. Precondition: A site that’s usually low noise with on-topic, productive comments. Goal: Identify, discuss, and celebrate the achievements of women on a list or in the comments maintaining that precondition. Test: count the comments talking about one or more women versus the gender identity of one (aka political views). It’s easier to visualize what my rule would be like if you collapse Derek’s comment tree. The whole thread meets the precondition and goal. You can also assess those active more on politics than the main topic by adding up who contributed something about an undisputed woman in CompSci and who just talked about the politics. Last I looked, there were more users doing the politics than highlighting women in CompSci as well. Precondition and goal failed on two measurements early on in discussion. There’s a lot of on-topic comments right now, though, so leaned back in good direction.
Time and place for everything. I’d rather this stuff stay off Lobsters with me only speaking on it where others force it. It’s not like those interested can’t message each other, set up a gender identity thread on another forum, load up IRC, and so on to discuss it. They’re smart people. There’s many mediums. A few of us here just want one to be better than the rest in quality and focus. That’s all. :) And it arguably was without that comment tree.
The dont-rock-the-boat, kinder approach wouldve been for person rejecting the gender claim to just ignore talking about the person he or she didnt think was a woman to focus on others. The thread wouldve stayed on topic. Positive things would be said about about deserving people.
Do you believe the most deserving will be talked about most? If you have a population that talks positively about people whether or not they are trans, and you have a smaller population that talks only about non trans people and ignores the trans people, Which people will be talked about most in aggregate? It isn’t kinder to ignore people and their accomplishments.
It is also very strange for technology people to reject a technology that changes your gender. What if you had a magic gun and you can be a women for a day, and then be a man the next, why the hell not? We have a technology now where you can be a man or a women or neither or both if you wanted to. Isn’t technology amazing? You tech person you!
I’ve changed my tune on Bitcoin recently for two reasons, despite still liking its ideals:
The government intervening in the economy is sometimes a feature, not a bug. In times of economic crisis, for example, the government has unique powers to help. Sometimes it is a bug, but Bitcoin seems to assume that any intervention by any centralized entity, at ALL, is malicious. In fact I intend to take an economics class to be better informed on this very issue.
The energy use is unconscionable. We’re already destroying the environment at a ridiculous pace and the Bitcoin space (to me, at least, bearing in mind that I don’t REALLY pay attention) seems to be full of anarchists who are determined to have their uncontrollable system at any cost, with absolutely no regard to seemingly unrelated consequences.
The government intervening in the economy is sometimes a feature, not a bug.
If by “sometimes a feature” you mean “the only thing that prevents repeated economic collapse” then yes.
If you’re interested at all then definitely take a macroeconomics class. And history while you’re at it, especially pre-industrial and early industrial America.
Sometimes == every time bitcoiners fall for a scam and lose money (and suddenly drop all the libertarian stuff and start crying for government help).
Look at /r/Buttcoin, the amount of fraud in the cryptocurrency space is beyond ridiculous.
I agree with your observation, but I think understanding the cause is more useful than poking fun at it. I’ve gotten the sense that falling for scams is an expected cost to a certain constituency, specifically the people who are using cryptocurrency as a medium of exchange for things the governments they live under don’t approve of. I don’t expect the prevalence of scams to scare that group away. People who don’t share that driving concern should take note and understand that it’s always likely to be high-risk.
Not that I’m in favor of Bitcoin at all (and I seriously agree with your first point) but I’ve also seen arguments that Bitcoin is used in some places (perhaps it was China?) to help mop up excess energy from renewable sources when they’re at peak output hours. I think the argument went that when the sun is high in the sky on a clear day, or when the wind is really blowing, energy companies will often turn off windmills or solar panels to avoid producing too much energy. In this case, Bitcoin can help use up that excess energy, and by turning it into cash, become a sort of renewable subsidy that makes it more attractive to build more renewable energy sources. I do know there are definitely places where a renewables-powered grid overproduces so much that energy prices become negative.
Perhaps this isn’t true, but I think it illustrates that maybe the energy problem is a more complex issue than it appears?
Mm, that matches my understanding of how energy production works, but it’s also the case that that energy could go into other things. I think it was actually here on lobste.rs that I learned about kinetic energy storage (roll a ball up a hill, to roll it back down later… that sort of thing) and how it’s used to smooth out energy demand.
There’s no way that Bitcoin miners aren’t making things difficult for grid operators. I agree with @isra17 that it’s an extremely self-serving claim.
The energy seems like a fairly trivial cost to me. It’s a fraction of a percent. I’m willing to pay that price, and I’m also optimistic about the future of renewable energy.
The per-transaction electricity cost was 215kwh back in November - that’s not trivial in the slightest. At market rates where I live it’s $7 or so.
Credit cards processors use several orders of magnitude less per payment made.
Well in dollars terms it either is worth it or its not. I’m not particularly concerned about the environmental impact.
whoever’s dealing with it for the other 99.9% of the environmental impact from non-renewable energy sources
if their solution ends up involving defining standards for sufficiently useful computations, well, uh, godspeed
A fraction of a percent of what? Energy use? Today Bitcoin is estimated to use as much energy as the country of Denmark. By 2020 is estimated it’ll use literally as much energy as we use in the entire planet today. I don’t particularly see how that’s trivial. Source: https://arstechnica.com/tech-policy/2017/12/bitcoins-insane-energy-consumption-explained/
Today Bitcoin is estimated to use as much energy as the country of Denmark
That’s far out of date. Denmark consumes approximately 3.5GW; bitcoin is now at about 5GW, somewhere between Hong Kong and Bangladesh.
https://digiconomist.net/bitcoin-energy-consumption
By 2020 is estimated it’ll use literally as much energy as we use in the entire planet today.
No credible extrapolation is possible, obviously. Energy usage will drop fast when the bubble bursts.
Because denmark has like 5 million people? I’m about as worried about bitcoin as I am another denmark popping up (the world gains like 12x the population of denmark every year)
edit: re 2020: https://xkcd.com/605/
I know next to nothing about cryptocurrencies, but my understanding is that Proof of Stake means we don’t need to use this energy. Many coins don’t use this because they weren’t sure whether it was secure. But recently the IOHK team has proven a secure Proof of Stake algorithm for Cardano.
Is there a downside to this approach?
The “Criticism” section on the Wikipedia article on Proof of Stake lists a few:
https://en.wikipedia.org/wiki/Proof-of-stake#Criticism
Note that Wikipedia is an ideological battleground when it comes to cryptocurrencies, so make sure to check the citations for a more comprehensive view.
I can’t find the source for this despite having seen it just last night (sigh) but IOHK apparently makes you generate your own seed, which has resulted in lots of people using web-based generators that then steal your money. This is a really bad idea and it’s not that hard to read from /dev/urandom and then say “here write this thing down.”
So I wouldn’t really trust them to have done stuff correctly, including Proof of Stake. Obviously that doesn’t mean it can’t be done or even that they haven’t done it - just that I would like to see a lot of scrutiny from experts.
So I wouldn’t really trust them to have done stuff correctly, including Proof of Stake.
The point is you don’t have to, they have proofs.
El Principe see niebla to try to up my Spanish skills