Problems With Open-Source Business Models - <AUTHOR> https://medium.com/@johnmark/open-source-business-models-considered-harmful-2e697256b1e3 <comment><USER2> I strongly disagree with the hypothesis raised in the article.

First , most open source companies these days are Ventured Back ( Elastic , CockroachDB, MongoDB etc..) meaning the core of the issue isn't "AWS" not paying license fees or people creating tech on top of Open Source , it's VCs who want their money back times ten.

Companies like MongoDB/Elastic have raised hundred of millions and yet are still not profitable.

Who's fault is it ? Did the MongoDB community ever asked the company to go that way ? Did MongoDB presented a roadmap to the community saying that they would have to be "profitable by Month X" or they would change their licence to make more money ?

Nobody has forced those founders/companies hands to make their products open source nor to raise that much capital.

If the industry is turning that way it is essentially because those businesses have used Open Source as a mean to reach the widest possible audience in order to increase growth and show great metrics to VCs and investors to raise absolutely obscene amount of cash.

Vue.js and Laravel are two very well maintain and extremely profitable open source project.

Those projects did not asked for 150M$ in fundraising and then realized : "Ooops we won't meet our 100% YoY Growth to satisfy VCs promises".

If some companies are switching their licensing , it's mostly because they overestimated their technology value and can't show to investors the numbers they promised.

This isn't due the "AWS Problem" or because of a "wrong business model" with FOSS.

<comment><USER3> VCs don't care about profits anymore. Their bet is on getting hockey stick growth using tricks good enough not to spook the uneducated retail investor (that often involves selling dollars for cents) and then dumping the hot potato into the public market.

It isn't long-term sustainable and it will result in a major correction one day, but that's the game currently.

<comment><USER4> That most of the VCs care is making attractive the company between their investment and their exit, it is completely true.

That is also why quite often they bring in (and sometimes replace founders with) "professional" executives before the IPO. Some of these people are not usually the best people to maximize the long term trajectory of the company but they bring more confidence to IPO investors.

If you want to have a successful relationship with them, you had better know their motives and timelines and make sure your company is one in the fund that looks is going to return enough for their game.

<comment><USER3> I find it funny how the ethical side of those games is always conveniently ignored...

<comment><USER5> Ethics reduce profit, thus they are ignored when there is no regulator or law enforcing them.

</comment></comment></comment></comment></comment><comment><USER6> This post raises a lot of good points about the futility of this new wave of split-restriction licenses, but misses fairly obvious one. Entrepreneurs think they want to have an "open source business model" because they have marketshare-scaling problem: they want their software distributed to a wide audience such that it gains usage and mindshare, but not wide enough where AWS is selling their work as a managed service at prices they couldn't by themselves.

And by and large, giving software away in a combination of gratis and libre maximizes the gains of mindshare and experience from both the curious amateur and the intrigued professional; the intellectual and societal implications may be different, but it gets used by the bulk of users in the same manner as shareware.

For many of these newer projects, the libre aspect isn't a heartfelt belief -- it's a sort of loss-leader strategy to enable access to a particular type of audience, and unlock a particular type of language for marketing. Handfuls of people may exercise their rights to fork and/or redistribute, but plenty of intrinsic barriers exist to keep these from being a competitive threat -- until a sufficiently equipped and dedicated party like AWS or Google Cloud, that is.

It's no surprise then, that some offerings are drifting more towards traditional shareware, where restrictions on use are the norm. In this space, we're seeing a conflict unfolding about the ideology and terminology used to describe such split offerings.

<comment><USER7> I have to disagree with your premise. Entrepeneurs who are starting these sorts of companies were often engineers at larger employers and were on teams where originally built these platforms that had become open source and relatively successful while they still worked there. Then they realized they were able to raise funding to start their own company around the software they previously built and then decided to do so. This applies for most of the companies mentioned in the article, where open source software later released by the new companies were the mistakes they had made.

<comment><USER6> I don't disagree with your post; but I think we're talking about different things, because the article talks about multiple kinds of companies. You're right that the companies that are now relicensing are ones that were born from a tool they built first, before monetization was visible goal. I am addressing companies in a more general sense, when entrepreneurs search for market opportunities. That's where the article notes that some see "open source" as a market strategy on its own.

And really, the dichotomy contributes to the situation.

The ones who built useful tool and years later realized it may be monetizable are hemmed in difficult choices. Do they reneg on open source and go proprietary from this point forward, effectively forking their own product and leaving the gratis, libre one -- the one most people will have exposure to -- stuck on an old version? Do they split into an open core and proprietary enhancements? Do they write a novel license and hope consumers will self- select into tl;dr harmless amateurs and very handsomely paying corporations? And if SaaS providers take their old version, and that fork gains ground?

Meanwhile, the ones who used 'open source' chiefly as a customer acquisition lead will face the same set of challenges. In the end, any artifacts published under an open source license are forever -- as long as the interest is there, a sufficiently dedicated party can take it, use it, enhance it, try to build a business around it, and the like. And any past version is a potential competitor, so your business models must be tolerant of that fact. They rarely are.

