Eliminating Sales Commissions - <AUTHOR> http://martinfowler.com/articles/eliminatingSalesCommissions/ <comment><USER2> Why don't people incentivize long term sales? For example, instead of giving a commission based on how much they sold in a given year, have each salesperson given some money based on how many years a client has remained with the company, and maybe extra if the client buys more products later on. That way you're incentivizing sales people to build long-lasting relationships, which I assume is what you want.

<comment><USER3> The way my company does it is X% of total sales from Customer A the first year. Followed by Y% for next couple years.

</comment></comment><comment><USER4> FogCreek has eliminated commissions, too. <http://blog.fogcreek.com/why-do-we- pay-sales-commissions/>

So have we.

My thoughts? Commission-based sales is almost never a good alignment between sales people and the company. Almost always sets up unintended consequences and leads to local maxima before reaching global optmima.

Also, if you're a software product company, you end up with the "doers" (software people, support, etc.) earning far, far less than sales-people, which causes them to get fed up and leave.

Yes, we're a business and we have to make money, but without great software developers we won't have anything to sell.

Put everyone on salary and then have company-wide profit sharing (that is equal amongst the divisions/people) tends to align everyone's interests.

<comment><USER5> _Also, if you're a software product company, you end up with the "doers" (software people, support, etc.) earning far, far less than sales-people, which causes them to get fed up and leave._

I don't understand this point. The sales person is the one making sure everyone else gets a paycheck. Why should they be treated equally? They are the stars of the show, not the developers, or management. If people get fed up, then let them. Code does not sell itself.

<comment><USER6> There are many software companies selling software without dedicated sales people. There is not one which has sales, but no developers to build the product.

<comment><USER7> "There is not one with sales, but no developers to build the product"

I wish. You've never sold software to the state then... I've seen a lot of vaporware being sold (and if they win the bid, then they scramble to get the lowest common denominator made).

</comment></comment></comment></comment><comment><USER8> So, my takeaway from the article:

Sales commissions are good because they align what the company wants and what the salesperson wants.

Sales commissions are bad because sometimes the company wants something (pushing a harder product, etc.) that isn't in the salesperson's best interest.

ThoughtWorks' solution was to eliminate commissions, thus pushing for a salesperson role that was less of an advocate for the product towards the customer and more for an advocate for the customer towards the company.

Maybe I'm oversimplifying things, but the sales staff the author describes isn't sales -- it's marketing. Which is good! But fills an entirely different niche. One of the issues the author talks about is that the sales staff were promising things that couldn't be delivered, but I only see that more exacerbated by this approach.

What's the disadvantage of scaling commission based off of company goals? (Selling a less demanded product yields more commission). This is, from my understanding, how more institutionalized salesforces operate, and seems like a more gradual solution to the problem.

<comment><USER9> _Maybe I'm oversimplifying things, but the sales staff the author describes isn't sales -- it's marketing._

I don't think there's any maybe too it. I think it's quite clear that the OP isn't suggesting to abandon sales completely in favour of marketing. So, yes, I think you're oversimplifying to a strong extent.

What is being discussed is all about incentives for sales people, to motivate them to do what's in the company's best interests. If it were in the company's best interest to simply get a sale no matter what, regardless of how much damage that sale does to the company, then the standard commission based approach makes perfect sense. But what do you do about the deals where the salesperson does the normal "used car salesman / snake oil pitchman" act, scores the sell by promising a lot of shit that's not realistic, and then it ultimately costs the company more money than the sale price, to fulfil the deal?

Or maybe it's not _that_ bad, but maybe the scenario just creates a debacle that leaves a bad taste in the customer's mouth and ixnay's any future deals with that customer. And if your firm emphasizes lots of up-selling and cross- selling and tries to optimize "lifetime value of the customer" then you want to start the relationship off on a strong note, no?

<comment><USER8> _What is being discussed is all about incentives for sales people, to motivate them to do what's in the company's best interests. If it were in the company's best interest to simply get a sale no matter what, regardless of how much damage that sale does to the company, then the standard commission based approach makes perfect sense. But what do you do about the deals where the salesperson does the normal "used car salesman / snake oil pitchman" act, scores the sell by promising a lot of shit that's not realistic, and then it ultimately costs the company more money than the sale price, to fulfil the deal?_

This argument isn't against sales commissions, it's against bad salespeople. Obviously any sales approach that values get-rich-quick over providing long- term value for the company is going to be dangerous. Smart salespeople recognize that a relationship with the customer is the most important thing -- not despite commissions, but because of commissions. There's a sales cliche that goes along the lines of treating the customer like a cow to be milked instead of a cow to be slaughtered: if you're trying to optimize the lifetime value of a customer as a business, then that also means maximizing the possible commission from that customer, no?

(And, furthermore, the point I'm raising is -- are those smart/good salespeople going to be disinclined to work at a company without commission? I really don't know.)

<comment><USER9> _This argument isn't against sales commissions, it's against bad salespeople._

OK, I can buy that, but I think it's creating more of a binary situation than exists in reality. Surely the "goodness" or "badness" of salespeople, in this regard, is on a continuum? If so, wouldn't choosing the best incentive structure be most important to the ones who aren't solidly at one end or the other?

<comment><USER8> Oh, definitely. It's just hard to mentally conjure a spectrum of fitness for the company without having more specifics.

I guess in my mind, what the author is doing is creating a structure that minimizes damage done to the company by bad salespeople: and I wonder if an unintended consequence of that is limiting the abilities of great salespeople as well.

</comment></comment></comment></comment></comment><comment><USER10> Please please do 1,2,&3 year followup posts. Interesting experiment, I'm pessimistic as to the outcome, but would enjoy being wrong.

<comment><USER11> Why are you posting this message here? This site is not his site. This isn't his email inbox.

<comment><USER12> And, he did not submit it on HN, but someone else did.

</comment></comment></comment><comment><USER5> There are two types of salespeople: A. Those who can and will sell with motivation to make good money. B. Those who want a steady paycheck and will sell OK. Your approach values option B. Is it bad? Not really. OK sales people still make sales. But they tend to have very negative impact on the rest of the business. I only hire sales people on commission, and pay them very well. They always bring twice as much business as a salaried one.

<comment><USER13> In your penultimate sentence you state you only hire sales people based on commission. In your final sentence you state that they perform twice as well as salaried sales people.

These seem contradictory to me. How can you know the latter given the former? Where do your stats for the comparison cone from?

Sorry if I'm being terse, I'm on my mobile at at moment...

<comment><USER5> I have run A/B tests with salaried VS commission. Not a perfect test, I must say, because I can't test the same hypothesis on the same person. Best I can do is test on two groups and keep most factors similar. Testing people is difficult and expensive.

</comment></comment></comment><comment><USER14> I would love to see this become the norm for companies who sell enterprise software.

<comment><USER9> FWIW, we don't have salespeople yet at Fogbeam Labs, but I'm leaning very heavily towards the idea of adopting a Fog Creek / Thoughtworks approach when we get to that point. I tend to think that going salary + regional bonuses + companywide profit sharing (or something along those lines) is more compatible with taking a long-term view and ultimately generating the most profit.

Now time might ultimately prove me wrong, but it is encouraging to see other firms exploring this approach.

<comment><USER14> My suspicion is that this model will prevent you from attracting the very best reps, but that you'll be able to get a disproportionately high share of above average reps, and that your turn over will be a lot lower.

In any case, it's much easier to try this model and then add in commissions later on than to do the reverse.

</comment></comment></comment><comment><USER15> I like to say "money begets money".

If the incentive is money, people make more money. If it's not, they don't. It's that simple. Everything money related works this way for a reason. Sales, real estate, trading, mortgages, whatever.

And I am pretty sure that no one wants their sales team to make less money, right?

What you're _really_ looking for by eliminating commissions is discipline. Not selling the product in a way that puts you under (like Oracle nearly did in 1990-ish[1]). That requires a strong leader to guide this, not changing the core incentive AWAY from making money. Oracle fixed their problem by changing their accounting.

I'm not a sales person, but my understanding from sales people is that the best ones work on commission. If you were told that the best engineers required equity, would you make your company equity-free? Didn't think so.

