I Quit Google to Work for Myself (2018) - <AUTHOR> https://mtlynch.io/why-i-quit-google/ <comment><USER2> Author here! Cool to see this pop up on HN again. I was wondering why I was getting so many Twitter notifications all of a sudden.

As a quick update, I continue to be happy with my decision to leave Google. I enjoy working for myself, even though I haven't made much money at it yet. I'm ending 2019 with ~$7k in revenue, which isn't much, but it's a bump from the $2.2k I made in 2018. My savings are still far higher than my annual cost of living, so I'm not in any danger of running out of money in the next few years.

I'll be posting another year-end summary to my blog on Feb. 1, 2020. I also write monthly retrospectives[1] about my work and weekly updates on What Got Done.[2]

[1] [https://mtlynch.io/retrospectives](https://mtlynch.io/retrospectives)

[2] [https://whatgotdone.com/michael](https://whatgotdone.com/michael)

<comment><USER3> Thanks for sharing this! Labor markets would be a nightmare without people who can reason through their own incentives like you :).

</comment></comment><comment><USER4> The promo process story hits home with me. I was trying to get promoted a few years back at my company. Over the previous 4 years, I built out a lot of systems, fixed critical bugs in our software stack, stayed late during crunch mode ensuring on time shipping, and volunteered to debug issues upstream issues impacting our software. Our team was customer facing so back-end bugs always surfaced in our product. I was a customer focused developer and fixer.

That being said, every time promo time rolled around, I had nothing to show for it. You needed metrics and some plan of how you were going to show your manager you were performing at the next level or it didn't count. The software that I worked on over a crunch week that made the news papers, doesn't count. My managers would put me on project that didn't lead to any favorable trajectory for promotions. Every project they ever suggested, which I took up is now deprecated or severely paired back to the point where it doesn't matter outside of my personal development.

Now, I'm 4 years in and starting from zero in terms of building my foundation for working on a project that is valuable enough to the company to reach a higher role. I'm still willing to do the hard work, spend the occasional late nights, get lost in my passion of working on customer solutions, and try to have an impact. My question now is whether it makes sense to build for my company or build for myself?

<comment><USER5> Sounds like you needed a brag doc. You are the only one that can remember everything you did, so write it down and hand it to your manager so they can remember too.

[https://jvns.ca/blog/brag-documents/](https://jvns.ca/blog/brag-documents/)

<comment><USER6> Interesting I do exactly that to keep track and have something in hand on a rainy day where the motivation tanked.

I usually keep it analog though because a ruby piece of paper that fills over time is more tangible than a doc. But i guess that is personal preference ;)

</comment></comment></comment><comment><USER7> The idea of working to please an anonymous promotion committee is quite depressing.

Why do this "pick me" dance when it's completely within your control to get the job you want within a few weeks?

By far the path of least resistance is simply to get a job and the promotion elsewhere.

Or do something entrepreneurial like this guy and completely tie your skills and abilities to the rewards.

As a talented engineer at Google the last thing I would ever consider to improve my lot is spending years playing this game.

<comment><USER8> > The idea of working to please an anonymous promotion committee is quite > depressing.

Having experienced both, I'd say it's still infinitely better than this being a negotiation with your direct manager.

<comment><USER9> I've had the opposite experience. With some exceptions, It's not that hard to figure out how to win over one person. Even if they are a terrible manager, you get a sense of what they consider important.

Figuring out the dynamics of a committee is harder.

<comment><USER10> This sounds like a feature, not a bug - it prevents extroverts who suck up to a boss always stepping over introverts who do a better job.

<comment><USER11> And yet in one short article the OP perfectly summed up who google sucks at making long term software that continues to work.

People often say that google rewards for new projects and ideas vs maintaining the old, I didn't really understand what that meant until he explained it here. Doing good work is meaningless, the only that matters is what some faceless committee thinks.

What's odd is that the committee doesn't look at code quality, maintainability or longevity. They don't care about documentation at all apparently because it's not a quantifiable metric. And yet if you asked any engineer they would all say they'd rather work with documented code vs undocumented. It would ave them time and allow them to fix things faster.

The fact that google is trying to turn everyone into a quantified machine is making the whole org very sick.

<comment><USER10> Remember that you're reading an anectodal accounting of a single person who got rejected while working in a single team. There might be bias there :)

<comment><USER12> There is indeed bias, but working at a company with a similar committee process, the committee process does indeed introduce its own series of biases and failure modes.

For example, depending on how the committee is chosen and the size of the company, you might still be known to the committee.

Popularity therefore still matters a great deal.

This isalso why my work inbox is chock full of weekly, biweekly, and monthly updates to products and features that are completely irrelevant to me, my team, or even my domain.

Complexity is hard to measure and somewhat subjective, but might be an important metric for promotion.

With potentially less specific domain knowledge available to the committee, something that seems easy might be extremely complex or vice versa.

Maybe you make something so easy and configuration driven engineers can delegate to non-engineers.

Now your job looks easy, but it took months of research to come up with a schema that can encode global tax rules (made up example) and only a few weeks to move hardcoded logic to the configuration and a couple days to build a UI on top.

Now engineers never touch tax rules ever again and deliver actual value in other domains. Your team remains small, possibly even shrinking as a result of your work.

But the Nth rewrite of $INTERNAL_LOGGING_FRAMEWORK has all kinds of sexy QPS, memory consumption, process time, etc. metrics to sell.

Right or wrong, I can say from experience the rewrite tends to get the promotion unless the tax guy writes a _really_ compelling story in just the right way.

Humans are humans, be they managers or committee members.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> Now granted, I never worked at Google, but I've worked for several F500 companies through the years. I made a promise that I'll never work for one ever again because this corporate structure and bloat tend to engineer promotions and reward through things that do not actually benefit the company.

His work, which was useful to the company essentially got reworked into something that impressed the "promotion committee". I think this is the notion that should terrify all founders, to not let the original culture turn into endless committees and stifled work products.

I guess Google can endure this only due to the sheer cash it generates, and no i do not think that their promotion structure supports that.

<comment><USER14> If you're at a corporation you should figure out which game you're playing. Are you there to "benefit the company" or get "promoted and rewarded"? Make a decision but they are different paths leading different directions.

<comment><USER13> I don't disagree with you, only as a business owner I'd be pretty upset if I even knew that was going on amongst my new hires. If someone can't explain to me our company vision after 90 days, as well as their role in delivering it - I'm not saying they'll be fired but it's not a long term engagement between us.

<comment><USER15> Isn't that a management failure? If the most effective way to "get promoted and rewarded" is substantially different from "benefit the company", then management is not directing effectively.

<comment><USER13> 100% my point in fact.

</comment></comment></comment></comment></comment><comment><USER16> Discussion at the time of publication, nearly 2 years ago:

[https://news.ycombinator.com/item?id=16483241](https://news.ycombinator.com/item?id=16483241)

(I understand it's not considered a dupe by HN; just sharing for history's sake.)

</comment><comment><USER17> _My manager assured me that my promotion was close. He felt that I was already capable of senior-level work. I just needed the right project to prove it to the promotion committee._

Who hasn't been there before. I've had my manager tell me I have a "bright future" in my team, a couple of weeks before it was dissolved.

<comment><USER18> Same here. I was doing an amazing work and my manager really feared me leaving the team. He'd do anything to keep me there. 2 months fast forward, the team has been canceled, and 20 people were searching for a new position.

</comment></comment><comment><USER19> Google was great 15 years ago. Lately, most of what I observe from its products and read about the company lends the impression they've fallen victim to their size and are just another dumb, beurocratic corporation whose best innovations come from acquisitions of smaller startups (Maps, Android, Nest, etc). Good on the author for leaving and seeking a place where he's free to truly innovate.

</comment><comment> ainar-g > Wait a second. _I_ was in a business relationship with Google.

> It may sound strange that it took me two and a half years to realize it, but > Google does a good job of building a sense of community within the > organization. To make us feel that we're not just employees, but that we > _are_ Google.

> That conversation made me realize that I'm _not_ Google. I provide a service > to Google in exchange for money.

People, and especially young people, should think about this more. It's called "labour _market_ ", not "labour community". A company as a whole is a faceless, consciousness-less creature that will eat you alive if that increases the right metrics. And it's definitely not a loving parent-figure that some of the HR people want you to think it is.

Also, this needs a (2018).

<comment><USER20> My dad had just one job all his life, for 33 years. While he didn't become rich, he did enjoy _relative_ peace of mind, pension etc.

Of course everything is relative, but there was a time where companies had a little bit of concern to their employees, however small it was.

Those days are gone. These days, companies don't even pretend. A very small percentage of people are going to do well, for the vast majority it is just slavery, plain and simple

<comment><USER21> Nonsense. Everywhere I've been employed cared about my wellbeing and when I was an employer, I cared about the wellbeing of my staff.

Calling an employer/employee relationship _slavery_ after a Googler complains he wasn't promoted fast enough is peak self-importance.

<comment><USER22> I feel like you're underestimating how terrible Google's stack ranking system. It basically exploits you into doing more work than you should with the prospect of making more money, only to smack you back down and ask you to do 6 more month of back breaking work. More than you were hired to, mind you.

<comment><USER13> Without sounding judgy, this is something that I joke with my fellow Gen-x'rs and Boomers with. Millenials expect prepayment for what they're about to do, in hopes they can actually do it.

I was raised in a generation that you had to prove you could in fact, do the work.

I appreciate and enjoy their confidence, and don't much care for what you might call "being entitled", though I can see this will become a protected phrase in the near future.

<comment><USER23> This reflects more on our generation's distrust of the systems that we work in than any kind of entitlement or misplaced confidence. As well as our general economic adversity/anxiety, debt, lack of future prospects, exploitation, etc.

<comment><USER24> This comment amuses me because the same people seem to have a high level of trust in the government as a general rule. Or at least in candidates on the left who advocate for a government that is more involved in day-to-day life.

</comment></comment></comment></comment></comment></comment></comment><comment><USER25> The "metrics or it didn't happen" meme, which really means ignoring all the observable facts that aren't numbers, is very real. It's also a virus that enables smart people to make dumb decisions, and it's starting to spread outside the valley.

</comment><comment><USER26> In the end where do you get your rocket fuel?

It's either

a) External validation from factors out of your control, or ...

b) Internal self-motivation which you have 100% linked to your own volition.

