The steam has gone out of globalisation - <AUTHOR> https://www.economist.com/leaders/2019/01/24/the-steam-has-gone-out-of-globalisation <comment><USER2> Globalization in the manner it has happened has lately struck me as akin to drinking from a firehose. While it's led to an increased standard of living (in the form of wages in the third world and lowered prices in the first), the speed at which it happened caused displacement far faster than the cultures could adapt.

If your industry disappears over 30 years, it's easy enough to stop hiring new people and draw down as the old retire. If it dies in five years, the dislocation is immense and it becomes nearly impossible to cope. The same problem of rapid change plays itself out in the developing world in different forms; rapid urbanization, pollution, dislocation from traditional ways of life.

If, as the article suggests, globalization has indeed slowed, perhaps the breathing space that slowdown provides will in the long run be a good thing. Deal with the problems we've created before doubling down on the instigating issue.

<comment><USER3> I have often thought that globalization has often been a means of sending 1st World volumes of manufacturing into places with 3rd World environmental, health, and safety laws. It took us time to build up our EHS standards to their current level, and our volume of manufacturing took time to build up also. If all demand were satisfied in countries with equivalent levels of EHS to the target market, the amount of pollution, etc. would plummet quite a bit just from that alone.

</comment></comment><comment><USER4> Good. Globalization was always about enriching the people at the top, using the excuse of benefiting the poorest.

But that thin veneer no longer hides the truth: globalization destroys both developing economies and the middle class of developed economies.

<comment><USER5> Really?

During globalization we've had the fastest and greatest reduction of poverty on earth. Seems like a benefit to the poorest to me.

<comment><USER6> > During globalization we've had the fastest and greatest reduction of poverty > on earth.

Really?

I've seen this claimed but I've never seen it substantiated.