[1] - [http://en.wikipedia.org/wiki/Oracle_Corporation#Sales_practi...](http://en.wikipedia.org/wiki/Oracle_Corporation#Sales_practices)

</comment><comment><USER16> I don't think the issue is black and white. Take for instance a company where your big money comes from landing big accounts, and the only way to do that is with star sales people. And maybe on the tech side the work is rather mundane, and star engineers don't even want to work for the company -- for example, simple landing page setup or setting Javascript pixels to track conversion and other metrics.

For software intensive companies where the product is the business, perhaps sales commissions don't make sense. But there are many companies where tech is either outsourced or not the differentiator in terms of competitive advantage, and therefore salaries/commissions skew towards the salespeople making the most. There are certainly issues that can crop up in that case, but the incentives can help.

</comment><comment><USER17> Sales commissions are the best way to maximize short term returns. Then your operational teams leave because they're paid much less but don't see why their work is less important, your clients leave when they understand the solution you sold them is not adapted and so on.

Tldr of the article: [http://tldr.io/tldrs/512258d5ace532876b000003/eliminating- sa...](http://tldr.io/tldrs/512258d5ace532876b000003/eliminating-sales- commissions)

<comment><USER18> I think that salesmen always have gimmicks. Often, the best way to sell a product is to lie. Also having a sliding commission scale gives incentives to push sales through at whatever cost, just to get to the next tier of commission-- the difference is substantial. I've seen how this can lead salesmen to sell to fraudulent clients who use demo service or products (at a cost to the company) Reducing or eliminating tiered commissions can help. If possible, applying penalties to salesmen who don't conduct due diligence to verify clients' identities, or penalties for cancelling a service before rescission periods end could help, too.

Yet, at the same time, I'm making a switch from tech to entrepreneur and I believe that sales is a lot about telling a story. In general, you have to make your clients believe your product or service is a great deal and that you don't make any money on the deal. (which is impossible)

So, how do you sell a product or service at a decent profit without becoming slimy? Or how do you run a company and give incentives (and disincentives) to employees that lead to both short and long term growth, customer satisfaction, employee satisfaction and sustainable profit?

Good question. I've come to believe the answer isn't a one size fits all. Most businesses (especially tech businesses) are businesses of scale. Short-term growth is especially important in the beginning of a company, but sustainable growth is the ultimate goal.

</comment></comment><comment><USER19> Equating sales and sales commissions as the same across different fields is dangerous. Even across different companies.

For example, the traditional relationship is between the companies and the sales person representing that company. This is because the relationship is, in reality, between two individuals. This happens all the time in the startup world, we just don't call it commissions.

</comment><comment><USER20> Just thinking about the author bringing up metrics and aligning motivation, it might be possible do both across multiple departments by having moderate bonuses based on customer retention and satisfaction. (I guess that's similar to profit sharing, in a way.)

 _edit:_ realized I'm not the first to suggest something similar. Haha.

</comment><comment><USER21> Anecdotally, a company I used to work for actually went the opposite direction, moving from purely salaried salesreps to pure commission. I believe it was a disaster (the reporting was so bad back then there was no way to tell), but salary costs went down, so they just kept it.

Yeah, weird place.

</comment><comment><USER22> We're really happy not having sales commissions at GitHub.

Further reading: Optimizing Sales for Happiness <https://github.com/blog/1230-optimizing-sales-for-happiness>

</comment><comment><USER23> I can't read the article as I'm in corporate lockdown IE8 hell, but one point that may or may not be in the original:

I always thought that salespeople were paid well was because, fundamentally, it's a _shitty_ job.

<comment><USER24> Totally agree. The emotional variance a salesperson has to endure on a day to day basis is very, very high. We engineers are lucky to work in a rational space. When things work, they work. When things don't work we can apply rational thought and fix the problem a majority of the time. You can deal with emotional/people issues via straight talk, through your manager, avoidance and/or just quitting. With sales and marketing, they are grappling with a fundamentally irrational (or at least opaque) set of constraints - people, their moods, budget cycles, company processes, etc. Its hard.

I used to think sales and marketing was at par or below engineering. My thinking changed over the years thanks to something I saw first hand. My previous employer had a large, all hands on deck, one week long conference every year. As an engineer I would observe how our sales team would interact with clients. Clients, especially the bigger ones, would treat them very badly. Our sales members would put on a cheerful face and continue with their jobs. I would have walked out if I had been treated like that in public. I can only imagine how bad the treatment is when its in private. I've been much more polite to salespeople, even to pushy salespeople, ever since then. I actually take time to reply to (generic) emails for products that I signed up for a trial offer.

<comment><USER25> It depends on the person. Some people take to "human problems" very well.

</comment></comment></comment><comment><USER26> In my last company we operated for years without commissions. But our sales were never really quite paying the bills. But because of how we sold our software, we ended up building very long reaching and substantial relationships with our customers. Quite a few are still very loyal customers today, almost a decade later. _Everybody_ was a sales person.

Still we couldn't _quite_ get over the hump to profitable and growing.

For a few years we had a professional sales guy who handled a number of clients. He was paid like everybody else, base salary plus bonuses. However, he always felt uncomfortable not getting a base + commission like he was used to. One thing that was noted was the "drive by" approach to sales he used. Customer interaction was fairly limited, relationship building was minimal, meetings of any sort were kept on strict time schedules (and no longer than 1 hour).

This ran counter to how the rest of us moved software. He did "ok" compared to the rest of us in short term sales, but not a single one of his customers stayed on as long term customers.

Enter a new CEO, he brought in a professional sales team, and restructured the sales operation to a base + commission model. Very quickly one problem became very apparent. The hours worked on a sale by the a sales guy were quickly dwarfed by the hours worked by the rest of the staff to support him. But when the sale was made, he kept the entire commission.

This became a really big problem as the new sales guys would start new custom demo building efforts without regard to how much time it took the rest of the staff to support him. To him, his 2 or 3 1-hour meetings, a half dozen emails and a phone call or two didn't change if the demo took 8 hours to put together or 120.

Sales were also still not up-to-par. The sales team blamed the lack of support, the support team resented the flippant treatment by sales. Something had to give.

The new CEO was absolutely opposed to getting rid of commission entirely, he felt that it would limit his ability to recruit new sales talent. So I proposed a middle ground:

\- any designated sales person "owned" their account and were guaranteed some money out of a deal closing

\- if he made the sale completely, 100% on his own, he kept 100% of the commission. This was to encourage them to start respecting how much work went into the support he received and for them to better learn the product line they were pushing (we had a problem where every salesman needed a support engineer in every sales meeting to answer 80% of the questions the customer posed)

\- if he required even 5 minutes of anybody else's time, he lost 40% of this commission, to be paid to the person who helped him. This was to encourage the sales staff to collaborate and get the most out of their support person, and to encourage the support person to collaborate with the sales guy -- effectively reintroducing the "everybody is a salesperson" back into the company

\- if more than one person had to help, the 40% was split between those people, this again further encouraged collaboration, skill building (so the support person wouldn't have to rope in additional colleagues) and the need for the requesting sales person to actually learn about the functions needed to support his sales effort and who had those skills

In the end, the sales guy, rather than being a brash, drive by, finger pointing irritant to the company -- rewarded for everybody else's work -- had to learn to lead micro-teams for each sales effort, or learn the products back and forth and serve themselves.

The results:

\- small sales efforts ended up being handled solo, the sales guys started to get really good at estimating LoE for a sale. One guy ended up specializing in these and handed off larger sales to the rest of the sales team as he didn't want to coordinate people...he kept selling so it was fine

\- larger LoEs automatically pulled in a few core people who ended up more or less as sales engineers for the sales staff, we became much more careful about sizing sales vs. LoE so we didn't waste now 2 or 3 people's time

\- support staff loved getting extra checks every quarter, motivation was up and resentment was down

\- sales guys became much more part of the team than slick lone-wolfs

sales were up record percentages

What went wrong?

When more than one support staff worked on a sale, it became unclear how to split the 40% at times.

There were still sales where the support work dwarfed the sales guy's work, and/or times when the sales guys thought they could game the system by delegating virtually all of the sales process to a support person, then collect their 60% for virtually no work (this happened under the old system when they made 100% too) the 60/40 split didn't always make everybody happy.

It introduced quite a bit of complexity into the sales process. Pre- commission, we were free to just focus on the sales process, post-commission there was endless negotiations over commission splits, payout times, etc.

If I _had_ to do it over again, I make the rules this way.

Sales people would be payed a normal competitive salary, no commissions until they've at least covered their own cost to the company, then commission pay outs as before.

Actually, I'd still setup a commission-free system, but with generous bonuses to outstanding members of the team.

</comment><comment><USER27> The problem is always the same with commissions, anywhere: kickbacks ("retro- commission" in french).

It _does_ definitely happen in the software industry. You find someone responsible for acquisitions and you tell them: _"Look man, if you buy 200 licences of this I'll get a commission and I'll give you under the table a kickback of 25% of my commission"_. You're a fool if you think this doesn't happen and there are some _very_ famous names in this industry where sales people are known to behave this way.

The good move is to completely suppress them but the problem is that your competitors may be employing sales people using shaddy practices so you'll, sadly, all too often not be competing on merits.</comment>


Thank you pg and rtm - <AUTHOR> http://catdancer.github.com/thank-you.html <comment><USER3> and now for the anti-pandering anti-pattern ;-)

I can not believe for _once_ that this guy obtained hacking nirvana through Arc. Not once! Why? because the Arc documentation is so meager as to be non- existent. You will need serious feet-wetting with more established Lisp dialects before you can "get there" with Arc.

All the epiphanies he lists are easily experienced with most modern Lisp dialects; either he "got it" before and just needed to extend the credit to Arc, for some reason .. or he isn't there yet, at least not to its full potential.

It had to be said, as much as I hate to be rude and blunt like this :-|

<comment><USER4> I have a lot of experience with Arc, Scheme, and Common Lisp, and I find Arc significantly more pleasant to program in. When I have to shift into Scheme (some parts of Arc are written in Scheme), it feels like there is a lot of extra drag.

It was noticing this difference that made me decide Arc was ready to release. If it (a) felt significantly better to me, who (b) am experienced with existing Lisp dialects, and (c) writing a type of application (HN) that's not wildly specialized, then it had the "quantum of utility" I usually use as the test for releasing a version 1.

<comment><USER3> Paul, you're fit to prefer Arc over the rest because: 1) you're an experienced Lisper, and 2) it's your own creation, you know it inside and out and the language spec, manual, tutorial and research papers are somewhere between your ears (the most convenient type of bookshelf ;-)

However, it's IMO, unacceptable for a fairly new Lisp programmer to cast aside 50 years of Lisp research, development and deployment while brushing aside the industry's backbone languages, and herald Arc as the best thing ever when it isn't even finished.

I can accept personal choice and opinion, if kept to one's self and made in private. Even if someone sings Arc, or Clojure or Common Lisp or Scheme, praises, I am fine with it. But to say "Languages X, Y, Z suck because they don't allow me to write succinct programs", well, you're just trolling for X, Y and Z programmers to come out and straighten you out. The sort of macrology he is after (code-compacting type, not language extension) is pretty basic and could be done with the C pre-processor and M4. You can even write compact _assembly_ programs with GASP, HLA, and NASM macros; it's not rocket science.

I reserve my judgment for Arc until it's done. There is no manual yet to hold the compiler accountable, and to save me from guess-work. However, what I can't ignore is blind fanboyism; if everybody here sang Arc praises, when it is just arc-tutorial.txt and arc.arc, and there were no "dissenting" honest voices, well, the place just wouldn't be the same.

<comment><USER5> I think you're being unnecessarily argumentative in this discussion. The author likes Arc, feel is makes him more productive, and he wanted to share that with the community.

He did not say other languages suck. What he said was he prefers Arc over those languages, and explained why.

<comment><USER3> I realized that pretty much by now. I had a WTF moment earlier and wished I had spent those few hours I spent on this thread doing something else.

Lesson learned. Modded you up for the truth. Thank you :-)

</comment></comment></comment></comment></comment><comment><USER6> OK, I have a HN etiquette question. I don't post much on HN, and I wasn't the one who posted the link to my thank-you here on HN. I've had a HN account for a while, but I'm still pretty much a newbie to HN.

I have a desire to not just stand here and take it on the chin as mahmud publicly proclaims that I'm pandering, a Lisp newbie, irrational, a blind fanboy, hypocritical, dismissive, and unfair. On the other hand I don't want to waste everyone's time with a tedious flamewar.

Thoughts?

<comment><USER4> He was surprisingly nasty about it, but I wouldn't bother fighting back. A lot of the people who voted up his comment didn't do it because they agreed with him so much as because they're worried you'll start a trend of people posting stuff trying to suck up to us. Which is actually a reasonable thing to worry about, considering that a significant number of HN users think they might one day apply to YC. So you were basically just unlucky.

</comment></comment><comment><USER7> I understand what the guy is saying, but this is equivalent to art students discussing the technicality and construction of canvases. Even if you select the best canvas in the world, it does not make your painting better.

I think that too much of writing about programming is focused on the details of the programming act, and too little on the result of the programming.

Reading about finding and learning a programming language is like reading about an artist choosing a brush. Reading about the technical details of someone scaling a Django app on a single server to serve 1000 concurrent requests per second is like seeing the finished artwork.

<comment><USER8> > Reading about finding and learning a programming language is like reading > about an artist choosing a brush.

Wands are a much better metaphor to make. Or perhaps, what if you had a magic brush that could at any time be extremely fine or large or anywhere in between depending on how you felt? That would be some brush, especially when you compare it to the many medium sized brushes which aren't so fine when you need them to be.

Okay, so maybe the metaphor is still stretching a bit, but these are no ordinary brushes; they are worth writing about.

</comment></comment><comment><USER9> >> "The second half of the book is how to apply the principles to Java code. Which is horrendous! Not the book. If you should be so unfortunate to be stuck trying to write good code in Java, the book is a great, lucid description of how to do so. Yet in Java, it's hard to get anything shorter than ten or twenty lines of code. See some code duplication, and by the time you've written the classes and interfaces and methods you need to write to remove the duplication, the code is just as long as it was before."

Yeah you're doing something wrong there. I know it's fashionable to bash Java and say how lame and verbose it is, but it does wear a bit thin. I actually enjoy writing Java. Perhaps due to me having grown up programming assembly - <USER2> don't mind verbosity. Java is an extremely solid fast language.

<comment><USER10> _Java is an extremely solid fast language._

You mean "the JVM is an extremely solid fast _runtime_ " - languages by themselves aren't fast or slow ;-)

<comment><USER9> Right - Java as a word is heavily overloaded ;). For me, that's the bit that matters - the JVM. Java is just something I use because it's easier than writing bytecode :/

Java as a language, the syntax, is for me sane. It gets a lot of things right, and some things wrong, but on balance, it's sane enough to use. Just like English as a language is sane enough to use, whilst having lots of stupid inconsistencies in spelling/pronunciation etc.

And it's likely to be the fastest/most optimized of any JVM target language.

</comment></comment></comment><comment><USER4> We're releasing a new version quite soon. So once again, if there's anything you want fixed, now is the time to tell us.

<http://arclanguage.org/item?id=9257>

One of the things I want to add next is graphics libraries. Does anyone have any recommendations for what to plug into to munge images?

<comment><USER11> _Does anyone have any recommendations for what to plug into to munge images?_

ImageMagick (<http://www.imagemagick.org/>) has worked well for us. There are bindings out there for many languages, including Common Lisp (<http://common- lisp.net/project/cl-magick/>); you might want to look there for inspiration.

<comment><USER4> We used ImageMagick to manipulate images in Viaweb. So if it's still the best thing around now, 14 years later, it must be pretty good. Thanks!

</comment></comment></comment><comment><USER12> If we're going to be thanking people...

Thanks Anarki and arcfn.com!*

They were both tremendously useful/helpful when I last used arc.

*All creators and contributors.

</comment><comment><USER13> From what this guy is saying, the power of Lisp style Macros is akin to what I can do with the syntactic Rewrite Tool and Blocks (Lambdas) in Smalltalk. I've always been led to believe that Lisp Macros are something even more powerful. (I haven't had the time to really delve into them.)

<comment><USER14> Yes, there was a recent article on HN about "your language features are my libraries."

[http://blog.bitquabit.com/2009/05/20/your-language- features-...](http://blog.bitquabit.com/2009/05/20/your-language-features-are- my-libraries/)

That was comparing Smalltalk to C#, but it is a similar idea. Smalltalk and Lisp belong to that elite fraternity of programming languages where the ability to easily extend the syntax is built into the language. The mechanisms are different, but the expressive power is similar.

<comment><USER13> Well, I've heard that Blocks get you most of the way to Macros, but not quite. I'm wondering if the "not quite" part is something beyond what's afforded by the Rewrite Tool.

The Rewrite Tool is not dynamic. Perhaps this is the key? But I could imagine a Smalltalk function that takes a method, applies a Rewrite Tool syntactic transformation to its source, compiles the method as a Block, then calls this Block with the arguments that would've been send to the original method.

Something like:

        perform: methodName
        with: arguments
        rewriting: aMatchingPattern
        as: aRewritePattern

Where aMatchingPattern would be something like:

        ``@rcv
            ifTrue: `Block1
            ifFalse: `Block2

Then aRewritePattern could be something like:

        "Order of Blocks reversed"

        ``@rcv
            ifTrue: `Block2
            ifFalse: `Block1

Just be careful to cache the result of the compilation by method name and Class, and this wouldn't be too much slower than a conventional #perform:

This particular example would let you dynamically call any method, but with all of the if-then-else equivalents with the then and else clauses swapped.

Would this constitute Smalltalk Macros?

<comment><USER14> "I could imagine a Smalltalk function that takes a method, applies a Rewrite Tool syntactic transformation to its source, compiles the method as a Block, then calls this Block with the arguments that would've been send to the original method."

I don't understand what you said, but in non-hygenic Lisp macros (the kind you get in CL, Arc, and Clojure) a macro is simply a function that expands into code before being compiled or evaluated. You can almost think of it as an extremely clever query-replace functionality in your text editor that always happens before you compile or run your program.

This is why so many Lispers claim that Lisp is at the top of the heap when it comes to language power. If you can arbitrarily expand your code into some other form at compile time, you can pretty much do anything any other language can do. A canonical example of this is that the object system added to Common Lisp is just a bunch of macros. Name your programming paradigm, and there's a very good chance someone has implemented it in Lisp, with macros.

What you describe sounds more complex than Lisp macros, which brings us to the necessity of all the parentheses. The idea of macros only works well when the language is built up out of a data-structure supported by the language. In Lisp, of course, programs are lists and macros let you do anything to your program that you can do to a list. When people try to add "macros" to languages where the code is not a data structure, there usually needs to be some intermediate representation of the parse tree, and then things tend to start getting ugly as the relation to what the source code would look like is quickly lost.

Having said all that, I'm curious if anyone that knows both Smalltalk and Lisp can name concrete examples of programming in Smalltalk and finding something you were unable to do without macros.

<comment><USER13> The Rewrite Tool meta-syntax allows you to do a few nifty things. It is also "an extremely clever query-replace functionality" and in the scheme I proposed, you could "decorate" a function, such that a transformed version is called at runtime.

The Rewrite Tool also gives you access to the Smalltalk Parse Tree, though this isn't quite as pretty as Lisp's. However, you can very easily apply a Visitor to your AST. Perhaps even better, there's also a { : ... } syntax for executing arbitrary Smalltalk code to do your transform.

 _which brings us to the necessity of all the parentheses_

Yes, Lisp is it's own AST! That's amazingly brilliant! Makes software toolsmithing equivalent to just plain programming.

</comment></comment></comment></comment></comment><comment><USER15> Hi. My experience lies in Ruby and in JavaScript (these days) so I can see these worlds however close, differently. In Ruby I have all kinds of gimmicks that help with cutting the chase when that's what I want, but I also can make it a little harder when I am interested in something else, in experimenting with some other approach.

What I find a little disgusting is when my "meta-programming" in Ruby starts doing things like when an exception occurs, it points to a line number slightly different than where it really is, or when the backtrace becomes all the more "hacked" with harder to understand things thrown in there. It serves to remind us that there are tradeoffs involved. Also there is the issue creating shareable modules and when you start hacking it away it can make it all the more harder to share. But it's more than fun, it does work, it's just that one can have mixed feelings because for ever cool finding or development, there can exist a little nuisance as well or something that you cannot quite do anymore because you deviated from mainstream...

I gotta go have lunch!

Be well.

</comment><comment><USER16> I'd love to hear what the difference is between arc macros and scheme hygenic macros that makes one effortless and the other unhelpful.

<comment><USER10> I haven't used arc in a while, but if I remember correctly it has a Common Lisp style defmacro that anyone can figure out:

      (defmacro foo (args go here) `(code goes ,here))

On the other hand, Scheme has this monstrosity for defining macros that I can't describe because I never managed to keep straight in my head how it was supposed to work.

Hygiene is a red-herring. It's easy enough to achieve with a defmacro-style macro system - just use gensyms.

<comment><USER17> Ah, this has been repeated many times, but I can't help to click "reply"...

> It's easy enough to achieve with a defmacro-style macro system - just use > gensyms.

Gensym cannot prevent global identifiers from being shadowed in macro use environment.

        (define-macro (my-if a b c) `(if ,a ,b ,c))

        (define (boo)
          (let ((if list))      ; if is shadowed
            (my-if 'x 'y 'z)))  ; evaluates to (x y z), not y

In CL you don't need to worry much, since (a) it is Lisp-2 so variables won't shadow operators, and (b) using packages greatly reduces accidental shadowing. In Scheme the chance is much higher; you probably don't bind 'if' locally, but you can't check every user-defined global procedures the macro inserts into the output.

<comment><USER8> It is unfortunate for abstractbill to use this incorrect explanation, because hygienic macros are still a red herring - a decent module system and a bit of restraint gets you there.

        (define-macro (my-if a b c) `(std.if ,a ,b ,c))

        (define (boo)
          (let ((if list))      ; if is shadowed
            (my-if 'x 'y 'z)))  ; gives (std.if x y z)

        (define (boo2)
          (let ((std.if list))  ; error! cannot shadow module vars.
            (my-if 'x 'y 'z)))

I've posted this around a few times asking why this isn't already used in Lisps and never seem to get a convincing argument back. The only conclusion I can draw from this is that CL-ers are ashamed of the fact that multiple namespaces aren't actually necessary and Schemers are rightly ashamed of hygienic macros. Please convincingly prove me wrong!

(ps. This ofcourse would not be limited to the languages std module but would also apply to any exported module symbols.)

<comment><USER17> That's exactly what I meant in "In CL ... (b) using packages greatly reduces accidental shadowing." So I'm not sure what you are asking to be convinced. CL certainly does not prevent you from messing with package-private symbols, but usually a convention is enough to avoid disaster. I mean, I won't write (let ((your-package::private-symbol list)) (your-macro ...) ...) unless there's absolute need to do, such as emergency workaround of a bug in a third-party library.

On the other hand, one of the reasons Scheme avoids explicit module prefix is, I think, that it breaks abstraction. Suppose my-module defines my-macro and my-function. My-macro expands into a call to my-function. But I don't really want my module users to call my-function directly, so I only export my-macro and keep my-function private.

In your proposal, my-macro will expands into prefixed-symbol like this:

        (define-macro (my-macro arg)   `(my-module.my-function ,arg))

But... if we allow module-private function to be called with module prefix, we can't prevent ordinary code from calling my-function as well.

This is a language design choice. Some may not mind others to mess with module-private bindings; CLers certainly would not. But _if_ you want to hide module-private symbols, _and_ want to allow macros expand into them, how will you do that? One idea is to mark the output of macro expansion so that the compiler can distinguish whether the reference is from legitimate macro expansion or not... well, that's what hygienic macro is doing.

<comment><USER8> Thanks for the explanation. I hadn't thought of the my-macro problem because I tend to think of macros exactly as a clever copy paste mechanism, so would expect it to always use public variables, but I guess some people might have a problem with that in some cases.

In the first point I was asking to be convinced that you can't have hygiene solely through the use of a package / module system and without needing multiple namespaces.

Although your workaround argument (for allowing variables to be shadowed) is convincing, in that case the package system wouldn't really be providing any safety at all and only the convention would be helping. I guess we can sum it up as CLers really don't see a problem at all, and Schemers require macros to be completely abstract.

</comment></comment></comment></comment></comment></comment><comment><USER18> _First I figure out how to do what I need to do, then I translate that into the constructs of the language, then I try it and it doesn't work, and then I debug or figure it out :-)._

It's a wonderful thing to have a language that matches how you think, an extension of your mind analogous to how physical tools can be an extension of your body, with a heft, weight and balance that causes them to leap to hand, and guide you at times.

But my particular tasks at the moment involve so much more work at the drawing board (the _figuring_ stage) that having better tools doesn't actually help me - much as I would love them to.

It's very true that the tools you need depend on your personal way of thinking, the task, the stage of the task, and how many times you've done it.

</comment><comment><USER19> It's funny, just today I finished up some work merging a hygienic expander into the core of Guile. I've been writing defmacros for a few years now, and while things are not all lovely in the world of syntax-rules or syntax-case, it is so much more lovely to write a macro that you know catches the important cases, and that will compose well with other code, and /especially/ code from other modules.

That said, have fun with Arc ;-)</comment>


Debugging Go Code with LLDB - <AUTHOR> http://ribrdb.github.io/lldb/ <comment><USER2> Are there any advantages in using LLDB for Go debugging compared to Delve ([https://github.com/derekparker/delve](https://github.com/derekparker/delve)) ?

<comment><USER3> Seem like, at least for now, Delve is more feature complete.</comment></comment>


Lab-Grown Meat Is Coming, Whether You Like It or Not - <AUTHOR> https://www.wired.com/story/lab-grown-meat/ <comment><USER2> I'm really hopeful for this and things like beyond meat, anything that will reduce of the misery and suffering of the animals we eat.

<comment><USER3> amen!

<comment><USER4> [https://en.wikipedia.org/wiki/Negative_utilitarianism](https://en.wikipedia.org/wiki/Negative_utilitarianism)

</comment></comment></comment><comment><USER5> This may help prod along the technology of artificial blood, since the use of real blood is one of the the most expensive and least ethical parts of this technology, which is still primitive.

However, if they do solve that problem, the medical implications should be obvious.

</comment><comment><USER6> Great concept for the ever increasing food demand the United States has for beef and proteins. Not sure how it will stack up to totally transparent farm to fork proteins like Meat The Butchers offers. [https://latechnews.org/meat- the-butchers/](https://latechnews.org/meat-the-butchers/)

<comment><USER5> It would stack up well as a completely separate product for people who think raising animals for slaughter is immoral.

</comment></comment><comment><USER7> I suspect that if I decided to adopt a utilitarian vegetarian stance i'd refocus my palette on vegetarian protein sources. I'm struggling to believe that the entire energy budget including the primary inputs is better than animals. The ethical budget might be better, but the CO2 burden of industrial processes to get serum and nutrients in feels wrong, compared to say a bioreactor doing Fusarium quorn.

Mind you, I'd like to try some. I love pate. To any veggies out there, if you haven't tried it, try 'tartex'</comment>


Split Off from Tilde.club: The Million Dollar Give Page - <AUTHOR> http://milliondollargivepage.com/index.html

<comment><USER2> Great idea and worthy cause.</comment>


WTF-35: How the Joint Strike Fighter Got to Be Such a Mess - <AUTHOR> http://www.popularmechanics.com/military/a21957/wtf-35/ <comment><USER2> It seems like it's doing exactly what it was engineered to do, extract the maximum amount of dollars from the fed for defense contractors.</comment>


The Decline of Stack Overflow - <AUTHOR> https://hackernoon.com/the-decline-of-stack-overflow-7cb69faa575d <comment><USER3> So, years ago I "used" Stack Overflow a lot. Now, rarely, if by "use" you mean "ask and answer questions". But, I find answers to my questions on it every day, and it is still far superior to other sources.

I've noticed a pattern in my attitude towards SO: when I ready an article about it on Hacker News, I get mad. When I'm actually on it, I get detailed, multiple answers to my question, written before I ever got there.

My suspicion is that many people noticed that a high rank on Stack Overflow was one way to generate a reputation that might get you freelance work, and then discovered that too many other people were trying to do the same thing, so it became competitive and trollish...for them. But all I want to do is find an answer to my question, that is more clear (and with better examples) than the one in the software's actual documentation (which reads like it was written for a textbook or maybe an AI, rather than the kind of answer you actually get from asking somebody for help).

SO still works, better than ever, for finding out the answer to your question. It just doesn't work as a social network or an interview/job board/advertising site. But, you know, I don't think that's a problem for me, and really, there are other websites out there for that.

Just look for the answer to your question, it's probably there, and if it isn't then it likely is not available anywhere else on the internet either, including the software documentation. Used this way, the SO internal politics is a non-issue.

<comment><USER4> Do you have any evidence (anecdotal or empirical) that people actually hire based on StackOverflow rankings? I'm sure it's happened in a few cases, but it seems backwards to me. If somebody came into an interview talking about their high SO rank or Reddit karma, I'd wonder if they would actually be focused on their work.

To me, hobbies and online activity aren't really credentials unless you've really built a strong personal brand that directly relates to your job.

<comment><AUTHOR> Employers that don't look at GitHub and Stack Overflow activity when hiring are being silly. Unfortunately, it's the status quo. I mean, I actually wrote a _book_ published by _Apress_ that rarely gets brought up in interviews.

<comment><USER5> As a hiring manager, I rarely look at GitHub and never look at Stack Overflow or Kaggle, or whatever. All these tell me is that you don't have any hobbies outside of coding.

As for GitHub in particular, it let's me know if your project was something substantial, or merely an exercise for a class.

GitHub, your book, all that stuff takes time and effort to read, and quite frankly it isn't worth it. You're still going to need to go through the interview process so I can figure out if you're competent. Reading some 1000 line random GitHub repo is hard, and it's just not worth it.

</comment></comment></comment></comment><comment><USER6> Stack Overflow is declining, except it's still so well populated with moderators that the author of the article struggled to be able to answer a question quickly enough for it to matter, and he can find no alternatives to it that work as well.

I dont know anything about the internal politics of SO, and I dont think Ive ever asked (or answered) a question, but I use it every day.

It is absolutely the single best resource for developers on the internet, and thats amazing.

<comment><USER7> Yeah the guy has the mental consistency of pudding:

"The consequence thereof is that a lot of good questions not only get closed before anyone is able to respond, but that many of them end up vanishing into oblivion for eternity after merely 9 days."

This, merely a few paragraphs after claiming all questions are answered so quickly he has no opportunity to participate.

<comment><USER8> There's a dichotomy between "questions difficult enough that I need to ask them" and "questions simple enough I can answer them myself", though.

</comment></comment></comment><comment><AUTHOR> I wanted to share this article because, even as a user in the top 0.99%[1], I constantly get railroaded by "power trolls" \-- I was _extremely_ active on the site 6 years ago, but I barely answer/ask any questions anymore (maybe once or twice a year).

I have countless examples of some of my old questions or answers (with 100+ upvotes) being closed almost a decade later just so some new moderator can earn a few brownie points. After a while, it just gets old.

[1] [https://stackoverflow.com/users/243613/david- titarenco](https://stackoverflow.com/users/243613/david-titarenco)

</comment><comment><USER9> My biggest complain about SO is that with the expansion into other fields that questions that used to be welcome on SO (or get more visibility because of being on SO) are being shunted to SuperUser or ServerFault or other sites under the StackExchange umbrella. [1] I think the drive to keep SO purely about "programming" runs into issues similar to the "No True Scotsman" fallacy [2]. As a developer, sometimes I need answers about Amazon Web Services, Azure, Docker, or the Linux command line, as a consequence of programming, but those sorts of questions are, more modernly, marked off-topic for SO.

1: [https://stackexchange.com/sites](https://stackexchange.com/sites) 2: [https://en.wikipedia.org/wiki/No_true_Scotsman](https://en.wikipedia.org/wiki/No_true_Scotsman)

<comment><USER10> This is definitely something that could be solved with Stack Exchange moderation tools. Questions could be moved to the appropiate site, the same way you'd move issues between GitHub repositories.

<comment><USER11> >Questions could be moved to the appropiate site, the same way you'd move issues between GitHub repositories.

That is already a thing the sites do.

<comment><USER12> Not quite. It's impossible to move a question from Stack Overflow to Server Fault or Super User right now, you can only say that it might belong there.

<comment><USER11> Do you specifically mean "right now" ? As in it has been disabled at the current moment? Because there are plenty of questions that have been moved around from one site to another in the past.

[https://duckduckgo.com/?q=site%3Aserverfault.com+%22migrated...](https://duckduckgo.com/?q=site%3Aserverfault.com+%22migrated+from+stackoverflow.com%22)

Edit: Eg here's one from June this year: [https://serverfault.com/questions/971652/windows-how-to- kill...](https://serverfault.com/questions/971652/windows-how-to-kill-a- zombie-process-keeping-a-service-alive)

</comment></comment></comment></comment></comment><comment><USER13> [https://i.redd.it/per2eihv0jn31.png](https://i.redd.it/per2eihv0jn31.png)

</comment><comment><USER14> Half of the complaints quoted are about overzealous moderation, half are about low question quality. So it's unclear whether the article offers a coherent critique; if you're somewhere in the middle of the complaints then maybe you're doing it right.

I do think a coherent issue emerges here: much like wikipedia, stack overflow rewards and privileges those who do "meta" actions over and above those who make positive object-level contributions, when it should be the other way around. Answering a question should be more rewarding than closing it as a duplicate. Helping a newcomer should be more rewarding than driving them away.

<comment><USER15> Another problem that MANY moderated forums suffer from is too much focus on identity. If everytime you posted to SO or HN or /. or wkipedia or whatever, you were assigned a random id (consistent id for all responses to a specific story) rather than linking to your acct/post history/achievements, with a policy against posting with PII... the cliques might dissolve and the trolls do not benefit.

<comment><USER16> Not a judgement on the idea, but that's how 4chan works on some boards.

</comment></comment></comment><comment><USER17> The publish date on this article says October 2019, but it's judging by the tweets linking to it, it's originally from September 2016.

[https://twitter.com/search?q=https%3A%2F%2Fhackernoon.com%2F...](https://twitter.com/search?q=https%3A%2F%2Fhackernoon.com%2Fthe- decline-of-stack-overflow-7cb69faa575d)

<comment><USER18> Probably has to do with Hacker Noon migrating from Medium to their own platform. Some of the formatting and metadata may have gotten malformed in the move.

</comment></comment><comment><USER19> Some mods are ridiculous. The profile of one tag maintainer for example read thus (paraphrased) "X is now a mature technology and all the meaningful questions have been asked so I spend most of my time editing and deleting questions".

ALL my questions got downvoted. So I stopped asking questions under that tag.

<comment><USER20> CUDA? lol. I remember reading that for someone who answers mainly CUDA-related questions.

</comment></comment><comment><USER21> I occasionally ask and answer questions on StackOverflow, but I find the 'old system' of forums, mailing lists, and chat (now it's Slack sometimes instead of IRC) to be making a minor resurgence.

Recently when a question about Racket went unanswered I resorted to the Racket user mailing list and received exceptional advice. The #python IRC channel is unbeatable for help debugging small snippets (of the kind and size you'd normally put in a StackOverflow post), and the Elixir Forums are just fantastic - they go to great lengths as a community.

The support you'll get in those kinds of places is almost always better than the answers you'd receive on StackOverflow, but the downside is the inconvenience of decentralization. Take Racket for example - the user mailing list is by far the best resource for questions, but how would you know that? There is also an /r/racket subreddit, a [racket] StackOverflow tag, and a (pretty dead) official #racket IRC channel on Freenode. A user is as (if not more) likely to check those places before even thinking to hit the mailing list.

I myself had a StackOverflow post closed recently, but I don't think it's so dramatic. And some tags are certainly better than others. Asking a question on [react] will lead to a flood of poorly written answers from people seeking quick points, for example. [asm] on the other hand has Peter Cordes, who is like a code angel and veritable blessing to all of Hacker Kind.

</comment><comment><USER22> No matter how bad Stack Overflow gets, it is wildly better than what came before it. If you are not old enough to remember the horrors of trying to get any useful information out of the old world of random forums, or expertsexchange (most of these have gone the way of geocities), take a gander through some of the older MSDN forums - posts from the mid 2000s still tend to show up if you're searching for somewhat obscure IIS or ASP.NET related stuff.

<comment><USER23> 9 years ago I joined Superuser (it was in beta at the time IIRC) out of pure hatred for Experts Exchange and how every time I would put in a technical question in Google, their paywall site would come up.

I'm glad Stack Exchange beat Experts Exchange and will always contribute to it no matter what the politics. Because that's how much Experts Exchange pissed me off.

</comment></comment><comment><USER24> I never created an account there. I tried a couple times to add a comment or answer a question or ask a question and everything I wanted to do required more points than I had. I had no time or interest in building cred, just so I could help someone out or get help.

</comment><comment><USER25> The biggest pain point is all this interesting questions closed for bs reasons.

</comment><comment><USER26> Thank you for your interest in this topic. Because it has attracted aggressive moderation, posting an answer now requires 10,000,000 _reputation_ on this site (the _association bonus does not count_ ), a signed note from your physician, and special dispensation from the pope.

Would you like to answer one of these other unrelated and very stupid _unanswered questions_ instead?

</comment><comment><USER27> I've had okay experiences on StackOverflow, but only because

1\. I tend to answer questions thoroughly, in keeping with the spirit of StackOverflow being a common target from web searches

2\. I dare not _ask_ a question, ever

<comment><USER28> It is funny that for a site which spent the better part of the last two years to be more welcoming (which they IMO approached unsuccessfully), this is still the prevailing strategy. And it works, so I can't disagree. Now I don't think SO is that bad, if you really try to write a good question, at least in my experience, the reception is good. But I know I'm the odd one out among my dev friends and colleagues about not being afraid of posting questions to SO. Others, like you say, don't dare.

<comment><USER9> I have a question I want to ask, but haven't. This is mostly because I feel that asking it properly, describing what I've tried, linking to (not) duplicates and explaining why they're not relevant, and linking to the docs to try and explain why I don't understand them, etc., etc, is a great deal of work. In other words, explain why the top 20 Google and SO results and workarounds aren't relevant to the answer I'm looking for. Doing it "properly" would take about 30 minutes. ... and thus I haven't asked.

I went with a workaround that I'm unsatisfied with because it was easier than asking a good question.

<comment><USER28> I see what you mean, but when it comes to the rigor required to putting together a good question, this is no different than say filling in an issue template when reporting a bug or asking for support in a Github repository, right? Do you avoid that for the same reason? Not that I would blame you, I for one hate filling in overly defensive issue templates designed to discourage drive by shitty issue posters, but inadvertently alienating otherwise decent posters, such as (hopefully) myself.

</comment></comment></comment></comment><comment><USER29> Stack's problem, was and still is, it doesn't do a good job helping new users learn how to use the site.

When it first came out, the state of programming questions on the web was abysmal. The top answers were wrong, and required you to register to view. There were forum posts, and half the answers were basically "RTFM". In my early days, it was things like "How do you convert a string to an int in C++" asked on Usenet. This was asked so many times that Marshall Cline wrote an FAQ which became the defacto place to learn about C++.

Stack solved that problem, AND fixed the issue of low-quality questions and answers.

These days, I find the answer to my question on Stack such that I rarely have to ask anything. Occasionally I'll be bored and answer a question.

Stack is still an amazing resource, just that the community and platform has matured, and there are less opportunities for new users to ask and answer basic questions.

Perhaps head over to Meta and suggest a Minor League Stackoverflow that will allow new users to ask the same basic questions over an over again, earn a fraction of rep, and graduate to the real site.

</comment><comment><USER30> It might help if you were only allowed to downvote/edit/close on topics where you have proved yourself.

If have gained some reputation answering Java questions, maybe that does not make me qualified to decide if a C++ question is suitable for the site. A bit like the fact that reputation from SO does not carry to other StackExchange sites.

<comment><USER31> Well, if you have high rep on a tag, you have more power for questions with that tag.

</comment></comment><comment><USER32> Some of the author's issues seem to be a result of not scaling the voting thresholds based on the sites size. For example, 5 votes needs to close a question: When the site had 100 users, 5 votes is 5% of the site - <USER2> meaningful proportion. When the site has 1,000,000 users, 5 votes is 0.0005% - which may have no information content at all, it could just be random noise and the votes to close wouldn't be meaningful representation of the communities viewpoint.

</comment><comment><USER33> Is this sudden flurry of bearishness about SO somehow (indirectly) correlated to its recent adoption of mandatory gender pronouns as policy?

<comment><USER34> It's an incredibly poisonous topic because most of the country does not agree with the premise. This is probably flame bait, let me know if it is.

</comment></comment><comment><USER35> I've found the internet to be a pretty generous community.. of course with any community, there are bad actors that will attempt to commodify that generosity by subtly asking for more and more, all the while profiting on the generosity of humans as a whole. Stack overflow needs to start paying it's workers.

<comment><USER36> Philosophically I am with you. Though, I do think SO rewards its users in a tangential way. "Karma" is something you can advertise to prospective employers. Not just the score, but you can give examples of how you answer questions for people of different skill levels.

The work I've done on SO, which is frankly insignificant compared to many users, has enhanced my hire-ability as a lead or manager.

</comment></comment><comment><USER37> I can't stand when someone answers a question on SO by first admitting they know nothing about the subject then take a guess with an answer. Why bother answering if you don't know the subject?

</comment><comment><USER38> As someone who has asked questions there (or at least tried) a few times over the years, and who does constantly end up there when searching for answers I do think it's kind of heap.

The two major problems I see are a) people constantly claiming that questions are duplicates when they aren't, possibly because of poor reading comprehension, skimming, or some sort of Dunning-Kruger type effect, and b) people re-asking questions because they know an existing identical or almost identical question doesn't actually have a correct or useful answer and not really knowing what they're supposed to do about it, particularly as occasional or new SO users.

After those, is the inability of people to comment on answers until they're judged worthy which makes it so people feel forced to use answers as comments.

While I think the site continues to be useful it also seems to be something of an intractable morass.

</comment><comment><USER39> Joel Spolski knows about many of these problems and is actively trying to change the culture on stack overflow... needless to say, changing a groups culture is hard.

<comment><USER40> He doesn't need to change the culture. He needs to change the workings. The culture will adjust spontaneously to the workings.

If five downvotes are all it takes to cripple a question, and tens of thousands of people can cast them, then your site will work badly, no matter how successful your culture advocacy.

Downvoting has to cost something. Everything except providing useful answers should cost something.

</comment></comment><comment><USER41> Stack Overflow is the new Yahoo Answers

Lots of "can you google this for me" and copy/pasted content from other original sources without context or attribution

</comment><comment><USER42> The problem is that it's literred with low quality questions like "How do I add two chars?" which has been answered incessantly and could also be resolved with a google search.

Their standard for questions should someone mandate that you include your code, include what you've tried to do already, and include the full text of error messages received.

<comment><USER43> There's plenty of high quality questions that go unanswered for ever. So I don't think you should flatter your self with this analysis. At least great moderation can generally help with low quality questions.

</comment></comment><comment><USER44> I've asked and answered a handful of questions ad found the experience generally rewarding. Even if there's no answer to a question, it's comforting to know I'm not alone in my struggle. I do wish versions were included in certain cases, especially for services/frameworks with rapidly changing APIs.

</comment><comment><USER45> Small advice: if you are lucky enough to work with FOSS, just read the source code. Most of SO questions can be answered either by looking at concrete implementation details or by skimming through the code to get general concept. It gives more accurate answers more quickly than people on SO ever could, because

1) it doesn't require waiting for someone to read and answer your question 2) it doesn't require lossy conversion to natural language and back 3) "live" source code is probably more tested and more optimized than synthetic examples that someone came up with in 5 minutes and never ran

As soon as you develop the skill of finding relevant functions in large code bases, SO becomes mostly unnecessary. I never registered there, never asked a question, and don't browse it that often. I clone source code of my most commonly used tools locally just for quick grepping, and use full-text github search for more exotic staff.

P.S. Funny how the article keeps calling SO "totalitarian", while it is, in fact, a painfully precise model of democracy.

</comment><comment><USER46> Some parts of SO are far worse than others and I think the 'No True Scotsman' falacy mentioned by alttag is very apropos. The GIS stackoverflow is pretty much dead to due to heavy handed moderation.

</comment><comment><USER47> I think an actual problem with Stack Overflow is question quality. Oftentimes askers will include massive code samples, so it is hard to determine if their question is also your question.

</comment><comment><USER48> What decline? Are you talking about your own personal perception or like actual data about the site and the way its used?

Personal anecdote: StackOverflow continues to be one of, if not the, best sources for solving programming problems, and I know of literally 0 alternatives that even come close. Quora? Are you kidding me?

<comment><USER49> Yes, Quora pretty much exists to validate the strict moderation policies used by other sites. There are occasional good answers, but they are buried under a mountain of idiocy:

Questions that could have been answered with 5 minutes' worth of googling.

Completely opinion based questions: [https://www.quora.com/Who-sang-My-Way- better-Elvis-or-Sinatr...](https://www.quora.com/Who-sang-My-Way-better-Elvis- or-Sinatra)

Endless duplicates of stupid questions: [https://www.quora.com/search?q=lyrics+prank](https://www.quora.com/search?q=lyrics+prank)

People who serially produce horrible translations of answers, probably using software, presumably for clout chasing.

And long, detailed, stories that most likely were made up (That's the genre that made me give up reading notalwaysright.com: Too many stories of people who behave horribly until a 7'5" Marine shows up to save the day).</comment></comment>


Show HN: My weekend project, language immersion with Twitter - <AUTHOR> http://twitmersion.com/

<comment><USER2> What an awesome idea.

It took me more than a slit second to parse your intent with "I want to read about..." though. Maybe you should try an "I'm feeling lucky" option or perhaps a "Start with one of these" and list some recent trending topics.

<comment><AUTHOR> That's a great idea. I'll get that out tonight.

Thanks!

</comment></comment><comment><USER3> Really cool. I'll see if it improves my German.</comment>


Algorithms – hot in the art world - <AUTHOR> http://www.wsj.com/articles/whats-hot-in-the-art-world-algorithms-1432687554

<comment><USER2> Very interesting, but personally I would look for some kind of aesthetic beauty in an algorithm, not just a notorious history, before I would consider it "art".

Take this one for example: it is an implementation of the Quicksort algorithm in a programming language called Joy:

        DEFINE qsort ==
           [small]
           []
           [uncons [>] split]
           [enconcat]
           binrec.

For me, it has all the qualities of a programming haiku, poetry in code.</comment>


The Music of the Beatles (1968) - <AUTHOR> http://www.nybooks.com/articles/1968/01/18/the-music-of-the-beatles/ <comment><USER2> As valid and thought-provoking as this article is (was?) I find myself struck by two things: 1) Written in 1968? That was fifty years ago! How greatly our world has changed in that time in terms of culture, yet the Beatles music feels as fresh and immediate today as then. How innocent some songs are "I want to hold your hand" \- to a degree it would be inconceivable on today's vulgar radio.

2) The references to contemporary composers of the 30s and 40s were almost totally lost on me. The big bands, the jazz & blues men, and such were familiar. Shows just how few compositions (and more rarely, composers) stand the test of time.

For a delicious counterpoint, I suggest this: [https://www.reviewjournal.com/entertainment/music/sgt- pepper...](https://www.reviewjournal.com/entertainment/music/sgt-pepper- critic-stands-behind-67-review-despite-bad-speaker/) A reviewer who called Sgt Pepper (Rolling Stones #1 rated of 500 albums) "Busy, hip and cluttered", "a surprising shoddiness in composition" and "fraudulent."

There's no accounting for taste, it seems.

<comment><USER3> Also interesting he was not keen on "I am the Walrus".

He didn't seem to mention production either. Sgt Peppers was the birth of concept album recorded in stereo!

<comment><USER4> > Sgt Peppers was the birth of concept album recorded in stereo!

I believe that honor goes to Pet Sounds by the Beach Boys, though the public wasn't ready for it in 1966.

</comment></comment></comment><comment><USER4> A lovely piece of characteristic pretention from the NYRB (a journal I love BTW) which it still preserves today: "on one side were Sinatra, Horne, and Holiday, stylists of a high order, wonderfully performing material of little musical interest (when not derived from Gershwin or Porter) and dim literary content. On the other side were specialized concert singers—Frijsh, Fairbank, and Tangeman—who, though vocally uneven, helped to create a new style..."

The author could probably guess that Sinatra, Horne and Holiday would still be popular 50 years later while Frijsh, Fairbank, and Tangeman are essentially unknown.

But as others have written this piece has aged well, and that too I predict will be true of most contemporary NYRB articles.

</comment><comment><USER5> This piece aged fairly well.

Confession: despite being a rabid Beatles fan for 20 years, I only really listened to John Lennon's first solo album this week. I think I dismissed it partly because it has a silly name (Plastic Ono Band). It is fantastic.

The thing about The Beatles is that their catalogue underwrites our cultural obsession with 'albums', which is a ridiculous standard to impose on everything else. Much fairer to judge songwriters on their accumulation of worthy tracks spread over many years and projects, even if they never come together in one perfect album. Beatles solo careers are prime victims of this unfortunate standard.

<comment><USER6> > Beatles solo careers are prime victims of this unfortunate standard.

Quite true. Each Beatle's solo albums always had 2-3 good to great songs. This is pretty much what each would bring to a Beatles album too, but collectively, that would give them 6-10 really great tracks per album. They never could possibly deliver entire albums of greatness (or even "really good"ness) year after year individually.

Put another way, each Beatles album could be looked at as a 'best of' each member at that point in time. A "greatest hits" collection every 6 months or so, really. But no one person would be able to keep that pace (even they couldn't, eventually).

<comment><USER5> We could have had at least five more years of classic Beatles albums if they hadn't split up in 1970, just based of what songs they went on to write. And probably longer owing to the creative atmosphere and competitiveness within the group setting.</comment></comment></comment>


C++11 Continuations - High Performance JNI - code-dog http://nerds-central.blogspot.co.uk/2012/04/extreme-jni-performance.html

<comment><USER2> Closures as continuations in C++, maybe Stroustrup was right when he said it looks like a completely new language.

<comment><USER3> Indeed. All we need now is bind/callcc and we'd have the ultimate frankenlanguage!

In all seriousness, I'm really happy to see "lower-level" languages adopting these features. Makes so many problems that much easier to solve! I wonder about the implementation details, though - I wouldn't mind reading an analysis of closures in C++ vs. the VM languages.

<comment> code-dog The implementation is compiler dependant. Nevertheless, it would appear that the normal implementation is to create something which looks like a normal object with pointers back to the state it closes around. In theory it should be fast and light. The problem (as always with C++) is ensuring that the things to which the pointers point does not go away. Smart pointers help - <AUTHOR> they are slow...

<comment><USER4> I think the most common use case for blocks in C++ are functional-ish STL algorithms, unlike C blocks, which were built for async operations. In that use case, they absolutely shine - since they don't outlive their parent scope, no memory management is necessary, they can be inlined and ideally add no overhead. I think this easily outweighs the cases where you need slow shared pointers.</comment></comment></comment></comment>


GTA V is now the most profitable commercial entertainment product of all time - <AUTHOR> https://rockstarintel.com/2018/04/08/gta-v-is-now-the-most-profitable-commercial-entertainment-product-of-all-time/ <comment><USER2> Impressive... Any fact-checked this claim?</comment>


Moving from Tumblr to Self-Hosting our Blog - <AUTHOR> https://www.limelightapp.com/blog/moving-from-tumblr-to-self-hosting-our-blog

<comment><AUTHOR> I posted this on HN hoping it would generate some meaningful/educated discussion on the topic. I'm really curious what the collective wisdom is here on SEO topics.</comment>


String Theory Might Merge with Loop Quantum Gravity - <AUTHOR> http://www.wired.com/2016/01/string-theory-might-merge-with-the-other-theory-of-everything/ <comment><USER2> [Disclaimer up front: I'm a string theorist, so add grains of salt appropriately.]

First impression: this article's title (and some of the phrasing within the article) feels a little misleading to me. In the conversations I've seen or had with Loop Quantum Gravity people, I've almost never seen it presented as a "Theory of Everything". My impression has been that most LQG folks were proud that their work was _purely_ focused on quantum gravity, without the added mess of trying to solve everything in one fell swoop.

Second impression: In my experience, most string theorists (certainly not all) have had no particular animosity toward LQG. It's another theory, it's not the one we're personally excited about, but more power to them. Maybe the two will meet in the middle someday, maybe not. In all my years of spending time with string theorists, I only saw a few cases of outright animosity, and LQG talks were greeted with respect but skepticism by most. So I always feel weird about articles that frame this as some sort of knock-down fight. If there's finally some hint of common ground, all the better: more tools for everybody!

<comment><USER3> Armchair physicist here... just relying on an undergraduate physics degree, so please correct any naïve misconceptions, but:

Isn't resolving quantum theory with gravity the only remaining hurdle to a theory of everything? Other than unifying the standard model with general relativity, what else is left?

<comment><USER4> >Other than unifying the standard model with general relativity, what else is left?

i wonder where the dark matter&energy fits here :)

<comment><USER5> In the way string theory does it -- unify SM (or generic QFTs) and GR, that is -- there emerges several new things that could give answers to dark matter (for example weakly interacting SUSY particles) and dark energy/cosmological constant (possibly ("anti"-)branes and other sources of positive vacuum energy).

</comment></comment></comment></comment><comment><USER6> I don't think the DoJ will let the merger go through.</comment>


Would an intelligent computer have a "right to life"? - <AUTHOR> http://www.atarimagazines.com/creative/v9n8/149_Would_an_intelligent_comp.php <comment><USER2> I think it will take quite some time for humans to accept robots as entities with rights. There's a lot of fear surrounding the idea of intelligent machines, and most deeply religious people (who I know, family included) consider robots/A.I. to be (somewhat) evil. We mostly have Hollywood to thank for that.

When the majority of the human population understands technology and its ever- changing limits, the fear and stigma towards artificial intelligence comparable to our own will subside and only then will sentient robots be accepted.

It's human nature to fear the unknown. It's gotten us to where we are today. But I think there comes a point in our timeline where we overcome all fear with our ability to understand and predict. Ironically enough, this will probably require the advancement of (and potentially cooperation with) A.I.

</comment><comment><USER3> Rather than answer this right now, I would suggest that everyone go watch a season or two of Battlestar Galactica, which probes this question deeply. Cylons (the "skin job" kind) were severely subjected to a kind of anti-machine racism, even though they were basically indistinguishable from humans.

[http://www.amazon.com/gp/product/B002HR17ZG/ref=as_li_ss_tl?...](http://www.amazon.com/gp/product/B002HR17ZG/ref=as_li_ss_tl?ie=UTF8&tag=wukixcom-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=B002HR17ZG)

<comment><USER4> There will probably be at least 4 stages, with the condition that their intelligence will not be limited, and it will keep growing at least until it's equal to ours:

1) No rights. We can do whatever we want, just like they are our property and we can treat them as pure objects

2) Some rights. Think of it like animal rights, but we still own them

3) "Official" human-like rights. They are free, but there would be "racism" against them at first

4) The exact same rights as a human, officially and unofficially.

Then things might start to change again when they start becoming drastically more intelligent than us. Then it becomes much harder to predict. At first glance, we could say it will be bad for us, but I choose to believe the optimistic side that the smarter they will be the more tolerant they will be, too.

</comment></comment><comment><USER5> I think it's pretty likely that people will say that very complete, high-level AI (if it is ever invented) would have a right to life. Actually, there's a fantastic exploration of this from an AI's point of view in Life Artificial by David A. Eubanks:

<http://lifeartificial.com/>

I think a far more interesting question is: will a human ever be put to death for "killing" an artificial intelligence?

<comment><USER4> Even if the robots themselves won't have many rights, humans will try to get them more rights by electing the politicians that will do it. Why would humans do that? Because I believe we will become emotional towards them. We can easily become emotional towards our pets, so it should be even easier with a robot that is even smarter than that. Heck, some people are even somewhat emotional towards their iPhones.

The first step towards becoming more emotional will be naming them. I remember reading a couple of years ago about that cleaning robot Roomba, and how people started naming them, and when they were giving them away for repairing, they demanded the same robot back, not a replacement.

[http://www.msnbc.msn.com/id/21102202/ns/technology_and_scien...](http://www.msnbc.msn.com/id/21102202/ns/technology_and_science- tech_and_gadgets/t/roombas-fill-emotional-vacuum-owners/)

[http://gizmodo.com/5483750/peoples-emotional-attachment- to-r...](http://gizmodo.com/5483750/peoples-emotional-attachment-to-roombas- bodes-well-for-inevitable-sex-robot-industry)

<comment><USER6> I kinda agree with you but then, there's the uncanny valley. I think slavery ended by slaves fighting for their rights more than the 'masters' being the source behind the movement. I read many 'masters' were emotionally and even romantically involved but didn't fought so much as cope with the system.

<comment><USER4> You raise an interesting point with the slavery. I'm not sure if it's such a good analogy, but saying it is, Abraham Lincoln did try to free the slaves. There will be people, probably a lot of people, who will feel threatened by them, just like now there are people being afraid of robots taking their jobs (which is another interesting debate), but things will still change gradually, as robots become smart enough, "lovable" enough, and human-like enough, and some people will even want to marry them.

A few years ago I was reading sort of a joke, that by 2050, Massachusetts will be the first state that will allow human-to-robot marriages.

There's already this:

<http://www.youtube.com/watch?v=9q4qwLknKag>

</comment></comment></comment></comment><comment><USER7> You know the dating site OKCupid? It matches people by their answers to user- submitted questions.

One of about a dozen questions on there I've marked as "important to me" is one on AI rights. And interestingly enough, I'd say the site's suggestions have become markedly better since I did that; I think that question is a barometer for a lot of things about one's morals and interests.

</comment><comment><USER8> Awesome! We haven't solved that topic for humans, now comes the next load.

</comment><comment><USER9> Yes, definitely. Unless it bore a passing resemblance to an Atari game, in which case Atari and Apple would drag it outside and put a bullet in its head.

</comment><comment><AUTHOR> I'd like to add a second thought: what if the intelligence is undeniably sophisticated _and_ very non-human?

<comment><USER10> Isn't that the most likely result? There are a _lot_ of possible things we could call intelligent, and only a few of them could be "like us".

(Granted, anyone trying to _make_ an AI will aim towards something like us, but considering how we still haven't developed AI yet, I imagine the first successful one will be more of a lucky accidentally-on-purpose than anything strictly-designed; even with humans making it, the first success will be quite non-human.)

<comment><AUTHOR> Yes, but how would we recognize it for what it is?

</comment></comment></comment><comment><USER11> Isn't it obvious?

A truly intelligent and self-aware computer will be created by simply simulating a human brain on a powerful computer. I can't see how that mind would have any less rights than its biological counterparts.

So the answer is: Yes, it'll have the exact same rights, as we do. Morally, that is, because the law might take time to catch up.

<comment><USER12> If the simulation decides to copy itself, and allows the copy to run independently, are there now two autonomous people?

If the copy is allowed to advance one nanosecond and is then deleted, leaving the original running, has a murder been committed? What if the copy never runs at all? What if the original is deleted instead of the copy?

What if the copy receives identical input, and thus has identical state as the original, up to the point it is deleted? What if some aspects of the copy are "optimized" by reusing the results of the original? What if the entire copy just mirrors the state of the original, without recomputing anything? How can we say exactly how many copies actually exist?

What if the original simulation modifies the copy so that it wants to kill itself, which it does, once it starts running? What if it's modified to just not care whether it lives or dies? What if the copy is modified in various other ways? Are some kinds of modifications ethical, while others are not?

Point being, this course of AI development does not spare us having to completely rethink our models of ethics.

<comment><USER11> Very interesting questions, I'll be happy to try to answer them:

1) yes

2a) yes

2b) It never lived, it was a "frozen corpse", and since you can make copies at will, just having a copy doesn't constitute a new life until it's run.

2c) If the original has been deleted at the same state as the copy is started, i.e. there's no interruption from the subjective point of view of the copy, then it's just a transfer.

3a) Since there's zero information difference, I'd say it is OK.

3b) They're two separate people with equal rights.

3c,d) No computing = no thinking = no life to speak of.

4a,b) The same as if you kidnapped someone from the street and convinced them to kill themselves (say, by drugging them).

4c,d) Very interesting. On the one hand, in case of many modifications, you can't really foresee the consequences, so all should be considered unethical to prevent unintended suffering.

On the other hand - what is human parenting and bringing up if not shaping (or "modifying") a not-yet-sovereign mind. And we have no problem with that. But then, what if some psychotic parent brings up a kid with an implicit conviction that he should kill himself upon reaching adulthood (i.e. legal sovereignty). We'd put them for life in jail. But what if a parent has no bad intentions, but is just a very crappy parent and his kid grows up to be very miserable and in his 20's commits suicide because he can't deal with life. Well, we could pass moral judgment on the parent (if we somehow had the knowledge and thus certainty that it was a result of bad bringing up), but we couldn't really convict them in a court of law.

So yeah, we're having a serious split here between moral judgment and what's practical. (Much like pro- and anti- abortion.)

So I'd say playing with the brains of sentient beings is unethical in general. Practically though, there's no way to stop a "virtual" person from running all kinds of crazy stuff on their private machines. Unless you want to police the internals of all such brain-simulating computers, but then you're conducting mind-control of people, and that's totally unacceptable.

5) Agreed, but I think if we engage in it already, we can get to some very interesting conclusions that we might find useful even in today's world.

<comment><USER12> _2b) It never lived, it was a "frozen corpse", and since you can make copies at will, just having a copy doesn't constitute a new life until it's run._

How long does it have to run before it's alive? If the interval is short enough then there will be no change in state whatsoever. So in what way does the mind state have to change in order for it to have lived? What if that change is so simple that you can calculate it in your head? Have you created a new life just by thinking about what will happen next in the simulation? By writing it down?

 _3a) Since there's zero information difference, I'd say it is OK._

