1. 17

    I’m missing some context: what are the shortcomings of Markdown and/or LaTeX that this proposal will fix. Thanks.

    1.  

      Same here, it was not really clear to me what problem the new format is trying to solve.

      It looks like a literate programming language specialized to output HTML. Does it mean that a new interpreter / compiler / stdlib has to be written?

      It looks like a prerequisite to understand this text is to read up on all the bullet points presented in the “Summary of inspiration” section.

      The control character codes are reused because they are hardly used with web and HTML

      this was my main clue and it’s quite late in the document

      1.  

        It’s better to turn it upside down and think that we can improve upon Markdown. We definitely have to support and work with it quite some while, just like other common formats that we have now.

        I’ve used markdown every week, so I am well-aware of how it works for me and against in writing text.

        Markdown assigns meanings to character sequences: '#', '=', '-', '**', '_', '~~', '*', '1.', '+', '[', ']', '(', ')', ']:', '![', '>', ...

        The implementations parse these by block processing over the text with regular expressions. You can escape those sequences when you use them in the text, but it means that you got to stay on your toes when introducing these elements. Usually you catch it in previewing your message. There’s small differences in how different markdown implementations parse text that will cause inconvenience when switching among them.

        Markdown’s grammar of things it understands is fairly small. You get headers, links, few ways to mark text, images, quotes, lists, tables. You fall back to html when it doesn’t understand things, but it results in a weird, html-specific document. Extensions to markdown are implementation-specific and do not translate between them. This can result in the texts being monotonic as you tend to stick into what markdown offers.

        Formatting-characters trip ordinary users and frustrate them. This happens no matter how many there are of them. The proposal removes the need for this, as well as for the use of escape-characters. The idea would be to produce a form of rich-text editing that augments, but doesn’t obscure the existing structure of a text document.

        I’ve left open the choice of a meta-language, thinking that you’d use this interleaving existing programming languages and plain text together. In the web you’d restrict this to some nice, constrained, standardized declarative language that has the amount of annotations you prefer to allow.

        1. 7

          To me the attraction of markdown (and latex) is that its really just plain text. What I understand is that documents in your proposal are binary documents readable in the same way Microsoft word documents are readable: islands of text interspersed by encoded formatting directives.

          1.  

            I cleaned up the demo that I did and pasted the files into the github. I used it in gvim, but also tried in vim. Probably from the vim it doesn’t do clean pastes without any help from the terminal.

            https://gist.github.com/cheery/2a34769a2398a345ad77235e8d1c3693

            I guess microsoft word documents are harder to read as plain-text without a dedicated editor.

            1.  

              Some thoughts that come to mind

              1. Is the formatting going to be restricted to one or a few characters, or could we have strings of characters representing particular formats, like highlighting, colors, styles etc.
              2. Will there be complexity like macros, with variables (i.e. a DSL behind it)

              Depending on how this is setup I fear you will end up reinventing one of the document formats from the 1990s and 2000s and on (e.g. Microsoft doc format). You’ll need a particular piece of software to view the document as intended. Without this software, depending on the complexity of the intent of the formatting code the text part of the document could become unreadable. Pretty soon there will be viruses masquerading as such documents and so on and so forth.

              I guess I haven’t understood enough of this scheme to be convinced that we haven’t visited this before and found it as unsatisfactory as anything else, if not more.

              1.  

                I guess that if you stretch it, you could have something like [i color=red:This text is red], but it’s probably something I wouldn’t like to add. I would prefer that the occurrences of structures may be indexed and then referenced in the program text portion to attribute into them.

                For example, if you used a Prolog-like language in the program portion, it might look something like this in the text editor:

                Hello [span.marked:Word]
                $ color(span.marked, "red"). ¤
                

                It’d probably take some time for people to hack the support for the format into their languages.

                There’s real concern for what you’re saying though. I can imagine how this could turn into something that can be no longer properly read with a text editor. I’m convinced that an eager enough person, not ready to sit down and think, would easily turn this into yet another wysiwyg. We’ve got numerous records of similar disasters. :)

                I did look at the .doc format from the 1990s. It’s been divided into 128-byte sized blocks with the text dropped somewhere in the middle. It looked like you’d be perhaps able to leak information with it. But also you couldn’t pop it open in a text editor and expect to be able to edit it without corrupting the file.

          2.  

            Markdown was never meant to be something like {SG/HT/X}ML, it was meant to be a lightweight markup language for stuff like comments and blog posts. The fact that you can fall back to HTML is great in my opinion, it means I can integrate those features into my writing quite seamlessly (mostly anchor links and tables).

        1. 1

          I’ve been stumped by a problem. I kind of got an answer here, but it’s incomplete

          My goal is to write out the 2D projection of a 3D bezier curve to a pdf document.

          I am told that the 2D perspective (conic) projection of a 3D bezier curve is a rational bezier curve. There are instructions on how to compute the projected control points.

          The PDF specification says that bezier curves are described with control and anchor points which are evaluated via the explicit form of the cubic bezier.

          What I don’t understand is how to re-cast the rational bezier curve such that it is expressible in the way PDF expects.

          1. 5

            What almost everybody does is fit an approximate cubic Bézier to the source curve, compute an error metric, and subdivide the source curve if the error bound is exceeded. If you know the positions, tangent vectors, and arclength of your curve, a really good way to create the cubic is to set the both arm lengths to 1/3 the arclength. An even more sophisticated version measures the arclength of the resulting Bézier, and adjusts the armlengths til the lengths match (using Newton or secant method). All this is a tradeoff between how much time you want to spend optimizing and the size of the resulting curve.

            You’ll see a variant of that in the Euler explorer code, in EulerSegment.renderSvg. Here I arbitrarily chose to subdivide it into 5 cubics, because I know that’ll be really precise and I’m not too worried about the cost.

            Best of luck!

          1. 3

            I heartily agree. I’m working on an application that has a GUI component and in the exploration phase I started to test the application logic by manually operating my GUI skeleton. Then I realized what I was doing and stopped work on the GUI and concentrated on the logic. This forced me to write tests for all the logic to determine if things were working. This in turn forced me to separate out the logic from the GUI which is a neater more maintainable design.

            1. 3

              This one point I feel is missing in the article: tests (usually) encourage you to come up with a better design. If something is hard to test, look closer as it might be flawed in other ways too.

              1. 3

                Very true. That may become number 8. 😛

            1. 1

              -This redirects me to a different site and pops up ads- I must have clicked an ad by mistake. It was a pretty spammy one that didn’t respond to the back button.

              1. 1

                Entertained as I was by @begriffs accurate summary it misses pointing out what I consider an important omission in the article.

                While the article does dazzle with all the assembly dumps (or whatever that was) I could not find a single instance of the word “premature” or “pre-mature” though there are 22 instances of the word “optimization”. A deeper investigation reveals that though there is mention of profiling it sounds like an afterthought and mostly aimed at profiling the optimizations you are already in the middle of making.

                This Sunday morning quarterback suggests that folks write the code first, profile and then optimize only those nasty inner loops and with the minimum amount of tricks. Your future self will thank you so profusely! You’ll get gift baskets and embroidered cards.

                Also, Scott Meyer’s advice not to over help the compiler in making optimizations probably stands most of us in good stead.

                1. 2

                  Possible need for new tag “self-ironic”.

                  1. 7

                    I would consider, in order, pull requests, feature requests, bug reports, fetches, clones and downloads as metrics of engagement. Stars and forks are largely hype driven reactions.

                    1. 1

                      Thanks for the feedback.

                      I agree with the metrics you would use, however, I don’t think that the fork-stars ratio would be easy to fake (via marketing). That’s the main thing I was trying to accomplish with this: easily weed out those repositories that have seen a lot of traffic but not a lot of engagement. While forks are hype-driven too, stars are much more so.

                      Furthermore, I would be willing to bet that forks and pull-requests are linearly dependent on one another most of the time.

                      1. 1

                        All of these would be easy to fake, right? Github accounts are free, and so if there were some benefit to accumulating stars and forks you would expect to see people with bot farms selling stars (the same way people sell twitter or instagram followers).

                        1. 2

                          We crack down on this kind of thing pretty hard; our anti-spam team is very proactive.

                          1. 1

                            Oh that’s interesting! I wouldn’t have guessed that there were enough incentives to bot farming on Github for that to really be a thing. If I might ask: what are people trying to do with their bot herds?

                            But either way, I think my point still stands: if Github is good at spam/bot detection, then stars and forks shouldn’t be any more or less forgeable than any of the things that kghose mentioned, right?

                            1. 2

                              what are people trying to do with their bot herds?

                              Honestly, I don’t even know; I do systems engineering over on one side of the org, whereas our spam team very much feels like “over there somewhere”. But I see their posts on the internal blog about what they do/trends in spammy activity and it’s like, woah, that’s some sophisticated stuff/some very neat tools they’ve put together to help in combatting it.

                              stars and forks shouldn’t be any more or less forgeable than any of the things that kghose mentioned, right?

                              Right. The only difference would be that spammy PRs/issues are very noticeable and often reported by third parties who see something weird going on, whereas I imagine it’d be less likely for stars/forks.

                        2. 1

                          I would argue that actually forks are not often related to pull-requests.

                          I sometimes fork a repo just to “collect” it in a list and then, when I have time for it, look into it and maybe contribute.

                      1. 11

                        @majke thank you for a very interesting article and analysis!

                        I’m trying to reproduce and follow your analysis on my mac and would appreciate some help. On my mac I can get the code to compile by removing sections 1 and 2 and my removing the MAP_POPULATE and MAP_LOCKED flags. Is it OK to do so? (revised code)

                        When I run this on my mac my mode is 0 ns with 1000 ns following and an occasional 3000 ns or higher. This pattern is much less smooth than yours and I wonder why.

                        I’m trying to follow your analysis. As fas as I can follow the loop duration variable is redundant, since you have a timestamp and the loop duration merely stores the diff to the last timestamp. So you have point events with their times. You’ve tried to smoothen these point events by convolving a triangular window to them well, doing something slightly unorthodox, which amounts to literal linear interpolation between points.

                        The linear interpolation generates a lot of high frequencies in the Fourier transform because of the corners.

                        In neuroscience (see, I knew that esoteric training would come in useful someday) we have a similar data set that comes from neuronal firing. A popular way to perform Fourier analysis on them is to convolve the train of deltas with gaussians. This is like dropping a cloth over a set of spikes - you get pointy heads where the spikes are and a graceful tail where they are not. This leads to smooth curves which behave more politely in the frequency domain.

                        There is a hypothesis behind doing this in neuroscience (neurons act in concert, with a slight jitter between them, blah blah) but basically smoothing delta trains is a dirty deed most practical scientists will let you do by looking the other way.

                        Since I can’t regenerate the data I’m requesting you to retry your analysis with gaussian smoothing of your delta train and/or give me some pointers as to how to get proper results out of my mac.

                        Thank you very kindly!

                        -Kaushik

                        PS. Also, if you are not inclined to help figure out how it would work on a mac, if you could send me your data set I could try out the gaussian convolution and send the results back to you.

                        1. 9

                          Raw data at your service: https://raw.githubusercontent.com/cloudflare/cloudflare-blog/master/2018-11-memory-refresh/example-data.csv

                          ~/2018-11-memory-refresh$ cat example-data.csv |python3 ./analyze-dram.py 
                          [*] Input data: min=111 avg=176 med=167 max=11909 items=131072
                          [*] Cutoff range 212-inf
                          [ ] 127893 items below cutoff, 0 items above cutoff, 3179 items non-zero
                          [*] Running FFT
                          [*] Top frequency above 2kHz below 350kHz has magnitude of 7590
                          [+] Top frequency spikes above 2kHz are at:
                          127884Hz	4544
                          127927Hz	5295
                          255812Hz	7590
                          383739Hz	5799
                          511624Hz	6932
                          639551Hz	5911
                          767436Hz	6001
                          895363Hz	5682
                          1023248Hz	4774
                          1151175Hz	5107
                          1406987Hz	4263
                          

                          (a) trying to run it on mac: why not, but the power saving settings may introduce even more jitter. Also - is there a reliable fast clock_gettime(CLOCK_MONOTONIC) on mac these days?

                          (b) I’m very much not an expert on DSP and signal analysis. Please do explain why and how to use the suggested gaussian smoothing.

                          1. 6

                            @majke very cool, thanks!

                            My interpretation of your data is in this notebook

                            In brief, I did a simple time domain analysis first by plotting the interval histogram. The histogram shows a prominent periodicity at 16.7 us with some slower components.

                            When I do a frequency domain analysis by smoothing the delta train with a gaussian I see this prominent period with higher harmonics. I’ve forgotten how to interpret the higher harmonics, but the base frequency is consistent with the 16.7 us periodicity.

                            This is roughly twice the 7.8 us you report in your article.

                            Treating this whole thing as a black box, I’d say it typically takes 16.7us to complete one cycle of operations though there are instances when things take a lot longer, though this is less common by a factor of about 100.

                            Tag! You’re it :)

                            1. 1

                              It looks like you’re interpreting the data differently from @majke; one analysis is on duration of each event (167ns); the other is on the delta between events (7818ns).

                              1. 1

                                Every cycle only one time stamp is dropped (rt1 = realtime_now();). There is no differentiation made between the duration of the event and the delta between them. It’s not a square wave with a duty cycle.

                                1. 2

                                  Well. I don’t care how long the long stall was. All I care is about the gap between long stalls. I think if you make a histogram of durations between long-stalls (when long is avg*1.4 or higher), then indeed I think you will find the 7.8us period with simple histogram. Having said that, this will depend on the noise in data. I’ve had some runs of the over which simpler analysis failed.

                                  1. 1

                                    @majke ah very interesting! Thanks again for a very educational article.

                                    1. 1

                                      Here’s a histogram of “durations between long loop runs”

                                      https://uploads.disquscdn.com/images/4d3d1472115285539d85539d3c84b8f5e8e56821cd2e8d84686c7031b51335b2.png

                                      You can definitely see the spike at 7800ns, but I’m not sure how to extract it algorithmically without cheating.

                          2. 1

                            I’m no expert, but I would assume that ASLR might screw with your results.

                            1. 72

                              Ethics are inseparable from technology, since technology enables and inhibits actions, which are subject to ethical consideration; ergo, the creation of technology is an set of actions subject to ethical judgements.

                              1. 34

                                I’d go even further than that, attempting to exclude “ethics”, broadly construed, has helped to enable a social environment within technology circles that has legitimated a great deal of what people are now rightly reacting to, the surveillance, the effects the brain of using gambling machines as a design template for websites, the unwillingness of corporations to take any responsibility whatsoever for the effects that their products have on society at large, Uber (all of it), and on and on.

                                1. 14

                                  I agree with both of you. On the other hand, I also kinda see the point of wanting a space that’s focused in technical aspects, and understand OP’s fear of ethical/political discourse dominating this forum. And in the other other hand, I also feel that not speaking about the ethics of technologies, and actively discouraging this kind of discussion, is, in and of itself, a way of speaking about it, agreeing with it.

                                  So, yeah, that’s hard. I got no solutions.

                                  1. 8

                                    Regarding the “fear of ethical/political discourse dominating this forum”—I understand, but we wouldn’t have to have all of these discussions if people would just stop being unethical :-) The more discussions we have now on this topic, the fewer we’ll need to have in the future. But if we don’t talk about it then, as you point out, things are only going to get worse.

                                    1. 13

                                      I think there’s a bit of a difference between discussing the ethics of a company and aggressively attacking a person.

                                      The main top comment raises some points and actually encourages discussion, which admittedly doesn’t really happen in that thread. A large portion of the top upvoted comments are people chiming in and (essentially) saying “me too”. The top comment responding to a maintainer is incredibly aggressive towards the maintainer who stepped forward, only tangentially relates to the parent comment, is arguably a personal attack against that person and discourages discussion through the tone. Yet it’s more upvoted than the technical comments below.

                                      In addition. it’s easy to forget that there are people on the other side of these usernames. It reminds me quite a bit of This is Phil Fish, a case study on how people can associate people with something larger, sometimes in damaging ways. It’s not quite the same, but I see similar parallels in how the community tends to treat employees of certain companies (yes, like Palantir… but Google also comes to mind).

                                      I’d like to see more comments that encourage discussion, like the most upvoted top-level comment, and less comments saying “me too”, “I agree with this”, or borderline attacking the poster, like the most upvoted response to the maintainer.

                                      1. 10

                                        The more discussions we have now on this topic, the fewer we’ll need to have in the future. But if we don’t talk about it then, as you point out, things are only going to get worse.

                                        That’s an interesting theory. I haven’t seen any evidence to support it on any of the other discussion forums I’ve used, but I suppose it might be true somewhere. I think friendlysock’s take is more accurate: by encouraging (tolerating? normalizing?) aggressive and reflexive positions on non-technical issues, we will get more of them here, not less. And eventually, the “bad money” will drive out the good, just like it does everywhere.

                                        1. 6

                                          Indeed - I think we have a plethora of examples of politics taking over, and few (none?) of political discussion settling debate so that everyone can move on.

                                        2. 8

                                          The more discussions we have no on this topic, the fewer we’ll need to have in the future.

                                          I disagree with this in so many ways. We cannot possibly come to some end resolution where everyone agrees on a certain set of ethics, and even if that magically happened, we cannot all agree on the best way to act upon those ethics. Political conversation already permeates way too much of society. I don’t need to see it in a forum for technical discussion. If we’re going to try to think of ways for technology to be abused, we’re not going to produce anything. Further, I think we’re totally dismissing all the great things that same technology has done and can continue to do because it can be abused. If someone wants feedback on their submission, I don’t personally want to see politically-oriented discussion around it in this particular forum.

                                          If the broader group of folks here wants this to become a political-friendly abyss, I’m fine with stepping away. But I don’t get that feeling right now.

                                        3. 3

                                          This is basically my opinion, too.

                                          (I haven’t posted more in this an the other meta threads this week because I’ve been very busy starting a new job, but as I’m catching up today I’ve really appreciated all the thoughtful discussion exploring these questions that don’t have easy answers.)

                                      2. 36

                                        I think you have a point here that is both truth and lacking utility, but may be getting upvotes because hey, who wouldn’t upvote ethics in technology?

                                        Here are some of the practical issues with supporting debates about “ethics”.

                                        First, what do we mean by “ethics”?

                                        Are we just wanting to talk about right and wrong? That’s often a matter of aesthetics. When I was born, it was pretty commonly held that homosexual acts were Evil, that psychoactive drug usage was Corrupt, and that democracy was unquestionably Good. None of those things are unerringly true anymore.

                                        You might say “But friendlysock, those are matters of morals, as opposed to organized systems of beliefs that are analyzed in the context of practicing agents!”, and I would agree. That being the case, what is the point of having discussions that end up going basically:

                                        • “You’re immoral!”
                                        • “No, you’re immoral!”
                                        • “You both act in clear hypocrisy of your professed morals!”

                                        That discussion leaves everybody angry, takes up a lot of space, and doesn’t teach anybody anything. Worse, it breaks the operating regime of the site, because people will inevitably just blindly upvote the folks whose aesthetic matches theirs, and downvote or flag those that don’t–or worse, devolve into namecalling.

                                        Okay, well, what about big-E Ethics?

                                        So, we skip out on thinly-veiled callout threads and we’re just gonna limit ourselves to talking about big-E Ethics. Academic/philosopher stuff like meta-ethics and normative ethics and subtopics like utilitarianism and virtue ethics and state consequentialism and so forth.

                                        And those are really fun topics. We have problems with those as the basis for subthreads though:

                                        • Hardcore philosophy (despite our having a tag by that name, since that usage is looser) is off-topic.
                                        • Most users (myself included!) are completely underskilled to talk big-E Ethics without a lot of clarifying back-and-forth and education in threads. Even assuming we have the skill to do all of that in a subthread (we don’t) and that we avoid falling back into moralizing (we won’t), such conversations suck all of the air out of the room for the technical discussion. That Palantir thread had us scrolling to the very bottom to get anything involving code or tech.
                                        • We’re gonna end up having the same discussions over and over again, as the big-E Ethics questions are, rather famously, undecidable.

                                        Okay, fine, what about professional ethics?

                                        Sure! If people want to talk about how a given thing violates professional ethics, then I think that is healthy. Here is the ACM Code of Ethics. Use that as a starting point in a subthread.

                                        Note though that we still don’t have professional organizations in the sense of, say, Professional Engineers. Our profession isn’t organized enough for that. So, talking about “professional” ethics is kinda hard.

                                        ~

                                        Overall, I just don’t think that the “ethics” discussions are what people are actually after here. I think people want to callout and shit on other folks, and that they want to show to their friends solidarity in an aesthetic. This damages one of the only good venues for safe technical discussion on the ’net today.

                                        And I won’t stand for that.

                                        1. 30

                                          I would, gently, point out that adjucating morals to aesthetics (the study of beauty, and of which the current post-Romantic admits a separate aesthetic for each individual) is not a stance that is particularly admirable.

                                          Simply keeping “Lobsters about tech” is a big E ethics decision, with ramifications that ripple out.

                                          If you want to demand that people treat other people well, that is a stable ethical choice that is supportable and relatively decidable.

                                          ~

                                          But to be clear, working for Palantir - or other major enabler of violence & repression that generates widespread sideeye, is both a technical and an ethical choice; pointing this out and pushing back against consuming technical material from such an enabler seems perfectly reasonable.

                                          We can debate whether working for Palantir is ethical - it probably also enables benefits to LEOs working complex cases and addressing real social harm. Many times on other social media sites, employees of ethically tangled companies will comment and discuss the complexity and reality of working in these environments. There is a very real debate, it’s not an open and shut thing where some group of activists come in and screams.

                                          I reiterate: technology and ethics are intertwingled. While some contexts are more neutral than others, very few are pure neutral.

                                          1. 12

                                            @pnathan I didn’t want to wade into this muck, but you seem genuine. In my mind is not whether debates about ethics is good or bad, but rather what is lobste.rs for? There are PLENTY of places on this big internet to get on a soapbox and yell about whatever gets your goat. I want a quiet corner where I can just read about technical things. Code, decisions behind code, some PLT, some math and the occasional bit of humor. Perhaps the people here saying, well Kaushik, its time to go away somewhere else because that’s not what lobste.rs is for any more, and I will join the stragglers as we exit out of yet another refuge inundated by the loud and obnoxious soap box crowd.

                                            1. 10

                                              I’m 100% with you here. I see way too much soap boxing and bickering pretty much everywhere else on the internet. This was a safe haven for technical discussion without the political theater. If it’s going to become that, I’ll be happy to leave and try to form yet another community where we are trying to avoid this kind of stuff.

                                              1. -2

                                                leave and try to form yet another community where we are trying to avoid this kind of stuff

                                                I’ll wager that ethical questions will inevitably follow you there, as they are inextricably part of the human experience, whether or not the primary topic is tech.

                                                1. 4

                                                  I’m not trying to avoid them entirely, I just want a forum for technical discussion. Not everything has to be polluted with other topics and agendas

                                                  1. 1

                                                    You might find the more focused discussion you seek in a special-interest forum. General-interest fora will attract general topics of conversation.

                                                    1. 11

                                                      Lobsters has been that forum for me until recently.

                                                      1. 0

                                                        That’s interesting. I hear many voices in this thread expressing the same. I never saw this website as something like that, I just saw it as a place where some relatively niche computing topics are aggregated.

                                                        1. 7

                                                          You’re also relatively new here compared to some of us, so that probably feeds into it. The site has grown quite a bit since I joined.

                                                          1. 1

                                                            I was reading this website for a long while before I got an invitation, but it is fair to say my account history is relatively new. When I started reading, most posts seemed to get an average of 1 or 2 comments. It’s hard for me to reconcile this—some folks are lamenting that recent discussions are not in keeping with the historical tone of the site, but the site has been historically silent on most topics.

                                                            1. 5

                                                              Try looking at it from a different perspective. Perhaps the absolute level of good quality comments hasn’t moved too much, but perhaps the absolute level of low quality comments has increased. If that’s true, it increases the signal-to-noise ratio and can lead to the “we used to have more good quality content here” observation.

                                                              1. 2

                                                                I was being very generous with the comment count. Even today, when I posted that comment, half of the front page articles had zero comments. Perhaps the signal level is just too low to begin with. Maybe there’s no consensus on what the signal is.

                                              2. 4

                                                you seem genuine

                                                That’s one of the nicest things someone not my wife has said to me for some time. :) Thank you.

                                                My basic thought is that I also want a corner where we can seriously talk about highly technical things, but we should be aware and also talk about the broader ramifications of our work, because we have the technical background to get the implications of our work and be correct about how it works, and to talk about the ethical implications of how a specific capability works/doesn’t work (whereas I have deep suspicions of an arbitrary op-ed columnist whinging about tech and begging for regulation).

                                                To ask for a soapbox free zone seems completely ok - to ask for an ethics-free zone is an ethical choice that selects for specific social choices (as non-obvious as that may seem). To be specific: I’m not sure discussing the ethics of a new compiler gets us anywhere, but if its produced by Dr. Evilheart Murder Enterprises, maybe we need to discuss if using it supports D.E.M.E., and if we can redeem the technology from its production in the context of D,E.M.E. I don’t think that this is some lefty social justice agenda I’m asking for…. Maybe I’m wrong.

                                              3. 12

                                                I acknowledge the intertwingling, abstractly. But it seems you’re not addressing friendlysock’s actual concern. Is an announcement thread by a new user who happens to be the maintainer of an open source project an appropriate place to have the “very real debate” about whether working for that person’s employer is an ethical choice? When a commenter on that post engages in a blatant personal attack and is rewarded with upvotes aplenty, is the “very real debate” being furthered?

                                                1. 10

                                                  I would say so: it’s an opportunity for the software developers of Palatir to make a case that they are acting in an ethical fashion, that the world is complex and they are producing a net good. When I worked for a Famously Bad Reputation company, we were encouraged to defend the company. This would have definitely been a place where the maintainer could have defended themselves - if company policy allowed, of course.

                                                  One of the interesting bits of social psych is conformity matters. If the general community shuns X group, to the point where its a permanent black mark on the record generating firings/no-hirings and it’s not something anyone is comfortable around at church, marrying family members, etc, then the X group diminishes into the fringe. Whether you are conservative or liberal, you wind up having a conformity and a social order. I’m not personally sure where to draw that line and place the mark, but Palantir is a popular target for placing that mark.

                                                2. 8

                                                  I would, gently, point out that adjucating morals to aesthetics (the study of beauty, and of which the current post-Romantic admits a separate aesthetic for each individual) is not a stance that is particularly admirable.

                                                  Why not? There’s a huge variation in morality within our own culture, let alone looking across cultures. You can find people that believe that it’s immoral for two people with the same groin-endianness to get married, and others who think that it’s immoral for to accumulate a large amount of money. You have people who think that allowing dictators to abuse their people is immoral, and others who think that intervention is a bigger evil. You have people who think that it’s important to protect the freedom of users with copyleft licenses, and people who think that copyleft immorally restricts commercial use of software. You have fights between which supposedly divinely inspired book written thousands of years ago by uneducated sheep herders/traders/warriors/… is the primary authority on how to live your life. The list goes on, and all of them have people who believe one thing or the other.

                                                  The shifting scene of prevailing ethical thought really does make it more like aesthetics than people are often comfortable admitting. Yes, it has longer term effects on people’s lives, and yes, it’s got some underlying principles, but it’s certainly not some sort of fixed beacon of truth.

                                                  Why do you think that there is a universal set of ethics that people subscribe to? And if you don’t, do you really want this site to be either the battleground for deciding this, or a community of yes-men who boringly signal that yes, they are indeed a part of the in-group?

                                                  There are lots of valid and interesting discussions to have on these topics, but to me, they detract from lobste.rs.

                                                3. 2

                                                  The book that revived virtue ethics as a viable project, MacIntyre’s After Virtue, points out how (and explains why) contemporary ethical debates have a peculiarly shrill and interminable character.

                                                  1. 2

                                                    This is a weird use of “aesthetics”. I don’t really know what you’re trying to say.

                                                    1. 2

                                                      I read “aesthetics” as, roughly, “something that a group of people has decided to call ‘basic human decency’, with the various external trappings this entails”.

                                                  2. 21

                                                    Yet I somehow suspect if I ask “What are the ethical implications of creating a webassembly backend for ocaml?” that I won’t receive quite as many upvotes.

                                                    1. 6

                                                      If the answer to the question “What is it built for?” is “for missile guidance systems”, we are in a different territory pretty quickly, though! Nothing technology lives without context.

                                                      To turn this into something more tangible: when DARPA invested around 10 million for https://c2rust.com/, it definitely raised some eyebrows and sparked a couple of discussions.

                                                      1. 9

                                                        ARPA/military were behind the Internet, GPS, Tor, and (via defense contractors) majority of contributions to Linux kernel. Yet, most people discuss them without warnings or ethical debates in threads.

                                                        It’s just specific things that are also talking points in liberal media.

                                                        1. 2

                                                          You are making it seem like these things have not been discussed, which is definitely not the case. Also, we’re not liberal media, we’re a community.

                                                          1. 2

                                                            Most of the statements read like they were pulled out of the liberal media. Pop-culture politics. People that actually care about popular politics here, say inclusion of under-represented groups, would have people from those groups, esp women, in the main teams (eg Rust compiler/libraries), be submitting work from such underrepresented people here to Lobsters instead of white/asian males, linking to write-ups by the same in the comments, and so on. There’s just one or two people doing that consistently off the top of my head.

                                                            Inclusive politics here mainly equals writing comments and language policing to such people, not actually highlighting work by or bringing in underrepresented. Aka what they’d do if it really mattered. Same with employers, eco-friendliness, etc where someone could call out an OP in the majority of threads every day about the ethical ramifications of what they’re submitting. They only do on specific, popular, talking points, though.

                                                            I make an exception for you since your community work probably does a lot of good in inclusion. A lot of good period. On Lobsters, though, most people voting for prioritizing politics for social justice certainly aren’t boosting minorities or even ethical suppliers. So, I call BS on it really mattering to them past ego value from social signaling, virtue and shaming.

                                                        2. 9

                                                          So if somebody builds a webassembly backend for missile guidance and puts it on github, is it ethical to use it for protein folding research? Or is it forever tainted?

                                                          1. 1

                                                            That’s a different question, and yes, it’s an interesting one. It’s also not like things on Github are just there. They still have a maintainer, a hosting organisation, and a leadership.

                                                        3. 2

                                                          Thats a cute non-sequitur, given that no one is inserting ethical implications into things like that. Seeing as this thread was sparked by the discussion around the ethical implications of software labor being used to further the work of a surveillance contractor, its not just a worthless message-board retort, its actively muddying the waters around issues that are inseparable from ethical questions.

                                                        4. 18

                                                          You’ve got to go about asking these questions in a way that actually enables the OP to respond. Instead, we got a massively passive-aggressive jab at the OP’s company:

                                                          I guess it may be possible to work at a seedy company and still do good stuff […] Regardless, thanks for releasing this as free software.

                                                          After which, the top commenter is hailed as a hero, and, to no one’s surprise, the OP didn’t respond.

                                                          A reword that might have actually elicited a response might have started with “Thanks for releasing this as free software!” rather than the “yeah, your company sucks, but thanks anyway” angle.

                                                          1. 9

                                                            the creation of technology is an set of actions subject to ethical judgements

                                                            Assuming that it is true - is it possible to have a small place (e.g. lobste.rs) which is for discussing technology without ethical implications and all the rest of the net for discussing whatever you want (also ethical aspects of technology)? Is this something you can imagine being possible or do you think that such place can’t exist? (this is a serious question)

                                                            1. 32

                                                              That’s certainly an important question.

                                                              I think that it’s certainly possible to mention technology without explicitly mentioning ethics. I also think that engaging in that way is an ethical position. You can separate them at the surface level of discussion, but not in the substance.

                                                              That said, I can certainly imagine a community in which technology is discussed but ethics is never explicitly mentioned. I would not want to be part of such a community; I would find it deeply unsettling. I do think that some people might like it, and there are a variety of reasons for that and I wouldn’t want to make assumptions about any particular person’s reasons.

                                                              1. 7

                                                                I think the problem with ethical discussions on a technical forum is that there’s not really a shared basis for those discussions. We might have a bunch of members from various religions and cultures who subscribe to widely different ideological frameworks and ethical principles. These different backgrounds are likely to be incommensurate, incompatible, and irresolvable.

                                                                In that way it’s similar to discussions like “Are static types good or evil?” or the famous editor wars—so called “religious flame wars” which are known to ruin communities if left to fester.

                                                                So indeed it is a kind of ethical decision about the norms of the community—whether ethical claims and disagreements ought to be encouraged in comment threads. There are pretty good reasons against.

                                                                Let’s say I’m a committed socialist or communist or anarchist. There are many such people who are programmers. Now I have very good reason to enter threads about commercial activity and ask the involved people to justify their clearly immoral participation in the tyrannical, plutocratic, deeply unjust system of capitalism. I would of course encounter a bunch of dirty capitalist apologists trying to argue against my ethical position… and we could go on for a long time… almost certainly to the detriment of the community.

                                                                1. 5

                                                                  “I think the problem with ethical discussions on a technical forum is that there’s not really a shared basis for those discussions. We might have a bunch of members from various religions and cultures who subscribe to widely different ideological frameworks and ethical principles. These different backgrounds are likely to be incommensurate, incompatible, and irresolvable.”

                                                                  You nailed it. That isn’t hypothetical: it happens in every political thread. The ending, minus rare exceptions, is everyone ends up believing what they already believed with some shunning their opponents in some way. Lobsters doesn’t work for political discussion that’s about actually changing people’s mind.

                                                                  Of course, many of you are starting with the foundation that people wanting politics want a political discussion. They mostly don’t as evidenced by their comments in such threads. If you’re curious, I just described here the evolution of politics and behavioral patterns on this site from when I first came to where we’re at now. Given the same environment, political discussion is and will continue to be impossible because the dominant group intends for it to be. They want compliance and conversion, not discussion.

                                                                  1. 3

                                                                    I don’t necessarily know that changing people’s minds should be the goal, but I also don’t know that it’s impossible. I think you’re describing what happens when everyone reacts defensively. It’s indeed not possible to change someone’s mind if they aren’t willing to open up and have a real conversation, so I wish the world in general would be more open to interacting in ways that aren’t so resistant to real dialogue.

                                                                    I’m an optimist, and I believe that when people try, they can engage with the goal of at least leaving each other with something to think about.

                                                              2. 6

                                                                I’ll suggest this (mainly tongue-in-cheek) but it might be a good solution: for every submission provide another link next to ‘reply’ called ‘ethics-reply.’ The links go to two separate discussion areas. That way, people can dip into the tech or ethics discussions as they like.

                                                                1. 6

                                                                  If such a place did exist, I think you’d have trouble finding a lot of people who would want to hang out there. I’ll just jump immediately to the most extreme possible example: if someone posted an article about the technology used by the Nazis to organize the Holocaust, but discussing the attendant ethics was strictly forbidden, would you be happy participating in that discussion? Would you want to spend a lot of time talking to other people who would be happy participating in that discussion?

                                                                  1. 14

                                                                    if someone posted an article about the technology used by the Nazis to organize the Holocaust, but discussing the attendant ethics was strictly forbidden, would you be happy participating in that discussion?

                                                                    I am a jew who was raised by holocaust survivors. My answer is yes. In fact, I think it’s the only way that one could have a discussion about the technology used by the Nazis that wasn’t immediately dragged off topic.

                                                                    And, honestly, an ethical discussion would either be abhorrent or boring, since a vibrant discussion implies a difference of opinion, and anyone who has significant differences in belief with me on the ethics of systematic mass murder is someone that I don’t expect to have a productive discussion with.

                                                                    1. 12

                                                                      Yes to both, to be honest. I did a bit of research for a point the other day, and something occurred to me.

                                                                      Technology, especially computing, is all about solving problems at scale and efficiently. For the most part of the 19th and 20th centuries, the domains that actually had the scale to justify theoretical work and practical development tended overwhelmingly towards things like military applications (standing armies tending to be some of the largest organized groups around) and demographics/census/taxcollecting work.

                                                                      For better or worse, note that IBM was really good at tabulating census data, something that the Nazis took advantage of. I personally would be happy talking about techniques for tabulating that data and managing it, in hopes that it could be applied to more positive uses. Similarly, I’d be happy to learn about rocketry from von Braun, even though most of what he learned he learned by dropping explosives on British civilians.

                                                                      1. 5

                                                                        Let’s take the specifics. Is Palantir stuff that remarkable to be worth the inevitable fallout in the comments and personal ethical compromises? Is it really that seminal and groundbreaking?

                                                                        It is a dilemma when we talk about say an SS officer who also happened to run the US Moon programme. But Palantir is adtech’s meaner sibling, what is there that makes it worth picking the turd pile?

                                                                        1. 9

                                                                          The drop in the level of technical discussion is the issue, not the company being discussed. I’d prefer to let posts on unethical companies die in silence, rather than make this site a worse place to discuss technology.

                                                                          1. 2

                                                                            Another reason is highlighting the bad gives you less time to create the good. Most people that care can look up a company to see if there’s anything messed up. The bad or at least going with the flow are also the majority. If we’re talking companies, I’d rather people put more effort into highlighting ethical ones with useful tech or products. Basically, anything that can be a fit here on technical grounds with them also mentioning in a comment that the person, company, product, etc is good/beneficial for (reasons here). Maybe they mention some bad examples with it if trying to shame companies. Just optimize to promote more tech and examples of public benefit over just calling out bad companies who are the perpetual default.

                                                                            Easy example: Prgmr.com over Digital Ocean, AWS, Google, or Azure if fits use case due to ‘straight-forward offerings, great service, some nice people, and freely hosting an excellent site for deep, technical discussion.” The submission might even be about something else entirely that’s merely hosted on the ethical product/service. Then, they add a quick note about it that barely distracts from the focus on technical content. Just all flows together for the reader.

                                                                          2. 8

                                                                            the inevitable fallout in the comments

                                                                            The fallout is not “inevitable” - it is not a force majeure. Actual, specific, individuals CHOOSE to make it about the “ethics”. You’re asking people to appease these individuals.

                                                                          3. 2

                                                                            Would you be also ok to discuss methods of performing deadly medical experiments on people with Nazi concentration camps staff? Would you be ok to advise them how to improve the scale and speed? Would you still want to keep such discussions ethics-free? How about diacussing effectiveness of guns with the Zodiac Killer? Or advising Ted Kaczynski on bombs?

                                                                            edit: Please note my intention here is not to seed outrage; I’m sincerely interested in your answer, as I find it hard to imagine setting really no ethics limits, so I’m curious to gauge where would you actually set them? Or would you really want no limits?

                                                                            1. 6

                                                                              I’ll pick on your first example, because I don’t see benefit in addressing the others (I read you as making the same category of point, with those added for emphasis).

                                                                              Would you be also ok to discuss methods of performing deadly medical experiments on people with Nazi concentration camps staff? Would you be ok to advise them how to improve the scale and speed?

                                                                              Let me turn that around on you:

                                                                              Would you prefer they do them inefficiently, if you knew they were going to do them regardless? Would you prefer that the innocent lives lost in the nominal science of these experiments be done in vain because somebody screwed up their data collection? Would you prefer that, for the same data, they use extra prisoners because they suck at statistical power analysis?

                                                                              I don’t support immoral behavior, such as mass murder and torture. I do recognize that whether such things are legally or ethically permissible (again, not morally) is something that transcends individual opinion, and that where those acts fall is a function of the zeitgeist of the times. Sloppy engineering, science, and math will always be sloppy, aesthetics of the time be damned.

                                                                              We can’t get to identifying and fixing/discouraging/pillorying that sloppy behavior if we can’t engage with it. We can’t even get close enough to try and reclaim those lost souls if we can’t engage with them on (nominally objective) material civilly.

                                                                              1. 6

                                                                                Thanks for the interesting reply! So, I think in shortest words I could express what I think about this the following way: I would indeed prefer for them to do this ineffectively - I’d say that is the principle behind sabotage. As far as I know, sabotage works. And that’s indeed what I’d hope to be able to say I’m doing against actions I believe to be significantly unethical. (Though trying to keep my own integrity in means employed to that end.)

                                                                                1. 9

                                                                                  I’m not sure sabotage always works the way one hopes. When you destroy the results of human experimentation, the data is recreated by repeating the experiments on a new set of humans. That seems like a bad outcome for those involved.

                                                                                  I think the problem is we too often define success as hurting the bad people, and yes sabotage hurts them, but we too should consider the collateral damage of our actions.

                                                                                  1. 6

                                                                                    It’s not about hurting bad people. It’s about making their evil work harder and less efficient at actually hurting good people, while also trying to convince evildoers to not do the evil in the first place, and preferably do good instead and thus become good people. If doing evil is easy for them, it won’t make them do less of it, but rather more of it. They will always invent new experiments to do on a new set of humans anyway. Appeasement policy did not work on the onset of WW2. A bully must be stopped, not let continue the bullying. A child doing bad things must be reprimanded and informed/educated about bad consequences of their deeds, not spoiled.

                                                                                    1. 1

                                                                                      Well put.

                                                                            2. 5

                                                                              if someone posted an article about the technology used by the Nazis to organize the Holocaust, but discussing the attendant ethics was strictly forbidden, would you be happy participating in that discussion?

                                                                              Interesting example - you are asking if I would be interested in (discussing) e.g. technological aspects of IBM products around Second World War. Yes, this might be very interesting. I can also imagine other Nazi tech related topics that I wouldn’t find interesting (but see no reason for others not to be interested in) and in such cases I would use the hide button. Hopefully such place wouldn’t be all war tech from Nazi Germany or modern day USA ;)

                                                                              1. 4

                                                                                I would absolutely be hanging out there. That was kind of how this place has been for the most part.

                                                                                As to your question about Nazis, yes I would want to discuss the technology, and I’d be happy to discuss it with people in those threads. If it were completely neutral politically, there is the potential to have great technical discussion.

                                                                                1. 3

                                                                                  I think you’d have trouble finding a lot of people who would want to hang out there

                                                                                  I agree, but that’s not a bad thing, is it? This is not some sort of mass movement.

                                                                                2. 0

                                                                                  s it possible to have a small place (e.g. lobste.rs) which is for discussing technology without ethical implications and all the rest of the net for discussing whatever you want

                                                                                  No. Even if it were, this would not be it.

                                                                                  1. 1

                                                                                    Even if it were, this would not be it.

                                                                                    How do you know this?

                                                                                    1. 0

                                                                                      Because this site is full of intelligent people.

                                                                                      1. 9

                                                                                        Ah. You’re implying that “discussing technology without ethical implications” is exclusive to stupid people. Do I understand you correctly?

                                                                                        1. 2

                                                                                          I’m chewing on my keyboard right now!

                                                                                          1. 1

                                                                                            Discussing technology without coming up against ethical issues is impossible. I don’t think intelligent people would just skirt around them when they come up.

                                                                                  2. 5

                                                                                    Do you have an example of an action that would not be subject to ethical judgements? In trying to understand your claim, but I don’t sufficiently understand the definitions you’re using to determine whether you’ve made a falsifiable statement or not. Will you spend a little time describing the limits of your statement or what empirical observations support it?

                                                                                    1. 6

                                                                                      I would argue that there is a class of actions, e.g., selecting one knife over another in the kitchen for cooking, that has neither inherent ethic or no ethical consequence. Now, the ethic selected for consideration will affect whether you consider something to be of consequence. If, e.g., there is an ethical judgment on the Proper Utensils To Use, then that becomes of ethical consequence. Generally, societies consider actions such as killing adult humans to have inherent ethics.

                                                                                      Suppose we choose gcc or clang - then you are supporting, ever so mildly, one development philosophy & license over another. Those licenses are widely considered to have ethical entailments. The FSF has very strong ethical stances about licensing.

                                                                                      Now, with respect to empirical observations, I suggest weapons systems: they are an obvious technology which carries ethical implications. Other technology might be: AirBNB (affects housing), Uber (affects taxi operators), factory robots (replaces factory workers). Each of those affects jobs and thus the ability of many members of society to be fed and housed, a clear ethical question.

                                                                                      I hope those presents samples that adequately points towards the answer you are looking for.

                                                                                      1. 7

                                                                                        I would argue that there is a class of actions, e.g., selecting one knife over another in the kitchen for cooking, that has neither inherent ethic or no ethical consequence.

                                                                                        Interesting. Why do you believe that the methods that knife companies use to exploit their workers and the labor conditions of their employees would not be something to discuss? Do you believe that the environmental implications of importing knives from China rather than buying them locally has no ethical impact? What about the historical implications of Western expansion and influence in Japan, and the resulting western style Gyuto knives supplanting Sujihiki style kitchen knives? In fact, not only are there ethical implications, there are deep historical forces involved in your selection of kitchen knives.

                                                                                        Of course there are ethical considerations in picking kitchen knives. But you might not want someone to bring them up every time you try to discuss paring potatoes, because they may be considered to be off topic by some.

                                                                                        1. 4

                                                                                          Ah, this is the problem with language: I was contemplating grabbing one knife out of my kitchen bin versus another. “Selection” is a polymorphic verb over multiple objects dispatching… and yes, actual purchasing of knives exercises an ethical choice regarding the supply chain and who gets my infinitesimally small dollar choice.

                                                                                          It’s a bit tiring, as a friend said to me once, there is no ethical consumption under capitalism(even if you disagree with my Lefty friend there, you can get the spirit of the statement) - sometimes you do just need to get the Thing done. One has to care the appropriate amount, and respond in the proportional manner.

                                                                                          1. 10

                                                                                            there is no ethical consumption under capitalism

                                                                                            I’d go one step further: There’s no such thing as an unquestionably ethical action. The economic model doesn’t matter – everything is an ethical trade off. With that realization, it becomes clear that ethical debates can be shoehorned in anywhere, which is why a space where discussions on ethics are deemed off topic can be valuable.

                                                                                            (Edit) High quality discussion on ethics would be interesting, but quality is subjective, and discussions are prone to turn into flame wars and shaming, especially in today’s internet climate, so I’d rather have them declared off topic, at least in this little corner.

                                                                                            1. 8

                                                                                              If politics is encouraged in every applicable thread (it is now) and I wanted to join that practice (I don’t), I could be calling folks out in many (sometimes most) threads here each day on ethics around employers, code maintenance, energy use, disposable products causing environmental harm, using tech that’s non-inclusive cuz few understand it or CPU/RAM requirements price out the poor, and so on. It would be ridiculous even when true since it distracts so much from the kinds of technical submissions that brought many people to Lobsters in the first place. Especially those actually building interesting stuff vs just submitting.

                                                                                              It’s why I was for either ban on politics or a tag so it would be in specific threads folks could filter. Both got shot down. Here we are.

                                                                                    2. 6

                                                                                      You’re absolutely correct.

                                                                                      Hell, Portland State University’s CS program even has a requirement class “CS 305 Social, Ethical, and Legal Implications of Computing”[0]. I suspect this is not an anomoly..

                                                                                      1. https://www.pdx.edu/computer-science/cs305
                                                                                    1. 1

                                                                                      I’m a big fan of reusing existing, popular and well supported components. One part that is a little vague is what the interface to all the containerized tools is. I see that the supervisor is talking to the process - presumably there is a protocol all the tools have to follow.

                                                                                      In bioinformatics people have been working on how to supply arbitrary interfaces to tools. The effort I’m involved with is called Common Workflow Language. This is an interface language specification and has a bunch of implementations, including on top of Airflow.

                                                                                      1. 1

                                                                                        Sometimes the old solutions are the best:

                                                                                        https://www.youtube.com/watch?v=LlpzhaW0yFs

                                                                                        Basically all I have to do is leave one or more mechanical things running that have some amount of variability - leave a window a chink open so the curtain flutters, or leave a table fan running, so on

                                                                                        1. 1

                                                                                          “The most promising form of defense seems to be adding noise to the signals; the researchers are hoping to develop this in more detail in future.”

                                                                                        1. 4
                                                                                          • Visual Studio Code + cpptools + markdown-toc
                                                                                          • clang-format (integrated with VSC)
                                                                                          • clang static analyzer (integrated with VSC)
                                                                                          • Instruments for profiling
                                                                                          1. 12

                                                                                            I made a long thread about this (and other properties of voting systems) a couple weeks ago

                                                                                            A very important property of voting systems is secrecy. Once you drop in your vote, nobody should be able to tell who you voted for. This includes yourself – you should not be able to prove who you voted for.

                                                                                            This protects against candidates paying for votes, as well as people forcing you to vote a certain way. Once you’re out of the polling place, you’re free to lie about who you voted for and nobody – not even someone with power in the government – can tell if you’re lying.

                                                                                            Coercion is absolutely a problem in the united states. Often families are forced to vote the way the patriarch does. Many polling places in the South will even help families get adjacent voting booths (this is bad).

                                                                                            Secret ballot is a property of voting systems that is there quite universally – most countries have it.

                                                                                            Alameda County – the county in which I was helping run a polling place –does give you ballot stubs that you can take home. These don’t have your vote on them (they do have a unique ID) but you can use them to prove you voted (e.g. if you need to prove to your employer you voted so you can justify taking the 2 hours paid leave California requires employers to give you on election day)

                                                                                              1. 2

                                                                                                Reading your thread about ID, and about secure elections (no personally identifying paper trail) made me realize it’s actually quite easy to be ineligible to vote and still vote and there is no way to track this. A certain someone keeps harping on illegal voters and I drink the kool-aid that this is all over blown, but now I realize that anyone with any kind of id can just vote and we can’t track legality - we can only, after the fact, identify people who registered to vote illegally and only after systematically going through the whole voter roll and tracking down everyone and checking their citizenship. In the polling station I went to in Mass they don’t need any signature, so one can claim someone else voted in their name and so on. They took my ID, but I can’t remember if that was just because they initially couldn’t find me on the rolls, so I think you just need a name and address.

                                                                                                1. 12

                                                                                                  You sign the voter roster under penalty of perjury, and if you’re voting provisionally that all gets dealt with later.

                                                                                                  If you are voting for the first time they often need ID because of the HAVA act, but otherwise there is no ID requirement in many states (california too).

                                                                                                  A lot of things in this country operate under trust that you’re not lying in a situation where lying is illegal. It works out.

                                                                                                  There’s plenty of research showing that the threat of illegal voting is extremely low. Illegal voting is very hard to scale, and if you’d like to flip an election you’d need a lot of illegal voters. The chances of getting caught go up dramatically as you try to scale this. It’s not worth it; and very few people do it.

                                                                                                  Your argument is that you can game the system. That is true, but that doesn’t mean people do game the system, and that doesn’t mean that it’s worth it to game the system.

                                                                                                  OTOH a lot of people don’t have photo id. The cons of requiring id outweigh the pros. Disenfranchising a large segment of our poorer population is totally not worth it to catch a couple cases of voter fraud.

                                                                                                  1. 3

                                                                                                    Don’t want to start this discussion on lobste.rs but that makes me worry - because now there is an incentive for candidates to treat illegal voters as a voting block and cater to them, just like any other voting block. This creates a market for this. May be I should try and understand more from you via message.

                                                                                                    I recall telling someone canvassing for votes a few years ago (local election) that I couldn’t vote because I wasn’t a citizen (at that time) and she just shrugged in a strange way. I always puzzled about that. It wasn’t “Oh, yes you can’t vote, bye.” almost a wink-wink.

                                                                                                    1. 10

                                                                                                      That could also be because non-citizens can still be politically active – in fact iirc non citizens are often over-represented amongst campaigners because that’s all they can do to affect the election.

                                                                                                      I know non-citizens who have been canvassed and asked to help phone bank or whatever when they explain they’re not citizens.


                                                                                                      Again, scaling a process of catering to illegal voters is hard. Every single vote you try this for is an opportunity to get caught; you can’t do it in bulk. And a wink-and-nudge isn’t enough since you still have to explain how to impersonate a different voter or whatever – most people don’t know how voting works.

                                                                                                      It is totally possible for a single person to vote illegally. This process is very hard to scale without getting caught. Furthermore, it has not historically been a problem, and still isn’t.

                                                                                                      Voter fraud fearmongering is typically used to enact hurdles to voting that end up disenfranchising legitimate voters.

                                                                                                      1. 6

                                                                                                        One of the most salient political issues in the US right now is the presence of tens of millions of illegal immigrants on US soil, and the question of what, if anything, should be done about it (anything from “national borders are inherently illegitimate” to “greatly expand the size and power of the government’s law enforcement apparatus in order to deport them all”). Many illegal immigrants have some kinds of official documentation, because not all parts of the government are the ones that check for citizenship/legal residency, and because deliberately not checking for citizenship/legal residency when interacting with government services is a politically-popular pro-immigrant position in many jurisdictions (of course, it’s also a massively unpopular position in other jurisdictions).

                                                                                                        If someone’s presence in the country at all is illegal, but they are part of a group of tens of millions with similar status, know that enforcing the law (i.e. deporting them) is logistically difficult for law enforcement and very politically contentious, and in general feel like they are rightfully Americans, just without documentation, I find it very plausible that they might decide to cast a vote, and that the mechanisms to detect illegal voting wouldn’t detect them doing so. I don’t think that doing something under penalty of perjury is a significant deterrent to someone whose is already subject to deportation if the parts of the government that enforce immigration law learn about it.

                                                                                                        1. 6

                                                                                                          I find it very plausible that they might decide to cast a vote

                                                                                                          They can’t cast a vote under their own name though, they have to be registered.

                                                                                                          And as the OP mentioned it’s much easier to be caught during the registration process.

                                                                                                          What they have to do is turn up at a voting place, and impersonate someone else. This is very much an actively malicious act, not a passive “I feel like I’m american, i’ll vote” act where there’s more misunderstanding than malice.

                                                                                                          1. 2

                                                                                                            hah I just brought up where that happened to my great grandfather, the misunderstanding option though. He thought he had done all the proper paperwork but he had not. I don’t have the full story though he may have gotten a visa confused with citizenship or something, the world will never know.

                                                                                                            1. 2

                                                                                                              You don’t need proof of citizenship to register. I did it online.

                                                                                                              1. 4

                                                                                                                Sure, but once done it’s something they can look for and catch at any time they want. Unlike voting under someone else’s name – if not caught that day (e.g. if the person being impersonated comes in and tries to vote later), it won’t be caught at all (but this is fine because it doesn’t scale).

                                                                                                                When you register online you’ll provide an SSN or state id number, both of which can be traced to citizenship status. The state may not be interested in helping the federal government deal with illegal immigrants, and may not care about citizenship status in general, however the registrar of voters definitely will care about these things.

                                                                                                                1. 1

                                                                                                                  I gave my drivers license I think. Don’t recall if that is tied to my ssn. If registration is linked to ssn then its less scary because automated scans can be done re: eligibility

                                                                                                                  1. 2

                                                                                                                    I’m registered in california; I registered through my state id (you can autoregister when you apply for an id). When you register online you either provide an id number or ssn.

                                                                                                                    When I want to access my voter settings (change vote by mail preference, check if my VBM ballot was counted, check my polling place, etc) it asks me for an id number or ssn. Being too lazy to fish out my id I just use my SSN, which I know. It still works, despite having registered through my state id.

                                                                                                                    This stuff can be linked if they want to, usually.

                                                                                                                    And again, evidence shows that none of this is actually a problem.

                                                                                                            2. 5

                                                                                                              Yeah except all research on this issue shows that voter fraud is exceptionally rare. Some of the most recent examples were conservatives who thought voter fraud was easy with this exact mindset and got caught. My great grandfather found out he wasn’t actually a citizen when he went to vote, they told him he couldn’t because he wasn’t a citizen, and then went to mexico and applied for proper citizenship in the US.

                                                                                                              The reality is voter fraud, intentional or accidental is actually deceptively difficult. There are actually many layers at every step of the process that end up preventing this from being a problem. Voting machine based voter fraud, that may be a real thing, and we’ll probably never know how much. Humans walking in to do voter fraud, accidental or purposeful is statistically not a thing.

                                                                                                              Even Trump’s voter fraud investigation turned up dust.

                                                                                                              1. 5

                                                                                                                I don’t think that doing something under penalty of perjury is a significant deterrent to someone whose is already subject to deportation if the parts of the government that enforce immigration law learn about it.

                                                                                                                But the threat of deportation definitely is - have you met anyone who’s undocumented? The ones I know are terrified of every interaction with law enforcement, DMVs, employers, etc. Go to any restaurant kitchen anywhere in the country, any farm anywhere in the country, and see if you can even get them to tell you their full name without knowing why you’re asking.

                                                                                                                I sense you’re not close to any of these people. You would be subjecting yourself to an immense personal risk of losing access to all personal property, friends and family, etc just by putting yourself on a voting roll when you aren’t a citizen. I would never risk losing access to my children because of my desire to vote on anything.

                                                                                                                This is outside any discussion as to what we should do about the fact that large portions of our economy depend on labor that is undocumented – but their voting power is nil.

                                                                                                                1. 4

                                                                                                                  yeah I found that part of the argument absurd, but it seemed very subjective so I left it alone

                                                                                                                  I’ve known some illegal immigrants, all of them are very careful about this.

                                                                                                                  1. 2

                                                                                                                    I sense you’re not close to any of these people.

                                                                                                                    That’s painfully clear.

                                                                                                                    My wife works with a community organization that serves undocumented migrants. The list of services public or private they avoid to avoid any interaction with government officials who might question their immigration status would amaze you.

                                                                                                                    The thought that an organized voting fraud bloc would arise around them is positively risible.

                                                                                                                    As noted in the thread, the evidence clearly shows in person fraud is a non issue; in reality, strict voter ID laws are the real problem, as they serve to disenfranchise the poor and those underserved by government while providing no real benefits.

                                                                                                            3. 3

                                                                                                              Way too many unsourced assertions here. And I hope I’m not the only Lobster for whom “just trust, don’t verify” rings hollow.

                                                                                                              1. 4

                                                                                                                here’s a whole bunch of sources from a non-partisan org: https://www.brennancenter.org/analysis/debunking-voter-fraud-myth

                                                                                                        1. 5

                                                                                                          I last touched C++ in 1995 or so working at Fidelity Investments doing a large Defined Benefits app in MFC. The language really does seem to have changed a lot.

                                                                                                          Many of the things that used to annoy the crud out of me seem to have been excised or mitigated. I’m trying to bring myself up to date with it, mostly because I’m super enjoying KDE and thinking about contributing.

                                                                                                          1. 4

                                                                                                            I recalled lots of old C++ being done like C. That caused many problems. I don’t know if that was your experience. Since I was countered on saying C/C++, I asked pjmpl on Hacker News for any descriptions of or resources on “modern” C++ to know how it’s done today. Here’s his answer with some techniques and books in case you find it useful:

                                                                                                            https://news.ycombinator.com/item?id=10208786

                                                                                                            Obviously, I’m interested in any Lobsters that do C++ weighing in on whether that was a good answer. Might also know some other resources. Obviously, anyone learning will have to read up on the new standards, too. They’re doing really, neat improvements.

                                                                                                            1. 6
                                                                                                              • references for out parameters

                                                                                                              This can make code a little hard to follow though it’s traditional C/C++ style. I like returning values and trusting the compiler to use moves instead of copies. Complex return types can be tuples. I don’t know enough about optimization to know how big a performance hit this is over references.

                                                                                                              1. 6

                                                                                                                The C++ standard actually allows much more aggressive return value optimization than C, so it’s usually not a performance hit at all.

                                                                                                                1. 3

                                                                                                                  The C++ standard actually allows much more aggressive return value optimization than C

                                                                                                                  I don’t believe that’s correct. The “return value optimisation” just amounts to storing the return value directly into its target location, rather than copying it after the fact, and that’s just as possible in C as it is in C++.

                                                                                                                  1. 2

                                                                                                                    Unfortunately I can’t dig up the source, but if I recall correctly there is some rule difference between C and C++ that lets C++ compilers perform RVO more often.

                                                                                                                    It may have been that C cannot RVO across compilation units. Because C++ can, without LTO, as you can see in this example. The signature as written is Foo factory() however the generated machine code has the signature Foo* factory(Foo*). I don’t think C compilers are allowed to export altered function signatures like that.

                                                                                                                    1. 3

                                                                                                                      I don’t think C compilers are allowed to export altered function signatures like that.

                                                                                                                      The signature is not changed; the ABI specifies how return value and parameters are passed back and forth, and the compiler is generating code according to both. The Sys V ABI (and the architectural/C++ supplement for it) specify this - the return object’s storage is allocated by the caller and a pointer to it is passed via a register. The C ABI specifies exactly the same thing, and the equivalent C compiles down to the exact same code: https://godbolt.org/z/fMBi36

                                                                                                                      if I recall correctly there is some rule difference between C and C++ that lets C++ compilers perform RVO more often

                                                                                                                      To be honest I find this hard to believe, and I can’t conceive why it would be the case - I’d be very interested if you could dig up a link to any information which confirms it.

                                                                                                                      (Maybe what you read was actually that the RVO is more useful/important in C++ than it is in C. This is certainly true, since it allows copy-constructor calls to be elided).

                                                                                                                      1. 1

                                                                                                                        If what you’re saying is true, that means return by value never had any performance implications in C whatsoever, since RVO essentially always happens, it’s part of the ABI. And that everyone using out parameters for structs for performance has simply been misguided / ignorant of this. So I feel like there must be more to the story there.

                                                                                                                        To be honest I find this hard to believe, and I can’t conceive why it would be the case - I’d be very interested if you could dig up a link to any information which confirms it.

                                                                                                                        I really wish I had that post too, I looked through my history for 30 minutes to no avail. If I recall correctly, which I’m now second guessing whether I do, the author demonstrated a situation where the C++ compiler generated optimized code but the C compiler did not. Oh well.

                                                                                                                        1. 2

                                                                                                                          If what you’re saying is true, that means return by value never had any performance implications in C whatsoever

                                                                                                                          That’s not exactly what I’m saying; the ABI is a huge factor and certain other ABIs may not lend themselves to the same optimisation.

                                                                                                                          Note that technically, “RVO” specifically refers to the C++ case where copy construction is elided (i.e. C doesn’t have “RVO”, it’s just that C doesn’t need the RVO optimisation because it doesn’t have copy constructors). But from your first post I’m reading your use of “RVO” as meaning “avoids an object copy” and certainly that’s possibly in both C and C++, if the ABI allows for it.

                                                                                                                          If the ABI doesn’t allow for in-place “construction” of the return object, then passing output-parameter structs explicitly as pointers can still be a win.

                                                                                                                          1. 1

                                                                                                                            Does the 32-bit sys V ABI handle structs the same way? The 64-bit ABI is better in a lot of ways, if this is one such way that would explain that.

                                                                                                                            1. 2

                                                                                                                              Does the 32-bit sys V ABI handle structs the same way?

                                                                                                                              Yes, it does.

                                                                                                                              However, there’s another thing I forgot to mention: passing a struct parameter via explicit pointer (or reference) can still be an occasional win over relying on in-place return value construction, even if the ABI does allow for that - because with the latter, the compiler needs to make sure it doesn’t accidentally create an aliasing pointer. That is, if you have something like:

                                                                                                                              struct foo_s { int a; int b; int c; }
                                                                                                                              foo_s gfoo;
                                                                                                                              foo_s foofunc();
                                                                                                                              
                                                                                                                              void f()
                                                                                                                              {
                                                                                                                                  gfoo = foofunc();  // <-- here
                                                                                                                              }
                                                                                                                              

                                                                                                                              In this case the compiler can’t pass the “hidden” return value pointer as &gfoo, because it’s possible that the foofunc() function reads values from gfoo while also storing values into its return value (via the hidden return value pointer). See https://godbolt.org/z/Zfacwj

                                                                                                                              1. 2

                                                                                                                                Ah yes, that makes perfect sense!

                                                                                                                                I’m learning a lot today, thank you!

                                                                                                                2. 5

                                                                                                                  Yes references hide just enough information to be dangerous in my experience.

                                                                                                                3. 2

                                                                                                                  Speaking of return types, tuples combined with structured bindings are da bomb. It basically looks like you are writing Python - you return a pair or a tuple from a function, and then use structured bindings to retrieve them directly into variables. So sweet.

                                                                                                              1. 7

                                                                                                                Here’s mine. It’s less impressive than others I’ve seen.

                                                                                                                Dates, Company, Title, Salary, Stock/Options, Location
                                                                                                                2013, SmallCompany, Intern/Developer, 0, 0, Northampton MA
                                                                                                                2014, SmallCompany, Web Developer, 30000, 0, Northampton MA
                                                                                                                2014, Startup1, Software Developer, 60000, 0, Northampton MA
                                                                                                                2015, Startup1, Software Developer, 65000, 0, Northampton MA
                                                                                                                2015, Braintree, Software Engineer, 125000, 10000, San Francisco
                                                                                                                2016, Braintree, Software Engineer, 127000, 10000, San Francisco
                                                                                                                2017, Startup2, Sr. Software Engineer, 135000, 0, San Francisco
                                                                                                                2018, Startup3, Software Engineer, 127000, 0, San Francisco
                                                                                                                2018, Unemployed, N/A, 0, 0, N/A
                                                                                                                
                                                                                                                1. 2

                                                                                                                  I suspect this is more typical … uh … from speaking with … my friend …

                                                                                                                  Sorry to see the last line, but I suspect it will change soon!

                                                                                                                  1. 2

                                                                                                                    Sorry to see the last line, but I suspect it will change soon!

                                                                                                                    I’m actually enjoying every minute of it! I’m sure that’ll change once the money starts to run out though… should probably apply to some jobs soon. :P

                                                                                                                1. 3

                                                                                                                  Was intrigued by Buckaroo and we’ve had several threads on it, starting with: https://lobste.rs/s/3rqvx4/approaches_c_dependency_management_why

                                                                                                                  Anybody with a recent update on how they feel about Buckaroo?

                                                                                                                  1. 3

                                                                                                                    Buckaroo is actively being developed. Our current challenge is keeping packages up-to-date and improving Buckaroo itself.

                                                                                                                    Although Buck(aroo) could just just invoke the underlying build system we discovered that this is not sufficient for several reasons:

                                                                                                                    • most buildsystems are not reproducible
                                                                                                                    • have insufficient support for cross-compilation
                                                                                                                    • don’t play nicely with other libraries for various reasons (that are usually avoidable)

                                                                                                                    In order to resolve those issues, we started porting all our libraries to Buck. As this turned out to be a big undertaking, we started investing our time into automated tooling: Have a look at our blogpost about buildinfer or it’s website.

                                                                                                                  1. 3

                                                                                                                    https://pubsonline.informs.org/doi/10.1287/orsc.2018.1202

                                                                                                                    Article on open source, and the benefits of commercial entities contributing to it, is behind a paywall. Somebody is not eating their veggies …

                                                                                                                    1. 5

                                                                                                                      I have a new audio design with bizarrely high level of noise on the output. It uses an external amplification stage with moderate gain after headphone output of the system’s codec. The codec (WL8731L) in turn has two gain stages, on the DAC and on the headphone out. The latter, however has no ALSA controls provided in the kernel driver. That’s what I’ll be adding to see if reducing the gain there will help.

                                                                                                                      1. 3

                                                                                                                        @varjag this is probably not your issue, but when I designed an amplifier I had a problem with a large amplitude oscillatory signal suddenly appearing and strangling the circuit until I restarted it. From advice of my advisor I used “by-pass capacitors” - small tantalum capacitors with very short leads, in the picofarad range- between the integrated op-amp power pins and the ground. This solved the problem. The by-pass capacitors short any high frequency noise on the power bus to ground, preventing the noise from adversely affecting the operation of the chip. The by-pass capacitors are placed as close as possible to the power pins of the IC.

                                                                                                                        1. 2

                                                                                                                          Thanks, but yes it’s something different here. No oscillation or line hum, just broad white noise: and it’s not there when we cut the input.