Waiting for some unicorn to land in your lap with a golden certificate of promotion might be a little difficult to attain. Attacking interesting problems and helping others with your talents might be more meaningful.

</comment><comment><USER27> Google is worth almost a trillion dollars. Their ads shit golden billions of dollars. They have more than a 100k employees. Google is a big corp with big corp politics and they can get their cream crop of engineers, use them, abuse them and know that the next batch is waiting in line. It's kind of same with MSFT, AMZN and the others.

If you really value your skills and have the confidence that you can go it alone (or at a smaller company) and make the same-ish, go do that instead.

It is really hard to beat Google's FU compensation but if the smart engineers at Google banded together to do their own thing, they'd have a bigger return than adding to Larry and Sergey's billions.

</comment><comment><USER28> I get the point of being able to measure success by something quantifiable, but the emphasis on _individuals_ needing to prove the impact they've made strikes me as an odd setup.

I've never worked at a FAANG but currently at a F100 in fintech, and as the product manager for our team, part of my role is to make sure our team is doing work that has quantifiable value.

But for ICs on the team they're not penalized if I make the wrong decisions and lead the team down a negative path (however part of my role in being successful is making our team goals transparent to all the team so they can help course correct if my thinking is way off).

<comment><USER24> Reading this comment and thinking back to my memory of the article from reading it earlier today and when it has been posted in the past, I wonder if the "failed promotion" wasn't so much a matter of "not working on a shiny new project" as not making sure metrics were in place to document how the improvements to the service he was maintaining made it so it could handle more load.

At some point on the ladder it's no longer enough to do good work, you need to show your work and why it matters to the company.

</comment></comment><comment><USER27> Kudos to you. I wish you the best on the IndieHacker journey and pray that you end up making more than you would at Google, have better fulfillment in life and create more value for everyone else.

We really need more people working on harder problems that create a better future for everyone rather than figuring out how to spam more clickbait ads to people.

Google is great but it seems they're quite astray of their mission of organizing the world's knowledge and making it universally accessible. We have a long way to go to truly achieve this.

</comment><comment><USER29> I work for a small company and have a fairly high level of freedom when it comes to making decisions on which projects to work on.This year I worked on projects I deemed most beneficial to the busines. At the end of the year I did receive an absolute zero on top of my base salary.So in 2020 I will only work on projects that will mostly benefit me personally but not necessarily the company.

</comment><comment><USER30> "In my head, the promotion committee was this omniscient and fair entity."

I think this is the pure, gullible heart at the center of the word naivety. It's strange for me to read it and believe that anyone would ever write this without a strong side dish of sarcasm, and especially about Google. Google, the evil advertisement agency, Google the clobberer of GMail accounts, Google the banner of Android developers. How can anyone reach adulthood and still believe in these kinds of fairy tails?

</comment><comment><USER31> Title is a lot like salary--hoping for a significant improvement within a company is a fool's errand. The way to get "promoted" is to switch jobs.

<comment><USER32> Salary is the important part, some companies will give out the title but not the corresponding salary. It's especially bad at places like Amazon, where you will often be given deferred and reduced compensation below the bottom of the next band. It really makes no sense to chase promotion unless you are going for L7+ [https://www.teamblind.com/article/How- refreshers%E2%80%9D-wo...](https://www.teamblind.com/article/How- refreshers%E2%80%9D-work-at-Amazon-pVJmPiL4)

</comment></comment><comment><USER9> It appears it isn't going terribly well so far:

[https://mtlynch.io/keep-growing-never-profit/](https://mtlynch.io/keep- growing-never-profit/)

[https://mtlynch.io/solo-developer-year-1/](https://mtlynch.io/solo-developer- year-1/)

But, he doesn't seem discouraged. I'm guessing whatever equity he had means he has a fair amount of time to figure it out.

<comment><USER33> It isn't going well yet from a financial perspective, but he writes this:

"People have asked me if I'm still happy with my decision to quit and start my own company. The answer is definitely yes.

As someone who has always valued independence, I love being a solo developer. It makes a world of difference to wake up whenever I want and make my own choices about how to spend my entire day. This is how I want to live the rest of my life."

From a life-satisfaction perspective, it sounds like it's going extremely well! (And that's WAY more important, at least to me.)

<comment><USER34> As someone currently in a similar situation to the article author, I can wholeheartedly agree that regaining your own agency and being able to determine technology and product decisions is a huge relief and opens up greatly enjoyable and satisfying opportunities for growth.

Developing a product takes a lot of time and effort, especially for a small/solo team - and yes, by pure financial metrics it may seem like success is a long distance away.

In much of the world it also takes a degree of good individual (or family) fortune and savings to be able to embark on a journey like this, and I think it's important to be aware of that privilege.

That's not a criticism, but something worth keeping in mind especially when discussing and explaining these projects. Not everyone in society can make this kind of leap (despite what those who tend to profit from inspiring and leading bright young developers might tell us) due to the anxiety involved in paying recurring bills. This is even more true in the U.S. with the additional bundled decision complexity (HMO vs PPO, etc.) and financial cost of selecting and paying for healthcare, versus taking the gamble that you'll be one of the lucky members of society not to require medical care. Well-educated and well- compensated folks such as the audience of HN are likely among the people most able to take the risks required.

Anyway, despite the argument that this might not be an economically rewarding project at the moment: value creation is a different, harder to measure metric, and I'd argue the author is creating value for themselves and for their community they're building tools for.

(Upvoted both parents of this reply, since I think this is a really important and interesting trend and topic, regardless of any argument positions taken)

</comment></comment></comment><comment><USER35> Another victim of the 4 hour work week scam

</comment><comment><USER35> I wrongly thought google only hires smart people...

</comment><comment><USER36> Do the members of this dystopian-sounding promotion committee at Google actively develop software themselves (when they're not promoting or failing to promote people)? Is this a case where those who can't develop software judge those who can? Or am I reading too much into one ex-Googler's account of their own experience?</comment>


Fall of the Banner Ad: The Monster That Swallowed the Web - <AUTHOR> http://www.nytimes.com/2014/11/06/technology/personaltech/banner-ads-the-monsters-that-swallowed-the-web.html

<comment><USER2> Ah the irony of an article lamenting something they're currently using quite heavily.

<comment><USER3> It is not ironic, they and other publishers are in a Nash equilibrium. No single player can change the state of monetization world. This should be recognized as it is counterproductive and useless to shame/attack individual players.

Also HN is constantly lamenting about the ads that are easily recognized and switched off with adblock, ghostery, etc. I consider systemic bias and corruption of mass media to be much more dangerous than ads. However, systemic biases and outright lies in online media are not really obvious so HN mostly ignores that, concentrating on easy target - ads. An absurd consensus of the community in my view.</comment></comment>


BootstrapMaster Demo - <AUTHOR> http://bootstrapmaster.com/demo/simpliq

<comment><USER2> IMHO, the themes are bloated with unmaintainable Javascript libraries and snippets, heavily dependent on scattered around CSS rules and files. If Bower ([http://bower.io/](http://bower.io/)) or Jam ([http://jamjs.org/](http://jamjs.org/)) was used, the themes would be actually useful instead of just beautiful demos.

Also, LESS is not used for the customizations, gradients, etc. made by the theme author, just for Bootstrap. Which is ridiculous. Compass & SASS would be a great alternative for maintaining such a large frontend effort. Bootstrap has been ported: [https://github.com/vwall/compass-twitter- bootstrap](https://github.com/vwall/compass-twitter-bootstrap)

No real project can make use of that as-is, it's simply unmaintainable. Ask any serious frontend developer, he'll laugh at the workflow used to develop such themes.

</comment><comment><USER3> This is really quite beautifully done. This seems like a really excellent example of a demo. Have you considered something like Joyride [[http://foundation.zurb.com/docs/components/joyride.html](http://foundation.zurb.com/docs/components/joyride.html)] to show off the various features of the design?

</comment><comment><USER4> this is pretty baller</comment>


Mistakes in programming language design - <AUTHOR> http://beza1e1.tuxen.de/articles/proglang_mistakes.html <comment><USER2> I totally disagree on the parser-unfriendly syntax point (no. 1). C++ is a particularly bad example in that code cannot be definitely parsed without semantic information, however I think limiting yourself to a language which can be expressed as LALR/LL(1) is pretty brain dead - you limit yourself to what a given algorithm can express clearly rather than what is clearest to the programmer. It's really actually pretty hard to make a language "naturally" LALR anyway, at least without hacks of some kind. C# definitely isn't LALR, there are many features which get in the way of LALR-ness, such as generics which are, however, useful.

I do agree on every other point, however!

<comment><USER3> And I completely agree with you here.

The progress in programming language design is going to come from eliminating _human unfriendly_ syntax. The closer you can get to something that let's someone express their intentions without restrictions, the better. The computer is, uh, servant of a human.

There are many barriers in the way of programming languages or computers in general adapting to human functioning. But whenever someone takes the line that says humans must-adopt-to-computers, it is a fail. And that fail is going to be swept away by the next technology which _just works_.

<comment><USER4> Programming languages force programmers to think clearly and express ideas unambiguously. It's not a bad thing we should avoid; it helps us write robust software.

<comment><USER5> Both points are valid. Programming languages should be designed for people to use, and only secondarily for machines to execute. However, they should be designed so as to encourage clear expression of ideas when practical.

I think whether a general-purpose language should discourage or prevent unclear thinking is an open question. I don't think I've seen an example of a language doing so without being somehow crippled, and that's a Bad Thing.

<comment><USER6> " Programming languages should be designed for people to use"

Exactly. Which means that it must be tool friendly, hence LALR/LL(k). Unless you want to do all your refactoring yourself.

<comment><USER2> I don't think LALR/LL(k) implies automated refactoring is easy and anything else does not!!

Obviously non-context-free grammars are a problem, but a GLR or PEG grammar is still perfectly refactorable.

You forget that refactoring an intuitive grammar to LALR involves totally mangling that grammar and _making it more difficult for everyone_.

If the language is expressed as a GLR or PEG grammar then tool makers have it easier I reckon - easier to understand grammar.

The way to really ensure it's easy for everyone is for the compiler write to provide some abstract yet intuitive representation of the underlying grammar.

It really isn't an either/or, it's a case of both at once, I think!

<comment><USER6> I think you hit the nail on the head there. "Context-free" is more of a requirement than LALR or LL. The author clearly isn't a parser writer. I am, but I've yet to try a PEG grammar because ANTLR does such a great job.

But this doesn't change his point (or mine): languages should be created that are easy to write parsers for, so that its easier to write good tools.

And I think this applies to the grammar too: ANTLR's .g files are a good grammar language because its easy to write tools for - hence AntlrWorks.

<comment><USER7> I'm the author and i did write some parsers. However i'm more in the write- parser-by-hand camp and context-free is not so hard here. ANTLR needs strange hacks to parse Python with its whitespace indentation. A handwritten parser just needs some context within the lexer.

In my eyes a parser generator is the solution, if you want to trade efficiency for cross-language-portability. ANTLR is probably the best solution at this point, though the C backend is quite wierd.

<comment><USER6> I like to get shit working first, and then downcode if the PG does a horrible job. Nothing better than a hand-written anything, but I like the options of tools. Stange hacks for python supports your original argument I believe.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> It's possible that I'm missing the thrust of #0, but I don't see how an object-oriented language completely without the concept of a "null pointer" could be used to construct elementary data structures like linked-lists and trees without resorting to special classes as terminators. It would be just as clumsy as using null pointers in the first place.

If "not-null" references were provided in addition to normal references, the effect would be pretty similar to the common usage of "final" fields in Java- compiler-enforced initialization.

<comment><USER9> There are alternatives to making references nullable by default.

For example, functional programming languages often support algebraic data types and pattern matching. Creating the equivalent of a nullable value is one possible application of these features. Typically, the type system would make sure you can't get to the underlying value without first checking that your data is non-null via pattern matching, so the equivalent of derefencing a null pointer simply isn't possible without generating a compile-time error.

Note that this idea is independent of the underlying type, so there's no particular reason you couldn't have a type system that could wrap an OO class type in an algebraic data type. Unfortunately, for now, these ideas seem to live in different worlds: I know of no mainstream OO language that has anything close to the power of algebraic data types and pattern matching that is commonly available in functional programming languages. But this is one way you could have an OO-friendly language with powerful data structures and without relying on the idea of a nullable reference.

<comment><USER10> Pattern matching seems to mix really poorly with conventional OO subtyping / inheritance, though multi-methods seem like a good synthesis. (I haven't really used CLOS enough to decide, though.)

<comment><USER9> I'm not sure OO fundamentally requires the kind of inheritance relationship that is familiar from languages like C++, Java and C#, though.

For example, the Liskov Substitution Principle is phrased in terms of a subtype relationship between two types. This is a logical relationship rather than a physical one: it is about whether both types present the same interface in terms of (some aspect of) their state and behaviour, and therefore generalised code can be written that interacts analogously with instances of either type.

This sub _type_ relationship need not be realised via a sub _class_ relationship, which is a physical relationship related to the mechanics of inheritance hierarchies and so on.

I don't see any problem with mixing pattern matching and OO, if you allow a representation as an algebraic data type as one view of a class and provide a mechanism to convert between them in some suitable way. Indeed, I'm fairly sure I've seen papers investigating this approach, though I'm afraid I can't immediately remember what the authors called it so I could look them up; if anyone knows what I'm talking about, please post citations if you have them.

<comment><USER10> Late reply to a late reply.

While I think you're probably right, if I'm already representing things with algebraic data types, I'd rather just skip using OO altogether.

</comment></comment></comment></comment></comment><comment><USER11> > Dynamic languages are fast enough to implement internet services and outgrow > the demeaning term "scripting language".

This is never going to happen, because "scripting language" is used as a slur or insult, rather than a term with any usefully defined meaning. It's not possible for Python to "outgrow" being a scripting language as long as that's used as a condescending shorthand for "doesn't look like C++".

Consider Ruby. How many applications do you know of which use Ruby for scripting? Or Python -- I think my system has two applications which can be scripted in Python (Gimp and Blender), but many dozens of applications _written in_ Python. If Ruby and Python are scripting languages, then so are Smalltalk, Haskell, Boo, or dozens of other high-level languages. And yet, you'll never hear of these being called "scripting languages" because nobody has an axe to grind against them.

\</comment><comment></comment><comment>

Unrelated to that, Haskell does have pointers (including null pointers) -- you can use them just like pointers in C/C++.

<comment><USER12> "This is never going to happen, because "scripting language" is used as a slur or insult, rather than a term with any usefully defined meaning."

This isn't necessarily true. See Ousterhout's dichotomy: <http://home.pacbell.net/ouster/scripting.html>

<comment><USER11> That's a really wonderful link, and I wish more people used the definition it advocates. I've one minor complaint, in that it conflates typeless and dynamically-typed languages, but considering when it was written that's not a big deal -- strong, dynamically-typed languages probably didn't exist in any significant way.

Unfortunately, almost every use of "scripting language" I've ever heard is more along the lines of:

"We can't write our GUI frontend in Python^! Scripting languages are too slow for rendering advanced graphics."

Usually uttered by somebody who's been writing C++ for 20 years and refuses to touch anything more recent.

^ Substitute Boo, Haskell, Scala, Clojure, or anything else without enough curly braces

<comment><USER5> _strong, dynamically-typed languages probably didn't exist in any significant way_

Need I do the Smug Lisp Weenie thing?

That said, a lot of people didn't make the distinction between dynamically- typed and untyped twelve years ago. It was common to refer to Scheme as untyped then, and I think a few people still do.

<comment><USER11> I haven't used LISP in years, so my information may be out-of-date, but isn't it mostly untyped? I don't remember it having any mechanism for defining types -- the only types were conses and atoms (numbers, strings, etc). There was no way to say "this string is a Name and this is a City, and they are different types".

<comment><USER5> Common Lisp has several kinds of user-defined types (types, structs, classes). It is possible to write non-trivial code without ever using them, and I don't think they really fit in to traditional Lisp style. Classes are fairly popular in modern Common Lisp code.

</comment></comment></comment></comment></comment></comment><comment><USER12> I don't necessarily agree with #2. Yeah, SML has formalized syntax, but it's also a frozen language. It simply isn't practical to have completely formalized semantics for a language like Python or Ruby that are still actively being changed. Nor is it necessarily always possible to eliminate all implementation-specific quirks.

In short, it's a good thing to have a language have few quirks, but there is such thing as overspecifying.

<comment><USER10> These things don't need to be taken to their logical extremes, though - handling _most_ of the semantic edge cases is still an improvement, even if it isn't exhaustive.

Emphasizing well-defined semantics could also be a push to keeping the language small and clean.</comment></comment>


Ask HN: Who is going to 'Work at a Startup 2012'? - <AUTHOR>

I received my invitation today and am quite excited to attend and learn more.  Who else is planning on going?<p>For those that don't know what I am referring to: http://workatastartup.org/ <comment><USER2> Did they reject anybody? There is a small marginal cost for every invitation they issued but a huge option value if any of their startups hires someone.

<comment><USER3> I got a rejection. Still determined to work at a startup so will have to look for some other opportunity to fulfill that dream.

<comment><USER2> I heard many people submitted verbatim copies of their resume. Imagine having to browse through hundreds of applications and ASCII resumes. I suspect formatting of resumes trumped content.

</comment></comment></comment><comment><USER4> I'm moving from Toronto to Mountain View this weekend and was excited to receive the invitation for this event last night.

</comment><comment><USER5> I am. I've been issued an invitation. I'm quite excited about the whole event. See you guys there!

</comment><comment><USER6> I have flights booked from Toronto. I'm pretty excited.

</comment><comment><USER7> I'll be there, I'm local and excited.

</comment><comment> saiko-chriskun aw didn't know 'bout it :(</comment>


Frank Oppenheimer's blacklisting led to the Exploratorium - <AUTHOR> https://en.wikipedia.org/wiki/Exploratorium <comment><USER2> I flagged this for a typo in the title. It needs to be either "leads" or "led" to be grammatically correct, with "led" being the more likely choice given that the event was in the past.

<comment><USER3> We fixed the title, but we also buried the submission because it breaks the HN guidelines, which prohibit editorializing in titles.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)</comment></comment>


Causality in machine learning - <AUTHOR> http://www.unofficialgoogledatascience.com/2017/01/causality-in-machine-learning.html <comment><USER3> I worked on a project a few years ago for a UC Berkeley biostatistics professor who believes he has a theoretically proven approach of using non- randomized observational data to create an asymptotically-efficient unbiased estimator of counterfactual treatments. My impression as a programmer who has only dabbled in machine learning is that this is a phenomenal claim far beyond the state of the art.

My job was to take an inefficient proof-of-concept R package, and make it computationally and memory efficient enough to run on real-world datasets. I failed totally. The obvious explanation would be that I just wasn't able to understand the math involved well enough to implement the algorithm despite immersing myself in it for months. My personal guess though is that both the paper and the reference implementation were flawed in some way that made the task impossible.

Anyway, the paper is here:

Targeted Maximum Likelihood Estimation for Dynamic and Static Longitudinal Marginal Structural Working Models

Petersen, Schwab, Gruber, Blaser, Schomacher, and van der Laan; J Causal Inference 2015

[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4405134/pdf/nih...](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4405134/pdf/nihms675179.pdf)

And the R package here: [https://github.com/joshuaschwab/ltmle](https://github.com/joshuaschwab/ltmle).

My understanding was never perfect, but my belief is that there is kernel of insight in this approach that has not yet been explored in machine learning. Alternatively, maybe it works as is, and just needs a better implementation. I'd love to see someone implement this approach, or fix it, or discredit it. As it is, I think it's potentially incredibly valuable work that is getting very little attention.

<comment><USER4> This is very interesting from a development perspective. You seem to have tested the working parts of the algorithm and broke it down to multiple passes when appropriate, I am surprised your work did not reach completion. You did all the right things.

What exactly was considered wrong with the output? How did this fail?

<comment><USER3> _How did this fail?_

I'm still trying to understand this, and I worry that much of it is due to my personal failings. I think I'm much worse than most people at making headway on problems when I know that my understanding is flawed, and I rationalize this as part of my moral code as a sort of "first do no harm". But I'm scared to discard my moral instincts for sake of convenience, out of fear that I wouldn't know where to stop.

In this case, I couldn't find an interpretation of the paper that matched my interpretation of the sample code, and I couldn't find an interpretation of either that seemed plausibly correct. The flaws in each seemed so obvious to me that I had to presume that I was not interpreting either correctly, and I concluded that I must be missing something essential.

There wasn't much in the way of test structure other than eyeing up the results and declaring it to be OK. I was scared that if I inadvertently implemented something incompatible with both the paper and the code, my errors would never be caught. None of the grad students seemed to fully understand the paper, and the professor wasn't familiar with the R code. My clumsiness with the terminology of the field made it difficult for me to communicate with the professor.

I feel terrible about the whole thing, but don't know what in particular I should have done differently.

<comment><USER5> Hey, the key assumption (the "identification" assumption) is in 2.4 of the paper you referred to. I do not have time to go through the notation, but it seems to be like a fairly standard "no unmeasured confounders" assumption - <USER2> you need to ASSUME that nothing influences both the treatment and the outcome you are interested in. Then, of course, you do not need to randomize, but can use observational data.

I know that Petersen and van der Laan are well-respected researchers in causality that know exactly what they are doing. E.g., Petersen has a course (I think at Berkeley) that uses causal graphs which were pioneered by Judea Pearl (see comments below). I can only second the recommendation to dig into his work.

</comment></comment></comment></comment><comment><USER6> The unofficial blog phenomenon intrigues me. This is a great post, but what happens when an unofficial blog (or Twitter account) posts something controversial? Breaks the law? What recourse does the company (or govt agency) have?

I'm not really denouncing the unofficial blogs, but I can see it making PR people uncomfortable, and understandably so. On a personal level, it seems like an easy way to use the name of your employer (btw, how do we know they're really employees of X) as a springboard for popularity, without the huge responsibility that comes along with officially representing the organization.

</comment><comment><USER7> Causality has never been of much interest to me. I never understood why others make such a big deal out of it. Maybe it is a real thing, maybe illusion, definitely some kind of heuristic... but shouldn't we be searching for useful "laws" (eg F ~ m1*m2/r^2) rather than "cause"? I know some have denied causality a place in science:

"In the following paper I wish, first, to maintain that the word "cause" is so inextricably bound up with misleading associations as to make its complete extrusion from the philosophical vocabulary desirable; secondly, to inquire what principle, if any, is employed in science in place of the supposed "law of causality" which philosophers imagine to be employed; thirdly, to exhibit certain confusions, especially in regard to teleology and determinism, which appear to me to be connected with erroneous notions as to causality." [http://www.hist-analytic.com/Russellcause.pdf](http://www.hist- analytic.com/Russellcause.pdf)

<comment><USER8> It's critically important whenever you are being asked to develop a policy of some kind, whether it's public policy or a business procedure. If you only understand relationships and not the causal direction relationships, you can end up making very bad decisions. E.g., "black men drop out of school more often than white men, therefore we shouldn't waste time educating black men."

<comment><USER7> But the alternative I proposed is coming up with quantitative laws, not vague astrology like "Race A does this more often than Race B, therefore we need to do less of C".

That is an interesting connection to make though. If people view __wild speculation __as the alternative focus of research, incorporating the concept of causality would at least slow them down. This would reduce the amount of misinformation generated and number of destructive policies implemented. Still, I think causality offers more than that.

<comment><USER8> How do you distinguish a "law" from "astrology" in this case?

<comment><USER7> A law will make some precise quantitative prediction, "astrology" will make vague predictions like "A is correlated with B", or "A is positively correlated with B".

Here is a spielraum[1] of possible experimental results, with the * indicating the region consistent with a law:

      1) |</comment></comment></comment></comment></comment><comment>*</comment><comment>|

Here it is for a vague speculation that there is "some correlation" (ie astrology):

      2) |******-******|

You can see it will be much easier to find evidence consistent with #2 than #1, even if there is nothing to the ideas at all.

[1] Paul Meehl. 1990. Appraising and Amending Theories: The Strategy of Lakatosian Defense and Two Principles That Warrant It. Psychological Inquiry 1990, Vol. 1, No. 2, 108-141. [http://rhowell.ba.ttu.edu/meehl1.pdf](http://rhowell.ba.ttu.edu/meehl1.pdf) [figure 3]

</comment><comment><USER9> Correlation is not causality. I'm so glad someone put this article together

</comment><comment><USER10> Causality must be defined as a fully-observable model and then proved by a replicable experiment, it cannot be established by any number of mere observations. Statistics or probability are unrelated to causality _in principle_.

<comment><USER11> "Causal inference in statistics: An overview", Judea Pearl

[http://ftp.cs.ucla.edu/pub/stat_ser/r350.pdf](http://ftp.cs.ucla.edu/pub/stat_ser/r350.pdf)

"If correlation doesn't imply causation, then what does?", Michael Nielsen

[http://www.michaelnielsen.org/ddi/if-correlation-doesnt- impl...](http://www.michaelnielsen.org/ddi/if-correlation-doesnt-imply- causation-then-what-does/)

<comment><USER10> > If correlation doesn't imply causation, then what does?

Experiment. Prove of _implementation_ , the way molecular biologists do it.

<comment><USER12> The answer is more complicated than that. Pearl has shown that it some situations it's possible to answer causal questions without running experiments. Basically, you can ask causal questions using the "do-calculus" he developed:

P(Dog barks | do(kick the dog) )

The `do` modifies your model to treat "kick the dog" as observed, breaking its dependence on any other variables, e.g. the doorbell ringing or the cat hissing. With those links broken, the model becomes simpler, and often the causal question can be answered using observational rather than experimental quantities.

At least, that's the idea. Not sure how broadly accepted it is, but Pearl is a towering figure and his work seemed robust at least to my not-so-expert eyes.

<comment><USER10> That would still be a strong correlation, but not causation. One could add a weight to each observable state and select for the biggest weight so far, but it would have nothing to do with the actual causes. Would a dead dog bark when kicked?

There are some principles which cannot be undone by any amount of hipsterism and sophisticated sectarian bullshitting. There is no way to jump from observation to causality without knowing the implementation. At least in this particular universe.

In the realm of models (or ideas) it could be seem doable, but a map is not a territory, model does not represent reality until proven experimentally.

<comment><USER13> Here's the canonical example:

A is correlated to C. B is correlated to C. A is NOT correlated to B.

How is that possible?

The argument is that, if causation is unidirectional and acyclical, then the only causal structure that leads to the above is that A and B both cause C.

There's no other way to do it. And you can derive causation from observational data!

Of course in real life there are a bunch of problems with this, particularly measurement error and hidden unmeasured or unmeasurable variables. But more or less those exist with experimental data as well. You can only conclude things about observed variables and a very large number of unmeasured variables could throw off your inference.

Anyway, I more or less held your belief on this until I read Pearl's (and colleagues') material. There's much more expansion to it than the canonical example above.

<comment><USER10> Assuming unproven causality is exactly how uneducated primitive people used to form their religious beliefs.

Churches are related to people. People are related to the Sun. The Sun is caused by the prayers of the people in churches. Sun is in the sky today because someone somewhere prayed.</comment></comment></comment></comment></comment></comment></comment>


Ask HN: Why HTTPs certificates cost at least 50$? - <AUTHOR>

<comment><USER2> They don't.

If you want to pay for one it costs about ten bucks a year: [https://www.gandi.net/ssl/grid](https://www.gandi.net/ssl/grid)

If instead you want a free cert: [http://www.startssl.com/](http://www.startssl.com/)

<comment><AUTHOR> Well, if someone sells them for 100$ and startssl for free, there must be some difference in terms of service right?

<comment><USER3> You can't use the Free StartSSL certificate for commercial websites.

<comment> workhere-io I can't seem to find that info on their page. Do you have a link?

</comment></comment></comment></comment><comment><USER4> It's funny, I was just asking myself the same question and was poking around various sites to see what types of SSL certificate products were on offer. I found this site: [http://www.sslshopper.com/article-top-10-ways-to-save- money-...](http://www.sslshopper.com/article-top-10-ways-to-save-money-on-ssl- certificates.html) as well as this page: [http://www.sslshopper.com/cheapest- ev-ssl-certificates.html](http://www.sslshopper.com/cheapest-ev-ssl- certificates.html)

Pretty much every large company uses VeriSign, which isn't cheap. Twitter, Apple and PayPal all use EV certificates (which make the url bar go green) from VeriSign which are between $1000 to $1500 each.

It kind of comes down to whether you want an EV cert or not. Certain sites are cheap for non-EV certs (Like Comodo), and others offer cheap EV certs (GeoTrust and DigiCert will sell you one for $300/year). The cheapest for everything seems to be GoDaddy, but, I guess caveat emptor.

</comment><comment><USER5> Comodo PositiveSSL: $9/year, works with all modern browsers and email clients: [https://www.namecheap.com/security/ssl- certificates/domain-v...](https://www.namecheap.com/security/ssl- certificates/domain-validation.aspx)

</comment><comment><USER6> From my understanding, the prices vary usually because they are including insurance up to a certain amount if things go wrong with the certificate.

SSLs.com (formerly cheapssls.com) has them for reasonable prices like this one you can get for 5 bucks a year (which is ultimately issued by Comodo).

[http://www.ssls.com/comodo-ssl- certificates/positivessl.html](http://www.ssls.com/comodo-ssl- certificates/positivessl.html)

<comment><AUTHOR> what can go wrong with a certificate?

<comment><USER7> They could be insecure, fraudulently generated, not recognized by a substantial browser share, etc.

Google Comodo SSL fraud for a better picture.</comment></comment></comment>


Practical Introduction to Prometheus for Developers - <AUTHOR> https://github.com/danielfm/prometheus-for-developers <comment><USER2> > the second is how the 99th percentile reported by the the summary (1s) is > quite different than the one estimated by the histogram_quantile() function > (~2.2s). How can this be?

> ... for the quantile estimation from the buckets of a histogram to be > accurate, we need to be careful when choosing the bucket layout; if it > doesn't match the range and distribution of the actual observed durations, > you will get inaccurate quantiles as a result.

> According to the previous plot, all slow requests from our application are > falling into the 1s-2.5s bucket, resulting in this loss of precision when > calculating the 99th percentile.

Can anyone explain mathematically why this is happening? I think I understand conceptually, but if I could also perhaps understand it from a mathematical perspective, I would feel much more confident!

By the way, I think it's a great introduction!

</comment><comment><USER3> Good timing, I just started working with Prometheus this week.

</comment><comment><USER4> Well written.</comment>


An example of how brands build fake reviews on Amazon - <AUTHOR> https://www.reddit.com/r/Supplements/comments/g19a1w/heres_a_brand_thats_building_its_reviews_steadily/ <comment><USER2> A friend of mine is in a facebook group that has lists of products you can buy, then 4/5-star review and get your money back. We're talking 10-100€ products.

He goes as far as reviewing everything he doesn't buy there with less than 3 stars so his account isn't suspicious.

Doing this he completely destroys what reviews are meant to be, not only helping shady companies but also hurting legit ones.

<comment><USER3> That ship has sailed, in my opinion.

Reviews - particularly on Amazon - are meaningless. The cat-and-mouse game has gone so far that as a consumer I see a 4.9 rating as indistinguishable from a 0.9 rating. Buying from an unknown brand is a crapshoot. Buying from a known brand on Amazon isn't much better.

And it makes me wonder how long these black hat practices are going to be useful to sellers. Most Amazon users have to be feeling the same way at this point.

<comment><USER4> _> as a consumer I see a 4.9 rating as indistinguishable from a 0.9 rating._

I've been an Amazon customer for more than 20 years. Yes, both the 5-star reviews and 1-star reviews can be gamed. Many 5-stars reviews are fake because of bribery. Many 1-star reviews are from competitors trying to hurt their rivals.

That said, I still find Amazon reviews useful if I _read the texts_ instead of depending on the number of stars. I go to the 3-star and 2-star reviews and read the _specific_ complaints customers are writing about. Some reviewers also post useful photos.

For example, I needed to buy a guest bed for COVID quarantine so I looked for "air mattress" on Amazon: [https://www.amazon.com/s?k=air+mattress](https://www.amazon.com/s?k=air+mattress)

Most of those have 5-star reviews. I ignore that and simply _read the texts_. After digesting some reviews, I learn that all air mattresses regardless of brand suffer from leakage (usually after the 30-day return period). Some recommended getting a foldable foam mattress as an alternative to totally avoid the issues with leaks and broken air pumps. That's what I ended up buying and it was the Amazon reviews that steered me away from air mattresses.

<comment><USER5> > Yes, both the 5-star reviews and 1-star reviews can be gamed.

You don't look for that <i> Verified purchase </i> text ?

<comment><USER4> _> You don't look for that <i> Verified purchase </i> text ?_

If you're not being sarcastic...

Those "Verified Purchase" reviews can also be faked by manufacturers/sellers reimbursing the credit-card payment of the Amazon shopper.

Example: [https://www.buzzfeednews.com/article/nicolenguyen/her- amazon...](https://www.buzzfeednews.com/article/nicolenguyen/her-amazon- purchases-are-real-the-reviews-are-fake)

<comment><USER6> I bought something from Amazon, and it wasn't up to spec, so I left a 3-star review.

Well, I got contacted by the seller, offering me $20 to take down the review. I ignored it.

Then a few weeks later, they upped the offer. And in response, I downed the stars.

Last I heard from them, they were offering me $70 to take down the review. For something that cost under $15.

Amazon itself doesn't help either. I bought something (a food item) from Amazon, and it was nowhere close to the quality in the photographs or description. I wrote a review, describing how the actual item was of much lower quality than expected. Amazon refused to post my review! And I've been an Amazon customer for nearly 20 years!

<comment><USER7> I've had this same experience. After all the pestering and offers of cash to remove my 3 star review, I lowered it to 1 star.

<comment><USER8> Sounds like a business model to me. Leave a 3 star review, and if they try to bribe you $X threaten them to lower it to 1 star unless they pay $2X.

<comment><USER9> People do this. I used to sell a lot on Amazon. I would occasionally get a non-coherent one star review and then a message basically trying to extort a full refund in exchange for removing the review. And no, it wasn't because the book was in bad condition, they can always return for a full refund. They want to keep the book and get a full refund.

<comment><USER8> I was (obviously) joking but this is really a sad thing to hear.

<comment><USER2> There's truth behind every joke.

And this really is a decent biz model. I mean, free items, just sell them for 50% and you can make a living.

Scale this up using multiple amazon accounts, multiple addresses.

The market is big enough so that you can make a living out of this, I'm sure.

And your x2 multiplier makes it even easier!

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Amazon's market has become a cesspool of many trash products with fly-by-night ALLCAPS Youtube-bro dropshipper "brands", if you can even call them that.

Amazon's fast and affordable shipping is addicting, but I've nonetheless steadily shifted my purchasing patterns away from Amazon.

Instead I tend to search Amazon (and Google, etc) to see what options are available, and buy them elsewhere if possible. Ideally directly from high- quality brands' websites, or alternately from smaller, specialized online retail outlets I trust more. Both tend to be more of a passion project and really care about what they're making and selling.

I may not receive the item as fast, but I've adjusted to that and realize in 99% of cases I don't really need that instant gratification.

In fact, fast shipping instant gratification seems more likely to tempt me into un-needed impulse purchases, and I'm better off without it. I make more planned and strategic purchases when I have to wait a little longer to receive them. Better for my personal financial planning and budgeting, and control of my lizard brain response.

<comment><USER11> You get fast shipping? Amazon is usually slowest, takes 1-2 weeks if you're not Prime.

<comment><USER12> Having Amazon Prime is such a constant in my life for so long now that I forgot it's even a thing that you can in fact not have. How weird.

</comment></comment></comment><comment><USER13> I posted a negative review of an inexpensive (~$10) electronic device on Amazon. A few weeks later, the seller contacted me with an offer of a $20 Amazon gift certificate to take it down. I didn't respond. A few days later, they offered $30, then $40, then $50.

<comment><USER14> My wife posted a 1 star review on a crappy bookshelf that didn't fit the description (not wood, wrong color) and was structurally weak.

On year later, she received an email threatening a defamation lawsuit unless she takes down the review. Looking at the seller reviews, it looks like this wasn't an isolated incident as other people were complaining. Obviously, this doesn't hold legally. But we are left with the feeling that they might still try to challenge us legally at any time, which is a really unpleasant feeling.

<comment><USER15> If the law allows for publishing that lawsuit, she should update her review with the lawsuit docs.

<comment><USER14> Good idea. Luckily this was just a threat so far.

</comment></comment></comment></comment><comment><USER16> I used to work in this space. It is incredibly easy to detect and counter. It just costs money. Amazons retail margins are too good to mess with. Customers are not leaving fast enough to make fixing it worth it. Every time you produce a model showing net present value going down due to fraud someone else will produce one that doesn't. That guy gets promoted.

Amazon is simply cashing in on its reputation. Once it's gone you might as well buy from the Chinese source. People used to search stores for things they'd buy cheaper on Amazon. Now people are searching Amazon for things they'll buy cheaper Alibaba.

Personally, I've already shifted to buying DIY tools and supplies directly from China. I found the quality good enough. Some of the industrial consumables you can't even buy retail in the US. For the high end stuff I buy direct from outlets. I don't trust Amazon with that either. I could see a future where Amazon gets squeezed from both ends.

<comment><USER13> The advantage of Amazon over buying directly from China is the fast shipping (if you have prime) and the no hassle return policy. I made the mistake of buying some masks through an ad on a website. While the masks were fine, what they didn't mention was that it took six weeks to deliver. There are plenty of negatives with Amazon (fake reviews, fake products, etc.) but fast shipping and guaranteed returns cover a multitude of sins.

<comment><USER17> You're just paying the markup for a domestic retailer to sell you the same thing you can buy on Aliexpress.

I've done returns on Aliexpress before. I didn't have to send anything back and I got a 100% refund.

</comment></comment></comment><comment><USER18> My own personal rule is now:

> I don't buy anything I'll put in/on/around my body on Amazon (e.g. Vitamin > supplements, Lotion/face sunscreen, Protein powder)

Even if the brand is legit, I'm still not 100% confident that Amazon's co- mingling stock and switcheroos that can happen in the long supply chain will result in a "real" thing arriving at my door

<comment> wombat-man I don't buy much from amazon these days, but yeah, definitely bought some higher end shaving cream that I later realized was probably not authentic. It's getting easier to buy direct from brands, and I feel safer buying this kinda stuff from target or whatever locally.

</comment></comment><comment><USER19> When the description does not follow basic English grammar (it's a run in sentence with no caps or punctuation), that's a red flag for me. Also, the image looks really doctored and not something that seems legit. It doesn't look sharp if that makes sense.

Here's the description for context:

" omega 3 fish oil supplements fatty EPA DHA omega3 burpless capsules supplement pills soft gels men best vitamins omega-3 wild-caught natural women pure humans no burp small extra strength mercury-free fish oil"

If you buy this without reading everything in the product description, I'm sorry.

<comment><USER20> You say "I'm sorry", but in context it really sounds like you're saying "fuck you".

I like to consider things this way...

At your local grocery store how vigilant are you that your orange juice carton might actually be filled with rat poison? Never crossed your mind? Very remote chance? Why? Because one item in a million is inspected by...who exactly? Think about how you'd feel if you found out one day that your grocery store actually gets its stock from a warehouse where sometimes cartons of OJ are replaced by rat poison on purpose by someone looking to make a buck at someone else's expense. You'd probably feel at least a little violated or betrayed. Aren't we all glad that we don't have to worry about shit like that at the grocery store? We shouldn't have to worry about shit like that from Amazon.

<comment><USER21> These are some very strong _assumptions_ about the prior poster that you seem to be convincing yourself are necessarily true.

Why is that?

<comment><USER20> Because their entire comment is "here are reasons why you should have known".

</comment></comment></comment></comment><comment><USER22> I see people mentioning Fakespot, I also recommend ReviewMeta and use it often: [https://reviewmeta.com/](https://reviewmeta.com/)

<comment><USER23> ReviewMeta for that product: [https://reviewmeta.com/amazon/B08431MPXD](https://reviewmeta.com/amazon/B08431MPXD)

IMHO, they're too positive. If you scroll down, there's a lot of negative factors, but the above the fold summary is quite cheerful.

The FakeSpot page is much clearer.

[https://www.fakespot.com/product/premium-omega-3-fish-oil- su...](https://www.fakespot.com/product/premium-omega-3-fish-oil- supplement-2400mg-burpless-fish-oil-omega-3-pills-w-1440mg-epa-dha-supports- heart-health-brain-function-immune-system-eye-health-lemon-flavor-non- gmo-120-softgels)

<comment><USER24> The odd thing is that FakeSpot's "adjusted rating" is... the same as the actual rating.

<comment><USER23> ReviewMeta's is also the same, within the granularity of half a "star".

</comment></comment></comment></comment><comment><USER15> I really wonder what could be the solution to this. Reviews are a mainstay on the web. It's the underlying social experience of it.

But given the untrustworthy nature of reviews in general, I hope there is some method to capture genuine reviews, filter out the noise and filter up the relevant ones.

Perhaps tech like blockchains could help here, but their use is limited to anonymous identity. Its easy to create enough accounts to influence the system.

The only feasible way seems to have direct user accounts that are tied to actual people, something like on facebook. But that is a privacy issue.

Eventually, e-Commerce might devolve into brands and off brands, where the platform becomes irrelevant and other forms of advertising and marketing take control.

<comment><USER25> Without a functioning trust network, reviews are meaningless. You cannot have both anonymity and healthy e-commerce. We're in a race to the bottom, and there is no "invisible hand" to right the ship. Government will ultimately have to step in with some kind of online ID system.

<comment><USER15> It should be sufficient if the ID system has all the characteristics of a real world ID system, with just the real world link broken.

Inability to easily create multiple IDs for 1 person, One ID linked to one individual, inability to easily use another persons ID, etc.

<comment><USER26> Even with a sufficient ID system, what's to stop brands from bribing individuals for positive reviews?

<comment><USER15> That is possible, but bribing one individual is very risky for a brand. Mainly because, there are only so many things an individual can influence, and once his reputation is tarnished, the brands reputation is tarnished. So the risk is much higher than, say hiring a company to spam reviews.

</comment></comment></comment></comment></comment><comment><USER27> For an example of really stupid reviews of this type, check this one out:

[https://www.youtube.com/watch?v=1c4mCXK9kIU](https://www.youtube.com/watch?v=1c4mCXK9kIU)

The people who provide the text templates for these bots really miss creativity. After reading just one or two you realize what's going on. It would be really easy to make them look more authentic just by not going over the top.

<comment><USER28> Maybe the fake reviews are there to make you focus on the _legit looking one or two_ reviews that are some part critical but have 4.5 star rating.

</comment></comment><comment><USER29> One site that has really risen due to this, imo, is Etsy - there you _know_ the person making the product, you can see clear examples of their work, browse their website, look at their previous work, talk with them, etc. It's the opposite of the no-name Amazon experience.

Definitely not cheap and has issues of its own, but worth checking out if, like me you thought it wasn't useful before.

<comment><USER30> I know of several companies auto listing thousands of foreign manufactured goods on Etsy. I don't know how prevalent this is, but I know not everything there is handmade nor is it all from small individual sellers.

<comment><USER29> Ok fair point. Never mind the world is just all garbage. Take to the woods!

</comment></comment></comment><comment><USER31> Same "review" business happens on Google Play, Apple AppStore and many more.

Honestly any service with reviews can be faked.

<comment><USER32> Especially Apps with in App Digital Content ( Where the cost of that content is essentially free ), like Games. Where they give you an Item if you Vote.

</comment></comment><comment><USER33> When I use amazon reviews I look at what people complain about and work out if that would annoy me as well

<comment><USER34> Same here, I simply look at 1-star reviews and ignore that there are 100x 5-star reviews.

Note that this won't work on sites where the seller can delay publishing your review (e.g AliExpress).

</comment></comment><comment><USER35> Sometimes I think writing reviews for products that I've purchased on Amazon is kind of a civic duty, a way to fight back against all the fakes and help our fellow shoppers.

</comment><comment><USER36> Do services like Fakespot [1] for evaluating reviews work and, if so, how?

[1] [https://www.fakespot.com/](https://www.fakespot.com/)

</comment><comment><USER37> I find [https://www.fakespot.com/](https://www.fakespot.com/) very useful if I'm shopping on Amazon.

</comment><comment><USER38> The link doesn't show any facts.</comment>


Ask HN:Patent Unwillingness - <AUTHOR>

A friend of mine who is currently perusing his Master currently mentioned to me that, the Idea he submitted for his project has impressed his professors and the college is applying a patent on the idea.He was not completely willing to patent it,the reason being the compromise of the idea and a openness in sharing the idea. Today he received the news that the patent is shared with 2 other top level profs who have not helped him in any way. He is pissed now and wants to back out. What does HN say what is a wise decision in such a case? <comment><USER2> 37CFR1.45(c)

If multiple inventors are named in a nonprovisional application, each named inventor must have made a contribution, individually or jointly, to the subject matter of at least one claim of the application and the application will be considered to be a joint application under 35 U.S.C. 116. If multiple inventors are named in a provisional application, each named inventor must have made a contribution, individually or jointly, to the subject matter disclosed in the provisional application and the provisional application will be considered to be a joint application under 35 U.S.C. 116.

 _I would recommend getting legal advice, collecting all documents related to the invention, and keeping a diary of all contacts with parties involved._

At some point he will need to sign a declaration (viz. 37CDR 1.45(a)):

Joint inventors must apply for a patent jointly and each must make the required oath or declaration: neither of them alone, nor less than the entire number, can apply for a patent for an invention invented by them jointly, except as provided in § 1.47.

However, the provisions of 37CFR1.47 allow:

If a joint inventor refuses to join in an application for patent or cannot be found or reached after diligent effort, the application may be made by the other inventor on behalf of himself or herself and the nonsigning inventor. The oath or declaration in such an application must be accompanied by a petition including proof of the pertinent facts,...

So, simply refusing to sign the declaration is probably not an option.

The post does not identify the offending university. I think that the aggrieved inventor should check to see what his university policy provides. For example, Stanford University policy can be found on the web at <http://rph.stanford.edu/5-1.html>. That policy provides that inventions of this sort can be placed in the public domain.

The inventors, acting collectively where there is more than one, are free to place their inventions in the public domain if they believe that would be in the best interest of technology transfer and if doing so is not in violation of the terms of any agreements that supported or related to the work.

Sadly, there does not seem to be a provision for resolving potential conflicts between named inventors nor a policy for determining whether a person should be named as an inventor.

</comment><comment><USER3> First, if the student is an undergraduate, it's unlikely they have "assigned" their IP to the university. The university does not own the fruits of the student's mind. (If you are a graduate student or employee, you probably did assignee your IP.)

Second, "inventor" is a specific, defined thing under US law. Naming inventors who do not meet this definition can render the patent invalid. And, on a more practical level, a dispute over the inventorship will scare off licensors, precluding any revenue the patent would have brought the university.

(I have two patents, work at an IP related non profit, and own a popular IP news service. I am not a lawyer. I suggest you contact Gene Quinn, advocate of independent inventors.)

</comment><comment><USER4> Raise a big stink in the local media and any internet channel you can think of. You might not have a legal leg to stand on but at least you can shame them with publicly available information.

Or just move on and accept this as a lesson learned.

<comment><USER5> > Raise a big stink in the local media and any internet channel you can think > of. You might not have a legal leg to stand on but at least you can shame > them with publicly available information.

This is awful advice, don't do this!

</comment></comment><comment><USER6> He probably doesn't have a choice. Check out the student handbook for the university that he agreed to follow when enrolling. There's just about always a part about turning over both copyrights and rights to inventions if they're submitted as part of a class _or_ the student used any school resource (such as consulting any professor) in the process of creation.

<comment><USER3> I believe this is _not_ the case. (Based on my somewhat sizeable experience in this area. See my other comment on this post.)

</comment></comment><comment><USER7> I once had a consulting client who wanted to apply for patents on my work. And since the client was a small movie firm run by two former lawyers, I knew they had the ability to make things rather ugly.

In this case, I made two statements to the client:

1) Professionally, I did not believe the work was either original or non- obvious, and that for me to sign a declaration otherwise would be perjury.

2) Their agreements with me did not allow for them to patent my work (something for which I read contracts very carefully and seek professional advice on as needed).

They backed down pretty quickly at that point.

You might have luck with a similar approach: If there's something legally improper about the inventorship, or your school does not actually have the legal ability to compel you to patent your work, you _may_ be able to get them to back down in a hurry by laying out the facts of the matter.

But I am not a lawyer, and if the school persists in this behavior, you'll want to speak with a good patent lawyer. You may want to call a couple of patent lawyers and describe the situation to them. You can usually learn a _little_ bit about the merits of your case before they start charging. :-)

</comment><comment><USER8> A big thanks to everyone for their valuable suggestions. I had to login with a new "fake" profile as my professors wouldn't really enjoy the contents of this thread.The patent has not been applied yet.I am not too keen on the patent but it is my university that has been pushing hard for it.The contributions from the professors has been nil.It wasn't a joint work and there weren't even any contact sessions.

</comment><comment><USER9> It's unfortunate he didn't beat them to the punch and patent it himself putting him in control. Not sure what he's trying to achieve out of all this and it may seem a bit cliche to say consult an attorney but that is probably what he should do that this point to see what his options are if he wishes to recoup anything out of this (and I don't mean just money aka rights, etc)...

</comment><comment><USER10> I'd say - publish the idea and make use of it. You cannot (in theory) patent anything that was already published somewhere.

<comment><AUTHOR> The idea is unique and not published anywhere,hence the patent

<comment><USER11> Yeah, so publish it. Publish it here right now.

<comment><USER12> This only works if the patent has not been applied for yet. Is this the case?

<comment><USER13> That's true for most non-U.S. countries. In the U.S. and a very few other countries, however, an inventor has a one-year grace period after publication (or offer for sale, or "public" use) in which to file a patent application. See <http://en.wikipedia.org/wiki/Novelty_(patent)>.

</comment></comment></comment></comment></comment><comment><USER14> You can get them off the patent with the full force of the law behind you. You can easily say these other folks don't fit the legal def of an inventor, so why are they here? Only if they push beyond that should you get media involved. Sounds like fun so keep us posted. So many people want the benefits of others' work. :)

</comment><comment><USER15> From what you have said, your friend would rather it not be patented, but he wouldn't be all that upset if it did. The major problem he is having is that some Professors who didn't contribute anything to the project are now claiming part ownership. I think your first line of approach is to talk to the university directly and tell them you don't appreciate this and you want it change to just you alone. After this and they don't comply you can follow other HNers advice about going to the media and the like.

<comment><USER8> You have summed up my problem exactly.Talking to the university may not be the best option in this case but I will give it a try.Thanks.

</comment></comment><comment><USER16> Forget it, learn the lesson and move on.

Just because he doesn't believe in patents doesn't mean others won't.

In large corporations, they are going to patent the idea irrespective of the inventor's belief.

So this is just an example of what he will face when he is out working.

</comment><comment><USER17> I'd talk to the professors - they would be _seriously_ inconvenienced if he raised a stink about "stealing my idea". (After all, what PhD student would want to work for them?)

It's not at all impossible that they'd be mortified, too.</comment>


Pancake HTTP Server faster than nginx running PHP - <AUTHOR> http://pancakehttp.net/

<comment><USER2> "Pancake is a fast, simple and lightweight HTTP-Server written in PHP with acceleration for PHP-powered websites"

So...it's written in PHP, so it loads up a PHP application and serves it faster than running through a real webserver to a PHP backend via FCGI. Duh?

Now go ahead and add in high concurrency and static asset serving and add PHP- APC to the workers and don't benchmark on an OpenVZ VM (which doesn't guarantee resources!) and let's see how things shake out.

Pancake seems to be touting this "CodeCache", which is great, except that PHP already has APC, which does this already, and I'll wager it does it better. This smells like a false benchmark, where Pancake wins because it's avoiding work that the poorly-configured nginx stack has to do. If you were to tune both of them to their maximum potential, I would be shocked if nginx didn't eat pancake for breakfast.

<comment><USER3> I am the developer of Pancake. I've found here after I got a mail saying that Pancake was mentioned here.

I have to admit that benchmarking on an OpenVZ VM probably isn't the best idea. However, at the time of benchmarking, my VM was the only one on the host node and I've made sure that no other service on my VM could create high load.

I believe that CodeCache is more efficient than APC and easier to use. In a future version I will also improve the CodeCache, allowing more code to be cached than now possible. I am also planning on having a feature for automatic configuration of the CodeCache.

<comment><USER2> Well, I was curious and had a bit of free time, so I set up a benchmark. I just used Apache + mod_php with my all-the-extensions-and-the-kitchen-sink PHP install versus Pancake with a pristine PHP install (since it needs special compile flags) and the vhost provided for the nginx benchmark on the Pancake website.

Results are here: [https://docs.google.com/spreadsheet/ccc?key=0Aqxu- bQf_3O5dFd...](https://docs.google.com/spreadsheet/ccc?key=0Aqxu- bQf_3O5dFdtT2ZZQUdCbE43X1BSelM3enZYV2c)

tl;dr: Pancake falls over completely at higher concurrencies. It even starts dropping requests at -c2, and it just gets worse as concurrency gets higher. I even tried running it with 16 workers rather than 4 (which should cover up through -c9 easily), and it was still failing to return valid results. Pancake's throughput goes up as concurrency goes up, but it's because it's just dropping requests rather than serving them.

mod_php easily saturates my two cores with -c2 and remains consistent at ~285 req/sec. Pancake never really achieves better than 90 req/sec, and completely fails to handle high concurrency.

Remember, this is Apache and mod_php, which is renowned for being the slow and creaky way to run PHP. If I were to set up nginx and php-fpm, I'm pretty sure I could push that chart even further.

I call bull on "faster than nginx".

<comment><USER3> Okay, I've taken a look at your benchmark. The failing requests are due to a typo in the configuration. It should be "phpsocketbacklog" instead of just "socketbacklog". Pancake uses unix sockets for the internal communication between RequestWorkers and PHPWorkers. When a RequestWorker tries to send a request to a PHPWorker while the internal socket backlog is full, Pancake will abort the request due to the lack of available resources. Therefore the backlog is needed on high concurrency. I've updated the configuration at pancakehttp.net including some additional performance optimizations.

Even though requests won't fail anymore with the fixed configuration, throughput on high concurrency still isn't quite satisfying. This seems to me like a bug as the PHPWorkers seem to process the requests perfectly concurrent and finish each in about the same time, but then the delivery of the result to the client is somehow delayed, probably due to a problem with the internal communication. I've tested Pancake with php-fpm (Pancake supports FastCGI) and high concurrency and it seemed to scale quite good.

I'm investigating on this problem and hope to provide a fix soon.

Regarding static file throughput, I know that Pancake does not really reach the speed of other webservers here. Pancake was designed to execute PHP as fast as possible and I still have a lot of ideas in my mind on how I could further improve PHP execution speed. PHP itself isn't quite fast and therefore it is difficult to develop a webserver in PHP that reaches the same speed when serving static files as webservers written in languages like C. I am currently experimenting with a new feature that will hopefully increase the speed of static file serving but I still don't know if it'll really work.

<comment><USER2> I just don't think you're ever going to be able to beat nginx on the webserver end of things because you have to contend with the PHP garbage collector and nginx does manual memory management. And...well, C is a lot faster than PHP.

I fixed the backlog setting and re-ran the test, and pancake doesn't drop requests anymore, but it's not improved at all on speed.

<https://gist.github.com/4063785>

I was watching top during each test, as well, to get a sense of what was happening; pancake was pegging the CPU at close to 100% user and reached a load average of ~14, whereas the mod_php test was something like 85% user/15% system and reached a load average of 5. This would seem to indicate to me that Pancake is handling something that Apache/mod_php is able to hand off to the kernel, and since it's stuck in userspace, processes end up waiting around for their turn to do stuff.

90 req/sec really isn't bad - especially considering that without APC, my install gets ~35 req/sec - but given that it seems to get most of its boost from avoiding re-evaluation of the source files, and given that APC does the same, I don't think it's really all that fair to compare Pancake to a PHP install not running APC, especially since Pancake requires a specially- compiled version of PHP and has to be run as root, so anyone that can run Pancake can install and use APC. Additionally, APC transparently works across all your source files already - it has no manifests to maintain, so turning it on is literally as easy as "pecl install apc" and enabling the extension in your config. That's a difficult combination to beat. If you can do it, I'd love to see the results, but given what I know of the architecture of these various pieces, I'm skeptical that it can be done with pure PHP.

Finally, I think that trying to contend with nginx from a marketing standpoint is silly, because web applications are composed of much more than just PHP files; I have to be able to serve images, stylesheets, Javascript, and the like for a full web application, so I have to consider the performance of the webserver as a whole in terms of its ability to fully deliver a page to a client to evaluate it properly; a webserver that runs the script end of things, but then struggles to serve up my assets (and even worse, blocks workers serving assets while I have script requests pending) isn't going to be very useful in a practical scenario. I performed my benchmarks with my development Apache install; I can tell you from my own experience that nginx will trounce it solidly, so the gap to overcome is almost certainly substantially wider than in my benchmarks. Considered as a whole, from first- byte to request-fully-delivered, I don't think you're going to be able to approach nginx, let alone beat it, without moving major parts of the application out of PHP and into a lower-level system.

</comment></comment></comment></comment></comment><comment><USER4> The license for this web server is quite unusual,

<http://pancakehttp.net/license/>

I would expect a more sensible license.

P.S, that license page is so well hidden.. only possible to find by going to the github page

<comment><USER3> I am not a lawyer, I don't have a clue about law and licenses. Even though it is prohibited to use Pancake for commercial websites with this license I won't kill anyone because he is hosting a small blog making a few dollars with AdSense or developing some small scripts for friends for little money. Just in case someone would like to use Pancake for a online shop or something making bigger amounts of money I'd like that person to contact me.

</comment></comment><comment><USER5> Interesting but: This license does not allow using Pancake for commercial websites. If you want to use Pancake for such sites, please contact support [at] pancakehttp [dot] net

</comment><comment><USER6> Can we really trust numbers returned from a benchmark run on a VM? It seems like the other load on the system during each benchmark would effect the results.

</comment><comment><USER7> The benchmark is testing a php application.

<comment><AUTHOR> Thank you, updated title.</comment></comment>


Some work in proc(gr)essing... - <AUTHOR> http://ideamonk.blogspot.com/2008/11/some-work-in-process-progress.html

<comment><USER2> Thanks, these look great.

Any chance you can post the source to these?

<comment><AUTHOR> Have a look at these too, some better outputs. [http://ideamonk.blogspot.com/2008/11/another-processing- adve...](http://ideamonk.blogspot.com/2008/11/another-processing- adventure.html)</comment></comment>


The Obscure Economist Silicon Valley Billionaires Should Dump Ayn Rand For - <AUTHOR> https://www.vanityfair.com/news/2017/09/the-obscure-economist-henry-george-ayn-rand/amp <comment><USER2> This would have been a nice article, without the whole "straw-man attack on Ayn Rand" opening. As it is, the author did themselves no favor by adding a lot of unrelated and inaccurate nonsense to the article. But I guess that's just what you do today...

</comment><comment><AUTHOR> It's worth pointing out that Henry George's Land Tax proposal has exceptionally strong grounding in the work of David Ricardo, whom George gives very strong credit to.

(After Adam Smith, Ricardo is probably the most significant of the Classical Economists -- Malthus, Marx, and J.S. Mill would also be included.)</comment>