So you would have no objection to being killed if there was an identical copy of you in existence somewhere? Why does that matter? Why do you care more about this copy of you than you do about anybody else? Why should a stranger care that there is at least one copy of you?

 _4c,d) Very interesting. On the one hand, in case of many modifications, you can't really foresee the consequences, so all should be considered unethical to prevent unintended suffering._

But you are modifying your own mind all the time, by forming memories and learning skills. To some degree, you choose what you think and experience. Imagine that you have ultimate control over every facet of your mind. You live in a computer, so there is no "natural" mental life. You _must_ choose exactly how your mind will progress.

If you make a frozen copy of yourself, it hasn't diverged yet, so you can modify it however you like, since it's _you_.

And if new, unique people are to be created at all, someone will have to choose how their mind works. There is no longer a "natural" reproductive process to decide this. How can choices be made in the new person's interests when it is those very interests that are being chosen?

<comment><USER11> 2b) I would assume that the machine on which the AI is run is digital (i.e. discrete), so yeah, a single cycle (tick of the processor) could very well mean change. And since you've got to draw the line somewhere, I'd say that's enough.

3a) By killing me and starting an identical copy of me somewhere else, you're creating a discontinuity that infringes upon my identity (or same-ness) because there would be a very strong discontinuity in inputs simply because of the different location.