</comment></comment></comment><comment><USER8> Software, including open source, has a high fixed cost (lots of developer time and effort to get version 1.0 out the door) and a low marginal cost (once it's out there you can distribute via homebrew, for example, for no additional cost).

With most successful software products, you are paying for the exclusive value that the software provides, with open source that value isn't exclusive at all.. I can simply copy your version and try to integrate it myself. So how does open source software make money?

I think freemium and consulting might be good models. Let's say I'm open source organization that builds product X, this product is really popular, has a great developer ecosystem, solid roadmap, lots of folks are using it, etc. If it's good enough large corporations will try to use this product within their systems, why not audit how your customers are building on top of your systems and try to skate to where the puck is going and add an additional layer of features to support those enterprise use cases?

The challenge with open source comes w/ integration, at a large scale your open source product is going to be changed to fit the needs of the customer. As the organization behind an open source product you are in prime position to be the leading consultant of this product and assist with integration. To me, this is the best model to make money on open source, however, it requires a really strong product. Something with very high adoption, not just a plugin that handles a very specific use case.

</comment><comment><USER9> I've been working in Open Source for a long time now - decades. The problem I see is that so many rich and wealthy companies (and their billionaire owners) are the big beneficiaries of open source. Look at Spark, Hadoop, Linux, gnu tools and others - who uses them at a large scale? It is the wealthy companies who avoid paying salaries for the development of those tools. So I've become convinced that we should distinguish between small companies and large companies, and that small companies should get to use open source, while the big wealthy companies should be required to pay. It should be analogous to the free software given to education - with restrictions in license. (Of course, this won't happen. I'm just sharing my perspective.)

<comment><USER10> I don't understand how big companies using it is a problem. Is them using it hurting the projects somehow?

<comment><USER11> The idea is that big companies have money to spare and small companies don't. Therefore big companies should be paying for the benefits they are receiving to support the tools they rely on.

I'm not convinced personally, but I think that's the idea.

</comment></comment></comment><comment><USER12> To have a viable business, you need to figure out what sort of scarcity you're going to take advantage of:

[https://journal.dedasys.com/2007/02/03/in-thrall-to- scarcity...](https://journal.dedasys.com/2007/02/03/in-thrall-to-scarcity/)

If the software is open source, the software itself is not scarce, so it makes it a bit trickier to figure out.

<comment><USER13> I run a Discord bot on ~30,000 servers and my bot is completely open source. Clones have popped up, but nothing can beat the network effect of having my bot's messages popping up in chats and other people adding it to their servers.

</comment></comment><comment><USER14> From the I'm-going-to-take-millions-in-VC-money-and-build-a-billion-dollar- unicorn perspective Open-Source will never make sense. I propose that it is the investment model that is flawed. Open-Source has many benefits that have nothing to do with making investors rich.

</comment><comment><USER15> A talk worth watching about this is "Why I forked my own project and my own company ownCloud to Nextcloud" ([https://www.youtube.com/watch?v=UTKvLSnFL6I](https://www.youtube.com/watch?v=UTKvLSnFL6I)) about how a Open core approach failed in many ways and a great inspiration on how a Open source business model can succeed.

</comment><comment><USER16> >There is no Open Source Business Model.

Careful about universal claims. [https://vcvrack.com/](https://vcvrack.com/) is an open-source business model and it works great for me.

<comment><USER17> Why does this start downloading a file to my computer the moment I click on that link? That's pretty shady...

<comment><USER16> It definitely shouldn't. What is the filename? Do you have any compromised browser extensions or malware on your machine?

</comment></comment></comment><comment><USER18> > Once you begin with the premise of "I need an open source business model", > it leads you down a path of "I need to monetize my project" rather than "I > need to build a product that delivers value".

This is exactly how I feel as well. I am working on an open source to-do list + calendar ([https://getartemis.app](https://getartemis.app)), source at ([https://github.com/satvikpendem/Artemis](https://github.com/satvikpendem/Artemis)), and I try to subscribe to the same philosophy as Sentry[1] and Ghost[2], two popular products that are also open source but do not avoid generating revenue because of that.

One must always strive to compete, whether it be through business model, or more often, product. You can release a good proprietary product, or similarly, a bad open source product; the quality of being open source does not necessarily add nor detract from the quality of the product itself. Sure, one can `git clone` the product, but due to the other factors in the business, the "soft skills" such as marketing, branding, sales and general business development, no one can reliably copy the company still generate substantial revenue [3].

This is not to say, however, that if your company is infrastructure such as a database, that no one will copy and monetize that better than you; they may, even in general usage of the product, but what is missing is the lack of vertical integration within the product. A database is just a part used in the whole of a new product, not the whole in and of itself. That is why if I desire to make substantial revenue from an open sourced product, I would make it a fully integrated product, just as any proprietary one, and that is what I am to do with Artemis.

[1] - [https://github.com/getsentry/sentry](https://github.com/getsentry/sentry) [2] - [https://github.com/TryGhost/Ghost](https://github.com/TryGhost/Ghost) [3] - [https://ghost.org/about/](https://ghost.org/about/)

</comment><comment><USER19> > But many of these companies experience difficulties with respect to their > business models, as can be seen from a bevy of recent licensing schemes that > attempt to straddle the line between open source and proprietary.

It's not clear to me that Open Core has really failed. Case in point, Elastic just IPO'd for billions and has an open core. In their case they completely develop their project. Their community is something of a user community, and the contributor community is heavily Elastic managed.

Sure those in the contributor community might complain about how hard it is to contribute, but 99.9999% of the community is more in the 'user' end of the spectrum and appreciate the stability of having a single company's vision and backing

I'm not sure its in the spirit of open source, but that's not the question. The question is about effective business models.

(more fundamentally 'open core' can mean so many different models it may be becoming meaningless)

<comment><USER20> The problem with Elastic is that their security features are not in the open core and so people tend to skip on that by not even rolling their own IP whitelisting/authentication with a reverse proxy. This results in a huge information leak ending up in the news every few months and you having to explain to your sysadmins and IT that no, Elasticsearch is not insecure as a product, it's just how those people at SoLoMo PwnMeNow Inc. used it.

</comment></comment><comment><USER21> The best open source business model I've seen yet is SQLite's. That business model goes as follows:

      0. produce something very widely useful
      1. wait for it to become essential
      2. create a consortium and profit from the dependence bred by #0

Granted, bootstrapping that is really really difficult.

<comment><USER22> The problem with this model is that quite a few of these open source companies are funded by VCs. In this case, a "consortium" is just never going to cut it, revenue-wise.

The most profitable way appears to be to offer a cloud-hosted solution, and herein lies precisely the problem with AWS et al providing these services by taking the OSS software for free.

<comment><USER21> I don't see the problem.

First, SQLite's developers are not an open source company funded by VCs. I don't know what funding they had originally, but they've leveraged their success into a well-funded consortium. Does it matter if it could or could not work in combination with VC funding? No: what matters is that the developers got funding, end of story.

Second, I don't see why a company (regardless of funding source) couldn't spin off a consortium to fund further development of some open source created by that company.

Your goal seems to be "profit", which is a fine business goal. Open source is a fine business tool, but not so much a fine business _goal_. It can help you profit, but it can also hinder. Open source is a business tool to be applied on a case-by-case basis.

Open source is not easy to use as a core business value. That's because the most important core value to any public corporation is profit, and open source does not intrinsically lead to profit. Building a for-profit business around open source projects with open source as a core business value is undoubtedly difficult. Indeed, the example I gave is of a non-for-profit organization that funds development of one project.

Open source is a tool with following costs and benefits (and risks), some of which are:

      - cost: loss of confidentiality for "secret sauce"
        embodied in open source
      - cost: the cost of opening a code base and keeping it open
      - cost: dealing with a community

      - benefit: good will
      - benefit: mind share (this is the big one)
      - benefit: quality (hopefully) contributions from
                 the community
      - benefit: credit (especially for developers, which
                 functions as a form of compensation and
                 recruitment incentives)

If for some project open source is a tool whose costs exceed the benefits, then don't open source that project. It's that simple.

</comment></comment></comment><comment><USER23> If by "open source business model" you mean a model that entails getting paid for production of open source software, directly, there are several.

Paid open source development happens all the time. If you pay me, I will release open source to do such-and-such.

Despite decades of continuous doomsaying, new dual licensing companies pop up all the time. If you use my open source to build closed, pay me for an exception to my copyleft license's terms.

Those are just the simplest and best known. There are others, as well as all manner of hybrids, explored and unexplored. My latest work theorizing approaches---modelling business models, so to speak---is here: [https://blog.licensezero.com/2018/10/17/mapping- models.html](https://blog.licensezero.com/2018/10/17/mapping-models.html) My outline of "purebred" models begins here: [https://blog.licensezero.com/2018/10/17/mapping- models.html#...](https://blog.licensezero.com/2018/10/17/mapping- models.html#purebred-models-overview)

> Amazon and Google are not going to use your software, particularly your > management software, "out of the box", proprietary or no. They're going to > build their own management UX and UI, because they have their own particular > requirements to serve their needs, and they're going to build them using > existing platform APIs.

Licenses like MongoDB's SSPL leverage exactly this fact to address their business concerns. Mongo knows the big cloud providers are going to do their own custom service rigging, _and that they 'll keep it closed and proprietary_. SSPL gives permission to use Mongo to offer Mongo as a service, but requires open release of the service rigging.

I don't think companies writing and adopting these new licenses want to sell cloud providers proprietary licenses through their sales funnels. I think they'd rather stop cloud providers from offering their databases as services, full stop, or cut special deals with the cloud providers to resell their cores (Mongo) or popular add-ons (Redis, Elastic, ...).

> You're not going to resolve your own business mistakes by reverse- > engineering a licensing solution to what was essentially a business model > problem.

Business model and license do not inhabit separate domains. They always intertwine.

</comment><comment><USER24> I was pondering this very question as I just launched an open source reverse geocoding/geolocation name service API ( [https://3geonames.org/api](https://3geonames.org/api) ) whose business model consists upon selling a nicely packaged server AMI on AWS.

It works well both ways, in the sense that those who are capable coders may download and configure/install the software themselves.

Some others will just skip the hassle and buy the Marketplace version.

It is a win-win situation, insofar as someone does not take the time to repackage it and sell a competing version on the AWS Marketplace or some other sales channel.

I have not figured out that part yet. Any suggestions?

<comment><USER25> Poor documentation is a strategy, and if it's poor enough you can run your own university/camp. A large complicated codebase is another strategy.

Edit: Strangely enough, I don't know anyone who did this on purpose.

<comment><USER24> I don't do that on purpose, but I'm guilty on both counts.

</comment></comment></comment><comment><USER26> _Once you begin with the premise of "I need an open source business model", it leads you down a path of "I need to monetize my project" rather than "I need to build a product that delivers value"_

And where do the resources come from to hire people and build it?

</comment><comment><USER27> This is almost absolutely correct. Pity there isn't even a model to monetize the blog post, though. Monetization is a problem across the internet that seems to benefit the behemoths.

Perhaps we need a middle-ground between open source and proprietary? Open source often becomes a signal to find business partners with similar potential needs. Perhaps you could share source with only 'approved partners', so you can together make "some money" instead of ($0 xor $1billion)

<comment><USER28> There are many ways one could monetize blog posts. It is not obvious to me that most blog posts are worth any money at all. Let's take the best case scenario: How much are you willing to pay for the blogs that you read?

<comment><USER27> $0.20 per article. That's $300 CPM

<comment><USER28> That's a fair number. I am ashamed to admit, however, that I suspect I would second-guess too many blog entries and decide it wasn't worth the money. Weird. I am disappointed in myself. But I typically read at least dozens of blogs a day. It could really add up.

<comment><USER27> oops $200 cpm. Still, $1-2 per day is nothing to fret about for most ppl in the west

</comment></comment></comment></comment></comment><comment><USER29> While traditional cloud providers have certainly made it difficult for open source companies to monetize the cloud, it seems that the marriage between decentralized cloud protocols and open-source is opening up new opportunities for OSS monetization.

Decentralization takes the principles of open source and applies them to the very infrastructure on which software runs.

At Storj, for example, we have an Open Source Partner Program that attempts to solve the 'Amazon Problem' by enabling any open source project to generate revenue every time their end users store data in the cloud.

Storj tracks usage on the network and returns a significant portion of the revenue earned when data from an open source project is stored on the platform. Critically, this enables open source projects to derive sustainable revenue from usage, whether by commercial customers or non-paying open source users.

In my opinion, this can help drive and support the next wave of Open Source monetization models.

<comment><USER30> Hi @kevinAtStorj, I'm really interested with 'Amazon Problem', is any further reference with this company behavior?

As I'm aware (personal experience) not only Amazon taking profit from open source, and there are more company use open source for their core product, but not giving any feedback to open source community.

Thanks

<comment><USER29> Check out: [https://storj.io/blog/2018/08/enabling-economic- empowerment-...](https://storj.io/blog/2018/08/enabling-economic-empowerment- for-open-source-companies-via-the-storj-network/)

</comment></comment></comment><comment><USER4> What are some companies that had 80% or more of the code they wrote open- sourced that ended up with profits of more than 1/2 million a year?

Are premium add-on and support/consulting the model? Any platform company that made it?

</comment><comment><USER31> If you are building a prop software/service above open source, your business success depends on two factors: 1. the popularity of the open source and 2. the goodness of the prod software/service.

<comment><USER31> Comparatively, the business who only builds one software is much simpler.

But for open source software itself, the success is not measured by money,but popularity and impact. Linus is successful on Linux work. People and history would remember him. Who cares about VCs in making history?

</comment></comment><comment><USER4> I have been in some open source communities where making money was a recurring problem for the main contributors. But money was never the reason why people started contributing code to the project.

</comment><comment><USER32> The problem is that we must _mandate_ by law software to being open, easy to use, modify and deploy with simple means, that's to guarantee our freedom and democracy.

Than the business model instead of selling (cr)app and training and migration solutions, certifications, ... we can sell time&knowledge of programmers and operation.

Of course in this case many "administrative" & "marketers" will loose their job, but that's have a name: natural selection that it can be pushed a bit but sooner or later it will came by nature.

</comment><comment><USER33> I'm sick of these "considered harmful" articles

</comment><comment><USER34> Bread and butter is also 'open source', but not 'free'. There is no problem with 'open source' that is free for non-commercial usage and paid for commercial usage. Is this what GPL is about?

<comment><USER35> That's not what the GPL is about at all. No (OSI-approved) open source license has the distinction that you draw and one that did wouldn't be approved. (And it wouldn't be an open source license in the eyes of the Free Software Foundation either.)

<comment><USER34> Thank you! So charging for commercial usage is not considered 'open source' even when source is actually available?

<comment><USER35> You can absolutely charge for a product that is based on an open source project. A simple example is you charge for support of an open source project. However, you _cannot_ tell users that they can't use the (unsupported) open source bits for commercial purposes without paying you. Doing so would not be allowed under any approved open source license.

<comment><USER36> > However, you cannot tell users that they can't use the (unsupported) open > source bits for commercial purposes without paying you. Doing so would not > be allowed under any approved open source license.

OSI approved open source that is. And you can tell users anything you want actually. What you can't do with OSI approved open source license is choose a license not approved by OSI, doesn't matter what it says.

But OSI approved open source is not true descriptive open source. SQLite, for example, is universally recognized open source, but not OSI approved. You can go this road and use a descriptive term and ignore OSI and its corporate backing.

<comment><USER35> The SQLite distinction is because it's public domain which the OSI doesn't consider open source mostly because "public domain" can have a somewhat funny legal status. [https://opensource.org/node/878](https://opensource.org/node/878)

So, yes, you can have an open source license that isn't OSI approved. However, leaving aside a few edge cases like public domain, there's pretty wide acceptance of OSI licenses as the population of significant open source licenses.

[ADDED:In practice, the FSF's list of free software licenses and the OSI approved license list line up pretty closely--with the exception of PD+source. If someone wants to argue that the FSF's list is the one we should go by, I'm not really going to argue.]

I do think it is potentially appropriate to have thoughtful discussion over whether the current open source definition is too narrow but I also think it is useful to have a generally agreed-on definition.</comment></comment></comment></comment></comment></comment>


Aftershocks of Tonya Harding Saga: Best Thing to Happen to Figure Skating - <AUTHOR> https://www.freep.com/story/sports/columnists/jeff-seidel/2019/01/17/nancy-kerrigan-tonya-harding-detroit-2019-us-figure-skating-championships/2548995002/ <comment><AUTHOR> I'd imagine a lot of people on HN if you're under forty have never heard of this major sports scandal . Living in Michigan I well remember it. My first reaction was why did this have to happen in Detroit?

I wasn't even aware at the time that Michelle Kwan was even there and how very close she came to being a potential witness to the crime.

If you do remember at all it's that stupid movie trying to rewrite history from a few years back that had Tonya Harding as the victim.</comment>


Firefox 3D view helps spot XSS vulnerabilities - <AUTHOR> http://drewgoodwin.com/posts/2012/07/17/firefox-3d-view-helps-spot-xss-vulnerabilities/

<comment><USER2> No, the 3D view can help you spot when someone has already injected content into your page.

But not really, because most of the time, the "content" injected into your page is a script tag, which doesn't show up in the 3D view.

<comment><USER3> You're correct that the script tag will not show. However, we train our testers to use special characters, including < and >, in their test data. It happens that the environment in which we spotted the vulnerability was our QA environment.

<comment><USER2> The 3D view definitely makes it a bit more visible, but as someone who has spent a considerable amount of time testing XSS filters, it's not all that useful, since you generally know exactly where in the output your input will be, and also because looking at the raw output (not the constructed DOM tree) is a better way to identify XSS vulns.

It's a cool observation nonetheless, and props for catching XSS vulns in your QA environment, not production ;)

</comment></comment></comment><comment><USER4> Although this is correct, the real way to handle XSS vulnerbilities is to default deny and encode all data, like Django does. Require the developer to whitelist some parts.

Relying on injecting the data and then looking for it in a fancy 3d view is not a very robust way to do it.

<comment><USER5> Using Perl, I love how Text::Xslate does _exactly that_ by default, unless you "| mark_raw" the data that you _know_ needs instead to be interpreted as HTML. That's the way to do it!

</comment></comment><comment><USER6> What does it have to do with XSS vulnerabilities ?

<comment><USER7> They found out that they had unfiltered input, which is usually used for XSS.</comment></comment>


Don't build. Compose - <AUTHOR> https://medium.com/on-startups/305a31ff609

<comment><USER2> Software development is like movie making: [http://www.silicon- stories.com/movie-making-software-develop...](http://www.silicon- stories.com/movie-making-software-development.php)

Software architecture is like city planning: [http://www.windley.com/archives/2003/09/enterprise_arch_4.sh...](http://www.windley.com/archives/2003/09/enterprise_arch_4.shtml)

Software development is not like manufacturing: [http://www.codinghorror.com/blog/2006/10/is-software- develop...](http://www.codinghorror.com/blog/2006/10/is-software-development- like-manufacturing.html)

Software development is like manufacturing: [http://www.amazon.com/exec/obidos/ASIN/0321150783/codihorr-2...](http://www.amazon.com/exec/obidos/ASIN/0321150783/codihorr-20)

I believe that software development can be disciplined (development of missile control systems, payroll systems) or be agile (instagram, pinterest, facebook...). I think it all depends on what is considered to be the most valued resource for the organization and the software it is planning to build/compose/manufacture/make.

If we value system resources (real time constraints, compliance, SLA), we tend to be more like building systems. If we value end users experience in the final outcome, it tends be agile and take the notion of the movie/novel et al.

<comment><USER3> I agree there's a range, but if you have to abandon an analogy to describe another end of the range, then it's time to find a new analogy. I think one trap in the article's logic is thinking that all structural engineering is at the scale of bay-spanning bridges or skyscrapers. Structural engineering can range from structures that withstand earthquakes down to a shack to stash your garden tools--just because one end of the continuum requires more rigor than the other doesn't make them unrelated.

In software engineering there are still rigorous requirements in fields that run software on other planets or in medical systems, but there's software with looser requirements as well.

The best metaphor I've encountered for the wide variety of software engineering was a talk that covered the book "How Buildings Learn" <http://www.amazon.com/How-Buildings-Learn/dp/0140139966> \-- there are structures that favor adaptability, and others that favor rigor, but that doesn't mean that structural engineering doesn't happen on one end of the continuum compared to the other.

(To be fair, there are rigorous forms of writing, too, but I think restricting the analogy to only novels is too narrow to be effective.)

</comment></comment><comment> daniel-cussen A counterpoint: I write algorithms. I don't have customers that come to me saying, "I want an external sorting algorithm that is tuned to SSDs and APU's;" rather, I take an existing question or open problem, mull it over, arrive at another question, find a few answers along the way, and eventually I find a way to map the math to the metal. It's bottom up, usually, and generally, rather than composing something deeply personal, I eliminate touches I identify as personal until there's nothing of me left in the algorithm. So what I find illuminating about this post is not that most software is unlike building bridges, but that what I do is like building bridges. See also, <https://news.ycombinator.com/item?id=3575449>

</comment><comment><USER4> I question the notion that, just because the terms we use match up with another discipline (and this is likely not the only one), we are necessarily drawing a direct comparison with that other discipline by using those terms.

Programming/development/whatever is full of ridiculous terms. We co-opt them from anywhere we want, we make them up, we apply them in multiple outlandish ways. We don't really need a reason, because "we" in this case means "people who decide what to call things," and it's not as though we have a _Bureau of Naming for the Computational Applied Sciences_ running around forcing us to use good metaphors.

I can see it being fun to throw around theories about how we came to use the various terms that occur in our field, but I definitely don't see them as being strict (or even, in most cases, loose) direct references to the same terms' usage in other fields. Sometimes a term works for someone; sometimes the generic terms that work for different people line up in ways that make sense in more than one context.

This just reads too much into that.

<comment><USER5> I surely agree with you in the general, but I enjoy the line of the thinking that the OP is going down. The way I see it is that the language we use dictates how we think about problem solving. Even if we don't port the strict definition of a term one-to-one, we are still anchoring our approach to the mind-space that the other term occupies.

I read this post is as saying that we are no longer using the appropriate metaphors -- we are anchoring on counter-productive terms. These metaphors clearly were relevant at some point, but the field in which product developers play in has changed dramatically. If the game has changed, then it would seem that anchoring our language on new metaphors would make sense. If we use strong metaphors that more closely resemble the work we are doing, it could help us accelerate our problem solving.

As with all ideas, we will see if others agree with the OP. Personally, I think the newly proposed metaphor of composition is more descriptive than that of building.

</comment></comment><comment><USER6> Similarly, you could look at what an Artist does with a painting.

I think looking at coding as an art has a few fundamental problems however. It may be extremely appealing to aim for beautiful and elegant code, but it doesn't satisfy the goal of coding. Code has a need of being practical, of working. It is a balance between function and form. I think going to far in either direction will not pay off in most cases. Too much time is either wasted writing a piece seen as acceptable, or re-factoring the code at later stages.

<comment><USER7> As someone who works as a software engineer and paints for fun, I've used the analogy once or twice. But it only holds a little.

It holds in the sense that most of the time you start with an empty canvas. You use the tools you have at hand or the tools you wish to learn more about. You tend to plan ahead enough to prevent structural mistakes, to make sure your work comes out the way you envisioned it. It holds in the sense that only 'a fellow artist' can begin to understand the details of what you did and how that fits or doesn't fit in the work at large. It holds in the sense that you shouldn't ever start out with the details when performing either activity.

When you code something you do it to specification, which could be analogous to one being contracted for a particular piece of art.

The coding and art analogy doesn't hold when I consider the emotions that shape my art and drive me to create it that way, and the different result that it has on different people when they pay attention to it. It doesn't hold when I look at how one does flesh out detail. I myself start out with a general sense of the space that an entity will not be occupying. I describe that space in more and more detail until it approaches the space that it will be occupying. Then I can start placing marks that describe the details of that entity, in increasing detail. Programming has no analogy to that as far as I'm aware. It also rarely holds when you consider particular methods such as the 'test' part of test driven development.

This is probably something that only applies to me though, because everybody who programmes or paints has their own way of working.

</comment></comment><comment><USER8> The problem with the novel authorship metaphor is that it's too close to the literal act of authoring software to be useful. The terms involved in the metaphor (author, editor, publisher, composition, rewrites, etc) all have more specific literal meanings and are therefore confusing. A metaphor should be properly removed from its subject to inspire objectivitity.

</comment><comment><USER9> For those who haven't seen one of the "tire swing" cartoons mentioned in the article: <http://www.projectcartoon.com/create/> and some historical versions: <http://www.businessballs.com/treeswing.htm> :)

</comment><comment><USER10> I would agree that certain aspects of programming is quite similar to writing. Both require a certain command of the raw materials and good taste and judgement in how to assemble those materials into finished form. The analogy works because these are general statements that could apply to many kinds of creative endeavors. However, as soon as one gets so specific as to map the roles of "product guys" and "engineers" and "editors" and "authors", the analogy has long since left the room.

Though I don't think that this analogy fits well, I applaud the OP for it; this kind of analogical thinking is, after all, thinking about what he does and how it relates to other other aspects of life.

</comment><comment><USER11> Let's not confuse product with implementation.

Someone still needs to choose and arrange data-structures and algorithms to fit available resources. That is engineering. Just because the product is ill- defined and subjectively-judged does not lessen that.

You might want an _architect_ to be sensitive to aesthetic/political/whatever concerns, but you pay the _engineers_ to make sure the thing stays standing up. Does a building stand up because of story-arc and character development? No, it is because of understanding of physics and materials. The same holds essentially for getting computation done within time and space.

</comment><comment><USER12> I like this writing analogy a lot, because software is subjective. Doneness is subjective according to how its creators define it. User experience is subjective. Even overall quality depends on consensus opinion. Software is an art form.

</comment><comment><USER13> <http://en.wikipedia.org/wiki/Literate_programming>

</comment><comment><USER14> To someone that doesn't actually write code, sure, it may be just that easy to use terminology alone to draw the parallel.

<comment><USER15> Your comment seems unduly negative. But, after reading the article it really does seem like a forced analogy.

I suppose in some ways it's quite surprising that writing code is so much different than writing a novel. They are after all linear sequences of statements. But a novel is always trying to draw you toward the end, to a conclusion. The lasting ideas it places in your mind, it does using indirect means. A computer program on the other hand creates something dynamic and non- linear.

What surprised after reading the article is how little I felt writing code, even narrative driven games, is like writing a novel.

<comment><USER14> I think that's what struck me most about this, that it felt forced, and also written by someone that doesn't quite understand exactly what programming actually is and is not. Writing a novel? No. I'd say it's much more like building a bridge than writing a novel. We use small machines to build a bigger structure that serves a purpose. That's why I accused the author of not knowing much about programming (indeed, he is a self-described "product guy"). Otherwise he'd be much more likely to draw parallels with building bridges or some other kind of engineering than writing a novel or authoring some other literary product.</comment></comment></comment>


Nexus One display and subpixel pattern - <AUTHOR> http://blog.javia.org/nexus-one-display-and-subpixel-pattern/

<comment><USER2> I consumed this article with much enthusiasm. It was filled with information and still very easy to read.

My immediate thought though: I wonder how much battery-time you would gain by making the device monochrome (black/green) when you just intend to use it to, say, call or perhaps even read something.

Maybe a mode like this already exists in Android? I don't have a Nexus one, so... :) Heck, if it doesn't exist, then I guess this might be an app for the Android app-store. Send me a cookie if you write one!

<comment><USER3> I still want to see some real numbers on energy consumption between a 100% white and 100% black (but still powered) AMOLED. As the first two letters stand for active matrix, there's still a control voltage going through each pixel when it's at RGB000, so the difference may not be as great as it's often made out to be.

<comment><USER4> I put an ammeter on my Nexus One and measured 160 ma in black screen, and about 450 ma in white screen (with a "flashlight" application).

When on but screen powered down (normal "waiting for a call" mode) I measured 2 ma, average, with occasional blips much higher (to 400 ma, measured with a Fluke 87 in MIN/MAX mode).

When powered "off" the phone takes 60 uA - I attribute this to keeping an internal RTC active, possibly keeping some sort of pseudo-static RAM active - but those are just guesses.

The battery voltage measured 4.1

I did these current measurements by wedging in two thin pieces of copper tape with an insulator in between, placed between the + battery terminal and the phone's + input.

The phone indicated "4 bars" and Edge service (not 3G) when I made these measurements.

<comment><USER5> Kudos for actually making the effort to take the measurements. Thank you

</comment></comment></comment></comment><comment><USER6> I was actually happy with the display in my 2nd generation iPod touch. Note the past tense. I shouldn't have clicked on this link...

</comment><comment><USER7> That's actually pretty interesting. I wonder if it was hard to do a subpixel rendering system for fonts (like ClearType)? I don't have a Nexus One so maybe the pixel density is high enough that they don't need to render fonts like that.

<comment> Tuna-Fish Actually, it does make it hard. To do subpixel smoothing correctly, you need to be able to keep the total amount of color the same -- so if you want to move a part of the glyph right one, you'd light up a red from the next pixel right and turn off blue on the last pixel in your line on the left. This becomes both much harder and less useful when not all pixels have all colors.

But you are right on the other point -- at 800x480 on a 3.7 inch screen has a ppi of 250 -- or just normal font rendering looks as smooth as subpixel rendering on a computer screen, and I for one would be hard pressed to distinguish between subpixel rendering and normal when looking at text at size 10 or so on that screen -- just because I'd have such a hard time seeing it at all.

I wish we could get proper OLED computer screens.

<comment><USER8> From what I understand, the iPhone doesn't use sub-pixel font rendering either, because of the high pixel density (which is not even as high as the Nexus One).

Since the display rotates, normal desktop sub-pixel rendering algorithms won't work anyway.

</comment></comment></comment><comment><USER9> I have heard that OLED screens are extremely difficult to read in daylight/direct sunlight, can anyone confirm or deny this? I think this would be a problem in on a phone in some places.

<comment><USER10> I have, to date, had zero trouble using my N1 phone anywhere yet. Two key points:

1) It's winter in New York City. Even outside there's not a lot of really bright sunlight.

2) The N1 has a feature (which I like) whereby, with a light sensor, it adjusts the brightness of the screen to compensate for ambient light automatically. Or: readable in light, not blinding at night.

</comment></comment><comment><USER11> Interestingly, many camera sensors also have a dithered sensor pattern: <http://en.wikipedia.org/wiki/Bayer_filter> \- but a different arrangement of colors.

<comment><USER12> Yah. That's almost exactly the same pattern, just with the red and blue swapped.

This phone should be great for displaying raw images, since you can show the subpixels with a one to one relationship.

</comment></comment><comment><USER13> Very interesting! This may explain the un-Googley-ness of the Android interface. I was racking my brain to figure out why the interface didn't have a blue, Gmail mobile /web app look and feel.

<comment><USER3> It's an interesting connection to make, but I don't think OLED subpixel operating life estimates played a part in the UI design. Remember, wherever there's a white pixel, there's a blue subpixel going at full strength, and there's no shortage of white in Android.

</comment></comment><comment><USER14> 800 horizontal pixels, but half of them can contain no red and the other half can contain no blue. Someone should cue the lawyers from the dithered LCD lawsuits. They will have a field day with this.

<comment><USER12> That's not accurate. The human eye uses primarily green to detect resolution. Red and blue are used for color.

I wish I could find it, but there was an online example, where someone took a picture, divided it into the three channels, then pixelated (mosaic) one channel at a time and recombined it.

When he did green you saw it right away. With red it took some pixelation before you could see it. And with blue it took a LOT of pixelation before you noticed anything.

<comment><USER15> "Your eyes suck at blue": <http://nfggames.com/games/ntsc/visual.shtm>

<comment><USER12> Thank you! I've been looking for that page for so long.</comment></comment></comment></comment>


Silk Road trial closes - <AUTHOR> http://arstechnica.com/tech-policy/2015/02/silk-road-trial-closes-its-a-hacker-its-a-virus-its-ludicrous/ <comment><AUTHOR> Poison oak! I can't get over the fact that the prosecution had evidence of the DPR, _in character_ , complaining about poison oak at the same time as Ulbricht complained to his ex-girlfriend about poison oak.

<comment><USER2> If the evidence was manufactured, say by some hacker with access to Ulbricht's accounts, it _would_ contain little tidbits like that one. Not that I think it was. But there are some meaty issues here about the reliability of evidence in the digital age, and I'm disappointed that this is such a lousy case for airing them out.

<comment><USER3> Please forgive an ignorant question from someone who has not been following this very closely: is there any substantial evidence that the prosecution's evidence _was_ manufactured (either by the prosecution itself, or a third party seeking to frame Ulbricht)?

It's entirely possible for virtually any evidence to be manufactured (granted, it's often easier with digital evidence), but in most cases we take it at face value simply because there is no reason to think it's been faked.

[Edited to clarify that I'm not just asking about evidence allegedly manufactured by the prosecution.]

<comment><USER4> There's no indication than any of the substantive evidence (i.e. the evidence that tends to indicate Ulbricht is guilty) was manufactured. There is a strong argument to be made that the government's testimony as to how it came to obtain that evidence is fraudulent or at the very least incomplete* (which is not relevant to guilt, but would have been relevant to a suppression motion under the fourth amendment except the defense inexplicably procedurally defaulted on that question+.)

* See [http://blog.erratasec.com/2014/10/reading-silk-road-configur...](http://blog.erratasec.com/2014/10/reading-silk-road-configuration.html) and [http://krebsonsecurity.com/2014/10/silk-road-lawyers-poke-ho...](http://krebsonsecurity.com/2014/10/silk-road-lawyers-poke-holes-in-fbis-story/)

\+ [http://ia700603.us.archive.org/21/items/gov.uscourts.nysd.42...](http://ia700603.us.archive.org/21/items/gov.uscourts.nysd.422824/gov.uscourts.nysd.422824.89.0.pdf) (starting on page 6)

<comment><AUTHOR> The issue here is that the FBI discovered the SR server in Iceland and didn't credibly reveal how they did it, and the rest of the evidence is traceable back to the server imaging that Iceland did.

Against that is the assertion that they had Ulbricht's name prior to the server seizure, and that virtually all of the most important evidence in the case came from the laptop, which was searched with a warrant and incident to his lawful arrest. There's also the notion of inevitable discovery to contend with.

<comment><USER5> A IRS special agent apparently found Ross "first" using Google:

[http://arstechnica.com/tech-policy/2015/01/the-incredibly- si...](http://arstechnica.com/tech-policy/2015/01/the-incredibly-simple-story- of-how-the-govt-googled-ross-ulbricht/)

</comment></comment></comment></comment></comment></comment><comment><USER6> >Ulbricht's computer may have been infiltrated—perhaps via the BitTorrent client that was downloading the previous day's Colbert Report when he was arrested.

Is he saying that he was downloading torrent files to the same computer that he was using to run SR? This guy had enough money to use a seedbox, even if he wasn't running the SR why wouldn't he use one? But specially, if he were running the SR, why would he start opening ports like crazy?

Are there any evidence showing that Ulbricht was careful and paranoid about his online activity. Because it is also possible that he thought that he was invincible and started disregarding basic things like those.

<comment><USER7> I think anyone who has the competency to avoid doing bad operational stuff like this probably realizes the horrifying possible consequences of starting something like silk road or even a bitcoin exchange and doesn't start one.

<comment><USER8> Well said.

Smart people tend to avoid getting into a "I have to be lucky every day, they just have to get lucky once" situation -- especially when it involves their life or freedom.

</comment></comment></comment><comment><USER9> What not to do in a Bitcoin-related drug and money-laundering trial: annoy the judge. [http://ia600603.us.archive.org/21/items/gov.uscourts.nysd.42...](http://ia600603.us.archive.org/21/items/gov.uscourts.nysd.422824/gov.uscourts.nysd.422824.173.0.pdf)

<comment><USER10> Apparently, the prosecution was not less annoying. From this[1] Forbes report:

> She was annoyed. The defense was annoyed. The press gallery was annoyed. By > the time the lunch break rolled around, Judge Forrest struggled to hold back > her irritation. "I'm not suggesting the government doesn't have a right to > object," she said. But, "I think that there are objections which are > objections that you really need to make, and then there are objections where > there certainly may be a legal basis for it, but the better part of valor is > to stand down."

> But the rapid-fire objections continued throughout the day.

[1] [http://www.forbes.com/sites/sarahjeong/2015/02/03/the- silk-r...](http://www.forbes.com/sites/sarahjeong/2015/02/03/the-silk-road- trial-that-wasnt/)

<comment><USER11> Re the Forbes article, I have never completely understood how hearsay rules work. The sworn affidavit from Der-Yeghiayan can be entered as evidence but then certain parts of it can be labeled as hearsay and then the jury the can be told to disregard those specific parts as well as his testimony relating to the contents of the affidavit? How does this not bring in to question the accuracy and integrity of the entire affidavit?

<comment><USER12> Roughly, "hearsay" means that the person testifying to a fact was not a witness to it themselves or does not have direct knowledge over it. So it's entirely possible that some parts of the affidavit are hearsay while others are acceptable testimony.

</comment></comment></comment></comment><comment><USER13> "The Internet permits—and thrives, to a certain extent—on deception and misdirection". That's exactly why DPR and Ulbricht shouldn't be compared the way the defense does. "Would DPR do that?" is a pathetic argument in this context.

</comment><comment><USER14> Assuming Ulbricht is found guilty and then appeals, will he get a second chance to challenge the FBI's account of how they found the server in the first place? Nicholas Weaver [1] seems to think they could have admitted to owning the servers (and thus having standing to contest the FBI's story about how they found it) without harming their case:

> Such a declaration is not an admission of guilt: it can only be used by the > prosecution if the defendant testifies.

But I don't know if that door will be closed to them on appeal...

[1] [http://arstechnica.com/tech-policy/2015/02/op-ed-ross- ulbric...](http://arstechnica.com/tech-policy/2015/02/op-ed-ross-ulbricht-got- a-fair-trial-but-not-a-fair-investigation/)

</comment><comment><USER15> Best part of that; they arrested him while his encrypted computer was on, with him sitting there logged in as DPR. Why do computer criminals not have a big red button to smash that self destructs their computer; or at the very least shuts it off instantaneously?

<comment><USER16> The FBI agents grabbed his hands and pulled them away from the computer before he knew what was happening. Even with a BRB he wouldn't have been able to secure his computer.

<comment><USER15> Token in your pocket that auto locks the computer the instant you are pulled away from it? Google "proximity lock"; they cost like $20.</comment></comment></comment>


Write Code to Rewrite Your Code: jscodeshift - <AUTHOR> http://www.datasciencecentral.com/profiles/blogs/write-code-to-rewrite-your-code-jscodeshift?utm_content=buffer598df&utm_medium=social&utm_source=linkedin.com&utm_campaign=buffer <comment><USER2> You can similarly search/replace JS code, but using pattern matching and CSS style selectors instead of writing code, with Grasp. It's usable from the command line like sed.

[http://www.graspjs.com/](http://www.graspjs.com/)

For instance changing all calls to "calc" from taking two arguments to taking one object literal instead (eg. `calc(1, 2)` to `calc({from: 1, to: 2})`, is as easy as:

        $ grasp -r -e 'calc($a, $b)' -R 'calc({from: {{a}}, to: {{b}}})' file.js

(Where the two arguments to "calc" could be any arbitrary nested expressions, which could not be safely handled by a regular expression)

<comment><USER3> (Disclaimer: I'm maintaining jscodeshift)

Yes, this is great! I'd love to be able to integrate graspjs with jscodeshift somehow. Ideally there would be multiple possible ways to _find_ the nodes you want to change (pattern matching, tree traversal, etc), and multiple ways to specify how to _replace_ them (e.g. a template like in your example vs a function where you can do anything you want).

Simple transforms should definitely be possible with little "code" like in your example and we certainly have to improve jscodeshift in this regard.

</comment></comment><comment><USER4> This seems similar to Cocinelle [1], which can perform complex refactorings and bug finding for C code (e.g. the Linux kernel).

[1] [http://coccinelle.lip6.fr/sp.php](http://coccinelle.lip6.fr/sp.php)

</comment><comment><USER5> Original article here [https://www.toptal.com/javascript/write-code-to- rewrite-your...](https://www.toptal.com/javascript/write-code-to-rewrite-your- code) (linked at the bottom) has proper code snippets, but a super annoying fullpage interstitial.

</comment><comment><USER6> Is anyone else seeing the code samples getting cut off? Seems to happen to me in Chrome on both OS X and Ubuntu. The page shows:

        export const sum = (a, b) => { re

And when I copy and paste the line the rest of it is copied to the clipboard.

<comment><USER7> I think everybody is; it looks like whatever CMS they're using eats newlines out of content pasted into <pre>s, because there aren't any in the source.

Maybe it's a cavil, but I'm not overjoyed at the thought of doing global search and destroy on my codebases with a tool I heard about on a website that messes up something that basic.

On the other hand, apparently jscodeshift itself comes from Facebook [1], and they tend to do good work (on a technical level, at least); perhaps it'd be worthwhile to change the HN link to point to that repo, not least because the code samples aren't munged to unintelligibility there.

[1] [https://github.com/facebook/jscodeshift](https://github.com/facebook/jscodeshift)

<comment><USER8> > I'm not overjoyed at the thought of doing global search and destroy on my > codebases with a tool I heard about on a website that messes up something > that basic.

When I am writing jscodeshift scripts, it's a constant cycle of git checkout -> run codemod -> git checkout.

Nobody is saying you need to commit the changes: review them by hand if you will. I've never had a problem with jscodeshift itself. Publicly available transform scripts though are quite hit or miss.

<comment><USER9> Could you share links to buggy ones? I'm interested in seeing how they go wrong.

<comment><USER8> I can't name any specific situations, but it will generally come down to the fact that your project is different from whatever the script writer was anticipating.

For instance: import statements vs. require expressions - these need to be handled with different AST matchers. Import statements themselves have 3 different varieties of specifiers (default, named, "all") which must be accounted for. A require expression may or may not involve destructuring, it may or may not use const or let over var (each of which need to be handled explicitly, etc.)

As far as failure mode: scripts generally just won't match or work, or they might replace all of your consts with vars, etc - they can be very codebase specific depending on the complexity of the script.

</comment></comment></comment></comment></comment><comment><USER10> We use jscodeshift [0] in the AVA project to enable our users to run one command to migrate breaking changes in their tests automatically. This really is the future of breaking changes!

[0]: [https://github.com/avajs/ava-codemods](https://github.com/avajs/ava- codemods)

</comment><comment><USER11> Jscodeshift is remarkably easy to write scripts for. It is why I'm very comfortable using all kinds of experimental babel plugins: If somehow the proposed standard changes or just never makes it and I want the code to be es6 compliant (or, say, move it over to a different compiler), then I know that for most cases I can easily write a codemod that makes the changes in our codebase.

Nice examples are stuff like decorators or the :: bind operator.

</comment><comment><USER12> That this sort of thing is necessary is crazy. I couldn't live without my automatic refactoring tools in other languages.

<comment><USER13> In other languages you don't _need_ refactoring tools so much. I use the Idea refactoring a lot, but really I can change a method signature, or rip out some code into another method and watch it fail to compile and fix the problems one by one.

<comment><USER12> Well, yeah, but the fact that that is also possible lets you have those automatic refactoring tools because it's easy to understand what's going on with the code in static analyzers and compilers, etc.

</comment></comment></comment><comment><USER14> How do you avoid the problems of reformatting the output code? For example, I want long lines broken up in a consistent manner. Doing this correctly in a language like JavaScript is hard. Also, how can I configure the tool to follow a formatting style other than the default?

<comment><USER3> jscodeshift is primarily a wrapper around recast. Recast takes care of all the printing. It's smart enough to reuse the original source code for AST nodes that haven't been changed.

As for formatting, there are some options to influence the pretty printer, but not a lot [1]. It will infer things like indentation from the existing source code. I'm not sure right now how it handles long lines.

Whenever we run into issues with the printer, we just create a PR to fix it. Getting automatic code formatting right is apparently quite hard. There are dedicated tools for this, such as [https://github.com/millermedeiros/esformatter](https://github.com/millermedeiros/esformatter) .

[1]: [https://github.com/benjamn/recast/blob/master/lib/options.js](https://github.com/benjamn/recast/blob/master/lib/options.js)

</comment></comment><comment><USER15> Nice, now I can use that to write the code that will rewrite the code of the software I'm developing that will help others code better, so they can launch startups that assist developers in coding new development tools for startups.

<comment><USER15> Yes, I didn't read this thing, they're using a very bad CMS. I bet it's Wordpress.

<comment><USER15> I was wrong, it is not.

</comment></comment></comment><comment><USER16> Does anyone know of something similar for TypeScript?</comment>


The Underdog Effect: When Low Expectations Increase Performance - <AUTHOR> https://journals.aom.org/doi/10.5465/amj.2017.0181 <comment><USER2> Depends on the character and situation. In most cases it is probably cripplingly bad. The relations to the judges is probably what makes or breaks the approach.

But there are advantages of people thinking you stupid or incompetent that are exploitable.</comment>


Ask PG: What are the perks of a high karma score? - <AUTHOR>

I know from a few friends that there are simple perks to having a high karma score (e.g. down votes, avg submission statistics).  I was wondering what are all the perks and at what levels do you reach them.  I did a little search on searchyc.com to figure this out but couldn't find anything.  So I don't feel too bad asking. Thanks. <comment><USER2> Meh, don't get too hung up on the supposed perks. I have sufficiently high karma to downvote but have been banned from doing so, presumably because I downvoted one of pg's friends or something like that. It's a rigged game, so don't waste any brainpower trying to play it. Just read the articles if you like, comment if you like, and think no more about it.

<comment><USER3> > I have sufficiently high karma to downvote ...

Actually, you don't. The threshold has recently been upped to 500.

<comment><USER4> 500? here's me hoping it's something like 20 :(</comment></comment></comment>