<comment><USER7> [https://www.politifact.com/global- news/statements/2016/mar/2...](https://www.politifact.com/global- news/statements/2016/mar/23/gayle-smith/did-we-really-reduce-extreme-poverty- half-30-years/) . You can debate how to define "poverty", and I'd certainly agree that somebody making $1.91/day isn't terribly well off, but real income has been consistently rising especially in the last 30 years.

<comment><USER8> Except a number of researchers and academics dispute that fact. Many say that it's a PR campaign for the World Bank and that it doesn't tell the whole story. If you raise the poverty line just a little higher to $5 then abject poverty has been increasing.

[https://twitter.com/jasonhickel/status/974966050625413122](https://twitter.com/jasonhickel/status/974966050625413122)

[https://www.jasonhickel.org/blog/2018/8/30/the-moral- egregio...](https://www.jasonhickel.org/blog/2018/8/30/the-moral- egregiousness-of-poverty-is-worse-than-ever-before-in-history)

<comment><USER9> Your own link says that even that has fallen from 71.8% in 1990 to 58.1% in 2013.

</comment></comment></comment></comment></comment></comment><comment><USER3> Or, just maybe, there is an optimum amount of globalization, somewhere in between total isolationism and complete outsourcing, and the world overshot, so we're backing it up, just a bit.

<comment><USER10> Sounds reasonable.

What's the difference between global trade and domestic trade though?

Seems to me that differing standards are the problem, rather than globalisation per se?

<comment><USER3> Certainly it seems plausible that trade between the U.S.A. and Mexico might be problematic in a way that trade between the U.S.A. and Canada is not. But there is another issue with international trade.

What restrains the urge of the top 100 corporate elite to pay their labor as little as possible, and get laws (e.g. anti-union, no minimum wage, etc.) passed accordingly, is that each of those 100 wants the other 99 to pay THEIR employees well, because the employees of the other 99 are his customers. He doesn't want to pay his own employees well, but he will collude with the other 98 to make sure each of the others pays their employees well enough they can buy his car/suit/food/appliance/etc.

But what if he can have the employees in another country, pay them pennies, and have his customers in this country? Or, if he's on the poor country side of things, what if he can just find rich customers in another country? Now he has no reason to worry about insuring that his peers' employees are paid well. They're no longer his customers.

But wait, how will there still be wealthy customers in his country? There won't. But, no problem, we can loan them the money to buy my stuff.

It works until it doesn't. But if your employees and your customers are drawn from the same pool, then your exploitative greed is checked by all your greedy peers' exploitative greed. This is why Henry Ford and Andrew Carnegie were both in favor of higher wages for factory workers; it wasn't because they were nice guys. But, more recently, the manufacturing happens elsewhere. This removes one of the only checks on the power of wealthy elites to apply the screws to their employees (legally or otherwise).

</comment></comment></comment><comment><USER11> Elsewhere on HN: [https://www.reuters.com/article/us-davos-meeting-solar- gcl-i...](https://www.reuters.com/article/us-davos-meeting-solar-gcl- idUSKCN1PI2OQ)

Chinese ripped off U.S.-based solar, went crazy, drove margins to 0%, overproduced, dumped in U.S., reduced U.S. profit incentive in solar development, and are now going to restrict supply to try to get prices up.

Meantime, we've had less serious R&D investment in solar than we would have had otherwise.

So, no, globalization doesn't always work especially when one of the other majors is a state-directed Communist country.

<comment><USER12> Heh, Amazon

<comment><USER11> What do you mean?

</comment></comment></comment><comment><USER13> Well, to be honest, I only could see part of the story and then it asked for me to subscribe. But anyway, I don't have anything else to add.

<comment><USER14> Please don't post unsubstantive comments here.</comment></comment>


The Japan Syndrome - <AUTHOR> http://www.foreignpolicy.com/articles/2010/09/30/the_japan_syndrome?page=full <comment><USER2> _When American humorist Dave Barry traveled to Japan in 1991, he was stunned to find department stores selling $75 melons._

They still sell those. They're delicious. But not worth $75. Still, if you're going to grow fruit here, you might as well focus on making it delicious.

</comment><comment><USER3> Great article. Nouriel Roubini says much the same thing in the WSJ [http://online.wsj.com/article/SB1000142405274870402930457552...](http://online.wsj.com/article/SB10001424052748704029304575525551638060796.html)</comment>


Things you didn't know about java.util.concurrent, Part 1 - <AUTHOR> http://www.ibm.com/developerworks/java/library/j-5things4.html?ca=drs-

<comment><USER2> I'm not sure how much other HN'ers use Java in anger, but I really wouldn't classify the listed classes in the OP as something I wouldn't know from java.util.concurrent.

In fact some of those are things I do ask in interviews, which probably means that I would expect most Java devs to know about.

<comment><USER3> The whole "things you didn't know" series is aimed pretty low, more like "things you didn't know because you never used it at all". Was the same for the collections series.

</comment></comment><comment><USER4> No... I knew those things. Although from his analysis of CopyOnWriteArrayList, I'm wondering if ReentrantReadWriteLock is something _he_ didn't know about java.util.concurrent.</comment>


Meritocracy is a myth invented by the rich - <AUTHOR> https://www.theguardian.com/commentisfree/2019/mar/14/meritocracy-myth-rich-college-admissions <comment><USER2> In America maybe - where wealth and privilege can buy you anything, including the courts.</comment>


Vivify: A color scheme editor for vim - <AUTHOR> http://bytefluent.com/vivify/

<comment><USER2> Indeed very nice....which is the colorscheme on the site BTW?

<comment><USER3> The default one when you load the site? Its corporation. There is a box on the right hand side that allows you to search and see popular themes. Or did you mean the color scheme of the website itself?

<comment><USER2> Thanks! I meant the vim colorscheme.

</comment></comment></comment><comment><USER4> Neat project!</comment>


Scale up your business into Germany - <AUTHOR> https://www.eventbrite.co.uk/e/scale-up-your-business-into-germany-tickets-55759194251 <comment><USER2> Impressive effort to get companies to move to Düsseldorf. I can only support it - the Ruhrgebiet is pretty nice.

If you ever find yourself in Düsseldorf looking for food, I suggest a Döner from Dene & Gör.</comment>


New MacBook Air Ad (Parody)  - <AUTHOR> http://www.youtube.com/watch?v=Z0ERgZ9dztk&eurl=http://a1.vox-data.com/6a00cd978d0ef7f9cc00e398d3b7d10004-html

<comment><USER2> I was expecting this to be a lot funnier. Optical disks? Is that the best they could come up with? Who uses optical disks on a daily basis?

<comment><USER3> i use them on a weekly basis: netflix

</comment></comment><comment><USER3> it doesn't cost $3000 unless you want $1200 of options.

<comment><USER4> $1200 of SSD goodness... why the hell not?</comment></comment>


LOOM 4k short film by Ridley Scott & son goes online - <AUTHOR> http://www.alexandrosmaragos.com/2012/09/loom-short-film.html

<comment><USER2> LOOM is a great example of low-budget movie-making. Partway thru this sci-fi futuristic dystopia I realized that _everything_ was current mundane stuff, just brilliantly arranged to give the impression of future tech. No computer- generated imagery (enhanced, perhaps, but not photo-realistic animation), no model shop, just off-the-shelf, what's-laying-around commonplace stuff.

Could very well amount to a _Blade Runner_ prequel.

</comment><comment><USER3> The camera looks really promising.

The movie on the other hand... when every other visual art form has freed itself from almost every constraint imaginable, it's amazing that in the 21st century young directors, who regard themselves as innovative, are still content to offer us simple combinations of representational art, like oil paintings from 17th century, with the narrative structures of romantic novels from the 19th.

The subtitles, if I'm not missing something, seem to be a direct rip-off of Godard's "Navajo subtitles"[0].

[0] [http://sensesofcinema.com/2011/feature- articles/godardenglis...](http://sensesofcinema.com/2011/feature- articles/godardenglishcannes-the-reception-of-film- socialismes-%E2%80%9Cnavajo-english%E2%80%9D-subtitles/)

<comment><USER4> There's no reason you can't innovate within representational art, and your "freed itself from almost every constraint imaginable" is someone else's "descended into idiotic gibberish".

</comment></comment><comment><USER5> According to the site, it was directed by Luke Scott, not Ridley Scott. Which is good because I didn't think Ridley Scott capable of something so terrible.

<comment><USER6> It's literally a tech demo for a projector technology. If you don't have a 4k 3D laser projector, it's going to be pretty pointless.

<comment><USER7> Although watching it at NAB in 4k was quite impressive, I'll say. It gives me hope for future tech in the film-making realm.

</comment></comment></comment><comment><USER8> Apart from name dropping, I don't see what is so different than any other red camera production? It's conformed in 4k, so what? Anyone with anything shot on red can do that on their home editing suites (even I did it!). This is basically a commercial for TBR projector from RED (company where everything is TBR and WIP).

</comment><comment><USER9> Damn, I really wanted this to be based on the 1990 LucasArt adventure game Loom. <http://en.wikipedia.org/wiki/Loom_(video_game)>

Great short nonetheless.

</comment><comment><USER10> I'm surprised they're not using torrents to distribute this 1.6 GB file.

<comment><USER11> Welcome to 2012, where 1.6 GB doesn't actually seem that bad.

It seems that direct download has seen a resurgence over the past couple years relative to torrent. For example, for plenty of Linux distros, you have to hunt a little longer to find the torrent link, but the direct download is a pulsing button.

</comment></comment><comment><USER12> direct link to youtube:

<http://www.youtube.com/watch?v=wcvSTk8M5qY></comment>


Apple may use Carbon Fiber in Next Macbook - <AUTHOR> http://www.appleinsider.com/articles/08/11/11/apple_may_turn_to_carbon_fiber_for_lighter_macbook_air.html

<comment><USER2> Carbon fiber has a bunch of desirable properties, but I don't believe that absolute thickness (thinness) is generally considered one of them.

As far as I know the most common uses for carbon fiber are when light weight and high strength are needed, such as in aerodynamic panels on race cars -- nobody cares if the panel is .5mm or .5in, so long as the outer surface is the right shape and the weight is as low as possible.

If my understanding is correct, these attributes are counter to one of the key goals of the MB Air (the goal of being as thin as practical). It will be interesting to see the exact CF weave and resins they select as a compromise.

<comment><USER3> Yes, I'd postulate this would not be an engineering decision as much as it would be related to the "because it's cool" principal of design, which is related to the "because it'll sell" principal of marketing.

<comment><USER4> principle

</comment></comment></comment><comment><USER5> I think that carbon fiber is a really good insulator which is not good for a computer. Think carbon fiber mufflers on motorcycles not getting hot. Composite skis don't get cold. I suppose plastic is the same in that respect... But there is something from my days as a machinist / composite-ist telling me that all the heat will stay in and everything will melt. My memories are hazy but it doesn't feel right...

<comment><USER6> This actually sounds pretty good to me. Ideally in a laptop you want to get rid of the heat through the vents, not through the case. Nobody likes burning their thighs and/or wrists, and that's a big problem with the metal macbooks.

Now I come to read the article more carefully, in fact, the part they're considering replacing with carbon fiber is the bottom cover, which suggests they really are thinking in terms of heat conduction, even though that's not mentioned in the article.

</comment></comment><comment><USER7> Using carbon fiber in laptops is nothing new. IBM, Lenovo, Sony, and Panasonic have been using Carbon Fiber for years. My Lenovo T60 (over two years old) has a carbon fiber "roll cage" that you can see when when you open it up, and it wasn't even the first carbon-fiber-based ThinkPad.

</comment><comment><USER8> Acer have been using carbon fiber on the cover/screen backing of their Ferrari series laptops for over 4 years. I've had one for a bit over 3 years and it's still in great shape, despite quite a few knocks in transit. Carbon fiber's a good material to put behind the screen - light and very strong.

</comment><comment><USER9> Well for maximum effectiveness, there needs to be a substrate on which to lay the carbon fiber. Having just a sheet of carbon fiber mesh and cured resin isn't nearly as strong as that same sheet covering some other material like foam or wood.

<comment><USER10> For a 3 lb MacBook Air, I seriosuly doubt they'll need to reinforce it with anything. A six layer carbon fiber bottom will be more than adequate.

</comment></comment><comment><USER11> Why wait? I think The Voodoo Envy is good enough <http://www.voodoopc.com/#/productsenvy>

</comment><comment><USER12> It's frustrating. I can't stay mad at Apple for the sleazier things it does because it makes such beautiful stuff.

<comment><USER13> This is why people have things called character and stuff. ;)

(Not a personal slam. I just wish sometimes people would call out Apple on being sleazy before their "but its so prettyyyyy" rationalization kicks in. Because otherwise Apple will continue making you bend over backwards.)

<comment><USER12> Point taken.

</comment></comment></comment><comment><USER14> I hate to be a troll but, how is this relevant? Feels like digg..

<comment><USER6> I reckon hardware design issues are interesting, especially when they involve fancy new materials.

</comment></comment><comment><USER15> wow apple is desperate. they are using unibody aluminum chasis to convince people to pay $2k for laptop internals they could get from dell for $600. case mods must be where its at since the macbook pro is not meaningfully different under the hood than the previous macbooks.

carbon fiber?? why not try to see if you can freeze-frame star trek iv at the point where scotty has his forumla for transparent aluminum on the screen. that should catch a cool $5k per unit at least.

<comment><USER16> More flush with cash and profitable than desperate I'd say.</comment></comment>


A response to "How to never complete anything" - <AUTHOR> https://neilonsoftware.com/2017/03/10/my-response-to-how-to-never-complete-anything/ <comment><USER3> Basically I agree, but I think you can put it more simply: this is how we learn. 5 years into your career is a _really_ short time. I know that people feel like they should be (or are) at the peak of their powers 5 years in, but that's kind of delusional.

Running a big successful project should not be your goal (IMHO) that early on. I've got a couple of very long projects under my belt (none really successful), but I've learned dramatically more from my hundreds (or thousands) of aborted projects than I have from those ones that I stuck with for 5-7 years.

Give yourself permission to play. It's important. If you have a long term, successful project, you will not have much time for play any more.

</comment><comment><USER4> Regarding the points in the beginning of the article: So in this case, as in every other one, the answer seems to be "balance" :).

People tend to go for extremes as solutions to their problems... I'm guessing because extremes make for easy, clear answers. The thing is, the answer depends on where you are. For some people, adding discipline to their day is a good thing, for others, cutting themselves some slack is what's necessary. For some projects, adding some structure to the process would be a benefit, other projects may need to be more agile. And I'm not talking about different types of people and projects, just that depending on where you are, the correct advice is different, and not applicable to a person or project currently on the other end of the scale.

This happens in every field: "train harder", "train less hard", "eat more carbs", "eat less carbs"... The tricky thing is that the optimal route is generally not at either extreme, but somewhere in the middle. I guess you learn to recognise the correct balance with experience (or guidance).

<comment><USER5> I definitely fall prey to this extreme type of thinking. I consider it a form of naive idealism – believing there is always one maximally correct solution. This is why solutions such as Soylent are so appealing to me. Perhaps the cause is simply a lack of in-depth knowledge and experience in the areas for which I'm seeking a perfect solution, or maybe it's related to being on the spectrum.

<comment><USER6> IMO has hackneyed as it is: It is experiences and maturity. I was of the same mind set for most of my 20s.

As you get older (and hopefully I'm not false in assuming you are younger) family and bigger picture things come into play.

</comment></comment></comment><comment><USER7> Very, very good reply, I'm glad I skipped past the unnecessary point-by-point at the beginning to get to the real meat of the reply.

There are a few weird and irrational biases I see going on amongst techies who frequent HN. I'll just talk about one of them because bias is a tough topic to talk rationally about.

The one I want to discuss that I see a lot of hackers doing is creating a _need_ to do everything themselves. This leads directly to the delusion that side projects are things to take Really Seriously.

Sure, if I wanted to, I could chunk out all the work it takes to build a product, take it to the market, refine it, then finally build a company around it to take the load off.

But unless you're a real honest-to-god genius, then you're going to make mistakes, and those mistakes can add months, or even years to the time when you can Call It Done and go back to spending the time with your wife and kids.

If you're not absolutely strict about not letting it override your personal life, you _will_ end up sacrificing your life to the jealous God of the Market.

You might try to respond by moving the goalposts, saying that the real goal here is learning, not achieving some kind of outcome. But do I really need to ship a product to learn?

There is a class of activity that is actively distrustful of the market, which insists that all learning comes from the creator's own mind. It's called art. If Picasso thought that the market was worth listening to, then we wouldn't know his name today. Artists by their nature listen to other artists, and not you. That's what makes it art.

Side projects should be considered to be more art than business. Art doesn't fuck with your personal life. Art _informs_ your personal life. Whether you're creating it or enjoying it. If I'm sitting there hacking out a weird new concept for accessing databases and my wife comes into the room and wants to talk about our son's baseball game, I _put down the text editor and listen to my wife_. I do not tell her that I'm currently in flow right now and jeez could you really just come back later after I'm taking care of this Really Important Thing.

If you're bleeding your professional life so far into your personal life that you are even for a moment taking it more seriously than your wife and kids, you have fucked up your priorities. I would never ever ever even dream of doing this. Everything else is noise compared to my personal life.

<comment><USER8> "my wife comes into the room and wants to talk about our son's baseball game, I put down the text editor and listen to my wife. I do not tell her that I'm currently in flow right now"

But can you listen patiently, if you have been in a flow before?

I can't, even though I too often try to, to be polite, but I think I prefer being honest and stay in the flow, if I want to.

And when I am done, I am free for other persons.

But it takes good balance, true.

<comment><USER9> I can't. I've tried. I don't think it's necessarily messed up priorities. I think it's that some of us have obsessive compulsions to follow through on an idea or train of thought. I like to think I'm generally personable and hospitable, but I am a completely different person in the midst of a flow. I am abrupt and dismissive - not because I don't care, but because of an irrational urgency to put ink to paper. I often turn around, minutes (to even an hour) later, and dequeue every question or thing that was asked of me, one- by-one.

I feel like it's physically painful for me to not work in this way. I can not give undivided attention when there's something that needs to get out, and am certainly jealous of people who can context switch out of a flow like it's nothing.

<comment><USER10> > dequeue every question or thing that was asked of me, one-by-one.

My ex used to hate that, she'd say "your not listening?" and I'd repeat verbatim everything she said and then she'd get annoyed because listening and _listening_ are different things.

Current GF gets into a flow state herself so she is _way_ more understanding :).

<comment><USER11> > she'd say "your not listening?" and I'd repeat verbatim everything she said > and then she'd get annoyed because listening and listening are different > things.

Happens to me all the time :)

</comment></comment></comment></comment></comment><comment><USER12> The author of "How to never complete anything" seems like he was procrastinating. Procrastination is a kind of mental habit that can be hard to counter by just telling yourself to not get distracted. Yelling at yourself "JUST. GET. SHIT. DONE." is not making a dispassionate decision "you know, I'd be happier if I got to the end on my next project, I think next time I'll bang it out quickly then assess what I've got."

There are a lot of good books on procrastination. Meditation / introspection can help too. There are much more effective methods than just trying to "force yourself" to not get distracted / procrastinate.

<comment><USER10> In the middle of my desktop wallpaper I have the words "motivation is bullshit\nget it done".

It's actually worked, every time I see it it reminds me of a video I watched that discussed motivation, it was a bit hoorah but the core message struck a note.

</comment></comment><comment><USER13> I wonder if the writer of the original article misunderstood the reason he started a side project. To me it sounded like he started it to have fun, to play with things, and to learn. Later he tacked on the goal of to make something for the world.

Who feels guilty that their crossword puzzle or frisbee football or model airplane hobby has yet to yield a practical product, to sell to the rest of the world? Maybe we confuse our goals while software dabbling because software has the potential to be a product, while it's much harder to be tricked into thinking that our finished sudoku puzzle might somehow help mankind.

I think it's helpful to first correctly identify your reasons for doing something, before you try to judge whether you are doing it well or should keep on doing it. For example, it helped me to identify that the real reason I check my email too often at work is because I was lonely, not just because I wanted to gain information or to give information to others. I think this is making it easier for me to stop checking email so often and to find other ways to fulfill my needs.

As the writer of this response article indicates, writing software to learn or to play is a good enough reason in itself, and we need study and play for the same reason children do: to stretch ourselves. Or, more practically, it is a shortcut to pleasure. The commonly acknowledged pathway to pleasure is (1) work, (2) get paid, (3) buy something that makes you happy. But with play, the work itself makes you happy. No intermediate activity is required.

</comment><comment><USER14> I actually realised after watching the Drew Houston (Dropbox founder) interview [1] that the most important thing is working full time on your startup. There's too much for one person to do even if you are full time let alone working 7pm-3am every day.

[1] [https://blog.ycombinator.com/drew-houston-on-how-to-build- th...](https://blog.ycombinator.com/drew-houston-on-how-to-build-the-future/)

</comment><comment><USER15> I wonder whether current wave of must have side project is not result of people having non satisfying/challenging work.

</comment><comment><USER16> This was a really wonderful thing to read. I think it's extremely important for people to get this perspective, with its experience grounded in the realities of the work and the complexities of just being a human person.

</comment><comment><USER17> Good advice, but loaded with assumptions that may or may not be true.

The original article, and the response, are two views of the "problem" at opposite ends of the spectrum (so to speak).

Depending on the context, both are right. And also wrong. ;_)

</comment><comment><USER18> > _"But done"_ – What is "done" in software?

Yes, it's never really done, but there are levels or milestones of "doneness", where you get to feel the satisfaction of _something_ done.

Two ways of looking at "doneness": an end in itself, or as a means to an end. Professionals/craftmen/artisans prefer the former (and are prone to perfectionism - never reaching any level of perfect doneness); whereas business people are prone to cutting corners - cutting anything non-essential - in order to reach the end (and are prone to cutting the essential). Sidenote: it's _great_ for a business for perfection to be hard to reach (and customers still wanting it), because it means you can release another version - when perfection is reached (or customers don't want any more), the business dies.

Microsoft "wizards" were a good example of the a means to an end (don't know if they still are): they got the job done, if you wanted a common combination of selections. But was buggy for other combinations that should work. It looked like they only fixed the bugs that they had to. So... this is outrageous to a perfectionistic - of course all the combinations should work! My point is that this achieved the end, for most people.

Each single combination of features or path that works is an element of "doneness", that _actually helps someone_.

Richard Dawkins talks about the evolution of the human eye - how could such a complex interdependent thing come into existence spontaneously? He says it came bit by bit, from a patch of photosensitive cells, to a hollow of them, to a simple lens, gradually refining its focal qualities. A similar story for orchid mimickry of insects. (Chapter was called "Do Good by Stealth").

The point is that each advance had a level of "doneness", in that it was _better than not having it_ (thus conferring survival advantage). And who's to say the advancement has ceased?

One also have a level of doneness for the intrinsic beauty of the work itself... it's just that _you_ are going to have to define what "doneness" will mean for you... and you'd better make each level very small in scope, because it takes a _long_ time to make even a small thing beautiful or perfect. For example, just making a framework is a worthy and ambitious goal.

Though I still think, even for "ends in themselves" it's useful to distinguish between what business people call "differentiating" factors and "hygiene" factors. You must have hygiene, but it doesn't have to be world-beating - <USER2> good enough to do the job. But for differentiating factors, you have to do something unusual or special (though again, only really good enough to differentiate).

It's up to you to work out what "good enough" really means. I think comparing it with not having it at all is a good way to evaluate its worth without getting caught in an endless perfectionism trap...

</comment><comment><USER10> You write beautifully.

<comment><USER5> Agreed. Well crafted prose.

</comment></comment><comment><USER19> > I think it's time for you to have a vacation – a real vacation.

Iv tried it all; sail without an engine, tan on beaches 5k miles away, buy all the sex workers (my) money could buy. None if it worked. The only true vacation for me is lysergic acid diethylamide, 250 to 500 micro grams.

<comment><USER20> That strikes me as a cry for help, if the only time you ever feel like you can be "on vacation" is when you're divorced from reality. Take acid all you like, but if you _need_ it to feel relaxed... you're already in some very deep trouble and should seek help.

<comment><USER19> I do seek help, and LSD gives it to me. 'Reality' .. Ahahah!

 _Quid est veritas?_</comment></comment></comment>


Modern Extreme Programming - <AUTHOR> http://benjiweber.co.uk/blog/2015/04/17/modern-extreme-programming/ <comment><USER2> I never did pair-programming but I really liked the implied pair programming that resulted from having a checkin-partner that had to review and greenlight your commits. After sending the request you'd walk over and talk about the code for a bit. Usually pretty informally (over a coffee or water if there were a lot of commits :P).

It usually went "ok tell me what your code does" and then some talk about details, design tradeofs, identified issues. Sometimes there was a rubber ducking effect of sorts where you figured out an issue with the overall code design but the major benefit was that it forced you to write code that is not too long and can be reasoned about "in a vacuum" (kind of). Second major benefit was that it forced you to physically walk away from the computer which has all kinds of benefits.

All informal, nothing set in stone. We just used IM-DND to indicate that you shouldn't walk over just now because I'm in a no-disturbe mode of coding.

You can probably bundle it up, write fancy DND/checkin-greenlight software and brand it as "Coffee cup driven software development". Agile and at least 4.0 ;P

<comment><USER3> The social aspect makes coding more fun. And getting away from your keyboard is great. What you're describing to me sounds like informal code review, a high level walkthroughs of what your code does and what choices you made and why. It's a taste of pair programming. Talking through your code is great. Implied pair programming sounds about right. Try the full thing sometime!

</comment></comment><comment><USER4> I once worked at a place that had pair programming as a rule as well. Fix button size CSS for IE6? Two programmers, one computer. Change First Name, Last Name to First Name Last Name? Two programmers, one computer. Being stuck on something totally trivial yet essential where you depend on someone else? Two people sitting on their hands instead of one.

So this is what it ended up being: one guy doing the work or sending HipChat messages to the guy required to get unstuck while the other one was browsing Facebook. Then in the end the guy that was picking his nose all the time looks at the other guy's work quickly and you say "yeah....that seems about right....merge it!".

Sure I can imagine it's great to work out the architecture of your new framework together with a few guys and a whiteboard and then starting to work on the code together. But why would somebody need to watch how you're doing some kind of trivial CRUD?

Unless literally every problem and feature they're doing is super exciting sooner or later somebody is just colouring between the lines to get the application finished and a quick code review when it's time to merge the pull request is all you need.

<comment><USER5> I am an advocate of paired programming. A lot of organizations do it really poorly. Your examples show exactly where it does not work.

First off, sometimes you have a bunch of minor tasks that need to be taken care of, like updating some text in the UI or fixing a button size, also in the UI. Is there a reason that you have to sit down and plan to only do that? If you have a well prioritized backlog and the freedom to get work done these scenario's should be more like:

"Let's work on adding this new feature here." "Ok that's a good one, we'll need to do a, b, and c to get it all wired up, working and tested. Hey since we're in that part of the code there are some small tasks about changing the button size and the text here, let's make sure to get those done." ... "Great! we completed the new feature, fixed the button size, and the text. Merge it!"

I never sat down with my pair for the day and said "Ok go fix that button. Great, merge that. What's next?" It was always a discussion of the most valuable thing to get done and any collateral issues that could also be fixed. In this case, we often got more done.

Second, if you had a pair partner sitting around doing nothing, there is a problem. They aren't engaged. They either need to become engaged or not be in an environment where there is paired programming. That is ok! But they need to admit it and move on.

Pairing works well if you have the people and processes in place to allow it to work well. If there are people sitting on their hands, then there is a problem. Though I would argue that if you took away paired programming, the same engineers would often still be sitting on their hands, playing on facebook.

</comment></comment><comment><USER6> I think I've realized over the years that this kind of development process lends itself to certain kinds of software. In particular XP is effective for web server products.

Not all software can or should be deployed rapidly like this. It's been my experience that end users don't really want constant churn in their software unless it's transparent to them. It's also hard to justify having 11 SEs sitting around a monitor programming. Their combined rate is probably something like 2million a year with overhead. with that kind of burn rate you'd better have some serious productivity from the 1 guy on the keyboard.

<comment><USER7> What? That's like saying that programming is easy because it's just typing.

It's not about how fast the guy with the monitor writes things! It's about making the right choice when you're designing a system.

When I do programming by myself I go through many designs and refactorings.

If someone already mentioned "hey, don't allocate on the hot path" and "make a closure here instead of copy pasting" and so forth without me having to be concerned about code quality and performance I'd get things done faster. I usually implement a very naive first version. If after typing this up I already have 3-4 people fixing it, then my pull request can have good performance, style, etc. from the get-go and get merged pretty fast instead of constant "can you fix this, then I'll merge it?"

<comment><USER8> I think we can all agree that the keyboard isn't the limiting factor here.

Individual programmers at their own keyboards can all focus on separate problems. Two (or more) programmers with a single keyboard can only focus on a single problem at a time, but they get the experience and perspective of multiple developers. It's really just a matter of breadth of focus vs depth of focus.

At a certain point adding more developers won't help and it will end up wasting resources. This may be as soon as you add a second developer, or maybe after you add 6 developers.

</comment></comment></comment><comment><USER9> I can't tell if this is a spoof or not.

<comment><USER10> A bit religious, but honest. Just needs to dial down the TDD-preaching - it's not a silver bullet.

<comment><USER9> The "mob programming" was the thing that made it hard to take seriously. All the downsides of meetings (bikeshedding, grandstanding, high (time x money) consumption) without time and space to think.

I currently work with what [https://news.ycombinator.com/item?id=9413117](https://news.ycombinator.com/item?id=9413117) calls "implied pair programming": code reviews before commit. But the rapid build and rapid deploy is so incredibly far from what's achievable here (C++/WinCE land). A quick build takes about 15 minutes. A full all-target- platforms build takes about 3 hours. It's then merged with releases from other teams and handed to QA. Customers are using releases up to three years old.

</comment></comment></comment><comment><USER11> I would say that we are moving similarly, and I like the way Benji Weber put it:

\- From continuous integration to continuous deployment

\- To project ownership (although there is some resistance here on the part of some software devs, who don't feel it's their responsibility)

\- Monitoring first: we have a strong desire to increase this but we're a bit at a loss as to what a good light-weight solution is here

The only exception is mob programming. Instead, we still have developers code on their own, and we switch to pair programming when troubleshooting a tricky issue.

<comment><USER12> You could pay for a NewRelic account, or invest the time in getting statsd+graphite or Riemann infrastructure set up. There are other systems too; it's a growth area.

"Monitoring-First Programming" to me means that monitoring and capturing errors in production is very valuable indeed. It's not a reason to abandon regular testing activities, but it is basically the same kind of thing as testing.

Links: [http://newrelic.com/](http://newrelic.com/)

[http://www.kinvey.com/blog/89/how-to-set-up-metric- collectio...](http://www.kinvey.com/blog/89/how-to-set-up-metric-collection- using-graphite-and-statsd-on-ubuntu-1204-lts)

[http://riemann.io/](http://riemann.io/)

<comment><USER13> I believe it's a mistake to put Riemann in the same sentence as statsd/graphite. It really does not try and solve the same problems, it's more focused on alerting than trend analysis. In fact it recommends pushing data out of Riemann and into Graphite to perform long term trend analysis.

That said, if you have the time to invest in grokking Riemann (learn Clojure first), it would be a fantastic tool to base the rest of your monitoring infrastructure upon.

<comment><USER12> You are right, sorry if it wasn't clear - I had in mind Riemann as a replacement for the statsd part of that duo. That's how I've seen it used but my knowledge and experience are limited.

</comment></comment></comment></comment><comment> d--b Thanks for the mob programming concept. I always disliked pair programming, but I actually think that mob programming is a great idea! It sounds like a meeting where you actually get confronted with the reality of the code, and so you know where you have to make decisions both in terms of code design and product design. I'll definitely give it a shot

<comment><USER14> Where I work, we grabbed an old(er) 50" TV and stuck it up on the wall in a common space. We gave it an old mini-itx and a wireless keyboard/trackpad. Just enough for a browser, XFCE and Sublime.

Now we gather around it and yell at the code like its a football game and toss the keyboard back and forth. Not for every project or team but recommend it way more than I thought I would at first.

We do need to find a way to nerf the keyboard.

<comment><USER15> You could give everyone a bluetooth keyboard, so that no-one "has the keyboard" and it's all collaborative all the time.

<comment><USER14> We rather enjoy the "Conch in Lord of the Flies" vibe the current setup imparts.

</comment></comment></comment></comment><comment><USER16> Rock!

I get the feeling there is some weird backlash against all things Agile lately. I've noticed it particularly in reddit comments.

I suspect it's young people who just weren't around before Agile.

<comment><USER17> I've noticed that Agile is frequently creatively misinterpreted as:

* "move fast and break things" or

* "testing is the end user's job" or

* "what we were doing before, except with morning meetings where nobody is allowed to sit"

I expect some of the backlash is, ironically, against that.

It's similar to "devops" in this respect - a lot of people pretend to adopt the buzzword and then do almost the exact opposite of what it proscribes.

<comment><USER18> The thing is this style can work (well the first two anyway). Why spend two or three times as long coding tests for an in house application used by a few users and the requirements aren't actually known or well communicated? Developer time is often more expensive then the end user time.

<comment><USER17> I used to think this too, but then I realized that this is actually backward thinking. It's _quicker_ in the short _and_ the long term to write tests.

Every time you code (whether requirements are clear or not), you go through the following steps (often executed in the space of 2-3 minutes):

1) Think 2) Write code 3) Build/run code 4) Test and see the outcome 5) Go to step 1

Even if you are not writing tests, you _are_ doing step 3 and 4. Moreover, if you are not writing tests, you are doing steps 3 and 4 _manually_.

Manual is only quicker if there are a few of these iterations. If you are doing this iteration every 2-3 minutes, you will be doing it hundreds of times a day and thousands of times in total over the course of a project.

Automating that process will save you a _lot_ of time in the long run, and will still save you time in the short run, as well as leading to higher quality code.

<comment><USER19> I think a lot of disagreement about TDD comes from the fact some things are a lot easier/quicker to test than others.

If I'm writing a library to add two numbers, it's easy to create fast tests with no false alarms. Assert.equals(10, new BigDecimal(5).add(new BigDecimal(5)) - simple, fast, no false alarms, easy-to-maintain.

Now imagine you're making a website and you want to test with multiple browsers, and it uses caching and connection pools and sessions and whatnot, and the website has several dozen pages, and there are a bunch of configuration options and feature flags and you need to test with all of them.

Now all of a sudden you're administrating a pool of VMs with different OSes, writing web-scrapers, launching web servers every test cycle, waiting for tests of pages you haven't changed, running n tests * m pages * o server configurations * p clients, and all of a sudden you're spending more time keeping your tests working, or changing your software so tests run faster, and you're hardly spending any time working on features users want.

Naturally, to someone writing the first type of software, unit testing seems perfectly logical. But I can also see how someone working on the second type of software might get frustrated!

<comment><USER20> I wouldn't call your second case unit testing, but rather integration testing.

Part of the point of unit testing is that you keep the 'unit' under test to be as small as possible so you don't have these sorts of problems and can run tests as frequently as is useful. It doesn't remove the need for other types of testing suites, but they can be isolated and run at separate times.

<comment><USER21> I think the real point is that "testing in production," more commonly known as "monitoring," has to happen anyway. So early on, if you have a choice between adding better, more complete monitoring and adding tests, even integration ones, the monitoring will prove more helpful once you deploy than the tests were. Don't get me wrong, it sucks having to manually perform integration tests but when a product resembles a website and is semi-automatically deployed (e.g. has staging servers with automatic deployment, rapid rollback deploys or a canary-server deployment model, a few minutes of caching and few to no expectations that the app operates perfectly as long as it can be fixed within half a day, well, that's a very different project. In that environment, the piece of mind monitoring provides (no client errors in production) largely outweighs having no monitoring, just tests (did I test everything? What about (obscure government agency) using (outdated version of IE) who is reporting that bug?). Of course, as code is more complex than a website, or where you begin to have significant JavaScript, having at minimum tests for success- paths will help prevent regressions for application-wide changes, e.g. adding PJAX to a site and missing an onload. It's just harder to justify tests until you really need them on some assignments.

</comment></comment></comment></comment></comment></comment></comment><comment><USER22> Sadly, I feel that most Agile/XP posts are mis-informed rants, but this essay was really good. It covers many of the changes that are happening. Especially noteworthy for folks who haven't checked into Agile/XP for a while are "Collective Code-Ownership becomes Collective Product-Ownership" and "Test- First Programming becomes Monitoring-First Programming"

Yes, there's a ton of folks who are lost in the woods when it comes to all of this, but there are also a heckuva lot of folks that are taking it to the next level. It's really cool to see the community evolving.

</comment><comment><USER23> I've done my best programming toiling first with paper and pens for a few weeks, slowly reducing the spaghetti domain requirements into an elegant graph formalism that has proven to be understandable and extensible. After the code was in place pair programming was a fantastic way to share understanding of the code. This mandatory XP really is not suitable for all environments.

</comment><comment><USER24> I'd try this continuous deployment thing in the finance or maybe in the automotive industry. Let's see how the clients enjoy it.

<comment><USER25> They love it:

ING Bank Case Study: Improving time to market from 13 weeks to Less than 1 week with DevOps and Continuous Delivery:

[https://www.youtube.com/watch?v=9jqY_bvI5vk](https://www.youtube.com/watch?v=9jqY_bvI5vk)

<comment><USER24> It seems they're mostly talking about their client-facing stuff (mobile banking app, etc.). That I can believe. I very much doubt that there isn't a committee who has to sign off every single release of their core infrastructure.

</comment></comment></comment><comment><USER26> XProlo? Extreme Proletarians? So they like, eXtremely don't own the means of production?

<comment><USER27> I see what you did there :-)

</comment></comment><comment><USER28> How does this fit into an environment with a large tester presence?

</comment><comment><USER29> lol?</comment>


Justin.tv vs God - <AUTHOR> http://mindrosity.blogspot.com/2007/07/justintv-vs-god_07.html

<comment><USER2> I actually think I'd enjoy watching the lifecast of an anonymous criminal... not sure how they'd get around someone finding them but if they did I'd be there. It might be possible when they get the camera size down but not right now.

some people really dont care and i would want to watch that guy hah!

</comment><comment><USER3> It could just as easily encourage the opposite behavior. People frequently do stupid things when they're trying to impress others.

<comment><AUTHOR> Their parents, grandparents, boss, teachers, perhaps even their priest/rabbi, are watching!

<comment><AUTHOR> On a related note:

[http://ambient.media.mit.edu/assets/_pubs/what-woult-they- th...](http://ambient.media.mit.edu/assets/_pubs/what-woult-they-think- IUI2004.pdf)

</comment></comment></comment><comment><AUTHOR> Check out the discussion linked to in the blog post comment as well.

</comment><comment><USER4> You might want to google "Panopticon"</comment>


Facebook open-sources developer tools for iOS - chris-at http://www.macworld.com/article/3055944/open-source-tools/facebook-open-sources-developer-tools-for-ios.html#tk.rss_all <comment><AUTHOR> Remodel repository: [https://github.com/facebook/remodel](https://github.com/facebook/remodel)

Retain Cycle Detector: [https://github.com/facebook/FBRetainCycleDetector](https://github.com/facebook/FBRetainCycleDetector)</comment>


California Bill Would Allow Unrestricted Housing by Transit - <AUTHOR> https://slate.com/business/2018/01/california-bill-sb827-residential-zoning-transit-awesome.html <comment><USER2> Previously [https://news.ycombinator.com/item?id=16073219](https://news.ycombinator.com/item?id=16073219)

</comment><comment><USER3> I wonder if this could backfire by having neighborhoods in urban areas being opposed to transit improvements to avoid being labeled a 'transit rich' area.

SF does not have nearly the subway line coverage it needs to adequately serve the city (e.g. takes 40 minutes to take the bus to downtown from the marina).

<comment><USER4> Marin residents voted against BART a long time ago as it would have attracted crime.

Not a new topic, wouldn't change much.

<comment><USER5> The same reasoning has prevented light rail from expanding further in the St. Louis metro, too. Unfortunately, the extension to one of the area's largest malls _did_ by all accounts attract at least _some_ new crime:

[https://www.riverfronttimes.com/stlouis/out-of-control- shopl...](https://www.riverfronttimes.com/stlouis/out-of-control-shoplifting- at-the-st-louis-galleria-violent-attacks-in-the-delmar-loop-is-metrolink-a- vehicle-for-crime/Content?oid=2483851)

I haven't followed the stats since then (and there could be other explanations for the reports in that article), but the perception in the region that transit brings crime is _very strong_.

<comment><USER6> Same reasoning in Minneapolis.

"I want to thank you for ruining our city," said Donna Azarian, an Eden Prairie resident, during the city's public hearing. She said that the city doesn't have the density to support light rail and that it will "bring crime to our city." Her comments were met with audience applause..."

</comment></comment></comment></comment><comment><USER7> As the article says, the bill, as is, is too radical to pass. But I'd wager that's intentional. Knowing that negotiation will have to happen in order to get the bill passed, he proposed something extreme, so it would still be close to what he actually wanted when all was said and done.

Or maybe I'm reading into it too much.

</comment><comment><USER8> I live in LA and we desperately need more dense housing and better mass transit. You can't have one without the other, so it makes sense to build new dense housing near transit. But the article links to a counterpoint [1] making the very valid point that this bill would allow a lot of predatory development in working-class neighborhoods of LA. I am conflicted. Hopefully there is some middle ground. The population of LA is too big to live in single-family homes, it is impossible to make it work.

</comment><comment><USER9> Great idea. Therefore, it'll never happen. Too many entrenched interests will be hurt by solving the problem, I fear.

</comment><comment><USER10> So, it sounds like their would be no visual or noise restrictions or barriers? Haven't studies shown those are real problems (or at least, we need X hours of sleep)</comment>


Ask HN: Community College Programs for CS or SE? - <AUTHOR> I'm interested in the community's experience with such programs either as a student or working with graduates or teaching in such programs. <comment><USER2> I think it's your best bet is to take the prerequisites for the degree at a transfer institution, which is the one area community colleges are specifically designed for.

Generally this is something like Math (Calculus, Linear Algebra, Differential Equations, Discrete Math & Probability) and Computer Science (Intro Programming and or Object Oriented Programming, Data Structures, Machine Level/Computer Architecture).

The classes will vary by school but usually follow those same basics. In California a useful resource is [http://www.assist.org](http://www.assist.org).

<comment><USER3> This critical, I knew several people who went to community college, planning to transfer to four year schools who were totally screwed when none of their credits transferred. They had to retake all those classes. It's a shame the system allows this.

</comment></comment><comment><USER4> In my limited experience, the best ones are programs that have established 1:1 credit transfers for the entire AS/AA program into BS/BA programs at connected universities.

</comment><comment><USER5> Sometimes smaller schools offer a better learning environment for CS. They have smaller class sizes, which means better relationships with professors. They sometimes will be more hands on and up to date, as they are not bogged down by professors entrenched in academia for decades. These at least were my experiences having gone to a small school, teaching at a medium school, and comparing to experiences of friends at large schools.

Edit: I should mention all were 4 year degrees in my experience. Although, comparing my local community college's course curriculum to the large state schools, it seems more focused on web development and has less computer science fluff. So it may be better career/experience wise but lacking in more theoretical topics.

</comment><comment><USER6> SE is usually the vocational route. CS is what you'll want if you ever plan on transferring to an undergraduate program.

Go with CS if you're unsure, you'll end up doing most of your practical learning on the job anyway. School is for the foundational knowledge.</comment>


How the NSA cheated cryptography - <AUTHOR> http://www.lapsedordinary.net/2013/09/23/how-the-nsa-cheated-cryptography/

<comment><USER2> This is not your average "yet another NSA post". The article sports a remarkably easy-to-understand explanation what elliptic curves are in practice. The well thought out figure helps a lot.

Of course... since one image lies more than a thousand words, I could have been mislead.</comment>


Best way for developers to apply for a job - <AUTHOR> http://platan.us/jobs/apply From a job description in weworkremotely<p>To apply, send a POST request with Content-Type: Application/json to link up there, the required parameters are: name, email, github and city optional parameters are resume, linkedin and other. <comment><USER2> Ah, wow, that will be very challenging to post some json. Hmmmm... 'man curl'. Yup.

I mean, this is an interesting idea that will keep out the folks who don't know how to search SO, but that's about it. Plenty of other riffraff will be able to 'apply'. (Heck I might even be able to figure it out.)

</comment><comment><USER3> So using Postman is cheating I guess?</comment>


Show HN: A Hacker News reader app build with ionic - <AUTHOR> https://github.com/keith3/HN_app

<comment><USER2> You can never have too many HN apps.

<comment><AUTHOR> That's truly right, but I think most app I have used were too much complex, I don't need so many features when I reade hacker news on my phone, just with top/best news is ok :)</comment></comment>


Obama Administration Sets IPv6 Deadline: End of 2012 - <AUTHOR> http://www.executivegov.com/2010/10/kundra-sets-ipv6-deadline

<comment><AUTHOR> I think that this is great... except that TechCrunch just reported the IPv4 addresses would run out in early 2011. :(

<comment><USER2> Don't worry; IP survivalists have hoarded enough addresses in their underground bunkers to last us until mid-2012, so you'll only have to access the government via NAT for 6 months or so.</comment></comment>


It's not okay to pretend your software is open source - <AUTHOR> https://drewdevault.com/2018/10/30/Its-not-okay-to-pretend-youre-open-source.html <comment><USER2> I believe I'm in the minority when I say this.

Ultimately, if I choose to, I will license my project however I want. If I want to restrict others from selling my product I will do so.

Calling it Apache 2.0 + Common Clause makes sense, it's an extremely well known license and it's easier to start there and then say "but with some restrictions". That said, I do see the issue that people may use this software and not understand that the restrictions are there (but they clearly didn't look at the license) so changing the name is a reasonable ask.

This article definitely reads as overdramatic, as do the repeated comments on the subject.

<comment><USER3> These are brownies, but they happen to contain a bit of horse shit. Not a lot, it's just like a tiny sprinkling on top, but they are definitely still brownies!

You can't make a substantive change to a license and pretend it's a small deal. You can't hijack core tenants of a license, and then just put a little disclaimer at the bottom. "Buy one get one half off! *The one half off is actually just a plastic model and doesn't do anything"

Abusing FOSS licenses to try and control your users software while still using their claim strikes me as pretty bad faith. If you want to use a dual license, that's fine - just do that. "Hey, you can use this for free if you don't make any money, but we want 10% if you're using this in a paid product" -> See? Done, easy, nobody upset. Don't pretend "Hey, this is open source, except it isn't, and please give me your money."

<comment><USER2> I won't address your analogy since I think it's obviously quite different.

Ultimately, people want to keep their code open, develop in the open, bring in contributors, make it easy to adopt and audit their code, etc. They also want to eat and have a home.

The extreme hostility I've seen over the years to every OSS project that tries some new way of monetizing is just absurd and damaging to the concept.

> "Hey, you can use this for free if you don't make any money, but we want 10% > if you're using this in a paid product" -> See? Done,

Confusing since what you've just described sounds very much like what is being railed against? You're just talking about taking an open source license and adding a restriction around monetizing the code - this is _not_ open source, as it violates one of the 10 or so requirements to be Truly Open Source (by some organization's standards).

<comment><USER4> So, here's the key text of the Commons Clause:

 _Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software._

> Ultimately, people want to keep their code open, develop in the open, bring > in contributors, make it easy to adopt and audit their code, etc.

The Commons Clause doesn't really change any of that from the base license. It says so explicitly - "Without limiting other conditions..."

> They also want to eat and have a home.

This is the very thing that the Commons Clause tries to prohibit: "the License does not grant to you, the right to Sell the Software."

In other words, it's a way for the maintainers of a project to say that _they_ get to sell the software, but nobody else does.

Which, hey, I develop proprietary software for a living, I'm fine with doing that in the general case. What I don't like is trying to mix that kind of restriction into an open source license. Because then what you're saying is, you want other people to contribute code, _and you want to be able to benefit financially from those contributions_ , but you expect it to be a one-way street. There's a basic principle of fairness at play there.

If you want to do that kind of thing, I'd say it's much preferable to go with something more like the oldschool "dual GPL/commercial licensing" approach. Or, if it fits your needs better, something like one of the non-OSI Microsoft Shared Source licenses.

<comment><USER5> > _they get to sell the software, but nobody else does... what you 're saying > is, you want other people to contribute code, and you want to be able to > benefit financially from those contributions, but you expect it to be a one- > way street._

It seems like a lot of the positive responses to the Commons Clause have missed or skipped past this entire concern.

People are understandably touchy about "AWS profits off this free code", and understandably concerned that "just make it AGPL" will scare away some big players but not actually keep the developers solvent.

But the Commons Clause isn't at all reducible to "pay us if you profit from selling our code". A clause like that might not be FOSS either, but I think there'd be a lot less anger over it. (Especially if it wasn't achieved by taking a FOSS license and adding on a misleadingly-named "...but not really" clause.) Instead, the Commons Clause restricts sale rights to one entity, leaving the software with a clear 'owner'. And _that 's_ what people are mad about: it turns an entire development community into a farm team for one license holder.

"Pay if you profit" has real potential, and as you say has been achieved in the past via dual licensing. It allows for ecosystems where free code is included in and extended from multiple paid projects, and while the code originator might be guaranteed revenue they aren't in control of the project. That's vastly preferable to the you-work-for-us structure of the Commons Clause.

I think the conversation has been undermined by the way the Commons Clause FAQ and authors have skipped across that nuance to say "GPL doesn't suffice here, therefore Commons Clause!" We'll all be better off if we don't let the middle ground stay excluded from the discussion.

<comment><USER6> > Pay if you profit" has real potential, and as you say has been achieved in > the past via dual licensing.

But, often, that involved straight-out lying about a FOSS license, though, and presenting the dual license scheme as if it were the near-equivalent of Commons Clause. (E.g., the old MySQL GPL or commercial license scheme.)

<comment><USER5> Would you be willing to elaborate what's wrong with the MySQL GPL scheme?

I'm far from an expert on that whole debate, but my casual understanding was that they offered the same code under GPL or proprietary licenses. And, that doing so had been found legal and had even gotten (somewhat grudging) approval from Stallman and the FSF as a way to ensure monetization and adoption of GPL- covered code. His justification has a weirdly deontological logic that I don't particularly accept ("you're not making proprietary code, just causing it to be made" is pretty thin), but I think I'm fine with the result.

More generally, though, I completely agree. Misrepresenting FOSS status to dual-license isn't ok, and has all the same problems as the Commons Clause. I think there's a strong case for restricting proprietary use via a single new, non-FOSS license (probably derived from an existing FOSS license) rather than via dual-licensing or worse, added clauses.

<comment><USER6> > Would you be willing to elaborate what's wrong with the MySQL GPL scheme?

For quite a while, MySQL AB purported on the website and elsewhere that commercial use of MySQL required a paid proprietary license, and that the GPL did not allow commercial use, only non-commercial use.

Eventually, they stopped doing that, but it took a while.

<comment><USER5> Ick, that's part of the story I hadn't heard; my awareness of the whole thing mostly started with the Oracle acquisition. Yeah, that's way different that just _offering_ dual licenses, and not at all ok.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> I don't understand why everyone is so against his point as far as I'm aware even wikipedia says under "Open source license"[1] that "Licenses which only permit non-commercial redistribution or modification of the source code for personal use only are generally not considered as open-source licenses."

So his point is valid you can't advertise your product as open source if it's not and you shouldn't be allowed to trick the community into thinking it is.

Companies can use whatever license they like it's their right but advertising it as open source when it isn't just to take advantage of the now large community of open source contributors is not acceptable.

Using "Apache+Commons Clause" is just one way used to trick people into believing it's open source when it's not; you may not be using it like that but do you honestly think a company with a team of lawyers didn't do this intentionally so they can take advantage of the open source community?

[1]([https://en.wikipedia.org/wiki/Open- source_license](https://en.wikipedia.org/wiki/Open-source_license))

</comment><comment><USER8> I agree that if you've labeled your software incorrectly as open source and you've been corrected, it should be re-labeled and the problem shouldn't be ignored.

I will say, though, that personally I feel "free" software has a labelling problem. I'm not heavily engaged in the open-source movement, and a lot of the terms and wording and licensing confuses me to the point where I don't want to use it because I'm not sure what legal or press hell I might be unleashing in the future. The fact that "free" needs to be clarified with "free as in beer" or "free as in speech" is the most notable. Any thesaurus can give a dozen or more great words to use other than the ambiguous "free".

Some of the OSI/FSF licenses can be (in my opinion) just as restrictive and encumbered (albeit in different ways) as non-free/non-open licenses. The biggest ambiguity to me is having multiple pieces of software with different licenses. I've seen some Ruby gems where they're GPL'd, and I'm not sure what the definition of "modified" means as it pertains to when I need to redistribute the code. If I used MIT licensed code inside of a GPL application, do I need to release the MIT code too? What if I need to use non- free code in an otherwise GPL codebase? I'm just SOL? Do I need to guarantee my released GPL code works, or can I release completely broken code and still satisfy the license?

And this post highlights that pretty well those franken-licensing problems. What the hell is Commons Clause? I've never even heard of it... or maybe I did hear of it and like the post says I just thought it was Apache Commons or Creative Commons. Again, ambiguous terms that have tons of better words in a thesaurus.

FSF/OSI have changed the world for the better for sure, but like with the million and a half Linux distros, the tyranny of choice ends up making the process harder. I've never released any of my code as open-source because to be honest, I have no idea what "open source" actually _means_.

<comment><USER9> If you want to provide the source to your software, you put the code on the Internet and you're done.

You don't need to even choose a licence. That only comes in to play if you concern yourself with downstream users that care about licensing.

It really only becomes complicated when you want to release it and _also_ monetise it or restrict its use.

Licenses exist because of how this is ultimately at odds with how software actually works - it's basically legal DRM.

(I think licensing has valid uses in the current environment, but it's worth keeping in mind how absurd it is as a concept, it's basically a massive hack).

<comment><USER10> Copyright applies by default. You _do_ need to choose a license:

> When you make a creative work (which includes code), the work is under > exclusive copyright by default. Unless you include a license that specifies > otherwise, nobody else can use, copy, distribute, or modify your work > without being at risk of take-downs, shake-downs, or litigation. Once the > work has other contributors (each a copyright holder), "nobody" starts > including you.

See [https://choosealicense.com/no-permission/](https://choosealicense.com/no- permission/)

<comment><USER9> I addressed this in my comment.

> That only comes in to play if you concern yourself with downstream users > that care about licensing.

``` println!("gosh, no LICENSE!"); ```

I just published some source code without choosing a license.

(Yes, yes, I do licence my actual projects. But letting legalistic bullshit put people off releasing their source, even by a microscopic amount, is something that I disapprove of strongly.)

</comment></comment></comment></comment><comment><USER11> Creative commons licenses have had optional NC (no commercial use) and ND (no derivative works) clauses for years. FOSS purists don't like them, but a lot of artists depend on those clauses to make a living.

There is no widely recognized equivalent of a CC-BY-NC license for software, partly because neither the FSF nor OSI will recognize such a license. Maybe someone needs to write one nonetheless. And stick it on their software clearly and unambiguously. They obviously think that OSI-approved licenses don't suit their needs. Then don't use them, period.

The author is right that "Apache 2.0 + Commons Clause" is potentially misleading. We've seen "GPLv2 + Classpath Exception" before, but that was to give additional permissions, not a restriction. Similarly, most examples of dual-licensing don't add restrictions to either license. Adding a restriction is something new. It's understandable that people find it disingenuous.

Just write a new license already and call it Redis Labs Open License (RLOL) or something like that.

I'm sure antirez would be rather unhappy if you forked Redis, deleted a bunch of features, and called it Redis Lite. At least have the courtesy of changing the name if you're going to use an incompatible license.

</comment><comment><USER12> We need a different name for this, so either

\- Source-available software ([https://en.wikipedia.org/wiki/Source- available_software](https://en.wikipedia.org/wiki/Source-available_software))

\- Shared source ([https://en.wikipedia.org/wiki/Shared_Source_Initiative](https://en.wikipedia.org/wiki/Shared_Source_Initiative))

So that it's clear that source code is available in some form, but it's not open source.

<comment><USER13> Shared source ranges from actual free software to software that you aren't allowed to modify or redistribute, and it's only used by Microsoft.

I don't think it's a good idea to expand the meaning to cover software that isn't Microsoft's.

<comment><USER12> So we need a different name, I don't really care which. But I think it's clear we need one to make the distinction.

</comment></comment></comment><comment><USER14> This post seemed aggressive and vague to me. I'm not even sure what problem the author has with these licenses. I _think_ the issue is confusing naming - which seems pretty solvable - and not a fundamental problem with "dual licensing" / "source available" / "commons clause" software?

People can develop software out in the open and say "use it as it is, for free!", "use it as part of a new product, for free!", but also say "please do not sell this software as it is" and "please do not make and sell an almost- identical product using this software". That seems good to me, if the other option is closed-source.

E.g. I could make a product, you can use it for free, I will try to make money selling consulting services around the product (you can compete with me on that!) just don't sell the software.

I am happy to be corrected if there is a problem with these licenses being misused (or misrepresented as free and open source), but the post didn't give any examples.

<comment><USER15> [https://commonsclause.com/](https://commonsclause.com/)

>People can develop software out in the open and say "use it as it is, for free!", "use it as part of a new product, for free!", but also say "please do not sell this software as it is" and "please do not make and sell an almost- identical product using this software".

The Common Clause isn't about preventing shovelware, it's specifically about restricting the user's freedom to sell _any derivative work_ \--it straight up says in the 1st FAQ that it's to transition existing actually FOSS projects to non-libre software.

Also that's just the way SirCmpwn writes!

</comment></comment><comment><USER16> At the end of the day, open source projects need developers... and developers need to eat.

These license changes have been forced by the business reality of larger cloud companies capturing all the value created by open source communities and leaving OSS developers to starve.

Who deserves the value created by Redis? Antirez and the Redis Labs developers? Or Jeff Bezos?

<comment><USER17> This is not the point.

The point is: stop calling open-source stuff that isn't. You shouldn't lie to your users.

<comment><USER18> Open-source doesn't necessarily imply everything that the FOSS and GPL folks think it does outside of their semantic bubble. It's one of those bastardized terms that has become so mangled and situationally-dependent as to be almost meaningless.

For a significant number of people "open-source" just means, "I found this on GitHub"

<comment><USER19> Do you consider Microsoft Windows, or Oracle database to be open source software? Because the source code _is_ viewable (albeit under an NDA).

Open source does have a specific meaning, and twisting it like this does nobody any favors.

<comment><USER18> No, I'm well aware of what open-source is _supposed_ to mean, as opposed to shared-source or whatever the proper term is for that type of arrangement.

I just try to deal with the world as it is, and the damage has been done already to the popular meaning of the term. I don't have the energy or interest to tilt at this particular wind-mill, so at this point if somebody says something is open-source, unless I have prior knowledge of what they think open-source means, I can't really infer anything in particular, and have to ask some more questions.

<comment><USER20> Sure. And plenty of companies have stretched thin the definition of "free" or "unlimited". But that doesn't mean we have to accept that as OK.

</comment></comment></comment></comment></comment></comment><comment><USER21> People are upvoting the title because I guess they agree to some extent.

It seems everyone starting an open source project nowadays needs to protect against the cloud providers.

The topic on here about the new CI tool from the creator of Ansible also had an element of this. But I actually quite liked his solution. He gives everything away for free and the source is open. You just cannot profit from his work unless you join a partner system.

Maybe I'm being naive but that seemed like it may work. Although not sure how you qualify not being used for commercial benefit if the software you're building with the CI tool produces a paid product. I think the software creator would only really enforce the license if you started a business up doing hosted CI with it or offering it as a cloud service.

<comment><USER20> The question is not whether it works or not. This new alternative to open source may be great, we're just asking people to clearly distinguish their new model as such.

</comment></comment><comment><USER22> People are talking past each other here b/c we can't decide if we're concerned primarily with the ethics of software freedom, or just with confusion of Open Source (TM) labeling.

This discussion says to me that maybe RMS was right to insist on using the term "free software", and to refuse to promote "open source". When we debate the merits of an "open source" (or more confusingly, a "FOSS") license, people end up talking past each other. Are we talking about what is an effective licensing / development strategy, or are we talking about software ethics? People who do not agree with the free software ethos are understandably confused to find themselves criticized on moral grounds for choosing a license that makes source available but does not permit full exercise of user freedom. Hey, I thought we called it open source b/c we didn't want to focus on user freedom as ideology? Right? Maybe that was a mistake.

My personal view is that there is no logical problem in an author talking about open source as the basis for a restrictive, source-available license -- as long as there is no implication that the license is endorsed by a particular standards body. And conversely if you are a proponent of software freedom, maybe you have to recognize that there is some merit in referring to this as "free software" instead of something else, to avoid confusion.

</comment><comment><USER23> Blocking the sale or hosting of software is one thing; Commons Clause also blocks any "consulting/ support services related to the Software." That's way too broad; is a system that uses Redis "related to the Software"? It's also short-sighted: it limits the ecosystem's growth to the ability of one company to expand and take on "consulting/ support services."

</comment><comment><USER24> At least non-free licensing gives us an easy way to tell which software is not worth using. It's funny how these recent packages in the news all have FLOSS alternatives:

* Mongo? Why not Pg?

* GitLab? Why not Fossil?

* Redis? Why not better architecture?

* Vespene? Why not Nix tools?

You may see each of these as flamebait. I see each of these as a discussion that, here on HN, usually ends in stalemate. What I'm suggesting, then, is that we simply allow these package authors to tip the scales decisively for us: Reject non-FLOSS and the path is clear.

<comment><USER3> Mongo and PG are not quite alternatives. That make different kinds of consistency promises. One FOSS alternative to Mongo that offers similar consistency behaviors is RethinkDB.

An alternative to Redis if you don't need persistence is plain old Memcache.

</comment></comment><comment><USER25> (Author of Dgraph here).

To Drew Devault: Just came across this article, and there's no comments section in your blog post.

> Finally, I have some praise to offer. Dgraph was briefly licensed under > Apache plus the Commons Clause, and had the sort of misleading and false > information this article decries on their marketing website, docs, and so > on. However, they've rolled it back, and Dgraph is now using the Apache 2.0 > license with no modifications. Thank you!

Please don't "praise" us. When we switched to the clause (back in April 2018), we had changed wordings on our site (we don't do any marketing, so not sure which marketing website you're referring to) to not mention open source but to mention liberally licensed (which I strongly hold that Apache + Commons Clause is, more so than AGPL). There was no false or misleading information. In fact, that was pointed out to you multiple times, but that didn't change your rhetoric.

Dgraph is no longer under Commons Clause and (its core) is under Apache 2.0 license, so I think I can speak as an open-source guy here. There are people like me out there, who'd like to ensure that they can make a livelihood out of writing open source software, without asking for donations, or doing another job. We'd also like to ensure that if we run a company around open source, that company can be sustainable and profitable. If your answer to these people is to switch to closed source, then you're doing a bad job of promoting open source.

In fact, your attitude towards open source is damaging to anybody who is willing to spend their time and effort building open source and expects to make a good living out of it.

</comment><comment><USER26> If you don't like software with these new style licenses, then don't use software with these new style licenses. Explain what it is that apparently so deeply violates your right to exist, but puritanical screaming and finger- pointing black & white contrasts never really convinces people of anything. All these rants are lame.

The best comment I've heard so far w.r.t. CC is how it complicates acquisition of software by businesses. That's a hugely legit complaint -- but the same complaint applied to the GPL not more than 2 decades ago. Companies adjusted before, assuming value exists in this new breed of license, they'll adjust again.

Meanwhile as a free software author, I'm very happy to see smaller companies experimenting with methods to protect their work in whatever way they see fit. Hopefully something "socially acceptable" comes from all this that might be useful to me at some stage in future.

Finally it's worth remembering that there is a HUGE degree of freedom to explore between closed source, pay-only software and free software as we have it today. I have yet to see a recent example of a license that removes what for me is the greatest benefit of all: the ability to fix and debug things without opening a ticket. Fundamentalist shouting matches erupting every time someone tries something new reminds me of another modern debate - religion, and like there, the loudest and most annoying rarely have meaningful new information to share

\----

There is another angle that seems very interesting. Industry consolidation and typical policy within large companies towards employees working on free software ("you can't unless it's approved & we own copyright") means 'the movement' that existed in the 90s is all but dead and gone. Any big real development that happens in the open typically happens because some employer is explicitly paying an employee to advance their agenda through technical means (see e.g. Kubernetes).

To me, a new license that not only incentivized but made practical and sustainable large software projects independent of those large consolidated employers is far more valuable than not having to toss a few dimes in the pot if that software is used in some circumstances where profit is made.

<comment><USER27> His problem with them is in the title of the post. If you want to do something that is non-free, don't call it open source or free software, both words have accepted definitions, by osi and fsf/gnu respectively. Your reply is entirely off-topic.

<comment><USER28> "Apache+Commons Clause" does imo not pretend that it is free/open-source. It's a free/open-source license _combined_ with a restriction. I think this is or should be plain for everybody who reads the license.

In a way I can accept that 'Commons' is being used as a restriction in order to restrict monetary profit. With land, air and especially water there are also restriction in place. E.g. there is much critic if a multinational comes and bottles the water and (in some places) impairs local usage. Rules are then necessary.

<comment><USER29> The Apache Foundation says it has gotten confused questions about this almost immediately and has asked that this combination not be used (it's own "brand guidelines" say to only use combinations like this if users are granted additional rights, not if the user is restricted further)

</comment></comment></comment></comment><comment><USER30> i'm sympathetic to (and in the same boat) as the developers that are considering "licenses" like this one. but i agree with the author that the language being used is fraudulent and the terms are one-sided (hence the quotes). i've made an attempt at coming up with a license that better bridges the gap between open and closed. my goals were:

* pay to use the software * assure developers that they can also monetize their work * assure users that prices won't change unpredictably

[https://github.com/db4j/pupl/blob/master/PUPL.md](https://github.com/db4j/pupl/blob/master/PUPL.md)

would love any feedback or alternative licenses that capture similar elements

</comment><comment><USER31> He should have been linked to one repo to have some context. Is the commons clause limited to the project itself or can I still sell my software using a library with a commons clause?

</comment><comment><USER32> Why is there a canonical definition of free English words guarded by an institution? Isn't the English language free and open?</comment>


Ask HN: Is the Mill CPU Vulnerable to Spectre? - <AUTHOR> With both x86 and ARM being vulnerable to Spectre, it would be interesting to know where the novel Mill CPU architecture stands in this space.
And, if Mill isn't vulnerable, why is this the case?
To me, it seems like a good argument for the Mill architecture if the designers were able to avoid a bug they didn't even know existed. <comment><USER2> Note that these problems are not inherent to out of order implementations. Dan Ingalls (who first implemented Smalltalk) said "you can cheat as long as you don't get caught". When speculation fails, all side effects are rolled back in x86 and ARM processors except reads to the cache since these were considered harmless. Writes to the cache are already rolled back so not doing so for reads just saves circuit complexity. There is no reason why this can't be added to the next chip designs, though nothing can be done about what is already out there.

As for the Mill, it has enough differences that these attacks wouldn't work on it. Just the separation between protection and translation, for example, would stop Meltdown in its tracks.

<comment><USER3> It is flawed to 'roll back' changes. Instead, those changes have to have never existed. Otherwise, there is a short window of time when the cache-visible side-effects have happened, and haven't been rolled back yet, and the attacker can see them (due to preemption, due to hyperthreading, due to running in another core etc).

</comment></comment><comment><USER3> (team Mill)

The Mill is not vulnerable to Spectre and Meltdown.

We have a paper that will go public shortly explaining how these attacks apply to in-order architectures that do support speculation, and how the Mill avoids them.

Watch this space :)

<comment><USER4> Will you be sticking to the timeline mentioned in this post: [https://millcomputing.com/topic/meltdown-and- spectre/#post-3...](https://millcomputing.com/topic/meltdown-and- spectre/#post-3168)

Will you be posting this paper on HN? I'm sure a large portion of the community here would be interested in it.

</comment></comment><comment><USER5> There has been some discussion of Meltdown and Spectre on the Mill forums:

[https://millcomputing.com/topic/meltdown-and- spectre/](https://millcomputing.com/topic/meltdown-and-spectre/)

</comment><comment><USER6> It doesn't physically exist, so no.</comment>


An Important Message About Vocabulary - <AUTHOR> http://dglenn.dreamwidth.org/1588929.html

<comment><USER2> I first heard the term "cisgender" two or three years ago. It sounded strange at first -- I remember having to look it up -- but I've gotten fairly used to it now, though I don't think I've ever used it myself. This well-written post gives me a deeper understanding of its necessity.</comment>


Why Prada is killing it - <AUTHOR> http://finance.fortune.cnn.com/2011/09/20/a-tale-of-two-consumers-why-prada-is-killing-it/

<comment><USER2> I'm a little curious about this line from the article:

"Here's the basic idea: 54.5% of U.S. consumers make less than $100,000 a year"

According to wikipedia ([http://en.wikipedia.org/wiki/Household_income_in_the_United_...](http://en.wikipedia.org/wiki/Household_income_in_the_United_States)), a household income of $100k would put someone in the 84th percentile. They put the 54th percentile at around $50k.

Any idea what I'm misunderstanding here?</comment>