Moreover, a third party exercising control over any of my copies (and especially the one that is _running_ ) is in violation of my sovereignty. [That's also why a stranger should care about my copies.]

4c,d) That's precisely it: I am doing it! I can do with myself whatever I want. And yes, I do imagine having the control about every facet of my mind. I actually dream about it. :)

Now, when I manipulate a copy of me, that's a little different, because as I've stated earlier, a copy spun off to run independently is sovereign from its "original". That's why manipulating own copy should morally be considered equivalent to manipulating a third party, assuming that copy will be let run separately.

To your last point, I agree, that's the most delicate part - creating new beings. As far as copies are concerned, my immediate instinct is that only identical copies should be considered ethical, since any modifications can have unpredictable consequences. But I'm not sure this should be enforced by the AI community / data center, because I value personal sovereignty and habeas corpus virtualis above all else. ;)

I won't speak of creating completely new, original beings, because that topic deserves a ton of thought and a philosophical treatise of its own. But theoretically, you could try to mimic natural processes of child brain development. Of course, as you've pointed out, someone has to _choose_ the parameters of that developmental algorithm, just as a search engine is never really objective, because _people_ wrote it and made some choices in the process. But that last example also shows we can have some trust in such choices for practical reasons.

On a side note: I would highly recommend the book "Diaspora" by Greg Egan. The first chapter (Orphanogenesis) speaks about the development of a virtual mind and to me is among the best works of science fiction of all time.

</comment></comment></comment></comment></comment><comment><USER13> if the machine is capable of surviving on its own or in groups then it has right to live. doesn't matter how "intelligent" or "self aware" it is.

<comment><USER14> Does malaria have a right to live? Are we wrong to try to eradicate it?

<comment><USER13> well it is hard to tell without predicting the long term future. I mean if we eradicate all malaria something else may also happen as a consecuence that we were not aware now but is bad for us.

<comment><USER15> That's a rather different standard of right and wrong than you seem to support in your previous post.</comment></comment></comment></comment>